@phenixrts/sdk 2025.2.4-beta.665 → 2025.2.4-beta.666
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/channels/debug/channels.js +141 -28
- package/channels/debug/package.json +1 -1
- package/channels/debug.private/channels.js +141 -28
- package/channels/debug.private/package.json +1 -1
- package/channels/debug.provideGlobalScope/channels.js +141 -28
- package/channels/debug.provideGlobalScope/package.json +1 -1
- package/channels/es5.debug.private/channels.js +141 -28
- package/channels/es5.debug.private/package.json +1 -1
- package/channels/min/channels.js +1 -1
- package/channels/min/channels.js.map +1 -1
- package/channels/min/package.json +1 -1
- package/channels/min.private/channels.js +1 -1
- package/channels/min.private/channels.js.map +1 -1
- package/channels/min.private/package.json +1 -1
- package/channels/min.provideGlobalScope/channels.js +1 -1
- package/channels/min.provideGlobalScope/channels.js.map +1 -1
- package/channels/min.provideGlobalScope/package.json +1 -1
- package/channels/package.json +1 -1
- package/full/debug/full.js +141 -28
- package/full/debug/package.json +1 -1
- package/full/debug.private/full.js +141 -28
- package/full/debug.private/package.json +1 -1
- package/full/min/full.js +1 -1
- package/full/min/full.js.map +1 -1
- package/full/min/package.json +1 -1
- package/full/min.private/full.js +1 -1
- package/full/min.private/full.js.map +1 -1
- package/full/min.private/package.json +1 -1
- package/full/package.json +1 -1
- package/package.json +1 -1
- package/publish/debug/package.json +1 -1
- package/publish/debug/publish.js +83 -7
- package/publish/debug.private/package.json +1 -1
- package/publish/debug.private/publish.js +83 -7
- package/publish/min/package.json +1 -1
- package/publish/min/publish.js +1 -1
- package/publish/min/publish.js.map +1 -1
- package/publish/min.private/package.json +1 -1
- package/publish/min.private/publish.js +1 -1
- package/publish/min.private/publish.js.map +1 -1
- package/publish/package.json +1 -1
- package/types/rtc/RtcConnectionMonitor.d.ts +6 -1
- package/types/rtc/SdpParser.d.ts +11 -0
package/publish/debug/publish.js
CHANGED
|
@@ -3582,6 +3582,9 @@ var RtcPublishMonitor = /*#__PURE__*/function () {
|
|
|
3582
3582
|
|
|
3583
3583
|
|
|
3584
3584
|
|
|
3585
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
3586
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
3587
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
3585
3588
|
/**
|
|
3586
3589
|
* Copyright 2026 Perform Content Services Limited. Confidential and Proprietary. All Rights Reserved.
|
|
3587
3590
|
*/
|
|
@@ -3589,17 +3592,20 @@ var SdpParser = /*#__PURE__*/function () {
|
|
|
3589
3592
|
function SdpParser(sdp) {
|
|
3590
3593
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default()(this, SdpParser);
|
|
3591
3594
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_sdp", void 0);
|
|
3595
|
+
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_sdpSplitByTracks", void 0);
|
|
3596
|
+
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_audioSections", void 0);
|
|
3592
3597
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_audioCodec", void 0);
|
|
3593
3598
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_videoCodec", void 0);
|
|
3594
3599
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_isAudioTrackEnabled", void 0);
|
|
3595
3600
|
_home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_defineProperty_js__WEBPACK_IMPORTED_MODULE_2___default()(this, "_isVideoTrackEnabled", void 0);
|
|
3596
3601
|
this._sdp = sdp;
|
|
3602
|
+
this._sdpSplitByTracks = this._sdp.split(/(?:^|[\r\n])m=/);
|
|
3597
3603
|
var sdpSplitByLines = this._sdp.split(/(\r\n|\r|\n)/);
|
|
3598
|
-
var sdpSplitByTracks = this._sdp.split(/(?:^|[\r\n])m=/);
|
|
3599
3604
|
this._audioCodec = this.applyCodec('audio', sdpSplitByLines);
|
|
3600
3605
|
this._videoCodec = this.applyCodec('video', sdpSplitByLines);
|
|
3601
|
-
this.
|
|
3602
|
-
this.
|
|
3606
|
+
this._audioSections = this.parseAudioSections();
|
|
3607
|
+
this._isAudioTrackEnabled = this.isTrackByTypeEnabled('audio');
|
|
3608
|
+
this._isVideoTrackEnabled = this.isTrackByTypeEnabled('video');
|
|
3603
3609
|
}
|
|
3604
3610
|
return _home_teamcity_buildAgent_work_54543f04b253d0cc_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default()(SdpParser, [{
|
|
3605
3611
|
key: "audioCodec",
|
|
@@ -3621,10 +3627,80 @@ var SdpParser = /*#__PURE__*/function () {
|
|
|
3621
3627
|
get: function get() {
|
|
3622
3628
|
return this._isVideoTrackEnabled;
|
|
3623
3629
|
}
|
|
3630
|
+
}, {
|
|
3631
|
+
key: "audioSections",
|
|
3632
|
+
get: function get() {
|
|
3633
|
+
return this._audioSections;
|
|
3634
|
+
}
|
|
3635
|
+
}, {
|
|
3636
|
+
key: "withAudioLanguages",
|
|
3637
|
+
value: function withAudioLanguages(languages) {
|
|
3638
|
+
var lineEnding = this._sdp.includes('\r\n') ? '\r\n' : this._sdp.includes('\n') ? '\n' : '\r';
|
|
3639
|
+
var lines = this._sdp.split(/\r\n|\r|\n/);
|
|
3640
|
+
var audioIndex = -1;
|
|
3641
|
+
var inAudioSection = false;
|
|
3642
|
+
for (var index = 0; index < lines.length; index++) {
|
|
3643
|
+
if (lines[index].startsWith('m=')) {
|
|
3644
|
+
inAudioSection = lines[index].startsWith('m=audio ');
|
|
3645
|
+
if (inAudioSection) {
|
|
3646
|
+
audioIndex++;
|
|
3647
|
+
}
|
|
3648
|
+
}
|
|
3649
|
+
if (inAudioSection && lines[index].startsWith('a=lang:')) {
|
|
3650
|
+
lines.splice(index, 1);
|
|
3651
|
+
index--;
|
|
3652
|
+
continue;
|
|
3653
|
+
}
|
|
3654
|
+
if (inAudioSection && lines[index].startsWith('a=mid:') && languages[audioIndex]) {
|
|
3655
|
+
lines.splice(index + 1, 0, "a=lang:".concat(languages[audioIndex]));
|
|
3656
|
+
index++;
|
|
3657
|
+
}
|
|
3658
|
+
}
|
|
3659
|
+
return lines.join(lineEnding);
|
|
3660
|
+
}
|
|
3661
|
+
}, {
|
|
3662
|
+
key: "parseAudioSections",
|
|
3663
|
+
value: function parseAudioSections() {
|
|
3664
|
+
var sections = this._sdpSplitByTracks.slice(1);
|
|
3665
|
+
var audioSections = [];
|
|
3666
|
+
var ordinal = 0;
|
|
3667
|
+
var _iterator = _createForOfIteratorHelper(sections),
|
|
3668
|
+
_step;
|
|
3669
|
+
try {
|
|
3670
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
3671
|
+
var _lines$find, _lines$find2;
|
|
3672
|
+
var section = _step.value;
|
|
3673
|
+
var lines = section.split(/\r\n|\r|\n/);
|
|
3674
|
+
if (!lines[0].startsWith('audio ')) {
|
|
3675
|
+
continue;
|
|
3676
|
+
}
|
|
3677
|
+
var mid = (_lines$find = lines.find(function (line) {
|
|
3678
|
+
return line.startsWith('a=mid:');
|
|
3679
|
+
})) === null || _lines$find === void 0 ? void 0 : _lines$find.slice('a=mid:'.length);
|
|
3680
|
+
var sectionOrdinal = ordinal++;
|
|
3681
|
+
if (!mid) {
|
|
3682
|
+
continue;
|
|
3683
|
+
}
|
|
3684
|
+
audioSections.push({
|
|
3685
|
+
mid: mid,
|
|
3686
|
+
ordinal: sectionOrdinal,
|
|
3687
|
+
language: (_lines$find2 = lines.find(function (line) {
|
|
3688
|
+
return line.startsWith('a=lang:');
|
|
3689
|
+
})) === null || _lines$find2 === void 0 ? void 0 : _lines$find2.slice('a=lang:'.length),
|
|
3690
|
+
receivesMedia: lines[0].split(' ')[1] !== '0' && !lines.includes('a=inactive') && !lines.includes('a=recvonly')
|
|
3691
|
+
});
|
|
3692
|
+
}
|
|
3693
|
+
} catch (err) {
|
|
3694
|
+
_iterator.e(err);
|
|
3695
|
+
} finally {
|
|
3696
|
+
_iterator.f();
|
|
3697
|
+
}
|
|
3698
|
+
return audioSections;
|
|
3699
|
+
}
|
|
3624
3700
|
}, {
|
|
3625
3701
|
key: "isTrackByTypeEnabled",
|
|
3626
|
-
value: function isTrackByTypeEnabled(type
|
|
3627
|
-
var sdpSectionForType =
|
|
3702
|
+
value: function isTrackByTypeEnabled(type) {
|
|
3703
|
+
var sdpSectionForType = this._sdpSplitByTracks.find(function (sdpTrack) {
|
|
3628
3704
|
return sdpTrack.startsWith(type);
|
|
3629
3705
|
});
|
|
3630
3706
|
if (!sdpSectionForType) {
|
|
@@ -7851,7 +7927,7 @@ var VersionManager = /*#__PURE__*/function () {
|
|
|
7851
7927
|
key: "sdkVersion",
|
|
7852
7928
|
get: function get() {
|
|
7853
7929
|
try {
|
|
7854
|
-
return "2026-
|
|
7930
|
+
return "2026-10-09T04:17:09.483Z (2025.2.4-beta.666)";
|
|
7855
7931
|
} catch (e) {
|
|
7856
7932
|
return this._defaultVersion;
|
|
7857
7933
|
}
|
|
@@ -9122,4 +9198,4 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
9122
9198
|
/******/ })()
|
|
9123
9199
|
;
|
|
9124
9200
|
});
|
|
9125
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QSw0Q0FBRztFQUNIK2hDLFVBQVUsRUFBVkEsbURBQVU7RUFDVi9GLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZUxpc3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvTnVtYmVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9TdHJpbmdzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQXBwZW5kZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQ29uc29sZUFwcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdUaHJlc2hvbGQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9QY2FzdFVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUmVhbFRpbWVQdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZUZ1bmN0aW9uLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKGAke25hbWV9LXVyaS1wYXJhbWV0ZXItbmFtZWApIHx8XG4gICAgICBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnT24nO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlRnJvbVVyaSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKTtcblxuICAgIGlmICh2YWx1ZUZyb21VcmkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZyb21VcmkgPT09ICd0cnVlJyB8fCB2YWx1ZUZyb21VcmkgPT09ICcxJyB8fCB2YWx1ZUZyb21VcmkgPT09ICdPbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGFWYWx1ZSA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50UXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPScke25hbWV9J11gKTtcblxuICAgIGlmICghbWV0YVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBtZXRhVmFsdWUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2YWx1ZVVSSVBhcmFtZXRlck5hbWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlVVJJUGFyYW1ldGVyTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTFNlYXJjaFBhcmFtcyhHbG9iYWxTY29wZS52YWx1ZS5sb2NhdGlvblNlYXJjaCkuZ2V0KHZhbHVlVVJJUGFyYW1ldGVyTmFtZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcm90ZWN0ZWRDaGFubmVsU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEZpcmVmb3ggRFJNIHBsYXliYWNrIGV4aGliaXRzIGluY29uc2lzdGVudCBwZXJmb3JtYW5jZTsgcm9vdCBjYXVzZSBpbnZlc3RpZ2F0aW9uIHBlbmRpbmdcbiAgICAvLyBTYWZhcmkgbGFja3MgcGxhdGZvcm0gc3VwcG9ydCBmb3IgRmFpclBsYXkgRFJNIGltcGxlbWVudGF0aW9uXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWRcbiAgICAgICYmIChGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgQWJvcnRDb250cm9sbGVyKCk6IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuQWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgZ2V0IEZvcm1EYXRhKCk6IHR5cGVvZiBGb3JtRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5Gb3JtRGF0YTtcbiAgfVxuXG4gIGdldCBIVE1MVmlkZW9FbGVtZW50KCk6IHR5cGVvZiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkhUTUxWaWRlb0VsZW1lbnQ7XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW0oKTogdHlwZW9mIE1lZGlhU3RyZWFtIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtVHJhY2soKTogdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW1UcmFjaztcbiAgfVxuXG4gIGdldCBNZWRpYVNvdXJjZSgpOiB0eXBlb2YgTWVkaWFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTb3VyY2U7XG4gIH1cblxuICBnZXQgUlRDUGVlckNvbm5lY3Rpb24oKTogdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpOiB0eXBlb2YgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBSVENJY2VDYW5kaWRhdGUoKTogdHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENJY2VDYW5kaWRhdGU7XG4gIH1cblxuICBnZXQgVVJMKCk6IHR5cGVvZiBVUkwge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMO1xuICB9XG5cbiAgZ2V0IFVSTFNlYXJjaFBhcmFtcygpOiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTFNlYXJjaFBhcmFtcztcbiAgfVxuXG4gIGdldCBhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJJbnRlcnZhbCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJUaW1lb3V0KCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhclRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRIYXNGb2N1cygpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuaGFzRm9jdXMuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRJc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kb2N1bWVudC5oaWRkZW47XG4gIH1cblxuICBnZXQgZG9jdW1lbnRRdWVyeVNlbGVjdG9yKCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZmV0Y2goKTogKGlucHV0OiBzdHJpbmcgfCBVUkwgfCBSZXF1ZXN0LCBpbml0PzogUmVxdWVzdEluaXQpID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmZldGNoLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbkhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaDtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JDb25uZWN0aW9uKCk6IElOZXR3b3JrSW5mb3JtYXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JJc09uTGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHRoaXMuX3dpbmRvd1snX19wYWdlTG9hZFRpbWUnXTtcbiAgfVxuXG4gIGdldCBzZW5kQmVhY29uKCk6ICgodXJsOiBzdHJpbmcgfCBVUkwsIGRhdGE/OiBCb2R5SW5pdCB8IG51bGwpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb25cbiAgICAgID8gKHVybCwgZGF0YSkgPT4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb24hKHVybCwgZGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGRhdGEpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBxdWV1ZU1pY3JvdGFzaygpOiAobWljcm90YXNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnF1ZXVlTWljcm90YXNrLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IHJlcXVlc3RBbmltYXRpb25GcmFtZSgpOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvcjogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IEVycm9yLCBpbmRleDogbnVtYmVyLCBhcnJheTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZTogb2JqZWN0W10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdJbmZvJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cmwgbXVzdCBiZSBhIHN0cmluZyBpbnN0ZWFkIHJlY2VpdmVkIFske3R5cGVvZiB1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0cmljc0ZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIE5vdGU6IFRoaXMgUHJvbWlzZSBwb2x5ZmlsbCBpcyBpbmNsdWRlZCBmb3IgYnJvd3NlciBidWlsZHMgb25seSB0byBhZGRyZXNzIGNvbXBhdGliaWxpdHkgaXNzdWVzXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cblxuaW1wb3J0IFByb21pc2VIYW5kbGVyIGZyb20gJy4vUHJvbWlzZUhhbmRsZXInO1xuXG5jbGFzcyBQcm9taXNlPFQ+IHtcbiAgX3N0YXRlOiBudW1iZXI7XG4gIF9oYW5kbGVkOiBib29sZWFuO1xuICBfdmFsdWU6IFQgfCB1bmtub3duO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcjxUPj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGwsIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbCk6IFByb21pc2U8VD58IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gMDtcbiAgICB0aGlzLl9oYW5kbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgICh2YWx1ZTogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChyZWFzb246IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVzb2x2ZShuZXdWYWx1ZTogUHJvbWlzZTxUPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFByb21pc2U8VD5SZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL1Byb21pc2VzLWFwbHVzL1Byb21pc2VzLXNwZWMjdGhlLVByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIFByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXQgc2VsZi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1ZhbHVlICYmICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIG5leHQgbGluZSB0byBub3QgZG8gZXh0cmEgaWYgc3RhdGVtZW50c1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgdGhlbiA9IG5ld1ZhbHVlLnRoZW47XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHByb21pc2UuX3N0YXRlID0gMztcbiAgICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgIHByb21pc2UuZmluYWxlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9taXNlLmRvUmVzb2x2ZShmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgICAgIHRoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyBhcyB1bmtub3duIGFzIFtvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJvbWlzZS5fc3RhdGUgPSAxO1xuICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHByb21pc2UuZmluYWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZWplY3QobmV3VmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IDI7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLmZpbmFsZSgpO1xuICB9XG5cbiAgZmluYWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gMiAmJiB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZWQpIHtcbiAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24odGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuICB9XG5cbiAgaGFuZGxlKGRlZmVycmVkOiBQcm9taXNlSGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGxldCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgd2hpbGUgKHByb21pc2UuX3N0YXRlID09PSAzKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS5fdmFsdWUgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcbiAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX2hhbmRsZWQgPSB0cnVlO1xuICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXG4gICAgICBpZiAoY2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAxKSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2socHJvbWlzZS5fdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYWxsKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpOiBudW1iZXIsIHZhbHVlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPikgPT4gbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhcmdzW2ldID0gdmFsdWU7XG5cbiAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYW5hZ2VSZXNwb25zZShpLCBhcmdzW2ldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IFByb21pc2UpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmVqZWN0KHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfOiB1bmRlZmluZWQsIHJlamVjdDogRnVuY3Rpb24pID0+IHJlamVjdCh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJhY2UoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yOiBQcm9taXNlPHVua25vd24+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246JywgZXJyb3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn1cblxuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCgpOiBudWxsID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcjx1bmtub3duPihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddID0gZnVuY3Rpb24oY2FsbGJhY2s6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+fCB1bmRlZmluZWQpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlLCAoKTogbnVsbCA9PiBudWxsKSxcbiAgICAocmVhc29uOiBFcnJvciB8IHN0cmluZykgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gUHJvbWlzZS5yZWplY3QocmVhc29uKSwgKCk6IG51bGwgPT4gbnVsbClcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1B1Ymxpc2hTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5jb25zdCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiA9IDUwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUnRjUHVibGlzaE1vbml0b3InKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9tb25pdG9yR2VuZXJhdGlvbiA9IDA7XG4gIHByaXZhdGUgX2F2YWlsYWJsZVRyYWNrczoge1xuICAgIGF1ZGlvOiBib29sZWFuO1xuICAgIHZpZGVvOiBib29sZWFuO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24gJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy5zZHAgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICBjb25zdCBwYXJzZWRMb2NhbERlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYztcbiAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjO1xuXG4gICAgICB0aGlzLl9hdmFpbGFibGVUcmFja3MgPSB7XG4gICAgICAgIGF1ZGlvOiBwYXJzZWRMb2NhbERlc2NyaXB0aW9uLmlzQXVkaW9UcmFja0VuYWJsZWQgJiYgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCxcbiAgICAgICAgdmlkZW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNWaWRlb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkXG4gICAgICB9O1xuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dW5kZWZpbmVkPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdvdXRib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kOiAndmlkZW8nIHwgJ2F1ZGlvJyB8IHVuZGVmaW5lZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fYXZhaWxhYmxlVHJhY2tzPy5ba2luZF0pIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNTZW50IHx8IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNTZW50ID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzU2VudCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgcGFja2V0c1NlbnQ6IHJlcG9ydC5wYWNrZXRzU2VudCxcbiAgICAgICAgICAgICAgICByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OiByZXBvcnQucmV0cmFuc21pdHRlZEJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZpckNvdW50J10gPSByZXBvcnQuZmlyQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZVdpZHRoJ10gPSByZXBvcnQuZnJhbWVXaWR0aDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNFbmNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRW5jb2RlZDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydoZWFkZXJCeXRlc1NlbnQnXSA9IHJlcG9ydC5oZWFkZXJCeXRlc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnaHVnZUZyYW1lc1NlbnQnXSA9IHJlcG9ydC5odWdlRnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3FwU3VtJ10gPSByZXBvcnQucXBTdW07XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVUaW1lJ10gPSByZXBvcnQudG90YWxFbmNvZGVUaW1lO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRW5jb2RlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNFbmNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0VuY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzKCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2RwUGFyc2VyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2RwOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1ZGlvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdmlkZW9Db2RlYzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0F1ZGlvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc1ZpZGVvVHJhY2tFbmFibGVkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNkcDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2RwID0gc2RwO1xuXG4gICAgY29uc3Qgc2RwU3BsaXRCeUxpbmVzID0gdGhpcy5fc2RwLnNwbGl0KC8oXFxyXFxufFxccnxcXG4pLyk7XG4gICAgY29uc3Qgc2RwU3BsaXRCeVRyYWNrcyA9IHRoaXMuX3NkcC5zcGxpdCgvKD86XnxbXFxyXFxuXSltPS8pO1xuXG4gICAgdGhpcy5fYXVkaW9Db2RlYyA9IHRoaXMuYXBwbHlDb2RlYygnYXVkaW8nLCBzZHBTcGxpdEJ5TGluZXMpO1xuICAgIHRoaXMuX3ZpZGVvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ3ZpZGVvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgnYXVkaW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgICB0aGlzLl9pc1ZpZGVvVHJhY2tFbmFibGVkID0gdGhpcy5pc1RyYWNrQnlUeXBlRW5hYmxlZCgndmlkZW8nLCBzZHBTcGxpdEJ5VHJhY2tzKTtcbiAgfVxuXG4gIGdldCBhdWRpb0NvZGVjKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1ZGlvQ29kZWM7XG4gIH1cblxuICBnZXQgdmlkZW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl92aWRlb0NvZGVjO1xuICB9XG5cbiAgZ2V0IGlzQXVkaW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzQXVkaW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgaXNWaWRlb1RyYWNrRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgaXNUcmFja0J5VHlwZUVuYWJsZWQodHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNkcFNlY3Rpb25Gb3JUeXBlID0gc2RwU3BsaXRCeVRyYWNrcy5maW5kKHNkcFRyYWNrID0+IHNkcFRyYWNrLnN0YXJ0c1dpdGgodHlwZSkpO1xuXG4gICAgaWYgKCFzZHBTZWN0aW9uRm9yVHlwZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiAhc2RwU2VjdGlvbkZvclR5cGUuaW5jbHVkZXMoYGE9aW5hY3RpdmVgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlDb2RlYyh0eXBlOiBzdHJpbmcsIHNkcFNwbGl0QnlMaW5lczogc3RyaW5nIFtdKTogc3RyaW5nIHtcbiAgICBjb25zdCBydG1hcCA9IHNkcFNwbGl0QnlMaW5lcy5maW5kKHNkcExpbmUgPT4gc2RwTGluZS5pbmNsdWRlcyhgbT0ke3R5cGV9YCkpPy5zcGxpdCgnICcpWzNdIHx8ICcnO1xuICAgIGNvbnN0IHVzZWRDb2RlY0xpbmUgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYGE9cnRwbWFwOiR7cnRtYXB9YCkpO1xuICAgIGNvbnN0IHVzZWRDb2RlYyA9IHVzZWRDb2RlY0xpbmU/LnNwbGl0KCcgJylbMV0gfHwgJyc7XG4gICAgY29uc3QgY29kZWNOYW1lID0gdXNlZENvZGVjLnNwbGl0KCcvJylbMF07XG5cbiAgICByZXR1cm4gY29kZWNOYW1lO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0fSBmcm9tICcuL1J0Y0Nvbm5lY3Rpb25Nb25pdG9yJztcblxuY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1ZhbmlsbGFQZWVyQ29ubmVjdGlvbicpO1xuICBwcml2YXRlIF9wZWVyQ29ubmVjdGlvbjogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCkge1xuICAgICAgLy8gSWdub3JlZCBhcyBsZWdhY3kgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24gY2xhc3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25cbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgZ2V0IG5hdGl2ZSgpOiBSVENQZWVyQ29ubmVjdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY3VycmVudFJlbW90ZURlc2NyaXB0aW9uKCk6IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY3VycmVudFJlbW90ZURlc2NyaXB0aW9uIHx8IG51bGw7XG4gIH1cblxuICBnZXQgY29ubmVjdGlvblN0YXRlKCk6IFJUQ1BlZXJDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGljZUNvbm5lY3Rpb25TdGF0ZSgpOiBSVENJY2VDb25uZWN0aW9uU3RhdGUgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmljZUNvbm5lY3Rpb25TdGF0ZSB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5zZXRDb25maWd1cmF0aW9uID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzR2V0VHJhbnNjZWl2ZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhRmVhdHVyZUVuYWJsZW1lbnQuZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5nZXRUcmFuc2NlaXZlcnMgPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBnZXQgc3VwcG9ydHNBZGRUcmFuc2NlaXZlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmFkZFRyYW5jZWl2ZXJEaXNhYmxlZCAmJiB0eXBlb2YgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmFkZFRyYW5zY2VpdmVyID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlT2ZmZXIob3B0aW9ucz86IFJUQ09mZmVyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZU9mZmVyIG1ldGhvZCB3aXRoIGNhbGxiYWNrcyBpcyBkZXByZWNhdGVkXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUFuc3dlcihvcHRpb25zPzogUlRDQW5zd2VyT3B0aW9ucyk6IFByb21pc2U8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IGNyZWF0ZUFuc3dlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIocmVzb2x2ZSwgcmVqZWN0LCBvcHRpb25zKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmNyZWF0ZUFuc3dlcihvcHRpb25zKTtcbiAgfVxuXG4gIGFzeW5jIHNldExvY2FsRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBhc3luYyBzZXRSZW1vdGVEZXNjcmlwdGlvbihkZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBoYXNDcnlwdG8gPSBkZXNjcmlwdGlvbi5zZHA/Lm1hdGNoKC9hPWNyeXB0bzovaSk7XG5cbiAgICBpZiAoaGFzQ3J5cHRvKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RQIGE9Y3J5cHRvIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oRmVhdHVyZUVuYWJsZW1lbnQucHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQgP1xuICAgICAgbmV3IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihkZXNjcmlwdGlvbikgOiBkZXNjcmlwdGlvbik7XG4gIH1cblxuICBnZXRTZW5kZXJzKCk6IFJUQ1J0cFNlbmRlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFNlbmRlcnMoKTtcbiAgfVxuXG4gIGdldFJlY2VpdmVycygpOiBSVENSdHBSZWNlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFJlY2VpdmVycygpO1xuICB9XG5cbiAgZ2V0U3RhdHMoc2VsZWN0b3I/OiBNZWRpYVN0cmVhbVRyYWNrIHwgbnVsbCk6IFByb21pc2U8UlRDU3RhdHNSZXBvcnQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHNlbGVjdG9yKTtcbiAgfVxuXG4gIGdldFN0YXRzTGVnYWN5KCk6IFByb21pc2U8SUxlZ2FjeVJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIC8vIElnbm9yZWQgZHVlIHRvIHR5cGVzY3JpcHQgbm90IGhhdmluZyBsZWdhY3kgJ2dldFN0YXRzJyBtZXRob2QgdHlwZSBkZWZpbml0aW9uXG4gICAgICAvLyBUaGlzIHdhcyBhIENocm9tZSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ2dldFN0YXRzJyBtZXRob2QgZm9yXG4gICAgICAvLyBDaHJvbWVAPD0gNjYgZGV0YWlsZWQgaGVyZTogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjI3ODE2XG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFN0YXRzKHJlc29sdmUpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICByZW1vdmVFdmVudExpc3RlbmVyPFQgZXh0ZW5kcyBrZXlvZiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwPih0eXBlOiBULCBsaXN0ZW5lcjogKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcFtUXSkgPT4gdW5rbm93biwgb3B0aW9ucz86IGJvb2xlYW4gfCBBZGRFdmVudExpc3RlbmVyT3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyLCBvcHRpb25zKTtcbiAgfVxuXG4gIGdldFRyYW5zY2VpdmVycygpOiBSVENSdHBUcmFuc2NlaXZlcltdIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldFRyYW5zY2VpdmVycygpO1xuICB9XG5cbiAgYWRkVHJhbnNjZWl2ZXIobmFtZTogc3RyaW5nLCBvcHRpb25zOiBSVENSdHBUcmFuc2NlaXZlckluaXQpOiBSVENSdHBUcmFuc2NlaXZlciB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFuc2NlaXZlcihuYW1lLCBvcHRpb25zKTtcbiAgfVxuXG4gIGFkZFN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pOiB2b2lkIHtcbiAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKHRyYWNrID0+IHtcbiAgICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5hZGRUcmFjayh0cmFjayk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb25maWd1cmF0aW9uKCk6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpO1xuICB9XG5cbiAgc2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBzZXQgb250cmFjayhoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDVHJhY2tFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9udHJhY2sgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9udHJhY2soKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrO1xuICB9XG5cbiAgc2V0IG9uaWNlY2FuZGlkYXRlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGUgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uaWNlY2FuZGlkYXRlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2VjYW5kaWRhdGU7XG4gIH1cblxuICBzZXQgb25jb25uZWN0aW9uc3RhdGVjaGFuZ2UoaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwpIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ub25jb25uZWN0aW9uc3RhdGVjaGFuZ2UgPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlO1xuICB9XG5cbiAgc2V0IG9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jbG9zZSgpO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmFuaWxsYVBlZXJDb25uZWN0aW9uOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBWYW5pbGxhUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9WYW5pbGxhUGVlckNvbm5lY3Rpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IGltcGxlbWVudHMgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSB7XG4gIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPihyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVQZWVyQ29ubmVjdGlvblByb21pc2UobmV3IFZhbmlsbGFQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKSk7XG4gICAgICAgIGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuL1N1YmplY3QnO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFkT25seVN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJqZWN0OiBTdWJqZWN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKHN1YmplY3Q6IFN1YmplY3Q8VD4pIHtcbiAgICB0aGlzLl9zdWJqZWN0ID0gc3ViamVjdDtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBUIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC52YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLl9zdWJqZWN0LnN1YnNjcmliZShsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlIGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZSc7XG5pbXBvcnQgSUNvbXBhcmFibGUgZnJvbSAnLi4vbGFuZy9JQ29tcGFyYWJsZSc7XG5cbmNsYXNzIERpc3Bvc2FibGVMaXN0ZW5lcjxUPiBleHRlbmRzIERpc3Bvc2FibGUge1xuICBjb25zdHJ1Y3RvcihsaXN0ZW5lcnM6IFRbXSwgbGlzdGVuZXI6IFQpIHtcbiAgICBzdXBlcigoKSA9PiB7XG4gICAgICBjb25zdCBpZHggPSBsaXN0ZW5lcnMuaW5kZXhPZihsaXN0ZW5lcik7XG5cbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICBsaXN0ZW5lcnMuc3BsaWNlKGlkeCwgMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xpc3RlbmVyczogKCh2YWx1ZTogVCkgPT4gdm9pZClbXTtcbiAgcHJpdmF0ZSBfdmFsdWU6IFQ7XG5cbiAgY29uc3RydWN0b3IodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBUKSB7XG4gICAgbGV0IGNoYW5nZWQgPSB0aGlzLl92YWx1ZSAhPT0gdmFsdWU7XG5cbiAgICBpZiAoY2hhbmdlZCAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgY29tcGFyYWJsZSA9IHZhbHVlIGFzIHVua25vd24gYXMgSUNvbXBhcmFibGU8VD47XG5cbiAgICAgIGlmICh0eXBlb2YgY29tcGFyYWJsZS5lcXVhbHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgY2hhbmdlZCA9ICFjb21wYXJhYmxlLmVxdWFscyh0aGlzLl92YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFjaGFuZ2VkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcblxuICAgIGZvciAoY29uc3QgbGlzdGVuZXIgb2YgWy4uLnRoaXMuX2xpc3RlbmVyc10pIHtcbiAgICAgIGxpc3RlbmVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAodmFsdWU6IFQpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuXG4gICAgbGlzdGVuZXIodGhpcy5fdmFsdWUpO1xuXG4gICAgcmV0dXJuIG5ldyBEaXNwb3NhYmxlTGlzdGVuZXI8KHZhbHVlOiBUKSA9PiB2b2lkPih0aGlzLl9saXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW52aXJvbm1lbnQge1xuICBzdGF0aWMgZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgICAgcmV0dXJuIGJhc2VVUkwub3JpZ2luO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSUdsb2JhbFNjb3BlJztcbmltcG9ydCB7R2xvYmFsU2NvcGV9IGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBSZWFkT25seVN1YmplY3QgZnJvbSAnLi4vcngvUmVhZE9ubHlTdWJqZWN0JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IENvbnNvbGVBcHBlbmRlciBmcm9tICcuLi9sb2dnZXIvQ29uc29sZUFwcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlBcHBlbmRlciBmcm9tICcuLi90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlcic7XG5pbXBvcnQgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciBmcm9tICcuLi9kb20vQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlcic7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24sIHtUZWxlbWV0cnlMZXZlbCwgVGVsZW1ldHJ5TGV2ZWxUeXBlfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlMZXZlbE1hcHBpbmcgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBCdWlsZEZlYXR1cmVzIGZyb20gJy4uL2Vudmlyb25tZW50L0J1aWxkRmVhdHVyZXMnO1xuaW1wb3J0IEJyb3dzZXJEZXRlY3RvciBmcm9tICcuLi9kb20vQnJvd3NlckRldGVjdG9yJztcbmltcG9ydCBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciBmcm9tICcuLi9kb20vQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3InO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbkZhY3RvcnkgZnJvbSAnLi4vcnRjL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uU2VydmljZSBmcm9tICcuLi9ydGMvUGVlckNvbm5lY3Rpb25TZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlVcmwgZnJvbSAnLi9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4vRW52aXJvbm1lbnQnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi4vbWV0cmljcy9UZWxlbWV0cnlEZWZhdWx0JztcbmltcG9ydCB7U2hha2FQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JU2hha2FQbGF5ZXInO1xuaW1wb3J0IHtIbHNQbGF5ZXJUeXBlfSBmcm9tICcuL3N0cmVhbWluZy9JSGxzUGxheWVyJztcbmltcG9ydCB7V2ViUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVdlYlBsYXllcic7XG5pbXBvcnQgSVByb3ZpZGVkR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvSVByb3ZpZGVkR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBwYWdlTG9hZFRpbWUgPSBHbG9iYWxTY29wZS5nZXRJbnN0YW5jZSgpLnZhbHVlPy5wYWdlTG9hZFRpbWUgfHwgRGF0ZS5ub3coKTtcblxuaW50ZXJmYWNlIElJbml0T3B0aW9ucyB7XG4gIGRpc2NvdmVyeVVyaT86IHN0cmluZztcbiAgcGVlckNvbm5lY3Rpb25GYWN0b3J5PzogSVBlZXJDb25uZWN0aW9uRmFjdG9yeTtcbiAgdGVsZW1ldHJ5TGV2ZWw/OiBUZWxlbWV0cnlMZXZlbFR5cGU7XG4gIGxvZ2dpbmdMZXZlbD86IExvZ2dpbmdMZXZlbFR5cGU7XG4gIGNvbnNvbGVMb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBhdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtPzogYm9vbGVhbjtcbiAgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU/OiBib29sZWFuO1xuICB3ZWJQbGF5ZXJMb2FkZXI/OiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHNoYWthUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIGhsc0pzTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTREsge1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gdHJ1ZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWZvcmNlLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1yZXN0YXJ0Jyk7XG4gIHByaXZhdGUgc3RhdGljIF9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gIHByaXZhdGUgc3RhdGljIF93ZWJQbGF5ZXJMb2FkZXI6ICh2YWx1ZTogKHBsYXllcjogV2ViUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX3NoYWthUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2hsc0pzTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjogQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgfCBudWxsO1xuICBwcml2YXRlIHN0YXRpYyBfZW52aXJvbm1lbnQ6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5VXJsOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeScpO1xuICBwcml2YXRlIHN0YXRpYyBfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDg7XG4gIHByaXZhdGUgc3RhdGljIF90ZWxlbWV0cnlMZXZlbDogU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4gPSBuZXcgU3ViamVjdDxUZWxlbWV0cnlMZXZlbD4oVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWwpO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHN0YXRpYyBfbWV0cmljc0NvbmZpZ3VyYXRpb246IE1ldHJpY3NDb25maWd1cmF0aW9uO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfc2VuZExvY2FsQ2FuZGlkYXRlczogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KEJ1aWxkRmVhdHVyZXMuc2VuZExvY2FsQ2FuZGlkYXRlcyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF90ZW5hbmN5OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2NsaWVudFNlc3Npb25JZDogc3RyaW5nID0gU3RyaW5ncy5yYW5kb20oMzIpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfbG9hZGVkVGltZXN0YW1wOiBEYXRlID0gbmV3IERhdGUoKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTREsnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luaXRpYWxpemVkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfcmVhZE9ubHlJbml0aWFsaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPihTREsuX2luaXRpYWxpemVkKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5RGlzY292ZXJ5VXJpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8c3RyaW5nPihEaXNjb3ZlcnlVcmkudXJpKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5OiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KFBlZXJDb25uZWN0aW9uU2VydmljZS5wZWVyQ29ubmVjdGlvbkZhY3RvcnkpO1xuXG4gIHN0YXRpYyBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVuYW5jeSgpOiBTdWJqZWN0PHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc3RhdGljIGdldCBjbGllbnRTZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU0RLLl9jbGllbnRTZXNzaW9uSWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvYWRlZFRpbWVzdGFtcCgpOiBEYXRlIHtcbiAgICByZXR1cm4gU0RLLl9sb2FkZWRUaW1lc3RhbXA7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGluaXRpYWxpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlJbml0aWFsaXplZDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5VXJpKCk6IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gU0RLLl9yZWFkT25seURpc2NvdmVyeVVyaTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgcGVlckNvbm5lY3Rpb25GYWN0b3J5KCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBTREsuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHdlYlBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93ZWJQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNoYWthUGxheWVyTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXI7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGhsc0pzTG9hZGVyKCk6ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX2hsc0pzTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBtZXRyaWNzU2VydmljZSgpOiBNZXRyaWNzU2VydmljZSB7XG4gICAgcmV0dXJuIFNESy5fbWV0cmljc1NlcnZpY2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlVcmwoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVsZW1ldHJ5VXJsO1xuICB9XG5cbiAgc3RhdGljIGdldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM7XG4gIH1cblxuICBzdGF0aWMgc2V0IG1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMocmV0cmllc0Ftb3VudDogbnVtYmVyKSB7XG4gICAgdGhpcy5fbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IHJldHJpZXNBbW91bnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKHRoaXMuX2xvZ2dlci50aHJlc2hvbGQudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlMZXZlbCgpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUoU0RLLl90ZWxlbWV0cnlMZXZlbC52YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJEZXRlY3RvcigpOiBCcm93c2VyRGV0ZWN0b3Ige1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIGNvbnN0IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gPSBMb2dnZXJGYWN0b3J5LnRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUgPSBTREsucGFnZUxvYWRUaW1lO1xuXG4gICAgY29uc3QgaWdub3JlZEVudmlyb25tZW50ID0gU0RLLl9lbnZpcm9ubWVudC5zdWJzY3JpYmUoZW52aXJvbm1lbnQgPT4ge1xuICAgICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50O1xuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWREaXNjb3ZlcnlVcmkgPSBTREsudGVsZW1ldHJ5VXJsLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb25zdCB0ZWxlbWV0cnlBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIFRlbGVtZXRyeUFwcGVuZGVyKTtcblxuICAgICAgaWYgKHRlbGVtZXRyeUFwcGVuZGVyKSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IFVSTCB3YXMgc2V0IHRvIFslc10nLCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlciAmJiB0ZW5hbmN5KSB7XG4gICAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSA9IHRlbmFuY3k7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUodGVsZW1ldHJ5QXBwZW5kZXIpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnVGVsZW1ldHJ5IHRlbmFuY3kgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShEaXNjb3ZlcnlVcmkudXJpLnZhbHVlKTtcbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uID0gU0RLLl9tZXRyaWNzU2VydmljZS5tZXRyaWNzQ29uZmlndXJhdGlvbjtcblxuICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uc2Vzc2lvbklkID0gU0RLLmNsaWVudFNlc3Npb25JZDtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi51cmwgPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkVGVuYW5jeSA9IFNESy5fdGVuYW5jeS5zdWJzY3JpYmUodGVuYW5jeSA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LW1ldHJpY3MtbGV2ZWwnKSBhcyBUZWxlbWV0cnlMZXZlbFR5cGU7XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKFRlbGVtZXRyeUxldmVsW3ZhbHVlXSk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZFRlbGVtZXRyeUxldmVsID0gU0RLLl90ZWxlbWV0cnlMZXZlbC5zdWJzY3JpYmUodGVsZW1ldHJ5TGV2ZWwgPT4ge1xuICAgICAgTWV0cmljc0ZhY3Rvcnkuc2V0VGVsZW1ldHJ5TGV2ZWwodGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJldHJ5LW9uLWZhaWx1cmUnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlBdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb25Gcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtc2tpcC1nYXJiYWdlLWNvbGxlY3Rpb24tb24tbW9iaWxlLWRldmljZXMnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIFNESy5kaXNjb3ZlcnlVcmkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy50ZWxlbWV0cnlVcmwudmFsdWUgPSBTREsuZ2V0VGVsZW1ldHJ5VXJsKHZhbHVlKTtcbiAgICAgIFNESy5fZW52aXJvbm1lbnQudmFsdWUgPSBFbnZpcm9ubWVudC5nZXRFbnZpcm9ubWVudEZyb21VcmwodmFsdWUpO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY2hhbm5lbFRva2VuID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWNoYW5uZWwtdG9rZW4nKTtcblxuICAgIGlmIChjaGFubmVsVG9rZW4pIHtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4oY2hhbm5lbFRva2VuKTtcblxuICAgICAgU0RLLl90ZW5hbmN5LnZhbHVlID0gZWRnZVRva2VuLnRlbmFuY3k7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gKGVkZ2VUb2tlbi51cmkgfHwgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSkudG9TdHJpbmcoKTtcblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJpVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtdXJpJyk7XG5cbiAgICBpZiAodXJpVmFsdWUpIHtcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmlWYWx1ZTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LXVyaVwiIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRhZyB0byBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVVJJVmFsdWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldFN0cmluZ1ZhbHVlKCdwaGVuaXgtYmFzZS11cmknKTtcblxuICAgIGlmIChiYXNlVVJJVmFsdWUpIHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZTtcbiAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoYmFzZVVSSVZhbHVlKTtcblxuICAgICAgdXJpLnBhdGhuYW1lID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IHVyaS50b1N0cmluZygpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyeSBVUkkgc2V0IGZyb20gXCJwaGVuaXgtYmFzZS11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIG9uTG9hZChnbG9iYWxTY29wZTogSUdsb2JhbFNjb3BlIHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faW5pdGlhbGl6ZWQudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdTREsgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGdsb2JhbFNjb3BlLmFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoJ3VubG9hZCcsICgpID0+IHtcbiAgICAgIFNESy5kaXNwb3NlKCk7XG4gICAgfSk7XG5cbiAgICBTREsuYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpO1xuICAgIFNESy5hcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24oKTtcblxuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gbmV3IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZXRyeSBvbiBmYWlsdXJlIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0KTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnU2tpcCBnYXJiYWdlIGNvbGxlY3Rpb24gb24gbW9iaWxlIGRldmljZXMgb24gcmVzdGFydCBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMpO1xuXG4gICAgdGhpcy5faW5pdGlhbGl6ZWQudmFsdWUgPSB0cnVlO1xuICB9XG5cbiAgc3RhdGljIGluaXQob3B0aW9ucz86IElJbml0T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZTogSUluaXRPcHRpb25zICYge2dsb2JhbFNjb3BlPzogSVByb3ZpZGVkR2xvYmFsU2NvcGV9ID0gb3B0aW9ucztcblxuICAgIGlmIChvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpIHtcbiAgICAgIEdsb2JhbFNjb3BlLnNldEluc3RhbmNlKG9wdGlvbnNXaXRoT3B0aW9uYWxnbG9iYWxTY29wZS5nbG9iYWxTY29wZSk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGlzY292ZXJ5VXJpKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gb3B0aW9ucy5kaXNjb3ZlcnlVcmk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5KSB7XG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlID0gb3B0aW9ucy5wZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwgJiYgVGVsZW1ldHJ5TGV2ZWxbb3B0aW9ucy50ZWxlbWV0cnlMZXZlbF0pIHtcbiAgICAgIFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUgPSBUZWxlbWV0cnlMZXZlbE1hcHBpbmcuY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwob3B0aW9ucy50ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMubG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci50aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFR5cGVUb0xvZ2dpbmdMZXZlbChvcHRpb25zLmxvZ2dpbmdMZXZlbCkpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgJiYgTG9nZ2luZ0xldmVsW29wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbF0pIHtcbiAgICAgIGNvbnN0IGNvbnNvbGVBcHBlbmRlciA9IHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMudmFsdWUuZmluZChhcHBlbmRlciA9PiBhcHBlbmRlciBpbnN0YW5jZW9mIENvbnNvbGVBcHBlbmRlcik7XG5cbiAgICAgIGlmIChjb25zb2xlQXBwZW5kZXIpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5yZW1vdmUoY29uc29sZUFwcGVuZGVyKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCAhPT0gJ09mZicpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IENvbnNvbGVBcHBlbmRlcihMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsKSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0gPSBvcHRpb25zLmF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy53ZWJQbGF5ZXJMb2FkZXIpIHtcbiAgICAgIHRoaXMuX3dlYlBsYXllckxvYWRlciA9IG9wdGlvbnMud2ViUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl9zaGFrYVBsYXllckxvYWRlciA9IG9wdGlvbnMuc2hha2FQbGF5ZXJMb2FkZXI7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaGxzSnNMb2FkZXIpIHtcbiAgICAgIHRoaXMuX2hsc0pzTG9hZGVyID0gb3B0aW9ucy5obHNKc0xvYWRlcjtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBTREsuX2luaXRpYWxpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I/LmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG51bGw7XG4gIH1cblxuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5VXJsLmdldFRlbGVtZXRyeVVybCh1cmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuR2xvYmFsU2NvcGUuc3Vic2NyaWJlKFNESy5vbkxvYWQuYmluZChTREspKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeVVybCB7XG4gIHN0YXRpYyBnZXRUZWxlbWV0cnlVcmwodXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBiYXNlVVJMID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmwpO1xuICAgICAgY29uc3Qgc2VnbWVudHMgPSBiYXNlVVJMLmhvc3RuYW1lLnNwbGl0KCcuJyk7XG5cbiAgICAgIHN3aXRjaCAoYmFzZVVSTC5wcm90b2NvbCkge1xuICAgICAgICBjYXNlICd3czonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cDonO1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3dzczonOlxuICAgICAgICAgIGJhc2VVUkwucHJvdG9jb2wgPSAnaHR0cHM6JztcblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChzZWdtZW50cy5sZW5ndGggPT09IDIgfHxcbiAgICAgICAgICAoc2VnbWVudHMubGVuZ3RoID09PSAzICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDJdLmxlbmd0aCA8PSAyICYmIHNlZ21lbnRzW3NlZ21lbnRzLmxlbmd0aCAtIDFdLmxlbmd0aCA8PSAzKVxuICAgICAgKSB7XG4gICAgICAgIHNlZ21lbnRzLnVuc2hpZnQoJ3RlbGVtZXRyeScpO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdzdGctJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1zdGcnKSB8fCBzZWdtZW50c1swXS5pbmNsdWRlcygnLXN0Zy0nKSB8fCBzZWdtZW50c1swXSA9PT0gJ3N0ZycpIHtcbiAgICAgICAgc2VnbWVudHNbMF0gPSAndGVsZW1ldHJ5LXN0Zyc7XG4gICAgICB9IGVsc2UgaWYgKHNlZ21lbnRzWzBdLnN0YXJ0c1dpdGgoJ2xvY2FsJykgfHwgc2VnbWVudHNbMF0uZW5kc1dpdGgoJy1sb2NhbCcpKSB7XG4gICAgICAgIC8vIExlYXZlIFVSTCB1bmNoYW5nZWRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeSc7XG4gICAgICB9XG5cbiAgICAgIGJhc2VVUkwuaG9zdG5hbWUgPSBzZWdtZW50cy5qb2luKCcuJyk7XG5cbiAgICAgIHJldHVybiBgJHtiYXNlVVJMLm9yaWdpbn0vdGVsZW1ldHJ5YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IHR5cGUgQml0cmF0ZVN0YXRlVHlwZSA9ICdLZWVwJyB8ICdSZXNldCc7XG5leHBvcnQgdHlwZSBCaXRyYXRlTW9kZVR5cGUgPSAnTm9ybWFsJyB8ICdGb3JjZScgfCAnUmVzZXQnO1xuXG5leHBvcnQgZW51bSBCaXRyYXRlU3RhdGUge1xuICBLZWVwLFxuICBSZXNldFxufVxuXG5leHBvcnQgZW51bSBCaXRyYXRlTW9kZSB7XG4gIE5vcm1hbCxcbiAgRm9yY2UsXG4gIFJlc2V0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlIHtcbiAgYXBpVmVyc2lvbjogbnVtYmVyO1xuICBzaGFyZWRTZWNyZXQ6IHN0cmluZztcbiAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIGJpdHJhdGVJbkJpdHNQZXJTZWNvbmQ6IG51bWJlcjtcbiAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVUeXBlO1xuICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVUeXBlO1xufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIGZyb20gJy4uLy4uL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlcic7XG5cbmV4cG9ydCB0eXBlIFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7XG4gIGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQZWVyQ29ubmVjdGlvbkNvbnRleHQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBib29sZWFuO1xuICBtZWRpYVN0cmVhbTogU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+O1xuICBwZWVyQ29ubmVjdGlvbjogU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0czogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpIHtcbiAgICB0aGlzLl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gb3B0aW9ucy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0O1xuICAgIHRoaXMubWVkaWFTdHJlYW0gPSBuZXcgU3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucGVlckNvbm5lY3Rpb24gPSBuZXcgU3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbiA9IHRoaXMucGVlckNvbm5lY3Rpb24udmFsdWU7XG5cbiAgICBpZiAoIXBlZXJDb25uZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgcGVlckNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICBwZWVyQ29ubmVjdGlvbi5kaXNwb3NlKCk7XG5cbiAgICBpZiAodGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCkge1xuICAgICAgR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlTWVkaWFTdHJlYW0oKTogdm9pZCB7XG4gICAgdGhpcy5tZWRpYVN0cmVhbS52YWx1ZT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB0cmFjay5zdG9wKCkpO1xuICAgIHRoaXMubWVkaWFTdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RhdGVDb250ZXh0IHtcbiAgaXNTdGFydGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgaXNEaXNwb3NlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlzU3RhcnRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5pc0Rpc3Bvc2VkID0gZmFsc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9rZW5Db250ZXh0IHtcbiAgdG9rZW46IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHRva2VuRXhwaXJpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG5cbiAgY29uc3RydWN0b3IodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pIHtcbiAgICB0aGlzLnRva2VuID0gbmV3IFN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj4odG9rZW4pO1xuICAgIHRoaXMudG9rZW5FeHBpcmluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuY29uc3QgZGVmYXVsdERpc2NvdmVyeVVyaSA9ICdodHRwczovL3BjYXN0LnBoZW5peHJ0cy5jb20vcGNhc3QvZW5kUG9pbnRzJztcblxuZXhwb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVNb2RlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZU1vZGVNYXBwaW5nIHtcbiAgc3RhdGljIGNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSk6IEJpdHJhdGVNb2RlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlTW9kZSkge1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5Ob3JtYWw6XG4gICAgICAgIHJldHVybiAnTm9ybWFsJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuRm9yY2U6XG4gICAgICAgIHJldHVybiAnRm9yY2UnO1xuICAgICAgY2FzZSBCaXRyYXRlTW9kZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlTW9kZSk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVTdGF0ZSwgQml0cmF0ZVN0YXRlVHlwZX0gZnJvbSAnLi4vYXBpL1NldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlJztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0cmF0ZVN0YXRlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlKTogQml0cmF0ZVN0YXRlVHlwZSB7XG4gICAgc3dpdGNoIChiaXRyYXRlU3RhdGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZVN0YXRlLktlZXA6XG4gICAgICAgIHJldHVybiAnS2VlcCc7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5SZXNldDpcbiAgICAgICAgcmV0dXJuICdSZXNldCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShiaXRyYXRlU3RhdGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBEaXNjb3ZlcnlTZXJ2aWNlIGZyb20gJy4vRGlzY292ZXJ5U2VydmljZSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRpc2NvdmVyeUNhY2hlSW50ZXJ2YWwgPSA2MDAwMDtcblxuaW50ZXJmYWNlIElQZXJVUklFbmRwb2ludCB7IFt4OiBzdHJpbmddOiBQcm9taXNlPEVuZFBvaW50PiB9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeSB7XG4gIHByaXZhdGUgc3RhdGljIF9jYWNoZTogSVBlclVSSUVuZHBvaW50ID0ge307XG5cbiAgc3RhdGljIGFzeW5jIHByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5KCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8RW5kUG9pbnQ+KHJlc29sdmVFbmRQb2ludFByb21pc2UgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdXJpID0gbmV3IGdsb2JhbFNjb3BlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgICByZXR1cm4gRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKVxuICAgICAgICAgIC50aGVuKHJlc29sdmVFbmRQb2ludFByb21pc2UpXG4gICAgICAgICAgLnRoZW4oKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpOiBVUkwpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIHJldHVybiBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzY292ZXJ5U2VydmljZSA9IG5ldyBEaXNjb3ZlcnlTZXJ2aWNlKHVyaSk7XG4gICAgY29uc3QgY2FjaGVkVmFsdWUgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPSBkaXNjb3ZlcnlTZXJ2aWNlLmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50KCk7XG4gICAgY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5fY2FjaGVbdXJsXS50aGVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKERpc2NvdmVyeS5fY2FjaGVbdXJsXSA9PT0gY2FjaGVkVmFsdWUpIHtcbiAgICAgICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgICAgICB9XG4gICAgICB9LCBkaXNjb3ZlcnlDYWNoZUludGVydmFsKTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNhY2hlZFZhbHVlO1xuICB9XG5cbiAgc3RhdGljIGNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaTogVVJMKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAodXJsIGluIERpc2NvdmVyeS5fY2FjaGUpIHtcbiAgICAgIGRlbGV0ZSBEaXNjb3ZlcnkuX2NhY2hlW3VybF07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn1cblxuY29uc3QgaWdub3JlZCA9IERpc2NvdmVyeS5wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uLy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgTWV0cmljc0ZhY3RvcnkgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzRmFjdG9yeSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi4vLi4vbWV0cmljcy9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4vRGlzY292ZXJ5VXJpJztcbmltcG9ydCBFbmRQb2ludCBmcm9tICcuL0VuZFBvaW50JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcblxuY29uc3QgZGVmYXVsdFRpbWVvdXQgPSAyMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY292ZXJ5U2VydmljZSB7XG4gIHByaXZhdGUgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdEaXNjb3ZlcnknKTtcbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIF91cmk6IFVSTDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IFVSTCkge1xuICAgIGlmICghdXJpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB1cmknKTtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKHVyaS50b1N0cmluZygpKTtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gIH1cblxuICBhc3luYyBkaXNjb3Zlck5lYXJieUVuZFBvaW50cyh1cmk6IFVSTCwgdGltZW91dDogbnVtYmVyKTogUHJvbWlzZTxFbmRQb2ludFtdPiB7XG4gICAgaWYgKCF0aW1lb3V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeSByZXF1aXJlcyB0aW1lb3V0Jyk7XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdXJpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgICB9KSxcbiAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpc2NvdmVyeSB0aW1lZCBvdXQgWyR7dXJsfV1gKSksIHRpbWVvdXQpKVxuICAgIF0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBEaXNjb3ZlcnkgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlc3BvbnNlLmJvZHkgPT09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCB3aXRoIG5vIGRhdGEgWyR7dXJsfV1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc1N0cmluZyA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhc1N0cmluZy5zcGxpdCgnLCcpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gbmV3IEVuZFBvaW50KGVuZFBvaW50LCB0aW1lb3V0KSk7XG4gIH1cblxuICBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCh0aW1lb3V0OiBudW1iZXIgPSBkZWZhdWx0VGltZW91dCk6IFByb21pc2U8RW5kUG9pbnQ+IHtcbiAgICBjb25zdCB1cmwgPSBEaXNjb3ZlcnlVcmkuYnVpbGREaXNjb3ZlcnlVcmwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBlbmRQb2ludHMgPSBhd2FpdCB0aGlzLmRpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzKG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKSwgdGltZW91dCk7XG4gICAgbGV0IGZhaWxlZFJlcXVlc3RzID0gMDtcbiAgICBjb25zdCBwcm9wYWdhdGVGYWlsdXJlSWZBbGxSZXF1ZXN0c0ZhaWxlZCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgIGlmIChmYWlsZWRSZXF1ZXN0cyA+PSBlbmRQb2ludHMubGVuZ3RoKSB7XG4gICAgICAgIHJlamVjdChgRGlzY292ZXJ5IG9mIFske2VuZFBvaW50cy5sZW5ndGh9XSBlbmRwb2ludHMgZnJvbSBbJHt1cmx9XSBmYWlsZWQsIHByZXZlbnRpbmcgaXQgZnJvbSBjb21wbGV0aW5nYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgZW5kUG9pbnQgPSBhd2FpdCBQcm9taXNlLnJhY2UoZW5kUG9pbnRzLm1hcChlbmRQb2ludCA9PiBlbmRQb2ludFxuICAgICAgLnBpbmcoKVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignRmFpbGVkIHRvIHBpbmcgZW5kIHBvaW50IFslc10nLCBlbmRQb2ludCwgZSk7XG5cbiAgICAgICAgZmFpbGVkUmVxdWVzdHMrKztcblxuICAgICAgICByZXR1cm4gcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQoKTtcbiAgICAgIH0pXG4gICAgICAudGhlbih0aW1lID0+IHtcbiAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJlZCBlbmQgcG9pbnQgWyVzXSB3aXRoIHRpbWUgWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCksIHRpbWUpO1xuICAgICAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Sb3VuZFRyaXBUaW1lLFxuICAgICAgICAgIHJ1bnRpbWU6IChub3cgLSBTREsucGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICAgICAgdmFsdWU6IHt1aW50NjQ6IHRpbWUgfHwgMH0sXG4gICAgICAgICAgcmVzb3VyY2U6IGVuZFBvaW50LnRvU3RyaW5nKCksXG4gICAgICAgICAga2luZDogJ3BpbmcnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlbmRQb2ludDtcbiAgICAgIH0pKSk7XG5cbiAgICByZXR1cm4gZW5kUG9pbnQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtkZWZhdWx0RGlzY292ZXJ5VXJpfSBmcm9tICcuLi9kZWZhdWx0cyc7XG5pbXBvcnQgUGNhc3RVcmkgZnJvbSAnLi9QY2FzdFVyaSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVVyaSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9kaXNjb3ZlcnlVcmk6IFN1YmplY3Q8c3RyaW5nPiA9IG5ldyBTdWJqZWN0PHN0cmluZz4oZGVmYXVsdERpc2NvdmVyeVVyaSk7XG5cbiAgc3RhdGljIGdldCB1cmkoKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gRGlzY292ZXJ5VXJpLl9kaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgYnVpbGREaXNjb3ZlcnlVcmwodXJpOiBVUkwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJpLnRvU3RyaW5nKCkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd2ZXJzaW9uJywgc2RrVmVyc2lvbik7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2ludGVudGlvbnMnLCBpbnRlbnRpb25zKTtcbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnXycsIGAke0RhdGUubm93KCl9YCk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9IFBjYXN0VXJpLmRpc2NvdmVyeVBhdGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVybC50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Rpc2NvdmVyeVVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmltcG9ydCB7XG4gIElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UsXG4gIElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdFxufSBmcm9tICcuLi9hcGkvU3Vic2NyaWJlJztcbmltcG9ydCB7SVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCwgSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9TZXRSZW1vdGVEZXNjcmlwdGlvbic7XG5pbXBvcnQge0lEZXN0cm95U3RyZWFtUmVxdWVzdCwgSURlc3Ryb3lTdHJlYW1SZXNwb25zZX0gZnJvbSAnLi4vYXBpL0Rlc3Ryb3lTdHJlYW0nO1xuaW1wb3J0IHtJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QsIElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9BZGRJY2VDYW5kaWRhdGVzJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBQYXJhbWV0ZXJzIGZyb20gJy4uLy4uL2Vudmlyb25tZW50L1BhcmFtZXRlcnMnO1xuaW1wb3J0IHtCaXRyYXRlTW9kZSwgQml0cmF0ZVN0YXRlLCBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgQml0cmF0ZU1vZGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZU1vZGVNYXBwaW5nJztcbmltcG9ydCBQY2FzdFVyaSBmcm9tICcuL1BjYXN0VXJpJztcbmltcG9ydCBCaXRyYXRlU3RhdGVNYXBwaW5nIGZyb20gJy4vQml0cmF0ZVN0YXRlTWFwcGluZyc7XG5pbXBvcnQge0JpdHNQZXJTZWNvbmQsIE1pbGxpc2Vjb25kfSBmcm9tICcuLi8uLi91bml0cy9Vbml0cyc7XG5pbXBvcnQge1xuICBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSxcbiAgSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0LFxuICBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QsXG4gIFB1Ymxpc2hTdGF0dXNcbn0gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5jb25zdCBhcGlWZXJzaW9uID0gNztcblxuY2xhc3MgRmV0Y2hUaW1lb3V0RXJyb3IgZXh0ZW5kcyBFcnJvciB7fVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVTdGF0dXMgPSAnb2snIHwgJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBSZW1vdmVUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCB0eXBlIERlc3Ryb3lTdHJlYW1TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IGludGVyZmFjZSBJU3RyZWFtIHtcbiAgc3RyZWFtSWQ6IHN0cmluZztcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIHRlbmFuY3k6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc6IE1pbGxpc2Vjb25kO1xuICBydGNDb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbjtcbiAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG4gIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duOyAvLyBJbnRlbnRpb25hbGx5IG9wZW46IHRoZSBzZXJ2ZXIgbWF5IGluY2x1ZGUgcHJvcGVydGllcyAoZS5nLiBkcm1Db25maWd1cmF0aW9uKSBub3QgZGVjbGFyZWQgaW4gdGhpcyBpbnRlcmZhY2UgdGhhdCBjYWxsZXJzIHJlbHkgb25cbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogJ25vLXN0cmVhbScgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ2dlby1yZXN0cmljdGVkJyB8ICdnZW8tYmxvY2tlZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnIHwgJ2ZhaWxlZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayB7XG4gIChyZXF1ZXN0OiBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCB8IElTdWJzY3JpYmVXaXRob3V0T2ZmZXJSZXF1ZXN0KTogUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayB7XG4gIChyZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCB0eXBlIFN1YnNjcmliZU9wdGlvbnMgPSB7XG4gIG9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPzogSVN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaztcbiAgb25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPzogSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s7XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ29rJztcbiAgc3RyZWFtOiBJU3RyZWFtO1xuICBsYWc/OiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtcbiAgc3RhdHVzOiAnbm90LWZvdW5kJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZm9yYmlkZGVuLXRhZycgfCAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufTtcblxuaW50ZXJmYWNlIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXM7XG4gIHNlc3Npb25EZXNjcmlwdGlvbj86IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG59XG5cbmludGVyZmFjZSBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cztcbiAgb3B0aW9ucz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cztcbn1cblxuaW50ZXJmYWNlIElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0IHtcbiAgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRQb2ludCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdFbmRQb2ludCcpO1xuICBwcml2YXRlIHJlYWRvbmx5IF91cmk6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZW91dER1cmF0aW9uOiBNaWxsaXNlY29uZDtcbiAgcHJpdmF0ZSBfcm91bmRUcmlwVGltZTogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcih1cmk6IHN0cmluZywgdGltZW91dDogTWlsbGlzZWNvbmQpIHtcbiAgICB0aGlzLl91cmkgPSB1cmk7XG4gICAgdGhpcy5fdGltZW91dER1cmF0aW9uID0gdGltZW91dDtcblxuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbmQgcG9pbnQgcmVxdWlyZXMgYSB0aW1lb3V0YCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCByb3VuZFRyaXBUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kVHJpcFRpbWU7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYEVuZFBvaW50W3VyaT0ke3RoaXMuX3VyaX1dYDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwaW5nKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFBpbmdVcmwoKTtcbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgfTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZmV0Y2hXaXRoVGltZW91dCh1cmwsIHJlcXVlc3RPcHRpb25zLCB0aGlzLl90aW1lb3V0RHVyYXRpb24pXG4gICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBGZXRjaFRpbWVvdXRFcnJvcikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUGluZyB0aW1lZCBvdXQgWyR7dXJsfV1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgZmFpbGVkIFske3VybH1dIFske3Jlc3BvbnNlLnN0YXR1c31dYCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcm91bmRUcmlwVGltZSA9IERhdGUubm93KCkgLSBzdGFydDtcblxuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHN1YnNjcmliZSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQgfCBudWxsLCBmYWlsdXJlQ291bnQ6IG51bWJlciwgb3B0aW9uczogU3Vic2NyaWJlT3B0aW9ucyA9IHt9KTogUHJvbWlzZTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdGVuYW5jeSA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odG9rZW4pLnRlbmFuY3k7XG5cbiAgICBpZiAoIXRlbmFuY3kpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiAndW5hdXRob3JpemVkJ307XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbdGVuYW5jeSwgJ3N0cmVhbScsICdzdWJzY3JpYmUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGxldCByZXF1ZXN0Qm9keTogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdDtcblxuICAgIGlmIChmYWlsdXJlQ291bnQgPT09IDAgJiYgbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdEJvZHkgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge2FwaVZlcnNpb259XG4gICAgICB9O1xuICAgIH1cblxuICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s/LihyZXF1ZXN0Qm9keSk7XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkocmVxdWVzdEJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdzdWJzY3JpYmUnKTtcbiAgICBjb25zdCBqc29uUmVzcG9uc2VCb2R5ID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2U+KGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLmhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChqc29uUmVzcG9uc2VCb2R5Py5zdHJlYW1SZXNwb25zZUNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3RhdHVzOiBTdWJzY3JpYmVTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgaWYgKCFqc29uUmVzcG9uc2VCb2R5KSB7XG4gICAgICBjb25zdCByZXNwb25zZTogSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQgPSB7c3RhdHVzOiAnZmFpbGVkJ307XG5cbiAgICAgIGF3YWl0IG9wdGlvbnMub25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrPy4ocmVzcG9uc2UpO1xuXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlID0gdGhpcy5ub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5LCBqc29uUmVzcG9uc2VCb2R5KTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHN1YnNjcmliZSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzdWJzY3JpYmVSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHN1YnNjcmliZVJlc3BvbnNlKTtcblxuICAgIHJldHVybiBzdWJzY3JpYmVSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwdWJsaXNoKG5hbWU6IHN0cmluZywgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIpOiBQcm9taXNlPElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB8IElQdWJsaXNoRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAncHVibGlzaCddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgY2xpZW50VmVyc2lvbiA9IFZlcnNpb25NYW5hZ2VyLnNka1ZlcnNpb247XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBjb25zdCBib2R5V2l0aE9mZmVyOiBJUHVibGlzaFdpdGhPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICAgICAgdHlwZTogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgICAgIHNkcDogbG9jYWxTZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aE9mZmVyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGJvZHlXaXRob3V0T2ZmZXI6IElQdWJsaXNoV2l0aG91dE9mZmVyUmVxdWVzdCA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBuYW1lLFxuICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgc3RyZWFtSWQ6ICcnLFxuICAgICAgICAgIGFwaVZlcnNpb25cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHlXaXRob3V0T2ZmZXIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAncHVibGlzaCcpO1xuICAgIGNvbnN0IGpzb25SZXNwb25zZUJvZHkgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2U+KGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLmhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChqc29uUmVzcG9uc2VCb2R5Py5zdHJlYW1SZXNwb25zZUNvbnRleHQpO1xuXG4gICAgY29uc3Qgc3RhdHVzOiBQdWJsaXNoU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgaWYgKCFqc29uUmVzcG9uc2VCb2R5KSB7XG4gICAgICByZXR1cm4ge3N0YXR1czogJ2ZhaWxlZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2UgPSB0aGlzLm5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5LCBqc29uUmVzcG9uc2VCb2R5KTtcblxuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygnR290IHB1Ymxpc2ggcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgcHVibGlzaFJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oc3RyZWFtOiBJU3RyZWFtLCBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzY3JpcHRpb24nLCAncmVtb3RlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHNlc3Npb25EZXNjcmlwdGlvbjoge1xuICAgICAgICB0eXBlOiBzZXNzaW9uRGVzY3JpcHRpb24udHlwZSxcbiAgICAgICAgc2RwOiBzZXNzaW9uRGVzY3JpcHRpb24uc2RwXG4gICAgICB9XG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnc2V0IHJlbW90ZSBkZXNjcmlwdGlvbicpO1xuICAgIGNvbnN0IHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbGltaXRCaXRyYXRlKFxuICAgIHN0cmVhbTogSVN0cmVhbSxcbiAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHM6IG51bWJlcixcbiAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBCaXRzUGVyU2Vjb25kLFxuICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlLFxuICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZSxcbiAgKTogUHJvbWlzZTxJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2JpdHJhdGUnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGJvZHk6IElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBlbGFwc2VkSW5NaWxsaXNlY29uZHMsXG4gICAgICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kLFxuICAgICAgYml0cmF0ZVN0YXRlOiBCaXRyYXRlU3RhdGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlU3RhdGVUb0JpdHJhdGVTdGF0ZVR5cGUoYml0cmF0ZVN0YXRlKSxcbiAgICAgIGJpdHJhdGVNb2RlOiBCaXRyYXRlTW9kZU1hcHBpbmcuY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUoYml0cmF0ZU1vZGUpXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnc2V0IGxpbWl0IGJpdHJhdGUnKTtcbiAgICBjb25zdCBzdGF0dXM6IFNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3Qgc2V0IGxpbWl0IGJpdHJhdGUgcmVzcG9uc2UgWyVzXSBpbiBbJXNdIG1zJywgc3RhdHVzLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiB7c3RhdHVzfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRJY2VDYW5kaWRhdGVzKHN0cmVhbTogSVN0cmVhbSwgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10sIGRpc2NvdmVyeUNvbXBsZXRlZDogYm9vbGVhbiwgb3B0aW9uczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2ljZScsICdjYW5kaWRhdGVzJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJQWRkSWNlQ2FuZGlkYXRlc1JlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgY2FuZGlkYXRlcyxcbiAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCxcbiAgICAgIG9wdGlvbnNcbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9O1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdhZGQgaWNlIGNhbmRpZGF0ZXMnKTtcbiAgICBjb25zdCBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMgPSB0aGlzLm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIHJldHVybiB7c3RhdHVzfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IGFkZCBJQ0UgY2FuZGlkYXRlcyByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXN0cm95U3RyZWFtKHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgIGNhY2hlOiAnbm8tY2FjaGUnXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ2Rlc3Ryb3kgc3RyZWFtJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBEZXN0cm95U3RyZWFtU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1SZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbShodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBkZXN0cm95IHN0cmVhbSByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBkZXN0cm95U3RyZWFtUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW1SZXNwb25zZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZXN0cm95U3RyZWFtT25Vbm1vdW50KHN0cmVhbTogSVN0cmVhbSwgcmVhc29uOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZW5kQmVhY29uID0gR2xvYmFsU2NvcGUudmFsdWUuc2VuZEJlYWNvbjtcblxuICAgIGlmICghc2VuZEJlYWNvbikge1xuICAgICAgdGhpcy5kZXN0cm95U3RyZWFtKHN0cmVhbSwgcmVhc29uKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBkZXN0cm95IHN0cmVhbSBvbiB1bm1vdW50JywgZXJyKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdkZXN0cm95J10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJRGVzdHJveVN0cmVhbVJlcXVlc3QgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgcmVhc29uLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KGJvZHkpKTtcblxuICAgIHNlbmRCZWFjb24odXJsLCBmb3JtRGF0YSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoV2l0aFRpbWVvdXQodXJsOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCwgdGltZW91dER1cmF0aW9uOiBNaWxsaXNlY29uZCk6IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICBjb25zdCBjb250cm9sbGVyID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkFib3J0Q29udHJvbGxlcigpO1xuICAgIGxldCB0aW1lb3V0OiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godXJsLCB7XG4gICAgICAgICAgLi4ucmVxdWVzdE9wdGlvbnMsXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFByb21pc2U8UmVzcG9uc2U+KChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICB0aW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmFib3J0KCk7XG5cbiAgICAgICAgICAgIHJlamVjdChuZXcgRmV0Y2hUaW1lb3V0RXJyb3IoYFRpbWVkIG91dCBbJHt1cmx9XWApKTtcbiAgICAgICAgICB9LCB0aW1lb3V0RHVyYXRpb24pO1xuICAgICAgICB9KVxuICAgICAgXSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aW1lb3V0KSB7XG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCwgb3BlcmF0aW9uOiBzdHJpbmcpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZldGNoV2l0aFRpbWVvdXQodXJsLCByZXF1ZXN0T3B0aW9ucywgdGhpcy5fdGltZW91dER1cmF0aW9uKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihgRmFpbGVkIHRvICR7b3BlcmF0aW9ufSBbJHtyZXF1ZXN0T3B0aW9ucy5tZXRob2QgfHwgJ0dFVCd9XSBbJHt1cmx9XWAsIGVyciBhcyBFcnJvcik7XG5cbiAgICAgIHJldHVybiB7c3RhdHVzOiBlcnIgaW5zdGFuY2VvZiBGZXRjaFRpbWVvdXRFcnJvciA/IDQwOCA6IDUwMH0gYXMgUmVzcG9uc2U7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFVybChwYXRoOiBzdHJpbmdbXSk6IFVSTCB7XG4gICAgcmV0dXJuIFBjYXN0VXJpLmJ1aWxkUm91dGVVcmwodGhpcy5fdXJpLCBwYXRoKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRQaW5nVXJsKCk6IHN0cmluZyB7XG4gICAgY29uc3QgdXJpID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh0aGlzLl91cmkpO1xuICAgIGNvbnN0IHNka1ZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuICAgIGNvbnN0IGludGVudGlvbnMgPSBQYXJhbWV0ZXJzLmRpc2NvdmVyeVBhcmFtZXRlcnMuaW50ZW50aW9ucztcblxuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCd0eXBlJywgJ2h0dHAnKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgcmV0dXJuIHVyaS50b1N0cmluZygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwYXJzZUpzb25Cb2R5PFQ+KHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gRXhwZWN0ZWQgZm9yIHJlc3BvbnNlcyB3aXRob3V0IGEgSlNPTiBib2R5ICh0aW1lb3V0LCBlbXB0eSBlcnJvciByZXNwb25zZXMpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0KGNvbnRleHQ/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQge1xuICAgIGlmICghY29udGV4dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdzdHJlYW0gcmVzcG9uc2UgY29udGV4dCBbJWpdJywgY29udGV4dCk7XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHVibGlzaFN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwMjpcbiAgICAgICAgcmV0dXJuICdnZW8tcmVzdHJpY3RlZCc7XG4gICAgICBjYXNlIDQwMzpcbiAgICAgICAgcmV0dXJuICdnZW8tYmxvY2tlZCc7XG4gICAgICBjYXNlIDQwNjpcbiAgICAgICAgcmV0dXJuICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNDA5OlxuICAgICAgICByZXR1cm4gJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJztcbiAgICAgIGNhc2UgNDE1OlxuICAgICAgICByZXR1cm4gJ2ZvcmJpZGRlbi10YWcnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTdWJzY3JpYmVTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBEZXN0cm95U3RyZWFtU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlKHRlbmFuY3k6IHN0cmluZywgZGF0YTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZSk6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgICBjb25zdCB7XG4gICAgICBzdGF0dXMsXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIHNoYXJlZFNlY3JldCxcbiAgICAgIGxhZyxcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIC8vIERlc3RydWN0dXJlZCB0aGUgdGVsZW1ldHJ5IGJhZ2dhZ2UgXCJzdHJlYW1SZXNwb25zZUNvbnRleHRcIiB0byBleGNsdWRlIGl0IGZyb20gb3RoZXJQcm9wZXJ0aWVzXG4gICAgICAvLyBpdCBpcyAgaGFuZGxlZCBzZXBhcmF0ZWx5IGJ5IGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCBhbmQgbXVzdCBuZXZlciBiZSBmb3J3YXJkZWQgdG8gY2FsbGVycy5cbiAgICAgIHN0cmVhbVJlc3BvbnNlQ29udGV4dDogaWdub3JlZFN0cmVhbVJlc3BvbnNlQ29udGV4dCxcbiAgICAgIC4uLm90aGVyUHJvcGVydGllc1xuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IHN1YnNjcmliZVJlc3BvbnNlOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIC4uLm90aGVyUHJvcGVydGllcywgLy8gU3ByZWFkIGZpcnN0IHNvIHRoYXQgaXQgY2Fubm90IG92ZXJ3cml0ZSB0aGUgcHJvcGVydGllcyBub3JtYWxpemVkIGJlbG93LlxuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXRcbiAgICAgIH0sXG4gICAgICBsYWdcbiAgICB9O1xuXG4gICAgaWYgKHJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHN1YnNjcmliZVJlc3BvbnNlLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlKTogSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0IHtcbiAgICBjb25zdCBwdWJsaXNoUmVzcG9uc2U6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1czogZGF0YS5zdGF0dXMsXG4gICAgICBzdHJlYW06IHtcbiAgICAgICAgdGVuYW5jeSxcbiAgICAgICAgc3RyZWFtSWQ6IGRhdGEuc3RyZWFtSWQsXG4gICAgICAgIHNoYXJlZFNlY3JldDogZGF0YS5zaGFyZWRTZWNyZXRcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEucnRjQ29uZmlndXJhdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnJ0Y0NvbmZpZ3VyYXRpb24gPSB0aGlzLmNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGlmIChkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgJiYgZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLnNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgcHVibGlzaFJlc3BvbnNlLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHB1Ymxpc2hSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgY29udmVydElSdGNDb25maWd1cmF0aW9uVG9SVENDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uID0ge2ljZVNlcnZlcnM6IFtdfTtcblxuICAgIGlmIChjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kgPSBjb25maWd1cmF0aW9uLmJ1bmRsZVBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemUgPT09ICdudW1iZXInKSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID0gY29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzKSB7XG4gICAgICBjb25zdCBpY2VTZXJ2ZXJzOiBSVENJY2VTZXJ2ZXJbXSA9IFtdO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpY2VTZXJ2ZXJzLnB1c2goe1xuICAgICAgICAgIHVybHM6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzLFxuICAgICAgICAgIHVzZXJuYW1lOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXNlcm5hbWUsXG4gICAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSA9IGNvbmZpZ3VyYXRpb24uaWNlVHJhbnNwb3J0UG9saWN5O1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeSA9IGNvbmZpZ3VyYXRpb24ucnRjcE11eFBvbGljeTtcbiAgICB9XG5cbiAgICByZXR1cm4gcnRjQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhyZXNwb25zZSk7XG4gICAgY29uc3Qgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0ID0ge3N0YXR1c307XG5cbiAgICBpZiAoZGF0YSAmJiBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24gPSBkYXRhLnNlc3Npb25EZXNjcmlwdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U6IElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0ID0ge1xuICAgICAgc3RhdHVzLFxuICAgICAgb3B0aW9uczogW11cbiAgICB9O1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGlmIChkYXRhLm9wdGlvbnMpIHtcbiAgICAgICAgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLm9wdGlvbnMgPSBkYXRhLm9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbShyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPElEZXN0cm95U3RyZWFtUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlPihyZXNwb25zZSk7XG4gICAgY29uc3Qgc3RhdHVzID0gZGF0YSA/IGRhdGEuc3RhdHVzIDogdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzKHJlc3BvbnNlKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtOiBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgcmV0dXJuIGRlc3Ryb3lTdHJlYW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmNvbnN0IGRpc2NvdmVyeVBhdGggPSAnL3BjYXN0L2VuZFBvaW50cyc7XG5cbi8qKiBCdWlsZHMgcGNhc3Qgcm91dGUgVVJMcyBmcm9tIGEgZGlzY292ZXJ5IG9yIGVuZCBwb2ludCBVUkkuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQY2FzdFVyaSB7XG4gIC8qKiBUaGUgcGF0aCB0aGUgcGxhdGZvcm0gc2VydmVzIGRpc2NvdmVyeSBmcm9tLCBhbmQgdGhlIHBhdGggYSBiYXJlIGRpc2NvdmVyeSBob3N0IGlzIHRha2VuIHRvIG1lYW4uICovXG4gIHN0YXRpYyBnZXQgZGlzY292ZXJ5UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBkaXNjb3ZlcnlQYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2VzIGEgZGlzY292ZXJ5IFVSSSBhcyBhbiBhcHBsaWNhdGlvbiBvciBhIHRva2VuIGdpdmVzIGl0LiBBIGJhcmUgaG9zdFxuICAgKiBtZWFucyB0aGUgZGlzY292ZXJ5IHBhdGgsIGFzIGBEaXNjb3ZlcnlVcmlgIHJlYWRzIGl0LiBRdWVyeSBhbmQgZnJhZ21lbnRcbiAgICogYXJlIGRyb3BwZWQ6IHRoZXkgYmVsb25nIHRvIHRoZSBkaXNjb3ZlcnkgcmVxdWVzdCwgbm90IHRvIGEgc3RyZWFtIHJvdXRlLlxuICAgKi9cbiAgc3RhdGljIG5vcm1hbGl6ZURpc2NvdmVyeVVyaSh1cmk6IHN0cmluZyB8IFVSTCk6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTCh1cmkudG9TdHJpbmcoKSk7XG5cbiAgICBpZiAodXJsLnBhdGhuYW1lID09PSAnJyB8fCB1cmwucGF0aG5hbWUgPT09ICcvJykge1xuICAgICAgdXJsLnBhdGhuYW1lID0gZGlzY292ZXJ5UGF0aDtcbiAgICB9XG5cbiAgICB1cmwuc2VhcmNoID0gJyc7XG4gICAgdXJsLmhhc2ggPSAnJztcblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGRzIGEgcm91dGUgVVJMIGJlc2lkZSB0aGUgYmFzZSBVUkkncyBsYXN0IHBhdGggc2VnbWVudC4gVGhlIGJhc2VcbiAgICogYGh0dHBzOi8vaG9zdC9wY2FzdC9lbmRQb2ludHNgIGFuZCB0aGUgcGF0aCBgW3RlbmFuY3ksICdzdHJlYW0nLFxuICAgKiAnc3Vic2NyaWJlJ11gIGdpdmUgYGh0dHBzOi8vaG9zdC9wY2FzdC88dGVuYW5jeT4vc3RyZWFtL3N1YnNjcmliZWAuIFRoZVxuICAgKiBiYXNlIGlzIHVzZWQgYXMgZ2l2ZW46IGFuIGVuZCBwb2ludCBVUkkgZnJvbSBkaXNjb3ZlcnkgaXMgYWxyZWFkeSB0aGVcbiAgICogcm91dGUgcm9vdC5cbiAgICovXG4gIHN0YXRpYyBidWlsZFJvdXRlVXJsKGJhc2VVcmk6IHN0cmluZyB8IFVSTCwgcGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwoYmFzZVVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZWdtZW50cyA9IHVybC5wYXRobmFtZS5zcGxpdCgnLycpO1xuXG4gICAgc2VnbWVudHMubGVuZ3RoID0gc2VnbWVudHMubGVuZ3RoIC0gMTtcbiAgICB1cmwucGF0aG5hbWUgPSBzZWdtZW50cy5jb25jYXQoLi4ucGF0aCkuam9pbignLycpO1xuXG4gICAgcmV0dXJuIHVybDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQY2FzdFVyaSBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRXhwb25lbnRpYWxCYWNrb2ZmIGZyb20gJy4uLy4uL3RpbWUvRXhwb25lbnRpYWxCYWNrb2ZmJztcbmltcG9ydCBFbmRQb2ludCwge0lTdHJlYW19IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4uLy4uL3J0Yy9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWN9IGZyb20gJy4uLy4uL3J0Yy9SdGNQdWJsaXNoTW9uaXRvcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTZXNzaW9uVGVsZW1ldHJ5IGZyb20gJy4uLy4uL3ZpZGVvL1Nlc3Npb25UZWxlbWV0cnknO1xuaW1wb3J0IEVkZ2VBdXRoUGFyc2VyIGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VkZ2VBdXRoUGFyc2VyJztcblxuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBUb2tlbkNvbnRleHQgZnJvbSAnLi4vY29udGV4dC9Ub2tlbkNvbnRleHQnO1xuaW1wb3J0IFB1Ymxpc2hlckNvbnRleHQgZnJvbSAnLi9QdWJsaXNoZXJDb250ZXh0JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvbkNvbnRleHQsIHtQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zfSBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgU3RhdGVDb250ZXh0IGZyb20gJy4uL2NvbnRleHQvU3RhdGVDb250ZXh0JztcbmltcG9ydCBEaXNjb3ZlcnkgZnJvbSAnLi4vZGlzY292ZXJ5L0Rpc2NvdmVyeSc7XG5pbXBvcnQgRGlzY292ZXJ5VXJpIGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnlVcmknO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IFJlYWxUaW1lUHVibGlzaGVyIGZyb20gJy4vUmVhbFRpbWVQdWJsaXNoZXInO1xuXG5jb25zdCBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24gPSAnY2xpZW50OnRlcm1pbmF0aW9uJztcbmNvbnN0IGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMzAwMDtcbmNvbnN0IHN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDE1MDAwO1xuY29uc3Qgb25lSG91ckluTWlsbGlzZWNvbmRzID0gMzYwMCAqIDEwMDA7XG5jb25zdCBtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAyICogb25lSG91ckluTWlsbGlzZWNvbmRzO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXIgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQdWJsaXNoZXInKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdG9rZW5Db250ZXh0OiBUb2tlbkNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdGF0ZUNvbnRleHQ6IFN0YXRlQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlclN0YXJ0VGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVRva2VuOiBSZWFkT25seVN1YmplY3Q8RW5jb2RlZEVkZ2VUb2tlbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UGVlckNvbm5lY3Rpb246IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdGF0ZTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbkV4cGlyaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5QXV0aG9yaXplZDogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU9ubGluZTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUxvYWRpbmc6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlQdWJsaXNoaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhbmRieTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0b3BwZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlGYWlsdXJlQ291bnQ6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUVuZFBvaW50OiBSZWFkT25seVN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdHJlYW06IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UnRjU3RhdGlzdGljczogUmVhZE9ubHlTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seU1lZGlhU3RyZWFtOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcblxuICBwcml2YXRlIF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25UZWxlbWV0cnk6IFNlc3Npb25UZWxlbWV0cnk7XG5cbiAgY29uc3RydWN0b3IobWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtLCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiwgbmFtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnM6IFBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMgPSB7Zm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogU0RLLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnR9O1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0ID0gbmV3IFRva2VuQ29udGV4dCh0b2tlbik7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IG5ldyBQdWJsaXNoZXJDb250ZXh0KG5hbWUpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IG5ldyBQZWVyQ29ubmVjdGlvbkNvbnRleHQocGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyk7XG4gICAgdGhpcy5fc3RhdGVDb250ZXh0ID0gbmV3IFN0YXRlQ29udGV4dCgpO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLl9wdWJsaXNoZXJTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgIHRoaXMuX3JlYWRPbmx5VG9rZW4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuKTtcbiAgICB0aGlzLl9yZWFkT25seVBlZXJDb25uZWN0aW9uID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPih0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24pO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhdGUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbkV4cGlyaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXV0aG9yaXplZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlPbmxpbmUgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lKTtcbiAgICB0aGlzLl9yZWFkT25seUxvYWRpbmcgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RhbmRieSA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5KTtcbiAgICB0aGlzLl9yZWFkT25seVN0b3BwZWQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZCk7XG4gICAgdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PG51bWJlcj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RW5kUG9pbnQgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludCk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbSk7XG4gICAgdGhpcy5fcmVhZE9ubHlSdGNTdGF0aXN0aWNzID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MpO1xuICAgIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW0gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtKTtcblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSA9IG1lZGlhU3RyZWFtO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuICAgIHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkgPSBuZXcgU2Vzc2lvblRlbGVtZXRyeShTREsucGFnZUxvYWRUaW1lLCB0aGlzLl9tZXRyaWNzU2VydmljZSk7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQodGhpcy5fc2Vzc2lvblRlbGVtZXRyeSk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUuc3Vic2NyaWJlKHN0YXRlID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KSB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc3RhdGUgIT09IFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmcpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICAgICAgfSwgZmFpbHVyZUNvdW50Q2xlYW5VcEludGVydmFsSW5NaWxsaXNlY29uZHMpO1xuICAgICAgfSkpO1xuXG4gICAgY29uc3QgZGVzdHJveVN0cmVhbU9uVW5tb3VudCA9ICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAmJiB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW1PblVubW91bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUsICdjbGllbnQ6dGVybWluYXRpb24tb24td2luZG93LXVubG9hZCcpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBHbG9iYWxTY29wZS52YWx1ZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIoJ2JlZm9yZXVubG9hZCcsIGRlc3Ryb3lTdHJlYW1PblVubW91bnQpO1xuICAgIH0pKTtcblxuICAgIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIGdldCB0b2tlbigpOiBFbmNvZGVkRWRnZVRva2VuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlO1xuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5kaXNwb3NlKCk7XG5cbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUgPSB0b2tlbjtcbiAgICB0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgZWRnZVRva2VuID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWUpO1xuICAgIGNvbnN0IGRpc2NvdmVyeVVyaSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICBTREsudGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5IHx8IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSBkaXNjb3ZlcnlVcmk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IE1ldHJpY3NGYWN0b3J5LmdldE1ldHJpY3NTZXJ2aWNlKGRpc2NvdmVyeVVyaSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgcGVlckNvbm5lY3Rpb24oKTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBSZWFkT25seVN1YmplY3Q8UHVibGlzaGVyU3RhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGF0ZTtcbiAgfVxuXG4gIGdldCB0b2tlbkV4cGlyaW5nKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5VG9rZW5FeHBpcmluZztcbiAgfVxuXG4gIGdldCBhdXRob3JpemVkKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5QXV0aG9yaXplZDtcbiAgfVxuXG4gIGdldCBvbmxpbmUoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlPbmxpbmU7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUxvYWRpbmc7XG4gIH1cblxuICBnZXQgcHVibGlzaGluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVB1Ymxpc2hpbmc7XG4gIH1cblxuICBnZXQgc3RhbmRieSgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0YW5kYnk7XG4gIH1cblxuICBnZXQgc3RvcHBlZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVN0b3BwZWQ7XG4gIH1cblxuICBnZXQgZmFpbHVyZUNvdW50KCk6IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlGYWlsdXJlQ291bnQ7XG4gIH1cblxuICBnZXQgZW5kUG9pbnQoKTogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUVuZFBvaW50O1xuICB9XG5cbiAgZ2V0IHN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdHJlYW07XG4gIH1cblxuICBnZXQgc3RyZWFtSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZDtcbiAgfVxuXG4gIGdldCBydGNTdGF0aXN0aWNzKCk6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcztcbiAgfVxuXG4gIGdldCBtZWRpYVN0cmVhbSgpOiBSZWFkT25seVN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5TWVkaWFTdHJlYW07XG4gIH1cblxuICBhc3luYyBzdG9wKHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSkge1xuICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG5cbiAgICAgICAgcmVzb2x2ZSgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcuc3Vic2NyaWJlKGlzU3RhcnRpbmcgPT4ge1xuICAgICAgICBpZiAoIWlzU3RhcnRpbmcpIHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NTdG9wKHJlYXNvbik7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NTdG9wKHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKHJlYXNvbik7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUuY2xvc2UoKTtcbiAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSA9IG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ7XG4gIH1cblxuICBhc3luYyBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnN0b3AoJ2NsaWVudDpjaGFubmVsLWRpc3Bvc2UnKS50aGVuKCgpID0+IHtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0VXJpKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS51cmk7XG5cbiAgICBpZiAodXJsKSB7XG4gICAgICByZXR1cm4gdXJsO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgZGlzY292ZXIgVVJJIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuICB9XG5cbiAgYXN5bmMgc3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NoYW5uZWwgd2FzIGFscmVhZHkgZGlzcG9zZWQnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgYWxyZWFkeSBzdGFydGluZywgc2tpcHBpbmcgc3RhcnQnKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIHJldHVybiB0aGlzLnByb2Nlc3NTdGFydCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzU3RhcnQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OnN0YXJ0Jyk7XG5cbiAgICBjb25zdCB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbiA9IHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgICBjb25zdCBsaXN0ZW5PblN0cmVhbVNldHVwID0gdGhpcy5fc2Vzc2lvblRlbGVtZXRyeS5saXN0ZW5PblN0cmVhbVNldHVwKCk7XG5cbiAgICBpZiAoIUVkZ2VBdXRoUGFyc2VyLmlzRW5jb2RlZEVkZ2VUb2tlblZhbGlkKHRva2VuKSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQudmFsdWUgPSBmYWxzZTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgY29uc3QgdXJpID0gdGhpcy5nZXRVcmkodG9rZW4pO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmIChzdGF0ZSA9PT0gUHVibGlzaGVyU3RhdGUuRXJyb3IgfHwgc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmcpIHtcbiAgICAgICAgICBEaXNjb3ZlcnkuY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQodXJpKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIC8vIE5lZWQgdG8gc2V0IGlzU3RhcnRpbmcgdG8gZmFsc2UgYW5kIGNhbGwgaGFuZGxlU3RyZWFtRmFpbHVyZSBpZiBzdHJlYW0gbW9uaXRvcnMgZm91bmQgYW4gaXNzdWVcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgIHJldHVybiByZXNvbHZlKHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdHJlYW1QdWJsaXNoZXIgPSBuZXcgUmVhbFRpbWVQdWJsaXNoZXIodGhpcy5fcHVibGlzaGVyQ29udGV4dCwgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHN0cmVhbVB1Ymxpc2hlci5zdGFydChcbiAgICAgIHVyaSxcbiAgICAgIHRva2VuLFxuICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBsaXN0ZW5PblN0cmVhbVNldHVwLmZhaWwoKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQub25saW5lLnZhbHVlID0gZmFsc2U7XG5cbiAgICAgICAgdGhpcy5jbGVhblVwUmVzb3VyY2VzKCdjbGllbnQ6Y2xlYW51cC1hZnRlci1mYWlsZWQtc2V0dXAnKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjtcblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBwdWJsaXNoaW5nJywgZSk7XG4gICAgICB9KVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID09PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nIHx8ICFTREsuYXV0b21hdGljUmV0cnlPbkZhaWx1cmUpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuaGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlJywgZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgdGhpcy5nZXRSZXRyeUludGVydmFsKCkpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IHtcbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRNZWRpYVN0cmVhbShtZWRpYVN0cmVhbTogTWVkaWFTdHJlYW0pIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUpIHtcbiAgICAgIG1lZGlhU3RyZWFtLmdldFRyYWNrcygpLmZvckVhY2gobWVkaWFUcmFjayA9PiB7XG4gICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZT8uZ2V0U2VuZGVycygpLmZvckVhY2goc2VuZGVyID0+IHtcbiAgICAgICAgICBpZiAobWVkaWFUcmFjay5raW5kID09PSBzZW5kZXI/LnRyYWNrPy5raW5kICYmIG1lZGlhVHJhY2suaWQgIT09IHNlbmRlci50cmFjay5pZCkge1xuICAgICAgICAgICAgc2VuZGVyLnJlcGxhY2VUcmFjayhtZWRpYVRyYWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXRyeUludGVydmFsKCk6IG51bWJlciB7XG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICAgIHJldHVybiBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHM7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkdlb0Jsb2NrZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0b3BwZWQ6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlVuc3VwcG9ydGVkRmVhdHVyZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ2xpZW50U3RhcnRFcnJvcjpcbiAgICAgICAgLy8gRmlyc3QgYW5kIHNlY29uZCBhdHRlbXB0IGZhc3QsIGFmdGVyIHRoYXQgZXhwb25lbnRpYWwgd2l0aCBiYWNrb2ZmIGludGVydmFsXG4gICAgICAgIHJldHVybiB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYuZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlU3RyZWFtRmFpbHVyZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsZXQgcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCA9IDA7XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpIHtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuT2ZmbGluZTpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIGlmICghdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gRGF0ZS5ub3coKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSBEYXRlLm5vdygpIC0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzO1xuXG4gICAgICAgIGlmIChtYXhSZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsSW5NaWxsaXNlY29uZHMgPD0gcmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbCkge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgc3RvcHBlZCB3aXRoIHN0YXRlIFslc10gWyVzXSBhZnRlciBleGNlZWRpbmcgdGltZW91dCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdSZXRyeSBzdGFydCB3aXRoIGluaXRpYWwgc3RhdGUgWyVzXSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSwgUHVibGlzaGVyU3RhdGVbdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZV0pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgdW5hdXRob3JpemVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyByZXN0cmljdGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGdlbyBibG9ja2VkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4gUGxlYXNlIHByb3ZpZGUgYSBuZXcgdG9rZW4gYW5kIGludm9rZSBzdGFydCgpJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBwdWJsaXNoaW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGluaXRpYWxpemluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gdW5zdXBwb3J0ZWQgZmVhdHVyZSwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkIGR1ZSB0byBjaGFubmVsIG5vdCBmb3VuZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY29uZmlndXJhdGlvbiBlcnJvciwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuJyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5VcFJlc291cmNlcyhyZWFzb246IHN0cmluZyA9IGRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbik6IHZvaWQge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RvcHBlZC52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFuZGJ5LnZhbHVlID0gZmFsc2U7XG5cbiAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUuZGVzdHJveVN0cmVhbSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSwgcmVhc29uKVxuICAgICAgICAudGhlbigoe3N0YXR1c30pID0+IHtcbiAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gd2l0aCByZWFzb24gWyVzXScsIHRoaXMuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBEZXN0cm95ZWQgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBkZXN0cm95IHN0cmVhbScsIHRoaXMuc3RyZWFtSWQsIGUpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBFbmRQb2ludCwge1xuICBJU3RyZWFtLFxuICBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzLFxuICBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1xufSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IFN0cmluZ3MgZnJvbSAnLi4vLi4vbGFuZy9TdHJpbmdzJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IHtQdWJsaXNoU3RhdHVzfSBmcm9tICcuLi9hcGkvUHVibGlzaCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlckNvbnRleHQge1xuICBwdWJsaXNoZXJJbml0aWFsaXphdGlvbjogRGF0ZTtcbiAgZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBwdWJsaXNoZXJEaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3Q7XG4gIHN0YXRlOiBTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPjtcbiAgYXV0aG9yaXplZDogU3ViamVjdDxib29sZWFuPjtcbiAgb25saW5lOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBsb2FkaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBwdWJsaXNoaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdGFuZGJ5OiBTdWJqZWN0PGJvb2xlYW4+O1xuICBzdG9wcGVkOiBTdWJqZWN0PGJvb2xlYW4+O1xuICBmYWlsdXJlQ291bnQ6IFN1YmplY3Q8bnVtYmVyPjtcbiAgZW5kUG9pbnQ6IFN1YmplY3Q8RW5kUG9pbnQgfCBudWxsPjtcbiAgc3RyZWFtOiBTdWJqZWN0PElTdHJlYW0gfCBudWxsPjtcbiAgcnRjU3RhdGlzdGljczogU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0OiBudW1iZXI7XG4gIHN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHM6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3Bvc2FibGVzID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gICAgdGhpcy5wdWJsaXNoZXJEaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVySW5pdGlhbGl6YXRpb24gPSBuZXcgRGF0ZSgpO1xuICAgIHRoaXMuc3RhdGUgPSBuZXcgU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4oUHVibGlzaGVyU3RhdGUuSW5pdGlhbGl6aW5nKTtcbiAgICB0aGlzLmF1dGhvcml6ZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLm9ubGluZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMubG9hZGluZyA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnB1Ymxpc2hpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5zdGFuZGJ5ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RvcHBlZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLmZhaWx1cmVDb3VudCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oMCk7XG4gICAgdGhpcy5lbmRQb2ludCA9IG5ldyBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5zdHJlYW0gPSBuZXcgU3ViamVjdDxJU3RyZWFtIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5ydGNTdGF0aXN0aWNzID0gbmV3IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSAwO1xuICAgIHRoaXMubmFtZSA9IG5hbWUgJiYgbmFtZS5sZW5ndGggPyBuYW1lIDogdGhpcy5nZW5lcmF0ZVNjcmVlbk5hbWUoKTtcbiAgICB0aGlzLnN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMgPSAwO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5zdHJlYW0udmFsdWU7XG5cbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuICctJztcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyZWFtLnN0cmVhbUlkO1xuICB9XG5cbiAgYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBhcHBseUFkZEljZUNhbmRpZGF0ZXNTdGF0dXMoc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKTogdm9pZCB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgdGhpcy5hcHBseVVuYXV0aG9yaXplZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHRoaXMuYXBwbHlOb3RGb3VuZCgpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRoaXMuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBtYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzOiBQdWJsaXNoU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2dlby1yZXN0cmljdGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkdlb1Jlc3RyaWN0ZWQ7XG4gICAgICBjYXNlICdnZW8tYmxvY2tlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdtaXNzaW5nLWNoYW5uZWwtb3Itcm9vbS1pZCc6XG4gICAgICBjYXNlICdmb3JiaWRkZW4tdGFnJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjtcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG5cbiAgYXBwbHlVbmhhbmRsZWRFcnJvcigpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSsrO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlVbmF1dGhvcml6ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgYXBwbHlOb3RGb3VuZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgdGhpcy5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdGFuZGJ5LnZhbHVlID0gdHJ1ZTtcbiAgICB0aGlzLnN0b3BwZWQudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0cmVhbS52YWx1ZSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlU2NyZWVuTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBTdHJpbmdzLnJhbmRvbSgxMik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gUHVibGlzaGVyU3RhdGUge1xuICBJbml0aWFsaXppbmcgPSAwLFxuICBPZmZsaW5lID0gMSxcbiAgU3RhcnRpbmcgPSAyLFxuICBQdWJsaXNoaW5nID0gMyxcbiAgUmVjb3ZlcmluZyA9IDQsXG4gIFJlY29ubmVjdGluZyA9IDUsXG4gIFN0b3BwZWQgPSA2LFxuICBVbmF1dGhvcml6ZWQgPSA3LFxuICBHZW9SZXN0cmljdGVkID0gOCxcbiAgR2VvQmxvY2tlZCA9IDksXG4gIFVuc3VwcG9ydGVkRmVhdHVyZSA9IDEwLFxuICBOb3RGb3VuZCA9IDExLFxuICBDb25maWd1cmF0aW9uRXJyb3IgPSAxMixcbiAgVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yID0gMTMsXG4gIENvbm5lY3Rpb25FcnJvciA9IDE0LFxuICBDbGllbnRTdGFydEVycm9yID0gMTUsXG4gIEVycm9yID0gMTZcbn1cblxuZXhwb3J0IGRlZmF1bHQgUHVibGlzaGVyU3RhdGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuaW1wb3J0IFB1Ymxpc2hlciBmcm9tICcuL1B1Ymxpc2hlcic7XG5cbnR5cGUgQ3JlYXRlUHVibGlzaGVyT3B0aW9ucyA9IHtcbiAgbWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtO1xuICB0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbjtcbiAgbmFtZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFB1Ymxpc2hlcnMge1xuICBzdGF0aWMgY3JlYXRlUHVibGlzaGVyKG9wdGlvbnM6IENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMpOiBQdWJsaXNoZXIge1xuICAgIGlmICghU0RLLmluaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NESyBpcyBub3QgbG9hZGVkLicpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUHVibGlzaGVyKG9wdGlvbnMubWVkaWFTdHJlYW0sIG9wdGlvbnMudG9rZW4sIG9wdGlvbnMubmFtZSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUHVibGlzaGVycyBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi8uLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IEZlYXR1cmVFbmFibGVtZW50IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L0ZlYXR1cmVFbmFibGVtZW50JztcbmltcG9ydCB7QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cywgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXN9IGZyb20gJy4uL2Rpc2NvdmVyeS9FbmRQb2ludCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0JztcbmltcG9ydCBSdGNQdWJsaXNoTW9uaXRvciBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuXG5pbXBvcnQgUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5cbmNvbnN0IGljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsID0gMTAwO1xuY29uc3Qgc29mdFJlc3RhcnRJbnRlcnZhbCA9IDEwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlYWxUaW1lUHVibGlzaGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ1JlYWxUaW1lUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3B1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9oYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGNvbnN0cnVjdG9yKHB1Ymxpc2hlckNvbnRleHQ6IFB1Ymxpc2hlckNvbnRleHQsIHBlZXJDb25uZWN0aW9uQ29udGV4dDogUGVlckNvbm5lY3Rpb25Db250ZXh0LCBoYW5kbGVTdHJlYW1GYWlsdXJlOiAoKSA9PiBQcm9taXNlPHZvaWQ+KSB7XG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dCA9IHB1Ymxpc2hlckNvbnRleHQ7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0ID0gcGVlckNvbm5lY3Rpb25Db250ZXh0O1xuICAgIHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUgPSBoYW5kbGVTdHJlYW1GYWlsdXJlO1xuICB9XG5cbiAgc3RhcnQodXJpOiBVUkwsIHRva2VuOiBzdHJpbmcsIGxpc3Rlbk9uU3RyZWFtU2V0dXA6IFN0cmVhbVNldHVwTGlzdGVuZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIUdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvcklzT25MaW5lKSB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuT2ZmbGluZTtcblxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IG1lZGlhU3RyZWFtID0gdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFtZWRpYVN0cmVhbSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdQdWJsaXNoIGZhaWxlZCBubyBtZWRpYSBzdHJlYW0gcHJvdmlkZWQnKTtcbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVRyYWNrcyA9IG1lZGlhU3RyZWFtLmdldFRyYWNrcygpO1xuICAgIGNvbnN0IHRyYWNrS2luZHMgPSBtZWRpYVRyYWNrcy5yZWR1Y2UoKGFjY3VtdWxhdG9yOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10sIHRyYWNrKSA9PiB7XG4gICAgICBpZiAodHJhY2sua2luZCA9PT0gJ2F1ZGlvJyB8fCB0cmFjay5raW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgIGFjY3VtdWxhdG9yLnB1c2godHJhY2sua2luZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBUcmFjayBraW5kIGlzIG5vdCBzdXBwb3J0ZWQnLCB0cmFjay5raW5kKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFjY3VtdWxhdG9yO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICBEaXNjb3ZlcnkuZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyh1cmkpLFxuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoJ3NlbmRvbmx5JywgdHJhY2tLaW5kcylcbiAgICAgICAgLnRoZW4oKHtsb2NhbE9mZmVyLCBwZWVyQ29ubmVjdGlvbn0pID0+IHtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBsb2NhbE9mZmVyLFxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb25cbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgIF0pXG4gICAgICAudGhlbigoW2VuZFBvaW50LCB7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259XSkgPT4ge1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IHRydWU7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBlbmRQb2ludDtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Nvbm5lY3RpbmcgdG8gWyVzXScsIGVuZFBvaW50LnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnTG9jYWwgb2ZmZXI6XFxuJyArIGxvY2FsT2ZmZXIuc2RwKTtcblxuICAgICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8ICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUgPiAwKSB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LmRpc3Bvc2VQZWVyQ29ubmVjdGlvbigpO1xuXG4gICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbnVsbCwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVuZFBvaW50LnB1Ymxpc2godGhpcy5fcHVibGlzaGVyQ29udGV4dC5uYW1lLCB0b2tlbiwgbG9jYWxPZmZlciwgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuICAgICAgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc3Qge3N0YXR1c30gPSByZXNwb25zZTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5tYXBQdWJsaXNoU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICAgICAgICdbJXNdIFB1Ymxpc2ggZmFpbGVkIHdpdGggc3RhdHVzIFslc10nLFxuICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgIHN0YXR1c1xuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7c3RyZWFtLCBydGNDb25maWd1cmF0aW9uLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2V9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBzdHJlYW07XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKFxuICAgICAgICAgICdbJXNdIFB1Ymxpc2ggY29tcGxldGVkIFslc10gWyVqXSBbJWpdIFslal0gWyVqXScsXG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgcnRjQ29uZmlndXJhdGlvbixcbiAgICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLFxuICAgICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcHBseVJ0Y0NvbmZpZ3VyYXRpb24odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLCBydGNDb25maWd1cmF0aW9uIGFzIFJUQ0NvbmZpZ3VyYXRpb24pXG4gICAgICAgICAgLnRoZW4ocGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICAgICAgbGV0IHN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0OiB1bmRlZmluZWQgfCBudW1iZXI7XG4gICAgICAgICAgICBsZXQgY2FuY2VsRGlzY292ZXJ5ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgZGlzY292ZXJ5Q29tcGxldGVkID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBjYW5kaWRhdGVzOiBSVENJY2VDYW5kaWRhdGVbXSA9IFtdO1xuXG4gICAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBwZWVyQ29ubmVjdGlvbjtcblxuICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uYWRkU3RyZWFtKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZSBhcyBNZWRpYVN0cmVhbSk7XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gKGUpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChjYW5jZWxEaXNjb3ZlcnkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIVNESy5zZW5kTG9jYWxDYW5kaWRhdGVzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKGUuY2FuZGlkYXRlICYmIGUuY2FuZGlkYXRlLmNhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaChlLmNhbmRpZGF0ZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlzY292ZXJ5Q29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICghc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICBzdWJtaXRDYW5kaWRhdGVzVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LmFkZEljZUNhbmRpZGF0ZXMoc3RyZWFtLCBjYW5kaWRhdGVzLCBkaXNjb3ZlcnlDb21wbGV0ZWQpXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKCh7c3RhdHVzLCBvcHRpb25zfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzVG9QdWJsaXNoZXJTdGF0dXMoc3RhdHVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci53YXJuKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uaW5jbHVkZXMoJ2NhbmNlbCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYW5jZWxEaXNjb3ZlcnkgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEFkZGVkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10gYW5kIG9wdGlvbnMgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHN0YXR1cywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdbJXNdIEZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBlKTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlVbmhhbmRsZWRFcnJvcigpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuX2hhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1slc10gRmFpbGVkIGhhbmRsaW5nIHN0cmVhbSBmYWlsdXJlIGFmdGVyIHBlZXIgY29ubmVjdGlvbiBmYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgcmV0cnlDYWxsYmFjayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzdG9wIG5vcm1hbGx5IHRoZSBwZWVyIGNvbm5lY3Rpb24gaXMgdW5yZWdpc3RlcmVkIGZpcnN0LlxuICAgICAgICAgICAgICAgIC8vIFRodXMgYW55dGltZSB3ZSBzZWUgYSBjbG9zZWQgcGVlciBjb25uZWN0aW9uIHRoYXQgaXMgc3RpbGwgdmFsaWQsIGl0IGlzIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gc3RvcHBlZCB3aXRoIHN0YXRlIFslc10nLFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlLFxuICAgICAgICAgICAgICAgICAgICAgIGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIHN3aXRjaCAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAnY2hlY2tpbmcnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2NvbXBsZXRlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICduZXcnOlxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnZGlzY29ubmVjdGVkJzpcbiAgICAgICAgICAgICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gSUNFIGNvbm5lY3Rpb24gc3RhdGUgY2hhbmdlZCB0byBbJXNdLCB0cnlpbmcgdG8gcmVjb25uZWN0JywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAnY2xvc2VkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgcmV0cnlpbmcgdG8gY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlIGFzIG5ldmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBGYWlsZWQgdG8gc2V0IGxvY2FsIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBhbnN3ZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0UmVtb3RlRGVzY3JpcHRpb24oY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoIWNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCByZW1vdGUgU0RQIG9mZmVyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIoe1xuICAgICAgICAgICAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVWaWRlbzogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLnRoZW4oYW5zd2VyID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBhbnN3ZXIuc2RwKTtcblxuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIWVuZFBvaW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHNldCByZW1vdGUgZGVzY3JpcHRpb24sIEVuZFBvaW50IGlzIG5vdCBzZXQnKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZFBvaW50LnNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbSwgYW5zd2VyKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKCh7c3RhdHVzLCBzZXNzaW9uRGVzY3JpcHRpb259KSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gdGhpcy5tYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IGxvY2FsIFNEUCBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uPy5zZHApO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihzZXNzaW9uRGVzY3JpcHRpb24gYXMgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2Vzc2lvbkRlc2NyaXB0aW9uLCBlLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5zdWNjZXNzKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlICE9PSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgY29uc3QgcnRjUHVibGlzaE1vbml0b3IgPSBuZXcgUnRjUHVibGlzaE1vbml0b3IoXG4gICAgICAgICAgICAgICAgcGVlckNvbm5lY3Rpb24sXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZT8ucm91bmRUcmlwVGltZSA/IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUucm91bmRUcmlwVGltZSAvIDQgOiAwLFxuICAgICAgICAgICAgICAgIFNESy5hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciEuaXNGb3JlZ3JvdW5kXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQocnRjUHVibGlzaE1vbml0b3IpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSBydGNQdWJsaXNoTW9uaXRvci5ydGNTdGF0aXN0aWMuc3Vic2NyaWJlKHN0YXRpc3RpY3MgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucnRjU3RhdGlzdGljcy52YWx1ZSA9IHN0YXRpc3RpY3M7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGFwcGx5UnRjQ29uZmlndXJhdGlvbihcbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsLFxuICAgIHJ0Y0NvbmZpZ3VyYXRpb246IFJUQ0NvbmZpZ3VyYXRpb24pOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ge1xuICAgIGlmICghb3B0aW9uYWxQZWVyQ29ubmVjdGlvbikge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbiA9IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRydW5jYXRlSWNlU2VydmVycyhydGNDb25maWd1cmF0aW9uKTtcblxuICAgICAgcmV0dXJuIFNESy5wZWVyQ29ubmVjdGlvbkZhY3RvcnkudmFsdWUuY3JlYXRlUGVlckNvbm5lY3Rpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgY29uc3QgbmV3UnRjQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIC4uLm9wdGlvbmFsUGVlckNvbm5lY3Rpb24uZ2V0Q29uZmlndXJhdGlvbigpLFxuICAgICAgLi4ucnRjQ29uZmlndXJhdGlvblxuICAgIH07XG5cbiAgICBvcHRpb25hbFBlZXJDb25uZWN0aW9uLnNldENvbmZpZ3VyYXRpb24obmV3UnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICByZXR1cm4gb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjazogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdjbG9zZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLlJlY29ubmVjdGluZztcblxuICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA8IFNESy5tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIHx8ICFTREsuYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cysrO1xuXG4gICAgICBjb25zdCBpc0NsaWVudE9mZmVyRmxvdyA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy50eXBlID09PSAnb2ZmZXInO1xuXG4gICAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuY2xpZW50T2ZmZXJEaXNhYmxlZCB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFwZWVyQ29ubmVjdGlvbi5zdXBwb3J0c0dldENvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgIWlzQ2xpZW50T2ZmZXJGbG93XG4gICAgICApIHtcbiAgICAgICAgY29uc3QgcmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0ID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dChyZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQpKSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmVjb25uZWN0aW5nIHBlZXIgY29ubmVjdGlvbiBieSByZXN0YXJ0aW5nIElDRScpO1xuXG4gICAgICBjb25zdCBjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiA9IHBlZXJDb25uZWN0aW9uLmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uO1xuICAgICAgY29uc3QgaWdub3JlZCA9IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHtpY2VSZXN0YXJ0OiB0cnVlfSkudGhlbihvZmZlciA9PiB7XG4gICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKS50aGVuKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihjdXJyZW50TG9jYWxEZXNjcmlwdGlvbilcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2Rpc2Nvbm5lY3RlZCcgfHwgcGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnZmFpbGVkJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RQZWVyQ29ubmVjdGlvbihwZWVyQ29ubmVjdGlvbiwgcmV0cnlDYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgfSwgc29mdFJlc3RhcnRJbnRlcnZhbCk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbicsIGUpO1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgICAgICAgICByZXRyeUNhbGxiYWNrKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0ZhaWxlZCB0byByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGFmdGVyIFslc10gYXR0ZW1wdHMsIHBlcmZvcm1pbmcgZnVsbCByZWNvdmVyeScsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgcmV0cnlDYWxsYmFjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlN0YXJ0aW5nO1xuICAgICAgY2FzZSAndW5hdXRob3JpemVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlVuYXV0aG9yaXplZDtcbiAgICAgIGNhc2UgJ25vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Ob3RGb3VuZDtcbiAgICAgIGNhc2UgJ2NhcGFjaXR5JzpcbiAgICAgIGNhc2UgJ3JhdGUtbGltaXRlZCc6XG4gICAgICBjYXNlICd0aW1lb3V0JzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZTtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmRlY2xhcmUgY29uc3QgX19CVUlMRF9WRVJTSU9OX186IHN0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmVyc2lvbk1hbmFnZXIge1xuICBwcml2YXRlIHN0YXRpYyBfZGVmYXVsdFZlcnNpb24gPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgc3RhdGljIGdldCBzZGtWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBfX0JVSUxEX1ZFUlNJT05fXztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdFZlcnNpb247XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgVGVsZW1ldHJ5U2VydmljZSBmcm9tICcuL1RlbGVtZXRyeVNlcnZpY2UnO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuLi9sb2dnZXIvSUFwcGVuZGVyJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5QXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZWxlbWV0cnlTZXJ2aWNlOiBUZWxlbWV0cnlTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZW5hbmN5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Nlc3Npb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeTtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnNlc3Npb25JZDtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRocmVzaG9sZDtcbiAgICB0aGlzLl90ZWxlbWV0cnlTZXJ2aWNlID0gbmV3IFRlbGVtZXRyeVNlcnZpY2UodGVsZW1ldHJ5Q29uZmlndXJhdGlvbik7XG4gIH1cblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZS5wdXNoKGxvZ0xldmVsLCBtZXNzYWdlLCBjYXRlZ29yeSwgZGF0ZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiB7XG4gIHByaXZhdGUgX3VybCA9ICdodHRwczovL3RlbGVtZXRyeS5waGVuaXhydHMuY29tL3RlbGVtZXRyeS9sb2dzJztcbiAgcHJpdmF0ZSBfdGVuYW5jeTogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9zZXNzaW9uSWQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfcGFnZUxvYWRUaW1lOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF90aHJlc2hvbGQgPSBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gIGdldCB1cmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdXJsO1xuICB9XG5cbiAgc2V0IHVybCh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHRlbGVtZXRyeVVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIHRlbGVtZXRyeVVybC5wYXRobmFtZSA9IHRlbGVtZXRyeVVybC5wYXRobmFtZSArICcvbG9ncyc7XG5cbiAgICB0aGlzLl91cmwgPSB0ZWxlbWV0cnlVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcGFnZUxvYWRUaW1lO1xuICB9XG5cbiAgc2V0IHBhZ2VMb2FkVGltZShwYWdlTG9hZFRpbWU6IG51bWJlcikge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgc2V0IHRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCkge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBOdW1iZXJzIGZyb20gJy4uL2xhbmcvTnVtYmVycyc7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5pbXBvcnQgVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiBmcm9tICcuL1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcblxuY29uc3QgcmVxdWVzdFNpemVMaW1pdCA9IDgxOTI7XG5cbmludGVyZmFjZSBJTG9nSXRlbSB7XG4gIHRpbWVzdGFtcDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG4gIGxldmVsOiBzdHJpbmc7XG4gIGNhdGVnb3J5OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIHZlcnNpb246IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgcnVudGltZTogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcblxuICBwcml2YXRlIF9sb2dzOiBBcnJheTxJTG9nSXRlbT4gPSBbXTtcbiAgcHJpdmF0ZSBfaXNTZW5kaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvbWFpbiA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1c2gobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCB0aW1lc3RhbXA6IERhdGUpOiB2b2lkIHtcbiAgICBjb25zdCBydW50aW1lID0gKHRpbWVzdGFtcC52YWx1ZU9mKCkgLSB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnBhZ2VMb2FkVGltZSkgLyAxMDAwO1xuICAgIGNvbnN0IGxvZ1JlY29yZCA9IHtcbiAgICAgIHRpbWVzdGFtcDogdGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICB0ZW5hbmN5OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBsZXZlbDogTG9nZ2luZ0xldmVsW2xvZ0xldmVsXSxcbiAgICAgIGNhdGVnb3J5LFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHNlc3Npb25JZDogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgZW52aXJvbm1lbnQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICBmdWxsUXVhbGlmaWVkTmFtZTogdGhpcy5fZG9tYWluLFxuICAgICAgcnVudGltZVxuICAgIH07XG5cbiAgICBpZiAobG9nTGV2ZWwgPCBMb2dnaW5nTGV2ZWwuRXJyb3IpIHtcbiAgICAgIHRoaXMuX2xvZ3MucHVzaChsb2dSZWNvcmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9sb2dzLnVuc2hpZnQobG9nUmVjb3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHN0cmluZz4ocmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgY29uc3QgZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24gPSBHbG9iYWxTY29wZS5zdWJzY3JpYmUoZ2xvYmFsU2NvcGUgPT4ge1xuICAgICAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUoZ2xvYmFsU2NvcGUubG9jYXRpb25Ib3N0bmFtZSk7XG4gICAgICAgIGdsb2JhbFNjb3BlLnNldFRpbWVvdXQoKCkgPT4gZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24uZGlzcG9zZSgpLCAwKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9ncyhsb2dNZXNzYWdlczogQXJyYXk8SUxvZ0l0ZW0+KTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHtyZWNvcmRzOiBsb2dNZXNzYWdlc30pKTtcblxuICAgIHJldHVybiBhd2FpdCBHbG9iYWxTY29wZS52YWx1ZS5mZXRjaCh0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTG9nc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9sb2dzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMDtcbiAgICBsZXQgc2l6ZU9mTG9nc1RvU2VuZCA9IDA7XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgZ2V0SXRlbVNpemUgPSAoaXRlbTogbnVtYmVyIHwgc3RyaW5nKSA9PiB0eXBlb2YgaXRlbSA9PT0gJ251bWJlcicgPyBOdW1iZXJzLmNvdW50TnVtYmVyTGVuZ3RoKGl0ZW0pIDogaXRlbS5sZW5ndGg7XG4gICAgY29uc3QgZ2V0TG9nU2l6ZSA9IChsb2c6IElMb2dJdGVtKTogbnVtYmVyID0+IE9iamVjdC52YWx1ZXMobG9nKVxuICAgICAgLnJlZHVjZSgoc3VtLCBpdGVtKSA9PiBzdW0gKyAoaXRlbSA/IGdldEl0ZW1TaXplKGl0ZW0pIDogMCksIDApO1xuXG4gICAgd2hpbGUgKHRoaXMuX2xvZ3MubGVuZ3RoID4gbnVtYmVyT2ZMb2dzVG9TZW5kICYmIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSArIHNpemVPZkxvZ3NUb1NlbmQgPCByZXF1ZXN0U2l6ZUxpbWl0KSB7XG4gICAgICBzaXplT2ZMb2dzVG9TZW5kICs9IGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCsrO1xuICAgIH1cblxuICAgIGlmICghbnVtYmVyT2ZMb2dzVG9TZW5kKSB7XG4gICAgICB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZSA9IHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXS5tZXNzYWdlLnN1YnN0cmluZygwLFxuICAgICAgICBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyAocmVxdWVzdFNpemVMaW1pdCAtIGdldExvZ1NpemUodGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdKSkpO1xuICAgICAgbnVtYmVyT2ZMb2dzVG9TZW5kID0gMTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2dNZXNzYWdlcyA9IHRoaXMuX2xvZ3Muc2xpY2UoMCwgbnVtYmVyT2ZMb2dzVG9TZW5kKTtcblxuICAgIHRoaXMuX2xvZ3MgPSB0aGlzLl9sb2dzLnNsaWNlKG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICByZXR1cm4gdGhpcy5zZW5kTG9ncyhsb2dNZXNzYWdlcykudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTG9nc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEdXJhdGlvbnMge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kdXJhdGlvbjogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKGR1cmF0aW9uID0gMCkge1xuICAgIHRoaXMuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gIH1cblxuICB0b0lzb1N0cmluZygpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLl9kdXJhdGlvbiA9PT0gMCkge1xuICAgICAgcmV0dXJuICdQMFMnO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTmVnYXRpdmUgPSB0aGlzLl9kdXJhdGlvbiA8IDA7XG4gICAgY29uc3QgZHVyYXRpb24gPSBpc05lZ2F0aXZlID8gTWF0aC5hYnModGhpcy5fZHVyYXRpb24pIDogdGhpcy5fZHVyYXRpb247XG4gICAgbGV0IG9mZnNldCA9IE1hdGguZmxvb3IoZHVyYXRpb24pO1xuICAgIGNvbnN0IG1pbGxpc2Vjb25kcyA9IG9mZnNldCAlIDEwMDA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDEwMDApO1xuXG4gICAgY29uc3Qgc2Vjb25kcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gb2Zmc2V0ICUgNjA7XG5cbiAgICBvZmZzZXQgPSBNYXRoLmZsb29yKG9mZnNldCAvIDYwKTtcblxuICAgIGNvbnN0IGhvdXJzID0gb2Zmc2V0ICUgMjQ7XG4gICAgY29uc3QgcGFydHMgPSBbJ1BUJ107XG5cbiAgICBpZiAoaXNOZWdhdGl2ZSkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLScpO1xuICAgIH1cblxuICAgIGlmIChob3Vycykge1xuICAgICAgcGFydHMucHVzaChob3VycyArICdIJyk7XG4gICAgfVxuXG4gICAgaWYgKG1pbnV0ZXMpIHtcbiAgICAgIHBhcnRzLnB1c2gobWludXRlcyArICdNJyk7XG4gICAgfVxuXG4gICAgaWYgKHNlY29uZHMgfHwgbWlsbGlzZWNvbmRzKSB7XG4gICAgICBwYXJ0cy5wdXNoKFN0cmluZyhzZWNvbmRzKSk7XG5cbiAgICAgIGlmIChtaWxsaXNlY29uZHMpIHtcbiAgICAgICAgcGFydHMucHVzaCgnLicgKyB0aGlzLnBhZFN0YXJ0KG1pbGxpc2Vjb25kcy50b1N0cmluZygpLCAzLCAnMCcpKTtcbiAgICAgIH1cblxuICAgICAgcGFydHMucHVzaCgnUycpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJ0cy5qb2luKCcnKTtcbiAgfVxuXG4gIHBhZFN0YXJ0KGl0ZW06IHN0cmluZywgdGFyZ2V0TGVuZ3RoOiBudW1iZXIsIHBhZFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggPj4gMDtcbiAgICBwYWRTdHJpbmcgPSBTdHJpbmcoKHR5cGVvZiBwYWRTdHJpbmcgIT09ICd1bmRlZmluZWQnID8gcGFkU3RyaW5nIDogJyAnKSk7XG5cbiAgICBpZiAoaXRlbS5sZW5ndGggPiB0YXJnZXRMZW5ndGgpIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIHRhcmdldExlbmd0aCA9IHRhcmdldExlbmd0aCAtIGl0ZW0ubGVuZ3RoO1xuXG4gICAgaWYgKHRhcmdldExlbmd0aCA+IHBhZFN0cmluZy5sZW5ndGgpIHtcbiAgICAgIHBhZFN0cmluZyArPSBwYWRTdHJpbmcucmVwZWF0KHRhcmdldExlbmd0aCAvIHBhZFN0cmluZy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHJldHVybiBwYWRTdHJpbmcuc2xpY2UoMCwgdGFyZ2V0TGVuZ3RoKSArIGl0ZW07XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMjAwMDtcbmNvbnN0IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMTtcbmNvbnN0IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gMzAwMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbEJhY2tvZmYge1xuICBwcml2YXRlIHJlYWRvbmx5IF9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kLFxuICAgIG1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlciA9IGRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kXG4gICkge1xuICAgIHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICAgIHRoaXMuX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgPSBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kO1xuICB9XG5cbiAgZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudChmYWlsdXJlQ291bnQ6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgYmFja29mZkludGVydmFsSW5TZWNvbmRzID0gdGhpcy5fYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCAvIDEwMDA7XG4gICAgY29uc3QgcmFuZG9taXphdGlvbiA9IDAuNSArICgwLjUgKiBNYXRoLnJhbmRvbSgpKTsgLy8gWzAuNSwgMSlcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmYgPSBNYXRoLnBvdyhiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMsIGZhaWx1cmVDb3VudCAtIDIpOyAvLyAgWzEvNCAxLzIgMSAyIDQgOCAuLi4uXVxuICAgIGNvbnN0IGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uID0gTWF0aC5mbG9vcihleHBvbmVudGlhbEJhY2tvZmYpICogcmFuZG9taXphdGlvbjtcbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQgPSBNYXRoLmNlaWwoTWF0aC5tYXgoZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24gKiAxMDAwLCB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKSk7XG5cbiAgICByZXR1cm4gTWF0aC5taW4oZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kLCB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtTdHJlYW1TZXR1cExpc3RlbmVyfSBmcm9tICcuLi9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lcic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE5ldHdvcmtNb25pdG9yIGZyb20gJy4uL2RvbS9OZXR3b3JrTW9uaXRvcic7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IER1cmF0aW9ucyBmcm9tICcuLi90aW1lL0R1cmF0aW9uJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcblxuaW50ZXJmYWNlIElOZXR3b3JrU3RhdGlzdGljcyB7XG4gIHJ0dD86IG51bWJlcjtcbiAgZWZmZWN0aXZlVHlwZT86IHN0cmluZztcbiAgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlc3Npb25UZWxlbWV0cnkgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdTZXNzaW9uVGVsZW1ldHJ5Jyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I7XG4gIHByaXZhdGUgcmVhZG9ubHkgX25ldHdvcmtNb25pdG9yOiBOZXR3b3JrTW9uaXRvciA9IG5ldyBOZXR3b3JrTW9uaXRvcigpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX2xhc3ROZXR3b3JrU3RhdGlzdGljczogSU5ldHdvcmtTdGF0aXN0aWNzID0ge307XG5cbiAgY29uc3RydWN0b3IocGFnZUxvYWRUaW1lOiBudW1iZXIsIG1ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZSkge1xuICAgIHRoaXMuX3BhZ2VMb2FkVGltZSA9IHBhZ2VMb2FkVGltZTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gbWV0cmljc1NlcnZpY2U7XG5cbiAgICBpZiAoIXRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Nlc3Npb25UZWxlbWV0cnkgRmFpbGVkOiBObyBhcHBsaWNhdGlvbiBtb25pdG9yIGluaXRpYWxpemVkLicpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fbmV0d29ya01vbml0b3IuaXNTdXBwb3J0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IuaXNGb3JlZ3JvdW5kLnN1YnNjcmliZShpc0ZvcmVncm91bmQgPT4ge1xuICAgICAgdGhpcy5yZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZCk7XG4gICAgfSkpO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmFkZCh0aGlzLl9uZXR3b3JrTW9uaXRvci5ydHQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtSVFRVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZWZmZWN0aXZlVHlwZS5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMucmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IuZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZSh2YWx1ZSk7XG4gICAgfSkpO1xuICB9XG5cbiAgbGlzdGVuT25TdHJlYW1TZXR1cCgpOiBTdHJlYW1TZXR1cExpc3RlbmVyIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbVNldHVwTGlzdGVuZXIodGhpcy5fcGFnZUxvYWRUaW1lKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlKGlzRm9yZWdyb3VuZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3QgdGltZVNpbmNlTGFzdENoYW5nZSA9IHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5nZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk7XG5cbiAgICBpZiAoIXRpbWVTaW5jZUxhc3RDaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IGlzRm9yZWdyb3VuZCA/IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZCA6IE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uQmFja2dyb3VuZCxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lU2luY2VMYXN0Q2hhbmdlfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnQXBwbGljYXRpb24gaGFzIGdvbmUgaW50byB0aGUgWyVzXSBhZnRlciBbJXNdIG1zJyxcbiAgICAgIGlzRm9yZWdyb3VuZCA/ICdmb3JlZ3JvdW5kJyA6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIG5ldyBEdXJhdGlvbnModGltZVNpbmNlTGFzdENoYW5nZSkudG9Jc29TdHJpbmcoKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZWNvcmROZXR3b3JrUlRUVXBkYXRlKG5ld1JUVDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRSdHQgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MucnR0O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dCA9IG5ld1JUVDtcblxuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlLnB1c2goe1xuICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7dWludDY0OiBuZXdSVFR9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkUnR0ID8ge3VpbnQ2NDogb2xkUnR0fSA6IHVuZGVmaW5lZCxcbiAgICAgIHJlc291cmNlOiAnbmF2aWdhdG9yJ1xuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIFJUVCBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3UlRULFxuICAgICAgb2xkUnR0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1R5cGVDaGFuZ2VVcGRhdGUobmV3TmV0d29ya1R5cGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkTmV0d29ya1R5cGUgPSB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5lZmZlY3RpdmVUeXBlID0gbmV3TmV0d29ya1R5cGU7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLk5ldHdvcmtUeXBlLFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtzdHJpbmc6IG5ld05ldHdvcmtUeXBlfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZE5ldHdvcmtUeXBlID8ge3N0cmluZzogb2xkTmV0d29ya1R5cGV9IDogdW5kZWZpbmVkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIE5ldHdvcmsgZWZmZWN0aXZlIHR5cGUgaGFzIGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdOZXR3b3JrVHlwZSxcbiAgICAgIG9sZE5ldHdvcmtUeXBlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlKG5ld0NhcGFjaXR5OiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZENhcGFjaXR5ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5O1xuXG4gICAgdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LFxuICAgICAgcnVudGltZTogKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgdmFsdWU6IHtmbG9hdDogbmV3Q2FwYWNpdHl9LFxuICAgICAgcHJldmlvdXNWYWx1ZTogb2xkQ2FwYWNpdHkgPyB7ZmxvYXQ6IG9sZENhcGFjaXR5fSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGRvd25saW5rIHRocm91Z2hwdXQgY2FwYWNpdHkgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld0NhcGFjaXR5LFxuICAgICAgb2xkQ2FwYWNpdHlcbiAgICApO1xuICB9XG59IiwiZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkociwgYSkge1xuICAobnVsbCA9PSBhIHx8IGEgPiByLmxlbmd0aCkgJiYgKGEgPSByLmxlbmd0aCk7XG4gIGZvciAodmFyIGUgPSAwLCBuID0gQXJyYXkoYSk7IGUgPCBhOyBlKyspIG5bZV0gPSByW2VdO1xuICByZXR1cm4gbjtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5TGlrZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfYXJyYXlXaXRoSG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIHI7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF9hcnJheVdpdGhvdXRIb2xlcyhyKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHIpKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FycmF5V2l0aG91dEhvbGVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2Fzc2VydFRoaXNJbml0aWFsaXplZChlKSB7XG4gIGlmICh2b2lkIDAgPT09IGUpIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgcmV0dXJuIGU7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAobiwgdCwgZSwgciwgbywgYSwgYykge1xuICB0cnkge1xuICAgIHZhciBpID0gblthXShjKSxcbiAgICAgIHUgPSBpLnZhbHVlO1xuICB9IGNhdGNoIChuKSB7XG4gICAgcmV0dXJuIHZvaWQgZShuKTtcbiAgfVxuICBpLmRvbmUgPyB0KHUpIDogUHJvbWlzZS5yZXNvbHZlKHUpLnRoZW4ociwgbyk7XG59XG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihuKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHQgPSB0aGlzLFxuICAgICAgZSA9IGFyZ3VtZW50cztcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHIsIG8pIHtcbiAgICAgIHZhciBhID0gbi5hcHBseSh0LCBlKTtcbiAgICAgIGZ1bmN0aW9uIF9uZXh0KG4pIHtcbiAgICAgICAgYXN5bmNHZW5lcmF0b3JTdGVwKGEsIHIsIG8sIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCBuKTtcbiAgICAgIH1cbiAgICAgIGZ1bmN0aW9uIF90aHJvdyhuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIG4pO1xuICAgICAgfVxuICAgICAgX25leHQodm9pZCAwKTtcbiAgICB9KTtcbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2FzeW5jVG9HZW5lcmF0b3IsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soYSwgbikge1xuICBpZiAoIShhIGluc3RhbmNlb2YgbikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jbGFzc0NhbGxDaGVjaywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBpc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9jb25zdHJ1Y3QodCwgZSwgcikge1xuICBpZiAoaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkpIHJldHVybiBSZWZsZWN0LmNvbnN0cnVjdC5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICB2YXIgbyA9IFtudWxsXTtcbiAgby5wdXNoLmFwcGx5KG8sIGUpO1xuICB2YXIgcCA9IG5ldyAodC5iaW5kLmFwcGx5KHQsIG8pKSgpO1xuICByZXR1cm4gciAmJiBzZXRQcm90b3R5cGVPZihwLCByLnByb3RvdHlwZSksIHA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9jb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyhlLCByKSB7XG4gIGZvciAodmFyIHQgPSAwOyB0IDwgci5sZW5ndGg7IHQrKykge1xuICAgIHZhciBvID0gclt0XTtcbiAgICBvLmVudW1lcmFibGUgPSBvLmVudW1lcmFibGUgfHwgITEsIG8uY29uZmlndXJhYmxlID0gITAsIFwidmFsdWVcIiBpbiBvICYmIChvLndyaXRhYmxlID0gITApLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgdG9Qcm9wZXJ0eUtleShvLmtleSksIG8pO1xuICB9XG59XG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoZSwgciwgdCkge1xuICByZXR1cm4gciAmJiBfZGVmaW5lUHJvcGVydGllcyhlLnByb3RvdHlwZSwgciksIHQgJiYgX2RlZmluZVByb3BlcnRpZXMoZSwgdCksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCBcInByb3RvdHlwZVwiLCB7XG4gICAgd3JpdGFibGU6ICExXG4gIH0pLCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY3JlYXRlQ2xhc3MsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgdG9Qcm9wZXJ0eUtleSA9IHJlcXVpcmUoXCIuL3RvUHJvcGVydHlLZXkuanNcIik7XG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkoZSwgciwgdCkge1xuICByZXR1cm4gKHIgPSB0b1Byb3BlcnR5S2V5KHIpKSBpbiBlID8gT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHIsIHtcbiAgICB2YWx1ZTogdCxcbiAgICBlbnVtZXJhYmxlOiAhMCxcbiAgICBjb25maWd1cmFibGU6ICEwLFxuICAgIHdyaXRhYmxlOiAhMFxuICB9KSA6IGVbcl0gPSB0LCBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2YodCkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0KSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX2dldFByb3RvdHlwZU9mKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfZ2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbmZ1bmN0aW9uIF9pbmhlcml0cyh0LCBlKSB7XG4gIGlmIChcImZ1bmN0aW9uXCIgIT0gdHlwZW9mIGUgJiYgbnVsbCAhPT0gZSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICB0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZSAmJiBlLnByb3RvdHlwZSwge1xuICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICB2YWx1ZTogdCxcbiAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9XG4gIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkodCwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZSAmJiBzZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2luaGVyaXRzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2lzTmF0aXZlRnVuY3Rpb24odCkge1xuICB0cnkge1xuICAgIHJldHVybiAtMSAhPT0gRnVuY3Rpb24udG9TdHJpbmcuY2FsbCh0KS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIHQ7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlRnVuY3Rpb24sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICB0cnkge1xuICAgIHZhciB0ID0gIUJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLCBbXSwgZnVuY3Rpb24gKCkge30pKTtcbiAgfSBjYXRjaCAodCkge31cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QgPSBmdW5jdGlvbiBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0KCkge1xuICAgIHJldHVybiAhIXQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cykoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXkocikge1xuICBpZiAoXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIG51bGwgIT0gcltTeW1ib2wuaXRlcmF0b3JdIHx8IG51bGwgIT0gcltcIkBAaXRlcmF0b3JcIl0pIHJldHVybiBBcnJheS5mcm9tKHIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGwpIHtcbiAgdmFyIHQgPSBudWxsID09IHIgPyBudWxsIDogXCJ1bmRlZmluZWRcIiAhPSB0eXBlb2YgU3ltYm9sICYmIHJbU3ltYm9sLml0ZXJhdG9yXSB8fCByW1wiQEBpdGVyYXRvclwiXTtcbiAgaWYgKG51bGwgIT0gdCkge1xuICAgIHZhciBlLFxuICAgICAgbixcbiAgICAgIGksXG4gICAgICB1LFxuICAgICAgYSA9IFtdLFxuICAgICAgZiA9ICEwLFxuICAgICAgbyA9ICExO1xuICAgIHRyeSB7XG4gICAgICBpZiAoaSA9ICh0ID0gdC5jYWxsKHIpKS5uZXh0LCAwID09PSBsKSB7XG4gICAgICAgIGlmIChPYmplY3QodCkgIT09IHQpIHJldHVybjtcbiAgICAgICAgZiA9ICExO1xuICAgICAgfSBlbHNlIGZvciAoOyAhKGYgPSAoZSA9IGkuY2FsbCh0KSkuZG9uZSkgJiYgKGEucHVzaChlLnZhbHVlKSwgYS5sZW5ndGggIT09IGwpOyBmID0gITApO1xuICAgIH0gY2F0Y2ggKHIpIHtcbiAgICAgIG8gPSAhMCwgbiA9IHI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmICghZiAmJiBudWxsICE9IHRbXCJyZXR1cm5cIl0gJiYgKHUgPSB0W1wicmV0dXJuXCJdKCksIE9iamVjdCh1KSAhPT0gdSkpIHJldHVybjtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChvKSB0aHJvdyBuO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfaXRlcmFibGVUb0FycmF5TGltaXQsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfbm9uSXRlcmFibGVSZXN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlU3ByZWFkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgPSByZXF1aXJlKFwiLi9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlLmpzXCIpO1xuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKGUsIHQpIHtcbiAgaWYgKG51bGwgPT0gZSkgcmV0dXJuIHt9O1xuICB2YXIgbyxcbiAgICByLFxuICAgIGkgPSBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKGUsIHQpO1xuICBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykge1xuICAgIHZhciBuID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhlKTtcbiAgICBmb3IgKHIgPSAwOyByIDwgbi5sZW5ndGg7IHIrKykgbyA9IG5bcl0sIHQuaW5kZXhPZihvKSA+PSAwIHx8IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoZSwgbykgJiYgKGlbb10gPSBlW29dKTtcbiAgfVxuICByZXR1cm4gaTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UociwgZSkge1xuICBpZiAobnVsbCA9PSByKSByZXR1cm4ge307XG4gIHZhciB0ID0ge307XG4gIGZvciAodmFyIG4gaW4gcikgaWYgKHt9Lmhhc093blByb3BlcnR5LmNhbGwociwgbikpIHtcbiAgICBpZiAoZS5pbmRleE9mKG4pID49IDApIGNvbnRpbnVlO1xuICAgIHRbbl0gPSByW25dO1xuICB9XG4gIHJldHVybiB0O1xufVxubW9kdWxlLmV4cG9ydHMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbnZhciBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgPSByZXF1aXJlKFwiLi9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanNcIik7XG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0LCBlKSB7XG4gIGlmIChlICYmIChcIm9iamVjdFwiID09IF90eXBlb2YoZSkgfHwgXCJmdW5jdGlvblwiID09IHR5cGVvZiBlKSkgcmV0dXJuIGU7XG4gIGlmICh2b2lkIDAgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZFwiKTtcbiAgcmV0dXJuIGFzc2VydFRoaXNJbml0aWFsaXplZCh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YodCwgZSkge1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mID0gT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKSA6IGZ1bmN0aW9uICh0LCBlKSB7XG4gICAgcmV0dXJuIHQuX19wcm90b19fID0gZSwgdDtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3NldFByb3RvdHlwZU9mKHQsIGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2V0UHJvdG90eXBlT2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlXaXRoSG9sZXMgPSByZXF1aXJlKFwiLi9hcnJheVdpdGhIb2xlcy5qc1wiKTtcbnZhciBpdGVyYWJsZVRvQXJyYXlMaW1pdCA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheUxpbWl0LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVSZXN0ID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVSZXN0LmpzXCIpO1xuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkociwgZSkge1xuICByZXR1cm4gYXJyYXlXaXRoSG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5TGltaXQociwgZSkgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgZSkgfHwgbm9uSXRlcmFibGVSZXN0KCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9zbGljZWRUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aG91dEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRob3V0SG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vaXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5ID0gcmVxdWlyZShcIi4vdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkuanNcIik7XG52YXIgbm9uSXRlcmFibGVTcHJlYWQgPSByZXF1aXJlKFwiLi9ub25JdGVyYWJsZVNwcmVhZC5qc1wiKTtcbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShyKSB7XG4gIHJldHVybiBhcnJheVdpdGhvdXRIb2xlcyhyKSB8fCBpdGVyYWJsZVRvQXJyYXkocikgfHwgdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkocikgfHwgbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3RvQ29uc3VtYWJsZUFycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xuZnVuY3Rpb24gdG9QcmltaXRpdmUodCwgcikge1xuICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKHQpIHx8ICF0KSByZXR1cm4gdDtcbiAgdmFyIGUgPSB0W1N5bWJvbC50b1ByaW1pdGl2ZV07XG4gIGlmICh2b2lkIDAgIT09IGUpIHtcbiAgICB2YXIgaSA9IGUuY2FsbCh0LCByIHx8IFwiZGVmYXVsdFwiKTtcbiAgICBpZiAoXCJvYmplY3RcIiAhPSBfdHlwZW9mKGkpKSByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQEB0b1ByaW1pdGl2ZSBtdXN0IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZS5cIik7XG4gIH1cbiAgcmV0dXJuIChcInN0cmluZ1wiID09PSByID8gU3RyaW5nIDogTnVtYmVyKSh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9QcmltaXRpdmUsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKFwiLi90b1ByaW1pdGl2ZS5qc1wiKTtcbmZ1bmN0aW9uIHRvUHJvcGVydHlLZXkodCkge1xuICB2YXIgaSA9IHRvUHJpbWl0aXZlKHQsIFwic3RyaW5nXCIpO1xuICByZXR1cm4gXCJzeW1ib2xcIiA9PSBfdHlwZW9mKGkpID8gaSA6IGkgKyBcIlwiO1xufVxubW9kdWxlLmV4cG9ydHMgPSB0b1Byb3BlcnR5S2V5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3R5cGVvZihvKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgU3ltYm9sICYmIFwic3ltYm9sXCIgPT0gdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA/IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvO1xuICB9IDogZnVuY3Rpb24gKG8pIHtcbiAgICByZXR1cm4gbyAmJiBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBvLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgbyAhPT0gU3ltYm9sLnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2YgbztcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3R5cGVvZihvKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3R5cGVvZiwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheUxpa2VUb0FycmF5ID0gcmVxdWlyZShcIi4vYXJyYXlMaWtlVG9BcnJheS5qc1wiKTtcbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShyLCBhKSB7XG4gIGlmIChyKSB7XG4gICAgaWYgKFwic3RyaW5nXCIgPT0gdHlwZW9mIHIpIHJldHVybiBhcnJheUxpa2VUb0FycmF5KHIsIGEpO1xuICAgIHZhciB0ID0ge30udG9TdHJpbmcuY2FsbChyKS5zbGljZSg4LCAtMSk7XG4gICAgcmV0dXJuIFwiT2JqZWN0XCIgPT09IHQgJiYgci5jb25zdHJ1Y3RvciAmJiAodCA9IHIuY29uc3RydWN0b3IubmFtZSksIFwiTWFwXCIgPT09IHQgfHwgXCJTZXRcIiA9PT0gdCA/IEFycmF5LmZyb20ocikgOiBcIkFyZ3VtZW50c1wiID09PSB0IHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KHQpID8gYXJyYXlMaWtlVG9BcnJheShyLCBhKSA6IHZvaWQgMDtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXksIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9nZXRQcm90b3R5cGVPZi5qc1wiKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoXCIuL3NldFByb3RvdHlwZU9mLmpzXCIpO1xudmFyIGlzTmF0aXZlRnVuY3Rpb24gPSByZXF1aXJlKFwiLi9pc05hdGl2ZUZ1bmN0aW9uLmpzXCIpO1xudmFyIGNvbnN0cnVjdCA9IHJlcXVpcmUoXCIuL2NvbnN0cnVjdC5qc1wiKTtcbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIodCkge1xuICB2YXIgciA9IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgTWFwID8gbmV3IE1hcCgpIDogdm9pZCAwO1xuICByZXR1cm4gKG1vZHVsZS5leHBvcnRzID0gX3dyYXBOYXRpdmVTdXBlciA9IGZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIodCkge1xuICAgIGlmIChudWxsID09PSB0IHx8ICFpc05hdGl2ZUZ1bmN0aW9uKHQpKSByZXR1cm4gdDtcbiAgICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiB0KSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb25cIik7XG4gICAgaWYgKHZvaWQgMCAhPT0gcikge1xuICAgICAgaWYgKHIuaGFzKHQpKSByZXR1cm4gci5nZXQodCk7XG4gICAgICByLnNldCh0LCBXcmFwcGVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gV3JhcHBlcigpIHtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3QodCwgYXJndW1lbnRzLCBnZXRQcm90b3R5cGVPZih0aGlzKS5jb25zdHJ1Y3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBXcmFwcGVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUodC5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgd3JpdGFibGU6ICEwLFxuICAgICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgICB9XG4gICAgfSksIHNldFByb3RvdHlwZU9mKFdyYXBwZXIsIHQpO1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpLCBfd3JhcE5hdGl2ZVN1cGVyKHQpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfd3JhcE5hdGl2ZVN1cGVyLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IFB1Ymxpc2hlcnMgZnJvbSAnLi9QdWJsaXNoZXJzJztcbmltcG9ydCBQdWJsaXNoZXJTdGF0ZSBmcm9tICcuL1B1Ymxpc2hlclN0YXRlJztcblxuZXhwb3J0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBTREssXG4gIFB1Ymxpc2hlcnMsXG4gIFB1Ymxpc2hlclN0YXRlXG59OyJdLCJuYW1lcyI6WyJHbG9iYWxTY29wZSIsIkRpc3Bvc2FibGUiLCJEaXNwb3NhYmxlTGlzdCIsIlN1YmplY3QiLCJSZWFkT25seVN1YmplY3QiLCJ2aXNpYmlsaXR5Q2hhbmdlRXZlbnQiLCJBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl9jbGFzc0NhbGxDaGVjayIsIl9kZWZpbmVQcm9wZXJ0eSIsIkRhdGUiLCJub3ciLCJfaXNGb3JlZ3JvdW5kIiwiX3JlYWRPbmx5SXNGb3JlZ3JvdW5kIiwiaW5pdGlhbGl6ZSIsIl9jcmVhdGVDbGFzcyIsImtleSIsImdldCIsInZhbHVlIiwiZ2V0VGltZVNpbmNlTGFzdENoYW5nZSIsIl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2UiLCJnZXRMYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24iLCJkaXNwb3NlIiwiX2Rpc3Bvc2FibGVzIiwiX3RoaXMiLCJiYWNrZ3JvdW5kRW50cnlUaW1lIiwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSIsImlzTm93Rm9yZWdyb3VuZCIsImRvY3VtZW50SXNIaWRkZW4iLCJ1c2VFdmVudENhcHR1cmVQaGFzZSIsImFkZERvY3VtZW50RXZlbnRMaXN0ZW5lciIsImFkZCIsInJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lciIsImRlZmF1bHQiLCJCcm93c2VyRGV0ZWN0b3IiLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwiX2Jyb3dzZXJOYW1lIiwiX2Jyb3dzZXJNYWpvclZlcnNpb24iLCJfaXNBbmRyb2lkIiwiX2lzQ2hyb21lNjkiLCJfaXNDaHJvbWU3MCIsIl9pc0Nocm9tZTcxIiwiX2lzQ2hyb21lNzIiLCJfaXNDaHJvbWU3NCIsIl9pc0Nocm9tZTc1IiwiX2lzQ2hyb21lNzYiLCJfaXNDaHJvbWU3NyIsImlzTW9iaWxlIiwiX2lzTW9iaWxlIiwicGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24iLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJicm93c2VyTmFtZUFuZFZlcnNpb24iLCJtYXRjaCIsIl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUiLCJwYXJzZUJyb3dzZXJOYW1lIiwiYnJvd3Nlck5hbWVMaXN0Iiwic3BsaXQiLCJwYXJzZUJyb3dzZXJNYWpvclZlcnNpb24iLCJicm93c2VyVmVyc2lvbkxpc3QiLCJmdWxsVmVyc2lvbiIsIk51bWJlciIsIm1zaWUiLCJpbmRleE9mIiwiY29uY2F0IiwicGFyc2VJbnQiLCJzdWJzdHJpbmciLCJ0cmlkZW50IiwidmVyc2lvbiIsIl9Ccm93c2VyRGV0ZWN0b3IiLCJ0ZXN0IiwiX25hdmlnYXRvciIsIl9uYXZpZ2F0b3IyIiwiaW5jbHVkZXMiLCJMb2dnZXJEZWZhdWx0cyIsIkxvZ2dpbmdMZXZlbE1hcHBpbmciLCJUZWxlbWV0cnlEZWZhdWx0IiwiVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIiwiQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlciIsImdldFN0cmluZ1ZhbHVlIiwibmFtZSIsInJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUiLCJyZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlIiwiZGVmYXVsdFN0cmluZ1ZhbHVlIiwiZ2V0Qm9vbGVhblZhbHVlIiwidmFsdWVGcm9tVXJpIiwiZGVmYXVsdEJvb2xlYW5WYWx1ZSIsImNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlIiwiZGVmYXVsdFRlbGVtZXRyeUxldmVsIiwiY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSIsImRlZmF1bHRMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCIsImRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwiLCJtZXRhVmFsdWUiLCJkb2N1bWVudFF1ZXJ5U2VsZWN0b3IiLCJnZXRBdHRyaWJ1dGUiLCJ2YWx1ZVVSSVBhcmFtZXRlck5hbWUiLCJVUkxTZWFyY2hQYXJhbXMiLCJsb2NhdGlvblNlYXJjaCIsInVuZGVmaW5lZCIsIkZlYXR1cmVFbmFibGVtZW50IiwiU0RLIiwiR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXIiLCJFcnJvciIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb24iLCJza2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMiLCJpc0ZvcmNlQ2hyb21lR2FyYmFnZUNvbGxlY3Rpb25TdXBwb3J0ZWQiLCJmb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uIiwiaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCIsInF1ZXVlTWljcm90YXNrIiwib3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uIiwiYmluZCIsInNldFRpbWVvdXQiLCJpbWciLCJkb2N1bWVudENyZWF0ZUVsZW1lbnQiLCJzcmMiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJCbG9iIiwiQXJyYXlCdWZmZXIiLCJvbmVycm9yIiwicmV2b2tlT2JqZWN0VVJMIiwiTmV0d29ya01vbml0b3IiLCJuYXZpZ2F0b3JDb25uZWN0aW9uIiwiaXNTdXBwb3J0ZWQiLCJzZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMiLCJ1cGRhdGVTdGF0aXN0aWNzIiwiX2lzU3VwcG9ydGVkIiwiX3J0dCIsIl9lZmZlY3RpdmVUeXBlIiwiX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJfcmVmIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTMiLCJkb3dubGluayIsImRvd25saW5rTWF4IiwiZ2V0RWZmZWN0aXZlVHlwZSIsIl9yZWYyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNCIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTUiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE2IiwiZWZmZWN0aXZlVHlwZSIsInR5cGUiLCJnZXRSb3VuZFRyaXBUaW1lIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNyIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTgiLCJydHQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE5IiwibGlzdGVuZXIiLCJhZGRFdmVudExpc3RlbmVyIiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hMCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNZXRyaWNzVHlwZSIsIk1ldHJpY1R5cGUiLCJEdXJhdGlvbnMiLCJMb2dnZXJGYWN0b3J5IiwiU3RyZWFtU2V0dXBMaXN0ZW5lciIsInBhZ2VMb2FkVGltZSIsImdldExvZ2dlciIsIm1ldHJpY3NTZXJ2aWNlIiwiX3N0YXJ0VGltZSIsIl9wYWdlTG9hZFRpbWUiLCJzdWNjZXNzIiwic3RyZWFtSWQiLCJyZWNvcmRTdHJlYW1NZXRyaWMiLCJTZXR1cENvbXBsZXRlZCIsImZhaWwiLCJTZXR1cEZhaWxlZCIsIm1ldHJpY1R5cGUiLCJfbWV0cmljU3VibWl0dGVkIiwic2V0dXBUaW1lIiwibWV0cmljTmFtZSIsImdldE5hbWUiLCJwdXNoIiwicnVudGltZSIsInVpbnQ2NCIsIl9sb2dnZXIiLCJpbmZvIiwidG9Jc29TdHJpbmciLCJFZGdlVG9rZW4iLCJlZGdlQXV0aFRva2VuUHJlZml4IiwiRWRnZUF1dGhQYXJzZXIiLCJwYXJzZVRva2VuIiwidG9rZW4iLCJpc0VuY29kZWRFZGdlVG9rZW5WYWxpZCIsImVycm9yIiwiZGVjb2RlZFRva2VuIiwiYXRvYiIsInN1YnN0ciIsImxlbmd0aCIsImVkZ2VUb2tlbiIsIkpTT04iLCJwYXJzZSIsImUiLCJzdGFydHNXaXRoIiwiX2VkZ2VUb2tlbiR0b2tlbiIsIl9lZGdlVG9rZW4kdG9rZW4yIiwiX2FwcGxpY2F0aW9uSWQiLCJhcHBsaWNhdGlvbklkIiwiX3Rva2VuIiwidXJpIiwiY2FwYWJpbGl0aWVzIiwiQnVpbGRGZWF0dXJlcyIsIl9zZW5kTG9jYWxDYW5kaWRhdGVzIiwiX3NlbmRMb2dzIiwiX3NlbmRNZXRyaWNzIiwiX2xvZ1RvQ29uc29sZSIsImFwcGx5RmVhdHVyZXMiLCJmZWF0dXJlcyIsIl9fRkVBVFVSRVNfXyIsInNlbmRMb2NhbENhbmRpZGF0ZXMiLCJzZW5kTG9ncyIsInNlbmRNZXRyaWNzIiwibG9nVG9Db25zb2xlIiwiaXNDaHJvbWU3NCIsImlzQ2hyb21lNzUiLCJpc0Nocm9tZTc2IiwiaXNDaHJvbWU3NyIsImFkZFRyYW5jZWl2ZXJEaXNhYmxlZCIsImlzQ2hyb21lNjkiLCJpc0Nocm9tZTcwIiwiaXNDaHJvbWU3MSIsImlzQ2hyb21lNzIiLCJicm93c2VyTmFtZSIsImJyb3dzZXJNYWpvclZlcnNpb24iLCJfR2xvYmFsU2NvcGUkdmFsdWUiLCJNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yIiwiTWVkaWFTdHJlYW1UcmFja0dlbmVyYXRvciIsIlJUQ1J0cFJlY2VpdmVyIiwicHJvdG90eXBlIiwiY3JlYXRlRW5jb2RlZFN0cmVhbXMiLCJSVENSdHBTY3JpcHRUcmFuc2Zvcm0iLCJfR2xvYmFsU2NvcGUkdmFsdWUyIiwiSFRNTFZpZGVvRWxlbWVudCIsInJlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2siLCJfR2xvYmFsU2NvcGUkdmFsdWUzIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiaXNSZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrU3VwcG9ydGVkIiwiaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQiLCJpc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCIsIlBhcmFtZXRlcnMiLCJfZGlzY292ZXJ5UGFyYW1ldGVycyIsImFwcGx5UGFyYW1ldGVycyIsInBhcmFtZXRlcnMiLCJfX1BBUkFNRVRFUlNfXyIsImRpc2NvdmVyeSIsImludGVudGlvbnMiLCJicm93c2VyR2xvYmFsU2NvcGUiLCJkb2N1bWVudCIsImxvY2F0aW9uIiwid2luZG93IiwiZ2xvYmFsU2NvcGUiLCJfZG9jdW1lbnQiLCJfbG9jYXRpb24iLCJfd2luZG93IiwiQWJvcnRDb250cm9sbGVyIiwiRm9ybURhdGEiLCJNZWRpYVN0cmVhbSIsIk1lZGlhU3RyZWFtVHJhY2siLCJNZWRpYVNvdXJjZSIsIlJUQ1BlZXJDb25uZWN0aW9uIiwiUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIiwiUlRDSWNlQ2FuZGlkYXRlIiwiY2xlYXJJbnRlcnZhbCIsImNsZWFyVGltZW91dCIsImNyZWF0ZUVsZW1lbnQiLCJoYXNGb2N1cyIsImhpZGRlbiIsInF1ZXJ5U2VsZWN0b3IiLCJmZXRjaCIsImhvc3RuYW1lIiwic2VhcmNoIiwiY29ubmVjdGlvbiIsIm9uTGluZSIsInNlbmRCZWFjb24iLCJ1cmwiLCJkYXRhIiwic2V0SW50ZXJ2YWwiLCJzZXRJbnN0YW5jZSIsInByb3ZpZGVkR2xvYmFsU2NvcGUiLCJnZXRJbnN0YW5jZSIsIl9yZWFkT25seUluc3RhbmNlIiwic3Vic2NyaWJlIiwiY2FsbGJhY2siLCJfR2xvYmFsU2NvcGUiLCJfaW5zdGFuY2UiLCJkaXNwb3NhYmxlIiwiX2Rpc3Bvc2VkIiwiX2Rpc3Bvc2FibGUiLCJjYWxsIiwiX2xpc3QiLCJmb3JFYWNoIiwidG9TdHJpbmciLCJtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QiLCJOdW1iZXJzIiwiY291bnROdW1iZXJMZW5ndGgiLCJpbmNyZW1lbnRGb3JOZWdhdGl2ZVZhbHVlIiwibnVtYmVyIiwiY291bnREaWdpdHNCZWZvcmVEZWNpbWFsIiwiTWF0aCIsImZsb29yIiwiY291bnREaWdpdHNBZnRlckRlY2ltYWwiLCJmaXhSb3VuZGluZyIsInByZWNpc2lvbiIsInBvd2VyIiwicG93Iiwicm91bmQiLCJkaWdpdHNCZWZvcmVEZWNpbWFsIiwib3JpZ2luYWxWYWx1ZSIsIm1vZGlmaWVkVmFsdWUiLCJjb3VudCIsIlN0cmluZ3MiLCJyYW5kb20iLCJyYW5kb20xM0NoYXJhY3RlcnMiLCJsb29wcyIsImNlaWwiLCJBcnJheSIsImZpbGwiLCJyZWR1Y2UiLCJzdHJpbmciLCJmdW5jIiwiYXNzZXJ0VW5yZWFjaGFibGUiLCJ4IiwiQXBwZW5kZXJzIiwiX2FwcGVuZGVycyIsImFwcGVuZGVyIiwicmVtb3ZlIiwiaXRlbXMiLCJpdGVtIiwiTG9nZ2luZ0xldmVsIiwiQ29uc29sZUFwcGVuZGVyIiwidGhyZXNob2xkIiwiX3RocmVzaG9sZCIsImxvZyIsImxvZ0xldmVsIiwibWVzc2FnZSIsImNhdGVnb3J5IiwiZGF0ZSIsImZ1bGxNZXNzYWdlIiwidG9JU09TdHJpbmciLCJXYXJuIiwiY29uc29sZSIsIkxvZ2dlciIsImFwcGVuZGVycyIsIl9jYXRlZ29yeSIsInRyYWNlIiwiVHJhY2UiLCJfbGVuIiwiYXJndW1lbnRzIiwiYXJncyIsIl9rZXkiLCJkZWJ1ZyIsIkRlYnVnIiwiX2xlbjIiLCJfa2V5MiIsIkluZm8iLCJfbGVuMyIsIl9rZXkzIiwid2FybiIsIl9sZW40IiwiX2tleTQiLCJfbGVuNSIsIl9rZXk1IiwiZmF0YWwiLCJGYXRhbCIsIl9sZW42IiwiX2tleTYiLCJsZXZlbCIsInJlcGxhY2VQbGFjZWhvbGRlcnMiLCJfdGhpczIiLCJyZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nIiwiaW5kZXgiLCJyZXBsYWNlQXJndW1lbnQiLCJzcGxpY2UiLCJzdHJpbmdpZnkiLCJhY2N1bXVsYXRvciIsImN1cnJlbnRWYWx1ZSIsImFycmF5IiwiZXJyb3JTdGFja0Fsc29IYXNFcnJvck1lc3NhZ2UiLCJzdGFjayIsImFyZyIsImNhY2hlIiwiXyIsIk9iamVjdCIsImFyZ3VtZW50IiwidG9TdHJpbmdTdHIiLCJMb2dnaW5nVGhyZXNob2xkIiwiVGVsZW1ldHJ5QXBwZW5kZXIiLCJUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJsb2dnZXIiLCJfbG9nZ2VycyIsImFwcGx5TG9nZ2VyQ29uZmlnRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUxvZ2dpbmdMZXZlbCIsImFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwiLCJhcHBseUNvbnNvbGVMb2dnZXIiLCJhcHBseVRlbGVtZXRyeUxvZ2dlciIsInBhcmFtZXRlclZhbHVlIiwic2V0VGhyZXNob2xkIiwiYXBwbHlBcHBlbmRlciIsImxvZ2dpbmdMZXZlbCIsIk9mZiIsIkFsbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwiLCJsb2dnaW5nTGV2ZWxUeXBlIiwiVGVsZW1ldHJ5TGV2ZWwiLCJtZXRyaWNzIiwiX21ldHJpY3MiLCJnZXRUZWxlbWV0cnlMZXZlbCIsIlRpbWVUb0ZpcnN0RnJhbWUiLCJFc3NlbnRpYWwiLCJDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lIiwiU3RhbGxlZCIsIkJ1ZmZlcmluZyIsIlJvdW5kVHJpcFRpbWUiLCJEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsIk5ldHdvcmtUeXBlIiwiUmVzb2x1dGlvbkNoYW5nZWQiLCJBcHBsaWNhdGlvbkZvcmVncm91bmQiLCJBcHBsaWNhdGlvbkJhY2tncm91bmQiLCJNZXRyaWNzQ29uZmlndXJhdGlvbiIsIl91cmwiLCJzZXQiLCJtZXRyaWNzVXJsIiwicGF0aG5hbWUiLCJfZW52aXJvbm1lbnQiLCJlbnZpcm9ubWVudCIsIl90ZW5hbmN5IiwidGVuYW5jeSIsIl9zZXNzaW9uSWQiLCJzZXNzaW9uSWQiLCJNZXRyaWNzU2VydmljZSIsIlRlbGVtZXRyeVVybCIsIkVudmlyb25tZW50IiwiTWV0cmljc0ZhY3RvcnkiLCJnZXRNZXRyaWNzU2VydmljZSIsIl90eXBlb2YiLCJtZXRyaWNzU2VydmljZXMiLCJfbWV0cmljc1NlcnZpY2VzIiwibWV0cmljc0NvbmZpZ3VyYXRpb24iLCJjbGllbnRTZXNzaW9uSWQiLCJnZXRUZWxlbWV0cnlVcmwiLCJnZXRFbnZpcm9ubWVudEZyb21VcmwiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUeXBlVG9UZWxlbWV0cnlMZXZlbCIsInRlbGVtZXRyeUxldmVsIiwic2V0VGVsZW1ldHJ5TGV2ZWwiLCJ2YWx1ZXMiLCJ0IiwiciIsIlN5bWJvbCIsIm4iLCJpdGVyYXRvciIsIm8iLCJ0b1N0cmluZ1RhZyIsImkiLCJjIiwiR2VuZXJhdG9yIiwidSIsImNyZWF0ZSIsIl9yZWdlbmVyYXRvckRlZmluZTIiLCJmIiwicCIsInkiLCJHIiwidiIsImEiLCJkIiwibCIsIlR5cGVFcnJvciIsImRvbmUiLCJyZXR1cm4iLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiZ2V0UHJvdG90eXBlT2YiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsImRpc3BsYXlOYW1lIiwiX3JlZ2VuZXJhdG9yIiwidyIsIm0iLCJkZWZpbmVQcm9wZXJ0eSIsIl9yZWdlbmVyYXRvckRlZmluZSIsIl9pbnZva2UiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJFeHBvbmVudGlhbEJhY2tvZmYiLCJWZXJzaW9uTWFuYWdlciIsInJlcXVlc3RTaXplTGltaXQiLCJtYXhCdWZmZXJlZFJlY29yZHMiLCJfbWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfZXhwb25lbnRpYWxCYWNrb2ZmIiwiZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSIsInRoZW4iLCJsb2NhdGlvbkhvc3RuYW1lIiwiX2RvbWFpbiIsIm1ldHJpYyIsInByZXZpb3VzVmFsdWUiLCJyZXNvdXJjZSIsImtpbmQiLCJtZXRyaWNSZWNvcmQiLCJ0aW1lc3RhbXAiLCJmdWxsUXVhbGlmaWVkTmFtZSIsInNka1ZlcnNpb24iLCJpZ25vcmVkIiwic2VuZE1ldHJpY3NJZkFibGUiLCJQcm9taXNlIiwicmVzb2x2ZUxvY2F0aW9uSG9zdG5hbWUiLCJnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX2NhbGxlZSIsIm1ldHJpY3NNZXNzYWdlcyIsImZvcm1EYXRhIiwiX2NvbnRleHQiLCJhcHBlbmQiLCJyZWNvcmRzIiwibWV0aG9kIiwiYm9keSIsIl94IiwiYXBwbHkiLCJfc2VuZE1ldHJpY3NJZkFibGUiLCJfY2FsbGVlMiIsIl9jb250ZXh0MiIsIl9pc1NlbmRpbmciLCJzbGljZSIsInJlc3BvbnNlIiwiaXNSZXNwb25zZVN0YXR1c0NvZGVSZXRyeWFibGUiLCJfZmFpbHVyZUNvdW50IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZ2V0RXhwb25lbnRpYWxCYWNrb2ZmSW50ZXJ2YWxCeUZhaWx1cmVDb3VudCIsImNhdGNoIiwic3RhdHVzIiwidGVsZW1ldHJ5TGV2ZWxUeXBlIiwiUHJvbWlzZUhhbmRsZXIiLCJfc3RhdGUiLCJfaGFuZGxlZCIsIl92YWx1ZSIsIl9kZWZlcnJlZHMiLCJkb1Jlc29sdmUiLCJwcm9taXNlUmVzb2x2ZSIsInJlYXNvbiIsInByb21pc2VSZWplY3QiLCJuZXdWYWx1ZSIsInByb21pc2UiLCJmaW5hbGUiLCJfaW1tZWRpYXRlIiwiX3VuaGFuZGxlZFJlamVjdGlvbiIsImxlbiIsImhhbmRsZSIsImRlZmVycmVkIiwib25GdWxmaWxsZWQiLCJvblJlamVjdGVkIiwicmVzdWx0IiwiYWxsIiwiYXJyIiwicmVzb2x2ZSIsInJlamVjdCIsImlzQXJyYXkiLCJyZW1haW5pbmciLCJtYW5hZ2VSZXNwb25zZSIsImNvbnN0cnVjdG9yIiwicmFjZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJkZWZhdWx0VHJhY2tLaW5kcyIsIlBlZXJDb25uZWN0aW9uU2VydmljZSIsIl9wZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJpbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nIiwiaXNQcmVjYWNoaW5nRW5hYmxlZCIsInByZWNhY2hlQ3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9wcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FjaGVkIiwiZGlyZWN0aW9uIiwicGVlckNvbm5lY3Rpb24iLCJjcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfY2FsbGVlMyIsInRyYWNrS2luZHMiLCJlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMiLCJjb25maWd1cmF0aW9uIiwiX2FyZ3MzIiwiX2NvbnRleHQzIiwiRGlzYWJsZWQiLCJpc1RyYWNrc0tpbmRzRXF1aXZhbGVudFRvRGVmYXVsdCIsIkVuYWJsZWQiLCJjcmVhdGVQZWVyQ29ubmVjdGlvbiIsInN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIiLCJhdWRpb1RyYW5zY2VpdmVycyIsInZpZGVvVHJhbnNjZWl2ZXJzIiwib3B0aW9ucyIsIl90IiwiX3QyIiwiX3QzIiwiX3Q0IiwiX3Q1IiwiX3Q2IiwiYWRkVHJhbnNjZWl2ZXIiLCJjcmVhdGVPZmZlciIsImxvY2FsT2ZmZXIiLCJvZmZlclRvUmVjZWl2ZUF1ZGlvIiwib2ZmZXJUb1JlY2VpdmVWaWRlbyIsInRyYWNrc0tpbmRzIiwiY291bnRUcmFja0tpbmRzIiwidHJhY2tLaW5kQ291bnQiLCJhdWRpbyIsInZpZGVvIiwiY291bnRlZFRyYWNrS2luZHMiLCJjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMiLCJSdGNDb25maWd1cmF0aW9uTWFuYWdlciIsInRydW5jYXRlSWNlU2VydmVycyIsImljZVNlcnZlcnMiLCJ1cmxzIiwidXNlcm5hbWUiLCJjcmVkZW50aWFsIiwiU2RwUGFyc2VyIiwidXBkYXRlU3RhdGlzdGljVGltZW91dCIsImdldFN0YXRzVGltZW91dER1cmF0aW9uIiwiUnRjUHVibGlzaE1vbml0b3IiLCJlc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiaXNGb3JlZ3JvdW5kIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uMiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb240IiwiX3BlZXJDb25uZWN0aW9uIiwiX2VzdGltYXRlZFJvdW5kVHJpcFRpbWUiLCJjdXJyZW50TG9jYWxEZXNjcmlwdGlvbiIsInNkcCIsImN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiIsInBhcnNlZExvY2FsRGVzY3JpcHRpb24iLCJwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbiIsIl9lc3RpbWF0ZWRBdWRpb0NvZGVjIiwiYXVkaW9Db2RlYyIsIl9lc3RpbWF0ZWRWaWRlb0NvZGVjIiwidmlkZW9Db2RlYyIsIl9hdmFpbGFibGVUcmFja3MiLCJpc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNWaWRlb1RyYWNrRW5hYmxlZCIsImlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrIiwiZm9yZWdyb3VuZCIsIl9pc01vbml0b3JSdW5uaW5nIiwiX21vbml0b3JHZW5lcmF0aW9uIiwiX3VwZGF0ZVRpbWVvdXQiLCJ1cGRhdGVTdGF0aXN0aWMiLCJfcnRjU3RhdGlzdGljIiwiX3VwZGF0ZVN0YXRpc3RpYyIsImdlbmVyYXRpb24iLCJnZXRLaW5kRm9yU2FmYXJpMTEiLCJ0aW1lb3V0SGFuZGxlIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNSIsInN0YXRzUHJvbWlzZSIsInRpbWVvdXRQcm9taXNlIiwic3RhdHMiLCJydGNTdGF0aXN0aWNzIiwicm91bmRUcmlwVGltZSIsImxhc3RQYWNrZXRTZW50VGltZXN0YW1wIiwiZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCIsImlkIiwiZ2V0U3RhdHMiLCJyZXBvcnQiLCJjdXJyZW50Um91bmRUcmlwVGltZSIsIl90aGlzMiRfYXZhaWxhYmxlVHJhYyIsIm1lZGlhVHlwZSIsImNvZGVjIiwiY29kZWNJZCIsIm1pbWVUeXBlIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkMiIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDMiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ0IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNSIsImJ5dGVzIiwiYnl0ZXNTZW50IiwicHJldmlvdXNCeXRlc1NlbnQiLCJieXRlc0RlbHRhIiwidGltZURlbHRhIiwiYml0cmF0ZSIsInNzcmMiLCJwYWNrZXRzU2VudCIsInJldHJhbnNtaXR0ZWRCeXRlc1NlbnQiLCJnZXRDb2RlY0J5VHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDYiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ3IiwiZmlyQ291bnQiLCJmcmFtZUhlaWdodCIsImZyYW1lV2lkdGgiLCJmcmFtZXNFbmNvZGVkIiwiZnJhbWVzU2VudCIsImhlYWRlckJ5dGVzU2VudCIsImh1Z2VGcmFtZXNTZW50IiwicGxpQ291bnQiLCJxcFN1bSIsInRvdGFsRW5jb2RlVGltZSIsInRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0IiwiZnBzIiwiX3NkcCIsInNkcFNwbGl0QnlMaW5lcyIsInNkcFNwbGl0QnlUcmFja3MiLCJfYXVkaW9Db2RlYyIsImFwcGx5Q29kZWMiLCJfdmlkZW9Db2RlYyIsIl9pc0F1ZGlvVHJhY2tFbmFibGVkIiwiaXNUcmFja0J5VHlwZUVuYWJsZWQiLCJfaXNWaWRlb1RyYWNrRW5hYmxlZCIsInNkcFNlY3Rpb25Gb3JUeXBlIiwiZmluZCIsInNkcFRyYWNrIiwiX3NkcFNwbGl0QnlMaW5lcyRmaW5kIiwicnRtYXAiLCJzZHBMaW5lIiwidXNlZENvZGVjTGluZSIsInVzZWRDb2RlYyIsImNvZGVjTmFtZSIsIlZhbmlsbGFQZWVyQ29ubmVjdGlvbiIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCIsIndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIiwiY29ubmVjdGlvblN0YXRlIiwiaWNlQ29ubmVjdGlvblN0YXRlIiwiZ2V0Q29uZmlndXJhdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjYiLCJzZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNyIsImdldFRyYW5zY2VpdmVyc0Rpc2FibGVkIiwiZ2V0VHJhbnNjZWl2ZXJzIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uOCIsIl9jcmVhdGVPZmZlciIsInByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkIiwiX2NyZWF0ZUFuc3dlciIsImNyZWF0ZUFuc3dlciIsIl94MiIsIl9zZXRMb2NhbERlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJzZXRMb2NhbERlc2NyaXB0aW9uIiwiX3gzIiwiX3NldFJlbW90ZURlc2NyaXB0aW9uIiwiX2NhbGxlZTQiLCJfZGVzY3JpcHRpb24kc2RwIiwiaGFzQ3J5cHRvIiwiX2NvbnRleHQ0Iiwic2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDQiLCJnZXRTZW5kZXJzIiwiZ2V0UmVjZWl2ZXJzIiwic2VsZWN0b3IiLCJnZXRTdGF0c0xlZ2FjeSIsIl90aGlzMyIsImFkZFN0cmVhbSIsIm1lZGlhU3RyZWFtIiwiX3RoaXM0IiwiZ2V0VHJhY2tzIiwidHJhY2siLCJhZGRUcmFjayIsIm9udHJhY2siLCJoYW5kbGVyIiwib25pY2VjYW5kaWRhdGUiLCJvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSIsIm9uaWNlY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwiY2xvc2UiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb245IiwiX2NyZWF0ZVBlZXJDb25uZWN0aW9uIiwicmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSIsInN1YmplY3QiLCJfc3ViamVjdCIsIkRpc3Bvc2FibGVMaXN0ZW5lciIsIl9EaXNwb3NhYmxlIiwibGlzdGVuZXJzIiwiX2NhbGxTdXBlciIsImlkeCIsIl9pbmhlcml0cyIsIl9saXN0ZW5lcnMiLCJjaGFuZ2VkIiwiY29tcGFyYWJsZSIsImVxdWFscyIsIl9pIiwiX2FyciIsImJhc2VVUkwiLCJvcmlnaW4iLCJEaXNjb3ZlcnlVcmkiLCJfR2xvYmFsU2NvcGUkZ2V0SW5zdGEiLCJfY2xpZW50U2Vzc2lvbklkIiwiX2xvYWRlZFRpbWVzdGFtcCIsIl9yZWFkT25seUluaXRpYWxpemVkIiwiX3JlYWRPbmx5RGlzY292ZXJ5VXJpIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSIsIl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsIl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIl9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwiX3NraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcyIsIl93ZWJQbGF5ZXJMb2FkZXIiLCJfc2hha2FQbGF5ZXJMb2FkZXIiLCJfaGxzSnNMb2FkZXIiLCJfbWV0cmljc1NlcnZpY2UiLCJfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfdGVsZW1ldHJ5VXJsIiwiX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJyZXRyaWVzQW1vdW50IiwiX3RlbGVtZXRyeUxldmVsIiwiYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uIiwidGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsImlnbm9yZWRFbnZpcm9ubWVudCIsImlnbm9yZWREaXNjb3ZlcnlVcmkiLCJ0ZWxlbWV0cnlVcmwiLCJ0ZWxlbWV0cnlBcHBlbmRlciIsImlnbm9yZWRUZW5hbmN5IiwiYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbiIsImlnbm9yZWRUZWxlbWV0cnlMZXZlbCIsImFwcGx5QXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbkZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseVNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlc0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlEaXNjb3ZlcnlVcmlEZWZhdWx0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJkaXNjb3ZlcnlVcmkiLCJjaGFubmVsVG9rZW4iLCJ1cmlWYWx1ZSIsImJhc2VVUklWYWx1ZSIsIm9uTG9hZCIsIl9pbml0aWFsaXplZCIsImFkZFdpbmRvd0V2ZW50TGlzdGVuZXIiLCJpbml0Iiwib3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlIiwicGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiY29uc29sZUxvZ2dpbmdMZXZlbCIsImNvbnNvbGVBcHBlbmRlciIsImF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0iLCJhdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSIsIndlYlBsYXllckxvYWRlciIsInNoYWthUGxheWVyTG9hZGVyIiwiaGxzSnNMb2FkZXIiLCJfdGhpcyRfYXBwbGljYXRpb25BY3QiLCJfU0RLIiwic2VnbWVudHMiLCJwcm90b2NvbCIsInVuc2hpZnQiLCJlbmRzV2l0aCIsImpvaW4iLCJCaXRyYXRlU3RhdGUiLCJCaXRyYXRlTW9kZSIsIlBlZXJDb25uZWN0aW9uQ29udGV4dCIsImZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJwZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzIiwiZGlzcG9zZVBlZXJDb25uZWN0aW9uIiwiZGlzcG9zZU1lZGlhU3RyZWFtIiwiX3RoaXMkbWVkaWFTdHJlYW0kdmFsIiwic3RvcCIsIlN0YXRlQ29udGV4dCIsImlzU3RhcnRpbmciLCJpc0Rpc3Bvc2VkIiwiVG9rZW5Db250ZXh0IiwidG9rZW5FeHBpcmluZyIsImRlZmF1bHREaXNjb3ZlcnlVcmkiLCJCaXRyYXRlTW9kZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZSIsImJpdHJhdGVNb2RlIiwiTm9ybWFsIiwiRm9yY2UiLCJSZXNldCIsIkJpdHJhdGVTdGF0ZU1hcHBpbmciLCJjb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlIiwiYml0cmF0ZVN0YXRlIiwiS2VlcCIsIkRpc2NvdmVyeVNlcnZpY2UiLCJkaXNjb3ZlcnlDYWNoZUludGVydmFsIiwiRGlzY292ZXJ5IiwiX3ByZWNhY2hlQ2xvc2VzdEVuZFBvaW50RGlzY292ZXJ5IiwicmVzb2x2ZUVuZFBvaW50UHJvbWlzZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmciLCJwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwiZGlzY292ZXJ5U2VydmljZSIsImNhY2hlZFZhbHVlIiwiX2NhY2hlIiwiZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCIsIkVuZFBvaW50IiwiZGVmYXVsdFRpbWVvdXQiLCJfdXJpIiwiX2Rpc2NvdmVyTmVhcmJ5RW5kUG9pbnRzIiwidGltZW91dCIsImFzU3RyaW5nIiwiZW5kUG9pbnRzIiwib2siLCJ0ZXh0IiwibWFwIiwiZW5kUG9pbnQiLCJkaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsIl9kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCIsImZhaWxlZFJlcXVlc3RzIiwicHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQiLCJfYXJnczIiLCJidWlsZERpc2NvdmVyeVVybCIsInBpbmciLCJ0aW1lIiwiUGNhc3RVcmkiLCJfZGlzY292ZXJ5VXJpIiwiZGlzY292ZXJ5UGFyYW1ldGVycyIsInNlYXJjaFBhcmFtcyIsImRpc2NvdmVyeVBhdGgiLCJfZ2V0UHJvdG90eXBlT2YiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJSZWZsZWN0IiwiY29uc3RydWN0IiwiQm9vbGVhbiIsInZhbHVlT2YiLCJhcGlWZXJzaW9uIiwiRmV0Y2hUaW1lb3V0RXJyb3IiLCJfRXJyb3IiLCJfd3JhcE5hdGl2ZVN1cGVyIiwiX3RpbWVvdXREdXJhdGlvbiIsIl9yb3VuZFRyaXBUaW1lIiwiX3BpbmciLCJzdGFydCIsInJlcXVlc3RPcHRpb25zIiwiYnVpbGRQaW5nVXJsIiwiZmV0Y2hXaXRoVGltZW91dCIsIl9zdWJzY3JpYmUiLCJsb2NhbFNlc3Npb25EZXNjcmlwdGlvbiIsImZhaWx1cmVDb3VudCIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUiIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjQiLCJjbGllbnRWZXJzaW9uIiwicmVxdWVzdEJvZHkiLCJmZXRjaFJlcXVlc3RPcHRpb25zIiwiaHR0cFJlc3BvbnNlIiwianNvblJlc3BvbnNlQm9keSIsIl9vcHRpb25zJG9uU3Vic2NyaWJlUjIiLCJfcmVzcG9uc2UiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIzIiwiX3Jlc3BvbnNlMiIsImZpbmlzaGVkIiwic3Vic2NyaWJlUmVzcG9uc2UiLCJidWlsZFVybCIsImJlYXJlclRva2VuIiwiaHR0cFJvdW5kVHJpcFRpbWUiLCJzZXNzaW9uRGVzY3JpcHRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvbiIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb24iLCJvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjayIsImV4ZWN1dGVGZXRjaFJlcXVlc3QiLCJwYXJzZUpzb25Cb2R5IiwiaGFuZGxlU3RyZWFtUmVzcG9uc2VDb250ZXh0Iiwic3RyZWFtUmVzcG9uc2VDb250ZXh0IiwibWFwSHR0cFN0YXR1c1RvU3Vic2NyaWJlU3RhdHVzIiwib25TdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrIiwibm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UiLCJfcHVibGlzaCIsImJvZHlXaXRoT2ZmZXIiLCJib2R5V2l0aG91dE9mZmVyIiwicHVibGlzaFJlc3BvbnNlIiwibWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyIsIm5vcm1hbGl6ZVB1Ymxpc2hSZXNwb25zZSIsInB1Ymxpc2giLCJfeDUiLCJfeDYiLCJfeDciLCJzdHJlYW0iLCJzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlIiwic2hhcmVkU2VjcmV0IiwibWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94OCIsIl94OSIsIl9saW1pdEJpdHJhdGUiLCJfY2FsbGVlNSIsImVsYXBzZWRJbk1pbGxpc2Vjb25kcyIsImJpdHJhdGVJbkJpdHNQZXJTZWNvbmQiLCJfY29udGV4dDUiLCJtYXBIdHRwU3RhdHVzVG9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyIsImxpbWl0Qml0cmF0ZSIsIl94MCIsIl94MSIsIl94MTAiLCJfeDExIiwiX3gxMiIsIl9hZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTYiLCJjYW5kaWRhdGVzIiwiZGlzY292ZXJ5Q29tcGxldGVkIiwiYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlIiwiX2FyZ3M2IiwiX2NvbnRleHQ2IiwibWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsImNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMiLCJhZGRJY2VDYW5kaWRhdGVzIiwiX3gxMyIsIl94MTQiLCJfeDE1IiwiX2Rlc3Ryb3lTdHJlYW0iLCJfY2FsbGVlNyIsImRlc3Ryb3lTdHJlYW1SZXNwb25zZSIsIl9jb250ZXh0NyIsIm1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiZGVzdHJveVN0cmVhbSIsIl94MTYiLCJfeDE3IiwiX2Rlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfY2FsbGVlOCIsIl9jb250ZXh0OCIsImVyciIsImRlc3Ryb3lTdHJlYW1PblVubW91bnQiLCJfeDE4IiwiX3gxOSIsIl9mZXRjaFdpdGhUaW1lb3V0IiwiX2NhbGxlZTkiLCJ0aW1lb3V0RHVyYXRpb24iLCJjb250cm9sbGVyIiwiX2NvbnRleHQ5IiwiX29iamVjdFNwcmVhZCIsInNpZ25hbCIsImFib3J0IiwiX3gyMCIsIl94MjEiLCJfeDIyIiwiX2V4ZWN1dGVGZXRjaFJlcXVlc3QiLCJfY2FsbGVlMCIsIm9wZXJhdGlvbiIsIl9jb250ZXh0MCIsIl94MjMiLCJfeDI0IiwiX3gyNSIsInBhdGgiLCJidWlsZFJvdXRlVXJsIiwiX3BhcnNlSnNvbkJvZHkiLCJfY2FsbGVlMSIsIl9jb250ZXh0MSIsImpzb24iLCJfeDI2IiwiY29udGV4dCIsImxhZyIsInJ0Y0NvbmZpZ3VyYXRpb24iLCJjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlIiwiaWdub3JlZFN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm90aGVyUHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbiIsImJ1bmRsZVBvbGljeSIsImljZUNhbmRpZGF0ZVBvb2xTaXplIiwiaWNlVHJhbnNwb3J0UG9saWN5IiwicnRjcE11eFBvbGljeSIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl9jYWxsZWUxMCIsIl9jb250ZXh0MTAiLCJfeDI3IiwiX2NvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMiLCJfY2FsbGVlMTEiLCJfY29udGV4dDExIiwiX3gyOCIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9EZXN0cm95U3RyZWFtIiwiX2NhbGxlZTEyIiwiX2NvbnRleHQxMiIsIl94MjkiLCJub3JtYWxpemVEaXNjb3ZlcnlVcmkiLCJoYXNoIiwiYmFzZVVyaSIsIlB1Ymxpc2hlclN0YXRlIiwiU2Vzc2lvblRlbGVtZXRyeSIsIlB1Ymxpc2hlckNvbnRleHQiLCJSZWFsVGltZVB1Ymxpc2hlciIsImRlZmF1bHRTdHJlYW1UZXJtaW5hdGlvblJlYXNvbiIsImZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwic3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwib25lSG91ckluTWlsbGlzZWNvbmRzIiwibWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIiwiUHVibGlzaGVyIiwicGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9ucyIsIl90b2tlbkNvbnRleHQiLCJfcHVibGlzaGVyQ29udGV4dCIsIl9wZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJfc3RhdGVDb250ZXh0IiwiX3B1Ymxpc2hlclN0YXJ0VGltZSIsIl9yZWFkT25seVRva2VuIiwiX3JlYWRPbmx5UGVlckNvbm5lY3Rpb24iLCJfcmVhZE9ubHlTdGF0ZSIsInN0YXRlIiwiX3JlYWRPbmx5VG9rZW5FeHBpcmluZyIsIl9yZWFkT25seUF1dGhvcml6ZWQiLCJhdXRob3JpemVkIiwiX3JlYWRPbmx5T25saW5lIiwib25saW5lIiwiX3JlYWRPbmx5TG9hZGluZyIsImxvYWRpbmciLCJfcmVhZE9ubHlQdWJsaXNoaW5nIiwicHVibGlzaGluZyIsIl9yZWFkT25seVN0YW5kYnkiLCJzdGFuZGJ5IiwiX3JlYWRPbmx5U3RvcHBlZCIsInN0b3BwZWQiLCJfcmVhZE9ubHlGYWlsdXJlQ291bnQiLCJfcmVhZE9ubHlFbmRQb2ludCIsIl9yZWFkT25seVN0cmVhbSIsIl9yZWFkT25seVJ0Y1N0YXRpc3RpY3MiLCJfcmVhZE9ubHlNZWRpYVN0cmVhbSIsIl9zZXNzaW9uVGVsZW1ldHJ5IiwicHVibGlzaGVyRGlzcG9zYWJsZXMiLCJjbGVhckZhaWx1cmVDb3VudFRpbWVvdXQiLCJQdWJsaXNoaW5nIiwicmVtb3ZlV2luZG93RXZlbnRMaXN0ZW5lciIsImRpc3Bvc2FibGVzIiwiX3N0b3AiLCJwcm9jZXNzU3RvcCIsImNsZWFuVXBSZXNvdXJjZXMiLCJTdG9wcGVkIiwiX2Rpc3Bvc2UiLCJnZXRVcmkiLCJfc3RhcnQiLCJwcm9jZXNzU3RhcnQiLCJfcHJvY2Vzc1N0YXJ0IiwibGlzdGVuT25TdHJlYW1TZXR1cCIsImhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjayIsInN0cmVhbVB1Ymxpc2hlciIsIlN0YXJ0aW5nIiwiVW5hdXRob3JpemVkIiwiUmVjb3ZlcmluZyIsImhhbmRsZVN0cmVhbUZhaWx1cmUiLCJDbGllbnRTdGFydEVycm9yIiwiZmluYWxseSIsImF1dG9tYXRpY1JldHJ5T25GYWlsdXJlIiwic3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyIsInRpbWVvdXRJZCIsImdldFJldHJ5SW50ZXJ2YWwiLCJzZXRNZWRpYVN0cmVhbSIsIl90aGlzNSIsIm1lZGlhVHJhY2siLCJfdGhpczUkX3BlZXJDb25uZWN0aW8iLCJzZW5kZXIiLCJfc2VuZGVyJHRyYWNrIiwicmVwbGFjZVRyYWNrIiwiT2ZmbGluZSIsIkluaXRpYWxpemluZyIsIk5vdEZvdW5kIiwiR2VvUmVzdHJpY3RlZCIsIkdlb0Jsb2NrZWQiLCJSZWNvbm5lY3RpbmciLCJVbnN1cHBvcnRlZEZlYXR1cmUiLCJDb25maWd1cmF0aW9uRXJyb3IiLCJUcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3IiLCJDb25uZWN0aW9uRXJyb3IiLCJfaGFuZGxlU3RyZWFtRmFpbHVyZSIsInJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwiLCJfdGhpczYiLCJwdWJsaXNoZXJJbml0aWFsaXphdGlvbiIsImdlbmVyYXRlU2NyZWVuTmFtZSIsImFwcGx5UHVibGlzaFN0YXR1cyIsImFwcGx5VW5hdXRob3JpemVkIiwiYXBwbHlOb3RGb3VuZCIsImFwcGx5VW5oYW5kbGVkRXJyb3IiLCJhcHBseVNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIiwibWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiUHVibGlzaGVycyIsImNyZWF0ZVB1Ymxpc2hlciIsImluaXRpYWxpemVkIiwib3duS2V5cyIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImljZUNhbmRpZGF0ZUFjY3VtdWxhdGlvbkludGVydmFsIiwic29mdFJlc3RhcnRJbnRlcnZhbCIsInB1Ymxpc2hlckNvbnRleHQiLCJwZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJuYXZpZ2F0b3JJc09uTGluZSIsIm1lZGlhVHJhY2tzIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheSIsIl9yZWYzJCIsImNsaWVudE9mZmVyRGlzYWJsZWQiLCJzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24iLCJzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24iLCJhcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJzdWJtaXRDYW5kaWRhdGVzVGltZW91dCIsImNhbmNlbERpc2NvdmVyeSIsImNhbmRpZGF0ZSIsIl90aGlzJF9wdWJsaXNoZXJDb250ZSIsIl9yZWY0IiwibWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwicmV0cnlDYWxsYmFjayIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uIiwiX2NyZWF0ZUFuc3dlckRlc2NyaXB0IiwiYW5zd2VyIiwiX3JlZjUiLCJtYXBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1c1RvUHVibGlzaGVyU3RhdHVzIiwiX3RoaXMkX3B1Ymxpc2hlckNvbnRlMiIsInJ0Y1B1Ymxpc2hNb25pdG9yIiwiYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJydGNTdGF0aXN0aWMiLCJzdGF0aXN0aWNzIiwiX2FwcGx5UnRjQ29uZmlndXJhdGlvbiIsIm9wdGlvbmFsUGVlckNvbm5lY3Rpb24iLCJuZXdSdGNDb25maWd1cmF0aW9uIiwibWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9wZWVyQ29ubmVjdGlvbiRjdXJyZSIsImlzQ2xpZW50T2ZmZXJGbG93IiwicmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0IiwiaWNlUmVzdGFydCIsIm9mZmVyIiwiX19CVUlMRF9WRVJTSU9OX18iLCJfZGVmYXVsdFZlcnNpb24iLCJUZWxlbWV0cnlTZXJ2aWNlIiwiX3RlbGVtZXRyeVNlcnZpY2UiLCJsb2dSZWNvcmQiLCJfbG9ncyIsInNlbmRMb2dzSWZBYmxlIiwibG9nTWVzc2FnZXMiLCJfc2VuZExvZ3NJZkFibGUiLCJudW1iZXJPZkxvZ3NUb1NlbmQiLCJzaXplT2ZMb2dzVG9TZW5kIiwiZ2V0SXRlbVNpemUiLCJnZXRMb2dTaXplIiwic3VtIiwiZHVyYXRpb24iLCJfZHVyYXRpb24iLCJpc05lZ2F0aXZlIiwiYWJzIiwib2Zmc2V0IiwibWlsbGlzZWNvbmRzIiwic2Vjb25kcyIsIm1pbnV0ZXMiLCJob3VycyIsInBhcnRzIiwiU3RyaW5nIiwicGFkU3RhcnQiLCJ0YXJnZXRMZW5ndGgiLCJwYWRTdHJpbmciLCJyZXBlYXQiLCJkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiZGVmYXVsdE1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwibWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJiYWNrb2ZmSW50ZXJ2YWxJblNlY29uZHMiLCJyYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb24iLCJleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbkluTWlsbGlzZWNvbmQiLCJtYXgiLCJtaW4iLCJfbmV0d29ya01vbml0b3IiLCJyZWNvcmRGb3JlZ3JvdW5kQ2hhbmdlIiwicmVjb3JkTmV0d29ya1JUVFVwZGF0ZSIsInJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlIiwiZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJyZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUiLCJ0aW1lU2luY2VMYXN0Q2hhbmdlIiwibmV3UlRUIiwib2xkUnR0IiwiX2xhc3ROZXR3b3JrU3RhdGlzdGljcyIsIm5ld05ldHdvcmtUeXBlIiwib2xkTmV0d29ya1R5cGUiLCJuZXdDYXBhY2l0eSIsIm9sZENhcGFjaXR5IiwiZmxvYXQiXSwic291cmNlUm9vdCI6IiJ9
|
|
9201
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Vi9GLGNBQWMsRUFBZEEsdURBQWNBO0FBQ2hCLENBQUMsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9BcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0Jyb3dzZXJEZXRlY3Rvci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2RvbS9HYXJiYWdlQ29sbGVjdG9yTWFuYWdlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZG9tL05ldHdvcmtNb25pdG9yLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9kb20vU3RyZWFtU2V0dXBMaXN0ZW5lci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2VkZ2VBdXRoL0VkZ2VUb2tlbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2Vudmlyb25tZW50L1BhcmFtZXRlcnMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL0Rpc3Bvc2FibGUudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvRGlzcG9zYWJsZUxpc3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xhbmcvTnVtYmVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbGFuZy9TdHJpbmdzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sYW5nL2Fzc2VydFVucmVhY2hhYmxlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQXBwZW5kZXJzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvQ29uc29sZUFwcGVuZGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2VyRGVmYXVsdHMudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL2xvZ2dlci9Mb2dnZXJGYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbG9nZ2VyL0xvZ2dpbmdUaHJlc2hvbGQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL21ldHJpY3MvTWV0cmljVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzRmFjdG9yeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9NZXRyaWNzVHlwZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvbWV0cmljcy9UZWxlbWV0cmljTGV2ZWxNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9tZXRyaWNzL1RlbGVtZXRyeURlZmF1bHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Byb21pc2UvUHJvbWlzZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcHJvbWlzZS9Qcm9taXNlSGFuZGxlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvcnRjL1J0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9ydGMvUnRjUHVibGlzaE1vbml0b3IudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9TZHBQYXJzZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J0Yy9WYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9yeC9SZWFkT25seVN1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3J4L1N1YmplY3QudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9FbnZpcm9ubWVudC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1NESy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL1RlbGVtZXRyeVVybC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2NvbnRleHQvUGVlckNvbm5lY3Rpb25Db250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvY29udGV4dC9TdGF0ZUNvbnRleHQudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9jb250ZXh0L1Rva2VuQ29udGV4dC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2RlZmF1bHRzLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0JpdHJhdGVNb2RlTWFwcGluZy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9CaXRyYXRlU3RhdGVNYXBwaW5nLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9EaXNjb3ZlcnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvZGlzY292ZXJ5L0Rpc2NvdmVyeVVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9FbmRQb2ludC50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL2Rpc2NvdmVyeS9QY2FzdFVyaS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJDb250ZXh0LnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy9zZGsvcHVibGlzaC9QdWJsaXNoZXJTdGF0ZS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUHVibGlzaGVycy50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvc2RrL3B1Ymxpc2gvUmVhbFRpbWVQdWJsaXNoZXIudHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90ZWxlbWV0cnkvVGVsZW1ldHJ5QXBlbmRlci50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdGVsZW1ldHJ5L1RlbGVtZXRyeUNvbmZpZ3VyYXRpb24udHMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3RlbGVtZXRyeS9UZWxlbWV0cnlTZXJ2aWNlLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0R1cmF0aW9uLnRzIiwid2VicGFjazovL3BoZW5peC8uL3NyYy90aW1lL0V4cG9uZW50aWFsQmFja29mZi50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9zcmMvdmlkZW8vU2Vzc2lvblRlbGVtZXRyeS50cyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hcnJheUxpa2VUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2FycmF5V2l0aG91dEhvbGVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2Fzc2VydFRoaXNJbml0aWFsaXplZC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9hc3luY1RvR2VuZXJhdG9yLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NsYXNzQ2FsbENoZWNrLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2NvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9jcmVhdGVDbGFzcy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9nZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbmhlcml0cy5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pc05hdGl2ZUZ1bmN0aW9uLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdC5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pdGVyYWJsZVRvQXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvaXRlcmFibGVUb0FycmF5TGltaXQuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvbm9uSXRlcmFibGVSZXN0LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL25vbkl0ZXJhYmxlU3ByZWFkLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvcG9zc2libGVDb25zdHJ1Y3RvclJldHVybi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zZXRQcm90b3R5cGVPZi5qcyIsIndlYnBhY2s6Ly9waGVuaXgvLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvQ29uc3VtYWJsZUFycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJpbWl0aXZlLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3RvUHJvcGVydHlLZXkuanMiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvdHlwZW9mLmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzIiwid2VicGFjazovL3BoZW5peC8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS9oZWxwZXJzL3dyYXBOYXRpdmVTdXBlci5qcyIsIndlYnBhY2s6Ly9waGVuaXgvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL3BoZW5peC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGhlbml4L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGhlbml4Ly4vc3JjL3Nkay9wdWJsaXNoL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInBoZW5peFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJwaGVuaXhcIl0gPSBmYWN0b3J5KCk7XG59KShzZWxmLCAoKSA9PiB7XG5yZXR1cm4gIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge01pbGxpc2Vjb25kfSBmcm9tICcuLi91bml0cy9Vbml0cyc7XG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCBEaXNwb3NhYmxlTGlzdCBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGVMaXN0JztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG5jb25zdCB2aXNpYmlsaXR5Q2hhbmdlRXZlbnQgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5SXNGb3JlZ3JvdW5kOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRm9yZWdyb3VuZDogU3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBwcml2YXRlIF9sYXN0QmFja2dyb3VuZER1cmF0aW9uOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2lzRm9yZWdyb3VuZCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuICAgIHRoaXMuX3JlYWRPbmx5SXNGb3JlZ3JvdW5kID0gbmV3IFJlYWRPbmx5U3ViamVjdCh0aGlzLl9pc0ZvcmVncm91bmQpO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzRm9yZWdyb3VuZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUlzRm9yZWdyb3VuZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRUaW1lU2luY2VMYXN0Q2hhbmdlKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLl90aW1lT2ZMYXN0VGFiRm9jdXNDaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbigpOiBNaWxsaXNlY29uZCB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9sYXN0QmFja2dyb3VuZER1cmF0aW9uO1xuICB9XG5cbiAgcHVibGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIGxldCBiYWNrZ3JvdW5kRW50cnlUaW1lOiBNaWxsaXNlY29uZCB8IG51bGwgPSBudWxsO1xuICAgIGNvbnN0IGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBpc05vd0ZvcmVncm91bmQgPSAhR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRJc0hpZGRlbjtcblxuICAgICAgaWYgKCFpc05vd0ZvcmVncm91bmQpIHtcbiAgICAgICAgYmFja2dyb3VuZEVudHJ5VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBudWxsO1xuICAgICAgfSBlbHNlIGlmIChiYWNrZ3JvdW5kRW50cnlUaW1lKSB7XG4gICAgICAgIHRoaXMuX2xhc3RCYWNrZ3JvdW5kRHVyYXRpb24gPSBEYXRlLm5vdygpIC0gYmFja2dyb3VuZEVudHJ5VGltZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNGb3JlZ3JvdW5kLnZhbHVlID0gaXNOb3dGb3JlZ3JvdW5kO1xuICAgIH07XG5cbiAgICBjb25zdCB1c2VFdmVudENhcHR1cmVQaGFzZSA9IGZhbHNlO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkRG9jdW1lbnRFdmVudExpc3RlbmVyKHZpc2liaWxpdHlDaGFuZ2VFdmVudCwgaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSwgdXNlRXZlbnRDYXB0dXJlUGhhc2UpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLnJlbW92ZURvY3VtZW50RXZlbnRMaXN0ZW5lcih2aXNpYmlsaXR5Q2hhbmdlRXZlbnQsIGhhbmRsZVZpc2liaWxpdHlDaGFuZ2UsIHVzZUV2ZW50Q2FwdHVyZVBoYXNlKSkpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCcm93c2VyRGV0ZWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXggPSAvKE1TSUV8KD8hR2Vja28uKylGaXJlZm94fCg/IUFwcGxlV2ViS2l0LitDaHJvbWUuKylTYWZhcml8KD8hQXBwbGVXZWJLaXQuKylDaHJvbWV8QXBwbGVXZWJLaXQoPyEuK0Nocm9tZXwuK1NhZmFyaSl8R2Vja28oPyEuK0ZpcmVmb3gpKSg/OiB8XFwvKShbXFxkLmFwcmVdKykvZztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbigpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck5hbWUgPSBCcm93c2VyRGV0ZWN0b3IucGFyc2VCcm93c2VyTmFtZSgpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfYnJvd3Nlck1ham9yVmVyc2lvbiA9IEJyb3dzZXJEZXRlY3Rvci5wYXJzZUJyb3dzZXJNYWpvclZlcnNpb24oKTtcblxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNNb2JpbGUgPSAoL0FuZHJvaWR8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fE9wZXJhIE1pbmkvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0FuZHJvaWQgPSAoL0FuZHJvaWQvaSkudGVzdChuYXZpZ2F0b3I/LnVzZXJBZ2VudCk7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNjkgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzY5LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3MCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzAuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTcxID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83MS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzIgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzcyLicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NCA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzQuJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pc0Nocm9tZTc1ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uaW5jbHVkZXMoJ0Nocm9tZS83NS4nKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2lzQ2hyb21lNzYgPSBCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbi5pbmNsdWRlcygnQ2hyb21lLzc2LicpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfaXNDaHJvbWU3NyA9IEJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uLmluY2x1ZGVzKCdDaHJvbWUvNzcuJyk7XG5cbiAgc3RhdGljIGdldCBicm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGJyb3dzZXJOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJOYW1lO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2Jyb3dzZXJNYWpvclZlcnNpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQW5kcm9pZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0FuZHJvaWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNjkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU2OTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3MCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTcwO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTcxKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc0O1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0Nocm9tZTc1KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzQ2hyb21lNzU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzQ2hyb21lNzYoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5faXNDaHJvbWU3NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNDaHJvbWU3NygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLl9pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGlzTW9iaWxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuX2lzTW9iaWxlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb24oKTogc3RyaW5nIHtcbiAgICBpZiAoIW5hdmlnYXRvciB8fCAhbmF2aWdhdG9yLnVzZXJBZ2VudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IGJyb3dzZXJOYW1lQW5kVmVyc2lvbiA9IG5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb25SZWdleCk7XG5cbiAgICBpZiAoYnJvd3Nlck5hbWVBbmRWZXJzaW9uICYmIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXSkge1xuICAgICAgcmV0dXJuIGJyb3dzZXJOYW1lQW5kVmVyc2lvblswXTtcbiAgICB9XG5cbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLnBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uRm9ySUUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHBhcnNlQnJvd3Nlck5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIUJyb3dzZXJEZXRlY3Rvci5fYnJvd3Nlck5hbWVBbmRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3Nlck5hbWVMaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3Nlck5hbWVMaXN0IHx8ICFicm93c2VyTmFtZUxpc3RbMF0pIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gYnJvd3Nlck5hbWVMaXN0WzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uKCk6IG51bWJlciB7XG4gICAgaWYgKCFCcm93c2VyRGV0ZWN0b3IuX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgY29uc3QgYnJvd3NlclZlcnNpb25MaXN0ID0gQnJvd3NlckRldGVjdG9yLl9icm93c2VyTmFtZUFuZFZlcnNpb24uc3BsaXQoJy8nKTtcblxuICAgIGlmICghYnJvd3NlclZlcnNpb25MaXN0IHx8ICFicm93c2VyVmVyc2lvbkxpc3RbMV0pIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxWZXJzaW9uID0gYnJvd3NlclZlcnNpb25MaXN0WzFdO1xuXG4gICAgaWYgKCFmdWxsVmVyc2lvbikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIE51bWJlcihmdWxsVmVyc2lvbi5zcGxpdCgnLicpWzBdKSB8fCAwO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcGFyc2VCcm93c2VyTmFtZUFuZFZlcnNpb25Gb3JJRSgpOiBzdHJpbmcge1xuICAgIGlmICghbmF2aWdhdG9yIHx8ICFuYXZpZ2F0b3IudXNlckFnZW50KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBjb25zdCBtc2llID0gdXNlckFnZW50LmluZGV4T2YoJ01TSUUgJyk7XG5cbiAgICBpZiAobXNpZSA+IDApIHtcbiAgICAgIC8vIElFIDEwIG9yIG9sZGVyID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcobXNpZSArIDUsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgbXNpZSkpLCAxMCl9YDtcbiAgICB9XG5cbiAgICBjb25zdCB0cmlkZW50ID0gdXNlckFnZW50LmluZGV4T2YoJ1RyaWRlbnQvJyk7XG5cbiAgICBpZiAodHJpZGVudCA+IDApIHtcbiAgICAgIC8vIElFIDExID0+IHJldHVybiB2ZXJzaW9uIG51bWJlclxuICAgICAgY29uc3QgdmVyc2lvbiA9IHVzZXJBZ2VudC5pbmRleE9mKCdydjonKTtcblxuICAgICAgcmV0dXJuIGBJRS8ke3BhcnNlSW50KHVzZXJBZ2VudC5zdWJzdHJpbmcodmVyc2lvbiArIDMsIHVzZXJBZ2VudC5pbmRleE9mKCcuJywgdmVyc2lvbikpLCAxMCl9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRGVmYXVsdHMgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCBMb2dnaW5nTGV2ZWxNYXBwaW5nIGZyb20gJy4uL2xvZ2dlci9Mb2dnaW5nTGV2ZWxNYXBwaW5nJztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIGdldFN0cmluZ1ZhbHVlKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lKSB8fFxuICAgICAgQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclVSSVZhbHVlKGAke25hbWV9LXVyaS1wYXJhbWV0ZXItbmFtZWApIHx8XG4gICAgICBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmRlZmF1bHRTdHJpbmdWYWx1ZVtuYW1lXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0Qm9vbGVhblZhbHVlKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5yZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlKG5hbWUpO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09ICd0cnVlJyB8fCB2YWx1ZSA9PT0gJzEnIHx8IHZhbHVlID09PSAnT24nO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlRnJvbVVyaSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIucmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZShgJHtuYW1lfS11cmktcGFyYW1ldGVyLW5hbWVgKTtcblxuICAgIGlmICh2YWx1ZUZyb21VcmkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUZyb21VcmkgPT09ICd0cnVlJyB8fCB2YWx1ZUZyb21VcmkgPT09ICcxJyB8fCB2YWx1ZUZyb21VcmkgPT09ICdPbic7XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZGVmYXVsdEJvb2xlYW5WYWx1ZVtuYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0U3RyaW5nVmFsdWUoKTogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtbWV0cmljcy1sZXZlbCc6IFRlbGVtZXRyeUxldmVsTWFwcGluZy5jb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZShUZWxlbWV0cnlEZWZhdWx0LmRlZmF1bHRUZWxlbWV0cnlMZXZlbCksXG4gICAgICAncGhlbml4LWxvZ2dpbmctbGV2ZWwnOiBMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUoTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdExvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LWNvbnNvbGUtbG9nZ2luZy1sZXZlbCc6IExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZShMb2dnZXJEZWZhdWx0cy5kZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCksXG4gICAgICAncGhlbml4LXRlbGVtZXRyeS1sb2dnaW5nLWxldmVsJzogTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKExvZ2dlckRlZmF1bHRzLmRlZmF1bHRUZWxlbWV0cnlMb2dnaW5nTGV2ZWwpLFxuICAgICAgJ3BoZW5peC1jaGFubmVsLXRva2VuJzogJycsXG4gICAgICAncGhlbml4LXVyaSc6ICcnLFxuICAgICAgJ3BoZW5peC1iYXNlLXVyaSc6ICcnXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkZWZhdWx0Qm9vbGVhblZhbHVlKCk6IHsgW25hbWU6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtYXV0b21hdGljYWxseS1yZWNvbm5lY3QtcGVlci1jb25uZWN0aW9uJzogdHJ1ZSxcbiAgICAgICdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnOiB0cnVlLFxuICAgICAgJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcyc6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJWYWx1ZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IG1ldGFWYWx1ZSA9IEdsb2JhbFNjb3BlLnZhbHVlLmRvY3VtZW50UXVlcnlTZWxlY3RvcihgbWV0YVtuYW1lPScke25hbWV9J11gKTtcblxuICAgIGlmICghbWV0YVZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBtZXRhVmFsdWUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVVJJVmFsdWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCB2YWx1ZVVSSVBhcmFtZXRlck5hbWUgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLnJlYWRDb25maWd1cmF0aW9uUGFyYW1ldGVyVmFsdWUobmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlVVJJUGFyYW1ldGVyTmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTFNlYXJjaFBhcmFtcyhHbG9iYWxTY29wZS52YWx1ZS5sb2NhdGlvblNlYXJjaCkuZ2V0KHZhbHVlVVJJUGFyYW1ldGVyTmFtZSkgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL3Nkay9TREsnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciB7XG4gIHN0YXRpYyBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC5pc01vYmlsZSAmJiBTREsuc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzRm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvblN1cHBvcnRlZCkge1xuICAgICAgdGhpcy5mb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoRmVhdHVyZUVuYWJsZW1lbnQuaXNRdWV1ZU1pY3JvdGFza1N1cHBvcnRlZCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUucXVldWVNaWNyb3Rhc2sodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQodGhpcy5vdmVybG9hZE1lbW9yeVRvSW52b2tlR2FyYmFnZUNvbGxlY3Rpb24uYmluZCh0aGlzKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3ZlcmxvYWRNZW1vcnlUb0ludm9rZUdhcmJhZ2VDb2xsZWN0aW9uKCk6IHZvaWQge1xuICAgIGxldCBpbWc6IEhUTUxJbWFnZUVsZW1lbnQgfCBudWxsID0gR2xvYmFsU2NvcGUudmFsdWUuZG9jdW1lbnRDcmVhdGVFbGVtZW50PEhUTUxJbWFnZUVsZW1lbnQ+KCdpbWcnKTtcblxuICAgIGltZy5zcmMgPSBHbG9iYWxTY29wZS52YWx1ZS5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMTBlKzcpXSkpOyAvLyAxMDBNYiBvciBsZXNzIG9yIG1vcmUgZGVwZW5kaW5nIG9uIGFzIHlvdSB3aXNoIHRvIGZvcmNlL2ludm9rZSBHQyBjeWNsZSBydW5cbiAgICBpbWcub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgR2xvYmFsU2NvcGUudmFsdWUuVVJMLnJldm9rZU9iamVjdFVSTCh0aGlzLnNyYyk7XG5cbiAgICAgIGltZyA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IERpc3Bvc2FibGVMaXN0IGZyb20gJy4uL2xhbmcvRGlzcG9zYWJsZUxpc3QnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ldHdvcmtNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwb3NhYmxlczogRGlzcG9zYWJsZUxpc3QgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNTdXBwb3J0ZWQ6IGJvb2xlYW4gPSBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uICE9PSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3J0dDogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lZmZlY3RpdmVUeXBlOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OiBTdWJqZWN0PG51bWJlciB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zZXR1cE5ldHdvcmtDaGFuZ2VMaXN0ZW5lcnMoKTtcbiAgICB0aGlzLnVwZGF0ZVN0YXRpc3RpY3MoKTtcbiAgfVxuXG4gIGdldCBpc1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNTdXBwb3J0ZWQ7XG4gIH1cblxuICBnZXQgcnR0KCk6IFN1YmplY3Q8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX3J0dDtcbiAgfVxuXG4gIGdldCBlZmZlY3RpdmVUeXBlKCk6IFN1YmplY3Q8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VmZmVjdGl2ZVR5cGU7XG4gIH1cblxuICBnZXQgZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogU3ViamVjdDxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fZG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmsgPz8gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZG93bmxpbmtNYXggPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIGdldEVmZmVjdGl2ZVR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uZWZmZWN0aXZlVHlwZSA/PyBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy50eXBlID8/ICdVbmtub3duJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Um91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JDb25uZWN0aW9uPy5ydHQgPz8gLTE7XG4gIH1cblxuICBwcml2YXRlIHNldHVwTmV0d29ya0NoYW5nZUxpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ZW5lciA9ICgpOiB2b2lkID0+IHRoaXMudXBkYXRlU3RhdGlzdGljcygpO1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUubmF2aWdhdG9yQ29ubmVjdGlvbj8uYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpO1xuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKG5ldyBEaXNwb3NhYmxlKCgpID0+IEdsb2JhbFNjb3BlLnZhbHVlLm5hdmlnYXRvckNvbm5lY3Rpb24/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIGxpc3RlbmVyKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdGF0aXN0aWNzKCk6IHZvaWQge1xuICAgIHRoaXMuX3J0dC52YWx1ZSA9IHRoaXMuZ2V0Um91bmRUcmlwVGltZSgpO1xuICAgIHRoaXMuX2VmZmVjdGl2ZVR5cGUudmFsdWUgPSB0aGlzLmdldEVmZmVjdGl2ZVR5cGUoKTtcbiAgICB0aGlzLl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eS52YWx1ZSA9IHRoaXMuZ2V0RG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkoKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IE1ldHJpY1R5cGUgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcblxuZXhwb3J0IGNsYXNzIFN0cmVhbVNldHVwTGlzdGVuZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU3RyZWFtU2V0dXBMaXN0ZW5lcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1ldHJpY3NTZXJ2aWNlID0gU0RLLm1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYWdlTG9hZFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhcnRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX21ldHJpY1N1Ym1pdHRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdWNjZXNzKHN0cmVhbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZCwgc3RyZWFtSWQpO1xuICB9XG5cbiAgZmFpbCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlY29yZFN0cmVhbU1ldHJpYyhNZXRyaWNzVHlwZS5TZXR1cEZhaWxlZCk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZFN0cmVhbU1ldHJpYyhtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZSwgc3RyZWFtSWQ/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fbWV0cmljU3VibWl0dGVkKSB7XG4gICAgICByZXR1cm4gO1xuICAgIH1cblxuICAgIHRoaXMuX21ldHJpY1N1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNldHVwVGltZSA9IG5vdyAtIHRoaXMuX3N0YXJ0VGltZTtcbiAgICBjb25zdCBtZXRyaWNOYW1lID0gbmV3IE1ldHJpY1R5cGUobWV0cmljVHlwZSkuZ2V0TmFtZSgpO1xuXG4gICAgdGhpcy5tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogc2V0dXBUaW1lfSxcbiAgICAgIHN0cmVhbUlkXG4gICAgfSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbyhcbiAgICAgICdbJXNdIFslc10gU3RyZWFtIG1ldHJpYyBbJXNdIGluIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBzdHJlYW1JZCxcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBuZXcgRHVyYXRpb25zKHNldHVwVGltZSkudG9Jc29TdHJpbmcoKVxuICAgICk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgRWRnZVRva2VuIGZyb20gJy4vRWRnZVRva2VuJztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi9FbmNvZGVkRWRnZVRva2VuJztcblxuY29uc3QgZWRnZUF1dGhUb2tlblByZWZpeCA9ICdESUdFU1Q6JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZUF1dGhQYXJzZXIge1xuICBwcml2YXRlIHN0YXRpYyBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ0VkZ2VBdXRoUGFyc2VyJyk7XG5cbiAgc3RhdGljIHBhcnNlVG9rZW4odG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBFZGdlVG9rZW4ge1xuICAgIGlmICghdGhpcy5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ1Rva2VuIGlzIG5vdCB2YWxpZCBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb2RlZFRva2VuID0gYXRvYih0b2tlbi5zdWJzdHIoZWRnZUF1dGhUb2tlblByZWZpeC5sZW5ndGgpKTtcbiAgICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEpTT04ucGFyc2UoZGVjb2RlZFRva2VuKTtcblxuICAgICAgZWRnZVRva2VuLnRva2VuID0gSlNPTi5wYXJzZShlZGdlVG9rZW4udG9rZW4pO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihlZGdlVG9rZW4pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIEVkZ2VBdXRoUGFyc2VyLl9sb2dnZXIuZXJyb3IoJ0Nhbm5vdCBwYXJzZSB0b2tlbiB2YWx1ZScsIGUpO1xuXG4gICAgICByZXR1cm4gbmV3IEVkZ2VUb2tlbihudWxsKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQodG9rZW46IEVuY29kZWRFZGdlVG9rZW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0b2tlbiAmJiB0b2tlbi5zdGFydHNXaXRoKGVkZ2VBdXRoVG9rZW5QcmVmaXgpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5pbnRlcmZhY2UgSVRva2VuIHtcbiAgdXJpOiBVUkwgfCBudWxsO1xuICBjYXBhYmlsaXRpZXM6IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgSUVkZ2VUb2tlbiB7XG4gIGFwcGxpY2F0aW9uSWQ6IHN0cmluZztcbiAgdG9rZW46IElUb2tlbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWRnZVRva2VuIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b2tlbjogSVRva2VuO1xuXG4gIGNvbnN0cnVjdG9yKGVkZ2VUb2tlbjogSUVkZ2VUb2tlbiB8IG51bGwpIHtcbiAgICB0aGlzLl9hcHBsaWNhdGlvbklkID0gZWRnZVRva2VuPy5hcHBsaWNhdGlvbklkIHx8ICcnO1xuICAgIHRoaXMuX3Rva2VuID0ge1xuICAgICAgdXJpOiBlZGdlVG9rZW4/LnRva2VuPy51cmkgPyBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGVkZ2VUb2tlbi50b2tlbi51cmkpIDogbnVsbCxcbiAgICAgIGNhcGFiaWxpdGllczogZWRnZVRva2VuPy50b2tlbj8uY2FwYWJpbGl0aWVzIHx8IFtdXG4gICAgfTtcbiAgfVxuXG4gIGdldCB1cmkoKTogVVJMIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuLnVyaTtcbiAgfVxuXG4gIGdldCBjYXBhYmlsaXRpZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbi5jYXBhYmlsaXRpZXM7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbklkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0xvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4uL21ldHJpY3MvTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuXG5kZWNsYXJlIGNvbnN0IF9fRkVBVFVSRVNfXzoge1xuICBzZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBzZW5kTG9nczogTG9nZ2luZ0xldmVsVHlwZTtcbiAgc2VuZE1ldHJpY3M6IFRlbGVtZXRyeUxldmVsVHlwZTtcbiAgbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRGZWF0dXJlcyB7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTG9jYWxDYW5kaWRhdGVzOiBib29sZWFuO1xuICBwcml2YXRlIHN0YXRpYyBfc2VuZExvZ3M6IExvZ2dpbmdMZXZlbFR5cGU7XG4gIHByaXZhdGUgc3RhdGljIF9zZW5kTWV0cmljczogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBwcml2YXRlIHN0YXRpYyBfbG9nVG9Db25zb2xlOiBMb2dnaW5nTGV2ZWxUeXBlO1xuXG4gIHN0YXRpYyBnZXQgc2VuZExvY2FsQ2FuZGlkYXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VuZExvY2FsQ2FuZGlkYXRlcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2VuZExvZ3MoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2dzO1xuICB9XG5cbiAgc3RhdGljIGdldCBzZW5kTWV0cmljcygpOiBUZWxlbWV0cnlMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9zZW5kTWV0cmljcztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbG9nVG9Db25zb2xlKCk6IExvZ2dpbmdMZXZlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9sb2dUb0NvbnNvbGU7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGZWF0dXJlcygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmVhdHVyZXMgPSBfX0ZFQVRVUkVTX187XG5cbiAgICAgIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXMgPSAnc2VuZExvY2FsQ2FuZGlkYXRlcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTG9jYWxDYW5kaWRhdGVzIDogdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ3NlbmRMb2dzJyBpbiBmZWF0dXJlcyA/IGZlYXR1cmVzLnNlbmRMb2dzIDogJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdzZW5kTWV0cmljcycgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5zZW5kTWV0cmljcyA6ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ2xvZ1RvQ29uc29sZScgaW4gZmVhdHVyZXMgPyBmZWF0dXJlcy5sb2dUb0NvbnNvbGUgOiAnQWxsJztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9zZW5kTG9jYWxDYW5kaWRhdGVzID0gdHJ1ZTtcbiAgICAgIHRoaXMuX3NlbmRMb2dzID0gJ0FsbCc7XG4gICAgICB0aGlzLl9zZW5kTWV0cmljcyA9ICdBbGwnO1xuICAgICAgdGhpcy5fbG9nVG9Db25zb2xlID0gJ0FsbCc7XG4gICAgfVxuICB9XG59XG5cbkJ1aWxkRmVhdHVyZXMuYXBwbHlGZWF0dXJlcygpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZlYXR1cmVFbmFibGVtZW50IHtcbiAgc3RhdGljIGdldCBjbGllbnRPZmZlckRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIENsaWVudCBvZmZlciB3b3JrZmxvdyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSBpbiB0aGUgZm9sbG93aW5nIGJyb3dzZXJzXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc0IHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3NSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzYgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTc3O1xuICB9XG5cbiAgc3RhdGljIGdldCBnZXRUcmFuc2NlaXZlcnNEaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRmVhdHVyZUVuYWJsZW1lbnQuYWRkVHJhbmNlaXZlckRpc2FibGVkO1xuICB9XG5cbiAgc3RhdGljIGdldCBhZGRUcmFuY2VpdmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgLy8gQ2hyb21lIDY5LCA3MCwgNzEsIDcyIGV4cG9zZXMgYGFkZFRyYW5jZWl2ZXJgIGJ1dCBpdCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseVxuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmlzQ2hyb21lNzAgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5pc0Nocm9tZTcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuaXNDaHJvbWU3MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0U3RhdHNQcm9taXNlQmFzZWREaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnQ2hyb21lJyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA2NjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgZ2V0Q3VycmVudE9mZmVyRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjkgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDU2O1xuICB9XG5cbiAgc3RhdGljIGdldCBvblRyYWNrRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNjMgfHxcbiAgICAgIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uIDw9IDUyO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSA9PT0gJ0Nocm9tZScgJiYgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJNYWpvclZlcnNpb24gPD0gNTU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA8PSA1MjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgc2hvdWxkVXNlTmF0aXZlSGxzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYWZhcmknIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdTYW1zdW5nQnJvd3Nlcic7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUHJlY2FjaGluZ0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0lFJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8uZG9jdW1lbnRDcmVhdGVFbGVtZW50ID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc1F1ZXVlTWljcm90YXNrU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdDaHJvbWUnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTWFqb3JWZXJzaW9uID49IDcxIHx8XG4gICAgICBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgPT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck1ham9yVmVyc2lvbiA+PSA2OSB8fFxuICAgICAgQnJvd3NlckRldGVjdG9yLmJyb3dzZXJOYW1lID09PSAnU2FmYXJpJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNNb2JpbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5pc01vYmlsZSgpO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0luc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHR5cGVvZiBNZWRpYVN0cmVhbVRyYWNrUHJvY2Vzc29yID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IgPT09ICd1bmRlZmluZWQnKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBSVENSdHBSZWNlaXZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIFJUQ1J0cFJlY2VpdmVyLnByb3RvdHlwZS5jcmVhdGVFbmNvZGVkU3RyZWFtcyAhPT0gJ3VuZGVmaW5lZCc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUlRDUnRwU2NyaXB0VHJhbnNmb3JtU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgUlRDUnRwU2NyaXB0VHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNQcm90ZWN0ZWRDaGFubmVsU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIC8vIEZpcmVmb3ggRFJNIHBsYXliYWNrIGV4aGliaXRzIGluY29uc2lzdGVudCBwZXJmb3JtYW5jZTsgcm9vdCBjYXVzZSBpbnZlc3RpZ2F0aW9uIHBlbmRpbmdcbiAgICAvLyBTYWZhcmkgbGFja3MgcGxhdGZvcm0gc3VwcG9ydCBmb3IgRmFpclBsYXkgRFJNIGltcGxlbWVudGF0aW9uXG4gICAgcmV0dXJuIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ0ZpcmVmb3gnICYmIEJyb3dzZXJEZXRlY3Rvci5icm93c2VyTmFtZSAhPT0gJ1NhZmFyaSc7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHlwZW9mIEdsb2JhbFNjb3BlLnZhbHVlPy5IVE1MVmlkZW9FbGVtZW50LnByb3RvdHlwZS5yZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrICE9PSAndW5kZWZpbmVkJztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgaXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVTdXBwb3J0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBHbG9iYWxTY29wZS52YWx1ZT8ucmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgc3RhdGljIGdldCBpc0NoYW5uZWxGcmFtZVRpbWluZ0luZm9ybWF0aW9uU3VwcG9ydGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBGZWF0dXJlRW5hYmxlbWVudC5pc1JlcXVlc3RWaWRlb0ZyYW1lQ2FsbGJhY2tTdXBwb3J0ZWRcbiAgICAgICYmIChGZWF0dXJlRW5hYmxlbWVudC5pc0VuY29kZWRJbnNlcnRhYmxlU3RyZWFtc1N1cHBvcnRlZCB8fCBGZWF0dXJlRW5hYmxlbWVudC5pc1JUQ1J0cFNjcmlwdFRyYW5zZm9ybVN1cHBvcnRlZCk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdGaXJlZm94JyAmJiBCcm93c2VyRGV0ZWN0b3IuYnJvd3Nlck5hbWUgIT09ICdTYWZhcmknO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fUEFSQU1FVEVSU19fOiB7XG4gIGRpc2NvdmVyeTogSURpc2NvdmVyeVBhcmFtZXRlcjtcbn07XG5cbmludGVyZmFjZSBJRGlzY292ZXJ5UGFyYW1ldGVye1xuICBpbnRlbnRpb25zOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcmFtZXRlcnMge1xuICBwcml2YXRlIHN0YXRpYyBfZGlzY292ZXJ5UGFyYW1ldGVyczogSURpc2NvdmVyeVBhcmFtZXRlciA7XG5cbiAgc3RhdGljIGdldCBkaXNjb3ZlcnlQYXJhbWV0ZXJzKCk6IElEaXNjb3ZlcnlQYXJhbWV0ZXIge1xuICAgIHJldHVybiB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5UGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFyYW1ldGVycyA9IF9fUEFSQU1FVEVSU19fO1xuXG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0gJ2Rpc2NvdmVyeScgaW4gcGFyYW1ldGVycyA/IHBhcmFtZXRlcnMuZGlzY292ZXJ5IDoge2ludGVudGlvbnM6ICcnfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLl9kaXNjb3ZlcnlQYXJhbWV0ZXJzID0ge2ludGVudGlvbnM6ICcnfTtcbiAgICB9XG4gIH1cbn1cblxuUGFyYW1ldGVycy5hcHBseVBhcmFtZXRlcnMoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBJR2xvYmFsU2NvcGUgZnJvbSAnLi9JR2xvYmFsU2NvcGUnO1xuaW1wb3J0IElEb2N1bWVudCBmcm9tICcuL0lEb2N1bWVudCc7XG5pbXBvcnQgSUxvY2F0aW9uIGZyb20gJy4vSUxvY2F0aW9uJztcbmltcG9ydCBJTmV0d29ya0luZm9ybWF0aW9uIGZyb20gJy4vSU5ldHdvcmtJbmZvcm1hdGlvbic7XG5pbXBvcnQgSU5hdmlnYXRvciBmcm9tICcuL0lOYXZpZ2F0b3InO1xuaW1wb3J0IElXaW5kb3cgZnJvbSAnLi9JV2luZG93JztcbmltcG9ydCBJUHJvdmlkZWRHbG9iYWxTY29wZSBmcm9tICcuL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuXG50eXBlIEJyb3dzZXJHbG9iYWxTY29wZSA9IElQcm92aWRlZEdsb2JhbFNjb3BlO1xuXG5jb25zdCBicm93c2VyR2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSA9IHtcbiAgZG9jdW1lbnQsXG4gIGxvY2F0aW9uLFxuICBuYXZpZ2F0b3IsXG4gIHdpbmRvd1xufTtcblxuZXhwb3J0IGNsYXNzIEdsb2JhbFNjb3BlIGltcGxlbWVudHMgSUdsb2JhbFNjb3BlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2luc3RhbmNlID0gbmV3IFN1YmplY3Q8SUdsb2JhbFNjb3BlPihuZXcgR2xvYmFsU2NvcGUoYnJvd3Nlckdsb2JhbFNjb3BlKSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seUluc3RhbmNlOiBSZWFkT25seVN1YmplY3Q8SUdsb2JhbFNjb3BlPiA9IG5ldyBSZWFkT25seVN1YmplY3QoR2xvYmFsU2NvcGUuX2luc3RhbmNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IElEb2N1bWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9jYXRpb246IElMb2NhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdG9yOiBJTmF2aWdhdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF93aW5kb3c6IElXaW5kb3c7XG5cbiAgY29uc3RydWN0b3IoZ2xvYmFsU2NvcGU6IEJyb3dzZXJHbG9iYWxTY29wZSkge1xuICAgIHRoaXMuX2RvY3VtZW50ID0gZ2xvYmFsU2NvcGUuZG9jdW1lbnQ7XG4gICAgdGhpcy5fbG9jYXRpb24gPSBnbG9iYWxTY29wZS5sb2NhdGlvbjtcbiAgICB0aGlzLl9uYXZpZ2F0b3IgPSBnbG9iYWxTY29wZS5uYXZpZ2F0b3I7XG4gICAgdGhpcy5fd2luZG93ID0gZ2xvYmFsU2NvcGUud2luZG93O1xuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgcmVxdWlyZWQgdG8gbWFpbnRhaW4gQVBJIGNvbnNpc3RlbmN5IHdpdGggUHJvdmlkZWRHbG9iYWxTY29wZVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gIC8vIEB0cy1pZ25vcmVcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgc3RhdGljIHNldEluc3RhbmNlKHByb3ZpZGVkR2xvYmFsU2NvcGU6IElQcm92aWRlZEdsb2JhbFNjb3BlKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGJ1aWxkIGRvZXMgbm90IHN1cHBvcnQgc2V0dGluZyB0aGUgR2xvYmFsU2NvcGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogUmVhZE9ubHlTdWJqZWN0PElHbG9iYWxTY29wZT4ge1xuICAgIHJldHVybiBHbG9iYWxTY29wZS5fcmVhZE9ubHlJbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc3Vic2NyaWJlKGNhbGxiYWNrOiAodmFsdWU6IElHbG9iYWxTY29wZSB8IG51bGwpID0+IHZvaWQpOiBJRGlzcG9zYWJsZSB7XG4gICAgcmV0dXJuIEdsb2JhbFNjb3BlLl9yZWFkT25seUluc3RhbmNlLnN1YnNjcmliZShjYWxsYmFjayk7XG4gIH1cblxuICBnZXQgQWJvcnRDb250cm9sbGVyKCk6IHR5cGVvZiBBYm9ydENvbnRyb2xsZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuQWJvcnRDb250cm9sbGVyO1xuICB9XG5cbiAgZ2V0IEZvcm1EYXRhKCk6IHR5cGVvZiBGb3JtRGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5Gb3JtRGF0YTtcbiAgfVxuXG4gIGdldCBIVE1MVmlkZW9FbGVtZW50KCk6IHR5cGVvZiBIVE1MVmlkZW9FbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LkhUTUxWaWRlb0VsZW1lbnQ7XG4gIH1cblxuICBnZXQgTWVkaWFTdHJlYW0oKTogdHlwZW9mIE1lZGlhU3RyZWFtIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93Lk1lZGlhU3RyZWFtO1xuICB9XG5cbiAgZ2V0IE1lZGlhU3RyZWFtVHJhY2soKTogdHlwZW9mIE1lZGlhU3RyZWFtVHJhY2sge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTdHJlYW1UcmFjaztcbiAgfVxuXG4gIGdldCBNZWRpYVNvdXJjZSgpOiB0eXBlb2YgTWVkaWFTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuTWVkaWFTb3VyY2U7XG4gIH1cblxuICBnZXQgUlRDUGVlckNvbm5lY3Rpb24oKTogdHlwZW9mIFJUQ1BlZXJDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1BlZXJDb25uZWN0aW9uO1xuICB9XG5cbiAgZ2V0IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbigpOiB0eXBlb2YgUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlJUQ1Nlc3Npb25EZXNjcmlwdGlvbjtcbiAgfVxuXG4gIGdldCBSVENJY2VDYW5kaWRhdGUoKTogdHlwZW9mIFJUQ0ljZUNhbmRpZGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5SVENJY2VDYW5kaWRhdGU7XG4gIH1cblxuICBnZXQgVVJMKCk6IHR5cGVvZiBVUkwge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuVVJMO1xuICB9XG5cbiAgZ2V0IFVSTFNlYXJjaFBhcmFtcygpOiB0eXBlb2YgVVJMU2VhcmNoUGFyYW1zIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LlVSTFNlYXJjaFBhcmFtcztcbiAgfVxuXG4gIGdldCBhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IGFkZFdpbmRvd0V2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuYWRkRXZlbnRMaXN0ZW5lci5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJJbnRlcnZhbCgpOiAoaWQ/OiBudW1iZXIgfCB1bmRlZmluZWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cuY2xlYXJJbnRlcnZhbC5iaW5kKHRoaXMuX3dpbmRvdyk7XG4gIH1cblxuICBnZXQgY2xlYXJUaW1lb3V0KCk6IChpZD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3dpbmRvdy5jbGVhclRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgpOiA8RWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50Pih0YWc6IHN0cmluZykgPT4gRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRIYXNGb2N1cygpOiAoKSA9PiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZG9jdW1lbnQuaGFzRm9jdXMuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZG9jdW1lbnRJc0hpZGRlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kb2N1bWVudC5oaWRkZW47XG4gIH1cblxuICBnZXQgZG9jdW1lbnRRdWVyeVNlbGVjdG9yKCk6IDxFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KHRhZzogc3RyaW5nKSA9PiBFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IuYmluZCh0aGlzLl9kb2N1bWVudCk7XG4gIH1cblxuICBnZXQgZmV0Y2goKTogKGlucHV0OiBzdHJpbmcgfCBVUkwgfCBSZXF1ZXN0LCBpbml0PzogUmVxdWVzdEluaXQpID0+IFByb21pc2U8UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LmZldGNoLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBsb2NhdGlvbkhvc3RuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLmhvc3RuYW1lO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uU2VhcmNoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvY2F0aW9uLnNlYXJjaDtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JDb25uZWN0aW9uKCk6IElOZXR3b3JrSW5mb3JtYXRpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0b3IuY29ubmVjdGlvbjtcbiAgfVxuXG4gIGdldCBuYXZpZ2F0b3JJc09uTGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLm9uTGluZTtcbiAgfVxuXG4gIGdldCBwYWdlTG9hZFRpbWUoKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93WydfX3BoZW5peFBhZ2VMb2FkVGltZSddIHx8IHRoaXMuX3dpbmRvd1snX19wYWdlTG9hZFRpbWUnXTtcbiAgfVxuXG4gIGdldCBzZW5kQmVhY29uKCk6ICgodXJsOiBzdHJpbmcgfCBVUkwsIGRhdGE/OiBCb2R5SW5pdCB8IG51bGwpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb25cbiAgICAgID8gKHVybCwgZGF0YSkgPT4gdGhpcy5fbmF2aWdhdG9yLnNlbmRCZWFjb24hKHVybCwgZGF0YSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGRhdGEpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBxdWV1ZU1pY3JvdGFzaygpOiAobWljcm90YXNrOiAoKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnF1ZXVlTWljcm90YXNrLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIoKTogKHR5cGU6IHN0cmluZywgbGlzdGVuZXI6IChldmVudDogRXZlbnQpID0+IHZvaWQsIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyLmJpbmQodGhpcy5fZG9jdW1lbnQpO1xuICB9XG5cbiAgZ2V0IHJlcXVlc3RBbmltYXRpb25GcmFtZSgpOiAoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKSA9PiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCByZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCk6ICh0eXBlOiBzdHJpbmcsIGxpc3RlbmVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG5cbiAgZ2V0IHNldEludGVydmFsKCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldEludGVydmFsLmJpbmQodGhpcy5fd2luZG93KTtcbiAgfVxuXG4gIGdldCBzZXRUaW1lb3V0KCk6IChoYW5kbGVyOiBzdHJpbmcgfCBGdW5jdGlvbiwgdGltZW91dD86IG51bWJlciB8IHVuZGVmaW5lZCkgPT4gbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fd2luZG93LnNldFRpbWVvdXQuYmluZCh0aGlzLl93aW5kb3cpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGUgaW1wbGVtZW50cyBJRGlzcG9zYWJsZSB7XG4gIHByaXZhdGUgX2Rpc3Bvc2VkOiBib29sZWFuO1xuICBwcml2YXRlIF9kaXNwb3NhYmxlOiAoKSA9PiB2b2lkO1xuXG4gIGNvbnN0cnVjdG9yKGRpc3Bvc2FibGU6ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLl9kaXNwb3NlZCA9IGZhbHNlO1xuICAgIHRoaXMuX2Rpc3Bvc2FibGUgPSBkaXNwb3NhYmxlO1xuICB9XG5cbiAgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fZGlzcG9zZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9kaXNwb3NlZCA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5fZGlzcG9zYWJsZS5jYWxsKHRoaXMpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi9JRGlzcG9zYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3Bvc2FibGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGlzdDogSURpc3Bvc2FibGVbXSA9IFtdO1xuXG4gIGFkZChkaXNwb3NhYmxlOiBJRGlzcG9zYWJsZSk6IHZvaWQge1xuICAgIHRoaXMuX2xpc3QucHVzaChkaXNwb3NhYmxlKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbGlzdC5mb3JFYWNoKGRpc3Bvc2FibGUgPT4gZGlzcG9zYWJsZS5kaXNwb3NlKCkpO1xuICAgIHRoaXMuX2xpc3QubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBEaXNwb3NhYmxlTGlzdFtkaXNwb3NhYmxlcz0ke3RoaXMuX2xpc3QubGVuZ3RofV1gO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG4vLyBBcyBmbG9hdCBpbiBFQ01BU2NyaXB0IHVzZSA2NC1iaXQgZm9ybWF0IGl0IGNhbm5vdCBoYXZlL2hhbmRsZSBtb3JlIHRoYW4gMTUgc3ltYm9scyBhZnRlciBkb3QuXG5jb25zdCBtYXhEaWdpdHNJbkZsb2F0QWZ0ZXJEb3QgPSAxNTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVycyB7XG4gIHN0YXRpYyBjb3VudE51bWJlckxlbmd0aCh2YWx1ZTogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBsZXQgaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSA9IDA7XG4gICAgbGV0IG51bWJlciA9IHZhbHVlO1xuXG4gICAgaWYgKG51bWJlciA8IDApIHtcbiAgICAgIG51bWJlciAqPSAtMTtcbiAgICAgIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUrKztcbiAgICB9XG5cbiAgICByZXR1cm4gTnVtYmVycy5jb3VudERpZ2l0c0JlZm9yZURlY2ltYWwobnVtYmVyKSArIGluY3JlbWVudEZvck5lZ2F0aXZlVmFsdWUgKyAobnVtYmVyICE9PSBNYXRoLmZsb29yKG51bWJlcikgPyBOdW1iZXJzLmNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsKG51bWJlcikgKyAxIDogMCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmaXhSb3VuZGluZyh2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgcG93ZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uKTtcblxuICAgIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogcG93ZXIpIC8gcG93ZXI7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb3VudERpZ2l0c0JlZm9yZURlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGRpZ2l0c0JlZm9yZURlY2ltYWwgPSAxO1xuICAgIGxldCBudW1iZXIgPSB2YWx1ZTtcblxuICAgIHdoaWxlIChudW1iZXIgPj0gMTApIHtcbiAgICAgIG51bWJlciA9IG51bWJlciAvIDEwO1xuICAgICAgZGlnaXRzQmVmb3JlRGVjaW1hbCsrO1xuICAgIH1cblxuICAgIHJldHVybiBkaWdpdHNCZWZvcmVEZWNpbWFsO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY291bnREaWdpdHNBZnRlckRlY2ltYWwodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHZhbHVlO1xuICAgIGxldCBtb2RpZmllZFZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSk7XG4gICAgbGV0IGNvdW50ID0gMDtcblxuICAgIHdoaWxlIChtb2RpZmllZFZhbHVlICE9PSBvcmlnaW5hbFZhbHVlICYmIGNvdW50IDwgbWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90KSB7XG4gICAgICBjb3VudCsrO1xuICAgICAgbW9kaWZpZWRWYWx1ZSA9IE51bWJlcnMuZml4Um91bmRpbmcob3JpZ2luYWxWYWx1ZSwgY291bnQpO1xuICAgIH1cblxuICAgIHJldHVybiBjb3VudDtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdOdW1iZXJzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RyaW5ncyB7XG4gIHN0YXRpYyByYW5kb20obGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJhbmRvbTEzQ2hhcmFjdGVycyA9ICgpOiBzdHJpbmcgPT4ge1xuICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMTYpLnN1YnN0cmluZygyLCAxNSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxvb3BzOiBudW1iZXIgPSBNYXRoLmNlaWwobGVuZ3RoIC8gMTMpO1xuXG4gICAgcmV0dXJuIG5ldyBBcnJheShsb29wcykuZmlsbChyYW5kb20xM0NoYXJhY3RlcnMpLnJlZHVjZSgoc3RyaW5nLCBmdW5jKSA9PiB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgZnVuYygpO1xuICAgIH0sICcnKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTdHJpbmdzIGlzIGEgc3RhdGljIGNsYXNzIHRoYXQgbWF5IG5vdCBiZSBpbnN0YW50aWF0ZWQnKTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFVucmVhY2hhYmxlKHg6IG5ldmVyKTogbmV2ZXIge1xuICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgdmFsdWUgWyR7eH1dLiBUaGlzIHNob3VsZCBuZXZlciBiZSByZWFjaGVkYCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2VydFVucmVhY2hhYmxlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtJQXBwZW5kZXJ9IGZyb20gJy4vSUFwcGVuZGVyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBwZW5kZXJzIHtcbiAgcHJpdmF0ZSBfYXBwZW5kZXJzOiBBcnJheTxJQXBwZW5kZXI+ID0gW107XG5cbiAgZ2V0IHZhbHVlKCk6IEFycmF5PElBcHBlbmRlcj4ge1xuICAgIHJldHVybiB0aGlzLl9hcHBlbmRlcnM7XG4gIH1cblxuICBhZGQoYXBwZW5kZXI6IElBcHBlbmRlcik6IHZvaWQge1xuICAgIHRoaXMuX2FwcGVuZGVycy5wdXNoKGFwcGVuZGVyKTtcbiAgfVxuXG4gIHJlbW92ZShhcHBlbmRlcjogSUFwcGVuZGVyKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzID0gdGhpcy5fYXBwZW5kZXJzLnJlZHVjZSgoaXRlbXMsIGl0ZW0pID0+IHtcbiAgICAgIGlmICghKGl0ZW0gPT09IGFwcGVuZGVyKSkge1xuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbXM7XG4gICAgfSwgW10gYXMgQXJyYXk8SUFwcGVuZGVyPik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi9Mb2dnZXInO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25zb2xlQXBwZW5kZXIgaW1wbGVtZW50cyBJQXBwZW5kZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbDtcblxuICBsb2cobG9nTGV2ZWw6IExvZ2dpbmdMZXZlbCwgbWVzc2FnZTogc3RyaW5nLCBjYXRlZ29yeTogc3RyaW5nLCBkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgaWYgKGxvZ0xldmVsIDwgdGhpcy5fdGhyZXNob2xkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE1lc3NhZ2UgPSBgJHtkYXRlLnRvSVNPU3RyaW5nKCl9IFske2NhdGVnb3J5fV0gWyR7TG9nZ2luZ0xldmVsW2xvZ0xldmVsXX1dICR7bWVzc2FnZX1gO1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLldhcm4pIHtcbiAgICAgIGNvbnNvbGUubG9nKGZ1bGxNZXNzYWdlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnNvbGUuZXJyb3IoZnVsbE1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3RydWN0b3IodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7SUFwcGVuZGVyfSBmcm9tICcuL0lBcHBlbmRlcic7XG5pbXBvcnQgQXBwZW5kZXJzIGZyb20gJy4vQXBwZW5kZXJzJztcbmltcG9ydCBMb2dnaW5nVGhyZXNob2xkIGZyb20gJy4vTG9nZ2luZ1RocmVzaG9sZCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuXG5leHBvcnQgZW51bSBMb2dnaW5nTGV2ZWwge1xuICBBbGwgPSAtMSxcbiAgVHJhY2UgPSAxMCxcbiAgRGVidWcgPSAyMCxcbiAgSW5mbyA9IDMwLFxuICBXYXJuID0gNDAsXG4gIEVycm9yID0gNTAsXG4gIEZhdGFsID0gNjAsXG4gIE9mZiA9IDEwMCxcbn1cblxuZXhwb3J0IHR5cGUgTG9nZ2luZ0xldmVsVHlwZSA9ICdPZmYnIHwgJ1RyYWNlJyB8ICdEZWJ1ZycgfCAnSW5mbycgfCAnV2FybicgfCAnRXJyb3InIHwgJ0ZhdGFsJyB8ICdBbGwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2dnZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IF9jYXRlZ29yeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hcHBlbmRlcnM6IEFwcGVuZGVycztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkO1xuXG4gIGdldCBjYXRlZ29yeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jYXRlZ29yeTtcbiAgfVxuXG4gIGdldCBhcHBlbmRlcnMoKTogQXBwZW5kZXJzIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kZXJzO1xuICB9XG5cbiAgZ2V0IHRocmVzaG9sZCgpOiBMb2dnaW5nVGhyZXNob2xkIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG5cbiAgdHJhY2UoLi4uYXJnczogYW55KTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl90aHJlc2hvbGQudmFsdWUgfHwgdGhpcy5fdGhyZXNob2xkLnZhbHVlID4gTG9nZ2luZ0xldmVsLlRyYWNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLlRyYWNlLCBhcmdzKTtcbiAgfVxuXG4gIGRlYnVnKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5EZWJ1Zykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5EZWJ1ZywgYXJncyk7XG4gIH1cblxuICBpbmZvKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5JbmZvKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5sb2coTG9nZ2luZ0xldmVsLkluZm8sIGFyZ3MpO1xuICB9XG5cbiAgd2FybiguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuV2Fybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5XYXJuLCBhcmdzKTtcbiAgfVxuXG4gIGVycm9yKC4uLmFyZ3M6IGFueSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fdGhyZXNob2xkLnZhbHVlIHx8IHRoaXMuX3RocmVzaG9sZC52YWx1ZSA+IExvZ2dpbmdMZXZlbC5FcnJvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubG9nKExvZ2dpbmdMZXZlbC5FcnJvciwgYXJncyk7XG4gIH1cblxuICBmYXRhbCguLi5hcmdzOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3RocmVzaG9sZC52YWx1ZSB8fCB0aGlzLl90aHJlc2hvbGQudmFsdWUgPiBMb2dnaW5nTGV2ZWwuRmF0YWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxvZyhMb2dnaW5nTGV2ZWwuRmF0YWwsIGFyZ3MpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2cobGV2ZWw6IG51bWJlciwgYXJnczogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMucmVwbGFjZVBsYWNlaG9sZGVycyhhcmdzKTtcblxuICAgIHRoaXMuX2FwcGVuZGVycy52YWx1ZS5mb3JFYWNoKChhcHBlbmRlcjogSUFwcGVuZGVyKSA9PiB7XG4gICAgICBhcHBlbmRlci5sb2cobGV2ZWwsIG1lc3NhZ2UsIHRoaXMuY2F0ZWdvcnksIGRhdGUpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlUGxhY2Vob2xkZXJzKGFyZ3M6IGFueSk6IHN0cmluZyB7XG4gICAgbGV0IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcgPSBhcmdzWzBdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICB3aGlsZSAocmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5pbmRleE9mICYmIGFyZ3MubGVuZ3RoID4gMSAmJiBpbmRleCA+PSAwKSB7XG4gICAgICBpbmRleCA9IHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcuaW5kZXhPZignJScsIGluZGV4KTtcblxuICAgICAgaWYgKGluZGV4ID4gMCkge1xuICAgICAgICBjb25zdCB0eXBlID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxLCBpbmRleCArIDIpO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgLy8gRXNjYXBlZCAnJSUnIHR1cm5zIGludG8gJyUnXG4gICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoaW5kZXggKyAxKTtcbiAgICAgICAgICAgIGluZGV4Kys7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3MnOlxuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAnJWQnIG9yICclcycgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMudG9TdHJpbmcoYXJnc1sxXSksXG4gICAgICAgICAgICAgIHJlcGxhY2VQbGFjZWhvbGRlcnNTdHJpbmcsXG4gICAgICAgICAgICAgIGluZGV4XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgLy8gUmVwbGFjZSAlaicgd2l0aCB0aGUgYXJndW1lbnRcbiAgICAgICAgICAgIGFyZ3NbMF0gPSByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nID0gdGhpcy5yZXBsYWNlQXJndW1lbnQoXG4gICAgICAgICAgICAgIHRoaXMuc3RyaW5naWZ5KGFyZ3NbMV0pLFxuICAgICAgICAgICAgICByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLFxuICAgICAgICAgICAgICBpbmRleFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXJncy5zcGxpY2UoMSwgMSk7XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gYXJncy50b1N0cmluZygpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGFyZ3MubGVuZ3RoID4gMSkge1xuICAgICAgYXJncyA9IGFyZ3MucmVkdWNlKChhY2N1bXVsYXRvcjogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZyB8IEVycm9yLCBpbmRleDogbnVtYmVyLCBhcnJheTogc3RyaW5nW10pID0+IHtcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gYXJyYXkubGVuZ3RoICYmIGN1cnJlbnRWYWx1ZSBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLnN0YWNrKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyAnXFxuJyArIHRoaXMudG9TdHJpbmcoY3VycmVudFZhbHVlLm1lc3NhZ2UpICsgJ1xcbicgKyB0aGlzLnRvU3RyaW5nKGN1cnJlbnRWYWx1ZS5zdGFjayk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjdW11bGF0b3IgKyBgWyR7dGhpcy50b1N0cmluZyhjdXJyZW50VmFsdWUpfV1gO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFyZ3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RyaW5naWZ5KGFyZzogYW55KTogc3RyaW5nIHtcbiAgICBjb25zdCBjYWNoZTogb2JqZWN0W10gPSBbXTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGFyZyBpbnN0YW5jZW9mIEVycm9yID8gdGhpcy50b1N0cmluZyhhcmcpIDogYXJnLFxuICAgICAgICAoXywgdmFsdWUpID0+IHtcbiAgICAgICAgICBpZiAoISF2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgaWYgKGNhY2hlLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gJzxyZWN1cnNpdmU+JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGUucHVzaCh2YWx1ZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICAyXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiAnW29iamVjdCBpbnZhbGlkIEpTT04uc3RyaW5naWZ5XSc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZXBsYWNlQXJndW1lbnQoYXJndW1lbnQ6IGFueSwgcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZzogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZy5zdWJzdHJpbmcoMCwgaW5kZXgpICsgdGhpcy50b1N0cmluZyhhcmd1bWVudCkgKyByZXBsYWNlUGxhY2Vob2xkZXJzU3RyaW5nLnN1YnN0cmluZyhpbmRleCArIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1N0cmluZyhkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICByZXR1cm4gZGF0YSA/ICd0cnVlJyA6ICdmYWxzZSc7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGRhdGEudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBsZXQgdG9TdHJpbmdTdHIgPSAnJztcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdG9TdHJpbmdTdHIgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0b1N0cmluZ1N0ciA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRvU3RyaW5nU3RyID0gJ1tvYmplY3QgaW52YWxpZCB0b1N0cmluZygpXSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdG9TdHJpbmdTdHI7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihjYXRlZ29yeTogc3RyaW5nLCBhcHBlbmRlcnM6IEFwcGVuZGVycywgdGhyZXNob2xkOiBMb2dnaW5nVGhyZXNob2xkKSB7XG4gICAgdGhpcy5fY2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICB0aGlzLl9hcHBlbmRlcnMgPSBhcHBlbmRlcnM7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGhyZXNob2xkO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRGVmYXVsdHMge1xuICBzdGF0aWMgZ2V0IGRlZmF1bHRMb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsIHtcbiAgICByZXR1cm4gTG9nZ2luZ0xldmVsW0J1aWxkRmVhdHVyZXMuc2VuZExvZ3NdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0Q29uc29sZUxvZ2dpbmdMZXZlbCgpOiBMb2dnaW5nTGV2ZWwge1xuICAgIHJldHVybiBMb2dnaW5nTGV2ZWxbQnVpbGRGZWF0dXJlcy5sb2dUb0NvbnNvbGVdO1xuICB9XG5cbiAgc3RhdGljIGdldCBkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5JbmZvO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4vTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXIsIHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcbmltcG9ydCBBcHBlbmRlcnMgZnJvbSAnLi9BcHBlbmRlcnMnO1xuaW1wb3J0IExvZ2dpbmdUaHJlc2hvbGQgZnJvbSAnLi9Mb2dnaW5nVGhyZXNob2xkJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi9Db25zb2xlQXBwZW5kZXInO1xuaW1wb3J0IFRlbGVtZXRyeUFwcGVuZGVyIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlBcGVuZGVyJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4uL3RlbGVtZXRyeS9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyIGZyb20gJy4uL2RvbS9Db25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyJztcbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyRmFjdG9yeSB7XG4gIHByaXZhdGUgc3RhdGljIF9sb2dnZXJzOiB7W2NhdGVnb3J5OiBzdHJpbmddOiBJTG9nZ2VyfSA9IHt9O1xuICBwcml2YXRlIHN0YXRpYyBfYXBwZW5kZXJzOiBBcHBlbmRlcnMgPSBuZXcgQXBwZW5kZXJzKCk7XG4gIHByaXZhdGUgc3RhdGljIF90aHJlc2hvbGQ6IExvZ2dpbmdUaHJlc2hvbGQgPSBuZXcgTG9nZ2luZ1RocmVzaG9sZCgpO1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IG5ldyBUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgc3RhdGljIGdldCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uKCk6IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll90ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgc3RhdGljIGdldExvZ2dlcihjYXRlZ29yeTogc3RyaW5nKTogSUxvZ2dlciB7XG4gICAgaWYgKHR5cGVvZiBjYXRlZ29yeSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGNhdGVnb3J5ID0gJ1NESyc7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5fbG9nZ2Vyc1tjYXRlZ29yeV07XG5cbiAgICBpZiAobG9nZ2VyKSB7XG4gICAgICByZXR1cm4gbG9nZ2VyO1xuICAgIH1cblxuICAgIHJldHVybiBMb2dnZXJGYWN0b3J5Ll9sb2dnZXJzW2NhdGVnb3J5XSA9IG5ldyBMb2dnZXIoY2F0ZWdvcnksIHRoaXMuX2FwcGVuZGVycywgdGhpcy5fdGhyZXNob2xkKTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIExvZ2dlckZhY3RvcnkuYXBwbHlMb2dnaW5nTGV2ZWwoKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ2NvbnNvbGUnLCBMb2dnZXJGYWN0b3J5LmFwcGx5Q29uc29sZUxvZ2dlci5iaW5kKHRoaXMpKTtcbiAgICBMb2dnZXJGYWN0b3J5LmFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwoJ3RlbGVtZXRyeScsIExvZ2dlckZhY3RvcnkuYXBwbHlUZWxlbWV0cnlMb2dnZXIuYmluZCh0aGlzKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseUxvZ2dpbmdMZXZlbCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbWV0ZXJWYWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1sb2dnaW5nLWxldmVsJykgYXMgTG9nZ2luZ0xldmVsVHlwZTtcblxuICAgIGlmIChMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQuc2V0VGhyZXNob2xkKExvZ2dpbmdMZXZlbFtwYXJhbWV0ZXJWYWx1ZV0pO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5QXBwZW5kZXJMb2dnaW5nTGV2ZWwobmFtZTogc3RyaW5nLCBhcHBseUFwcGVuZGVyOiAobGV2ZWw6IExvZ2dpbmdMZXZlbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtZXRlclZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZShgcGhlbml4LSR7bmFtZX0tbG9nZ2luZy1sZXZlbGApIGFzIExvZ2dpbmdMZXZlbFR5cGU7XG5cbiAgICBpZiAocGFyYW1ldGVyVmFsdWUgPT09ICdPZmYnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXBwbHlBcHBlbmRlcihMb2dnaW5nTGV2ZWxbcGFyYW1ldGVyVmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFwcGx5Q29uc29sZUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgQ29uc29sZUFwcGVuZGVyKGxldmVsIHx8IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRDb25zb2xlTG9nZ2luZ0xldmVsKSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhcHBseVRlbGVtZXRyeUxvZ2dlcihsZXZlbDogTG9nZ2luZ0xldmVsKTogdm9pZCB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQgPSBsZXZlbCB8fCBMb2dnZXJEZWZhdWx0cy5kZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsO1xuXG4gICAgdGhpcy5fYXBwZW5kZXJzLmFkZChuZXcgVGVsZW1ldHJ5QXBwZW5kZXIodGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbikpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0xvZ2dlckZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkxvZ2dlckZhY3RvcnkuYXBwbHlMb2dnZXJDb25maWdGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWwsIExvZ2dpbmdMZXZlbFR5cGV9IGZyb20gJy4vTG9nZ2VyJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0xldmVsTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0TG9nZ2luZ0xldmVsVG9Mb2dnaW5nTGV2ZWxUeXBlKGxvZ2dpbmdMZXZlbDogTG9nZ2luZ0xldmVsKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuVHJhY2U6XG4gICAgICAgIHJldHVybiAnVHJhY2UnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuRGVidWc6XG4gICAgICAgIHJldHVybiAnRGVidWcnO1xuICAgICAgY2FzZSBMb2dnaW5nTGV2ZWwuSW5mbzpcbiAgICAgICAgcmV0dXJuICdJbmZvJztcbiAgICAgIGNhc2UgTG9nZ2luZ0xldmVsLldhcm46XG4gICAgICAgIHJldHVybiAnV2Fybic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5FcnJvcjpcbiAgICAgICAgcmV0dXJuICdFcnJvcic7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5GYXRhbDpcbiAgICAgICAgcmV0dXJuICdGYXRhbCc7XG4gICAgICBjYXNlIExvZ2dpbmdMZXZlbC5BbGw6XG4gICAgICAgIHJldHVybiAnQWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKGxvZ2dpbmdMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwobG9nZ2luZ0xldmVsVHlwZTogTG9nZ2luZ0xldmVsVHlwZSk6IExvZ2dpbmdMZXZlbCB7XG4gICAgc3dpdGNoIChsb2dnaW5nTGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLk9mZjtcbiAgICAgIGNhc2UgJ1RyYWNlJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5UcmFjZTtcbiAgICAgIGNhc2UgJ0RlYnVnJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5EZWJ1ZztcbiAgICAgIGNhc2UgJ0luZm8nOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkluZm87XG4gICAgICBjYXNlICdXYXJuJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5XYXJuO1xuICAgICAgY2FzZSAnRXJyb3InOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkVycm9yO1xuICAgICAgY2FzZSAnRmF0YWwnOlxuICAgICAgICByZXR1cm4gTG9nZ2luZ0xldmVsLkZhdGFsO1xuICAgICAgY2FzZSAnQWxsJzpcbiAgICAgICAgcmV0dXJuIExvZ2dpbmdMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShsb2dnaW5nTGV2ZWxUeXBlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJEZWZhdWx0cyBmcm9tICcuL0xvZ2dlckRlZmF1bHRzJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsfSBmcm9tICcuL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExvZ2dpbmdUaHJlc2hvbGQge1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCA9IExvZ2dlckRlZmF1bHRzLmRlZmF1bHRMb2dnaW5nTGV2ZWw7XG5cbiAgZ2V0IHZhbHVlKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldFRocmVzaG9sZCh0aHJlc2hvbGQ6IExvZ2dpbmdMZXZlbCk6IHZvaWQge1xuICAgIHRoaXMuX3RocmVzaG9sZCA9IHRocmVzaG9sZDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtUZWxlbWV0cnlMZXZlbH0gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY1R5cGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzOiBNZXRyaWNzVHlwZTtcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzOiBNZXRyaWNzVHlwZSkge1xuICAgIHRoaXMuX21ldHJpY3MgPSBtZXRyaWNzO1xuICB9XG5cbiAgZ2V0TmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiBNZXRyaWNzVHlwZVt0aGlzLl9tZXRyaWNzXTtcbiAgfVxuXG4gIGdldFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICBzd2l0Y2ggKHRoaXMuX21ldHJpY3MpIHtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU3RhbGxlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQnVmZmVyaW5nOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5TZXR1cENvbXBsZXRlZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuU2V0dXBGYWlsZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWU6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5OlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgY2FzZSBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZTpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuUmVzb2x1dGlvbkNoYW5nZWQ6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBjYXNlIE1ldHJpY3NUeXBlLkFwcGxpY2F0aW9uRm9yZWdyb3VuZDpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkFsbDtcbiAgICAgIGNhc2UgTWV0cmljc1R5cGUuQXBwbGljYXRpb25CYWNrZ3JvdW5kOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuQWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUodGhpcy5fbWV0cmljcyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFRlbGVtZXRyeURlZmF1bHQgZnJvbSAnLi9UZWxlbWV0cnlEZWZhdWx0JztcblxuZXhwb3J0IGVudW0gVGVsZW1ldHJ5TGV2ZWwge1xuICBPZmYgPSAxMDAsXG4gIEVzc2VudGlhbCA9IDEwLFxuICBBbGwgPSAtMVxufVxuXG5leHBvcnQgdHlwZSBUZWxlbWV0cnlMZXZlbFR5cGUgPSAnT2ZmJyB8ICdFc3NlbnRpYWwnIHwgJ0FsbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NDb25maWd1cmF0aW9uIHtcbiAgcHJpdmF0ZSBfdXJsID0gJ2h0dHBzOi8vdGVsZW1ldHJ5LnBoZW5peHJ0cy5jb20vdGVsZW1ldHJ5L21ldHJpY3MnO1xuICBwcml2YXRlIF90ZW5hbmN5OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3Nlc3Npb25JZDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudDogc3RyaW5nID0gJy0nO1xuICBwcml2YXRlIF90aHJlc2hvbGQ6IFRlbGVtZXRyeUxldmVsID0gVGVsZW1ldHJ5RGVmYXVsdC5kZWZhdWx0VGVsZW1ldHJ5TGV2ZWw7XG5cbiAgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl91cmw7XG4gIH1cblxuICBzZXQgdXJsKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgbWV0cmljc1VybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcblxuICAgIG1ldHJpY3NVcmwucGF0aG5hbWUgPSBtZXRyaWNzVXJsLnBhdGhuYW1lICsgJy9tZXRyaWNzJztcblxuICAgIHRoaXMuX3VybCA9IG1ldHJpY3NVcmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldCBlbnZpcm9ubWVudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgfVxuXG4gIGdldCB0ZW5hbmN5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbmFuY3k7XG4gIH1cblxuICBzZXQgdGVuYW5jeSh0ZW5hbmN5OiBzdHJpbmcpIHtcbiAgICB0aGlzLl90ZW5hbmN5ID0gdGVuYW5jeTtcbiAgfVxuXG4gIGdldCBzZXNzaW9uSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2Vzc2lvbklkO1xuICB9XG5cbiAgc2V0IHNlc3Npb25JZChzZXNzaW9uSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX3Nlc3Npb25JZCA9IHNlc3Npb25JZDtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cblxuICBzZXQgdGhyZXNob2xkKHRocmVzaG9sZDogVGVsZW1ldHJ5TGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBNZXRyaWNzQ29uZmlndXJhdGlvbiwge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuL01ldHJpY3NDb25maWd1cmF0aW9uJztcbmltcG9ydCBTREsgZnJvbSAnLi4vc2RrL1NESyc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4uL3Nkay9UZWxlbWV0cnlVcmwnO1xuaW1wb3J0IEVudmlyb25tZW50IGZyb20gJy4uL3Nkay9FbnZpcm9ubWVudCc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4vVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NGYWN0b3J5IHtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlczoge1tjYXRlZ29yeTogc3RyaW5nXTogTWV0cmljc1NlcnZpY2V9ID0ge307XG5cbiAgc3RhdGljIGdldE1ldHJpY3NTZXJ2aWNlKHVybDogc3RyaW5nKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIGlmICh0eXBlb2YgdXJsICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1cmwgbXVzdCBiZSBhIHN0cmluZyBpbnN0ZWFkIHJlY2VpdmVkIFske3R5cGVvZiB1cmx9XWApO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldHJpY3NTZXJ2aWNlcyA9IE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXNbdXJsXTtcblxuICAgIGlmIChtZXRyaWNzU2VydmljZXMpIHtcbiAgICAgIHJldHVybiBtZXRyaWNzU2VydmljZXM7XG4gICAgfVxuXG4gICAgY29uc3QgbWV0cmljc0NvbmZpZ3VyYXRpb24gPSBuZXcgTWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcblxuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGVuYW5jeSA9IFNESy50ZW5hbmN5LnZhbHVlO1xuICAgIG1ldHJpY3NDb25maWd1cmF0aW9uLnVybCA9IFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgICBtZXRyaWNzQ29uZmlndXJhdGlvbi5lbnZpcm9ubWVudCA9IEVudmlyb25tZW50LmdldEVudmlyb25tZW50RnJvbVVybCh1cmwpO1xuXG4gICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKFNESy50ZWxlbWV0cnlMZXZlbCk7XG5cbiAgICByZXR1cm4gTWV0cmljc0ZhY3RvcnkuX21ldHJpY3NTZXJ2aWNlc1t1cmxdID0gbmV3IE1ldHJpY3NTZXJ2aWNlKG1ldHJpY3NDb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIHN0YXRpYyBzZXRUZWxlbWV0cnlMZXZlbCh0ZWxlbWV0cnlMZXZlbDogVGVsZW1ldHJ5TGV2ZWwpOiB2b2lkIHtcbiAgICBjb25zdCBtZXRyaWNzU2VydmljZXMgPSBPYmplY3QudmFsdWVzKE1ldHJpY3NGYWN0b3J5Ll9tZXRyaWNzU2VydmljZXMpO1xuXG4gICAgaWYgKG1ldHJpY3NTZXJ2aWNlcyAmJiBtZXRyaWNzU2VydmljZXMubGVuZ3RoKSB7XG4gICAgICBtZXRyaWNzU2VydmljZXMuZm9yRWFjaChtZXRyaWNzU2VydmljZSA9PiB7XG4gICAgICAgIGNvbnN0IG1ldHJpY3NDb25maWd1cmF0aW9uID0gbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICAgICAgbWV0cmljc0NvbmZpZ3VyYXRpb24udGhyZXNob2xkID0gdGVsZW1ldHJ5TGV2ZWw7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0cmljc0ZhY3RvcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFeHBvbmVudGlhbEJhY2tvZmYgZnJvbSAnLi4vdGltZS9FeHBvbmVudGlhbEJhY2tvZmYnO1xuaW1wb3J0IFZlcnNpb25NYW5hZ2VyIGZyb20gJy4uL3Nkay92ZXJzaW9uL1ZlcnNpb25NYW5hZ2VyJztcbmltcG9ydCBNZXRyaWNUeXBlIGZyb20gJy4vTWV0cmljVHlwZSc7XG5pbXBvcnQgTWV0cmljc1R5cGUgZnJvbSAnLi9NZXRyaWNzVHlwZSc7XG5pbXBvcnQgTWV0cmljc0NvbmZpZ3VyYXRpb24gZnJvbSAnLi9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSAxMDI0O1xuY29uc3QgbWF4QnVmZmVyZWRSZWNvcmRzID0gMjA0ODtcblxuaW50ZXJmYWNlIElWYWx1ZSB7XG4gIHN0cmluZz86IHN0cmluZztcbiAgdWludDY0PzogbnVtYmVyO1xuICBmbG9hdD86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIElNZXRyaWNSZWNvcmQge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgc3RyZWFtSWQ/OiBzdHJpbmc7XG4gIG1ldHJpYzogc3RyaW5nO1xuICB2YWx1ZT86IElWYWx1ZTtcbiAgcHJldmlvdXNWYWx1ZT86IElWYWx1ZTtcbiAgZnVsbFF1YWxpZmllZE5hbWU6IHN0cmluZztcbiAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBydW50aW1lOiBudW1iZXI7XG4gIHJlc291cmNlPzogc3RyaW5nO1xuICBraW5kPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgSU1ldHJpYyB7XG4gIHN0cmVhbUlkPzogc3RyaW5nO1xuICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZTtcbiAgdmFsdWU/OiBJVmFsdWU7XG4gIHByZXZpb3VzVmFsdWU/OiBJVmFsdWU7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbiAgcmVzb3VyY2U/OiBzdHJpbmc7XG4gIGtpbmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1ldHJpY3NTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfbG9nZ2VyOiBJTG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoJ01ldHJpY3NTZXJ2aWNlJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXhwb25lbnRpYWxCYWNrb2ZmOiBFeHBvbmVudGlhbEJhY2tvZmY7XG4gIHByaXZhdGUgX21ldHJpY3M6IEFycmF5PElNZXRyaWNSZWNvcmQ+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9mYWlsdXJlQ291bnQgPSAwO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3RvcihtZXRyaWNzQ29uZmlndXJhdGlvbjogTWV0cmljc0NvbmZpZ3VyYXRpb24pIHtcbiAgICB0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IG1ldHJpY3NDb25maWd1cmF0aW9uO1xuICAgIHRoaXMuX2V4cG9uZW50aWFsQmFja29mZiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmYoKTtcbiAgICB0aGlzLmdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKS50aGVuKGxvY2F0aW9uSG9zdG5hbWUgPT4ge1xuICAgICAgdGhpcy5fZG9tYWluID0gbG9jYXRpb25Ib3N0bmFtZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBtZXRyaWNzQ29uZmlndXJhdGlvbigpOiBNZXRyaWNzQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcHVzaChtZXRyaWM6IElNZXRyaWMpOiB2b2lkIHtcbiAgICBjb25zdCB7c3RyZWFtSWQsIHZhbHVlLCBwcmV2aW91c1ZhbHVlLCBydW50aW1lLCByZXNvdXJjZSwga2luZH0gPSBtZXRyaWM7XG4gICAgY29uc3QgbWV0cmljVHlwZSA9IG5ldyBNZXRyaWNUeXBlKG1ldHJpYy5tZXRyaWNUeXBlKTtcblxuICAgIGlmICh0aGlzLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50aHJlc2hvbGQgPiBtZXRyaWNUeXBlLmdldFRlbGVtZXRyeUxldmVsKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBtZXRyaWNSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHRlbmFuY3k6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnRlbmFuY3ksXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCxcbiAgICAgIHN0cmVhbUlkLFxuICAgICAgbWV0cmljOiBtZXRyaWNUeXBlLmdldE5hbWUoKSxcbiAgICAgIHZhbHVlLFxuICAgICAgcHJldmlvdXNWYWx1ZSxcbiAgICAgIGZ1bGxRdWFsaWZpZWROYW1lOiB0aGlzLl9kb21haW4sXG4gICAgICBlbnZpcm9ubWVudDogdGhpcy5fbWV0cmljc0NvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQsXG4gICAgICB2ZXJzaW9uOiBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uLFxuICAgICAgcnVudGltZSxcbiAgICAgIHJlc291cmNlLFxuICAgICAga2luZFxuICAgIH07XG5cbiAgICB0aGlzLl9tZXRyaWNzLnB1c2gobWV0cmljUmVjb3JkKTtcblxuICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPihyZXNvbHZlTG9jYXRpb25Ib3N0bmFtZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlTG9jYXRpb25Ib3N0bmFtZShnbG9iYWxTY29wZS5sb2NhdGlvbkhvc3RuYW1lKTtcbiAgICAgICAgZ2xvYmFsU2NvcGUuc2V0VGltZW91dCgoKSA9PiBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCksIDApO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNlbmRNZXRyaWNzKG1ldHJpY3NNZXNzYWdlczogQXJyYXk8SU1ldHJpY1JlY29yZD4pOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbWV0cmljc01lc3NhZ2VzfSkpO1xuXG4gICAgcmV0dXJuIGF3YWl0IEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHRoaXMuX21ldHJpY3NDb25maWd1cmF0aW9uLnVybCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZW5kTWV0cmljc0lmQWJsZSgpOiBQcm9taXNlPFJlc3BvbnNlIHwgdm9pZD4ge1xuICAgIGlmICh0aGlzLl9tZXRyaWNzLmxlbmd0aCA8PSAwIHx8IHRoaXMuX2lzU2VuZGluZyB8fCAhR2xvYmFsU2NvcGUudmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc1NlbmRpbmcgPSB0cnVlO1xuXG4gICAgY29uc3QgbWV0cmljc01lc3NhZ2VzID0gdGhpcy5fbWV0cmljcy5zbGljZSgwLCByZXF1ZXN0U2l6ZUxpbWl0KTtcblxuICAgIHRoaXMuX21ldHJpY3MgPSB0aGlzLl9tZXRyaWNzLnNsaWNlKHJlcXVlc3RTaXplTGltaXQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZE1ldHJpY3MobWV0cmljc01lc3NhZ2VzKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmICh0aGlzLmlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlKHJlc3BvbnNlKSkge1xuICAgICAgICBpZiAodGhpcy5fbWV0cmljcy5sZW5ndGggPD0gbWF4QnVmZmVyZWRSZWNvcmRzKSB7XG4gICAgICAgICAgdGhpcy5fZmFpbHVyZUNvdW50Kys7XG5cbiAgICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX21ldHJpY3MgPSBbLi4ubWV0cmljc01lc3NhZ2VzLCAuLi50aGlzLl9tZXRyaWNzXTtcblxuICAgICAgICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRNZXRyaWNzSWZBYmxlKCk7XG4gICAgICAgICAgfSwgdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fZmFpbHVyZUNvdW50KSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ1RvbyBtYW55IGNhY2hlZCBtZXRyaWMgcmVjb3JkcyBbJXNdLCBkcm9wcGluZyBbJXNdIHJlY29yZHMnLCB0aGlzLl9tZXRyaWNzLmxlbmd0aCwgbWV0cmljc01lc3NhZ2VzLmxlbmd0aCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5fZmFpbHVyZUNvdW50ID0gMDtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZE1ldHJpY3NJZkFibGUoKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgIHRoaXMuX2lzU2VuZGluZyA9IGZhbHNlO1xuXG4gICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5zZW5kTWV0cmljc0lmQWJsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jlc3BvbnNlU3RhdHVzQ29kZVJldHJ5YWJsZSh7c3RhdHVzfTogUmVzcG9uc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gL141XFxkezJ9JC8udGVzdChzdGF0dXMudG9TdHJpbmcoKSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmVudW0gTWV0cmljc1R5cGUge1xuICBUaW1lVG9GaXJzdEZyYW1lLFxuICBDaGFubmVsQ3JlYXRpb25UaW1lVG9GaXJzdEZyYW1lLFxuICBTdGFsbGVkLFxuICBCdWZmZXJpbmcsXG4gIFNldHVwQ29tcGxldGVkLFxuICBTZXR1cEZhaWxlZCxcbiAgUm91bmRUcmlwVGltZSxcbiAgRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHksXG4gIE5ldHdvcmtUeXBlLFxuICBSZXNvbHV0aW9uQ2hhbmdlZCxcbiAgQXBwbGljYXRpb25Gb3JlZ3JvdW5kLFxuICBBcHBsaWNhdGlvbkJhY2tncm91bmRcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWV0cmljc1R5cGU7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge1RlbGVtZXRyeUxldmVsLCBUZWxlbWV0cnlMZXZlbFR5cGV9IGZyb20gJy4vTWV0cmljc0NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlMZXZlbE1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydFRlbGVtZXRyeUxldmVsVG9UZWxlbWV0cnlMZXZlbFR5cGUodGVsZW1ldHJ5TGV2ZWw6IFRlbGVtZXRyeUxldmVsKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICBzd2l0Y2ggKHRlbGVtZXRyeUxldmVsKSB7XG4gICAgICBjYXNlIFRlbGVtZXRyeUxldmVsLk9mZjpcbiAgICAgICAgcmV0dXJuICdPZmYnO1xuICAgICAgY2FzZSBUZWxlbWV0cnlMZXZlbC5Fc3NlbnRpYWw6XG4gICAgICAgIHJldHVybiAnRXNzZW50aWFsJztcbiAgICAgIGNhc2UgVGVsZW1ldHJ5TGV2ZWwuQWxsOlxuICAgICAgICByZXR1cm4gJ0FsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsVHlwZTogVGVsZW1ldHJ5TGV2ZWxUeXBlKTogVGVsZW1ldHJ5TGV2ZWwge1xuICAgIHN3aXRjaCAodGVsZW1ldHJ5TGV2ZWxUeXBlKSB7XG4gICAgICBjYXNlICdPZmYnOlxuICAgICAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWwuT2ZmO1xuICAgICAgY2FzZSAnRXNzZW50aWFsJzpcbiAgICAgICAgcmV0dXJuIFRlbGVtZXRyeUxldmVsLkVzc2VudGlhbDtcbiAgICAgIGNhc2UgJ0FsbCc6XG4gICAgICAgIHJldHVybiBUZWxlbWV0cnlMZXZlbC5BbGw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0ZWxlbWV0cnlMZXZlbFR5cGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEJ1aWxkRmVhdHVyZXMgZnJvbSAnLi4vZW52aXJvbm1lbnQvQnVpbGRGZWF0dXJlcyc7XG5pbXBvcnQge1RlbGVtZXRyeUxldmVsfSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NDb25maWd1cmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5RGVmYXVsdCB7XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFRlbGVtZXRyeUxldmVsKCk6IFRlbGVtZXRyeUxldmVsIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxbQnVpbGRGZWF0dXJlcy5zZW5kTWV0cmljc107XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbi8vIE5vdGU6IFRoaXMgUHJvbWlzZSBwb2x5ZmlsbCBpcyBpbmNsdWRlZCBmb3IgYnJvd3NlciBidWlsZHMgb25seSB0byBhZGRyZXNzIGNvbXBhdGliaWxpdHkgaXNzdWVzXG4vLyB3aXRoIG9sZGVyIGJyb3dzZXJzIHdob3NlIG5hdGl2ZSBQcm9taXNlPFQ+aW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCAuZmluYWxseS5cblxuaW1wb3J0IFByb21pc2VIYW5kbGVyIGZyb20gJy4vUHJvbWlzZUhhbmRsZXInO1xuXG5jbGFzcyBQcm9taXNlPFQ+IHtcbiAgX3N0YXRlOiBudW1iZXI7XG4gIF9oYW5kbGVkOiBib29sZWFuO1xuICBfdmFsdWU6IFQgfCB1bmtub3duO1xuICBfZGVmZXJyZWRzOiBBcnJheTxQcm9taXNlSGFuZGxlcjxUPj47XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgLy8gQHRzLWlnbm9yZVxuICB0aGVuKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGwsIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbCk6IFByb21pc2U8VD58IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFByb21pc2UpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdub3QgYSBmdW5jdGlvbicpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXRlID0gMDtcbiAgICB0aGlzLl9oYW5kbGVkID0gZmFsc2U7XG4gICAgdGhpcy5fdmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuXG4gICAgdGhpcy5kb1Jlc29sdmUoY2FsbGJhY2spO1xuICB9XG5cbiAgZG9SZXNvbHZlKGNhbGxiYWNrOiBGdW5jdGlvbik6IHZvaWQge1xuICAgIGxldCBkb25lID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgY2FsbGJhY2soXG4gICAgICAgICh2YWx1ZTogUHJvbWlzZTxUPnwgbnVsbCkgPT4ge1xuICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wcm9taXNlUmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIChyZWFzb246IFByb21pc2U8VD58IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucHJvbWlzZVJlamVjdChyZWFzb24pO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZG9uZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgdGhpcy5wcm9taXNlUmVqZWN0KGVycm9yKTtcbiAgICB9XG4gIH1cblxuICBwcm9taXNlUmVzb2x2ZShuZXdWYWx1ZTogUHJvbWlzZTxUPnwgbnVsbCB8IHVua25vd24pOiB2b2lkIHtcbiAgICBjb25zdCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIFByb21pc2U8VD5SZXNvbHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL1Byb21pc2VzLWFwbHVzL1Byb21pc2VzLXNwZWMjdGhlLVByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcbiAgICAgIGlmIChuZXdWYWx1ZSA9PT0gcHJvbWlzZSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIFByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXQgc2VsZi4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5ld1ZhbHVlICYmICh0eXBlb2YgbmV3VmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIG5leHQgbGluZSB0byBub3QgZG8gZXh0cmEgaWYgc3RhdGVtZW50c1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY29uc3QgdGhlbiA9IG5ld1ZhbHVlLnRoZW47XG5cbiAgICAgICAgaWYgKG5ld1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgIHByb21pc2UuX3N0YXRlID0gMztcbiAgICAgICAgICBwcm9taXNlLl92YWx1ZSA9IG5ld1ZhbHVlO1xuICAgICAgICAgIHByb21pc2UuZmluYWxlKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBwcm9taXNlLmRvUmVzb2x2ZShmdW5jdGlvbigpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItcmVzdC1wYXJhbXNcbiAgICAgICAgICAgIHRoZW4uYXBwbHkobmV3VmFsdWUsIGFyZ3VtZW50cyBhcyB1bmtub3duIGFzIFtvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uXSk7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcHJvbWlzZS5fc3RhdGUgPSAxO1xuICAgICAgcHJvbWlzZS5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIHByb21pc2UuZmluYWxlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcHJvbWlzZS5wcm9taXNlUmVqZWN0KGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb21pc2VSZWplY3QobmV3VmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgICB0aGlzLl9zdGF0ZSA9IDI7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLmZpbmFsZSgpO1xuICB9XG5cbiAgZmluYWxlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9zdGF0ZSA9PT0gMiAmJiB0aGlzLl9kZWZlcnJlZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBQcm9taXNlLl9pbW1lZGlhdGUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX2hhbmRsZWQpIHtcbiAgICAgICAgICBQcm9taXNlLl91bmhhbmRsZWRSZWplY3Rpb24odGhpcy5fdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5fZGVmZXJyZWRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB0aGlzLmhhbmRsZSh0aGlzLl9kZWZlcnJlZHNbaV0pO1xuICAgIH1cblxuICAgIHRoaXMuX2RlZmVycmVkcyA9IFtdO1xuICB9XG5cbiAgaGFuZGxlKGRlZmVycmVkOiBQcm9taXNlSGFuZGxlcjxUPik6IHZvaWQge1xuICAgIGxldCBwcm9taXNlID0gdGhpcyBhcyBQcm9taXNlPFQ+O1xuXG4gICAgd2hpbGUgKHByb21pc2UuX3N0YXRlID09PSAzKSB7XG4gICAgICBwcm9taXNlID0gcHJvbWlzZS5fdmFsdWUgYXMgUHJvbWlzZTxUPjtcbiAgICB9XG5cbiAgICBpZiAocHJvbWlzZS5fc3RhdGUgPT09IDApIHtcbiAgICAgIHByb21pc2UuX2RlZmVycmVkcy5wdXNoKGRlZmVycmVkKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHByb21pc2UuX2hhbmRsZWQgPSB0cnVlO1xuICAgIFByb21pc2UuX2ltbWVkaWF0ZSgoKSA9PiB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IHByb21pc2UuX3N0YXRlID09PSAxID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXG4gICAgICBpZiAoY2FsbGJhY2sgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHByb21pc2UuX3N0YXRlID09PSAxKSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVzb2x2ZShwcm9taXNlLl92YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVmZXJyZWQucHJvbWlzZS5wcm9taXNlUmVqZWN0KHByb21pc2UuX3ZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgbGV0IHJlc3VsdDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gY2FsbGJhY2socHJvbWlzZS5fdmFsdWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZWplY3QoZSk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBkZWZlcnJlZC5wcm9taXNlLnByb21pc2VSZXNvbHZlKHJlc3VsdCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYWxsKGFycjogQXJyYXk8UHJvbWlzZTx1bmtub3duPj4pOiBQcm9taXNlPHVua25vd24+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uLCByZWplY3Q6IEZ1bmN0aW9uKSA9PiB7XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyKSkge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ1Byb21pc2UuYWxsIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpO1xuXG4gICAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgICBjb25zdCBtYW5hZ2VSZXNwb25zZSA9IChpOiBudW1iZXIsIHZhbHVlOiBQcm9taXNlPHVua25vd24+KTogdm9pZCA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKHZhbHVlICYmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHRoZW4gPSB2YWx1ZS50aGVuO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgdGhlbi5jYWxsKFxuICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgICh2YWx1ZTogUHJvbWlzZTx1bmtub3duPikgPT4gbWFuYWdlUmVzcG9uc2UoaSwgdmFsdWUpLFxuICAgICAgICAgICAgICAgIHJlamVjdFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhcmdzW2ldID0gdmFsdWU7XG5cbiAgICAgICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYW5hZ2VSZXNwb25zZShpLCBhcmdzW2ldKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlKHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUuY29uc3RydWN0b3IgPT09IFByb21pc2UpIHtcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IEZ1bmN0aW9uKSA9PiByZXNvbHZlKHZhbHVlKSk7XG4gIH1cblxuICBzdGF0aWMgcmVqZWN0KHZhbHVlOiB1bmtub3duKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChfOiB1bmRlZmluZWQsIHJlamVjdDogRnVuY3Rpb24pID0+IHJlamVjdCh2YWx1ZSkpO1xuICB9XG5cbiAgc3RhdGljIHJhY2UoYXJyOiBBcnJheTxQcm9taXNlPHVua25vd24+Pik6IFByb21pc2U8dW5rbm93bj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogRnVuY3Rpb24sIHJlamVjdDogRnVuY3Rpb24pID0+IHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IFR5cGVFcnJvcignUHJvbWlzZS5yYWNlIGFjY2VwdHMgYW4gYXJyYXknKSk7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSBhcnIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKGFycltpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIF9pbW1lZGlhdGUoY2FsbGJhY2s6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgaWdub3JlZCA9IHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAwKTtcbiAgfVxuXG4gIHN0YXRpYyBfdW5oYW5kbGVkUmVqZWN0aW9uKGVycm9yOiBQcm9taXNlPHVua25vd24+fCBudWxsIHwgdW5rbm93bik6IHZvaWQge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZSkge1xuICAgICAgY29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb246JywgZXJyb3IpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgICB9XG4gIH1cbn1cblxuLy8gRGlzYWJsaW5nIGEgVFMgY29tcGlsZXIgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIHByb3RvdHlwZSBjaGFuZ2Vcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbi8vIEB0cy1pZ25vcmVcblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24ob25SZWplY3RlZDogRnVuY3Rpb24pOiB1bmtub3duIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07XG4vLyBEaXNhYmxpbmcgYSBUUyBjb21waWxlciBjaGVjayBmb3IgdW5zdXBwb3J0ZWQgcHJvdG90eXBlIGNoYW5nZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuLy8gQHRzLWlnbm9yZVxuUHJvbWlzZS5wcm90b3R5cGVbJ3RoZW4nXSA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkOiBGdW5jdGlvbiwgb25SZWplY3RlZDogRnVuY3Rpb24pOiBQcm9taXNlPHVua25vd24+fCB2b2lkIHtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlKCgpOiBudWxsID0+IG51bGwpO1xuXG4gIHRoaXMuaGFuZGxlKG5ldyBQcm9taXNlSGFuZGxlcjx1bmtub3duPihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcHJvbWlzZSkpO1xuXG4gIHJldHVybiBwcm9taXNlO1xufTtcbi8vIERpc2FibGluZyBhIFRTIGNvbXBpbGVyIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBwcm90b3R5cGUgY2hhbmdlXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4vLyBAdHMtaWdub3JlXG5Qcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddID0gZnVuY3Rpb24oY2FsbGJhY2s6IEZ1bmN0aW9uKTogUHJvbWlzZTx1bmtub3duPnwgdm9pZCB7XG4gIHJldHVybiB0aGlzLnRoZW4oXG4gICAgKHZhbHVlOiBQcm9taXNlPHVua25vd24+fCB1bmRlZmluZWQpID0+IFByb21pc2UucmVzb2x2ZShjYWxsYmFjaygpKS50aGVuKCgpID0+IHZhbHVlLCAoKTogbnVsbCA9PiBudWxsKSxcbiAgICAocmVhc29uOiBFcnJvciB8IHN0cmluZykgPT4gUHJvbWlzZS5yZXNvbHZlKGNhbGxiYWNrKCkpLnRoZW4oKCkgPT4gUHJvbWlzZS5yZWplY3QocmVhc29uKSwgKCk6IG51bGwgPT4gbnVsbClcbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21pc2U7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgUHJvbWlzZSBmcm9tICcuL1Byb21pc2UnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9taXNlSGFuZGxlcjxUPiB7XG4gIG9uRnVsZmlsbGVkOiBGdW5jdGlvbiB8IG51bGw7XG4gIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uIHwgbnVsbDtcbiAgcHJvbWlzZTogUHJvbWlzZTxUPjtcblxuICBjb25zdHJ1Y3RvcihvbkZ1bGZpbGxlZDogRnVuY3Rpb24sIG9uUmVqZWN0ZWQ6IEZ1bmN0aW9uLCBwcm9taXNlOiBQcm9taXNlPFQ+KSB7XG4gICAgdGhpcy5vbkZ1bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogbnVsbDtcbiAgICB0aGlzLm9uUmVqZWN0ZWQgPSB0eXBlb2Ygb25SZWplY3RlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uUmVqZWN0ZWQgOiBudWxsO1xuICAgIHRoaXMucHJvbWlzZSA9IHByb21pc2U7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi9yeC9TdWJqZWN0JztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uIGZyb20gJy4vSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4vSVBlZXJDb25uZWN0aW9uRmFjdG9yeSc7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL1ZhbmlsbGFQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB7XG4gIGF1ZGlvVHJhbnNjZWl2ZXJzPzogUlRDUnRwVHJhbnNjZWl2ZXJbXTtcbiAgdmlkZW9UcmFuc2NlaXZlcnM/OiBSVENSdHBUcmFuc2NlaXZlcltdO1xuICBwZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uO1xuICBsb2NhbE9mZmVyOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5leHBvcnQgZW51bSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMge1xuICBEaXNhYmxlZCxcbiAgRW5hYmxlZFxufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdFRyYWNrS2luZHM6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSA9IFsnYXVkaW8nLCAndmlkZW8nXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3BlZXJDb25uZWN0aW9uRmFjdG9yeTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiA9IG5ldyBTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+KG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5KCkpO1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGVkOiB7XG4gICAgZGlyZWN0aW9uPzogUlRDUnRwVHJhbnNjZWl2ZXJEaXJlY3Rpb247XG4gICAgcGVlckNvbm5lY3Rpb246IFByb21pc2U8SVBlZXJDb25uZWN0aW9uT2ZmZXJJbml0PjtcbiAgfSB8IG51bGw7XG5cbiAgc3RhdGljIGdldCBwZWVyQ29ubmVjdGlvbkZhY3RvcnkoKTogU3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PiB7XG4gICAgcmV0dXJuIFBlZXJDb25uZWN0aW9uU2VydmljZS5fcGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGluaXRpYXRlSW5pdGlhbFByZWNhY2hpbmcoKTogdm9pZCB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmlzUHJlY2FjaGluZ0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBQZWVyQ29ubmVjdGlvblNlcnZpY2UucHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKClcbiAgICAgICAgLmNhdGNoKGUgPT4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwcmUtY2FjaGUgcGVlciBjb25uZWN0aW9uIG9mZmVyJywgZSkpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKTogUHJvbWlzZTx7IHBlZXJDb25uZWN0aW9uOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdCB8IHZvaWQ+OyBkaXJlY3Rpb246IFJUQ1J0cFRyYW5zY2VpdmVyRGlyZWN0aW9uIH0+IHtcbiAgICByZXR1cm4gUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSB7XG4gICAgICBkaXJlY3Rpb246ICdyZWN2b25seScsXG4gICAgICBwZWVyQ29ubmVjdGlvbjogUGVlckNvbm5lY3Rpb25TZXJ2aWNlLmNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoKVxuICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLl9jYWNoZWQgPSBudWxsO1xuXG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfSlcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIoZGlyZWN0aW9uOiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbiA9ICdyZWN2b25seScsIHRyYWNrS2luZHMgPSBkZWZhdWx0VHJhY2tLaW5kcywgZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPSBFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMuRGlzYWJsZWQpOiBQcm9taXNlPElQZWVyQ29ubmVjdGlvbk9mZmVySW5pdD4ge1xuICAgIGlmIChQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCAmJiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZC5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbiAmJiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5EaXNhYmxlZCAmJiB0aGlzLmlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrS2luZHMpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IFBlZXJDb25uZWN0aW9uU2VydmljZS5fY2FjaGVkLnBlZXJDb25uZWN0aW9uO1xuXG4gICAgICBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX2NhY2hlZCA9IG51bGw7XG5cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0gRmVhdHVyZUVuYWJsZW1lbnQuaXNFbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXNTdXBwb3J0ZWQgPyB7ZW5jb2RlZEluc2VydGFibGVTdHJlYW1zOiBlbmNvZGVkSW5zZXJ0YWJsZVN0cmVhbXMgPT09IEVuY29kZWRJbnNlcnRhYmxlU3RyZWFtcy5FbmFibGVkfSA6IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiBQZWVyQ29ubmVjdGlvblNlcnZpY2UuX3BlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZS5jcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKVxuICAgICAgLnRoZW4oYXN5bmMgcGVlckNvbm5lY3Rpb24gPT4ge1xuICAgICAgICBjb25zdCBzdXBwb3J0c0FkZFRyYW5zY2VpdmVyID0gcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNBZGRUcmFuc2NlaXZlcjtcbiAgICAgICAgY29uc3QgYXVkaW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmlkZW9UcmFuc2NlaXZlcnM6IFJUQ1J0cFRyYW5zY2VpdmVyW10gPSBbXTtcblxuICAgICAgICBpZiAoc3VwcG9ydHNBZGRUcmFuc2NlaXZlcikge1xuICAgICAgICAgIHRyYWNrS2luZHMuZm9yRWFjaChraW5kID0+IHtcbiAgICAgICAgICAgIGlmIChraW5kID09PSAnYXVkaW8nKSB7XG4gICAgICAgICAgICAgIGF1ZGlvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChraW5kID09PSAndmlkZW8nKSB7XG4gICAgICAgICAgICAgIHZpZGVvVHJhbnNjZWl2ZXJzLnB1c2gocGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIoa2luZCwge2RpcmVjdGlvbn0pKTtcblxuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXVkaW9UcmFuc2NlaXZlcnMsXG4gICAgICAgICAgICB2aWRlb1RyYW5zY2VpdmVycyxcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uOiBwZWVyQ29ubmVjdGlvbixcbiAgICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKHVuZGVmaW5lZClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IGRpcmVjdGlvbiA9PT0gJ3JlY3Zvbmx5JyA/IHtcbiAgICAgICAgICBvZmZlclRvUmVjZWl2ZUF1ZGlvOiB0cnVlLFxuICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IHRydWVcbiAgICAgICAgfSA6IHt9O1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcGVlckNvbm5lY3Rpb246IHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgIGxvY2FsT2ZmZXI6IGF3YWl0IHBlZXJDb25uZWN0aW9uLmNyZWF0ZU9mZmVyKG9wdGlvbnMpXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlzVHJhY2tzS2luZHNFcXVpdmFsZW50VG9EZWZhdWx0KHRyYWNrc0tpbmRzOiAoJ2F1ZGlvJyB8ICd2aWRlbycpW10pOiBib29sZWFuIHtcbiAgICBpZiAodHJhY2tzS2luZHMubGVuZ3RoICE9PSBkZWZhdWx0VHJhY2tLaW5kcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb3VudFRyYWNrS2luZHMgPSAoYXJyYXk6ICgnYXVkaW8nIHwgJ3ZpZGVvJylbXSkgPT4gYXJyYXkucmVkdWNlKCh0cmFja0tpbmRDb3VudCwga2luZCkgPT4ge1xuICAgICAgdHJhY2tLaW5kQ291bnRba2luZF0gPSAodHJhY2tLaW5kQ291bnRba2luZF0gfHwgMCkgKyAxO1xuXG4gICAgICByZXR1cm4gdHJhY2tLaW5kQ291bnQ7XG4gICAgfSwge1xuICAgICAgYXVkaW86IDAsXG4gICAgICB2aWRlbzogMFxuICAgIH0pO1xuICAgIGNvbnN0IGNvdW50ZWRUcmFja0tpbmRzID0gY291bnRUcmFja0tpbmRzKHRyYWNrc0tpbmRzKTtcbiAgICBjb25zdCBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMgPSBjb3VudFRyYWNrS2luZHMoZGVmYXVsdFRyYWNrS2luZHMpO1xuXG4gICAgcmV0dXJuIGNvdW50ZWRUcmFja0tpbmRzLmF1ZGlvID09PSBjb3VudGVkRGVmYXVsdFRyYWNrS2luZHMuYXVkaW8gJiYgY291bnRlZFRyYWNrS2luZHMudmlkZW8gPT09IGNvdW50ZWREZWZhdWx0VHJhY2tLaW5kcy52aWRlbztcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdQZWVyQ29ubmVjdGlvblNlcnZpY2UgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cblBlZXJDb25uZWN0aW9uU2VydmljZS5pbml0aWF0ZUluaXRpYWxQcmVjYWNoaW5nKCk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSdGNDb25maWd1cmF0aW9uTWFuYWdlciB7XG4gIHN0YXRpYyB0cnVuY2F0ZUljZVNlcnZlcnMoY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IFJUQ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGljZVNlcnZlcnM6IFJUQ0ljZVNlcnZlcltdID0gW107XG5cbiAgICBpZiAoIWNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gICAgfVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAyOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XTtcblxuICAgICAgICBpZiAodXJsKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51cmxzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgdXJsczogdXJscyxcbiAgICAgICAgdXNlcm5hbWU6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS51c2VybmFtZSxcbiAgICAgICAgY3JlZGVudGlhbDogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLmNyZWRlbnRpYWxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycyA9IGljZVNlcnZlcnM7XG5cbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSdGNDb25maWd1cmF0aW9uTWFuYWdlciBpcyBhIHN0YXRpYyBjbGFzcyB0aGF0IG1heSBub3QgYmUgaW5zdGFudGlhdGVkJyk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgRmVhdHVyZUVuYWJsZW1lbnQgZnJvbSAnLi4vZW52aXJvbm1lbnQvRmVhdHVyZUVuYWJsZW1lbnQnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgU2RwUGFyc2VyIGZyb20gJy4vU2RwUGFyc2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMge1xuICBba2luZDogc3RyaW5nXTogSVJ0Y1B1Ymxpc2hTdGF0aXN0aWM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0IHtcbiAgcmVzdWx0OiAoKSA9PiBJTGVnYWN5UlRDU3RhdHNSZXBvcnRJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxlZ2FjeVJUQ1N0YXRzUmVwb3J0SXRlbSBleHRlbmRzIFJUQ1N0YXRzUmVwb3J0IHtcbiAgdHlwZTogc3RyaW5nO1xuICBuYW1lczogKCkgPT4gc3RyaW5nW107XG4gIHN0YXQ6IChuYW1lOiBzdHJpbmcpID0+IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUnRjUHVibGlzaFN0YXRpc3RpYyB7XG4gIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wPzogbnVtYmVyO1xuICBzc3JjOiBzdHJpbmc7XG4gIG1lZGlhVHlwZTogc3RyaW5nO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgYml0cmF0ZT86IG51bWJlcjtcbiAgYnl0ZXNTZW50OiBudW1iZXI7XG4gIHBhY2tldHNTZW50OiBudW1iZXI7XG4gIHJldHJhbnNtaXR0ZWRCeXRlc1NlbnQ/OiBudW1iZXI7XG4gIGZpckNvdW50PzogbnVtYmVyO1xuICBmcmFtZUhlaWdodD86IG51bWJlcjtcbiAgZnJhbWVXaWR0aD86IG51bWJlcjtcbiAgZnJhbWVzRW5jb2RlZD86IG51bWJlcjtcbiAgZnJhbWVzU2VudD86IG51bWJlcjtcbiAgaGVhZGVyQnl0ZXNTZW50PzogbnVtYmVyO1xuICBodWdlRnJhbWVzU2VudD86IG51bWJlcjtcbiAgcGxpQ291bnQ/OiBudW1iZXI7XG4gIHFwU3VtPzogbnVtYmVyO1xuICB0b3RhbEVuY29kZVRpbWU/OiBudW1iZXI7XG4gIHRvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0PzogbnVtYmVyO1xuICBjb2RlYzogc3RyaW5nO1xuICBmcHM/OiBudW1iZXI7XG4gIHJvdW5kVHJpcFRpbWU6IG51bWJlcjtcbn1cblxuY29uc3QgdXBkYXRlU3RhdGlzdGljVGltZW91dCA9IDEwMDA7XG5jb25zdCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiA9IDUwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJ0Y1B1Ymxpc2hNb25pdG9yIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUnRjUHVibGlzaE1vbml0b3InKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lc3RpbWF0ZWRWaWRlb0NvZGVjOiBzdHJpbmcgPSAndW5rbm93bic7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VzdGltYXRlZEF1ZGlvQ29kZWM6IHN0cmluZyA9ICd1bmtub3duJztcbiAgcHJpdmF0ZSByZWFkb25seSBfcnRjU3RhdGlzdGljOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4gPSBuZXcgU3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWM+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0ID0gbmV3IERpc3Bvc2FibGVMaXN0KCk7XG4gIHByaXZhdGUgX3BlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24gfCBudWxsO1xuICBwcml2YXRlIF9pc01vbml0b3JSdW5uaW5nID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfdXBkYXRlVGltZW91dDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9tb25pdG9yR2VuZXJhdGlvbiA9IDA7XG4gIHByaXZhdGUgX2F2YWlsYWJsZVRyYWNrczoge1xuICAgIGF1ZGlvOiBib29sZWFuO1xuICAgIHZpZGVvOiBib29sZWFuO1xuICB9IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IocGVlckNvbm5lY3Rpb246IElQZWVyQ29ubmVjdGlvbiwgZXN0aW1hdGVkUm91bmRUcmlwVGltZTogbnVtYmVyLCBpc0ZvcmVncm91bmQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPikge1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uID0gcGVlckNvbm5lY3Rpb247XG4gICAgdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZSA9IGVzdGltYXRlZFJvdW5kVHJpcFRpbWU7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb24gJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uPy5zZHAgJiYgdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbj8uc2RwKSB7XG4gICAgICBjb25zdCBwYXJzZWRMb2NhbERlc2NyaXB0aW9uID0gbmV3IFNkcFBhcnNlcih0aGlzLl9wZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbi5zZHApO1xuICAgICAgY29uc3QgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24gPSBuZXcgU2RwUGFyc2VyKHRoaXMuX3BlZXJDb25uZWN0aW9uLmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICB0aGlzLl9lc3RpbWF0ZWRBdWRpb0NvZGVjID0gcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uYXVkaW9Db2RlYztcbiAgICAgIHRoaXMuX2VzdGltYXRlZFZpZGVvQ29kZWMgPSBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi52aWRlb0NvZGVjO1xuXG4gICAgICB0aGlzLl9hdmFpbGFibGVUcmFja3MgPSB7XG4gICAgICAgIGF1ZGlvOiBwYXJzZWRMb2NhbERlc2NyaXB0aW9uLmlzQXVkaW9UcmFja0VuYWJsZWQgJiYgcGFyc2VkUmVtb3RlRGVzY3JpcHRpb24uaXNBdWRpb1RyYWNrRW5hYmxlZCxcbiAgICAgICAgdmlkZW86IHBhcnNlZExvY2FsRGVzY3JpcHRpb24uaXNWaWRlb1RyYWNrRW5hYmxlZCAmJiBwYXJzZWRSZW1vdGVEZXNjcmlwdGlvbi5pc1ZpZGVvVHJhY2tFbmFibGVkXG4gICAgICB9O1xuXG4gICAgICBsZXQgaXNJbml0aWFsU3Vic2NyaXB0aW9uQ2FsbGJhY2sgPSB0cnVlO1xuXG4gICAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQoXG4gICAgICAgIGlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoZm9yZWdyb3VuZCA9PiB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbFN1YnNjcmlwdGlvbkNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayA9IGZhbHNlO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFmb3JlZ3JvdW5kIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gSW52YWxpZGF0ZSBhbnkgaW4tZmxpZ2h0IHBvbGwgZnJvbSBiZWZvcmUgdGhlIGZyZWV6ZVxuICAgICAgICAgIHRoaXMuX21vbml0b3JHZW5lcmF0aW9uKys7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZVRpbWVvdXQpO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdSZXN0YXJ0aW5nIHN0YXRzIHBvbGxpbmcgYWZ0ZXIgZm9yZWdyb3VuZCB0cmFuc2l0aW9uJyk7XG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0aXN0aWMoKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG5cbiAgICAgIHRoaXMudXBkYXRlU3RhdGlzdGljKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHJ0Y1N0YXRpc3RpYygpOiBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYz4ge1xuICAgIHJldHVybiB0aGlzLl9ydGNTdGF0aXN0aWM7XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbisrO1xuICAgIHRoaXMuX2lzTW9uaXRvclJ1bm5pbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVUaW1lb3V0KTtcbiAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVTdGF0aXN0aWMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB7XG4gICAgICAgIGF1ZGlvOiAwLFxuICAgICAgICB2aWRlbzogMFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbjtcbiAgICAvLyBTYWZhcmkgMTEgZG9lc250IGhhdmUga2luZCBvciBtZWRpYVR5cGUgc28gd2UgbmVlZCB0byB0YWtlIGl0IGZyb20gdGhlIGluYm91bmQtcnRwIG9iamVjdCBpZFxuICAgIGNvbnN0IGdldEtpbmRGb3JTYWZhcmkxMSA9IChpdGVtOiB7aWQ6IHN0cmluZ30pOiBzdHJpbmcgPT4gaXRlbS5pZC5pbmNsdWRlcygnQXVkaW8nKSA/ICdhdWRpbycgOiBpdGVtLmlkLmluY2x1ZGVzKCdWaWRlbycpID8gJ3ZpZGVvJyA6ICcnO1xuICAgIGxldCB0aW1lb3V0SGFuZGxlOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RhdHNQcm9taXNlID0gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmdldFN0YXRzKG51bGwpO1xuXG4gICAgICBpZiAoIXN0YXRzUHJvbWlzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRpbWVvdXRQcm9taXNlID0gbmV3IFByb21pc2U8dW5kZWZpbmVkPihyZXNvbHZlID0+IHtcbiAgICAgICAgdGltZW91dEhhbmRsZSA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4gcmVzb2x2ZSh1bmRlZmluZWQpLCBnZXRTdGF0c1RpbWVvdXREdXJhdGlvbik7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHN0YXRzID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtzdGF0c1Byb21pc2UsIHRpbWVvdXRQcm9taXNlXSk7XG5cbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbiB8fCAhdGhpcy5faXNNb25pdG9yUnVubmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghc3RhdHMpIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdnZXRTdGF0cygpIHRpbWVkIG91dCwgc2tpcHBpbmcgc3RhdHMgcHJvY2Vzc2luZycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcnRjU3RhdGlzdGljczogSVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljID0ge307XG4gICAgICAgIGxldCByb3VuZFRyaXBUaW1lID0gdGhpcy5fZXN0aW1hdGVkUm91bmRUcmlwVGltZTtcbiAgICAgICAgbGV0IGxhc3RQYWNrZXRTZW50VGltZXN0YW1wOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICAgICAgc3RhdHMuZm9yRWFjaChyZXBvcnQgPT4ge1xuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUpIHtcbiAgICAgICAgICAgIHJvdW5kVHJpcFRpbWUgPSByZXBvcnQuY3VycmVudFJvdW5kVHJpcFRpbWUgKiAxMDAwO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1sndmlkZW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWyd2aWRlbyddLnJvdW5kVHJpcFRpbWUgPSByb3VuZFRyaXBUaW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXBvcnQudHlwZSA9PT0gJ2NhbmRpZGF0ZS1wYWlyJyAmJiByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXApIHtcbiAgICAgICAgICAgIGxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gcmVwb3J0Lmxhc3RQYWNrZXRTZW50VGltZXN0YW1wO1xuXG4gICAgICAgICAgICBpZiAocnRjU3RhdGlzdGljc1snYXVkaW8nXSkge1xuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzWydhdWRpbyddLmxhc3RQYWNrZXRTZW50VGltZXN0YW1wID0gbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChydGNTdGF0aXN0aWNzWyd2aWRlbyddKSB7XG4gICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3NbJ3ZpZGVvJ10ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSBsYXN0UGFja2V0U2VudFRpbWVzdGFtcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocmVwb3J0LnR5cGUgPT09ICdvdXRib3VuZC1ydHAnKSB7XG4gICAgICAgICAgICBjb25zdCBraW5kOiAndmlkZW8nIHwgJ2F1ZGlvJyB8IHVuZGVmaW5lZCA9IHJlcG9ydC5raW5kIHx8IHJlcG9ydC5tZWRpYVR5cGUgfHwgZ2V0S2luZEZvclNhZmFyaTExKHJlcG9ydCk7XG4gICAgICAgICAgICBsZXQgY29kZWMgPSAnJztcblxuICAgICAgICAgICAgc3RhdHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHJlcG9ydC5jb2RlY0lkKSB7XG4gICAgICAgICAgICAgICAgY29kZWMgPSBpdGVtLm1pbWVUeXBlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGtpbmQgJiYgdGhpcy5fYXZhaWxhYmxlVHJhY2tzPy5ba2luZF0pIHtcbiAgICAgICAgICAgICAgY29uc3QgYnl0ZXMgPSByZXBvcnQuYnl0ZXNTZW50IHx8IDA7XG4gICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzQnl0ZXNTZW50ID0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy5ba2luZF0/LmJ5dGVzU2VudCA/PyAwO1xuICAgICAgICAgICAgICBjb25zdCBieXRlc0RlbHRhID0gYnl0ZXMgLSBwcmV2aW91c0J5dGVzU2VudDtcbiAgICAgICAgICAgICAgY29uc3QgdGltZURlbHRhID0gcmVwb3J0LnRpbWVzdGFtcCAtIHRoaXMuX3J0Y1N0YXRpc3RpYy52YWx1ZT8uW2tpbmRdPy50aW1lc3RhbXA7XG4gICAgICAgICAgICAgIGNvbnN0IGJpdHJhdGUgPSBieXRlc0RlbHRhICYmIHRpbWVEZWx0YSA/IE1hdGguZmxvb3IoOCAqIGJ5dGVzRGVsdGEgL1xuICAgICAgICAgICAgICAgIHRpbWVEZWx0YSAqIDEwMDApIDogMDtcblxuICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdID0ge1xuICAgICAgICAgICAgICAgIHNzcmM6IHJlcG9ydC5zc3JjLFxuICAgICAgICAgICAgICAgIG1lZGlhVHlwZToga2luZCxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IHJlcG9ydC50aW1lc3RhbXAsXG4gICAgICAgICAgICAgICAgYml0cmF0ZSxcbiAgICAgICAgICAgICAgICBieXRlc1NlbnQ6IHJlcG9ydC5ieXRlc1NlbnQsXG4gICAgICAgICAgICAgICAgcGFja2V0c1NlbnQ6IHJlcG9ydC5wYWNrZXRzU2VudCxcbiAgICAgICAgICAgICAgICByZXRyYW5zbWl0dGVkQnl0ZXNTZW50OiByZXBvcnQucmV0cmFuc21pdHRlZEJ5dGVzU2VudCxcbiAgICAgICAgICAgICAgICBjb2RlYzogY29kZWMgfHwgdGhpcy5nZXRDb2RlY0J5VHlwZShraW5kKSxcbiAgICAgICAgICAgICAgICByb3VuZFRyaXBUaW1lXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHJlcG9ydC5sYXN0UGFja2V0U2VudFRpbWVzdGFtcCB8fCBsYXN0UGFja2V0U2VudFRpbWVzdGFtcCkge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF0ubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgPSByZXBvcnQubGFzdFBhY2tldFNlbnRUaW1lc3RhbXAgfHwgbGFzdFBhY2tldFNlbnRUaW1lc3RhbXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoa2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ2ZpckNvdW50J10gPSByZXBvcnQuZmlyQ291bnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnJhbWVIZWlnaHQnXSA9IHJlcG9ydC5mcmFtZUhlaWdodDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZVdpZHRoJ10gPSByZXBvcnQuZnJhbWVXaWR0aDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNFbmNvZGVkJ10gPSByZXBvcnQuZnJhbWVzRW5jb2RlZDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydmcmFtZXNTZW50J10gPSByZXBvcnQuZnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydoZWFkZXJCeXRlc1NlbnQnXSA9IHJlcG9ydC5oZWFkZXJCeXRlc1NlbnQ7XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnaHVnZUZyYW1lc1NlbnQnXSA9IHJlcG9ydC5odWdlRnJhbWVzU2VudDtcbiAgICAgICAgICAgICAgICBydGNTdGF0aXN0aWNzW2tpbmRdWydwbGlDb3VudCddID0gcmVwb3J0LnBsaUNvdW50O1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3FwU3VtJ10gPSByZXBvcnQucXBTdW07XG4gICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsndG90YWxFbmNvZGVUaW1lJ10gPSByZXBvcnQudG90YWxFbmNvZGVUaW1lO1xuICAgICAgICAgICAgICAgIHJ0Y1N0YXRpc3RpY3Nba2luZF1bJ3RvdGFsRW5jb2RlZEJ5dGVzVGFyZ2V0J10gPSByZXBvcnQudG90YWxFbmNvZGVkQnl0ZXNUYXJnZXQ7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlPy52aWRlbz8uZnJhbWVzRW5jb2RlZCkge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZnBzID0gKHJlcG9ydC5mcmFtZXNFbmNvZGVkIC0gdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlLnZpZGVvLmZyYW1lc0VuY29kZWQpIC9cbiAgICAgICAgICAgICAgICAgICAgICAocnRjU3RhdGlzdGljc1traW5kXS50aW1lc3RhbXAgLSB0aGlzLl9ydGNTdGF0aXN0aWMudmFsdWUudmlkZW8udGltZXN0YW1wKSAqXG4gICAgICAgICAgICAgICAgICAgICAgMTAwMDtcblxuICAgICAgICAgICAgICAgICAgcnRjU3RhdGlzdGljc1traW5kXVsnZnBzJ10gPSBmcHMgPyBNYXRoLnJvdW5kKGZwcyAqIDEwMCkgLyAxMDAgOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fcnRjU3RhdGlzdGljLnZhbHVlID0gcnRjU3RhdGlzdGljcztcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHRoaXMuX21vbml0b3JHZW5lcmF0aW9uIHx8ICF0aGlzLl9pc01vbml0b3JSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ2dldFN0YXRzKCkgcmVqZWN0ZWQnLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNNb25pdG9yUnVubmluZyAmJiBnZW5lcmF0aW9uID09PSB0aGlzLl9tb25pdG9yR2VuZXJhdGlvbikge1xuICAgICAgdGhpcy5fdXBkYXRlVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHRoaXMudXBkYXRlU3RhdGlzdGljKCksIHVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29kZWNCeVR5cGUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2F1ZGlvJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VzdGltYXRlZEF1ZGlvQ29kZWMgfHwgJ3Vua25vd24nO1xuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICByZXR1cm4gdGhpcy5fZXN0aW1hdGVkVmlkZW9Db2RlYyB8fCAndW5rbm93bic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3Vua25vd24nO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBJU2RwQXVkaW9TZWN0aW9uIHtcbiAgbWlkOiBzdHJpbmc7XG4gIG9yZGluYWw6IG51bWJlcjtcbiAgbGFuZ3VhZ2U/OiBzdHJpbmc7XG4gIHJlY2VpdmVzTWVkaWE6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNkcFBhcnNlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NkcDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZHBTcGxpdEJ5VHJhY2tzOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXVkaW9TZWN0aW9uczogSVNkcEF1ZGlvU2VjdGlvbltdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdWRpb0NvZGVjOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ZpZGVvQ29kZWM6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNBdWRpb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaXNWaWRlb1RyYWNrRW5hYmxlZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzZHA6IHN0cmluZykge1xuICAgIHRoaXMuX3NkcCA9IHNkcDtcbiAgICB0aGlzLl9zZHBTcGxpdEJ5VHJhY2tzID0gdGhpcy5fc2RwLnNwbGl0KC8oPzpefFtcXHJcXG5dKW09Lyk7XG5cbiAgICBjb25zdCBzZHBTcGxpdEJ5TGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoLyhcXHJcXG58XFxyfFxcbikvKTtcblxuICAgIHRoaXMuX2F1ZGlvQ29kZWMgPSB0aGlzLmFwcGx5Q29kZWMoJ2F1ZGlvJywgc2RwU3BsaXRCeUxpbmVzKTtcbiAgICB0aGlzLl92aWRlb0NvZGVjID0gdGhpcy5hcHBseUNvZGVjKCd2aWRlbycsIHNkcFNwbGl0QnlMaW5lcyk7XG4gICAgdGhpcy5fYXVkaW9TZWN0aW9ucyA9IHRoaXMucGFyc2VBdWRpb1NlY3Rpb25zKCk7XG4gICAgdGhpcy5faXNBdWRpb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ2F1ZGlvJyk7XG4gICAgdGhpcy5faXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRoaXMuaXNUcmFja0J5VHlwZUVuYWJsZWQoJ3ZpZGVvJyk7XG4gIH1cblxuICBnZXQgYXVkaW9Db2RlYygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb0NvZGVjO1xuICB9XG5cbiAgZ2V0IHZpZGVvQ29kZWMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmlkZW9Db2RlYztcbiAgfVxuXG4gIGdldCBpc0F1ZGlvVHJhY2tFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0F1ZGlvVHJhY2tFbmFibGVkO1xuICB9XG5cbiAgZ2V0IGlzVmlkZW9UcmFja0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzVmlkZW9UcmFja0VuYWJsZWQ7XG4gIH1cblxuICBnZXQgYXVkaW9TZWN0aW9ucygpOiBJU2RwQXVkaW9TZWN0aW9uW10ge1xuICAgIHJldHVybiB0aGlzLl9hdWRpb1NlY3Rpb25zO1xuICB9XG5cbiAgcHVibGljIHdpdGhBdWRpb0xhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgICBjb25zdCBsaW5lRW5kaW5nID0gdGhpcy5fc2RwLmluY2x1ZGVzKCdcXHJcXG4nKSA/ICdcXHJcXG4nIDogdGhpcy5fc2RwLmluY2x1ZGVzKCdcXG4nKSA/ICdcXG4nIDogJ1xccic7XG4gICAgY29uc3QgbGluZXMgPSB0aGlzLl9zZHAuc3BsaXQoL1xcclxcbnxcXHJ8XFxuLyk7XG4gICAgbGV0IGF1ZGlvSW5kZXggPSAtMTtcbiAgICBsZXQgaW5BdWRpb1NlY3Rpb24gPSBmYWxzZTtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBsaW5lcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChsaW5lc1tpbmRleF0uc3RhcnRzV2l0aCgnbT0nKSkge1xuICAgICAgICBpbkF1ZGlvU2VjdGlvbiA9IGxpbmVzW2luZGV4XS5zdGFydHNXaXRoKCdtPWF1ZGlvICcpO1xuXG4gICAgICAgIGlmIChpbkF1ZGlvU2VjdGlvbikge1xuICAgICAgICAgIGF1ZGlvSW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5BdWRpb1NlY3Rpb24gJiYgbGluZXNbaW5kZXhdLnN0YXJ0c1dpdGgoJ2E9bGFuZzonKSkge1xuICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICBpbmRleC0tO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5BdWRpb1NlY3Rpb24gJiYgbGluZXNbaW5kZXhdLnN0YXJ0c1dpdGgoJ2E9bWlkOicpICYmIGxhbmd1YWdlc1thdWRpb0luZGV4XSkge1xuICAgICAgICBsaW5lcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBgYT1sYW5nOiR7bGFuZ3VhZ2VzW2F1ZGlvSW5kZXhdfWApO1xuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcy5qb2luKGxpbmVFbmRpbmcpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZUF1ZGlvU2VjdGlvbnMoKTogSVNkcEF1ZGlvU2VjdGlvbltdIHtcbiAgICBjb25zdCBzZWN0aW9ucyA9IHRoaXMuX3NkcFNwbGl0QnlUcmFja3Muc2xpY2UoMSk7XG4gICAgY29uc3QgYXVkaW9TZWN0aW9uczogSVNkcEF1ZGlvU2VjdGlvbltdID0gW107XG4gICAgbGV0IG9yZGluYWwgPSAwO1xuXG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBsaW5lcyA9IHNlY3Rpb24uc3BsaXQoL1xcclxcbnxcXHJ8XFxuLyk7XG5cbiAgICAgIGlmICghbGluZXNbMF0uc3RhcnRzV2l0aCgnYXVkaW8gJykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pZCA9IGxpbmVzLmZpbmQobGluZSA9PiBsaW5lLnN0YXJ0c1dpdGgoJ2E9bWlkOicpKT8uc2xpY2UoJ2E9bWlkOicubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHNlY3Rpb25PcmRpbmFsID0gb3JkaW5hbCsrO1xuXG4gICAgICBpZiAoIW1pZCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgYXVkaW9TZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgbWlkLFxuICAgICAgICBvcmRpbmFsOiBzZWN0aW9uT3JkaW5hbCxcbiAgICAgICAgbGFuZ3VhZ2U6IGxpbmVzLmZpbmQobGluZSA9PiBsaW5lLnN0YXJ0c1dpdGgoJ2E9bGFuZzonKSk/LnNsaWNlKCdhPWxhbmc6Jy5sZW5ndGgpLFxuICAgICAgICByZWNlaXZlc01lZGlhOiBsaW5lc1swXS5zcGxpdCgnICcpWzFdICE9PSAnMCcgJiYgIWxpbmVzLmluY2x1ZGVzKCdhPWluYWN0aXZlJykgJiYgIWxpbmVzLmluY2x1ZGVzKCdhPXJlY3Zvbmx5JylcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhdWRpb1NlY3Rpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RyYWNrQnlUeXBlRW5hYmxlZCh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZHBTZWN0aW9uRm9yVHlwZSA9IHRoaXMuX3NkcFNwbGl0QnlUcmFja3MuZmluZChzZHBUcmFjayA9PiBzZHBUcmFjay5zdGFydHNXaXRoKHR5cGUpKTtcblxuICAgIGlmICghc2RwU2VjdGlvbkZvclR5cGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIXNkcFNlY3Rpb25Gb3JUeXBlLmluY2x1ZGVzKGBhPWluYWN0aXZlYCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5Q29kZWModHlwZTogc3RyaW5nLCBzZHBTcGxpdEJ5TGluZXM6IHN0cmluZyBbXSk6IHN0cmluZyB7XG4gICAgY29uc3QgcnRtYXAgPSBzZHBTcGxpdEJ5TGluZXMuZmluZChzZHBMaW5lID0+IHNkcExpbmUuaW5jbHVkZXMoYG09JHt0eXBlfWApKT8uc3BsaXQoJyAnKVszXSB8fCAnJztcbiAgICBjb25zdCB1c2VkQ29kZWNMaW5lID0gc2RwU3BsaXRCeUxpbmVzLmZpbmQoc2RwTGluZSA9PiBzZHBMaW5lLmluY2x1ZGVzKGBhPXJ0cG1hcDoke3J0bWFwfWApKTtcbiAgICBjb25zdCB1c2VkQ29kZWMgPSB1c2VkQ29kZWNMaW5lPy5zcGxpdCgnICcpWzFdIHx8ICcnO1xuICAgIGNvbnN0IGNvZGVjTmFtZSA9IHVzZWRDb2RlYy5zcGxpdCgnLycpWzBdO1xuXG4gICAgcmV0dXJuIGNvZGVjTmFtZTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0dsb2JhbFNjb3BlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi9JUGVlckNvbm5lY3Rpb24nO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0lMZWdhY3lSVENTdGF0c1JlcG9ydH0gZnJvbSAnLi9SdGNDb25uZWN0aW9uTW9uaXRvcic7XG5cbmNsYXNzIFZhbmlsbGFQZWVyQ29ubmVjdGlvbiBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdWYW5pbGxhUGVlckNvbm5lY3Rpb24nKTtcbiAgcHJpdmF0ZSBfcGVlckNvbm5lY3Rpb246IFJUQ1BlZXJDb25uZWN0aW9uIHwgbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbikge1xuICAgIGlmIChGZWF0dXJlRW5hYmxlbWVudC53ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpIHtcbiAgICAgIC8vIElnbm9yZWQgYXMgbGVnYWN5IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uIGNsYXNzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFRoaXMgd2FzIGEgQ2hyb21lIHNwZWNpZmljIGltcGxlbWVudGF0aW9uXG4gICAgICAvLyBSZXF1aXJlcyBhIHRzLWlnbm9yZSBkaXJlY3RpdmUgdG8gcHJldmVudCB0eXBlc2NyaXB0IGVycm9yc1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbiA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5SVENQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIGdldCBuYXRpdmUoKTogUlRDUGVlckNvbm5lY3Rpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgY3VycmVudExvY2FsRGVzY3JpcHRpb24oKTogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbigpOiBSVENTZXNzaW9uRGVzY3JpcHRpb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24/LmN1cnJlbnRSZW1vdGVEZXNjcmlwdGlvbiB8fCBudWxsO1xuICB9XG5cbiAgZ2V0IGNvbm5lY3Rpb25TdGF0ZSgpOiBSVENQZWVyQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5jb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBpY2VDb25uZWN0aW9uU3RhdGUoKTogUlRDSWNlQ29ubmVjdGlvblN0YXRlIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5pY2VDb25uZWN0aW9uU3RhdGUgfHwgbnVsbDtcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c1NldENvbmZpZ3VyYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uc2V0Q29uZmlndXJhdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGdldCBzdXBwb3J0c0dldFRyYW5zY2VpdmVycygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIUZlYXR1cmVFbmFibGVtZW50LmdldFRyYW5zY2VpdmVyc0Rpc2FibGVkICYmIHR5cGVvZiB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uZ2V0VHJhbnNjZWl2ZXJzID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnRzQWRkVHJhbnNjZWl2ZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFGZWF0dXJlRW5hYmxlbWVudC5hZGRUcmFuY2VpdmVyRGlzYWJsZWQgJiYgdHlwZW9mIHRoaXMuX3BlZXJDb25uZWN0aW9uPy5hZGRUcmFuc2NlaXZlciA9PT0gJ2Z1bmN0aW9uJztcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZU9mZmVyKG9wdGlvbnM/OiBSVENPZmZlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVPZmZlciBtZXRob2Qgd2l0aCBjYWxsYmFja3MgaXMgZGVwcmVjYXRlZFxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcihyZXNvbHZlLCByZWplY3QsIG9wdGlvbnMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlT2ZmZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVBbnN3ZXIob3B0aW9ucz86IFJUQ0Fuc3dlck9wdGlvbnMpOiBQcm9taXNlPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkKSB7XG4gICAgICAvLyBJZ25vcmVkIGFzIGxlZ2FjeSBjcmVhdGVBbnN3ZXIgbWV0aG9kIHdpdGggY2FsbGJhY2tzIGlzIGRlcHJlY2F0ZWRcbiAgICAgIC8vIFJlcXVpcmVzIGEgdHMtaWdub3JlIGRpcmVjdGl2ZSB0byBwcmV2ZW50IHR5cGVzY3JpcHQgZXJyb3JzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2Jhbi10cy1jb21tZW50XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gdGhpcy5fcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHJlc29sdmUsIHJlamVjdCwgb3B0aW9ucykpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5jcmVhdGVBbnN3ZXIob3B0aW9ucyk7XG4gIH1cblxuICBhc3luYyBzZXRMb2NhbERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRMb2NhbERlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgYXN5bmMgc2V0UmVtb3RlRGVzY3JpcHRpb24oZGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgaGFzQ3J5cHRvID0gZGVzY3JpcHRpb24uc2RwPy5tYXRjaCgvYT1jcnlwdG86L2kpO1xuXG4gICAgaWYgKGhhc0NyeXB0bykge1xuICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1NEUCBhPWNyeXB0byBpcyBub3Qgc3VwcG9ydGVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKEZlYXR1cmVFbmFibGVtZW50LnByb21pc2VCYXNlZFBDTWV0aG9kc0Rpc2FibGVkID9cbiAgICAgIG5ldyBSVENTZXNzaW9uRGVzY3JpcHRpb24oZGVzY3JpcHRpb24pIDogZGVzY3JpcHRpb24pO1xuICB9XG5cbiAgZ2V0U2VuZGVycygpOiBSVENSdHBTZW5kZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTZW5kZXJzKCk7XG4gIH1cblxuICBnZXRSZWNlaXZlcnMoKTogUlRDUnRwUmVjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRSZWNlaXZlcnMoKTtcbiAgfVxuXG4gIGdldFN0YXRzKHNlbGVjdG9yPzogTWVkaWFTdHJlYW1UcmFjayB8IG51bGwpOiBQcm9taXNlPFJUQ1N0YXRzUmVwb3J0PiB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhzZWxlY3Rvcik7XG4gIH1cblxuICBnZXRTdGF0c0xlZ2FjeSgpOiBQcm9taXNlPElMZWdhY3lSVENTdGF0c1JlcG9ydD4ge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICAvLyBJZ25vcmVkIGR1ZSB0byB0eXBlc2NyaXB0IG5vdCBoYXZpbmcgbGVnYWN5ICdnZXRTdGF0cycgbWV0aG9kIHR5cGUgZGVmaW5pdGlvblxuICAgICAgLy8gVGhpcyB3YXMgYSBDaHJvbWUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgdGhlICdnZXRTdGF0cycgbWV0aG9kIGZvclxuICAgICAgLy8gQ2hyb21lQDw9IDY2IGRldGFpbGVkIGhlcmU6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYyNzgxNlxuICAgICAgLy8gUmVxdWlyZXMgYSB0cy1pZ25vcmUgZGlyZWN0aXZlIHRvIHByZXZlbnQgdHlwZXNjcmlwdCBlcnJvcnNcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvYmFuLXRzLWNvbW1lbnRcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRTdGF0cyhyZXNvbHZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFkZEV2ZW50TGlzdGVuZXI8VCBleHRlbmRzIGtleW9mIFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXA+KHR5cGU6IFQsIGxpc3RlbmVyOiAodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENQZWVyQ29ubmVjdGlvbkV2ZW50TWFwW1RdKSA9PiB1bmtub3duLCBvcHRpb25zPzogYm9vbGVhbiB8IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpO1xuICB9XG5cbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxUIGV4dGVuZHMga2V5b2YgUlRDUGVlckNvbm5lY3Rpb25FdmVudE1hcD4odHlwZTogVCwgbGlzdGVuZXI6ICh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1BlZXJDb25uZWN0aW9uRXZlbnRNYXBbVF0pID0+IHVua25vd24sIG9wdGlvbnM/OiBib29sZWFuIHwgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lciwgb3B0aW9ucyk7XG4gIH1cblxuICBnZXRUcmFuc2NlaXZlcnMoKTogUlRDUnRwVHJhbnNjZWl2ZXJbXSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5nZXRUcmFuc2NlaXZlcnMoKTtcbiAgfVxuXG4gIGFkZFRyYW5zY2VpdmVyKG5hbWU6IHN0cmluZywgb3B0aW9uczogUlRDUnRwVHJhbnNjZWl2ZXJJbml0KTogUlRDUnRwVHJhbnNjZWl2ZXIge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhbnNjZWl2ZXIobmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICBhZGRTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKTogdm9pZCB7XG4gICAgbWVkaWFTdHJlYW0uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb24uYWRkVHJhY2sodHJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Q29uZmlndXJhdGlvbigpOiBSVENDb25maWd1cmF0aW9uIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKTtcbiAgfVxuXG4gIHNldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgc2V0IG9udHJhY2soaGFuZGxlcjogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IFJUQ1RyYWNrRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbnRyYWNrID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbnRyYWNrKCk6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBSVENUcmFja0V2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub250cmFjaztcbiAgfVxuXG4gIHNldCBvbmljZWNhbmRpZGF0ZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmljZWNhbmRpZGF0ZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogUlRDUGVlckNvbm5lY3Rpb25JY2VFdmVudCkgPT4gdW5rbm93bikgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3BlZXJDb25uZWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFBlZXJDb25uZWN0aW9uIGluaXRpYWxpemVkJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uaWNlY2FuZGlkYXRlO1xuICB9XG5cbiAgc2V0IG9uY29ubmVjdGlvbnN0YXRlY2hhbmdlKGhhbmRsZXI6ICgodGhpczogUlRDUGVlckNvbm5lY3Rpb24sIGV2ZW50OiBFdmVudCkgPT4gdW5rbm93bikgfCBudWxsKSB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uLm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldCBvbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZSgpOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLl9wZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBQZWVyQ29ubmVjdGlvbiBpbml0aWFsaXplZCcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmNvbm5lY3Rpb25zdGF0ZWNoYW5nZTtcbiAgfVxuXG4gIHNldCBvbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZShoYW5kbGVyOiAoKHRoaXM6IFJUQ1BlZXJDb25uZWN0aW9uLCBldmVudDogRXZlbnQpID0+IHVua25vd24pIHwgbnVsbCkge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9IGhhbmRsZXI7XG4gIH1cblxuICBnZXQgb25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UoKTogKCh0aGlzOiBSVENQZWVyQ29ubmVjdGlvbiwgZXZlbnQ6IEV2ZW50KSA9PiB1bmtub3duKSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gUGVlckNvbm5lY3Rpb24gaW5pdGlhbGl6ZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fcGVlckNvbm5lY3Rpb24ub25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2U7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbj8uY2xvc2UoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb24gPSBudWxsO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZhbmlsbGFQZWVyQ29ubmVjdGlvbjsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgSVBlZXJDb25uZWN0aW9uRmFjdG9yeSBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbkZhY3RvcnknO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgVmFuaWxsYVBlZXJDb25uZWN0aW9uIGZyb20gJy4vVmFuaWxsYVBlZXJDb25uZWN0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVmFuaWxsYVBlZXJDb25uZWN0aW9uRmFjdG9yeSBpbXBsZW1lbnRzIElQZWVyQ29ubmVjdGlvbkZhY3Rvcnkge1xuICBhc3luYyBjcmVhdGVQZWVyQ29ubmVjdGlvbihjb25maWd1cmF0aW9uPzogUlRDQ29uZmlndXJhdGlvbik6IFByb21pc2U8SVBlZXJDb25uZWN0aW9uPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPElQZWVyQ29ubmVjdGlvbj4ocmVzb2x2ZVBlZXJDb25uZWN0aW9uUHJvbWlzZSA9PiB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbiA9IEdsb2JhbFNjb3BlLnN1YnNjcmliZShnbG9iYWxTY29wZSA9PiB7XG4gICAgICAgIGlmICghZ2xvYmFsU2NvcGUpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlKG5ldyBWYW5pbGxhUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikpO1xuICAgICAgICBnbG9iYWxTY29wZVN1YnNjcmlwdGlvbi5kaXNwb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi9TdWJqZWN0JztcbmltcG9ydCBJRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0lEaXNwb3NhYmxlJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhZE9ubHlTdWJqZWN0PFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3ViamVjdDogU3ViamVjdDxUPjtcblxuICBjb25zdHJ1Y3RvcihzdWJqZWN0OiBTdWJqZWN0PFQ+KSB7XG4gICAgdGhpcy5fc3ViamVjdCA9IHN1YmplY3Q7XG4gIH1cblxuICBnZXQgdmFsdWUoKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YmplY3QudmFsdWU7XG4gIH1cblxuICBzdWJzY3JpYmUobGlzdGVuZXI6ICh2YWx1ZTogVCkgPT4gdm9pZCk6IElEaXNwb3NhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fc3ViamVjdC5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZSBmcm9tICcuLi9sYW5nL0Rpc3Bvc2FibGUnO1xuaW1wb3J0IElDb21wYXJhYmxlIGZyb20gJy4uL2xhbmcvSUNvbXBhcmFibGUnO1xuXG5jbGFzcyBEaXNwb3NhYmxlTGlzdGVuZXI8VD4gZXh0ZW5kcyBEaXNwb3NhYmxlIHtcbiAgY29uc3RydWN0b3IobGlzdGVuZXJzOiBUW10sIGxpc3RlbmVyOiBUKSB7XG4gICAgc3VwZXIoKCkgPT4ge1xuICAgICAgY29uc3QgaWR4ID0gbGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuXG4gICAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgICAgbGlzdGVuZXJzLnNwbGljZShpZHgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YmplY3Q8VD4ge1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXN0ZW5lcnM6ICgodmFsdWU6IFQpID0+IHZvaWQpW107XG4gIHByaXZhdGUgX3ZhbHVlOiBUO1xuXG4gIGNvbnN0cnVjdG9yKHZhbHVlOiBUKSB7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0gW107XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogVCkge1xuICAgIGxldCBjaGFuZ2VkID0gdGhpcy5fdmFsdWUgIT09IHZhbHVlO1xuXG4gICAgaWYgKGNoYW5nZWQgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGNvbXBhcmFibGUgPSB2YWx1ZSBhcyB1bmtub3duIGFzIElDb21wYXJhYmxlPFQ+O1xuXG4gICAgICBpZiAodHlwZW9mIGNvbXBhcmFibGUuZXF1YWxzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNoYW5nZWQgPSAhY29tcGFyYWJsZS5lcXVhbHModGhpcy5fdmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hhbmdlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICBmb3IgKGNvbnN0IGxpc3RlbmVyIG9mIFsuLi50aGlzLl9saXN0ZW5lcnNdKSB7XG4gICAgICBsaXN0ZW5lcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IFQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHN1YnNjcmliZShsaXN0ZW5lcjogKHZhbHVlOiBUKSA9PiB2b2lkKTogSURpc3Bvc2FibGUge1xuICAgIHRoaXMuX2xpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblxuICAgIGxpc3RlbmVyKHRoaXMuX3ZhbHVlKTtcblxuICAgIHJldHVybiBuZXcgRGlzcG9zYWJsZUxpc3RlbmVyPCh2YWx1ZTogVCkgPT4gdm9pZD4odGhpcy5fbGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVudmlyb25tZW50IHtcbiAgc3RhdGljIGdldEVudmlyb25tZW50RnJvbVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJhc2VVUkwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICAgIHJldHVybiBiYXNlVVJMLm9yaWdpbjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgSUdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lHbG9iYWxTY29wZSc7XG5pbXBvcnQge0dsb2JhbFNjb3BlfSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU3RyaW5ncyBmcm9tICcuLi9sYW5nL1N0cmluZ3MnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUmVhZE9ubHlTdWJqZWN0IGZyb20gJy4uL3J4L1JlYWRPbmx5U3ViamVjdCc7XG5pbXBvcnQgRWRnZUF1dGhQYXJzZXIgZnJvbSAnLi4vZWRnZUF1dGgvRWRnZUF1dGhQYXJzZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCB7TG9nZ2luZ0xldmVsLCBMb2dnaW5nTGV2ZWxUeXBlfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VyJztcbmltcG9ydCBDb25zb2xlQXBwZW5kZXIgZnJvbSAnLi4vbG9nZ2VyL0NvbnNvbGVBcHBlbmRlcic7XG5pbXBvcnQgVGVsZW1ldHJ5QXBwZW5kZXIgZnJvbSAnLi4vdGVsZW1ldHJ5L1RlbGVtZXRyeUFwZW5kZXInO1xuaW1wb3J0IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIgZnJvbSAnLi4vZG9tL0NvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXInO1xuaW1wb3J0IE1ldHJpY3NDb25maWd1cmF0aW9uLCB7VGVsZW1ldHJ5TGV2ZWwsIFRlbGVtZXRyeUxldmVsVHlwZX0gZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzQ29uZmlndXJhdGlvbic7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nIGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJpY0xldmVsTWFwcGluZyc7XG5pbXBvcnQgTG9nZ2luZ0xldmVsTWFwcGluZyBmcm9tICcuLi9sb2dnZXIvTG9nZ2luZ0xldmVsTWFwcGluZyc7XG5pbXBvcnQgQnVpbGRGZWF0dXJlcyBmcm9tICcuLi9lbnZpcm9ubWVudC9CdWlsZEZlYXR1cmVzJztcbmltcG9ydCBCcm93c2VyRGV0ZWN0b3IgZnJvbSAnLi4vZG9tL0Jyb3dzZXJEZXRlY3Rvcic7XG5pbXBvcnQgQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgZnJvbSAnLi4vZG9tL0FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yJztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb25GYWN0b3J5IGZyb20gJy4uL3J0Yy9JUGVlckNvbm5lY3Rpb25GYWN0b3J5JztcbmltcG9ydCBQZWVyQ29ubmVjdGlvblNlcnZpY2UgZnJvbSAnLi4vcnRjL1BlZXJDb25uZWN0aW9uU2VydmljZSc7XG5pbXBvcnQgVGVsZW1ldHJ5VXJsIGZyb20gJy4vVGVsZW1ldHJ5VXJsJztcbmltcG9ydCBFbnZpcm9ubWVudCBmcm9tICcuL0Vudmlyb25tZW50JztcbmltcG9ydCBEaXNjb3ZlcnlVcmkgZnJvbSAnLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBUZWxlbWV0cnlEZWZhdWx0IGZyb20gJy4uL21ldHJpY3MvVGVsZW1ldHJ5RGVmYXVsdCc7XG5pbXBvcnQge1NoYWthUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSVNoYWthUGxheWVyJztcbmltcG9ydCB7SGxzUGxheWVyVHlwZX0gZnJvbSAnLi9zdHJlYW1pbmcvSUhsc1BsYXllcic7XG5pbXBvcnQge1dlYlBsYXllclR5cGV9IGZyb20gJy4vc3RyZWFtaW5nL0lXZWJQbGF5ZXInO1xuaW1wb3J0IElQcm92aWRlZEdsb2JhbFNjb3BlIGZyb20gJy4uL2dsb2JhbFNjb3BlL0lQcm92aWRlZEdsb2JhbFNjb3BlJztcblxuY29uc3QgcGFnZUxvYWRUaW1lID0gR2xvYmFsU2NvcGUuZ2V0SW5zdGFuY2UoKS52YWx1ZT8ucGFnZUxvYWRUaW1lIHx8IERhdGUubm93KCk7XG5cbmludGVyZmFjZSBJSW5pdE9wdGlvbnMge1xuICBkaXNjb3ZlcnlVcmk/OiBzdHJpbmc7XG4gIHBlZXJDb25uZWN0aW9uRmFjdG9yeT86IElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk7XG4gIHRlbGVtZXRyeUxldmVsPzogVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuICBsb2dnaW5nTGV2ZWw/OiBMb2dnaW5nTGV2ZWxUeXBlO1xuICBjb25zb2xlTG9nZ2luZ0xldmVsPzogTG9nZ2luZ0xldmVsVHlwZTtcbiAgYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbT86IGJvb2xlYW47XG4gIGF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlPzogYm9vbGVhbjtcbiAgd2ViUGxheWVyTG9hZGVyPzogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBzaGFrYVBsYXllckxvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogU2hha2FQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBobHNKc0xvYWRlcj86ICh2YWx1ZTogKHBsYXllcjogSGxzUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU0RLIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24gPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LWF1dG9tYXRpY2FsbHktcmVjb25uZWN0LXBlZXItY29ubmVjdGlvbicpO1xuICBwcml2YXRlIHN0YXRpYyBfYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IHRydWU7XG4gIHByaXZhdGUgc3RhdGljIF9mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0ID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1mb3JjZS1nYXJiYWdlLWNvbGxlY3Rpb24tb24tcmVzdGFydCcpO1xuICBwcml2YXRlIHN0YXRpYyBfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1za2lwLWdhcmJhZ2UtY29sbGVjdGlvbi1vbi1tb2JpbGUtZGV2aWNlcycpO1xuICBwcml2YXRlIHN0YXRpYyBfd2ViUGxheWVyTG9hZGVyOiAodmFsdWU6IChwbGF5ZXI6IFdlYlBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9zaGFrYVBsYXllckxvYWRlcjogKHZhbHVlOiAocGxheWVyOiBTaGFrYVBsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQ7XG4gIHByaXZhdGUgc3RhdGljIF9obHNKc0xvYWRlcjogKHZhbHVlOiAocGxheWVyOiBIbHNQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkO1xuICBwcml2YXRlIHN0YXRpYyBfYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3I6IEFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIHwgbnVsbDtcbiAgcHJpdmF0ZSBzdGF0aWMgX2Vudmlyb25tZW50OiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX3RlbGVtZXRyeVVybDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnknKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSA4O1xuICBwcml2YXRlIHN0YXRpYyBfdGVsZW1ldHJ5TGV2ZWw6IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+ID0gbmV3IFN1YmplY3Q8VGVsZW1ldHJ5TGV2ZWw+KFRlbGVtZXRyeURlZmF1bHQuZGVmYXVsdFRlbGVtZXRyeUxldmVsKTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBzdGF0aWMgX21ldHJpY3NDb25maWd1cmF0aW9uOiBNZXRyaWNzQ29uZmlndXJhdGlvbjtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3NlbmRMb2NhbENhbmRpZGF0ZXM6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdChCdWlsZEZlYXR1cmVzLnNlbmRMb2NhbENhbmRpZGF0ZXMpO1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfdGVuYW5jeTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9jbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9IFN0cmluZ3MucmFuZG9tKDMyKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX2xvYWRlZFRpbWVzdGFtcDogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU0RLJyk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9pbml0aWFsaXplZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgX3JlYWRPbmx5SW5pdGlhbGl6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4oU0RLLl9pbml0aWFsaXplZCk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seURpc2NvdmVyeVVyaTogUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVhZE9ubHlTdWJqZWN0PHN0cmluZz4oRGlzY292ZXJ5VXJpLnVyaSk7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uRmFjdG9yeTogUmVhZE9ubHlTdWJqZWN0PElQZWVyQ29ubmVjdGlvbkZhY3Rvcnk+ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb25GYWN0b3J5PihQZWVyQ29ubmVjdGlvblNlcnZpY2UucGVlckNvbm5lY3Rpb25GYWN0b3J5KTtcblxuICBzdGF0aWMgZ2V0IHBhZ2VMb2FkVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNlbmRMb2NhbENhbmRpZGF0ZXMoKTogU3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbmRMb2NhbENhbmRpZGF0ZXM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHRlbmFuY3koKTogU3ViamVjdDxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5fdGVuYW5jeTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgY2xpZW50U2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNESy5fY2xpZW50U2Vzc2lvbklkO1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2FkZWRUaW1lc3RhbXAoKTogRGF0ZSB7XG4gICAgcmV0dXJuIFNESy5fbG9hZGVkVGltZXN0YW1wO1xuICB9XG5cbiAgc3RhdGljIGdldCBpbml0aWFsaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5SW5pdGlhbGl6ZWQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVVyaSgpOiBSZWFkT25seVN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIFNESy5fcmVhZE9ubHlEaXNjb3ZlcnlVcmk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHBlZXJDb25uZWN0aW9uRmFjdG9yeSgpOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uRmFjdG9yeT4ge1xuICAgIHJldHVybiBTREsuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICB9XG5cbiAgc3RhdGljIGdldCBhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gU0RLLl9hdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBzdGF0aWMgZ2V0IGF1dG9tYXRpY2FsbHlQbGF5TWVkaWFTdHJlYW0oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFNESy5fYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IHNraXBHYXJiYWdlQ29sbGVjdGlvbk9uTW9iaWxlRGV2aWNlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzO1xuICB9XG5cbiAgc3RhdGljIGdldCB3ZWJQbGF5ZXJMb2FkZXIoKTogKHZhbHVlOiAocGxheWVyOiBXZWJQbGF5ZXJUeXBlKSA9PiB2b2lkKSA9PiB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5fd2ViUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBzaGFrYVBsYXllckxvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IFNoYWthUGxheWVyVHlwZSkgPT4gdm9pZCkgPT4gdm9pZCB7XG4gICAgcmV0dXJuIHRoaXMuX3NoYWthUGxheWVyTG9hZGVyO1xuICB9XG5cbiAgc3RhdGljIGdldCBobHNKc0xvYWRlcigpOiAodmFsdWU6IChwbGF5ZXI6IEhsc1BsYXllclR5cGUpID0+IHZvaWQpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLl9obHNKc0xvYWRlcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWV0cmljc1NlcnZpY2UoKTogTWV0cmljc1NlcnZpY2Uge1xuICAgIHJldHVybiBTREsuX21ldHJpY3NTZXJ2aWNlO1xuICB9XG5cbiAgc3RhdGljIGdldCBhcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpOiBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5VXJsKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbGVtZXRyeVVybDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9tYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzO1xuICB9XG5cbiAgc3RhdGljIHNldCBtYXhpbWFsTnVtYmVyT2ZQZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzKHJldHJpZXNBbW91bnQ6IG51bWJlcikge1xuICAgIHRoaXMuX21heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSByZXRyaWVzQW1vdW50O1xuICB9XG5cbiAgc3RhdGljIGdldCBsb2dnaW5nTGV2ZWwoKTogTG9nZ2luZ0xldmVsVHlwZSB7XG4gICAgcmV0dXJuIExvZ2dpbmdMZXZlbE1hcHBpbmcuY29udmVydExvZ2dpbmdMZXZlbFRvTG9nZ2luZ0xldmVsVHlwZSh0aGlzLl9sb2dnZXIudGhyZXNob2xkLnZhbHVlKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgdGVsZW1ldHJ5TGV2ZWwoKTogVGVsZW1ldHJ5TGV2ZWxUeXBlIHtcbiAgICByZXR1cm4gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFRvVGVsZW1ldHJ5TGV2ZWxUeXBlKFNESy5fdGVsZW1ldHJ5TGV2ZWwudmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGdldCBicm93c2VyRGV0ZWN0b3IoKTogQnJvd3NlckRldGVjdG9yIHtcbiAgICByZXR1cm4gQnJvd3NlckRldGVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5VGVsZW1ldHJ5Q29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlDb25maWd1cmF0aW9uID0gTG9nZ2VyRmFjdG9yeS50ZWxlbWV0cnlDb25maWd1cmF0aW9uO1xuXG4gICAgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQgPSBTREsuY2xpZW50U2Vzc2lvbklkO1xuICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ucGFnZUxvYWRUaW1lID0gU0RLLnBhZ2VMb2FkVGltZTtcblxuICAgIGNvbnN0IGlnbm9yZWRFbnZpcm9ubWVudCA9IFNESy5fZW52aXJvbm1lbnQuc3Vic2NyaWJlKGVudmlyb25tZW50ID0+IHtcbiAgICAgIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24uZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9KTtcbiAgICBjb25zdCBpZ25vcmVkRGlzY292ZXJ5VXJpID0gU0RLLnRlbGVtZXRyeVVybC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgY29uc3QgdGVsZW1ldHJ5QXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBUZWxlbWV0cnlBcHBlbmRlcik7XG5cbiAgICAgIGlmICh0ZWxlbWV0cnlBcHBlbmRlcikge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnVybCA9IHZhbHVlO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSBVUkwgd2FzIHNldCB0byBbJXNdJywgdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGlnbm9yZWRUZW5hbmN5ID0gU0RLLl90ZW5hbmN5LnN1YnNjcmliZSh0ZW5hbmN5ID0+IHtcbiAgICAgIGNvbnN0IHRlbGVtZXRyeUFwcGVuZGVyID0gdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy52YWx1ZS5maW5kKGFwcGVuZGVyID0+IGFwcGVuZGVyIGluc3RhbmNlb2YgVGVsZW1ldHJ5QXBwZW5kZXIpO1xuXG4gICAgICBpZiAodGVsZW1ldHJ5QXBwZW5kZXIgJiYgdGVuYW5jeSkge1xuICAgICAgICB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3kgPSB0ZW5hbmN5O1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKHRlbGVtZXRyeUFwcGVuZGVyKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmFwcGVuZGVycy5hZGQobmV3IFRlbGVtZXRyeUFwcGVuZGVyKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1RlbGVtZXRyeSB0ZW5hbmN5IHdhcyBzZXQgdG8gWyVzXScsIHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24udGVuYW5jeSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgYXBwbHlNZXRyaWNzQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSk7XG4gICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbiA9IFNESy5fbWV0cmljc1NlcnZpY2UubWV0cmljc0NvbmZpZ3VyYXRpb247XG5cbiAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLnNlc3Npb25JZCA9IFNESy5jbGllbnRTZXNzaW9uSWQ7XG5cbiAgICBjb25zdCBpZ25vcmVkRW52aXJvbm1lbnQgPSBTREsuX2Vudmlyb25tZW50LnN1YnNjcmliZShlbnZpcm9ubWVudCA9PiB7XG4gICAgICBTREsuX21ldHJpY3NDb25maWd1cmF0aW9uLmVudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZERpc2NvdmVyeVVyaSA9IFNESy50ZWxlbWV0cnlVcmwuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIFNESy5fbWV0cmljc0NvbmZpZ3VyYXRpb24udXJsID0gdmFsdWU7XG4gICAgfSk7XG4gICAgY29uc3QgaWdub3JlZFRlbmFuY3kgPSBTREsuX3RlbmFuY3kuc3Vic2NyaWJlKHRlbmFuY3kgPT4ge1xuICAgICAgU0RLLl9tZXRyaWNzQ29uZmlndXJhdGlvbi50ZW5hbmN5ID0gdGVuYW5jeTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1tZXRyaWNzLWxldmVsJykgYXMgVGVsZW1ldHJ5TGV2ZWxUeXBlO1xuXG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICBNZXRyaWNzRmFjdG9yeS5zZXRUZWxlbWV0cnlMZXZlbChUZWxlbWV0cnlMZXZlbFt2YWx1ZV0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlnbm9yZWRUZWxlbWV0cnlMZXZlbCA9IFNESy5fdGVsZW1ldHJ5TGV2ZWwuc3Vic2NyaWJlKHRlbGVtZXRyeUxldmVsID0+IHtcbiAgICAgIE1ldHJpY3NGYWN0b3J5LnNldFRlbGVtZXRyeUxldmVsKHRlbGVtZXRyeUxldmVsKTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseUF1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZUZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX2F1dG9tYXRpY2FsbHlSZXRyeU9uRmFpbHVyZSA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtYXV0b21hdGljYWxseS1yZXRyeS1vbi1mYWlsdXJlJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3RhdGljIGFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRCb29sZWFuVmFsdWUoJ3BoZW5peC1hdXRvbWF0aWNhbGx5LXJlY29ubmVjdC1wZWVyLWNvbm5lY3Rpb24nKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnQXV0b21hdGljYWxseSByZWNvbm5lY3QgcGVlciBjb25uZWN0aW9uIGlzIHNldCB0bzogWyVzXScsIHRoaXMuX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbik7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlGb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0RnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0Qm9vbGVhblZhbHVlKCdwaGVuaXgtZm9yY2UtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLXJlc3RhcnQnKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0aWMgYXBwbHlTa2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXNGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9za2lwR2FyYmFnZUNvbGxlY3Rpb25Pbk1vYmlsZURldmljZXMgPSBDb25maWd1cmF0aW9uUGFyYW1ldGVyUmVhZGVyLmdldEJvb2xlYW5WYWx1ZSgncGhlbml4LXNraXAtZ2FyYmFnZS1jb2xsZWN0aW9uLW9uLW1vYmlsZS1kZXZpY2VzJyk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRpYyBhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbigpOiB2b2lkIHtcbiAgICBTREsuZGlzY292ZXJ5VXJpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBTREsudGVsZW1ldHJ5VXJsLnZhbHVlID0gU0RLLmdldFRlbGVtZXRyeVVybCh2YWx1ZSk7XG4gICAgICBTREsuX2Vudmlyb25tZW50LnZhbHVlID0gRW52aXJvbm1lbnQuZ2V0RW52aXJvbm1lbnRGcm9tVXJsKHZhbHVlKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNoYW5uZWxUb2tlbiA9IENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIuZ2V0U3RyaW5nVmFsdWUoJ3BoZW5peC1jaGFubmVsLXRva2VuJyk7XG5cbiAgICBpZiAoY2hhbm5lbFRva2VuKSB7XG4gICAgICBjb25zdCBlZGdlVG9rZW4gPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKGNoYW5uZWxUb2tlbik7XG5cbiAgICAgIFNESy5fdGVuYW5jeS52YWx1ZSA9IGVkZ2VUb2tlbi50ZW5hbmN5O1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IChlZGdlVG9rZW4udXJpIHx8IFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpLnRvU3RyaW5nKCk7XG5cbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVyaVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LXVyaScpO1xuXG4gICAgaWYgKHVyaVZhbHVlKSB7XG4gICAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gdXJpVmFsdWU7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnRGlzY292ZXJ5IFVSSSBzZXQgZnJvbSBcInBoZW5peC11cmlcIiBjb25maWd1cmF0aW9uIHBhcmFtZXRlciB0YWcgdG8gWyVzXScsIFNESy5kaXNjb3ZlcnlVcmkudmFsdWUpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYmFzZVVSSVZhbHVlID0gQ29uZmlndXJhdGlvblBhcmFtZXRlclJlYWRlci5nZXRTdHJpbmdWYWx1ZSgncGhlbml4LWJhc2UtdXJpJyk7XG5cbiAgICBpZiAoYmFzZVVSSVZhbHVlKSB7XG4gICAgICBjb25zdCBnbG9iYWxTY29wZSA9IEdsb2JhbFNjb3BlLmdldEluc3RhbmNlKCkudmFsdWU7XG4gICAgICBjb25zdCB1cmkgPSBuZXcgZ2xvYmFsU2NvcGUuVVJMKGJhc2VVUklWYWx1ZSk7XG5cbiAgICAgIHVyaS5wYXRobmFtZSA9ICcvcGNhc3QvZW5kUG9pbnRzJztcbiAgICAgIERpc2NvdmVyeVVyaS51cmkudmFsdWUgPSB1cmkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdEaXNjb3ZlcnkgVVJJIHNldCBmcm9tIFwicGhlbml4LWJhc2UtdXJpXCIgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgdGFnIHRvIFslc10nLCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBvbkxvYWQoZ2xvYmFsU2NvcGU6IElHbG9iYWxTY29wZSB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAoIWdsb2JhbFNjb3BlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2luaXRpYWxpemVkLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIud2FybignU0RLIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBnbG9iYWxTY29wZS5hZGRXaW5kb3dFdmVudExpc3RlbmVyKCd1bmxvYWQnLCAoKSA9PiB7XG4gICAgICBTREsuZGlzcG9zZSgpO1xuICAgIH0pO1xuXG4gICAgU0RLLmFwcGx5RGlzY292ZXJ5VXJpRGVmYXVsdEZyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKCk7XG4gICAgU0RLLmFwcGx5TWV0cmljc0NvbmZpZ3VyYXRpb24oKTtcbiAgICBTREsuYXBwbHlUZWxlbWV0cnlDb25maWd1cmF0aW9uKCk7XG5cbiAgICB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciA9IG5ldyBBcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcigpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0F1dG9tYXRpY2FsbHkgcmV0cnkgb24gZmFpbHVyZSBpcyBzZXQgdG86IFslc10nLCB0aGlzLl9hdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmUpO1xuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdBdXRvbWF0aWNhbGx5IHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24gaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fYXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCk7XG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1NraXAgZ2FyYmFnZSBjb2xsZWN0aW9uIG9uIG1vYmlsZSBkZXZpY2VzIG9uIHJlc3RhcnQgaXMgc2V0IHRvOiBbJXNdJywgdGhpcy5fc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzKTtcblxuICAgIHRoaXMuX2luaXRpYWxpemVkLnZhbHVlID0gdHJ1ZTtcbiAgfVxuXG4gIHN0YXRpYyBpbml0KG9wdGlvbnM/OiBJSW5pdE9wdGlvbnMpOiB2b2lkIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGU6IElJbml0T3B0aW9ucyAmIHtnbG9iYWxTY29wZT86IElQcm92aWRlZEdsb2JhbFNjb3BlfSA9IG9wdGlvbnM7XG5cbiAgICBpZiAob3B0aW9uc1dpdGhPcHRpb25hbGdsb2JhbFNjb3BlLmdsb2JhbFNjb3BlKSB7XG4gICAgICBHbG9iYWxTY29wZS5zZXRJbnN0YW5jZShvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUuZ2xvYmFsU2NvcGUpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRpc2NvdmVyeVVyaSkge1xuICAgICAgRGlzY292ZXJ5VXJpLnVyaS52YWx1ZSA9IG9wdGlvbnMuZGlzY292ZXJ5VXJpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBlZXJDb25uZWN0aW9uRmFjdG9yeSkge1xuICAgICAgUGVlckNvbm5lY3Rpb25TZXJ2aWNlLnBlZXJDb25uZWN0aW9uRmFjdG9yeS52YWx1ZSA9IG9wdGlvbnMucGVlckNvbm5lY3Rpb25GYWN0b3J5O1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnRlbGVtZXRyeUxldmVsICYmIFRlbGVtZXRyeUxldmVsW29wdGlvbnMudGVsZW1ldHJ5TGV2ZWxdKSB7XG4gICAgICBTREsuX3RlbGVtZXRyeUxldmVsLnZhbHVlID0gVGVsZW1ldHJ5TGV2ZWxNYXBwaW5nLmNvbnZlcnRUZWxlbWV0cnlMZXZlbFR5cGVUb1RlbGVtZXRyeUxldmVsKG9wdGlvbnMudGVsZW1ldHJ5TGV2ZWwpO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmxvZ2dpbmdMZXZlbCAmJiBMb2dnaW5nTGV2ZWxbb3B0aW9ucy5sb2dnaW5nTGV2ZWxdKSB7XG4gICAgICB0aGlzLl9sb2dnZXIudGhyZXNob2xkLnNldFRocmVzaG9sZChMb2dnaW5nTGV2ZWxNYXBwaW5nLmNvbnZlcnRMb2dnaW5nTGV2ZWxUeXBlVG9Mb2dnaW5nTGV2ZWwob3B0aW9ucy5sb2dnaW5nTGV2ZWwpKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5jb25zb2xlTG9nZ2luZ0xldmVsICYmIExvZ2dpbmdMZXZlbFtvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWxdKSB7XG4gICAgICBjb25zdCBjb25zb2xlQXBwZW5kZXIgPSB0aGlzLl9sb2dnZXIuYXBwZW5kZXJzLnZhbHVlLmZpbmQoYXBwZW5kZXIgPT4gYXBwZW5kZXIgaW5zdGFuY2VvZiBDb25zb2xlQXBwZW5kZXIpO1xuXG4gICAgICBpZiAoY29uc29sZUFwcGVuZGVyKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMucmVtb3ZlKGNvbnNvbGVBcHBlbmRlcik7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbnNvbGVMb2dnaW5nTGV2ZWwgIT09ICdPZmYnKSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5hcHBlbmRlcnMuYWRkKG5ldyBDb25zb2xlQXBwZW5kZXIoTG9nZ2luZ0xldmVsTWFwcGluZy5jb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsKG9wdGlvbnMuY29uc29sZUxvZ2dpbmdMZXZlbCkpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtID0gb3B0aW9ucy5hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aGlzLl9hdXRvbWF0aWNhbGx5TXV0ZVZpZGVvT25QbGF5RmFpbHVyZSA9IG9wdGlvbnMuYXV0b21hdGljYWxseU11dGVWaWRlb09uUGxheUZhaWx1cmU7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMud2ViUGxheWVyTG9hZGVyKSB7XG4gICAgICB0aGlzLl93ZWJQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLndlYlBsYXllckxvYWRlcjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5zaGFrYVBsYXllckxvYWRlcikge1xuICAgICAgdGhpcy5fc2hha2FQbGF5ZXJMb2FkZXIgPSBvcHRpb25zLnNoYWthUGxheWVyTG9hZGVyO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmhsc0pzTG9hZGVyKSB7XG4gICAgICB0aGlzLl9obHNKc0xvYWRlciA9IG9wdGlvbnMuaGxzSnNMb2FkZXI7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRpc3Bvc2UoKTogdm9pZCB7XG4gICAgU0RLLl9pbml0aWFsaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yPy5kaXNwb3NlKCk7XG4gICAgdGhpcy5fYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IgPSBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFRlbGVtZXRyeVVybCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFRlbGVtZXRyeVVybC5nZXRUZWxlbWV0cnlVcmwodXJsKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbkdsb2JhbFNjb3BlLnN1YnNjcmliZShTREsub25Mb2FkLmJpbmQoU0RLKSk7IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUZWxlbWV0cnlVcmwge1xuICBzdGF0aWMgZ2V0VGVsZW1ldHJ5VXJsKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYmFzZVVSTCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJsKTtcbiAgICAgIGNvbnN0IHNlZ21lbnRzID0gYmFzZVVSTC5ob3N0bmFtZS5zcGxpdCgnLicpO1xuXG4gICAgICBzd2l0Y2ggKGJhc2VVUkwucHJvdG9jb2wpIHtcbiAgICAgICAgY2FzZSAnd3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHA6JztcblxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICd3c3M6JzpcbiAgICAgICAgICBiYXNlVVJMLnByb3RvY29sID0gJ2h0dHBzOic7XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBpZiAoc2VnbWVudHMubGVuZ3RoID09PSAyIHx8XG4gICAgICAgICAgKHNlZ21lbnRzLmxlbmd0aCA9PT0gMyAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAyXS5sZW5ndGggPD0gMiAmJiBzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXS5sZW5ndGggPD0gMylcbiAgICAgICkge1xuICAgICAgICBzZWdtZW50cy51bnNoaWZ0KCd0ZWxlbWV0cnknKTtcbiAgICAgIH0gZWxzZSBpZiAoc2VnbWVudHNbMF0uc3RhcnRzV2l0aCgnc3RnLScpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctc3RnJykgfHwgc2VnbWVudHNbMF0uaW5jbHVkZXMoJy1zdGctJykgfHwgc2VnbWVudHNbMF0gPT09ICdzdGcnKSB7XG4gICAgICAgIHNlZ21lbnRzWzBdID0gJ3RlbGVtZXRyeS1zdGcnO1xuICAgICAgfSBlbHNlIGlmIChzZWdtZW50c1swXS5zdGFydHNXaXRoKCdsb2NhbCcpIHx8IHNlZ21lbnRzWzBdLmVuZHNXaXRoKCctbG9jYWwnKSkge1xuICAgICAgICAvLyBMZWF2ZSBVUkwgdW5jaGFuZ2VkXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWdtZW50c1swXSA9ICd0ZWxlbWV0cnknO1xuICAgICAgfVxuXG4gICAgICBiYXNlVVJMLmhvc3RuYW1lID0gc2VnbWVudHMuam9pbignLicpO1xuXG4gICAgICByZXR1cm4gYCR7YmFzZVVSTC5vcmlnaW59L3RlbGVtZXRyeWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmV4cG9ydCB0eXBlIEJpdHJhdGVTdGF0ZVR5cGUgPSAnS2VlcCcgfCAnUmVzZXQnO1xuZXhwb3J0IHR5cGUgQml0cmF0ZU1vZGVUeXBlID0gJ05vcm1hbCcgfCAnRm9yY2UnIHwgJ1Jlc2V0JztcblxuZXhwb3J0IGVudW0gQml0cmF0ZVN0YXRlIHtcbiAgS2VlcCxcbiAgUmVzZXRcbn1cblxuZXhwb3J0IGVudW0gQml0cmF0ZU1vZGUge1xuICBOb3JtYWwsXG4gIEZvcmNlLFxuICBSZXNldFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSB7XG4gIGFwaVZlcnNpb246IG51bWJlcjtcbiAgc2hhcmVkU2VjcmV0OiBzdHJpbmc7XG4gIGVsYXBzZWRJbk1pbGxpc2Vjb25kczogbnVtYmVyO1xuICBiaXRyYXRlSW5CaXRzUGVyU2Vjb25kOiBudW1iZXI7XG4gIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlVHlwZTtcbiAgYml0cmF0ZU1vZGU6IEJpdHJhdGVNb2RlVHlwZTtcbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTdWJqZWN0IGZyb20gJy4uLy4uL3J4L1N1YmplY3QnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCBHYXJiYWdlQ29sbGVjdG9yTWFuYWdlciBmcm9tICcuLi8uLi9kb20vR2FyYmFnZUNvbGxlY3Rvck1hbmFnZXInO1xuXG5leHBvcnQgdHlwZSBQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zID0ge1xuICBmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVlckNvbm5lY3Rpb25Db250ZXh0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDogYm9vbGVhbjtcbiAgbWVkaWFTdHJlYW06IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPjtcbiAgcGVlckNvbm5lY3Rpb246IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zKSB7XG4gICAgdGhpcy5fZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydCA9IG9wdGlvbnMuZm9yY2VHYXJiYWdlQ29sbGVjdGlvbk9uUmVzdGFydDtcbiAgICB0aGlzLm1lZGlhU3RyZWFtID0gbmV3IFN1YmplY3Q8TWVkaWFTdHJlYW0gfCBudWxsPihudWxsKTtcbiAgICB0aGlzLnBlZXJDb25uZWN0aW9uID0gbmV3IFN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4obnVsbCk7XG4gICAgdGhpcy5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwb3NlUGVlckNvbm5lY3Rpb24oKTogdm9pZCB7XG4gICAgY29uc3QgcGVlckNvbm5lY3Rpb24gPSB0aGlzLnBlZXJDb25uZWN0aW9uLnZhbHVlO1xuXG4gICAgaWYgKCFwZWVyQ29ubmVjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgIHBlZXJDb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgcGVlckNvbm5lY3Rpb24uZGlzcG9zZSgpO1xuXG4gICAgaWYgKHRoaXMuX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQpIHtcbiAgICAgIEdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyLmZvcmNlR2FyYmFnZUNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZGlzcG9zZU1lZGlhU3RyZWFtKCk6IHZvaWQge1xuICAgIHRoaXMubWVkaWFTdHJlYW0udmFsdWU/LmdldFRyYWNrcygpLmZvckVhY2godHJhY2sgPT4gdHJhY2suc3RvcCgpKTtcbiAgICB0aGlzLm1lZGlhU3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXRlQ29udGV4dCB7XG4gIGlzU3RhcnRpbmc6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIGlzRGlzcG9zZWQ6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pc1N0YXJ0aW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuaXNEaXNwb3NlZCA9IGZhbHNlO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgU3ViamVjdCBmcm9tICcuLi8uLi9yeC9TdWJqZWN0JztcbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRva2VuQ29udGV4dCB7XG4gIHRva2VuOiBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICB0b2tlbkV4cGlyaW5nOiBTdWJqZWN0PGJvb2xlYW4+O1xuXG4gIGNvbnN0cnVjdG9yKHRva2VuOiBFbmNvZGVkRWRnZVRva2VuKSB7XG4gICAgdGhpcy50b2tlbiA9IG5ldyBTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+KHRva2VuKTtcbiAgICB0aGlzLnRva2VuRXhwaXJpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmNvbnN0IGRlZmF1bHREaXNjb3ZlcnlVcmkgPSAnaHR0cHM6Ly9wY2FzdC5waGVuaXhydHMuY29tL3BjYXN0L2VuZFBvaW50cyc7XG5cbmV4cG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQge0JpdHJhdGVNb2RlLCBCaXRyYXRlTW9kZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVNb2RlTWFwcGluZyB7XG4gIHN0YXRpYyBjb252ZXJ0Qml0cmF0ZU1vZGVUb0JpdHJhdGVNb2RlVHlwZShiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUpOiBCaXRyYXRlTW9kZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZU1vZGUpIHtcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuTm9ybWFsOlxuICAgICAgICByZXR1cm4gJ05vcm1hbCc7XG4gICAgICBjYXNlIEJpdHJhdGVNb2RlLkZvcmNlOlxuICAgICAgICByZXR1cm4gJ0ZvcmNlJztcbiAgICAgIGNhc2UgQml0cmF0ZU1vZGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZU1vZGUpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IHtCaXRyYXRlU3RhdGUsIEJpdHJhdGVTdGF0ZVR5cGV9IGZyb20gJy4uL2FwaS9TZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZSc7XG5pbXBvcnQgYXNzZXJ0VW5yZWFjaGFibGUgZnJvbSAnLi4vLi4vbGFuZy9hc3NlcnRVbnJlYWNoYWJsZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJpdHJhdGVTdGF0ZU1hcHBpbmcge1xuICBzdGF0aWMgY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZShiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSk6IEJpdHJhdGVTdGF0ZVR5cGUge1xuICAgIHN3aXRjaCAoYml0cmF0ZVN0YXRlKSB7XG4gICAgICBjYXNlIEJpdHJhdGVTdGF0ZS5LZWVwOlxuICAgICAgICByZXR1cm4gJ0tlZXAnO1xuICAgICAgY2FzZSBCaXRyYXRlU3RhdGUuUmVzZXQ6XG4gICAgICAgIHJldHVybiAnUmVzZXQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoYml0cmF0ZVN0YXRlKTtcbiAgICB9XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgRGlzY292ZXJ5U2VydmljZSBmcm9tICcuL0Rpc2NvdmVyeVNlcnZpY2UnO1xuaW1wb3J0IEVuZFBvaW50IGZyb20gJy4vRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuXG5jb25zdCBkaXNjb3ZlcnlDYWNoZUludGVydmFsID0gNjAwMDA7XG5cbmludGVyZmFjZSBJUGVyVVJJRW5kcG9pbnQgeyBbeDogc3RyaW5nXTogUHJvbWlzZTxFbmRQb2ludD4gfVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3Zlcnkge1xuICBwcml2YXRlIHN0YXRpYyBfY2FjaGU6IElQZXJVUklFbmRwb2ludCA9IHt9O1xuXG4gIHN0YXRpYyBhc3luYyBwcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSgpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEVuZFBvaW50PihyZXNvbHZlRW5kUG9pbnRQcm9taXNlID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVyaSA9IG5ldyBnbG9iYWxTY29wZS5VUkwoU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIERpc2NvdmVyeS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaSlcbiAgICAgICAgICAudGhlbihyZXNvbHZlRW5kUG9pbnRQcm9taXNlKVxuICAgICAgICAgIC50aGVuKCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nKHVyaTogVVJMKTogUHJvbWlzZTxFbmRQb2ludD4ge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICByZXR1cm4gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cblxuICAgIGNvbnN0IGRpc2NvdmVyeVNlcnZpY2UgPSBuZXcgRGlzY292ZXJ5U2VydmljZSh1cmkpO1xuICAgIGNvbnN0IGNhY2hlZFZhbHVlID0gRGlzY292ZXJ5Ll9jYWNoZVt1cmxdID0gZGlzY292ZXJ5U2VydmljZS5kaXNjb3ZlckNsb3Nlc3RFbmRQb2ludCgpO1xuICAgIGNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkuX2NhY2hlW3VybF0udGhlbigoKSA9PiB7XG4gICAgICBjb25zdCBpZ25vcmVkID0gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmIChEaXNjb3ZlcnkuX2NhY2hlW3VybF0gPT09IGNhY2hlZFZhbHVlKSB7XG4gICAgICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICAgICAgfVxuICAgICAgfSwgZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCk7XG4gICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgZGVsZXRlIERpc2NvdmVyeS5fY2FjaGVbdXJsXTtcbiAgICB9KTtcblxuICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgfVxuXG4gIHN0YXRpYyBjbGVhckNhY2hlZENsb3Nlc3RFbmRwb2ludCh1cmk6IFVSTCk6IHZvaWQge1xuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuXG4gICAgaWYgKHVybCBpbiBEaXNjb3ZlcnkuX2NhY2hlKSB7XG4gICAgICBkZWxldGUgRGlzY292ZXJ5Ll9jYWNoZVt1cmxdO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59XG5cbmNvbnN0IGlnbm9yZWQgPSBEaXNjb3ZlcnkucHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkoKTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi8uLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQge0lMb2dnZXJ9IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJJbnRlcmZhY2UnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NTZXJ2aWNlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1NlcnZpY2UnO1xuaW1wb3J0IE1ldHJpY3NGYWN0b3J5IGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc0ZhY3RvcnknO1xuaW1wb3J0IE1ldHJpY3NUeXBlIGZyb20gJy4uLy4uL21ldHJpY3MvTWV0cmljc1R5cGUnO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuL0Rpc2NvdmVyeVVyaSc7XG5pbXBvcnQgRW5kUG9pbnQgZnJvbSAnLi9FbmRQb2ludCc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5cbmNvbnN0IGRlZmF1bHRUaW1lb3V0ID0gMjAwMDA7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc2NvdmVyeVNlcnZpY2Uge1xuICBwcml2YXRlIF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRGlzY292ZXJ5Jyk7XG4gIHByaXZhdGUgX21ldHJpY3NTZXJ2aWNlOiBNZXRyaWNzU2VydmljZTtcbiAgcHJpdmF0ZSBfdXJpOiBVUkw7XG5cbiAgY29uc3RydWN0b3IodXJpOiBVUkwpIHtcbiAgICBpZiAoIXVyaSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdXJpJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZSh1cmkudG9TdHJpbmcoKSk7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJOZWFyYnlFbmRQb2ludHModXJpOiBVUkwsIHRpbWVvdXQ6IG51bWJlcik6IFByb21pc2U8RW5kUG9pbnRbXT4ge1xuICAgIGlmICghdGltZW91dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnkgcmVxdWlyZXMgdGltZW91dCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHVyaS50b1N0cmluZygpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgICAgfSksXG4gICAgICBuZXcgUHJvbWlzZTxSZXNwb25zZT4oKF8sIHJlamVjdCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaXNjb3ZlcnkgdGltZWQgb3V0IFske3VybH1dYCkpLCB0aW1lb3V0KSlcbiAgICBdKTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRGlzY292ZXJ5IGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIGlmIChyZXNwb25zZS5ib2R5ID09PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYERpc2NvdmVyeSBmYWlsZWQgd2l0aCBubyBkYXRhIFske3VybH1dYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNTdHJpbmcgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXNTdHJpbmcuc3BsaXQoJywnKTtcblxuICAgIHJldHVybiBlbmRQb2ludHMubWFwKGVuZFBvaW50ID0+IG5ldyBFbmRQb2ludChlbmRQb2ludCwgdGltZW91dCkpO1xuICB9XG5cbiAgYXN5bmMgZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQodGltZW91dDogbnVtYmVyID0gZGVmYXVsdFRpbWVvdXQpOiBQcm9taXNlPEVuZFBvaW50PiB7XG4gICAgY29uc3QgdXJsID0gRGlzY292ZXJ5VXJpLmJ1aWxkRGlzY292ZXJ5VXJsKHRoaXMuX3VyaSk7XG4gICAgY29uc3QgZW5kUG9pbnRzID0gYXdhaXQgdGhpcy5kaXNjb3Zlck5lYXJieUVuZFBvaW50cyhuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCksIHRpbWVvdXQpO1xuICAgIGxldCBmYWlsZWRSZXF1ZXN0cyA9IDA7XG4gICAgY29uc3QgcHJvcGFnYXRlRmFpbHVyZUlmQWxsUmVxdWVzdHNGYWlsZWQgPSAoKTogUHJvbWlzZTx2b2lkPiA9PiBuZXcgUHJvbWlzZSgoXywgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoZmFpbGVkUmVxdWVzdHMgPj0gZW5kUG9pbnRzLmxlbmd0aCkge1xuICAgICAgICByZWplY3QoYERpc2NvdmVyeSBvZiBbJHtlbmRQb2ludHMubGVuZ3RofV0gZW5kcG9pbnRzIGZyb20gWyR7dXJsfV0gZmFpbGVkLCBwcmV2ZW50aW5nIGl0IGZyb20gY29tcGxldGluZ2ApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGVuZFBvaW50ID0gYXdhaXQgUHJvbWlzZS5yYWNlKGVuZFBvaW50cy5tYXAoZW5kUG9pbnQgPT4gZW5kUG9pbnRcbiAgICAgIC5waW5nKClcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ0ZhaWxlZCB0byBwaW5nIGVuZCBwb2ludCBbJXNdJywgZW5kUG9pbnQsIGUpO1xuXG4gICAgICAgIGZhaWxlZFJlcXVlc3RzKys7XG5cbiAgICAgICAgcmV0dXJuIHByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkKCk7XG4gICAgICB9KVxuICAgICAgLnRoZW4odGltZSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0Rpc2NvdmVyZWQgZW5kIHBvaW50IFslc10gd2l0aCB0aW1lIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpLCB0aW1lKTtcbiAgICAgICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICAgICAgbWV0cmljVHlwZTogTWV0cmljc1R5cGUuUm91bmRUcmlwVGltZSxcbiAgICAgICAgICBydW50aW1lOiAobm93IC0gU0RLLnBhZ2VMb2FkVGltZSkgLyAxMDAwLFxuICAgICAgICAgIHZhbHVlOiB7dWludDY0OiB0aW1lIHx8IDB9LFxuICAgICAgICAgIHJlc291cmNlOiBlbmRQb2ludC50b1N0cmluZygpLFxuICAgICAgICAgIGtpbmQ6ICdwaW5nJ1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZW5kUG9pbnQ7XG4gICAgICB9KSkpO1xuXG4gICAgcmV0dXJuIGVuZFBvaW50O1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7ZGVmYXVsdERpc2NvdmVyeVVyaX0gZnJvbSAnLi4vZGVmYXVsdHMnO1xuaW1wb3J0IFBjYXN0VXJpIGZyb20gJy4vUGNhc3RVcmknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEaXNjb3ZlcnlVcmkge1xuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBfZGlzY292ZXJ5VXJpOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KGRlZmF1bHREaXNjb3ZlcnlVcmkpO1xuXG4gIHN0YXRpYyBnZXQgdXJpKCk6IFN1YmplY3Q8c3RyaW5nPiB7XG4gICAgcmV0dXJuIERpc2NvdmVyeVVyaS5fZGlzY292ZXJ5VXJpO1xuICB9XG5cbiAgc3RhdGljIGJ1aWxkRGlzY292ZXJ5VXJsKHVyaTogVVJMKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVyaS50b1N0cmluZygpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmwuc2VhcmNoUGFyYW1zLnNldCgndmVyc2lvbicsIHNka1ZlcnNpb24pO1xuICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdpbnRlbnRpb25zJywgaW50ZW50aW9ucyk7XG4gICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ18nLCBgJHtEYXRlLm5vdygpfWApO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJy8nKSB7XG4gICAgICB1cmwucGF0aG5hbWUgPSBQY2FzdFVyaS5kaXNjb3ZlcnlQYXRoO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEaXNjb3ZlcnlVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uLy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5pbXBvcnQge0VuY29kZWRFZGdlVG9rZW59IGZyb20gJy4uLy4uL2VkZ2VBdXRoL0VuY29kZWRFZGdlVG9rZW4nO1xuXG5pbXBvcnQge1xuICBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlLFxuICBJU3Vic2NyaWJlV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Rcbn0gZnJvbSAnLi4vYXBpL1N1YnNjcmliZSc7XG5pbXBvcnQge0lTZXRSZW1vdGVEZXNjcmlwdGlvblJlcXVlc3QsIElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlfSBmcm9tICcuLi9hcGkvU2V0UmVtb3RlRGVzY3JpcHRpb24nO1xuaW1wb3J0IHtJRGVzdHJveVN0cmVhbVJlcXVlc3QsIElEZXN0cm95U3RyZWFtUmVzcG9uc2V9IGZyb20gJy4uL2FwaS9EZXN0cm95U3RyZWFtJztcbmltcG9ydCB7SUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0LCBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlfSBmcm9tICcuLi9hcGkvQWRkSWNlQ2FuZGlkYXRlcyc7XG5pbXBvcnQgVmVyc2lvbk1hbmFnZXIgZnJvbSAnLi4vdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5pbXBvcnQgUGFyYW1ldGVycyBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9QYXJhbWV0ZXJzJztcbmltcG9ydCB7Qml0cmF0ZU1vZGUsIEJpdHJhdGVTdGF0ZSwgSVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlfSBmcm9tICcuLi9hcGkvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUnO1xuaW1wb3J0IEJpdHJhdGVNb2RlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVNb2RlTWFwcGluZyc7XG5pbXBvcnQgUGNhc3RVcmkgZnJvbSAnLi9QY2FzdFVyaSc7XG5pbXBvcnQgQml0cmF0ZVN0YXRlTWFwcGluZyBmcm9tICcuL0JpdHJhdGVTdGF0ZU1hcHBpbmcnO1xuaW1wb3J0IHtCaXRzUGVyU2Vjb25kLCBNaWxsaXNlY29uZH0gZnJvbSAnLi4vLi4vdW5pdHMvVW5pdHMnO1xuaW1wb3J0IHtcbiAgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2UsXG4gIElQdWJsaXNoV2l0aE9mZmVyUmVxdWVzdCxcbiAgSVB1Ymxpc2hXaXRob3V0T2ZmZXJSZXF1ZXN0LFxuICBQdWJsaXNoU3RhdHVzXG59IGZyb20gJy4uL2FwaS9QdWJsaXNoJztcblxuY29uc3QgYXBpVmVyc2lvbiA9IDc7XG5cbmNsYXNzIEZldGNoVGltZW91dEVycm9yIGV4dGVuZHMgRXJyb3Ige31cblxuZXhwb3J0IHR5cGUgU3Vic2NyaWJlU3RhdHVzID0gJ29rJyB8ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgUmVtb3ZlVGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMgPSAnb2snIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdyYXRlLWxpbWl0ZWQnIHwgJ2NhcGFjaXR5JyB8ICd0aW1lb3V0JyB8ICdmYWlsZWQnO1xuZXhwb3J0IHR5cGUgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyA9ICdvaycgfCAnbm90LWZvdW5kJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZhaWxlZCc7XG5leHBvcnQgdHlwZSBEZXN0cm95U3RyZWFtU3RhdHVzID0gJ29rJyB8ICdub3QtZm91bmQnIHwgJ3VuYXV0aG9yaXplZCcgfCAncmF0ZS1saW1pdGVkJyB8ICdjYXBhY2l0eScgfCAndGltZW91dCcgfCAnZmFpbGVkJztcbmV4cG9ydCBpbnRlcmZhY2UgSVN0cmVhbSB7XG4gIHN0cmVhbUlkOiBzdHJpbmc7XG4gIHNoYXJlZFNlY3JldDogc3RyaW5nO1xuICB0ZW5hbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnOiBNaWxsaXNlY29uZDtcbiAgcnRjQ29uZmlndXJhdGlvbj86IFJUQ0NvbmZpZ3VyYXRpb247XG4gIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/OiB7XG4gICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xuICB9O1xuICBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjsgLy8gSW50ZW50aW9uYWxseSBvcGVuOiB0aGUgc2VydmVyIG1heSBpbmNsdWRlIHByb3BlcnRpZXMgKGUuZy4gZHJtQ29uZmlndXJhdGlvbikgbm90IGRlY2xhcmVkIGluIHRoaXMgaW50ZXJmYWNlIHRoYXQgY2FsbGVycyByZWx5IG9uXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQge1xuICBzdGF0dXM6ICduby1zdHJlYW0nIHwgJ25vdC1mb3VuZCcgfCAndW5hdXRob3JpemVkJyB8ICdnZW8tcmVzdHJpY3RlZCcgfCAnZ2VvLWJsb2NrZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ3BvcnQtaW4tcmFuZ2Utbm90LWZvdW5kJyB8ICdmYWlsZWQnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2sge1xuICAocmVxdWVzdDogSVN1YnNjcmliZVdpdGhPZmZlclJlcXVlc3QgfCBJU3Vic2NyaWJlV2l0aG91dE9mZmVyUmVxdWVzdCk6IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2sge1xuICAocmVzcG9uc2U6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2VJbml0IHwgSVN1YnNjcmliZUZhaWx1cmVSZXNwb25zZUluaXQpOiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgdHlwZSBTdWJzY3JpYmVPcHRpb25zID0ge1xuICBvblN1YnNjcmliZVJlcXVlc3RDYWxsYmFjaz86IElTdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2s7XG4gIG9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz86IElTdWJzY3JpYmVSZXNwb25zZUNhbGxiYWNrO1xufTtcblxuZXhwb3J0IHR5cGUgSVB1Ymxpc2hTdWNjZXNzUmVzcG9uc2VJbml0ID0ge1xuICBzdGF0dXM6ICdvayc7XG4gIHN0cmVhbTogSVN0cmVhbTtcbiAgbGFnPzogTWlsbGlzZWNvbmQ7XG4gIHJ0Y0NvbmZpZ3VyYXRpb24/OiBSVENDb25maWd1cmF0aW9uO1xuICBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlPzoge1xuICAgIHNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdDtcbiAgfTtcbiAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT86IHtcbiAgICBzZXNzaW9uRGVzY3JpcHRpb246IFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkluaXQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQgPSB7XG4gIHN0YXR1czogJ25vdC1mb3VuZCcgfCAnZ2VvLXJlc3RyaWN0ZWQnIHwgJ2dlby1ibG9ja2VkJyB8ICd1bmF1dGhvcml6ZWQnIHwgJ3JhdGUtbGltaXRlZCcgfCAnY2FwYWNpdHknIHwgJ3RpbWVvdXQnIHwgJ2ZvcmJpZGRlbi10YWcnIHwgJ21pc3NpbmctY2hhbm5lbC1vci1yb29tLWlkJyB8ICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCcgfCAnZmFpbGVkJztcbn07XG5cbmludGVyZmFjZSBJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQge1xuICBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzO1xuICBzZXNzaW9uRGVzY3JpcHRpb24/OiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0O1xufVxuXG5pbnRlcmZhY2UgSUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZUluaXQge1xuICBzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXM7XG4gIG9wdGlvbnM/OiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIElTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXM7XG59XG5cbmludGVyZmFjZSBJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdCB7XG4gIHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kUG9pbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignRW5kUG9pbnQnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdXJpOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQ7XG4gIHByaXZhdGUgX3JvdW5kVHJpcFRpbWU6IG51bWJlciA9IDA7XG5cbiAgY29uc3RydWN0b3IodXJpOiBzdHJpbmcsIHRpbWVvdXQ6IE1pbGxpc2Vjb25kKSB7XG4gICAgdGhpcy5fdXJpID0gdXJpO1xuICAgIHRoaXMuX3RpbWVvdXREdXJhdGlvbiA9IHRpbWVvdXQ7XG5cbiAgICBpZiAoIXRpbWVvdXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRW5kIHBvaW50IHJlcXVpcmVzIGEgdGltZW91dGApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm91bmRUcmlwVGltZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb3VuZFRyaXBUaW1lO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBFbmRQb2ludFt1cmk9JHt0aGlzLl91cml9XWA7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRQaW5nVXJsKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZldGNoV2l0aFRpbWVvdXQodXJsLCByZXF1ZXN0T3B0aW9ucywgdGhpcy5fdGltZW91dER1cmF0aW9uKVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBpbmcgdGltZWQgb3V0IFske3VybH1dYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBQaW5nIGZhaWxlZCBbJHt1cmx9XSBbJHtyZXNwb25zZS5zdGF0dXN9XWApO1xuICAgIH1cblxuICAgIHRoaXMuX3JvdW5kVHJpcFRpbWUgPSBEYXRlLm5vdygpIC0gc3RhcnQ7XG5cbiAgICByZXR1cm4gdGhpcy5fcm91bmRUcmlwVGltZTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzdWJzY3JpYmUodG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0IHwgbnVsbCwgZmFpbHVyZUNvdW50OiBudW1iZXIsIG9wdGlvbnM6IFN1YnNjcmliZU9wdGlvbnMgPSB7fSk6IFByb21pc2U8SVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHRlbmFuY3kgPSBFZGdlQXV0aFBhcnNlci5wYXJzZVRva2VuKHRva2VuKS50ZW5hbmN5O1xuXG4gICAgaWYgKCF0ZW5hbmN5KSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBwYXJzZSB0b2tlbiBbJXNdJywgdG9rZW4pO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogJ3VuYXV0aG9yaXplZCd9O1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3RlbmFuY3ksICdzdHJlYW0nLCAnc3Vic2NyaWJlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBjbGllbnRWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBsZXQgcmVxdWVzdEJvZHk6IElTdWJzY3JpYmVXaXRoT2ZmZXJSZXF1ZXN0IHwgSVN1YnNjcmliZVdpdGhvdXRPZmZlclJlcXVlc3Q7XG5cbiAgICBpZiAoZmFpbHVyZUNvdW50ID09PSAwICYmIGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICByZXF1ZXN0Qm9keSA9IHtcbiAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgY2xpZW50VmVyc2lvbixcbiAgICAgICAgYmVhcmVyVG9rZW46IHRva2VuLFxuICAgICAgICBmYWlsdXJlQ291bnQsXG4gICAgICAgIGh0dHBSb3VuZFRyaXBUaW1lOiB0aGlzLl9yb3VuZFRyaXBUaW1lLFxuICAgICAgICBzZXRSZW1vdGVEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgICAgc2Vzc2lvbkRlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgICB0eXBlOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi50eXBlLFxuICAgICAgICAgICAgc2RwOiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbi5zZHBcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uOiB7YXBpVmVyc2lvbn1cbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RCb2R5ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIGNyZWF0ZU9mZmVyRGVzY3JpcHRpb246IHthcGlWZXJzaW9ufVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVxdWVzdENhbGxiYWNrPy4ocmVxdWVzdEJvZHkpO1xuXG4gICAgZm9ybURhdGEuYXBwZW5kKCdqc29uQm9keScsIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RCb2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnc3Vic2NyaWJlJyk7XG4gICAgY29uc3QganNvblJlc3BvbnNlQm9keSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogU3Vic2NyaWJlU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcblxuICAgIGlmIChzdGF0dXMgIT09ICdvaycpIHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBJU3Vic2NyaWJlRmFpbHVyZVJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IElTdWJzY3JpYmVGYWlsdXJlUmVzcG9uc2VJbml0ID0ge3N0YXR1czogJ2ZhaWxlZCd9O1xuXG4gICAgICBhd2FpdCBvcHRpb25zLm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjaz8uKHJlc3BvbnNlKTtcblxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZSA9IHRoaXMubm9ybWFsaXplU3Vic2NyaWJlUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBzdWJzY3JpYmUgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgc3Vic2NyaWJlUmVzcG9uc2UsIGZpbmlzaGVkIC0gc3RhcnQpO1xuXG4gICAgYXdhaXQgb3B0aW9ucy5vblN1YnNjcmliZVJlc3BvbnNlQ2FsbGJhY2s/LihzdWJzY3JpYmVSZXNwb25zZSk7XG5cbiAgICByZXR1cm4gc3Vic2NyaWJlUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcHVibGlzaChuYW1lOiBzdHJpbmcsIHRva2VuOiBFbmNvZGVkRWRnZVRva2VuLCBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbjogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uSW5pdCB8IG51bGwsIGZhaWx1cmVDb3VudDogbnVtYmVyKTogUHJvbWlzZTxJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgfCBJUHVibGlzaEZhaWx1cmVSZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB0ZW5hbmN5ID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudGVuYW5jeTtcblxuICAgIGlmICghdGVuYW5jeSkge1xuICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gcGFyc2UgdG9rZW4gWyVzXScsIHRva2VuKTtcblxuICAgICAgcmV0dXJuIHtzdGF0dXM6ICd1bmF1dGhvcml6ZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFt0ZW5hbmN5LCAnc3RyZWFtJywgJ3B1Ymxpc2gnXSkudG9TdHJpbmcoKTtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5Gb3JtRGF0YSgpO1xuICAgIGNvbnN0IGNsaWVudFZlcnNpb24gPSBWZXJzaW9uTWFuYWdlci5zZGtWZXJzaW9uO1xuXG4gICAgaWYgKGZhaWx1cmVDb3VudCA9PT0gMCAmJiBsb2NhbFNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgY29uc3QgYm9keVdpdGhPZmZlcjogSVB1Ymxpc2hXaXRoT2ZmZXJSZXF1ZXN0ID0ge1xuICAgICAgICBhcGlWZXJzaW9uLFxuICAgICAgICBjbGllbnRWZXJzaW9uLFxuICAgICAgICBiZWFyZXJUb2tlbjogdG9rZW4sXG4gICAgICAgIGZhaWx1cmVDb3VudCxcbiAgICAgICAgaHR0cFJvdW5kVHJpcFRpbWU6IHRoaXMuX3JvdW5kVHJpcFRpbWUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgYXBpVmVyc2lvbixcbiAgICAgICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgICAgIHR5cGU6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgICAgICBzZHA6IGxvY2FsU2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb246IHtcbiAgICAgICAgICBzdHJlYW1JZDogJycsXG4gICAgICAgICAgYXBpVmVyc2lvblxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keVdpdGhPZmZlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBib2R5V2l0aG91dE9mZmVyOiBJUHVibGlzaFdpdGhvdXRPZmZlclJlcXVlc3QgPSB7XG4gICAgICAgIGFwaVZlcnNpb24sXG4gICAgICAgIGNsaWVudFZlcnNpb24sXG4gICAgICAgIGJlYXJlclRva2VuOiB0b2tlbixcbiAgICAgICAgZmFpbHVyZUNvdW50LFxuICAgICAgICBodHRwUm91bmRUcmlwVGltZTogdGhpcy5fcm91bmRUcmlwVGltZSxcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvbjoge1xuICAgICAgICAgIHN0cmVhbUlkOiAnJyxcbiAgICAgICAgICBhcGlWZXJzaW9uXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5V2l0aG91dE9mZmVyKSk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3B1Ymxpc2gnKTtcbiAgICBjb25zdCBqc29uUmVzcG9uc2VCb2R5ID0gYXdhaXQgdGhpcy5wYXJzZUpzb25Cb2R5PElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlPihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5oYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQoanNvblJlc3BvbnNlQm9keT8uc3RyZWFtUmVzcG9uc2VDb250ZXh0KTtcblxuICAgIGNvbnN0IHN0YXR1czogUHVibGlzaFN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvUHVibGlzaFN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGlmICghanNvblJlc3BvbnNlQm9keSkge1xuICAgICAgcmV0dXJuIHtzdGF0dXM6ICdmYWlsZWQnfTtcbiAgICB9XG5cbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlID0gdGhpcy5ub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UodGVuYW5jeSwganNvblJlc3BvbnNlQm9keSk7XG5cbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoJ0dvdCBwdWJsaXNoIHJlc3BvbnNlIFslal0gaW4gWyVzXSBtcycsIHB1Ymxpc2hSZXNwb25zZSwgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4gcHVibGlzaFJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldFJlbW90ZURlc2NyaXB0aW9uKHN0cmVhbTogSVN0cmVhbSwgc2Vzc2lvbkRlc2NyaXB0aW9uOiBSVENTZXNzaW9uRGVzY3JpcHRpb25Jbml0KTogUHJvbWlzZTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZUluaXQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJ1aWxkVXJsKFtzdHJlYW0udGVuYW5jeSwgJ3N0cmVhbScsIHN0cmVhbS5zdHJlYW1JZCwgJ2Rlc2NyaXB0aW9uJywgJ3JlbW90ZSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSVNldFJlbW90ZURlc2NyaXB0aW9uUmVxdWVzdCA9IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBzaGFyZWRTZWNyZXQ6IHN0cmVhbS5zaGFyZWRTZWNyZXQsXG4gICAgICBzZXNzaW9uRGVzY3JpcHRpb246IHtcbiAgICAgICAgdHlwZTogc2Vzc2lvbkRlc2NyaXB0aW9uLnR5cGUsXG4gICAgICAgIHNkcDogc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcFxuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCByZW1vdGUgZGVzY3JpcHRpb24nKTtcbiAgICBjb25zdCBzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9TZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0gYXdhaXQgdGhpcy5jb252ZXJ0SHR0cFJlc3BvbnNlVG9TZXRSZW1vdGVEZXNjcmlwdGlvbihodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCdHb3Qgc2V0IHJlbW90ZSBkZXNjcmlwdGlvbiByZXNwb25zZSBbJWpdIGluIFslc10gbXMnLCBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBzZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGxpbWl0Qml0cmF0ZShcbiAgICBzdHJlYW06IElTdHJlYW0sXG4gICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzOiBudW1iZXIsXG4gICAgYml0cmF0ZUluQml0c1BlclNlY29uZDogQml0c1BlclNlY29uZCxcbiAgICBiaXRyYXRlU3RhdGU6IEJpdHJhdGVTdGF0ZSxcbiAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGUsXG4gICk6IFByb21pc2U8SVNldFRlbXBvcmFyeU1heGltYWxCaXRyYXRlUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdiaXRyYXRlJ10pLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcbiAgICBjb25zdCBib2R5OiBJU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGUgPSB7XG4gICAgICBhcGlWZXJzaW9uLFxuICAgICAgc2hhcmVkU2VjcmV0OiBzdHJlYW0uc2hhcmVkU2VjcmV0LFxuICAgICAgZWxhcHNlZEluTWlsbGlzZWNvbmRzLFxuICAgICAgYml0cmF0ZUluQml0c1BlclNlY29uZCxcbiAgICAgIGJpdHJhdGVTdGF0ZTogQml0cmF0ZVN0YXRlTWFwcGluZy5jb252ZXJ0Qml0cmF0ZVN0YXRlVG9CaXRyYXRlU3RhdGVUeXBlKGJpdHJhdGVTdGF0ZSksXG4gICAgICBiaXRyYXRlTW9kZTogQml0cmF0ZU1vZGVNYXBwaW5nLmNvbnZlcnRCaXRyYXRlTW9kZVRvQml0cmF0ZU1vZGVUeXBlKGJpdHJhdGVNb2RlKVxuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGZldGNoUmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0ge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBmb3JtRGF0YVxuICAgIH07XG4gICAgY29uc3QgaHR0cFJlc3BvbnNlID0gYXdhaXQgdGhpcy5leGVjdXRlRmV0Y2hSZXF1ZXN0KHVybCwgZmV0Y2hSZXF1ZXN0T3B0aW9ucywgJ3NldCBsaW1pdCBiaXRyYXRlJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBTZXRUZW1wb3JhcnlNYXhpbWFsQml0cmF0ZVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMoaHR0cFJlc3BvbnNlKTtcbiAgICBjb25zdCBmaW5pc2hlZCA9IERhdGUubm93KCk7XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnR290IHNldCBsaW1pdCBiaXRyYXRlIHJlc3BvbnNlIFslc10gaW4gWyVzXSBtcycsIHN0YXR1cywgZmluaXNoZWQgLSBzdGFydCk7XG5cbiAgICByZXR1cm4ge3N0YXR1c307XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSWNlQ2FuZGlkYXRlcyhzdHJlYW06IElTdHJlYW0sIGNhbmRpZGF0ZXM6IFJUQ0ljZUNhbmRpZGF0ZVtdLCBkaXNjb3ZlcnlDb21wbGV0ZWQ6IGJvb2xlYW4sIG9wdGlvbnM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPElBZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgdXJsID0gdGhpcy5idWlsZFVybChbc3RyZWFtLnRlbmFuY3ksICdzdHJlYW0nLCBzdHJlYW0uc3RyZWFtSWQsICdpY2UnLCAnY2FuZGlkYXRlcyddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSUFkZEljZUNhbmRpZGF0ZXNSZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIGNhbmRpZGF0ZXMsXG4gICAgICBkaXNjb3ZlcnlDb21wbGV0ZWQsXG4gICAgICBvcHRpb25zXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7XG4gICAgY29uc3QgZmV0Y2hSZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGZvcm1EYXRhXG4gICAgfTtcbiAgICBjb25zdCBodHRwUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmV4ZWN1dGVGZXRjaFJlcXVlc3QodXJsLCBmZXRjaFJlcXVlc3RPcHRpb25zLCAnYWRkIGljZSBjYW5kaWRhdGVzJyk7XG4gICAgY29uc3Qgc3RhdHVzOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzID0gdGhpcy5tYXBIdHRwU3RhdHVzVG9BZGRJY2VDYW5kaWRhdGVzU3RhdHVzKGh0dHBSZXNwb25zZSk7XG5cbiAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICByZXR1cm4ge3N0YXR1c307XG4gICAgfVxuXG4gICAgY29uc3QgZmluaXNoZWQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSA9IGF3YWl0IHRoaXMuY29udmVydEh0dHBSZXNwb25zZVRvQWRkSWNlQ2FuZGlkYXRlcyhodHRwUmVzcG9uc2UpO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0dvdCBhZGQgSUNFIGNhbmRpZGF0ZXMgcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbShzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcbiAgICBjb25zdCBmZXRjaFJlcXVlc3RPcHRpb25zOiBSZXF1ZXN0SW5pdCA9IHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGEsXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJ1xuICAgIH07XG5cbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb25Cb2R5JywgSlNPTi5zdHJpbmdpZnkoYm9keSkpO1xuXG4gICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IGh0dHBSZXNwb25zZSA9IGF3YWl0IHRoaXMuZXhlY3V0ZUZldGNoUmVxdWVzdCh1cmwsIGZldGNoUmVxdWVzdE9wdGlvbnMsICdkZXN0cm95IHN0cmVhbScpO1xuICAgIGNvbnN0IHN0YXR1czogRGVzdHJveVN0cmVhbVN0YXR1cyA9IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhodHRwUmVzcG9uc2UpO1xuXG4gICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgcmV0dXJuIHtzdGF0dXN9O1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmlzaGVkID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBkZXN0cm95U3RyZWFtUmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0oaHR0cFJlc3BvbnNlKTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdHb3QgZGVzdHJveSBzdHJlYW0gcmVzcG9uc2UgWyVqXSBpbiBbJXNdIG1zJywgZGVzdHJveVN0cmVhbVJlc3BvbnNlLCBmaW5pc2hlZCAtIHN0YXJ0KTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtUmVzcG9uc2U7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVzdHJveVN0cmVhbU9uVW5tb3VudChzdHJlYW06IElTdHJlYW0sIHJlYXNvbjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VuZEJlYWNvbiA9IEdsb2JhbFNjb3BlLnZhbHVlLnNlbmRCZWFjb247XG5cbiAgICBpZiAoIXNlbmRCZWFjb24pIHtcbiAgICAgIHRoaXMuZGVzdHJveVN0cmVhbShzdHJlYW0sIHJlYXNvbikuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0gb24gdW5tb3VudCcsIGVycik7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHVybCA9IHRoaXMuYnVpbGRVcmwoW3N0cmVhbS50ZW5hbmN5LCAnc3RyZWFtJywgc3RyZWFtLnN0cmVhbUlkLCAnZGVzdHJveSddKS50b1N0cmluZygpO1xuICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLkZvcm1EYXRhKCk7XG4gICAgY29uc3QgYm9keTogSURlc3Ryb3lTdHJlYW1SZXF1ZXN0ID0ge1xuICAgICAgYXBpVmVyc2lvbixcbiAgICAgIHNoYXJlZFNlY3JldDogc3RyZWFtLnNoYXJlZFNlY3JldCxcbiAgICAgIHJlYXNvbixcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeShib2R5KSk7XG5cbiAgICBzZW5kQmVhY29uKHVybCwgZm9ybURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmZXRjaFdpdGhUaW1lb3V0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIHRpbWVvdXREdXJhdGlvbjogTWlsbGlzZWNvbmQpOiBQcm9taXNlPFJlc3BvbnNlPiB7XG4gICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5BYm9ydENvbnRyb2xsZXIoKTtcbiAgICBsZXQgdGltZW91dDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmZldGNoKHVybCwge1xuICAgICAgICAgIC4uLnJlcXVlc3RPcHRpb25zLFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyBQcm9taXNlPFJlc3BvbnNlPigoXywgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgdGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29udHJvbGxlci5hYm9ydCgpO1xuXG4gICAgICAgICAgICByZWplY3QobmV3IEZldGNoVGltZW91dEVycm9yKGBUaW1lZCBvdXQgWyR7dXJsfV1gKSk7XG4gICAgICAgICAgfSwgdGltZW91dER1cmF0aW9uKTtcbiAgICAgICAgfSlcbiAgICAgIF0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAodGltZW91dCkge1xuICAgICAgICBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQodGltZW91dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBleGVjdXRlRmV0Y2hSZXF1ZXN0KHVybDogc3RyaW5nLCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQsIG9wZXJhdGlvbjogc3RyaW5nKTogUHJvbWlzZTxSZXNwb25zZT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5mZXRjaFdpdGhUaW1lb3V0KHVybCwgcmVxdWVzdE9wdGlvbnMsIHRoaXMuX3RpbWVvdXREdXJhdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoYEZhaWxlZCB0byAke29wZXJhdGlvbn0gWyR7cmVxdWVzdE9wdGlvbnMubWV0aG9kIHx8ICdHRVQnfV0gWyR7dXJsfV1gLCBlcnIgYXMgRXJyb3IpO1xuXG4gICAgICByZXR1cm4ge3N0YXR1czogZXJyIGluc3RhbmNlb2YgRmV0Y2hUaW1lb3V0RXJyb3IgPyA0MDggOiA1MDB9IGFzIFJlc3BvbnNlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRVcmwocGF0aDogc3RyaW5nW10pOiBVUkwge1xuICAgIHJldHVybiBQY2FzdFVyaS5idWlsZFJvdXRlVXJsKHRoaXMuX3VyaSwgcGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkUGluZ1VybCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHVyaSA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodGhpcy5fdXJpKTtcbiAgICBjb25zdCBzZGtWZXJzaW9uID0gVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbjtcbiAgICBjb25zdCBpbnRlbnRpb25zID0gUGFyYW1ldGVycy5kaXNjb3ZlcnlQYXJhbWV0ZXJzLmludGVudGlvbnM7XG5cbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgndHlwZScsICdodHRwJyk7XG4gICAgdXJpLnNlYXJjaFBhcmFtcy5zZXQoJ3ZlcnNpb24nLCBzZGtWZXJzaW9uKTtcbiAgICB1cmkuc2VhcmNoUGFyYW1zLnNldCgnaW50ZW50aW9ucycsIGludGVudGlvbnMpO1xuICAgIHVyaS5zZWFyY2hQYXJhbXMuc2V0KCdfJywgYCR7RGF0ZS5ub3coKX1gKTtcblxuICAgIHJldHVybiB1cmkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcGFyc2VKc29uQm9keTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEV4cGVjdGVkIGZvciByZXNwb25zZXMgd2l0aG91dCBhIEpTT04gYm9keSAodGltZW91dCwgZW1wdHkgZXJyb3IgcmVzcG9uc2VzKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dChjb250ZXh0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnc3RyZWFtIHJlc3BvbnNlIGNvbnRleHQgWyVqXScsIGNvbnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9QdWJsaXNoU3RhdHVzKHJlc3BvbnNlOiBSZXNwb25zZSk6IFB1Ymxpc2hTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDI6XG4gICAgICAgIHJldHVybiAnZ2VvLXJlc3RyaWN0ZWQnO1xuICAgICAgY2FzZSA0MDM6XG4gICAgICAgIHJldHVybiAnZ2VvLWJsb2NrZWQnO1xuICAgICAgY2FzZSA0MDY6XG4gICAgICAgIHJldHVybiAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDQwOTpcbiAgICAgICAgcmV0dXJuICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc7XG4gICAgICBjYXNlIDQxNTpcbiAgICAgICAgcmV0dXJuICdmb3JiaWRkZW4tdGFnJztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtYXBIdHRwU3RhdHVzVG9TdWJzY3JpYmVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU3Vic2NyaWJlU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDAyOlxuICAgICAgICByZXR1cm4gJ2dlby1yZXN0cmljdGVkJztcbiAgICAgIGNhc2UgNDAzOlxuICAgICAgICByZXR1cm4gJ2dlby1ibG9ja2VkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA0MDk6XG4gICAgICAgIHJldHVybiAncG9ydC1pbi1yYW5nZS1ub3QtZm91bmQnO1xuICAgICAgY2FzZSA0MTU6XG4gICAgICAgIHJldHVybiAnZm9yYmlkZGVuLXRhZyc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMge1xuICAgIHN3aXRjaCAocmVzcG9uc2Uuc3RhdHVzKSB7XG4gICAgICBjYXNlIDIwMDpcbiAgICAgICAgcmV0dXJuICdvayc7XG4gICAgICBjYXNlIDQwMTpcbiAgICAgICAgcmV0dXJuICd1bmF1dGhvcml6ZWQnO1xuICAgICAgY2FzZSA0MDg6XG4gICAgICAgIHJldHVybiAndGltZW91dCc7XG4gICAgICBjYXNlIDUwMzpcbiAgICAgICAgcmV0dXJuICdjYXBhY2l0eSc7XG4gICAgICBjYXNlIDUwNDpcbiAgICAgICAgcmV0dXJuICdyYXRlLWxpbWl0ZWQnO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuICdmYWlsZWQnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZTogUmVzcG9uc2UpOiBBZGRJY2VDYW5kaWRhdGVzU3RhdHVzIHtcbiAgICBzd2l0Y2ggKHJlc3BvbnNlLnN0YXR1cykge1xuICAgICAgY2FzZSAyMDA6XG4gICAgICAgIHJldHVybiAnb2snO1xuICAgICAgY2FzZSA0MDE6XG4gICAgICAgIHJldHVybiAndW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgNDA4OlxuICAgICAgICByZXR1cm4gJ3RpbWVvdXQnO1xuICAgICAgY2FzZSA1MDM6XG4gICAgICAgIHJldHVybiAnY2FwYWNpdHknO1xuICAgICAgY2FzZSA1MDQ6XG4gICAgICAgIHJldHVybiAncmF0ZS1saW1pdGVkJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnZmFpbGVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEh0dHBTdGF0dXNUb1NldERlc3Ryb3lTdHJlYW1TdGF0dXMocmVzcG9uc2U6IFJlc3BvbnNlKTogRGVzdHJveVN0cmVhbVN0YXR1cyB7XG4gICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcbiAgICAgIGNhc2UgMjAwOlxuICAgICAgICByZXR1cm4gJ29rJztcbiAgICAgIGNhc2UgNDAxOlxuICAgICAgICByZXR1cm4gJ3VuYXV0aG9yaXplZCc7XG4gICAgICBjYXNlIDQwODpcbiAgICAgICAgcmV0dXJuICd0aW1lb3V0JztcbiAgICAgIGNhc2UgNTAzOlxuICAgICAgICByZXR1cm4gJ2NhcGFjaXR5JztcbiAgICAgIGNhc2UgNTA0OlxuICAgICAgICByZXR1cm4gJ3JhdGUtbGltaXRlZCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ2ZhaWxlZCc7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVTdWJzY3JpYmVSZXNwb25zZSh0ZW5hbmN5OiBzdHJpbmcsIGRhdGE6IElTdWJzY3JpYmVTdWNjZXNzUmVzcG9uc2UpOiBJU3Vic2NyaWJlU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gICAgY29uc3Qge1xuICAgICAgc3RhdHVzLFxuICAgICAgc3RyZWFtSWQsXG4gICAgICBzaGFyZWRTZWNyZXQsXG4gICAgICBsYWcsXG4gICAgICBydGNDb25maWd1cmF0aW9uLFxuICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgIGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAvLyBEZXN0cnVjdHVyZWQgdGhlIHRlbGVtZXRyeSBiYWdnYWdlIFwic3RyZWFtUmVzcG9uc2VDb250ZXh0XCIgdG8gZXhjbHVkZSBpdCBmcm9tIG90aGVyUHJvcGVydGllc1xuICAgICAgLy8gaXQgaXMgIGhhbmRsZWQgc2VwYXJhdGVseSBieSBoYW5kbGVTdHJlYW1SZXNwb25zZUNvbnRleHQgYW5kIG11c3QgbmV2ZXIgYmUgZm9yd2FyZGVkIHRvIGNhbGxlcnMuXG4gICAgICBzdHJlYW1SZXNwb25zZUNvbnRleHQ6IGlnbm9yZWRTdHJlYW1SZXNwb25zZUNvbnRleHQsXG4gICAgICAuLi5vdGhlclByb3BlcnRpZXNcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBzdWJzY3JpYmVSZXNwb25zZTogSVN1YnNjcmliZVN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICAuLi5vdGhlclByb3BlcnRpZXMsIC8vIFNwcmVhZCBmaXJzdCBzbyB0aGF0IGl0IGNhbm5vdCBvdmVyd3JpdGUgdGhlIHByb3BlcnRpZXMgbm9ybWFsaXplZCBiZWxvdy5cbiAgICAgIHN0YXR1cyxcbiAgICAgIHN0cmVhbToge1xuICAgICAgICB0ZW5hbmN5LFxuICAgICAgICBzdHJlYW1JZCxcbiAgICAgICAgc2hhcmVkU2VjcmV0XG4gICAgICB9LFxuICAgICAgbGFnXG4gICAgfTtcblxuICAgIGlmIChydGNDb25maWd1cmF0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24ocnRjQ29uZmlndXJhdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2Uuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9ufTtcbiAgICB9XG5cbiAgICBpZiAoY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZT8uc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBzdWJzY3JpYmVSZXNwb25zZS5jcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2U/LnNlc3Npb25EZXNjcmlwdGlvbikge1xuICAgICAgc3Vic2NyaWJlUmVzcG9uc2UuY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgcmV0dXJuIHN1YnNjcmliZVJlc3BvbnNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UodGVuYW5jeTogc3RyaW5nLCBkYXRhOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZSk6IElQdWJsaXNoU3VjY2Vzc1Jlc3BvbnNlSW5pdCB7XG4gICAgY29uc3QgcHVibGlzaFJlc3BvbnNlOiBJUHVibGlzaFN1Y2Nlc3NSZXNwb25zZUluaXQgPSB7XG4gICAgICBzdGF0dXM6IGRhdGEuc3RhdHVzLFxuICAgICAgc3RyZWFtOiB7XG4gICAgICAgIHRlbmFuY3ksXG4gICAgICAgIHN0cmVhbUlkOiBkYXRhLnN0cmVhbUlkLFxuICAgICAgICBzaGFyZWRTZWNyZXQ6IGRhdGEuc2hhcmVkU2VjcmV0XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChkYXRhLnJ0Y0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5ydGNDb25maWd1cmF0aW9uID0gdGhpcy5jb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24oZGF0YS5ydGNDb25maWd1cmF0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlICYmIGRhdGEuc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlID0ge3Nlc3Npb25EZXNjcmlwdGlvbjogZGF0YS5zZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbn07XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKSB7XG4gICAgICBwdWJsaXNoUmVzcG9uc2UuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSA9IHtzZXNzaW9uRGVzY3JpcHRpb246IGRhdGEuY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIGlmIChkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSAmJiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHB1Ymxpc2hSZXNwb25zZS5jcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UgPSB7c2Vzc2lvbkRlc2NyaXB0aW9uOiBkYXRhLmNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb259O1xuICAgIH1cblxuICAgIHJldHVybiBwdWJsaXNoUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGNvbnZlcnRJUnRjQ29uZmlndXJhdGlvblRvUlRDQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUlRDQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcnRjQ29uZmlndXJhdGlvbjogUlRDQ29uZmlndXJhdGlvbiA9IHtpY2VTZXJ2ZXJzOiBbXX07XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3kpIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24uYnVuZGxlUG9saWN5ID0gY29uZmlndXJhdGlvbi5idW5kbGVQb2xpY3k7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWd1cmF0aW9uLmljZUNhbmRpZGF0ZVBvb2xTaXplID09PSAnbnVtYmVyJykge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VDYW5kaWRhdGVQb29sU2l6ZSA9IGNvbmZpZ3VyYXRpb24uaWNlQ2FuZGlkYXRlUG9vbFNpemU7XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWNlU2VydmVycykge1xuICAgICAgY29uc3QgaWNlU2VydmVyczogUlRDSWNlU2VydmVyW10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLmljZVNlcnZlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWNlU2VydmVycy5wdXNoKHtcbiAgICAgICAgICB1cmxzOiBjb25maWd1cmF0aW9uLmljZVNlcnZlcnNbaV0udXJscyxcbiAgICAgICAgICB1c2VybmFtZTogY29uZmlndXJhdGlvbi5pY2VTZXJ2ZXJzW2ldLnVzZXJuYW1lLFxuICAgICAgICAgIGNyZWRlbnRpYWw6IGNvbmZpZ3VyYXRpb24uaWNlU2VydmVyc1tpXS5jcmVkZW50aWFsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBydGNDb25maWd1cmF0aW9uLmljZVNlcnZlcnMgPSBpY2VTZXJ2ZXJzO1xuICAgIH1cblxuICAgIGlmIChjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeSkge1xuICAgICAgcnRjQ29uZmlndXJhdGlvbi5pY2VUcmFuc3BvcnRQb2xpY3kgPSBjb25maWd1cmF0aW9uLmljZVRyYW5zcG9ydFBvbGljeTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlndXJhdGlvbi5ydGNwTXV4UG9saWN5KSB7XG4gICAgICBydGNDb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3kgPSBjb25maWd1cmF0aW9uLnJ0Y3BNdXhQb2xpY3k7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb247XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb1NldFJlbW90ZURlc2NyaXB0aW9uKHJlc3BvbnNlOiBSZXNwb25zZSk6IFByb21pc2U8SVNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2VJbml0PiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMucGFyc2VKc29uQm9keTxJU2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZT4ocmVzcG9uc2UpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGRhdGEgPyBkYXRhLnN0YXR1cyA6IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMocmVzcG9uc2UpO1xuICAgIGNvbnN0IHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U6IElTZXRSZW1vdGVEZXNjcmlwdGlvblJlc3BvbnNlSW5pdCA9IHtzdGF0dXN9O1xuXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5zZXNzaW9uRGVzY3JpcHRpb24pIHtcbiAgICAgIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uID0gZGF0YS5zZXNzaW9uRGVzY3JpcHRpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0FkZEljZUNhbmRpZGF0ZXMocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SUFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZT4ocmVzcG9uc2UpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGRhdGEgPyBkYXRhLnN0YXR1cyA6IHRoaXMubWFwSHR0cFN0YXR1c1RvQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhyZXNwb25zZSk7XG4gICAgY29uc3QgYWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlOiBJQWRkSWNlQ2FuZGlkYXRlc1Jlc3BvbnNlSW5pdCA9IHtcbiAgICAgIHN0YXR1cyxcbiAgICAgIG9wdGlvbnM6IFtdXG4gICAgfTtcblxuICAgIGlmIChkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5vcHRpb25zKSB7XG4gICAgICAgIGFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZS5vcHRpb25zID0gZGF0YS5vcHRpb25zO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhZGRJY2VDYW5kaWRhdGVzUmVzcG9uc2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNvbnZlcnRIdHRwUmVzcG9uc2VUb0Rlc3Ryb3lTdHJlYW0ocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTxJRGVzdHJveVN0cmVhbVJlc3BvbnNlSW5pdD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnBhcnNlSnNvbkJvZHk8SURlc3Ryb3lTdHJlYW1SZXNwb25zZT4ocmVzcG9uc2UpO1xuICAgIGNvbnN0IHN0YXR1cyA9IGRhdGEgPyBkYXRhLnN0YXR1cyA6IHRoaXMubWFwSHR0cFN0YXR1c1RvU2V0RGVzdHJveVN0cmVhbVN0YXR1cyhyZXNwb25zZSk7XG4gICAgY29uc3QgZGVzdHJveVN0cmVhbTogSURlc3Ryb3lTdHJlYW1SZXNwb25zZUluaXQgPSB7c3RhdHVzfTtcblxuICAgIHJldHVybiBkZXN0cm95U3RyZWFtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuXG5jb25zdCBkaXNjb3ZlcnlQYXRoID0gJy9wY2FzdC9lbmRQb2ludHMnO1xuXG4vKiogQnVpbGRzIHBjYXN0IHJvdXRlIFVSTHMgZnJvbSBhIGRpc2NvdmVyeSBvciBlbmQgcG9pbnQgVVJJLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGNhc3RVcmkge1xuICAvKiogVGhlIHBhdGggdGhlIHBsYXRmb3JtIHNlcnZlcyBkaXNjb3ZlcnkgZnJvbSwgYW5kIHRoZSBwYXRoIGEgYmFyZSBkaXNjb3ZlcnkgaG9zdCBpcyB0YWtlbiB0byBtZWFuLiAqL1xuICBzdGF0aWMgZ2V0IGRpc2NvdmVyeVBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZGlzY292ZXJ5UGF0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIGRpc2NvdmVyeSBVUkkgYXMgYW4gYXBwbGljYXRpb24gb3IgYSB0b2tlbiBnaXZlcyBpdC4gQSBiYXJlIGhvc3RcbiAgICogbWVhbnMgdGhlIGRpc2NvdmVyeSBwYXRoLCBhcyBgRGlzY292ZXJ5VXJpYCByZWFkcyBpdC4gUXVlcnkgYW5kIGZyYWdtZW50XG4gICAqIGFyZSBkcm9wcGVkOiB0aGV5IGJlbG9uZyB0byB0aGUgZGlzY292ZXJ5IHJlcXVlc3QsIG5vdCB0byBhIHN0cmVhbSByb3V0ZS5cbiAgICovXG4gIHN0YXRpYyBub3JtYWxpemVEaXNjb3ZlcnlVcmkodXJpOiBzdHJpbmcgfCBVUkwpOiBVUkwge1xuICAgIGNvbnN0IHVybCA9IG5ldyBHbG9iYWxTY29wZS52YWx1ZS5VUkwodXJpLnRvU3RyaW5nKCkpO1xuXG4gICAgaWYgKHVybC5wYXRobmFtZSA9PT0gJycgfHwgdXJsLnBhdGhuYW1lID09PSAnLycpIHtcbiAgICAgIHVybC5wYXRobmFtZSA9IGRpc2NvdmVyeVBhdGg7XG4gICAgfVxuXG4gICAgdXJsLnNlYXJjaCA9ICcnO1xuICAgIHVybC5oYXNoID0gJyc7XG5cbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIHJvdXRlIFVSTCBiZXNpZGUgdGhlIGJhc2UgVVJJJ3MgbGFzdCBwYXRoIHNlZ21lbnQuIFRoZSBiYXNlXG4gICAqIGBodHRwczovL2hvc3QvcGNhc3QvZW5kUG9pbnRzYCBhbmQgdGhlIHBhdGggYFt0ZW5hbmN5LCAnc3RyZWFtJyxcbiAgICogJ3N1YnNjcmliZSddYCBnaXZlIGBodHRwczovL2hvc3QvcGNhc3QvPHRlbmFuY3k+L3N0cmVhbS9zdWJzY3JpYmVgLiBUaGVcbiAgICogYmFzZSBpcyB1c2VkIGFzIGdpdmVuOiBhbiBlbmQgcG9pbnQgVVJJIGZyb20gZGlzY292ZXJ5IGlzIGFscmVhZHkgdGhlXG4gICAqIHJvdXRlIHJvb3QuXG4gICAqL1xuICBzdGF0aWMgYnVpbGRSb3V0ZVVybChiYXNlVXJpOiBzdHJpbmcgfCBVUkwsIHBhdGg6IHN0cmluZ1tdKTogVVJMIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKGJhc2VVcmkudG9TdHJpbmcoKSk7XG4gICAgY29uc3Qgc2VnbWVudHMgPSB1cmwucGF0aG5hbWUuc3BsaXQoJy8nKTtcblxuICAgIHNlZ21lbnRzLmxlbmd0aCA9IHNlZ21lbnRzLmxlbmd0aCAtIDE7XG4gICAgdXJsLnBhdGhuYW1lID0gc2VnbWVudHMuY29uY2F0KC4uLnBhdGgpLmpvaW4oJy8nKTtcblxuICAgIHJldHVybiB1cmw7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGNhc3RVcmkgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IExvZ2dlckZhY3RvcnkgZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckZhY3RvcnknO1xuaW1wb3J0IElEaXNwb3NhYmxlIGZyb20gJy4uLy4uL2xhbmcvSURpc3Bvc2FibGUnO1xuaW1wb3J0IFJlYWRPbmx5U3ViamVjdCBmcm9tICcuLi8uLi9yeC9SZWFkT25seVN1YmplY3QnO1xuaW1wb3J0IEV4cG9uZW50aWFsQmFja29mZiBmcm9tICcuLi8uLi90aW1lL0V4cG9uZW50aWFsQmFja29mZic7XG5pbXBvcnQgRW5kUG9pbnQsIHtJU3RyZWFtfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IElQZWVyQ29ubmVjdGlvbiBmcm9tICcuLi8uLi9ydGMvSVBlZXJDb25uZWN0aW9uJztcbmltcG9ydCB7SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljfSBmcm9tICcuLi8uLi9ydGMvUnRjUHVibGlzaE1vbml0b3InO1xuaW1wb3J0IFB1Ymxpc2hlclN0YXRlIGZyb20gJy4vUHVibGlzaGVyU3RhdGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgU2Vzc2lvblRlbGVtZXRyeSBmcm9tICcuLi8uLi92aWRlby9TZXNzaW9uVGVsZW1ldHJ5JztcbmltcG9ydCBFZGdlQXV0aFBhcnNlciBmcm9tICcuLi8uLi9lZGdlQXV0aC9FZGdlQXV0aFBhcnNlcic7XG5cbmltcG9ydCB7RW5jb2RlZEVkZ2VUb2tlbn0gZnJvbSAnLi4vLi4vZWRnZUF1dGgvRW5jb2RlZEVkZ2VUb2tlbic7XG5pbXBvcnQgVG9rZW5Db250ZXh0IGZyb20gJy4uL2NvbnRleHQvVG9rZW5Db250ZXh0JztcbmltcG9ydCBQdWJsaXNoZXJDb250ZXh0IGZyb20gJy4vUHVibGlzaGVyQ29udGV4dCc7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25Db250ZXh0LCB7UGVlckNvbm5lY3Rpb25Db250ZXh0T3B0aW9uc30gZnJvbSAnLi4vY29udGV4dC9QZWVyQ29ubmVjdGlvbkNvbnRleHQnO1xuaW1wb3J0IFN0YXRlQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1N0YXRlQ29udGV4dCc7XG5pbXBvcnQgRGlzY292ZXJ5IGZyb20gJy4uL2Rpc2NvdmVyeS9EaXNjb3ZlcnknO1xuaW1wb3J0IERpc2NvdmVyeVVyaSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5VXJpJztcbmltcG9ydCBNZXRyaWNzRmFjdG9yeSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NGYWN0b3J5JztcbmltcG9ydCBNZXRyaWNzU2VydmljZSBmcm9tICcuLi8uLi9tZXRyaWNzL01ldHJpY3NTZXJ2aWNlJztcbmltcG9ydCBSZWFsVGltZVB1Ymxpc2hlciBmcm9tICcuL1JlYWxUaW1lUHVibGlzaGVyJztcblxuY29uc3QgZGVmYXVsdFN0cmVhbVRlcm1pbmF0aW9uUmVhc29uID0gJ2NsaWVudDp0ZXJtaW5hdGlvbic7XG5jb25zdCBmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyA9IDMwMDA7XG5jb25zdCBzdGFuZGJ5UG9sbGluZ0ludGVydmFsSW5NaWxsaXNlY29uZHMgPSAxNTAwMDtcbmNvbnN0IG9uZUhvdXJJbk1pbGxpc2Vjb25kcyA9IDM2MDAgKiAxMDAwO1xuY29uc3QgbWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzID0gMiAqIG9uZUhvdXJJbk1pbGxpc2Vjb25kcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHVibGlzaGVyIGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignUHVibGlzaGVyJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Rva2VuQ29udGV4dDogVG9rZW5Db250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3RhdGVDb250ZXh0OiBTdGF0ZUNvbnRleHQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4cG9uZW50aWFsQmFja29mZjogRXhwb25lbnRpYWxCYWNrb2ZmO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJTdGFydFRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlUb2tlbjogUmVhZE9ubHlTdWJqZWN0PEVuY29kZWRFZGdlVG9rZW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVBlZXJDb25uZWN0aW9uOiBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RhdGU6IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5VG9rZW5FeHBpcmluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seUF1dGhvcml6ZWQ6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlPbmxpbmU6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlMb2FkaW5nOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5UHVibGlzaGluZzogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVN0YW5kYnk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlTdG9wcGVkOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5RmFpbHVyZUNvdW50OiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlFbmRQb2ludDogUmVhZE9ubHlTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlYWRPbmx5U3RyZWFtOiBSZWFkT25seVN1YmplY3Q8SVN0cmVhbSB8IG51bGw+O1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZWFkT25seVJ0Y1N0YXRpc3RpY3M6IFJlYWRPbmx5U3ViamVjdDxJUnRjUHVibGlzaE1vbml0b3JTdGF0aXN0aWMgfCBudWxsPjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVhZE9ubHlNZWRpYVN0cmVhbTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD47XG5cbiAgcHJpdmF0ZSBfbWV0cmljc1NlcnZpY2U6IE1ldHJpY3NTZXJ2aWNlO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uVGVsZW1ldHJ5OiBTZXNzaW9uVGVsZW1ldHJ5O1xuXG4gIGNvbnN0cnVjdG9yKG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbSwgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4sIG5hbWU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBwZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zOiBQZWVyQ29ubmVjdGlvbkNvbnRleHRPcHRpb25zID0ge2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQ6IFNESy5mb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0fTtcblxuICAgIHRoaXMuX3Rva2VuQ29udGV4dCA9IG5ldyBUb2tlbkNvbnRleHQodG9rZW4pO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBuZXcgUHVibGlzaGVyQ29udGV4dChuYW1lKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQgPSBuZXcgUGVlckNvbm5lY3Rpb25Db250ZXh0KHBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMpO1xuICAgIHRoaXMuX3N0YXRlQ29udGV4dCA9IG5ldyBTdGF0ZUNvbnRleHQoKTtcbiAgICB0aGlzLl9leHBvbmVudGlhbEJhY2tvZmYgPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmKCk7XG4gICAgdGhpcy5fcHVibGlzaGVyU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLl9yZWFkT25seVRva2VuID0gbmV3IFJlYWRPbmx5U3ViamVjdDxzdHJpbmc+KHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbik7XG4gICAgdGhpcy5fcmVhZE9ubHlQZWVyQ29ubmVjdGlvbiA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVBlZXJDb25uZWN0aW9uIHwgbnVsbD4odGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YXRlID0gbmV3IFJlYWRPbmx5U3ViamVjdDxQdWJsaXNoZXJTdGF0ZT4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlUb2tlbkV4cGlyaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl90b2tlbkNvbnRleHQudG9rZW5FeHBpcmluZyk7XG4gICAgdGhpcy5fcmVhZE9ubHlBdXRob3JpemVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmF1dGhvcml6ZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5T25saW5lID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZSk7XG4gICAgdGhpcy5fcmVhZE9ubHlMb2FkaW5nID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmxvYWRpbmcpO1xuICAgIHRoaXMuX3JlYWRPbmx5UHVibGlzaGluZyA9IG5ldyBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoaW5nKTtcbiAgICB0aGlzLl9yZWFkT25seVN0YW5kYnkgPSBuZXcgUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhbmRieSk7XG4gICAgdGhpcy5fcmVhZE9ubHlTdG9wcGVkID0gbmV3IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPih0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQpO1xuICAgIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxudW1iZXI+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50KTtcbiAgICB0aGlzLl9yZWFkT25seUVuZFBvaW50ID0gbmV3IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQpO1xuICAgIHRoaXMuX3JlYWRPbmx5U3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxJU3RyZWFtIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0pO1xuICAgIHRoaXMuX3JlYWRPbmx5UnRjU3RhdGlzdGljcyA9IG5ldyBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4odGhpcy5fcHVibGlzaGVyQ29udGV4dC5ydGNTdGF0aXN0aWNzKTtcbiAgICB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtID0gbmV3IFJlYWRPbmx5U3ViamVjdDxNZWRpYVN0cmVhbSB8IG51bGw+KHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbSk7XG5cbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgPSBtZWRpYVN0cmVhbTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuICAgIHRoaXMuX21ldHJpY3NTZXJ2aWNlID0gTWV0cmljc0ZhY3RvcnkuZ2V0TWV0cmljc1NlcnZpY2UoZGlzY292ZXJ5VXJpKTtcbiAgICB0aGlzLl9zZXNzaW9uVGVsZW1ldHJ5ID0gbmV3IFNlc3Npb25UZWxlbWV0cnkoU0RLLnBhZ2VMb2FkVGltZSwgdGhpcy5fbWV0cmljc1NlcnZpY2UpO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGVyRGlzcG9zYWJsZXMuYWRkKHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkpO1xuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5wdWJsaXNoZXJEaXNwb3NhYmxlcy5hZGQoXG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnN1YnNjcmliZShzdGF0ZSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCkge1xuICAgICAgICAgIEdsb2JhbFNjb3BlLnZhbHVlLmNsZWFyVGltZW91dCh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmNsZWFyRmFpbHVyZUNvdW50VGltZW91dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0YXRlICE9PSBQdWJsaXNoZXJTdGF0ZS5QdWJsaXNoaW5nKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5jbGVhckZhaWx1cmVDb3VudFRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmZhaWx1cmVDb3VudC52YWx1ZSA9IDA7XG4gICAgICAgIH0sIGZhaWx1cmVDb3VudENsZWFuVXBJbnRlcnZhbEluTWlsbGlzZWNvbmRzKTtcbiAgICAgIH0pKTtcblxuICAgIGNvbnN0IGRlc3Ryb3lTdHJlYW1PblVubW91bnQgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgJiYgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZSkge1xuICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZS5kZXN0cm95U3RyZWFtT25Vbm1vdW50KHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlLCAnY2xpZW50OnRlcm1pbmF0aW9uLW9uLXdpbmRvdy11bmxvYWQnKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgR2xvYmFsU2NvcGUudmFsdWUuYWRkV2luZG93RXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZGVzdHJveVN0cmVhbU9uVW5tb3VudCk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICBHbG9iYWxTY29wZS52YWx1ZS5yZW1vdmVXaW5kb3dFdmVudExpc3RlbmVyKCdiZWZvcmV1bmxvYWQnLCBkZXN0cm95U3RyZWFtT25Vbm1vdW50KTtcbiAgICB9KSk7XG5cbiAgICB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBnZXQgdG9rZW4oKTogRW5jb2RlZEVkZ2VUb2tlbiB7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuQ29udGV4dC50b2tlbi52YWx1ZTtcbiAgfVxuXG4gIHNldCB0b2tlbih0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuZGlzcG9zZSgpO1xuXG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlID0gdG9rZW47XG4gICAgdGhpcy5fdG9rZW5Db250ZXh0LnRva2VuRXhwaXJpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgIGNvbnN0IGVkZ2VUb2tlbiA9IEVkZ2VBdXRoUGFyc2VyLnBhcnNlVG9rZW4odGhpcy5fdG9rZW5Db250ZXh0LnRva2VuLnZhbHVlKTtcbiAgICBjb25zdCBkaXNjb3ZlcnlVcmkgPSAoZWRnZVRva2VuLnVyaSB8fCBTREsuZGlzY292ZXJ5VXJpLnZhbHVlKS50b1N0cmluZygpO1xuXG4gICAgU0RLLnRlbmFuY3kudmFsdWUgPSBlZGdlVG9rZW4udGVuYW5jeSB8fCBTREsudGVuYW5jeS52YWx1ZTtcbiAgICBEaXNjb3ZlcnlVcmkudXJpLnZhbHVlID0gZGlzY292ZXJ5VXJpO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UgPSBNZXRyaWNzRmFjdG9yeS5nZXRNZXRyaWNzU2VydmljZShkaXNjb3ZlcnlVcmkpO1xuXG4gICAgdGhpcy5zdGFydCgpO1xuICB9XG5cbiAgZ2V0IHBlZXJDb25uZWN0aW9uKCk6IFJlYWRPbmx5U3ViamVjdDxJUGVlckNvbm5lY3Rpb24gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5UGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBnZXQgc3RhdGUoKTogUmVhZE9ubHlTdWJqZWN0PFB1Ymxpc2hlclN0YXRlPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RhdGU7XG4gIH1cblxuICBnZXQgdG9rZW5FeHBpcmluZygpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVRva2VuRXhwaXJpbmc7XG4gIH1cblxuICBnZXQgYXV0aG9yaXplZCgpOiBSZWFkT25seVN1YmplY3Q8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seUF1dGhvcml6ZWQ7XG4gIH1cblxuICBnZXQgb25saW5lKCk6IFJlYWRPbmx5U3ViamVjdDxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5T25saW5lO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHB1Ymxpc2hpbmcoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlQdWJsaXNoaW5nO1xuICB9XG5cbiAgZ2V0IHN0YW5kYnkoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdGFuZGJ5O1xuICB9XG5cbiAgZ2V0IHN0b3BwZWQoKTogUmVhZE9ubHlTdWJqZWN0PGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlTdG9wcGVkO1xuICB9XG5cbiAgZ2V0IGZhaWx1cmVDb3VudCgpOiBSZWFkT25seVN1YmplY3Q8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5RmFpbHVyZUNvdW50O1xuICB9XG5cbiAgZ2V0IGVuZFBvaW50KCk6IFJlYWRPbmx5U3ViamVjdDxFbmRQb2ludCB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5fcmVhZE9ubHlFbmRQb2ludDtcbiAgfVxuXG4gIGdldCBzdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PElTdHJlYW0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5U3RyZWFtO1xuICB9XG5cbiAgZ2V0IHN0cmVhbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQ7XG4gIH1cblxuICBnZXQgcnRjU3RhdGlzdGljcygpOiBSZWFkT25seVN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seVJ0Y1N0YXRpc3RpY3M7XG4gIH1cblxuICBnZXQgbWVkaWFTdHJlYW0oKTogUmVhZE9ubHlTdWJqZWN0PE1lZGlhU3RyZWFtIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLl9yZWFkT25seU1lZGlhU3RyZWFtO1xuICB9XG5cbiAgYXN5bmMgc3RvcChyZWFzb246IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGlmICghdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuXG4gICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnN1YnNjcmliZShpc1N0YXJ0aW5nID0+IHtcbiAgICAgICAgaWYgKCFpc1N0YXJ0aW5nKSB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzU3RvcChyZWFzb24pO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU3RvcChyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcyhyZWFzb24pO1xuXG4gICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSkge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlLmNsb3NlKCk7XG4gICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgPSBudWxsO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkO1xuICB9XG5cbiAgYXN5bmMgZGlzcG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9wKCdjbGllbnQ6Y2hhbm5lbC1kaXNwb3NlJykudGhlbigoKSA9PiB7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hlckRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX3N0YXRlQ29udGV4dC5pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFVyaSh0b2tlbjogRW5jb2RlZEVkZ2VUb2tlbik6IFVSTCB7XG4gICAgY29uc3QgdXJsID0gRWRnZUF1dGhQYXJzZXIucGFyc2VUb2tlbih0b2tlbikudXJpO1xuXG4gICAgaWYgKHVybCkge1xuICAgICAgcmV0dXJuIHVybDtcbiAgICB9XG5cbiAgICB0aGlzLl9sb2dnZXIuaW5mbygnRmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGRpc2NvdmVyIFVSSSBbJXNdJywgU0RLLmRpc2NvdmVyeVVyaS52YWx1ZSk7XG5cbiAgICByZXR1cm4gbmV3IEdsb2JhbFNjb3BlLnZhbHVlLlVSTChTREsuZGlzY292ZXJ5VXJpLnZhbHVlKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLl9zdGF0ZUNvbnRleHQuaXNEaXNwb3NlZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDaGFubmVsIHdhcyBhbHJlYWR5IGRpc3Bvc2VkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX3N0YXRlQ29udGV4dC5pc1N0YXJ0aW5nLnZhbHVlKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIGFscmVhZHkgc3RhcnRpbmcsIHNraXBwaW5nIHN0YXJ0Jyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICByZXR1cm4gdGhpcy5wcm9jZXNzU3RhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc1N0YXJ0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICB0aGlzLmNsZWFuVXBSZXNvdXJjZXMoJ2NsaWVudDpzdGFydCcpO1xuXG4gICAgY29uc3QgdG9rZW46IEVuY29kZWRFZGdlVG9rZW4gPSB0aGlzLl90b2tlbkNvbnRleHQudG9rZW4udmFsdWU7XG4gICAgY29uc3QgbGlzdGVuT25TdHJlYW1TZXR1cCA9IHRoaXMuX3Nlc3Npb25UZWxlbWV0cnkubGlzdGVuT25TdHJlYW1TZXR1cCgpO1xuXG4gICAgaWYgKCFFZGdlQXV0aFBhcnNlci5pc0VuY29kZWRFZGdlVG9rZW5WYWxpZCh0b2tlbikpIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHRva2VuIFslc10nLCB0b2tlbik7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hdXRob3JpemVkLnZhbHVlID0gZmFsc2U7XG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5sb2FkaW5nLnZhbHVlID0gdHJ1ZTtcblxuICAgIGNvbnN0IHVyaSA9IHRoaXMuZ2V0VXJpKHRva2VuKTtcblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKFxuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS5zdWJzY3JpYmUoc3RhdGUgPT4ge1xuICAgICAgICBpZiAoc3RhdGUgPT09IFB1Ymxpc2hlclN0YXRlLkVycm9yIHx8IHN0YXRlID09PSBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nKSB7XG4gICAgICAgICAgRGlzY292ZXJ5LmNsZWFyQ2FjaGVkQ2xvc2VzdEVuZHBvaW50KHVyaSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IGhhbmRsZVN0cmVhbUZhaWx1cmVDYWxsYmFjazogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgICAvLyBOZWVkIHRvIHNldCBpc1N0YXJ0aW5nIHRvIGZhbHNlIGFuZCBjYWxsIGhhbmRsZVN0cmVhbUZhaWx1cmUgaWYgc3RyZWFtIG1vbml0b3JzIGZvdW5kIGFuIGlzc3VlXG4gICAgICB0aGlzLl9zdGF0ZUNvbnRleHQuaXNTdGFydGluZy52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gcmVzb2x2ZSh0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKSk7XG4gICAgfSk7XG4gICAgY29uc3Qgc3RyZWFtUHVibGlzaGVyID0gbmV3IFJlYWxUaW1lUHVibGlzaGVyKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQsIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZUNhbGxiYWNrKTtcblxuICAgIHJldHVybiBzdHJlYW1QdWJsaXNoZXIuc3RhcnQoXG4gICAgICB1cmksXG4gICAgICB0b2tlbixcbiAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXApXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgbGlzdGVuT25TdHJlYW1TZXR1cC5mYWlsKCk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUrKztcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm9ubGluZS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuY2xlYW5VcFJlc291cmNlcygnY2xpZW50OmNsZWFudXAtYWZ0ZXItZmFpbGVkLXNldHVwJyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I7XG5cbiAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgcHVibGlzaGluZycsIGUpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgdGhpcy5fc3RhdGVDb250ZXh0LmlzU3RhcnRpbmcudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9PT0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZyB8fCAhU0RLLmF1dG9tYXRpY1JldHJ5T25GYWlsdXJlKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLmhhbmRsZVN0cmVhbUZhaWx1cmUoKVxuICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoJ0ZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZScsIGUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHRoaXMuZ2V0UmV0cnlJbnRlcnZhbCgpKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiB7XG4gICAgICAgICAgR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgc2V0TWVkaWFTdHJlYW0obWVkaWFTdHJlYW06IE1lZGlhU3RyZWFtKSB7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0Lm1lZGlhU3RyZWFtLnZhbHVlID0gbWVkaWFTdHJlYW07XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlKSB7XG4gICAgICBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKG1lZGlhVHJhY2sgPT4ge1xuICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWU/LmdldFNlbmRlcnMoKS5mb3JFYWNoKHNlbmRlciA9PiB7XG4gICAgICAgICAgaWYgKG1lZGlhVHJhY2sua2luZCA9PT0gc2VuZGVyPy50cmFjaz8ua2luZCAmJiBtZWRpYVRyYWNrLmlkICE9PSBzZW5kZXIudHJhY2suaWQpIHtcbiAgICAgICAgICAgIHNlbmRlci5yZXBsYWNlVHJhY2sobWVkaWFUcmFjayk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UmV0cnlJbnRlcnZhbCgpOiBudW1iZXIge1xuICAgIHN3aXRjaCAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSkge1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5PZmZsaW5lOlxuICAgICAgICByZXR1cm4gc3RhbmRieVBvbGxpbmdJbnRlcnZhbEluTWlsbGlzZWNvbmRzO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Jbml0aWFsaXppbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5HZW9CbG9ja2VkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdG9wcGVkOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZzpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuUmVjb25uZWN0aW5nOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5VbnN1cHBvcnRlZEZlYXR1cmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5Db25uZWN0aW9uRXJyb3I6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkNsaWVudFN0YXJ0RXJyb3I6XG4gICAgICAgIC8vIEZpcnN0IGFuZCBzZWNvbmQgYXR0ZW1wdCBmYXN0LCBhZnRlciB0aGF0IGV4cG9uZW50aWFsIHdpdGggYmFja29mZiBpbnRlcnZhbFxuICAgICAgICByZXR1cm4gdGhpcy5fZXhwb25lbnRpYWxCYWNrb2ZmLmdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQodGhpcy5fcHVibGlzaGVyQ29udGV4dC5mYWlsdXJlQ291bnQudmFsdWUpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZSh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbUZhaWx1cmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwgPSAwO1xuXG4gICAgc3dpdGNoICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlKSB7XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlJlY292ZXJpbmc6XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvcjpcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yOlxuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5DbGllbnRTdGFydEVycm9yOlxuICAgICAgICBpZiAoIXRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcykge1xuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcyA9IERhdGUubm93KCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsID0gRGF0ZS5ub3coKSAtIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhcnRSZWNvbm5lY3Rpb25BdHRlbXB0c1RpbWVJbk1pbGxpc2Vjb25kcztcblxuICAgICAgICBpZiAobWF4UmVjb25uZWN0aW5nQXR0ZW1wdHNJbnRlcnZhbEluTWlsbGlzZWNvbmRzIDw9IHJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWwpIHtcbiAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdIFslc10gYWZ0ZXIgZXhjZWVkaW5nIHRpbWVvdXQnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlLCBQdWJsaXNoZXJTdGF0ZVt0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlXSk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUmV0cnkgc3RhcnQgd2l0aCBpbml0aWFsIHN0YXRlIFslc10gWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUsIFB1Ymxpc2hlclN0YXRlW3RoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWVdKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHVuYXV0aG9yaXplZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvUmVzdHJpY3RlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gcmVzdHJpY3RlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBnZW8gYmxvY2tlZCwgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQuIFBsZWFzZSBwcm92aWRlIGEgbmV3IHRva2VuIGFuZCBpbnZva2Ugc3RhcnQoKScpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuU3RvcHBlZDpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBzdG9wcGVkLCBza2lwcGluZyByZXRyeSBvZiBzdGFydC4nKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLlB1Ymxpc2hpbmc6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgcHVibGlzaGluZywgc2tpcHBpbmcgcmV0cnkgb2Ygc3RhcnQnKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlIFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBpbml0aWFsaXppbmcsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0Jyk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZzpcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1B1Ymxpc2hlciBpcyBhbHJlYWR5IHN0YXJ0aW5nLCBza2lwcGluZyByZXRyeSBvZiBzdGFydCcpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuVW5zdXBwb3J0ZWRGZWF0dXJlOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIHVuc3VwcG9ydGVkIGZlYXR1cmUsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ6XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdQdWJsaXNoZXIgaXMgc3RvcHBlZCBkdWUgdG8gY2hhbm5lbCBub3QgZm91bmQsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yOlxuICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnUHVibGlzaGVyIGlzIHN0b3BwZWQgZHVlIHRvIGNvbmZpZ3VyYXRpb24gZXJyb3IsIHNraXBwaW5nIHJldHJ5IG9mIHN0YXJ0LicpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0YXJ0KCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFuVXBSZXNvdXJjZXMocmVhc29uOiBzdHJpbmcgPSBkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24pOiB2b2lkIHtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQuZGlzcG9zZVBlZXJDb25uZWN0aW9uKCk7XG5cbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0b3BwZWQudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhbmRieS52YWx1ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICYmIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUpIHtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLmRlc3Ryb3lTdHJlYW0odGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUsIHJlYXNvbilcbiAgICAgICAgLnRoZW4oKHtzdGF0dXN9KSA9PiB7XG4gICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gRmFpbGVkIHRvIGRlc3Ryb3kgc3RyZWFtIHdpdGggcmVhc29uIFslc10nLCB0aGlzLnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRGVzdHJveWVkIHN0cmVhbSB3aXRoIHJlYXNvbiBbJXNdJywgdGhpcy5zdHJlYW1JZCwgc3RhdHVzKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gZGVzdHJveSBzdHJlYW0nLCB0aGlzLnN0cmVhbUlkLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvblJlY29ubmVjdEF0dGVtcHRzID0gMDtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFN1YmplY3QgZnJvbSAnLi4vLi4vcngvU3ViamVjdCc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgRW5kUG9pbnQsIHtcbiAgSVN0cmVhbSxcbiAgQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyxcbiAgU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNcbn0gZnJvbSAnLi4vZGlzY292ZXJ5L0VuZFBvaW50JztcbmltcG9ydCBhc3NlcnRVbnJlYWNoYWJsZSBmcm9tICcuLi8uLi9sYW5nL2Fzc2VydFVucmVhY2hhYmxlJztcbmltcG9ydCBTdHJpbmdzIGZyb20gJy4uLy4uL2xhbmcvU3RyaW5ncyc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQge0lSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpY30gZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcbmltcG9ydCB7UHVibGlzaFN0YXR1c30gZnJvbSAnLi4vYXBpL1B1Ymxpc2gnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJDb250ZXh0IHtcbiAgcHVibGlzaGVySW5pdGlhbGl6YXRpb246IERhdGU7XG4gIGRpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdDtcbiAgcHVibGlzaGVyRGlzcG9zYWJsZXM6IERpc3Bvc2FibGVMaXN0O1xuICBzdGF0ZTogU3ViamVjdDxQdWJsaXNoZXJTdGF0ZT47XG4gIGF1dGhvcml6ZWQ6IFN1YmplY3Q8Ym9vbGVhbj47XG4gIG9ubGluZTogU3ViamVjdDxib29sZWFuPjtcbiAgbG9hZGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgcHVibGlzaGluZzogU3ViamVjdDxib29sZWFuPjtcbiAgc3RhbmRieTogU3ViamVjdDxib29sZWFuPjtcbiAgc3RvcHBlZDogU3ViamVjdDxib29sZWFuPjtcbiAgZmFpbHVyZUNvdW50OiBTdWJqZWN0PG51bWJlcj47XG4gIGVuZFBvaW50OiBTdWJqZWN0PEVuZFBvaW50IHwgbnVsbD47XG4gIHN0cmVhbTogU3ViamVjdDxJU3RyZWFtIHwgbnVsbD47XG4gIHJ0Y1N0YXRpc3RpY3M6IFN1YmplY3Q8SVJ0Y1B1Ymxpc2hNb25pdG9yU3RhdGlzdGljIHwgbnVsbD47XG4gIGNsZWFyRmFpbHVyZUNvdW50VGltZW91dDogbnVtYmVyO1xuICBzdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgdGhpcy5kaXNwb3NhYmxlcyA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICAgIHRoaXMucHVibGlzaGVyRGlzcG9zYWJsZXMgPSBuZXcgRGlzcG9zYWJsZUxpc3QoKTtcbiAgICB0aGlzLnB1Ymxpc2hlckluaXRpYWxpemF0aW9uID0gbmV3IERhdGUoKTtcbiAgICB0aGlzLnN0YXRlID0gbmV3IFN1YmplY3Q8UHVibGlzaGVyU3RhdGU+KFB1Ymxpc2hlclN0YXRlLkluaXRpYWxpemluZyk7XG4gICAgdGhpcy5hdXRob3JpemVkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gICAgdGhpcy5vbmxpbmUgPSBuZXcgU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgICB0aGlzLmxvYWRpbmcgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5wdWJsaXNoaW5nID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAgIHRoaXMuc3RhbmRieSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BwZWQgPSBuZXcgU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQgPSBuZXcgU3ViamVjdDxudW1iZXI+KDApO1xuICAgIHRoaXMuZW5kUG9pbnQgPSBuZXcgU3ViamVjdDxFbmRQb2ludCB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN1YmplY3Q8SVN0cmVhbSB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMucnRjU3RhdGlzdGljcyA9IG5ldyBTdWJqZWN0PElSdGNQdWJsaXNoTW9uaXRvclN0YXRpc3RpYyB8IG51bGw+KG51bGwpO1xuICAgIHRoaXMuY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0ID0gMDtcbiAgICB0aGlzLm5hbWUgPSBuYW1lICYmIG5hbWUubGVuZ3RoID8gbmFtZSA6IHRoaXMuZ2VuZXJhdGVTY3JlZW5OYW1lKCk7XG4gICAgdGhpcy5zdGFydFJlY29ubmVjdGlvbkF0dGVtcHRzVGltZUluTWlsbGlzZWNvbmRzID0gMDtcbiAgfVxuXG4gIGdldCBzdHJlYW1JZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuc3RyZWFtLnZhbHVlO1xuXG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybiAnLSc7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmVhbS5zdHJlYW1JZDtcbiAgfVxuXG4gIGFwcGx5UHVibGlzaFN0YXR1cyhzdGF0dXM6IFB1Ymxpc2hTdGF0dXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgY2FzZSAnZ2VvLXJlc3RyaWN0ZWQnOlxuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICB0aGlzLmFwcGx5VW5hdXRob3JpemVkKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgdGhpcy5hcHBseU5vdEZvdW5kKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5hcHBseVVuaGFuZGxlZEVycm9yKCk7XG5cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoc3RhdHVzOiBTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgYXBwbHlBZGRJY2VDYW5kaWRhdGVzU3RhdHVzKHN0YXR1czogQWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyk6IHZvaWQge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHRoaXMuYXBwbHlVbmF1dGhvcml6ZWQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICB0aGlzLmFwcGx5Tm90Rm91bmQoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aGlzLmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICByZXR1cm47XG4gICAgfVxuICB9XG5cbiAgbWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1czogUHVibGlzaFN0YXR1cyk6IFB1Ymxpc2hlclN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAnb2snOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmc7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdnZW8tcmVzdHJpY3RlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5HZW9SZXN0cmljdGVkO1xuICAgICAgY2FzZSAnZ2VvLWJsb2NrZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuR2VvQmxvY2tlZDtcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnbWlzc2luZy1jaGFubmVsLW9yLXJvb20taWQnOlxuICAgICAgY2FzZSAnZm9yYmlkZGVuLXRhZyc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5Db25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdwb3J0LWluLXJhbmdlLW5vdC1mb3VuZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5UcmFuc2llbnRDb25maWd1cmF0aW9uRXJyb3I7XG4gICAgICBjYXNlICdmYWlsZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuRXJyb3I7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhc3NlcnRVbnJlYWNoYWJsZShzdGF0dXMpO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5VW5oYW5kbGVkRXJyb3IoKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUrKztcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGFwcGx5VW5hdXRob3JpemVkKCk6IHZvaWQge1xuICAgIHRoaXMuYXV0aG9yaXplZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuZmFpbHVyZUNvdW50LnZhbHVlID0gMDtcbiAgICB0aGlzLnB1Ymxpc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICB0aGlzLnN0YW5kYnkudmFsdWUgPSB0cnVlO1xuICAgIHRoaXMuc3RvcHBlZC52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RyZWFtLnZhbHVlID0gbnVsbDtcbiAgfVxuXG4gIGFwcGx5Tm90Rm91bmQoKTogdm9pZCB7XG4gICAgdGhpcy5mYWlsdXJlQ291bnQudmFsdWUgPSAwO1xuICAgIHRoaXMucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgIHRoaXMuc3RhbmRieS52YWx1ZSA9IHRydWU7XG4gICAgdGhpcy5zdG9wcGVkLnZhbHVlID0gZmFsc2U7XG4gICAgdGhpcy5zdHJlYW0udmFsdWUgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVNjcmVlbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gU3RyaW5ncy5yYW5kb20oMTIpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5lbnVtIFB1Ymxpc2hlclN0YXRlIHtcbiAgSW5pdGlhbGl6aW5nID0gMCxcbiAgT2ZmbGluZSA9IDEsXG4gIFN0YXJ0aW5nID0gMixcbiAgUHVibGlzaGluZyA9IDMsXG4gIFJlY292ZXJpbmcgPSA0LFxuICBSZWNvbm5lY3RpbmcgPSA1LFxuICBTdG9wcGVkID0gNixcbiAgVW5hdXRob3JpemVkID0gNyxcbiAgR2VvUmVzdHJpY3RlZCA9IDgsXG4gIEdlb0Jsb2NrZWQgPSA5LFxuICBVbnN1cHBvcnRlZEZlYXR1cmUgPSAxMCxcbiAgTm90Rm91bmQgPSAxMSxcbiAgQ29uZmlndXJhdGlvbkVycm9yID0gMTIsXG4gIFRyYW5zaWVudENvbmZpZ3VyYXRpb25FcnJvciA9IDEzLFxuICBDb25uZWN0aW9uRXJyb3IgPSAxNCxcbiAgQ2xpZW50U3RhcnRFcnJvciA9IDE1LFxuICBFcnJvciA9IDE2XG59XG5cbmV4cG9ydCBkZWZhdWx0IFB1Ymxpc2hlclN0YXRlOyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFNESyBmcm9tICcuLi9TREsnO1xuaW1wb3J0IHtFbmNvZGVkRWRnZVRva2VufSBmcm9tICcuLi8uLi9lZGdlQXV0aC9FbmNvZGVkRWRnZVRva2VuJztcbmltcG9ydCBQdWJsaXNoZXIgZnJvbSAnLi9QdWJsaXNoZXInO1xuXG50eXBlIENyZWF0ZVB1Ymxpc2hlck9wdGlvbnMgPSB7XG4gIG1lZGlhU3RyZWFtOiBNZWRpYVN0cmVhbTtcbiAgdG9rZW46IEVuY29kZWRFZGdlVG9rZW47XG4gIG5hbWU/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQdWJsaXNoZXJzIHtcbiAgc3RhdGljIGNyZWF0ZVB1Ymxpc2hlcihvcHRpb25zOiBDcmVhdGVQdWJsaXNoZXJPcHRpb25zKTogUHVibGlzaGVyIHtcbiAgICBpZiAoIVNESy5pbml0aWFsaXplZC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTREsgaXMgbm90IGxvYWRlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFB1Ymxpc2hlcihvcHRpb25zLm1lZGlhU3RyZWFtLCBvcHRpb25zLnRva2VuLCBvcHRpb25zLm5hbWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1B1Ymxpc2hlcnMgaXMgYSBzdGF0aWMgY2xhc3MgdGhhdCBtYXkgbm90IGJlIGluc3RhbnRpYXRlZCcpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IGFzc2VydFVucmVhY2hhYmxlIGZyb20gJy4uLy4uL2xhbmcvYXNzZXJ0VW5yZWFjaGFibGUnO1xuaW1wb3J0IERpc3Bvc2FibGUgZnJvbSAnLi4vLi4vbGFuZy9EaXNwb3NhYmxlJztcbmltcG9ydCB7SUxvZ2dlcn0gZnJvbSAnLi4vLi4vbG9nZ2VyL0xvZ2dlckludGVyZmFjZSc7XG5pbXBvcnQgTG9nZ2VyRmFjdG9yeSBmcm9tICcuLi8uLi9sb2dnZXIvTG9nZ2VyRmFjdG9yeSc7XG5pbXBvcnQgU0RLIGZyb20gJy4uL1NESyc7XG5pbXBvcnQge1N0cmVhbVNldHVwTGlzdGVuZXJ9IGZyb20gJy4uLy4uL2RvbS9TdHJlYW1TZXR1cExpc3RlbmVyJztcbmltcG9ydCBGZWF0dXJlRW5hYmxlbWVudCBmcm9tICcuLi8uLi9lbnZpcm9ubWVudC9GZWF0dXJlRW5hYmxlbWVudCc7XG5pbXBvcnQge0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMsIFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzfSBmcm9tICcuLi9kaXNjb3ZlcnkvRW5kUG9pbnQnO1xuaW1wb3J0IERpc2NvdmVyeSBmcm9tICcuLi9kaXNjb3ZlcnkvRGlzY292ZXJ5JztcbmltcG9ydCBJUGVlckNvbm5lY3Rpb24gZnJvbSAnLi4vLi4vcnRjL0lQZWVyQ29ubmVjdGlvbic7XG5pbXBvcnQgUGVlckNvbm5lY3Rpb25TZXJ2aWNlIGZyb20gJy4uLy4uL3J0Yy9QZWVyQ29ubmVjdGlvblNlcnZpY2UnO1xuaW1wb3J0IFBlZXJDb25uZWN0aW9uQ29udGV4dCBmcm9tICcuLi9jb250ZXh0L1BlZXJDb25uZWN0aW9uQ29udGV4dCc7XG5pbXBvcnQgUnRjUHVibGlzaE1vbml0b3IgZnJvbSAnLi4vLi4vcnRjL1J0Y1B1Ymxpc2hNb25pdG9yJztcblxuaW1wb3J0IFJ0Y0NvbmZpZ3VyYXRpb25NYW5hZ2VyIGZyb20gJy4uLy4uL3J0Yy9SdGNDb25maWd1cmF0aW9uTWFuYWdlcic7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5pbXBvcnQgUHVibGlzaGVyQ29udGV4dCBmcm9tICcuL1B1Ymxpc2hlckNvbnRleHQnO1xuXG5jb25zdCBpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCA9IDEwMDtcbmNvbnN0IHNvZnRSZXN0YXJ0SW50ZXJ2YWwgPSAxMDAwO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWFsVGltZVB1Ymxpc2hlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2xvZ2dlcjogSUxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKCdSZWFsVGltZVB1Ymxpc2hlcicpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0O1xuICBwcml2YXRlIHJlYWRvbmx5IF9wZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgcHJpdmF0ZSByZWFkb25seSBfaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICBjb25zdHJ1Y3RvcihwdWJsaXNoZXJDb250ZXh0OiBQdWJsaXNoZXJDb250ZXh0LCBwZWVyQ29ubmVjdGlvbkNvbnRleHQ6IFBlZXJDb25uZWN0aW9uQ29udGV4dCwgaGFuZGxlU3RyZWFtRmFpbHVyZTogKCkgPT4gUHJvbWlzZTx2b2lkPikge1xuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQgPSBwdWJsaXNoZXJDb250ZXh0O1xuICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dCA9IHBlZXJDb25uZWN0aW9uQ29udGV4dDtcbiAgICB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlID0gaGFuZGxlU3RyZWFtRmFpbHVyZTtcbiAgfVxuXG4gIHN0YXJ0KHVyaTogVVJMLCB0b2tlbjogc3RyaW5nLCBsaXN0ZW5PblN0cmVhbVNldHVwOiBTdHJlYW1TZXR1cExpc3RlbmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFHbG9iYWxTY29wZS52YWx1ZS5uYXZpZ2F0b3JJc09uTGluZSkge1xuICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLk9mZmxpbmU7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBtZWRpYVN0cmVhbSA9IHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5tZWRpYVN0cmVhbS52YWx1ZTtcblxuICAgIGlmICghbWVkaWFTdHJlYW0pIHtcbiAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignUHVibGlzaCBmYWlsZWQgbm8gbWVkaWEgc3RyZWFtIHByb3ZpZGVkJyk7XG4gICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29uZmlndXJhdGlvbkVycm9yO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgfVxuXG4gICAgY29uc3QgbWVkaWFUcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRUcmFja3MoKTtcbiAgICBjb25zdCB0cmFja0tpbmRzID0gbWVkaWFUcmFja3MucmVkdWNlKChhY2N1bXVsYXRvcjogKCdhdWRpbycgfCAndmlkZW8nKVtdLCB0cmFjaykgPT4ge1xuICAgICAgaWYgKHRyYWNrLmtpbmQgPT09ICdhdWRpbycgfHwgdHJhY2sua2luZCA9PT0gJ3ZpZGVvJykge1xuICAgICAgICBhY2N1bXVsYXRvci5wdXNoKHRyYWNrLmtpbmQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oJ1slc10gVHJhY2sga2luZCBpcyBub3Qgc3VwcG9ydGVkJywgdHJhY2sua2luZCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY2N1bXVsYXRvcjtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoW1xuICAgICAgRGlzY292ZXJ5LmRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50V2l0aENhY2hpbmcodXJpKSxcbiAgICAgIFBlZXJDb25uZWN0aW9uU2VydmljZS5jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyKCdzZW5kb25seScsIHRyYWNrS2luZHMpXG4gICAgICAgIC50aGVuKCh7bG9jYWxPZmZlciwgcGVlckNvbm5lY3Rpb259KSA9PiB7XG4gICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbG9jYWxPZmZlcixcbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uXG4gICAgICAgICAgfTtcbiAgICAgICAgfSlcbiAgICBdKVxuICAgICAgLnRoZW4oKFtlbmRQb2ludCwge2xvY2FsT2ZmZXIsIHBlZXJDb25uZWN0aW9ufV0pID0+IHtcbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5vbmxpbmUudmFsdWUgPSB0cnVlO1xuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlID0gZW5kUG9pbnQ7XG4gICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW5nIHRvIFslc10nLCBlbmRQb2ludC50b1N0cmluZygpKTtcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ0xvY2FsIG9mZmVyOlxcbicgKyBsb2NhbE9mZmVyLnNkcCk7XG5cbiAgICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHwgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fCAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlID4gMCkge1xuICAgICAgICAgIHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5kaXNwb3NlUGVlckNvbm5lY3Rpb24oKTtcblxuICAgICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIG51bGwsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbmRQb2ludC5wdWJsaXNoKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubmFtZSwgdG9rZW4sIGxvY2FsT2ZmZXIsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZmFpbHVyZUNvdW50LnZhbHVlKTtcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnN0IHtzdGF0dXN9ID0gcmVzcG9uc2U7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubWFwUHVibGlzaFN0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5hcHBseVB1Ymxpc2hTdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgPSBudWxsO1xuXG4gICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAgICAgICAnWyVzXSBQdWJsaXNoIGZhaWxlZCB3aXRoIHN0YXR1cyBbJXNdJyxcbiAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgICBzdGF0dXNcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge3N0cmVhbSwgcnRjQ29uZmlndXJhdGlvbiwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlfSA9IHJlc3BvbnNlO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlID0gc3RyZWFtO1xuXG4gICAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAnWyVzXSBQdWJsaXNoIGNvbXBsZXRlZCBbJXNdIFslal0gWyVqXSBbJWpdIFslal0nLFxuICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsXG4gICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSxcbiAgICAgICAgICBjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UsXG4gICAgICAgICAgY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0Lm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuYXBwbHlQdWJsaXNoU3RhdHVzKHN0YXR1cyk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlSdGNDb25maWd1cmF0aW9uKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSwgcnRjQ29uZmlndXJhdGlvbiBhcyBSVENDb25maWd1cmF0aW9uKVxuICAgICAgICAgIC50aGVuKHBlZXJDb25uZWN0aW9uID0+IHtcbiAgICAgICAgICAgIGxldCBzdWJtaXRDYW5kaWRhdGVzVGltZW91dDogdW5kZWZpbmVkIHwgbnVtYmVyO1xuICAgICAgICAgICAgbGV0IGNhbmNlbERpc2NvdmVyeSA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IGRpc2NvdmVyeUNvbXBsZXRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlczogUlRDSWNlQ2FuZGlkYXRlW10gPSBbXTtcblxuICAgICAgICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlID0gcGVlckNvbm5lY3Rpb247XG5cbiAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQubWVkaWFTdHJlYW0udmFsdWUgYXMgTWVkaWFTdHJlYW0pO1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNhbmRpZGF0ZSA9IChlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3BlZXJDb25uZWN0aW9uQ29udGV4dC5wZWVyQ29ubmVjdGlvbi52YWx1ZSAhPT0gcGVlckNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoY2FuY2VsRGlzY292ZXJ5KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKCFTREsuc2VuZExvY2FsQ2FuZGlkYXRlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGlmIChlLmNhbmRpZGF0ZSAmJiBlLmNhbmRpZGF0ZS5jYW5kaWRhdGUpIHtcbiAgICAgICAgICAgICAgICBjYW5kaWRhdGVzLnB1c2goZS5jYW5kaWRhdGUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRpc2NvdmVyeUNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAoIXN1Ym1pdENhbmRpZGF0ZXNUaW1lb3V0KSB7XG4gICAgICAgICAgICAgICAgc3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbS52YWx1ZSAhPT0gc3RyZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgaWYgKGNhbmNlbERpc2NvdmVyeSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlPy5hZGRJY2VDYW5kaWRhdGVzKHN0cmVhbSwgY2FuZGlkYXRlcywgZGlzY292ZXJ5Q29tcGxldGVkKVxuICAgICAgICAgICAgICAgICAgICAudGhlbigoe3N0YXR1cywgb3B0aW9uc30pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW0udmFsdWUgIT09IHN0cmVhbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb24udmFsdWUgIT09IHBlZXJDb25uZWN0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwQWRkSWNlQ2FuZGlkYXRlc1N0YXR1c1RvUHVibGlzaGVyU3RhdHVzKHN0YXR1cyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIud2FybignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzIHdpdGggcmVhc29uIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuZXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIGZhaWxlZCB0byBhZGQgSUNFIGNhbmRpZGF0ZXMgd2l0aCByZWFzb24gWyVzXScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmluY2x1ZGVzKCdjYW5jZWwnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsRGlzY292ZXJ5ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBBZGRlZCBJQ0UgY2FuZGlkYXRlcyB3aXRoIHJlYXNvbiBbJXNdIGFuZCBvcHRpb25zIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBzdGF0dXMsIG9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignWyVzXSBGYWlsZWQgdG8gYWRkIElDRSBjYW5kaWRhdGVzJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgZSk7XG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IFB1Ymxpc2hlclN0YXRlLkNvbm5lY3Rpb25FcnJvcjtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5VW5oYW5kbGVkRXJyb3IoKTtcblxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLl9oYW5kbGVTdHJlYW1GYWlsdXJlKClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdbJXNdIEZhaWxlZCBoYW5kbGluZyBzdHJlYW0gZmFpbHVyZSBhZnRlciBwZWVyIGNvbm5lY3Rpb24gZmFpbGVkIHRvIGFkZCBJQ0UgY2FuZGlkYXRlcycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSwgaWNlQ2FuZGlkYXRlQWNjdW11bGF0aW9uSW50ZXJ2YWwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwZWVyQ29ubmVjdGlvbi5vbmljZWNvbm5lY3Rpb25zdGF0ZWNoYW5nZSA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtLnZhbHVlICE9PSBzdHJlYW0pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uLnZhbHVlICE9PSBwZWVyQ29ubmVjdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNvbnN0IHJldHJ5Q2FsbGJhY2sgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gSWYgd2Ugc3RvcCBub3JtYWxseSB0aGUgcGVlciBjb25uZWN0aW9uIGlzIHVucmVnaXN0ZXJlZCBmaXJzdC5cbiAgICAgICAgICAgICAgICAvLyBUaHVzIGFueXRpbWUgd2Ugc2VlIGEgY2xvc2VkIHBlZXIgY29ubmVjdGlvbiB0aGF0IGlzIHN0aWxsIHZhbGlkLCBpdCBpcyBhbiBlcnJvci5cbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuQ29ubmVjdGlvbkVycm9yO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQucHVibGlzaGluZy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQubG9hZGluZy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gdGhpcy5faGFuZGxlU3RyZWFtRmFpbHVyZSgpXG4gICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAnWyVzXSBGYWlsZWQgaGFuZGxpbmcgc3RyZWFtIGZhaWx1cmUgYWZ0ZXIgcGVlciBjb25uZWN0aW9uIHN0b3BwZWQgd2l0aCBzdGF0ZSBbJXNdJyxcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLFxuICAgICAgICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICBlXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzd2l0Y2ggKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NoZWNraW5nJzpcbiAgICAgICAgICAgICAgICBjYXNlICdjb21wbGV0ZWQnOlxuICAgICAgICAgICAgICAgIGNhc2UgJ2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnbmV3JzpcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNhc2UgJ2Rpc2Nvbm5lY3RlZCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIElDRSBjb25uZWN0aW9uIHN0YXRlIGNoYW5nZWQgdG8gWyVzXSwgdHJ5aW5nIHRvIHJlY29ubmVjdCcsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uLCByZXRyeUNhbGxiYWNrKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2Nsb3NlZCc6XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBJQ0UgY29ubmVjdGlvbiBzdGF0ZSBjaGFuZ2VkIHRvIFslc10sIHJldHJ5aW5nIHRvIGNvbm5lY3QnLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuXG4gICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSBhcyBuZXZlcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihyZXNvbHZlID0+IHtcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgb2ZmZXIgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNldFJlbW90ZURlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uLnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gRmFpbGVkIHRvIHNldCBsb2NhbCBkZXNjcmlwdGlvbiBbJWpdIHdpdGggbWVzc2FnZSBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgc2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZS5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1slc10gU2V0IHJlbW90ZSBTRFAgYW5zd2VyIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24/LnNkcCk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldFJlbW90ZURlc2NyaXB0aW9uKGNyZWF0ZUFuc3dlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgcmVtb3RlIFNEUCBvZmZlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgY3JlYXRlT2ZmZXJEZXNjcmlwdGlvblJlc3BvbnNlLnNlc3Npb25EZXNjcmlwdGlvbi5zZHApO1xuXG4gICAgICAgICAgICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5zZXRSZW1vdGVEZXNjcmlwdGlvbihjcmVhdGVPZmZlckRlc2NyaXB0aW9uUmVzcG9uc2Uuc2Vzc2lvbkRlc2NyaXB0aW9uKVxuICAgICAgICAgICAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uIFslal0gd2l0aCBtZXNzYWdlIFslc10nLCB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkLCBjcmVhdGVBbnN3ZXJEZXNjcmlwdGlvblJlc3BvbnNlPy5zZXNzaW9uRGVzY3JpcHRpb24sIGUubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uY3JlYXRlQW5zd2VyKHtcbiAgICAgICAgICAgICAgICAgICAgb2ZmZXJUb1JlY2VpdmVBdWRpbzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIG9mZmVyVG9SZWNlaXZlVmlkZW86IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGFuc3dlciA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9sb2dnZXIuaW5mbygnWyVzXSBTZXQgbG9jYWwgU0RQIGFuc3dlciBbJXNdJywgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdHJlYW1JZCwgYW5zd2VyLnNkcCk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdGhpcy5fcHVibGlzaGVyQ29udGV4dC5lbmRQb2ludC52YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgaWYgKCFlbmRQb2ludCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBzZXQgcmVtb3RlIGRlc2NyaXB0aW9uLCBFbmRQb2ludCBpcyBub3Qgc2V0Jyk7XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBlbmRQb2ludC5zZXRSZW1vdGVEZXNjcmlwdGlvbihzdHJlYW0sIGFuc3dlcik7XG4gICAgICAgICAgICAgICAgfSkudGhlbigoe3N0YXR1cywgc2Vzc2lvbkRlc2NyaXB0aW9ufSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSA9IHRoaXMubWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXMpO1xuXG4gICAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmFwcGx5U2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXMoc3RhdHVzKTtcblxuICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIFNldCBsb2NhbCBTRFAgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbj8uc2RwKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oc2Vzc2lvbkRlc2NyaXB0aW9uIGFzIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbilcbiAgICAgICAgICAgICAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdbJXNdIEZhaWxlZCB0byBzZXQgbG9jYWwgZGVzY3JpcHRpb24gWyVqXSB3aXRoIG1lc3NhZ2UgWyVzXScsIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RyZWFtSWQsIHNlc3Npb25EZXNjcmlwdGlvbiwgZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGxpc3Rlbk9uU3RyZWFtU2V0dXAuc3VjY2Vzcyh0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0cmVhbUlkKTtcblxuICAgICAgICAgICAgICBpZiAodGhpcy5fcHVibGlzaGVyQ29udGV4dC5zdGF0ZS52YWx1ZSAhPT0gUHVibGlzaGVyU3RhdGUuU3RhcnRpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcblxuICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnB1Ymxpc2hpbmcudmFsdWUgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIGNvbnN0IHJ0Y1B1Ymxpc2hNb25pdG9yID0gbmV3IFJ0Y1B1Ymxpc2hNb25pdG9yKFxuICAgICAgICAgICAgICAgIHBlZXJDb25uZWN0aW9uLFxuICAgICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZW5kUG9pbnQudmFsdWU/LnJvdW5kVHJpcFRpbWUgPyB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmVuZFBvaW50LnZhbHVlLnJvdW5kVHJpcFRpbWUgLyA0IDogMCxcbiAgICAgICAgICAgICAgICBTREsuYXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IhLmlzRm9yZWdyb3VuZFxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuZGlzcG9zYWJsZXMuYWRkKHJ0Y1B1Ymxpc2hNb25pdG9yKTtcblxuICAgICAgICAgICAgICBjb25zdCBpZ25vcmVkID0gcnRjUHVibGlzaE1vbml0b3IucnRjU3RhdGlzdGljLnN1YnNjcmliZShzdGF0aXN0aWNzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnJ0Y1N0YXRpc3RpY3MudmFsdWUgPSBzdGF0aXN0aWNzO1xuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBhcHBseVJ0Y0NvbmZpZ3VyYXRpb24oXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbjogSVBlZXJDb25uZWN0aW9uIHwgbnVsbCxcbiAgICBydGNDb25maWd1cmF0aW9uOiBSVENDb25maWd1cmF0aW9uKTogUHJvbWlzZTxJUGVlckNvbm5lY3Rpb24+IHtcbiAgICBpZiAoIW9wdGlvbmFsUGVlckNvbm5lY3Rpb24pIHtcbiAgICAgIHJ0Y0NvbmZpZ3VyYXRpb24gPSBSdGNDb25maWd1cmF0aW9uTWFuYWdlci50cnVuY2F0ZUljZVNlcnZlcnMocnRjQ29uZmlndXJhdGlvbik7XG5cbiAgICAgIHJldHVybiBTREsucGVlckNvbm5lY3Rpb25GYWN0b3J5LnZhbHVlLmNyZWF0ZVBlZXJDb25uZWN0aW9uKHJ0Y0NvbmZpZ3VyYXRpb24pO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld1J0Y0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi5vcHRpb25hbFBlZXJDb25uZWN0aW9uLmdldENvbmZpZ3VyYXRpb24oKSxcbiAgICAgIC4uLnJ0Y0NvbmZpZ3VyYXRpb25cbiAgICB9O1xuXG4gICAgb3B0aW9uYWxQZWVyQ29ubmVjdGlvbi5zZXRDb25maWd1cmF0aW9uKG5ld1J0Y0NvbmZpZ3VyYXRpb24pO1xuXG4gICAgcmV0dXJuIG9wdGlvbmFsUGVlckNvbm5lY3Rpb247XG4gIH1cblxuICBwcml2YXRlIHJlY29ubmVjdFBlZXJDb25uZWN0aW9uKHBlZXJDb25uZWN0aW9uOiBJUGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2s6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBpZiAocGVlckNvbm5lY3Rpb24uaWNlQ29ubmVjdGlvblN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWUgPSBQdWJsaXNoZXJTdGF0ZS5SZWNvbm5lY3Rpbmc7XG5cbiAgICBpZiAodGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPCBTREsubWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyB8fCAhU0RLLmF1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMrKztcblxuICAgICAgY29uc3QgaXNDbGllbnRPZmZlckZsb3cgPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbj8udHlwZSA9PT0gJ29mZmVyJztcblxuICAgICAgaWYgKEZlYXR1cmVFbmFibGVtZW50LmNsaWVudE9mZmVyRGlzYWJsZWQgfHxcbiAgICAgICAgIXBlZXJDb25uZWN0aW9uLnN1cHBvcnRzU2V0Q29uZmlndXJhdGlvbiB8fFxuICAgICAgICAhcGVlckNvbm5lY3Rpb24uc3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICFpc0NsaWVudE9mZmVyRmxvd1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCA9IEdsb2JhbFNjb3BlLnZhbHVlLnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICB9LCBzb2Z0UmVzdGFydEludGVydmFsKTtcblxuICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LmRpc3Bvc2FibGVzLmFkZChuZXcgRGlzcG9zYWJsZSgoKSA9PiBHbG9iYWxTY29wZS52YWx1ZS5jbGVhclRpbWVvdXQocmVjb25uZWN0UGVlckNvbm5lY3Rpb25UaW1lb3V0KSkpO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbG9nZ2VyLmluZm8oJ1JlY29ubmVjdGluZyBwZWVyIGNvbm5lY3Rpb24gYnkgcmVzdGFydGluZyBJQ0UnKTtcblxuICAgICAgY29uc3QgY3VycmVudExvY2FsRGVzY3JpcHRpb24gPSBwZWVyQ29ubmVjdGlvbi5jdXJyZW50TG9jYWxEZXNjcmlwdGlvbjtcbiAgICAgIGNvbnN0IGlnbm9yZWQgPSBwZWVyQ29ubmVjdGlvbi5jcmVhdGVPZmZlcih7aWNlUmVzdGFydDogdHJ1ZX0pLnRoZW4ob2ZmZXIgPT4ge1xuICAgICAgICByZXR1cm4gcGVlckNvbm5lY3Rpb24uc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcikudGhlbigoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHBlZXJDb25uZWN0aW9uLnNldExvY2FsRGVzY3JpcHRpb24oY3VycmVudExvY2FsRGVzY3JpcHRpb24pXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGlmIChwZWVyQ29ubmVjdGlvbi5pY2VDb25uZWN0aW9uU3RhdGUgPT09ICdkaXNjb25uZWN0ZWQnIHx8IHBlZXJDb25uZWN0aW9uLmljZUNvbm5lY3Rpb25TdGF0ZSA9PT0gJ2ZhaWxlZCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZWNvbm5lY3RQZWVyQ29ubmVjdGlvblRpbWVvdXQgPSBHbG9iYWxTY29wZS52YWx1ZS5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMucmVjb25uZWN0UGVlckNvbm5lY3Rpb24ocGVlckNvbm5lY3Rpb24sIHJldHJ5Q2FsbGJhY2spO1xuICAgICAgICAgICAgICAgIH0sIHNvZnRSZXN0YXJ0SW50ZXJ2YWwpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fcHVibGlzaGVyQ29udGV4dC5kaXNwb3NhYmxlcy5hZGQobmV3IERpc3Bvc2FibGUoKCkgPT4gR2xvYmFsU2NvcGUudmFsdWUuY2xlYXJUaW1lb3V0KHJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCkpKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXJDb250ZXh0LnN0YXRlLnZhbHVlID0gUHVibGlzaGVyU3RhdGUuUHVibGlzaGluZztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcignRmFpbGVkIHRvIHJlY29ubmVjdCBwZWVyIGNvbm5lY3Rpb24nLCBlKTtcbiAgICAgICAgICB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyA9IDA7XG4gICAgICAgICAgcmV0cnlDYWxsYmFjaygpO1xuICAgICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKCdGYWlsZWQgdG8gcmVjb25uZWN0IHBlZXIgY29ubmVjdGlvbiBhZnRlciBbJXNdIGF0dGVtcHRzLCBwZXJmb3JtaW5nIGZ1bGwgcmVjb3ZlcnknLCB0aGlzLl9wZWVyQ29ubmVjdGlvbkNvbnRleHQucGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyk7XG4gICAgdGhpcy5fcGVlckNvbm5lY3Rpb25Db250ZXh0LnBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMgPSAwO1xuICAgIHJldHJ5Q2FsbGJhY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IFNldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzKTogUHVibGlzaGVyU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgICBjYXNlICdvayc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5TdGFydGluZztcbiAgICAgIGNhc2UgJ3VuYXV0aG9yaXplZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5VbmF1dGhvcml6ZWQ7XG4gICAgICBjYXNlICdub3QtZm91bmQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuTm90Rm91bmQ7XG4gICAgICBjYXNlICdjYXBhY2l0eSc6XG4gICAgICBjYXNlICdyYXRlLWxpbWl0ZWQnOlxuICAgICAgY2FzZSAndGltZW91dCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5SZWNvdmVyaW5nO1xuICAgICAgY2FzZSAnZmFpbGVkJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLkVycm9yO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXNzZXJ0VW5yZWFjaGFibGUoc3RhdHVzKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyhzdGF0dXM6IEFkZEljZUNhbmRpZGF0ZXNTdGF0dXMpOiBQdWJsaXNoZXJTdGF0ZSB7XG4gICAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICAgIGNhc2UgJ29rJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuX3B1Ymxpc2hlckNvbnRleHQuc3RhdGUudmFsdWU7XG4gICAgICBjYXNlICd1bmF1dGhvcml6ZWQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuVW5hdXRob3JpemVkO1xuICAgICAgY2FzZSAnbm90LWZvdW5kJzpcbiAgICAgICAgcmV0dXJuIFB1Ymxpc2hlclN0YXRlLk5vdEZvdW5kO1xuICAgICAgY2FzZSAnY2FwYWNpdHknOlxuICAgICAgY2FzZSAncmF0ZS1saW1pdGVkJzpcbiAgICAgIGNhc2UgJ3RpbWVvdXQnOlxuICAgICAgICByZXR1cm4gUHVibGlzaGVyU3RhdGUuUmVjb3ZlcmluZztcbiAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgIHJldHVybiBQdWJsaXNoZXJTdGF0ZS5FcnJvcjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGFzc2VydFVucmVhY2hhYmxlKHN0YXR1cyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5kZWNsYXJlIGNvbnN0IF9fQlVJTERfVkVSU0lPTl9fOiBzdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlcnNpb25NYW5hZ2VyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgX2RlZmF1bHRWZXJzaW9uID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gIHN0YXRpYyBnZXQgc2RrVmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gX19CVUlMRF9WRVJTSU9OX187XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRWZXJzaW9uO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuaW1wb3J0IFRlbGVtZXRyeVNlcnZpY2UgZnJvbSAnLi9UZWxlbWV0cnlTZXJ2aWNlJztcbmltcG9ydCBUZWxlbWV0cnlDb25maWd1cmF0aW9uIGZyb20gJy4vVGVsZW1ldHJ5Q29uZmlndXJhdGlvbic7XG5pbXBvcnQge0lBcHBlbmRlcn0gZnJvbSAnLi4vbG9nZ2VyL0lBcHBlbmRlcic7XG5pbXBvcnQge0xvZ2dpbmdMZXZlbH0gZnJvbSAnLi4vbG9nZ2VyL0xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUFwcGVuZGVyIGltcGxlbWVudHMgSUFwcGVuZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGVuYW5jeTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXNzaW9uSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhyZXNob2xkOiBMb2dnaW5nTGV2ZWw7XG5cbiAgY29uc3RydWN0b3IodGVsZW1ldHJ5Q29uZmlndXJhdGlvbjogVGVsZW1ldHJ5Q29uZmlndXJhdGlvbikge1xuICAgIHRoaXMuX3RlbmFuY3kgPSB0ZWxlbWV0cnlDb25maWd1cmF0aW9uLnRlbmFuY3k7XG4gICAgdGhpcy5fc2Vzc2lvbklkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5zZXNzaW9uSWQ7XG4gICAgdGhpcy5fdGhyZXNob2xkID0gdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50aHJlc2hvbGQ7XG4gICAgdGhpcy5fdGVsZW1ldHJ5U2VydmljZSA9IG5ldyBUZWxlbWV0cnlTZXJ2aWNlKHRlbGVtZXRyeUNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgbG9nKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmIChsb2dMZXZlbCA8IHRoaXMuX3RocmVzaG9sZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RlbGVtZXRyeVNlcnZpY2UucHVzaChsb2dMZXZlbCwgbWVzc2FnZSwgY2F0ZWdvcnksIGRhdGUpO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5pbXBvcnQgR2xvYmFsU2NvcGUgZnJvbSAnLi4vZ2xvYmFsU2NvcGUvR2xvYmFsU2NvcGUnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IExvZ2dlckRlZmF1bHRzIGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJEZWZhdWx0cyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24ge1xuICBwcml2YXRlIF91cmwgPSAnaHR0cHM6Ly90ZWxlbWV0cnkucGhlbml4cnRzLmNvbS90ZWxlbWV0cnkvbG9ncyc7XG4gIHByaXZhdGUgX3RlbmFuY3k6IHN0cmluZyA9ICctJztcbiAgcHJpdmF0ZSBfc2Vzc2lvbklkOiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX2Vudmlyb25tZW50OiBzdHJpbmcgPSAnLSc7XG4gIHByaXZhdGUgX3BhZ2VMb2FkVGltZTogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfdGhyZXNob2xkID0gTG9nZ2VyRGVmYXVsdHMuZGVmYXVsdFRlbGVtZXRyeUxvZ2dpbmdMZXZlbDtcblxuICBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybDtcbiAgfVxuXG4gIHNldCB1cmwodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0ZWxlbWV0cnlVcmwgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuVVJMKHVybCk7XG5cbiAgICB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgPSB0ZWxlbWV0cnlVcmwucGF0aG5hbWUgKyAnL2xvZ3MnO1xuXG4gICAgdGhpcy5fdXJsID0gdGVsZW1ldHJ5VXJsLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXQgZW52aXJvbm1lbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gIH1cblxuICBnZXQgdGVuYW5jeSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl90ZW5hbmN5O1xuICB9XG5cbiAgc2V0IHRlbmFuY3kodGVuYW5jeTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdGVuYW5jeSA9IHRlbmFuY3k7XG4gIH1cblxuICBnZXQgc2Vzc2lvbklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgfVxuXG4gIHNldCBzZXNzaW9uSWQoc2Vzc2lvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gIH1cblxuICBnZXQgcGFnZUxvYWRUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3BhZ2VMb2FkVGltZTtcbiAgfVxuXG4gIHNldCBwYWdlTG9hZFRpbWUocGFnZUxvYWRUaW1lOiBudW1iZXIpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCk6IExvZ2dpbmdMZXZlbCB7XG4gICAgcmV0dXJuIHRoaXMuX3RocmVzaG9sZDtcbiAgfVxuXG4gIHNldCB0aHJlc2hvbGQodGhyZXNob2xkOiBMb2dnaW5nTGV2ZWwpIHtcbiAgICB0aGlzLl90aHJlc2hvbGQgPSB0aHJlc2hvbGQ7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBHbG9iYWxTY29wZSBmcm9tICcuLi9nbG9iYWxTY29wZS9HbG9iYWxTY29wZSc7XG5pbXBvcnQgTnVtYmVycyBmcm9tICcuLi9sYW5nL051bWJlcnMnO1xuaW1wb3J0IHtMb2dnaW5nTGV2ZWx9IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXInO1xuaW1wb3J0IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb24gZnJvbSAnLi9UZWxlbWV0cnlDb25maWd1cmF0aW9uJztcbmltcG9ydCBWZXJzaW9uTWFuYWdlciBmcm9tICcuLi9zZGsvdmVyc2lvbi9WZXJzaW9uTWFuYWdlcic7XG5cbmNvbnN0IHJlcXVlc3RTaXplTGltaXQgPSA4MTkyO1xuXG5pbnRlcmZhY2UgSUxvZ0l0ZW0ge1xuICB0aW1lc3RhbXA6IHN0cmluZztcbiAgdGVuYW5jeTogc3RyaW5nO1xuICBsZXZlbDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBzdHJpbmc7XG4gIGVudmlyb25tZW50OiBzdHJpbmc7XG4gIGZ1bGxRdWFsaWZpZWROYW1lOiBzdHJpbmc7XG4gIHJ1bnRpbWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGVsZW1ldHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb246IFRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG5cbiAgcHJpdmF0ZSBfbG9nczogQXJyYXk8SUxvZ0l0ZW0+ID0gW107XG4gIHByaXZhdGUgX2lzU2VuZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9kb21haW4gPSAnJztcblxuICBjb25zdHJ1Y3Rvcih0ZWxlbWV0cnlDb25maWd1cmF0aW9uOiBUZWxlbWV0cnlDb25maWd1cmF0aW9uKSB7XG4gICAgdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbiA9IHRlbGVtZXRyeUNvbmZpZ3VyYXRpb247XG4gICAgdGhpcy5nZXRMb2NhdGlvbkhvc3RuYW1lRnJvbUdsb2JhbFNjb3BlKCkudGhlbihsb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIHRoaXMuX2RvbWFpbiA9IGxvY2F0aW9uSG9zdG5hbWU7XG4gICAgfSk7XG4gIH1cblxuICBwdXNoKGxvZ0xldmVsOiBMb2dnaW5nTGV2ZWwsIG1lc3NhZ2U6IHN0cmluZywgY2F0ZWdvcnk6IHN0cmluZywgdGltZXN0YW1wOiBEYXRlKTogdm9pZCB7XG4gICAgY29uc3QgcnVudGltZSA9ICh0aW1lc3RhbXAudmFsdWVPZigpIC0gdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi5wYWdlTG9hZFRpbWUpIC8gMTAwMDtcbiAgICBjb25zdCBsb2dSZWNvcmQgPSB7XG4gICAgICB0aW1lc3RhbXA6IHRpbWVzdGFtcC50b0lTT1N0cmluZygpLFxuICAgICAgdGVuYW5jeTogdGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi50ZW5hbmN5LFxuICAgICAgbGV2ZWw6IExvZ2dpbmdMZXZlbFtsb2dMZXZlbF0sXG4gICAgICBjYXRlZ29yeSxcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBzZXNzaW9uSWQ6IHRoaXMuX3RlbGVtZXRyeUNvbmZpZ3VyYXRpb24uc2Vzc2lvbklkLFxuICAgICAgdmVyc2lvbjogVmVyc2lvbk1hbmFnZXIuc2RrVmVyc2lvbixcbiAgICAgIGVudmlyb25tZW50OiB0aGlzLl90ZWxlbWV0cnlDb25maWd1cmF0aW9uLmVudmlyb25tZW50LFxuICAgICAgZnVsbFF1YWxpZmllZE5hbWU6IHRoaXMuX2RvbWFpbixcbiAgICAgIHJ1bnRpbWVcbiAgICB9O1xuXG4gICAgaWYgKGxvZ0xldmVsIDwgTG9nZ2luZ0xldmVsLkVycm9yKSB7XG4gICAgICB0aGlzLl9sb2dzLnB1c2gobG9nUmVjb3JkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbG9ncy51bnNoaWZ0KGxvZ1JlY29yZCk7XG4gICAgfVxuXG4gICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYXRpb25Ib3N0bmFtZUZyb21HbG9iYWxTY29wZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lID0+IHtcbiAgICAgIGNvbnN0IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uID0gR2xvYmFsU2NvcGUuc3Vic2NyaWJlKGdsb2JhbFNjb3BlID0+IHtcbiAgICAgICAgaWYgKCFnbG9iYWxTY29wZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdmVMb2NhdGlvbkhvc3RuYW1lKGdsb2JhbFNjb3BlLmxvY2F0aW9uSG9zdG5hbWUpO1xuICAgICAgICBnbG9iYWxTY29wZS5zZXRUaW1lb3V0KCgpID0+IGdsb2JhbFNjb3BlU3Vic2NyaXB0aW9uLmRpc3Bvc2UoKSwgMCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3MobG9nTWVzc2FnZXM6IEFycmF5PElMb2dJdGVtPik6IFByb21pc2U8UmVzcG9uc2UgfCB2b2lkPiB7XG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgR2xvYmFsU2NvcGUudmFsdWUuRm9ybURhdGEoKTtcblxuICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbkJvZHknLCBKU09OLnN0cmluZ2lmeSh7cmVjb3JkczogbG9nTWVzc2FnZXN9KSk7XG5cbiAgICByZXR1cm4gYXdhaXQgR2xvYmFsU2NvcGUudmFsdWUuZmV0Y2godGhpcy5fdGVsZW1ldHJ5Q29uZmlndXJhdGlvbi51cmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogZm9ybURhdGFcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2VuZExvZ3NJZkFibGUoKTogUHJvbWlzZTxSZXNwb25zZSB8IHZvaWQ+IHtcbiAgICBpZiAodGhpcy5fbG9ncy5sZW5ndGggPD0gMCB8fCB0aGlzLl9pc1NlbmRpbmcgfHwgIUdsb2JhbFNjb3BlLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IG51bWJlck9mTG9nc1RvU2VuZCA9IDA7XG4gICAgbGV0IHNpemVPZkxvZ3NUb1NlbmQgPSAwO1xuXG4gICAgdGhpcy5faXNTZW5kaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGdldEl0ZW1TaXplID0gKGl0ZW06IG51bWJlciB8IHN0cmluZykgPT4gdHlwZW9mIGl0ZW0gPT09ICdudW1iZXInID8gTnVtYmVycy5jb3VudE51bWJlckxlbmd0aChpdGVtKSA6IGl0ZW0ubGVuZ3RoO1xuICAgIGNvbnN0IGdldExvZ1NpemUgPSAobG9nOiBJTG9nSXRlbSk6IG51bWJlciA9PiBPYmplY3QudmFsdWVzKGxvZylcbiAgICAgIC5yZWR1Y2UoKHN1bSwgaXRlbSkgPT4gc3VtICsgKGl0ZW0gPyBnZXRJdGVtU2l6ZShpdGVtKSA6IDApLCAwKTtcblxuICAgIHdoaWxlICh0aGlzLl9sb2dzLmxlbmd0aCA+IG51bWJlck9mTG9nc1RvU2VuZCAmJiBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkgKyBzaXplT2ZMb2dzVG9TZW5kIDwgcmVxdWVzdFNpemVMaW1pdCkge1xuICAgICAgc2l6ZU9mTG9nc1RvU2VuZCArPSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSk7XG4gICAgICBudW1iZXJPZkxvZ3NUb1NlbmQrKztcbiAgICB9XG5cbiAgICBpZiAoIW51bWJlck9mTG9nc1RvU2VuZCkge1xuICAgICAgdGhpcy5fbG9nc1tudW1iZXJPZkxvZ3NUb1NlbmRdLm1lc3NhZ2UgPSB0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0ubWVzc2FnZS5zdWJzdHJpbmcoMCxcbiAgICAgICAgZ2V0TG9nU2l6ZSh0aGlzLl9sb2dzW251bWJlck9mTG9nc1RvU2VuZF0pICsgKHJlcXVlc3RTaXplTGltaXQgLSBnZXRMb2dTaXplKHRoaXMuX2xvZ3NbbnVtYmVyT2ZMb2dzVG9TZW5kXSkpKTtcbiAgICAgIG51bWJlck9mTG9nc1RvU2VuZCA9IDE7XG4gICAgfVxuXG4gICAgY29uc3QgbG9nTWVzc2FnZXMgPSB0aGlzLl9sb2dzLnNsaWNlKDAsIG51bWJlck9mTG9nc1RvU2VuZCk7XG5cbiAgICB0aGlzLl9sb2dzID0gdGhpcy5fbG9ncy5zbGljZShudW1iZXJPZkxvZ3NUb1NlbmQpO1xuXG4gICAgcmV0dXJuIHRoaXMuc2VuZExvZ3MobG9nTWVzc2FnZXMpLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgdGhpcy5faXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgICAgIGNvbnN0IGlnbm9yZWQgPSB0aGlzLnNlbmRMb2dzSWZBYmxlKCk7XG5cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB0aGlzLl9pc1NlbmRpbmcgPSBmYWxzZTtcblxuICAgICAgY29uc3QgaWdub3JlZCA9IHRoaXMuc2VuZExvZ3NJZkFibGUoKTtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjYgUGVyZm9ybSBDb250ZW50IFNlcnZpY2VzIExpbWl0ZWQuIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRHVyYXRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZHVyYXRpb246IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkdXJhdGlvbiA9IDApIHtcbiAgICB0aGlzLl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuICB9XG5cbiAgdG9Jc29TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5fZHVyYXRpb24gPT09IDApIHtcbiAgICAgIHJldHVybiAnUDBTJztcbiAgICB9XG5cbiAgICBjb25zdCBpc05lZ2F0aXZlID0gdGhpcy5fZHVyYXRpb24gPCAwO1xuICAgIGNvbnN0IGR1cmF0aW9uID0gaXNOZWdhdGl2ZSA/IE1hdGguYWJzKHRoaXMuX2R1cmF0aW9uKSA6IHRoaXMuX2R1cmF0aW9uO1xuICAgIGxldCBvZmZzZXQgPSBNYXRoLmZsb29yKGR1cmF0aW9uKTtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBvZmZzZXQgJSAxMDAwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyAxMDAwKTtcblxuICAgIGNvbnN0IHNlY29uZHMgPSBvZmZzZXQgJSA2MDtcblxuICAgIG9mZnNldCA9IE1hdGguZmxvb3Iob2Zmc2V0IC8gNjApO1xuXG4gICAgY29uc3QgbWludXRlcyA9IG9mZnNldCAlIDYwO1xuXG4gICAgb2Zmc2V0ID0gTWF0aC5mbG9vcihvZmZzZXQgLyA2MCk7XG5cbiAgICBjb25zdCBob3VycyA9IG9mZnNldCAlIDI0O1xuICAgIGNvbnN0IHBhcnRzID0gWydQVCddO1xuXG4gICAgaWYgKGlzTmVnYXRpdmUpIHtcbiAgICAgIHBhcnRzLnVuc2hpZnQoJy0nKTtcbiAgICB9XG5cbiAgICBpZiAoaG91cnMpIHtcbiAgICAgIHBhcnRzLnB1c2goaG91cnMgKyAnSCcpO1xuICAgIH1cblxuICAgIGlmIChtaW51dGVzKSB7XG4gICAgICBwYXJ0cy5wdXNoKG1pbnV0ZXMgKyAnTScpO1xuICAgIH1cblxuICAgIGlmIChzZWNvbmRzIHx8IG1pbGxpc2Vjb25kcykge1xuICAgICAgcGFydHMucHVzaChTdHJpbmcoc2Vjb25kcykpO1xuXG4gICAgICBpZiAobWlsbGlzZWNvbmRzKSB7XG4gICAgICAgIHBhcnRzLnB1c2goJy4nICsgdGhpcy5wYWRTdGFydChtaWxsaXNlY29uZHMudG9TdHJpbmcoKSwgMywgJzAnKSk7XG4gICAgICB9XG5cbiAgICAgIHBhcnRzLnB1c2goJ1MnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gIH1cblxuICBwYWRTdGFydChpdGVtOiBzdHJpbmcsIHRhcmdldExlbmd0aDogbnVtYmVyLCBwYWRTdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGFyZ2V0TGVuZ3RoID0gdGFyZ2V0TGVuZ3RoID4+IDA7XG4gICAgcGFkU3RyaW5nID0gU3RyaW5nKCh0eXBlb2YgcGFkU3RyaW5nICE9PSAndW5kZWZpbmVkJyA/IHBhZFN0cmluZyA6ICcgJykpO1xuXG4gICAgaWYgKGl0ZW0ubGVuZ3RoID4gdGFyZ2V0TGVuZ3RoKSB7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9XG5cbiAgICB0YXJnZXRMZW5ndGggPSB0YXJnZXRMZW5ndGggLSBpdGVtLmxlbmd0aDtcblxuICAgIGlmICh0YXJnZXRMZW5ndGggPiBwYWRTdHJpbmcubGVuZ3RoKSB7XG4gICAgICBwYWRTdHJpbmcgKz0gcGFkU3RyaW5nLnJlcGVhdCh0YXJnZXRMZW5ndGggLyBwYWRTdHJpbmcubGVuZ3RoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFkU3RyaW5nLnNsaWNlKDAsIHRhcmdldExlbmd0aCkgKyBpdGVtO1xuICB9XG59IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNiBQZXJmb3JtIENvbnRlbnQgU2VydmljZXMgTGltaXRlZC4gQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeS4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqL1xuXG5jb25zdCBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDIwMDA7XG5jb25zdCBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDE7XG5jb25zdCBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCA9IDMwMDAwMDtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxCYWNrb2ZmIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IF9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21heEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBiYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtaW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCxcbiAgICBtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kOiBudW1iZXIgPSBkZWZhdWx0TWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZFxuICApIHtcbiAgICB0aGlzLl9iYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9taW5CYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgICB0aGlzLl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kID0gbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZDtcbiAgfVxuXG4gIGdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQoZmFpbHVyZUNvdW50OiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IGJhY2tvZmZJbnRlcnZhbEluU2Vjb25kcyA9IHRoaXMuX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQgLyAxMDAwO1xuICAgIGNvbnN0IHJhbmRvbWl6YXRpb24gPSAwLjUgKyAoMC41ICogTWF0aC5yYW5kb20oKSk7IC8vIFswLjUsIDEpXG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmID0gTWF0aC5wb3coYmFja29mZkludGVydmFsSW5TZWNvbmRzLCBmYWlsdXJlQ291bnQgLSAyKTsgLy8gIFsxLzQgMS8yIDEgMiA0IDggLi4uLl1cbiAgICBjb25zdCBleHBvbmVudGlhbEJhY2tvZmZXaXRoUmFuZG9taXphdGlvbiA9IE1hdGguZmxvb3IoZXhwb25lbnRpYWxCYWNrb2ZmKSAqIHJhbmRvbWl6YXRpb247XG4gICAgY29uc3QgZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kID0gTWF0aC5jZWlsKE1hdGgubWF4KGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uICogMTAwMCwgdGhpcy5fbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCkpO1xuXG4gICAgcmV0dXJuIE1hdGgubWluKGV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uSW5NaWxsaXNlY29uZCwgdGhpcy5fbWF4QmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCk7XG4gIH1cbn0iLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCB7U3RyZWFtU2V0dXBMaXN0ZW5lcn0gZnJvbSAnLi4vZG9tL1N0cmVhbVNldHVwTGlzdGVuZXInO1xuaW1wb3J0IHtJTG9nZ2VyfSBmcm9tICcuLi9sb2dnZXIvTG9nZ2VySW50ZXJmYWNlJztcbmltcG9ydCBMb2dnZXJGYWN0b3J5IGZyb20gJy4uL2xvZ2dlci9Mb2dnZXJGYWN0b3J5JztcbmltcG9ydCBOZXR3b3JrTW9uaXRvciBmcm9tICcuLi9kb20vTmV0d29ya01vbml0b3InO1xuaW1wb3J0IFNESyBmcm9tICcuLi9zZGsvU0RLJztcbmltcG9ydCBNZXRyaWNzVHlwZSBmcm9tICcuLi9tZXRyaWNzL01ldHJpY3NUeXBlJztcbmltcG9ydCBEdXJhdGlvbnMgZnJvbSAnLi4vdGltZS9EdXJhdGlvbic7XG5pbXBvcnQgSURpc3Bvc2FibGUgZnJvbSAnLi4vbGFuZy9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgRGlzcG9zYWJsZUxpc3QgZnJvbSAnLi4vbGFuZy9EaXNwb3NhYmxlTGlzdCc7XG5pbXBvcnQgTWV0cmljc1NlcnZpY2UgZnJvbSAnLi4vbWV0cmljcy9NZXRyaWNzU2VydmljZSc7XG5cbmludGVyZmFjZSBJTmV0d29ya1N0YXRpc3RpY3Mge1xuICBydHQ/OiBudW1iZXI7XG4gIGVmZmVjdGl2ZVR5cGU/OiBzdHJpbmc7XG4gIGRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5PzogbnVtYmVyO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXNzaW9uVGVsZW1ldHJ5IGltcGxlbWVudHMgSURpc3Bvc2FibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IF9sb2dnZXI6IElMb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcignU2Vzc2lvblRlbGVtZXRyeScpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2U7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yID0gU0RLLmFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uZXR3b3JrTW9uaXRvcjogTmV0d29ya01vbml0b3IgPSBuZXcgTmV0d29ya01vbml0b3IoKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFnZUxvYWRUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rpc3Bvc2FibGVzOiBEaXNwb3NhYmxlTGlzdCA9IG5ldyBEaXNwb3NhYmxlTGlzdCgpO1xuICBwcml2YXRlIF9sYXN0TmV0d29ya1N0YXRpc3RpY3M6IElOZXR3b3JrU3RhdGlzdGljcyA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHBhZ2VMb2FkVGltZTogbnVtYmVyLCBtZXRyaWNzU2VydmljZTogTWV0cmljc1NlcnZpY2UpIHtcbiAgICB0aGlzLl9wYWdlTG9hZFRpbWUgPSBwYWdlTG9hZFRpbWU7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yKTtcbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZSA9IG1ldHJpY3NTZXJ2aWNlO1xuXG4gICAgaWYgKCF0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uVGVsZW1ldHJ5IEZhaWxlZDogTm8gYXBwbGljYXRpb24gbW9uaXRvciBpbml0aWFsaXplZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX25ldHdvcmtNb25pdG9yLmlzU3VwcG9ydGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX2FwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yLmlzRm9yZWdyb3VuZC5zdWJzY3JpYmUoaXNGb3JlZ3JvdW5kID0+IHtcbiAgICAgIHRoaXMucmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQpO1xuICAgIH0pKTtcbiAgICB0aGlzLl9kaXNwb3NhYmxlcy5hZGQodGhpcy5fbmV0d29ya01vbml0b3IucnR0LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrUlRUVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmVmZmVjdGl2ZVR5cGUuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKHZhbHVlKTtcbiAgICB9KSk7XG4gICAgdGhpcy5fZGlzcG9zYWJsZXMuYWRkKHRoaXMuX25ldHdvcmtNb25pdG9yLmRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5LnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5yZWNvcmROZXR3b3JrRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHlVcGRhdGUodmFsdWUpO1xuICAgIH0pKTtcbiAgfVxuXG4gIGxpc3Rlbk9uU3RyZWFtU2V0dXAoKTogU3RyZWFtU2V0dXBMaXN0ZW5lciB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW1TZXR1cExpc3RlbmVyKHRoaXMuX3BhZ2VMb2FkVGltZSk7XG4gIH1cblxuICBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX2Rpc3Bvc2FibGVzLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkRm9yZWdyb3VuZENoYW5nZShpc0ZvcmVncm91bmQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHRpbWVTaW5jZUxhc3RDaGFuZ2UgPSB0aGlzLl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvcj8uZ2V0VGltZVNpbmNlTGFzdENoYW5nZSgpO1xuXG4gICAgaWYgKCF0aW1lU2luY2VMYXN0Q2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBpc0ZvcmVncm91bmQgPyBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkZvcmVncm91bmQgOiBNZXRyaWNzVHlwZS5BcHBsaWNhdGlvbkJhY2tncm91bmQsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogdGltZVNpbmNlTGFzdENoYW5nZX1cbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ0FwcGxpY2F0aW9uIGhhcyBnb25lIGludG8gdGhlIFslc10gYWZ0ZXIgWyVzXSBtcycsXG4gICAgICBpc0ZvcmVncm91bmQgPyAnZm9yZWdyb3VuZCcgOiAnYmFja2dyb3VuZCcsXG4gICAgICBuZXcgRHVyYXRpb25zKHRpbWVTaW5jZUxhc3RDaGFuZ2UpLnRvSXNvU3RyaW5nKCksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjb3JkTmV0d29ya1JUVFVwZGF0ZShuZXdSVFQ6IG51bWJlcik6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgY29uc3Qgb2xkUnR0ID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLnJ0dDtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5ydHQgPSBuZXdSVFQ7XG5cbiAgICB0aGlzLl9tZXRyaWNzU2VydmljZS5wdXNoKHtcbiAgICAgIG1ldHJpY1R5cGU6IE1ldHJpY3NUeXBlLlJvdW5kVHJpcFRpbWUsXG4gICAgICBydW50aW1lOiAobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKSAvIDEwMDAsXG4gICAgICB2YWx1ZToge3VpbnQ2NDogbmV3UlRUfSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZFJ0dCA/IHt1aW50NjQ6IG9sZFJ0dH0gOiB1bmRlZmluZWQsXG4gICAgICByZXNvdXJjZTogJ25hdmlnYXRvcidcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBSVFQgY2hhbmdlZCB0byBbJXNdIGZyb20gWyVzXScsXG4gICAgICBuZXcgRHVyYXRpb25zKG5vdyAtIHRoaXMuX3BhZ2VMb2FkVGltZSkudG9Jc29TdHJpbmcoKSxcbiAgICAgIG5ld1JUVCxcbiAgICAgIG9sZFJ0dFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtUeXBlQ2hhbmdlVXBkYXRlKG5ld05ldHdvcmtUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IG9sZE5ldHdvcmtUeXBlID0gdGhpcy5fbGFzdE5ldHdvcmtTdGF0aXN0aWNzLmVmZmVjdGl2ZVR5cGU7XG5cbiAgICB0aGlzLl9sYXN0TmV0d29ya1N0YXRpc3RpY3MuZWZmZWN0aXZlVHlwZSA9IG5ld05ldHdvcmtUeXBlO1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5OZXR3b3JrVHlwZSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7c3RyaW5nOiBuZXdOZXR3b3JrVHlwZX0sXG4gICAgICBwcmV2aW91c1ZhbHVlOiBvbGROZXR3b3JrVHlwZSA/IHtzdHJpbmc6IG9sZE5ldHdvcmtUeXBlfSA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy5fbG9nZ2VyLmluZm8oXG4gICAgICAnWyVzXSBOZXR3b3JrIGVmZmVjdGl2ZSB0eXBlIGhhcyBjaGFuZ2VkIHRvIFslc10gZnJvbSBbJXNdJyxcbiAgICAgIG5ldyBEdXJhdGlvbnMobm93IC0gdGhpcy5fcGFnZUxvYWRUaW1lKS50b0lzb1N0cmluZygpLFxuICAgICAgbmV3TmV0d29ya1R5cGUsXG4gICAgICBvbGROZXR3b3JrVHlwZVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY29yZE5ldHdvcmtEb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eVVwZGF0ZShuZXdDYXBhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBvbGRDYXBhY2l0eSA9IHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eTtcblxuICAgIHRoaXMuX2xhc3ROZXR3b3JrU3RhdGlzdGljcy5kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSA9IG5ld0NhcGFjaXR5O1xuXG4gICAgdGhpcy5fbWV0cmljc1NlcnZpY2UucHVzaCh7XG4gICAgICBtZXRyaWNUeXBlOiBNZXRyaWNzVHlwZS5Eb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSxcbiAgICAgIHJ1bnRpbWU6IChub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpIC8gMTAwMCxcbiAgICAgIHZhbHVlOiB7ZmxvYXQ6IG5ld0NhcGFjaXR5fSxcbiAgICAgIHByZXZpb3VzVmFsdWU6IG9sZENhcGFjaXR5ID8ge2Zsb2F0OiBvbGRDYXBhY2l0eX0gOiB1bmRlZmluZWRcbiAgICB9KTtcblxuICAgIHRoaXMuX2xvZ2dlci5pbmZvKFxuICAgICAgJ1slc10gTmV0d29yayBkb3dubGluayB0aHJvdWdocHV0IGNhcGFjaXR5IGNoYW5nZWQgdG8gWyVzXSBmcm9tIFslc10nLFxuICAgICAgbmV3IER1cmF0aW9ucyhub3cgLSB0aGlzLl9wYWdlTG9hZFRpbWUpLnRvSXNvU3RyaW5nKCksXG4gICAgICBuZXdDYXBhY2l0eSxcbiAgICAgIG9sZENhcGFjaXR5XG4gICAgKTtcbiAgfVxufSIsImZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KHIsIGEpIHtcbiAgKG51bGwgPT0gYSB8fCBhID4gci5sZW5ndGgpICYmIChhID0gci5sZW5ndGgpO1xuICBmb3IgKHZhciBlID0gMCwgbiA9IEFycmF5KGEpOyBlIDwgYTsgZSsrKSBuW2VdID0gcltlXTtcbiAgcmV0dXJuIG47XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheUxpa2VUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2FycmF5V2l0aEhvbGVzKHIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkocikpIHJldHVybiByO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXJyYXlXaXRoSG9sZXMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfYXJyYXlXaXRob3V0SG9sZXMocikge1xuICBpZiAoQXJyYXkuaXNBcnJheShyKSkgcmV0dXJuIGFycmF5TGlrZVRvQXJyYXkocik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hcnJheVdpdGhvdXRIb2xlcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoZSkge1xuICBpZiAodm9pZCAwID09PSBlKSB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7XG4gIHJldHVybiBlO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfYXNzZXJ0VGhpc0luaXRpYWxpemVkLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKG4sIHQsIGUsIHIsIG8sIGEsIGMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgaSA9IG5bYV0oYyksXG4gICAgICB1ID0gaS52YWx1ZTtcbiAgfSBjYXRjaCAobikge1xuICAgIHJldHVybiB2b2lkIGUobik7XG4gIH1cbiAgaS5kb25lID8gdCh1KSA6IFByb21pc2UucmVzb2x2ZSh1KS50aGVuKHIsIG8pO1xufVxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3Iobikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciB0ID0gdGhpcyxcbiAgICAgIGUgPSBhcmd1bWVudHM7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyLCBvKSB7XG4gICAgICB2YXIgYSA9IG4uYXBwbHkodCwgZSk7XG4gICAgICBmdW5jdGlvbiBfbmV4dChuKSB7XG4gICAgICAgIGFzeW5jR2VuZXJhdG9yU3RlcChhLCByLCBvLCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgbik7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBfdGhyb3cobikge1xuICAgICAgICBhc3luY0dlbmVyYXRvclN0ZXAoYSwgciwgbywgX25leHQsIF90aHJvdywgXCJ0aHJvd1wiLCBuKTtcbiAgICAgIH1cbiAgICAgIF9uZXh0KHZvaWQgMCk7XG4gICAgfSk7XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9hc3luY1RvR2VuZXJhdG9yLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGEsIG4pIHtcbiAgaWYgKCEoYSBpbnN0YW5jZW9mIG4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY2xhc3NDYWxsQ2hlY2ssIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gcmVxdWlyZShcIi4vaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0LmpzXCIpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfY29uc3RydWN0KHQsIGUsIHIpIHtcbiAgaWYgKGlzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSByZXR1cm4gUmVmbGVjdC5jb25zdHJ1Y3QuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgdmFyIG8gPSBbbnVsbF07XG4gIG8ucHVzaC5hcHBseShvLCBlKTtcbiAgdmFyIHAgPSBuZXcgKHQuYmluZC5hcHBseSh0LCBvKSkoKTtcbiAgcmV0dXJuIHIgJiYgc2V0UHJvdG90eXBlT2YocCwgci5wcm90b3R5cGUpLCBwO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfY29uc3RydWN0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXMoZSwgcikge1xuICBmb3IgKHZhciB0ID0gMDsgdCA8IHIubGVuZ3RoOyB0KyspIHtcbiAgICB2YXIgbyA9IHJbdF07XG4gICAgby5lbnVtZXJhYmxlID0gby5lbnVtZXJhYmxlIHx8ICExLCBvLmNvbmZpZ3VyYWJsZSA9ICEwLCBcInZhbHVlXCIgaW4gbyAmJiAoby53cml0YWJsZSA9ICEwKSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsIHRvUHJvcGVydHlLZXkoby5rZXkpLCBvKTtcbiAgfVxufVxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKGUsIHIsIHQpIHtcbiAgcmV0dXJuIHIgJiYgX2RlZmluZVByb3BlcnRpZXMoZS5wcm90b3R5cGUsIHIpLCB0ICYmIF9kZWZpbmVQcm9wZXJ0aWVzKGUsIHQpLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwgXCJwcm90b3R5cGVcIiwge1xuICAgIHdyaXRhYmxlOiAhMVxuICB9KSwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2NyZWF0ZUNsYXNzLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHRvUHJvcGVydHlLZXkgPSByZXF1aXJlKFwiLi90b1Byb3BlcnR5S2V5LmpzXCIpO1xuZnVuY3Rpb24gX2RlZmluZVByb3BlcnR5KGUsIHIsIHQpIHtcbiAgcmV0dXJuIChyID0gdG9Qcm9wZXJ0eUtleShyKSkgaW4gZSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLCByLCB7XG4gICAgdmFsdWU6IHQsXG4gICAgZW51bWVyYWJsZTogITAsXG4gICAgY29uZmlndXJhYmxlOiAhMCxcbiAgICB3cml0YWJsZTogITBcbiAgfSkgOiBlW3JdID0gdCwgZTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2RlZmluZVByb3BlcnR5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2dldFByb3RvdHlwZU9mKHQpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9nZXRQcm90b3R5cGVPZih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2dldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vc2V0UHJvdG90eXBlT2YuanNcIik7XG5mdW5jdGlvbiBfaW5oZXJpdHModCwgZSkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9IHR5cGVvZiBlICYmIG51bGwgIT09IGUpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgdC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGUgJiYgZS5wcm90b3R5cGUsIHtcbiAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgdmFsdWU6IHQsXG4gICAgICB3cml0YWJsZTogITAsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfVxuICB9KSwgT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIFwicHJvdG90eXBlXCIsIHtcbiAgICB3cml0YWJsZTogITFcbiAgfSksIGUgJiYgc2V0UHJvdG90eXBlT2YodCwgZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pbmhlcml0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKHQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gLTEgIT09IEZ1bmN0aW9uLnRvU3RyaW5nLmNhbGwodCkuaW5kZXhPZihcIltuYXRpdmUgY29kZV1cIik7XG4gIH0gY2F0Y2ggKG4pIHtcbiAgICByZXR1cm4gXCJmdW5jdGlvblwiID09IHR5cGVvZiB0O1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZUZ1bmN0aW9uLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgdCA9ICFCb29sZWFuLnByb3RvdHlwZS52YWx1ZU9mLmNhbGwoUmVmbGVjdC5jb25zdHJ1Y3QoQm9vbGVhbiwgW10sIGZ1bmN0aW9uICgpIHt9KSk7XG4gIH0gY2F0Y2ggKHQpIHt9XG4gIHJldHVybiAobW9kdWxlLmV4cG9ydHMgPSBfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0ID0gZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgICByZXR1cm4gISF0O1xuICB9LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMpKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJmdW5jdGlvbiBfaXRlcmFibGVUb0FycmF5KHIpIHtcbiAgaWYgKFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiBudWxsICE9IHJbU3ltYm9sLml0ZXJhdG9yXSB8fCBudWxsICE9IHJbXCJAQGl0ZXJhdG9yXCJdKSByZXR1cm4gQXJyYXkuZnJvbShyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChyLCBsKSB7XG4gIHZhciB0ID0gbnVsbCA9PSByID8gbnVsbCA6IFwidW5kZWZpbmVkXCIgIT0gdHlwZW9mIFN5bWJvbCAmJiByW1N5bWJvbC5pdGVyYXRvcl0gfHwgcltcIkBAaXRlcmF0b3JcIl07XG4gIGlmIChudWxsICE9IHQpIHtcbiAgICB2YXIgZSxcbiAgICAgIG4sXG4gICAgICBpLFxuICAgICAgdSxcbiAgICAgIGEgPSBbXSxcbiAgICAgIGYgPSAhMCxcbiAgICAgIG8gPSAhMTtcbiAgICB0cnkge1xuICAgICAgaWYgKGkgPSAodCA9IHQuY2FsbChyKSkubmV4dCwgMCA9PT0gbCkge1xuICAgICAgICBpZiAoT2JqZWN0KHQpICE9PSB0KSByZXR1cm47XG4gICAgICAgIGYgPSAhMTtcbiAgICAgIH0gZWxzZSBmb3IgKDsgIShmID0gKGUgPSBpLmNhbGwodCkpLmRvbmUpICYmIChhLnB1c2goZS52YWx1ZSksIGEubGVuZ3RoICE9PSBsKTsgZiA9ICEwKTtcbiAgICB9IGNhdGNoIChyKSB7XG4gICAgICBvID0gITAsIG4gPSByO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoIWYgJiYgbnVsbCAhPSB0W1wicmV0dXJuXCJdICYmICh1ID0gdFtcInJldHVyblwiXSgpLCBPYmplY3QodSkgIT09IHUpKSByZXR1cm47XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobykgdGhyb3cgbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX2l0ZXJhYmxlVG9BcnJheUxpbWl0LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX25vbkl0ZXJhYmxlUmVzdCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9ub25JdGVyYWJsZVNwcmVhZCgpIHtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLlxcbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC5cIik7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9ub25JdGVyYWJsZVNwcmVhZCwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBvYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlID0gcmVxdWlyZShcIi4vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZS5qc1wiKTtcbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhlLCB0KSB7XG4gIGlmIChudWxsID09IGUpIHJldHVybiB7fTtcbiAgdmFyIG8sXG4gICAgcixcbiAgICBpID0gb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShlLCB0KTtcbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgbiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZSk7XG4gICAgZm9yIChyID0gMDsgciA8IG4ubGVuZ3RoOyByKyspIG8gPSBuW3JdLCB0LmluZGV4T2YobykgPj0gMCB8fCB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKGUsIG8pICYmIChpW29dID0gZVtvXSk7XG4gIH1cbiAgcmV0dXJuIGk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHIsIGUpIHtcbiAgaWYgKG51bGwgPT0gcikgcmV0dXJuIHt9O1xuICB2YXIgdCA9IHt9O1xuICBmb3IgKHZhciBuIGluIHIpIGlmICh7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHIsIG4pKSB7XG4gICAgaWYgKGUuaW5kZXhPZihuKSA+PSAwKSBjb250aW51ZTtcbiAgICB0W25dID0gcltuXTtcbiAgfVxuICByZXR1cm4gdDtcbn1cbm1vZHVsZS5leHBvcnRzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgX3R5cGVvZiA9IHJlcXVpcmUoXCIuL3R5cGVvZi5qc1wiKVtcImRlZmF1bHRcIl07XG52YXIgYXNzZXJ0VGhpc0luaXRpYWxpemVkID0gcmVxdWlyZShcIi4vYXNzZXJ0VGhpc0luaXRpYWxpemVkLmpzXCIpO1xuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odCwgZSkge1xuICBpZiAoZSAmJiAoXCJvYmplY3RcIiA9PSBfdHlwZW9mKGUpIHx8IFwiZnVuY3Rpb25cIiA9PSB0eXBlb2YgZSkpIHJldHVybiBlO1xuICBpZiAodm9pZCAwICE9PSBlKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRGVyaXZlZCBjb25zdHJ1Y3RvcnMgbWF5IG9ubHkgcmV0dXJuIG9iamVjdCBvciB1bmRlZmluZWRcIik7XG4gIHJldHVybiBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwiZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKHQsIGUpIHtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiAodCwgZSkge1xuICAgIHJldHVybiB0Ll9fcHJvdG9fXyA9IGUsIHQ7XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF9zZXRQcm90b3R5cGVPZih0LCBlKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3NldFByb3RvdHlwZU9mLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGFycmF5V2l0aEhvbGVzID0gcmVxdWlyZShcIi4vYXJyYXlXaXRoSG9sZXMuanNcIik7XG52YXIgaXRlcmFibGVUb0FycmF5TGltaXQgPSByZXF1aXJlKFwiLi9pdGVyYWJsZVRvQXJyYXlMaW1pdC5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlUmVzdCA9IHJlcXVpcmUoXCIuL25vbkl0ZXJhYmxlUmVzdC5qc1wiKTtcbmZ1bmN0aW9uIF9zbGljZWRUb0FycmF5KHIsIGUpIHtcbiAgcmV0dXJuIGFycmF5V2l0aEhvbGVzKHIpIHx8IGl0ZXJhYmxlVG9BcnJheUxpbWl0KHIsIGUpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIsIGUpIHx8IG5vbkl0ZXJhYmxlUmVzdCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBfc2xpY2VkVG9BcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBhcnJheVdpdGhvdXRIb2xlcyA9IHJlcXVpcmUoXCIuL2FycmF5V2l0aG91dEhvbGVzLmpzXCIpO1xudmFyIGl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2l0ZXJhYmxlVG9BcnJheS5qc1wiKTtcbnZhciB1bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSA9IHJlcXVpcmUoXCIuL3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LmpzXCIpO1xudmFyIG5vbkl0ZXJhYmxlU3ByZWFkID0gcmVxdWlyZShcIi4vbm9uSXRlcmFibGVTcHJlYWQuanNcIik7XG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkocikge1xuICByZXR1cm4gYXJyYXlXaXRob3V0SG9sZXMocikgfHwgaXRlcmFibGVUb0FycmF5KHIpIHx8IHVuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5KHIpIHx8IG5vbkl0ZXJhYmxlU3ByZWFkKCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90b0NvbnN1bWFibGVBcnJheSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsInZhciBfdHlwZW9mID0gcmVxdWlyZShcIi4vdHlwZW9mLmpzXCIpW1wiZGVmYXVsdFwiXTtcbmZ1bmN0aW9uIHRvUHJpbWl0aXZlKHQsIHIpIHtcbiAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZih0KSB8fCAhdCkgcmV0dXJuIHQ7XG4gIHZhciBlID0gdFtTeW1ib2wudG9QcmltaXRpdmVdO1xuICBpZiAodm9pZCAwICE9PSBlKSB7XG4gICAgdmFyIGkgPSBlLmNhbGwodCwgciB8fCBcImRlZmF1bHRcIik7XG4gICAgaWYgKFwib2JqZWN0XCIgIT0gX3R5cGVvZihpKSkgcmV0dXJuIGk7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkBAdG9QcmltaXRpdmUgbXVzdCByZXR1cm4gYSBwcmltaXRpdmUgdmFsdWUuXCIpO1xuICB9XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gciA/IFN0cmluZyA6IE51bWJlcikodCk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IHRvUHJpbWl0aXZlLCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIF90eXBlb2YgPSByZXF1aXJlKFwiLi90eXBlb2YuanNcIilbXCJkZWZhdWx0XCJdO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZShcIi4vdG9QcmltaXRpdmUuanNcIik7XG5mdW5jdGlvbiB0b1Byb3BlcnR5S2V5KHQpIHtcbiAgdmFyIGkgPSB0b1ByaW1pdGl2ZSh0LCBcInN0cmluZ1wiKTtcbiAgcmV0dXJuIFwic3ltYm9sXCIgPT0gX3R5cGVvZihpKSA/IGkgOiBpICsgXCJcIjtcbn1cbm1vZHVsZS5leHBvcnRzID0gdG9Qcm9wZXJ0eUtleSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsImZ1bmN0aW9uIF90eXBlb2Yobykge1xuICBcIkBiYWJlbC9oZWxwZXJzIC0gdHlwZW9mXCI7XG5cbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIFN5bWJvbCAmJiBcInN5bWJvbFwiID09IHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPyBmdW5jdGlvbiAobykge1xuICAgIHJldHVybiB0eXBlb2YgbztcbiAgfSA6IGZ1bmN0aW9uIChvKSB7XG4gICAgcmV0dXJuIG8gJiYgXCJmdW5jdGlvblwiID09IHR5cGVvZiBTeW1ib2wgJiYgby5jb25zdHJ1Y3RvciA9PT0gU3ltYm9sICYmIG8gIT09IFN5bWJvbC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG87XG4gIH0sIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cyksIF90eXBlb2Yobyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IF90eXBlb2YsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlLCBtb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0czsiLCJ2YXIgYXJyYXlMaWtlVG9BcnJheSA9IHJlcXVpcmUoXCIuL2FycmF5TGlrZVRvQXJyYXkuanNcIik7XG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkociwgYSkge1xuICBpZiAocikge1xuICAgIGlmIChcInN0cmluZ1wiID09IHR5cGVvZiByKSByZXR1cm4gYXJyYXlMaWtlVG9BcnJheShyLCBhKTtcbiAgICB2YXIgdCA9IHt9LnRvU3RyaW5nLmNhbGwocikuc2xpY2UoOCwgLTEpO1xuICAgIHJldHVybiBcIk9iamVjdFwiID09PSB0ICYmIHIuY29uc3RydWN0b3IgJiYgKHQgPSByLmNvbnN0cnVjdG9yLm5hbWUpLCBcIk1hcFwiID09PSB0IHx8IFwiU2V0XCIgPT09IHQgPyBBcnJheS5mcm9tKHIpIDogXCJBcmd1bWVudHNcIiA9PT0gdCB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdCh0KSA/IGFycmF5TGlrZVRvQXJyYXkociwgYSkgOiB2b2lkIDA7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5LCBtb2R1bGUuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZSwgbW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHM7IiwidmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZShcIi4vZ2V0UHJvdG90eXBlT2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiKTtcbnZhciBpc05hdGl2ZUZ1bmN0aW9uID0gcmVxdWlyZShcIi4vaXNOYXRpdmVGdW5jdGlvbi5qc1wiKTtcbnZhciBjb25zdHJ1Y3QgPSByZXF1aXJlKFwiLi9jb25zdHJ1Y3QuanNcIik7XG5mdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKHQpIHtcbiAgdmFyIHIgPSBcImZ1bmN0aW9uXCIgPT0gdHlwZW9mIE1hcCA/IG5ldyBNYXAoKSA6IHZvaWQgMDtcbiAgcmV0dXJuIChtb2R1bGUuZXhwb3J0cyA9IF93cmFwTmF0aXZlU3VwZXIgPSBmdW5jdGlvbiBfd3JhcE5hdGl2ZVN1cGVyKHQpIHtcbiAgICBpZiAobnVsbCA9PT0gdCB8fCAhaXNOYXRpdmVGdW5jdGlvbih0KSkgcmV0dXJuIHQ7XG4gICAgaWYgKFwiZnVuY3Rpb25cIiAhPSB0eXBlb2YgdCkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uXCIpO1xuICAgIGlmICh2b2lkIDAgIT09IHIpIHtcbiAgICAgIGlmIChyLmhhcyh0KSkgcmV0dXJuIHIuZ2V0KHQpO1xuICAgICAgci5zZXQodCwgV3JhcHBlcik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gY29uc3RydWN0KHQsIGFyZ3VtZW50cywgZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpO1xuICAgIH1cbiAgICByZXR1cm4gV3JhcHBlci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHQucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogV3JhcHBlcixcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgICAgfVxuICAgIH0pLCBzZXRQcm90b3R5cGVPZihXcmFwcGVyLCB0KTtcbiAgfSwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzKSwgX3dyYXBOYXRpdmVTdXBlcih0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gX3dyYXBOYXRpdmVTdXBlciwgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWUsIG1vZHVsZS5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IG1vZHVsZS5leHBvcnRzOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI2IFBlcmZvcm0gQ29udGVudCBTZXJ2aWNlcyBMaW1pdGVkLiBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5LiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICovXG5cbmltcG9ydCBTREsgZnJvbSAnLi4vU0RLJztcbmltcG9ydCBQdWJsaXNoZXJzIGZyb20gJy4vUHVibGlzaGVycyc7XG5pbXBvcnQgUHVibGlzaGVyU3RhdGUgZnJvbSAnLi9QdWJsaXNoZXJTdGF0ZSc7XG5cbmV4cG9ydCB7XG4gIFNESyxcbiAgUHVibGlzaGVycyxcbiAgUHVibGlzaGVyU3RhdGVcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgU0RLLFxuICBQdWJsaXNoZXJzLFxuICBQdWJsaXNoZXJTdGF0ZVxufTsiXSwibmFtZXMiOlsiR2xvYmFsU2NvcGUiLCJEaXNwb3NhYmxlIiwiRGlzcG9zYWJsZUxpc3QiLCJTdWJqZWN0IiwiUmVhZE9ubHlTdWJqZWN0IiwidmlzaWJpbGl0eUNoYW5nZUV2ZW50IiwiQXBwbGljYXRpb25BY3Rpdml0eU1vbml0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJfZGVmaW5lUHJvcGVydHkiLCJEYXRlIiwibm93IiwiX2lzRm9yZWdyb3VuZCIsIl9yZWFkT25seUlzRm9yZWdyb3VuZCIsImluaXRpYWxpemUiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJnZXQiLCJ2YWx1ZSIsImdldFRpbWVTaW5jZUxhc3RDaGFuZ2UiLCJfdGltZU9mTGFzdFRhYkZvY3VzQ2hhbmdlIiwiZ2V0TGFzdEJhY2tncm91bmREdXJhdGlvbiIsIl9sYXN0QmFja2dyb3VuZER1cmF0aW9uIiwiZGlzcG9zZSIsIl9kaXNwb3NhYmxlcyIsIl90aGlzIiwiYmFja2dyb3VuZEVudHJ5VGltZSIsImhhbmRsZVZpc2liaWxpdHlDaGFuZ2UiLCJpc05vd0ZvcmVncm91bmQiLCJkb2N1bWVudElzSGlkZGVuIiwidXNlRXZlbnRDYXB0dXJlUGhhc2UiLCJhZGREb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJhZGQiLCJyZW1vdmVEb2N1bWVudEV2ZW50TGlzdGVuZXIiLCJkZWZhdWx0IiwiQnJvd3NlckRldGVjdG9yIiwiX2Jyb3dzZXJOYW1lQW5kVmVyc2lvbiIsIl9icm93c2VyTmFtZSIsIl9icm93c2VyTWFqb3JWZXJzaW9uIiwiX2lzQW5kcm9pZCIsIl9pc0Nocm9tZTY5IiwiX2lzQ2hyb21lNzAiLCJfaXNDaHJvbWU3MSIsIl9pc0Nocm9tZTcyIiwiX2lzQ2hyb21lNzQiLCJfaXNDaHJvbWU3NSIsIl9pc0Nocm9tZTc2IiwiX2lzQ2hyb21lNzciLCJpc01vYmlsZSIsIl9pc01vYmlsZSIsInBhcnNlQnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYnJvd3Nlck5hbWVBbmRWZXJzaW9uIiwibWF0Y2giLCJfYnJvd3Nlck5hbWVBbmRWZXJzaW9uUmVnZXgiLCJwYXJzZUJyb3dzZXJOYW1lQW5kVmVyc2lvbkZvcklFIiwicGFyc2VCcm93c2VyTmFtZSIsImJyb3dzZXJOYW1lTGlzdCIsInNwbGl0IiwicGFyc2VCcm93c2VyTWFqb3JWZXJzaW9uIiwiYnJvd3NlclZlcnNpb25MaXN0IiwiZnVsbFZlcnNpb24iLCJOdW1iZXIiLCJtc2llIiwiaW5kZXhPZiIsImNvbmNhdCIsInBhcnNlSW50Iiwic3Vic3RyaW5nIiwidHJpZGVudCIsInZlcnNpb24iLCJfQnJvd3NlckRldGVjdG9yIiwidGVzdCIsIl9uYXZpZ2F0b3IiLCJfbmF2aWdhdG9yMiIsImluY2x1ZGVzIiwiTG9nZ2VyRGVmYXVsdHMiLCJMb2dnaW5nTGV2ZWxNYXBwaW5nIiwiVGVsZW1ldHJ5RGVmYXVsdCIsIlRlbGVtZXRyeUxldmVsTWFwcGluZyIsIkNvbmZpZ3VyYXRpb25QYXJhbWV0ZXJSZWFkZXIiLCJnZXRTdHJpbmdWYWx1ZSIsIm5hbWUiLCJyZWFkQ29uZmlndXJhdGlvblBhcmFtZXRlclZhbHVlIiwicmVhZENvbmZpZ3VyYXRpb25QYXJhbWV0ZXJVUklWYWx1ZSIsImRlZmF1bHRTdHJpbmdWYWx1ZSIsImdldEJvb2xlYW5WYWx1ZSIsInZhbHVlRnJvbVVyaSIsImRlZmF1bHRCb29sZWFuVmFsdWUiLCJjb252ZXJ0VGVsZW1ldHJ5TGV2ZWxUb1RlbGVtZXRyeUxldmVsVHlwZSIsImRlZmF1bHRUZWxlbWV0cnlMZXZlbCIsImNvbnZlcnRMb2dnaW5nTGV2ZWxUb0xvZ2dpbmdMZXZlbFR5cGUiLCJkZWZhdWx0TG9nZ2luZ0xldmVsIiwiZGVmYXVsdENvbnNvbGVMb2dnaW5nTGV2ZWwiLCJkZWZhdWx0VGVsZW1ldHJ5TG9nZ2luZ0xldmVsIiwibWV0YVZhbHVlIiwiZG9jdW1lbnRRdWVyeVNlbGVjdG9yIiwiZ2V0QXR0cmlidXRlIiwidmFsdWVVUklQYXJhbWV0ZXJOYW1lIiwiVVJMU2VhcmNoUGFyYW1zIiwibG9jYXRpb25TZWFyY2giLCJ1bmRlZmluZWQiLCJGZWF0dXJlRW5hYmxlbWVudCIsIlNESyIsIkdhcmJhZ2VDb2xsZWN0b3JNYW5hZ2VyIiwiRXJyb3IiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uIiwic2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiaXNGb3JjZUNocm9tZUdhcmJhZ2VDb2xsZWN0aW9uU3VwcG9ydGVkIiwiZm9yY2VDaHJvbWVHYXJiYWdlQ29sbGVjdGlvbiIsImlzUXVldWVNaWNyb3Rhc2tTdXBwb3J0ZWQiLCJxdWV1ZU1pY3JvdGFzayIsIm92ZXJsb2FkTWVtb3J5VG9JbnZva2VHYXJiYWdlQ29sbGVjdGlvbiIsImJpbmQiLCJzZXRUaW1lb3V0IiwiaW1nIiwiZG9jdW1lbnRDcmVhdGVFbGVtZW50Iiwic3JjIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiQmxvYiIsIkFycmF5QnVmZmVyIiwib25lcnJvciIsInJldm9rZU9iamVjdFVSTCIsIk5ldHdvcmtNb25pdG9yIiwibmF2aWdhdG9yQ29ubmVjdGlvbiIsImlzU3VwcG9ydGVkIiwic2V0dXBOZXR3b3JrQ2hhbmdlTGlzdGVuZXJzIiwidXBkYXRlU3RhdGlzdGljcyIsIl9pc1N1cHBvcnRlZCIsIl9ydHQiLCJfZWZmZWN0aXZlVHlwZSIsIl9kb3dubGlua1Rocm91Z2hwdXRDYXBhY2l0eSIsImdldERvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwiX3JlZiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTIiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmEzIiwiZG93bmxpbmsiLCJkb3dubGlua01heCIsImdldEVmZmVjdGl2ZVR5cGUiLCJfcmVmMiIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTQiLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE1IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hNiIsImVmZmVjdGl2ZVR5cGUiLCJ0eXBlIiwiZ2V0Um91bmRUcmlwVGltZSIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTciLCJfR2xvYmFsU2NvcGUkdmFsdWUkbmE4IiwicnR0IiwiX0dsb2JhbFNjb3BlJHZhbHVlJG5hOSIsImxpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIl9HbG9iYWxTY29wZSR2YWx1ZSRuYTAiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiTWV0cmljc1R5cGUiLCJNZXRyaWNUeXBlIiwiRHVyYXRpb25zIiwiTG9nZ2VyRmFjdG9yeSIsIlN0cmVhbVNldHVwTGlzdGVuZXIiLCJwYWdlTG9hZFRpbWUiLCJnZXRMb2dnZXIiLCJtZXRyaWNzU2VydmljZSIsIl9zdGFydFRpbWUiLCJfcGFnZUxvYWRUaW1lIiwic3VjY2VzcyIsInN0cmVhbUlkIiwicmVjb3JkU3RyZWFtTWV0cmljIiwiU2V0dXBDb21wbGV0ZWQiLCJmYWlsIiwiU2V0dXBGYWlsZWQiLCJtZXRyaWNUeXBlIiwiX21ldHJpY1N1Ym1pdHRlZCIsInNldHVwVGltZSIsIm1ldHJpY05hbWUiLCJnZXROYW1lIiwicHVzaCIsInJ1bnRpbWUiLCJ1aW50NjQiLCJfbG9nZ2VyIiwiaW5mbyIsInRvSXNvU3RyaW5nIiwiRWRnZVRva2VuIiwiZWRnZUF1dGhUb2tlblByZWZpeCIsIkVkZ2VBdXRoUGFyc2VyIiwicGFyc2VUb2tlbiIsInRva2VuIiwiaXNFbmNvZGVkRWRnZVRva2VuVmFsaWQiLCJlcnJvciIsImRlY29kZWRUb2tlbiIsImF0b2IiLCJzdWJzdHIiLCJsZW5ndGgiLCJlZGdlVG9rZW4iLCJKU09OIiwicGFyc2UiLCJlIiwic3RhcnRzV2l0aCIsIl9lZGdlVG9rZW4kdG9rZW4iLCJfZWRnZVRva2VuJHRva2VuMiIsIl9hcHBsaWNhdGlvbklkIiwiYXBwbGljYXRpb25JZCIsIl90b2tlbiIsInVyaSIsImNhcGFiaWxpdGllcyIsIkJ1aWxkRmVhdHVyZXMiLCJfc2VuZExvY2FsQ2FuZGlkYXRlcyIsIl9zZW5kTG9ncyIsIl9zZW5kTWV0cmljcyIsIl9sb2dUb0NvbnNvbGUiLCJhcHBseUZlYXR1cmVzIiwiZmVhdHVyZXMiLCJfX0ZFQVRVUkVTX18iLCJzZW5kTG9jYWxDYW5kaWRhdGVzIiwic2VuZExvZ3MiLCJzZW5kTWV0cmljcyIsImxvZ1RvQ29uc29sZSIsImlzQ2hyb21lNzQiLCJpc0Nocm9tZTc1IiwiaXNDaHJvbWU3NiIsImlzQ2hyb21lNzciLCJhZGRUcmFuY2VpdmVyRGlzYWJsZWQiLCJpc0Nocm9tZTY5IiwiaXNDaHJvbWU3MCIsImlzQ2hyb21lNzEiLCJpc0Nocm9tZTcyIiwiYnJvd3Nlck5hbWUiLCJicm93c2VyTWFqb3JWZXJzaW9uIiwiX0dsb2JhbFNjb3BlJHZhbHVlIiwiTWVkaWFTdHJlYW1UcmFja1Byb2Nlc3NvciIsIk1lZGlhU3RyZWFtVHJhY2tHZW5lcmF0b3IiLCJSVENSdHBSZWNlaXZlciIsInByb3RvdHlwZSIsImNyZWF0ZUVuY29kZWRTdHJlYW1zIiwiUlRDUnRwU2NyaXB0VHJhbnNmb3JtIiwiX0dsb2JhbFNjb3BlJHZhbHVlMiIsIkhUTUxWaWRlb0VsZW1lbnQiLCJyZXF1ZXN0VmlkZW9GcmFtZUNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlJHZhbHVlMyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzUmVxdWVzdFZpZGVvRnJhbWVDYWxsYmFja1N1cHBvcnRlZCIsImlzRW5jb2RlZEluc2VydGFibGVTdHJlYW1zU3VwcG9ydGVkIiwiaXNSVENSdHBTY3JpcHRUcmFuc2Zvcm1TdXBwb3J0ZWQiLCJQYXJhbWV0ZXJzIiwiX2Rpc2NvdmVyeVBhcmFtZXRlcnMiLCJhcHBseVBhcmFtZXRlcnMiLCJwYXJhbWV0ZXJzIiwiX19QQVJBTUVURVJTX18iLCJkaXNjb3ZlcnkiLCJpbnRlbnRpb25zIiwiYnJvd3Nlckdsb2JhbFNjb3BlIiwiZG9jdW1lbnQiLCJsb2NhdGlvbiIsIndpbmRvdyIsImdsb2JhbFNjb3BlIiwiX2RvY3VtZW50IiwiX2xvY2F0aW9uIiwiX3dpbmRvdyIsIkFib3J0Q29udHJvbGxlciIsIkZvcm1EYXRhIiwiTWVkaWFTdHJlYW0iLCJNZWRpYVN0cmVhbVRyYWNrIiwiTWVkaWFTb3VyY2UiLCJSVENQZWVyQ29ubmVjdGlvbiIsIlJUQ1Nlc3Npb25EZXNjcmlwdGlvbiIsIlJUQ0ljZUNhbmRpZGF0ZSIsImNsZWFySW50ZXJ2YWwiLCJjbGVhclRpbWVvdXQiLCJjcmVhdGVFbGVtZW50IiwiaGFzRm9jdXMiLCJoaWRkZW4iLCJxdWVyeVNlbGVjdG9yIiwiZmV0Y2giLCJob3N0bmFtZSIsInNlYXJjaCIsImNvbm5lY3Rpb24iLCJvbkxpbmUiLCJzZW5kQmVhY29uIiwidXJsIiwiZGF0YSIsInNldEludGVydmFsIiwic2V0SW5zdGFuY2UiLCJwcm92aWRlZEdsb2JhbFNjb3BlIiwiZ2V0SW5zdGFuY2UiLCJfcmVhZE9ubHlJbnN0YW5jZSIsInN1YnNjcmliZSIsImNhbGxiYWNrIiwiX0dsb2JhbFNjb3BlIiwiX2luc3RhbmNlIiwiZGlzcG9zYWJsZSIsIl9kaXNwb3NlZCIsIl9kaXNwb3NhYmxlIiwiY2FsbCIsIl9saXN0IiwiZm9yRWFjaCIsInRvU3RyaW5nIiwibWF4RGlnaXRzSW5GbG9hdEFmdGVyRG90IiwiTnVtYmVycyIsImNvdW50TnVtYmVyTGVuZ3RoIiwiaW5jcmVtZW50Rm9yTmVnYXRpdmVWYWx1ZSIsIm51bWJlciIsImNvdW50RGlnaXRzQmVmb3JlRGVjaW1hbCIsIk1hdGgiLCJmbG9vciIsImNvdW50RGlnaXRzQWZ0ZXJEZWNpbWFsIiwiZml4Um91bmRpbmciLCJwcmVjaXNpb24iLCJwb3dlciIsInBvdyIsInJvdW5kIiwiZGlnaXRzQmVmb3JlRGVjaW1hbCIsIm9yaWdpbmFsVmFsdWUiLCJtb2RpZmllZFZhbHVlIiwiY291bnQiLCJTdHJpbmdzIiwicmFuZG9tIiwicmFuZG9tMTNDaGFyYWN0ZXJzIiwibG9vcHMiLCJjZWlsIiwiQXJyYXkiLCJmaWxsIiwicmVkdWNlIiwic3RyaW5nIiwiZnVuYyIsImFzc2VydFVucmVhY2hhYmxlIiwieCIsIkFwcGVuZGVycyIsIl9hcHBlbmRlcnMiLCJhcHBlbmRlciIsInJlbW92ZSIsIml0ZW1zIiwiaXRlbSIsIkxvZ2dpbmdMZXZlbCIsIkNvbnNvbGVBcHBlbmRlciIsInRocmVzaG9sZCIsIl90aHJlc2hvbGQiLCJsb2ciLCJsb2dMZXZlbCIsIm1lc3NhZ2UiLCJjYXRlZ29yeSIsImRhdGUiLCJmdWxsTWVzc2FnZSIsInRvSVNPU3RyaW5nIiwiV2FybiIsImNvbnNvbGUiLCJMb2dnZXIiLCJhcHBlbmRlcnMiLCJfY2F0ZWdvcnkiLCJ0cmFjZSIsIlRyYWNlIiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiZGVidWciLCJEZWJ1ZyIsIl9sZW4yIiwiX2tleTIiLCJJbmZvIiwiX2xlbjMiLCJfa2V5MyIsIndhcm4iLCJfbGVuNCIsIl9rZXk0IiwiX2xlbjUiLCJfa2V5NSIsImZhdGFsIiwiRmF0YWwiLCJfbGVuNiIsIl9rZXk2IiwibGV2ZWwiLCJyZXBsYWNlUGxhY2Vob2xkZXJzIiwiX3RoaXMyIiwicmVwbGFjZVBsYWNlaG9sZGVyc1N0cmluZyIsImluZGV4IiwicmVwbGFjZUFyZ3VtZW50Iiwic3BsaWNlIiwic3RyaW5naWZ5IiwiYWNjdW11bGF0b3IiLCJjdXJyZW50VmFsdWUiLCJhcnJheSIsImVycm9yU3RhY2tBbHNvSGFzRXJyb3JNZXNzYWdlIiwic3RhY2siLCJhcmciLCJjYWNoZSIsIl8iLCJPYmplY3QiLCJhcmd1bWVudCIsInRvU3RyaW5nU3RyIiwiTG9nZ2luZ1RocmVzaG9sZCIsIlRlbGVtZXRyeUFwcGVuZGVyIiwiVGVsZW1ldHJ5Q29uZmlndXJhdGlvbiIsIl90ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwibG9nZ2VyIiwiX2xvZ2dlcnMiLCJhcHBseUxvZ2dlckNvbmZpZ0Zyb21QYXJhbWV0ZXJDb25maWd1cmF0aW9uIiwiYXBwbHlMb2dnaW5nTGV2ZWwiLCJhcHBseUFwcGVuZGVyTG9nZ2luZ0xldmVsIiwiYXBwbHlDb25zb2xlTG9nZ2VyIiwiYXBwbHlUZWxlbWV0cnlMb2dnZXIiLCJwYXJhbWV0ZXJWYWx1ZSIsInNldFRocmVzaG9sZCIsImFwcGx5QXBwZW5kZXIiLCJsb2dnaW5nTGV2ZWwiLCJPZmYiLCJBbGwiLCJjb252ZXJ0TG9nZ2luZ0xldmVsVHlwZVRvTG9nZ2luZ0xldmVsIiwibG9nZ2luZ0xldmVsVHlwZSIsIlRlbGVtZXRyeUxldmVsIiwibWV0cmljcyIsIl9tZXRyaWNzIiwiZ2V0VGVsZW1ldHJ5TGV2ZWwiLCJUaW1lVG9GaXJzdEZyYW1lIiwiRXNzZW50aWFsIiwiQ2hhbm5lbENyZWF0aW9uVGltZVRvRmlyc3RGcmFtZSIsIlN0YWxsZWQiLCJCdWZmZXJpbmciLCJSb3VuZFRyaXBUaW1lIiwiRG93bmxpbmtUaHJvdWdocHV0Q2FwYWNpdHkiLCJOZXR3b3JrVHlwZSIsIlJlc29sdXRpb25DaGFuZ2VkIiwiQXBwbGljYXRpb25Gb3JlZ3JvdW5kIiwiQXBwbGljYXRpb25CYWNrZ3JvdW5kIiwiTWV0cmljc0NvbmZpZ3VyYXRpb24iLCJfdXJsIiwic2V0IiwibWV0cmljc1VybCIsInBhdGhuYW1lIiwiX2Vudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJfdGVuYW5jeSIsInRlbmFuY3kiLCJfc2Vzc2lvbklkIiwic2Vzc2lvbklkIiwiTWV0cmljc1NlcnZpY2UiLCJUZWxlbWV0cnlVcmwiLCJFbnZpcm9ubWVudCIsIk1ldHJpY3NGYWN0b3J5IiwiZ2V0TWV0cmljc1NlcnZpY2UiLCJfdHlwZW9mIiwibWV0cmljc1NlcnZpY2VzIiwiX21ldHJpY3NTZXJ2aWNlcyIsIm1ldHJpY3NDb25maWd1cmF0aW9uIiwiY2xpZW50U2Vzc2lvbklkIiwiZ2V0VGVsZW1ldHJ5VXJsIiwiZ2V0RW52aXJvbm1lbnRGcm9tVXJsIiwiY29udmVydFRlbGVtZXRyeUxldmVsVHlwZVRvVGVsZW1ldHJ5TGV2ZWwiLCJ0ZWxlbWV0cnlMZXZlbCIsInNldFRlbGVtZXRyeUxldmVsIiwidmFsdWVzIiwidCIsInIiLCJTeW1ib2wiLCJuIiwiaXRlcmF0b3IiLCJvIiwidG9TdHJpbmdUYWciLCJpIiwiYyIsIkdlbmVyYXRvciIsInUiLCJjcmVhdGUiLCJfcmVnZW5lcmF0b3JEZWZpbmUyIiwiZiIsInAiLCJ5IiwiRyIsInYiLCJhIiwiZCIsImwiLCJUeXBlRXJyb3IiLCJkb25lIiwicmV0dXJuIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSIsImdldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJkaXNwbGF5TmFtZSIsIl9yZWdlbmVyYXRvciIsInciLCJtIiwiZGVmaW5lUHJvcGVydHkiLCJfcmVnZW5lcmF0b3JEZWZpbmUiLCJfaW52b2tlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiRXhwb25lbnRpYWxCYWNrb2ZmIiwiVmVyc2lvbk1hbmFnZXIiLCJyZXF1ZXN0U2l6ZUxpbWl0IiwibWF4QnVmZmVyZWRSZWNvcmRzIiwiX21ldHJpY3NDb25maWd1cmF0aW9uIiwiX2V4cG9uZW50aWFsQmFja29mZiIsImdldExvY2F0aW9uSG9zdG5hbWVGcm9tR2xvYmFsU2NvcGUiLCJ0aGVuIiwibG9jYXRpb25Ib3N0bmFtZSIsIl9kb21haW4iLCJtZXRyaWMiLCJwcmV2aW91c1ZhbHVlIiwicmVzb3VyY2UiLCJraW5kIiwibWV0cmljUmVjb3JkIiwidGltZXN0YW1wIiwiZnVsbFF1YWxpZmllZE5hbWUiLCJzZGtWZXJzaW9uIiwiaWdub3JlZCIsInNlbmRNZXRyaWNzSWZBYmxlIiwiUHJvbWlzZSIsInJlc29sdmVMb2NhdGlvbkhvc3RuYW1lIiwiZ2xvYmFsU2NvcGVTdWJzY3JpcHRpb24iLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jYWxsZWUiLCJtZXRyaWNzTWVzc2FnZXMiLCJmb3JtRGF0YSIsIl9jb250ZXh0IiwiYXBwZW5kIiwicmVjb3JkcyIsIm1ldGhvZCIsImJvZHkiLCJfeCIsImFwcGx5IiwiX3NlbmRNZXRyaWNzSWZBYmxlIiwiX2NhbGxlZTIiLCJfY29udGV4dDIiLCJfaXNTZW5kaW5nIiwic2xpY2UiLCJyZXNwb25zZSIsImlzUmVzcG9uc2VTdGF0dXNDb2RlUmV0cnlhYmxlIiwiX2ZhaWx1cmVDb3VudCIsIl90b0NvbnN1bWFibGVBcnJheSIsImdldEV4cG9uZW50aWFsQmFja29mZkludGVydmFsQnlGYWlsdXJlQ291bnQiLCJjYXRjaCIsInN0YXR1cyIsInRlbGVtZXRyeUxldmVsVHlwZSIsIlByb21pc2VIYW5kbGVyIiwiX3N0YXRlIiwiX2hhbmRsZWQiLCJfdmFsdWUiLCJfZGVmZXJyZWRzIiwiZG9SZXNvbHZlIiwicHJvbWlzZVJlc29sdmUiLCJyZWFzb24iLCJwcm9taXNlUmVqZWN0IiwibmV3VmFsdWUiLCJwcm9taXNlIiwiZmluYWxlIiwiX2ltbWVkaWF0ZSIsIl91bmhhbmRsZWRSZWplY3Rpb24iLCJsZW4iLCJoYW5kbGUiLCJkZWZlcnJlZCIsIm9uRnVsZmlsbGVkIiwib25SZWplY3RlZCIsInJlc3VsdCIsImFsbCIsImFyciIsInJlc29sdmUiLCJyZWplY3QiLCJpc0FycmF5IiwicmVtYWluaW5nIiwibWFuYWdlUmVzcG9uc2UiLCJjb25zdHJ1Y3RvciIsInJhY2UiLCJWYW5pbGxhUGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiRW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiZGVmYXVsdFRyYWNrS2luZHMiLCJQZWVyQ29ubmVjdGlvblNlcnZpY2UiLCJfcGVlckNvbm5lY3Rpb25GYWN0b3J5IiwiaW5pdGlhdGVJbml0aWFsUHJlY2FjaGluZyIsImlzUHJlY2FjaGluZ0VuYWJsZWQiLCJwcmVjYWNoZUNyZWF0ZVBlZXJDb25uZWN0aW9uT2ZmZXIiLCJfcHJlY2FjaGVDcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhY2hlZCIsImRpcmVjdGlvbiIsInBlZXJDb25uZWN0aW9uIiwiY3JlYXRlUGVlckNvbm5lY3Rpb25PZmZlciIsIl9jcmVhdGVQZWVyQ29ubmVjdGlvbk9mZmVyIiwiX2NhbGxlZTMiLCJ0cmFja0tpbmRzIiwiZW5jb2RlZEluc2VydGFibGVTdHJlYW1zIiwiY29uZmlndXJhdGlvbiIsIl9hcmdzMyIsIl9jb250ZXh0MyIsIkRpc2FibGVkIiwiaXNUcmFja3NLaW5kc0VxdWl2YWxlbnRUb0RlZmF1bHQiLCJFbmFibGVkIiwiY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJzdXBwb3J0c0FkZFRyYW5zY2VpdmVyIiwiYXVkaW9UcmFuc2NlaXZlcnMiLCJ2aWRlb1RyYW5zY2VpdmVycyIsIm9wdGlvbnMiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl90NSIsIl90NiIsImFkZFRyYW5zY2VpdmVyIiwiY3JlYXRlT2ZmZXIiLCJsb2NhbE9mZmVyIiwib2ZmZXJUb1JlY2VpdmVBdWRpbyIsIm9mZmVyVG9SZWNlaXZlVmlkZW8iLCJ0cmFja3NLaW5kcyIsImNvdW50VHJhY2tLaW5kcyIsInRyYWNrS2luZENvdW50IiwiYXVkaW8iLCJ2aWRlbyIsImNvdW50ZWRUcmFja0tpbmRzIiwiY291bnRlZERlZmF1bHRUcmFja0tpbmRzIiwiUnRjQ29uZmlndXJhdGlvbk1hbmFnZXIiLCJ0cnVuY2F0ZUljZVNlcnZlcnMiLCJpY2VTZXJ2ZXJzIiwidXJscyIsInVzZXJuYW1lIiwiY3JlZGVudGlhbCIsIlNkcFBhcnNlciIsInVwZGF0ZVN0YXRpc3RpY1RpbWVvdXQiLCJnZXRTdGF0c1RpbWVvdXREdXJhdGlvbiIsIlJ0Y1B1Ymxpc2hNb25pdG9yIiwiZXN0aW1hdGVkUm91bmRUcmlwVGltZSIsImlzRm9yZWdyb3VuZCIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbiIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjIiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb24zIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNCIsIl9wZWVyQ29ubmVjdGlvbiIsIl9lc3RpbWF0ZWRSb3VuZFRyaXBUaW1lIiwiY3VycmVudExvY2FsRGVzY3JpcHRpb24iLCJzZHAiLCJjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24iLCJwYXJzZWRMb2NhbERlc2NyaXB0aW9uIiwicGFyc2VkUmVtb3RlRGVzY3JpcHRpb24iLCJfZXN0aW1hdGVkQXVkaW9Db2RlYyIsImF1ZGlvQ29kZWMiLCJfZXN0aW1hdGVkVmlkZW9Db2RlYyIsInZpZGVvQ29kZWMiLCJfYXZhaWxhYmxlVHJhY2tzIiwiaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVmlkZW9UcmFja0VuYWJsZWQiLCJpc0luaXRpYWxTdWJzY3JpcHRpb25DYWxsYmFjayIsImZvcmVncm91bmQiLCJfaXNNb25pdG9yUnVubmluZyIsIl9tb25pdG9yR2VuZXJhdGlvbiIsIl91cGRhdGVUaW1lb3V0IiwidXBkYXRlU3RhdGlzdGljIiwiX3J0Y1N0YXRpc3RpYyIsIl91cGRhdGVTdGF0aXN0aWMiLCJnZW5lcmF0aW9uIiwiZ2V0S2luZEZvclNhZmFyaTExIiwidGltZW91dEhhbmRsZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjUiLCJzdGF0c1Byb21pc2UiLCJ0aW1lb3V0UHJvbWlzZSIsInN0YXRzIiwicnRjU3RhdGlzdGljcyIsInJvdW5kVHJpcFRpbWUiLCJsYXN0UGFja2V0U2VudFRpbWVzdGFtcCIsImdldFN0YXRzUHJvbWlzZUJhc2VkRGlzYWJsZWQiLCJpZCIsImdldFN0YXRzIiwicmVwb3J0IiwiY3VycmVudFJvdW5kVHJpcFRpbWUiLCJfdGhpczIkX2F2YWlsYWJsZVRyYWMiLCJtZWRpYVR5cGUiLCJjb2RlYyIsImNvZGVjSWQiLCJtaW1lVHlwZSIsIl90aGlzMiRfcnRjU3RhdGlzdGljJCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDIiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQzIiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNCIsIl90aGlzMiRfcnRjU3RhdGlzdGljJDUiLCJieXRlcyIsImJ5dGVzU2VudCIsInByZXZpb3VzQnl0ZXNTZW50IiwiYnl0ZXNEZWx0YSIsInRpbWVEZWx0YSIsImJpdHJhdGUiLCJzc3JjIiwicGFja2V0c1NlbnQiLCJyZXRyYW5zbWl0dGVkQnl0ZXNTZW50IiwiZ2V0Q29kZWNCeVR5cGUiLCJfdGhpczIkX3J0Y1N0YXRpc3RpYyQ2IiwiX3RoaXMyJF9ydGNTdGF0aXN0aWMkNyIsImZpckNvdW50IiwiZnJhbWVIZWlnaHQiLCJmcmFtZVdpZHRoIiwiZnJhbWVzRW5jb2RlZCIsImZyYW1lc1NlbnQiLCJoZWFkZXJCeXRlc1NlbnQiLCJodWdlRnJhbWVzU2VudCIsInBsaUNvdW50IiwicXBTdW0iLCJ0b3RhbEVuY29kZVRpbWUiLCJ0b3RhbEVuY29kZWRCeXRlc1RhcmdldCIsImZwcyIsIl9zZHAiLCJfc2RwU3BsaXRCeVRyYWNrcyIsInNkcFNwbGl0QnlMaW5lcyIsIl9hdWRpb0NvZGVjIiwiYXBwbHlDb2RlYyIsIl92aWRlb0NvZGVjIiwiX2F1ZGlvU2VjdGlvbnMiLCJwYXJzZUF1ZGlvU2VjdGlvbnMiLCJfaXNBdWRpb1RyYWNrRW5hYmxlZCIsImlzVHJhY2tCeVR5cGVFbmFibGVkIiwiX2lzVmlkZW9UcmFja0VuYWJsZWQiLCJ3aXRoQXVkaW9MYW5ndWFnZXMiLCJsYW5ndWFnZXMiLCJsaW5lRW5kaW5nIiwibGluZXMiLCJhdWRpb0luZGV4IiwiaW5BdWRpb1NlY3Rpb24iLCJqb2luIiwic2VjdGlvbnMiLCJhdWRpb1NlY3Rpb25zIiwib3JkaW5hbCIsIl9pdGVyYXRvciIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiX3N0ZXAiLCJzIiwiX2xpbmVzJGZpbmQiLCJfbGluZXMkZmluZDIiLCJzZWN0aW9uIiwibWlkIiwiZmluZCIsImxpbmUiLCJzZWN0aW9uT3JkaW5hbCIsImxhbmd1YWdlIiwicmVjZWl2ZXNNZWRpYSIsImVyciIsInNkcFNlY3Rpb25Gb3JUeXBlIiwic2RwVHJhY2siLCJfc2RwU3BsaXRCeUxpbmVzJGZpbmQiLCJydG1hcCIsInNkcExpbmUiLCJ1c2VkQ29kZWNMaW5lIiwidXNlZENvZGVjIiwiY29kZWNOYW1lIiwiVmFuaWxsYVBlZXJDb25uZWN0aW9uIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkIiwid2Via2l0UlRDUGVlckNvbm5lY3Rpb24iLCJjb25uZWN0aW9uU3RhdGUiLCJpY2VDb25uZWN0aW9uU3RhdGUiLCJnZXRDb25maWd1cmF0aW9uIiwiX3RoaXMkX3BlZXJDb25uZWN0aW9uNiIsInNldENvbmZpZ3VyYXRpb24iLCJfdGhpcyRfcGVlckNvbm5lY3Rpb243IiwiZ2V0VHJhbnNjZWl2ZXJzRGlzYWJsZWQiLCJnZXRUcmFuc2NlaXZlcnMiLCJfdGhpcyRfcGVlckNvbm5lY3Rpb244IiwiX2NyZWF0ZU9mZmVyIiwicHJvbWlzZUJhc2VkUENNZXRob2RzRGlzYWJsZWQiLCJfY3JlYXRlQW5zd2VyIiwiY3JlYXRlQW5zd2VyIiwiX3gyIiwiX3NldExvY2FsRGVzY3JpcHRpb24iLCJkZXNjcmlwdGlvbiIsInNldExvY2FsRGVzY3JpcHRpb24iLCJfeDMiLCJfc2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlNCIsIl9kZXNjcmlwdGlvbiRzZHAiLCJoYXNDcnlwdG8iLCJfY29udGV4dDQiLCJzZXRSZW1vdGVEZXNjcmlwdGlvbiIsIl94NCIsImdldFNlbmRlcnMiLCJnZXRSZWNlaXZlcnMiLCJzZWxlY3RvciIsImdldFN0YXRzTGVnYWN5IiwiX3RoaXMzIiwiYWRkU3RyZWFtIiwibWVkaWFTdHJlYW0iLCJfdGhpczQiLCJnZXRUcmFja3MiLCJ0cmFjayIsImFkZFRyYWNrIiwib250cmFjayIsImhhbmRsZXIiLCJvbmljZWNhbmRpZGF0ZSIsIm9uY29ubmVjdGlvbnN0YXRlY2hhbmdlIiwib25pY2Vjb25uZWN0aW9uc3RhdGVjaGFuZ2UiLCJjbG9zZSIsIl90aGlzJF9wZWVyQ29ubmVjdGlvbjkiLCJfY3JlYXRlUGVlckNvbm5lY3Rpb24iLCJyZXNvbHZlUGVlckNvbm5lY3Rpb25Qcm9taXNlIiwic3ViamVjdCIsIl9zdWJqZWN0IiwiRGlzcG9zYWJsZUxpc3RlbmVyIiwiX0Rpc3Bvc2FibGUiLCJsaXN0ZW5lcnMiLCJfY2FsbFN1cGVyIiwiaWR4IiwiX2luaGVyaXRzIiwiX2xpc3RlbmVycyIsImNoYW5nZWQiLCJjb21wYXJhYmxlIiwiZXF1YWxzIiwiX2kiLCJfYXJyIiwiYmFzZVVSTCIsIm9yaWdpbiIsIkRpc2NvdmVyeVVyaSIsIl9HbG9iYWxTY29wZSRnZXRJbnN0YSIsIl9jbGllbnRTZXNzaW9uSWQiLCJfbG9hZGVkVGltZXN0YW1wIiwiX3JlYWRPbmx5SW5pdGlhbGl6ZWQiLCJfcmVhZE9ubHlEaXNjb3ZlcnlVcmkiLCJfcmVhZE9ubHlQZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJfYXV0b21hdGljYWxseVJldHJ5T25GYWlsdXJlIiwiX2F1dG9tYXRpY2FsbHlSZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9hdXRvbWF0aWNhbGx5UGxheU1lZGlhU3RyZWFtIiwiX2F1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwiX2ZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnQiLCJfc2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzIiwiX3dlYlBsYXllckxvYWRlciIsIl9zaGFrYVBsYXllckxvYWRlciIsIl9obHNKc0xvYWRlciIsIl9tZXRyaWNzU2VydmljZSIsIl9hcHBsaWNhdGlvbkFjdGl2aXR5TW9uaXRvciIsIl90ZWxlbWV0cnlVcmwiLCJfbWF4aW1hbE51bWJlck9mUGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsInJldHJpZXNBbW91bnQiLCJfdGVsZW1ldHJ5TGV2ZWwiLCJhcHBseVRlbGVtZXRyeUNvbmZpZ3VyYXRpb24iLCJ0ZWxlbWV0cnlDb25maWd1cmF0aW9uIiwiaWdub3JlZEVudmlyb25tZW50IiwiaWdub3JlZERpc2NvdmVyeVVyaSIsInRlbGVtZXRyeVVybCIsInRlbGVtZXRyeUFwcGVuZGVyIiwiaWdub3JlZFRlbmFuY3kiLCJhcHBseU1ldHJpY3NDb25maWd1cmF0aW9uIiwiaWdub3JlZFRlbGVtZXRyeUxldmVsIiwiYXBwbHlBdXRvbWF0aWNhbGx5UmV0cnlPbkZhaWx1cmVGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5QXV0b21hdGljYWxseVJlY29ubmVjdFBlZXJDb25uZWN0aW9uRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseUZvcmNlR2FyYmFnZUNvbGxlY3Rpb25PblJlc3RhcnRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImFwcGx5U2tpcEdhcmJhZ2VDb2xsZWN0aW9uT25Nb2JpbGVEZXZpY2VzRnJvbVBhcmFtZXRlckNvbmZpZ3VyYXRpb24iLCJhcHBseURpc2NvdmVyeVVyaURlZmF1bHRGcm9tUGFyYW1ldGVyQ29uZmlndXJhdGlvbiIsImRpc2NvdmVyeVVyaSIsImNoYW5uZWxUb2tlbiIsInVyaVZhbHVlIiwiYmFzZVVSSVZhbHVlIiwib25Mb2FkIiwiX2luaXRpYWxpemVkIiwiYWRkV2luZG93RXZlbnRMaXN0ZW5lciIsImluaXQiLCJvcHRpb25zV2l0aE9wdGlvbmFsZ2xvYmFsU2NvcGUiLCJwZWVyQ29ubmVjdGlvbkZhY3RvcnkiLCJjb25zb2xlTG9nZ2luZ0xldmVsIiwiY29uc29sZUFwcGVuZGVyIiwiYXV0b21hdGljYWxseVBsYXlNZWRpYVN0cmVhbSIsImF1dG9tYXRpY2FsbHlNdXRlVmlkZW9PblBsYXlGYWlsdXJlIiwid2ViUGxheWVyTG9hZGVyIiwic2hha2FQbGF5ZXJMb2FkZXIiLCJobHNKc0xvYWRlciIsIl90aGlzJF9hcHBsaWNhdGlvbkFjdCIsIl9TREsiLCJzZWdtZW50cyIsInByb3RvY29sIiwidW5zaGlmdCIsImVuZHNXaXRoIiwiQml0cmF0ZVN0YXRlIiwiQml0cmF0ZU1vZGUiLCJQZWVyQ29ubmVjdGlvbkNvbnRleHQiLCJmb3JjZUdhcmJhZ2VDb2xsZWN0aW9uT25SZXN0YXJ0IiwicGVlckNvbm5lY3Rpb25SZWNvbm5lY3RBdHRlbXB0cyIsImRpc3Bvc2VQZWVyQ29ubmVjdGlvbiIsImRpc3Bvc2VNZWRpYVN0cmVhbSIsIl90aGlzJG1lZGlhU3RyZWFtJHZhbCIsInN0b3AiLCJTdGF0ZUNvbnRleHQiLCJpc1N0YXJ0aW5nIiwiaXNEaXNwb3NlZCIsIlRva2VuQ29udGV4dCIsInRva2VuRXhwaXJpbmciLCJkZWZhdWx0RGlzY292ZXJ5VXJpIiwiQml0cmF0ZU1vZGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVNb2RlVG9CaXRyYXRlTW9kZVR5cGUiLCJiaXRyYXRlTW9kZSIsIk5vcm1hbCIsIkZvcmNlIiwiUmVzZXQiLCJCaXRyYXRlU3RhdGVNYXBwaW5nIiwiY29udmVydEJpdHJhdGVTdGF0ZVRvQml0cmF0ZVN0YXRlVHlwZSIsImJpdHJhdGVTdGF0ZSIsIktlZXAiLCJEaXNjb3ZlcnlTZXJ2aWNlIiwiZGlzY292ZXJ5Q2FjaGVJbnRlcnZhbCIsIkRpc2NvdmVyeSIsIl9wcmVjYWNoZUNsb3Nlc3RFbmRQb2ludERpc2NvdmVyeSIsInJlc29sdmVFbmRQb2ludFByb21pc2UiLCJkaXNjb3ZlckNsb3Nlc3RFbmRQb2ludFdpdGhDYWNoaW5nIiwicHJlY2FjaGVDbG9zZXN0RW5kUG9pbnREaXNjb3ZlcnkiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnRXaXRoQ2FjaGluZyIsImRpc2NvdmVyeVNlcnZpY2UiLCJjYWNoZWRWYWx1ZSIsIl9jYWNoZSIsImRpc2NvdmVyQ2xvc2VzdEVuZFBvaW50IiwiY2xlYXJDYWNoZWRDbG9zZXN0RW5kcG9pbnQiLCJFbmRQb2ludCIsImRlZmF1bHRUaW1lb3V0IiwiX3VyaSIsIl9kaXNjb3Zlck5lYXJieUVuZFBvaW50cyIsInRpbWVvdXQiLCJhc1N0cmluZyIsImVuZFBvaW50cyIsIm9rIiwidGV4dCIsIm1hcCIsImVuZFBvaW50IiwiZGlzY292ZXJOZWFyYnlFbmRQb2ludHMiLCJfZGlzY292ZXJDbG9zZXN0RW5kUG9pbnQiLCJmYWlsZWRSZXF1ZXN0cyIsInByb3BhZ2F0ZUZhaWx1cmVJZkFsbFJlcXVlc3RzRmFpbGVkIiwiX2FyZ3MyIiwiYnVpbGREaXNjb3ZlcnlVcmwiLCJwaW5nIiwidGltZSIsIlBjYXN0VXJpIiwiX2Rpc2NvdmVyeVVyaSIsImRpc2NvdmVyeVBhcmFtZXRlcnMiLCJzZWFyY2hQYXJhbXMiLCJkaXNjb3ZlcnlQYXRoIiwiX2dldFByb3RvdHlwZU9mIiwiX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsIkJvb2xlYW4iLCJ2YWx1ZU9mIiwiYXBpVmVyc2lvbiIsIkZldGNoVGltZW91dEVycm9yIiwiX0Vycm9yIiwiX3dyYXBOYXRpdmVTdXBlciIsIl90aW1lb3V0RHVyYXRpb24iLCJfcm91bmRUcmlwVGltZSIsIl9waW5nIiwic3RhcnQiLCJyZXF1ZXN0T3B0aW9ucyIsImJ1aWxkUGluZ1VybCIsImZldGNoV2l0aFRpbWVvdXQiLCJfc3Vic2NyaWJlIiwibG9jYWxTZXNzaW9uRGVzY3JpcHRpb24iLCJmYWlsdXJlQ291bnQiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIiLCJfb3B0aW9ucyRvblN1YnNjcmliZVI0IiwiY2xpZW50VmVyc2lvbiIsInJlcXVlc3RCb2R5IiwiZmV0Y2hSZXF1ZXN0T3B0aW9ucyIsImh0dHBSZXNwb25zZSIsImpzb25SZXNwb25zZUJvZHkiLCJfb3B0aW9ucyRvblN1YnNjcmliZVIyIiwiX3Jlc3BvbnNlIiwiX29wdGlvbnMkb25TdWJzY3JpYmVSMyIsIl9yZXNwb25zZTIiLCJmaW5pc2hlZCIsInN1YnNjcmliZVJlc3BvbnNlIiwiYnVpbGRVcmwiLCJiZWFyZXJUb2tlbiIsImh0dHBSb3VuZFRyaXBUaW1lIiwic2Vzc2lvbkRlc2NyaXB0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb24iLCJjcmVhdGVPZmZlckRlc2NyaXB0aW9uIiwib25TdWJzY3JpYmVSZXF1ZXN0Q2FsbGJhY2siLCJleGVjdXRlRmV0Y2hSZXF1ZXN0IiwicGFyc2VKc29uQm9keSIsImhhbmRsZVN0cmVhbVJlc3BvbnNlQ29udGV4dCIsInN0cmVhbVJlc3BvbnNlQ29udGV4dCIsIm1hcEh0dHBTdGF0dXNUb1N1YnNjcmliZVN0YXR1cyIsIm9uU3Vic2NyaWJlUmVzcG9uc2VDYWxsYmFjayIsIm5vcm1hbGl6ZVN1YnNjcmliZVJlc3BvbnNlIiwiX3B1Ymxpc2giLCJib2R5V2l0aE9mZmVyIiwiYm9keVdpdGhvdXRPZmZlciIsInB1Ymxpc2hSZXNwb25zZSIsIm1hcEh0dHBTdGF0dXNUb1B1Ymxpc2hTdGF0dXMiLCJub3JtYWxpemVQdWJsaXNoUmVzcG9uc2UiLCJwdWJsaXNoIiwiX3g1IiwiX3g2IiwiX3g3Iiwic3RyZWFtIiwic2V0UmVtb3RlRGVzY3JpcHRpb25SZXNwb25zZSIsInNoYXJlZFNlY3JldCIsIm1hcEh0dHBTdGF0dXNUb1NldFJlbW90ZURlc2NyaXB0aW9uU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfeDgiLCJfeDkiLCJfbGltaXRCaXRyYXRlIiwiX2NhbGxlZTUiLCJlbGFwc2VkSW5NaWxsaXNlY29uZHMiLCJiaXRyYXRlSW5CaXRzUGVyU2Vjb25kIiwiX2NvbnRleHQ1IiwibWFwSHR0cFN0YXR1c1RvU2V0VGVtcG9yYXJ5TWF4aW1hbEJpdHJhdGVTdGF0dXMiLCJsaW1pdEJpdHJhdGUiLCJfeDAiLCJfeDEiLCJfeDEwIiwiX3gxMSIsIl94MTIiLCJfYWRkSWNlQ2FuZGlkYXRlcyIsIl9jYWxsZWU2IiwiY2FuZGlkYXRlcyIsImRpc2NvdmVyeUNvbXBsZXRlZCIsImFkZEljZUNhbmRpZGF0ZXNSZXNwb25zZSIsIl9hcmdzNiIsIl9jb250ZXh0NiIsIm1hcEh0dHBTdGF0dXNUb0FkZEljZUNhbmRpZGF0ZXNTdGF0dXMiLCJjb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiYWRkSWNlQ2FuZGlkYXRlcyIsIl94MTMiLCJfeDE0IiwiX3gxNSIsIl9kZXN0cm95U3RyZWFtIiwiX2NhbGxlZTciLCJkZXN0cm95U3RyZWFtUmVzcG9uc2UiLCJfY29udGV4dDciLCJtYXBIdHRwU3RhdHVzVG9TZXREZXN0cm95U3RyZWFtU3RhdHVzIiwiY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsImRlc3Ryb3lTdHJlYW0iLCJfeDE2IiwiX3gxNyIsIl9kZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX2NhbGxlZTgiLCJfY29udGV4dDgiLCJkZXN0cm95U3RyZWFtT25Vbm1vdW50IiwiX3gxOCIsIl94MTkiLCJfZmV0Y2hXaXRoVGltZW91dCIsIl9jYWxsZWU5IiwidGltZW91dER1cmF0aW9uIiwiY29udHJvbGxlciIsIl9jb250ZXh0OSIsIl9vYmplY3RTcHJlYWQiLCJzaWduYWwiLCJhYm9ydCIsIl94MjAiLCJfeDIxIiwiX3gyMiIsIl9leGVjdXRlRmV0Y2hSZXF1ZXN0IiwiX2NhbGxlZTAiLCJvcGVyYXRpb24iLCJfY29udGV4dDAiLCJfeDIzIiwiX3gyNCIsIl94MjUiLCJwYXRoIiwiYnVpbGRSb3V0ZVVybCIsIl9wYXJzZUpzb25Cb2R5IiwiX2NhbGxlZTEiLCJfY29udGV4dDEiLCJqc29uIiwiX3gyNiIsImNvbnRleHQiLCJsYWciLCJydGNDb25maWd1cmF0aW9uIiwiY3JlYXRlQW5zd2VyRGVzY3JpcHRpb25SZXNwb25zZSIsImNyZWF0ZU9mZmVyRGVzY3JpcHRpb25SZXNwb25zZSIsImlnbm9yZWRTdHJlYW1SZXNwb25zZUNvbnRleHQiLCJvdGhlclByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJjb252ZXJ0SVJ0Y0NvbmZpZ3VyYXRpb25Ub1JUQ0NvbmZpZ3VyYXRpb24iLCJidW5kbGVQb2xpY3kiLCJpY2VDYW5kaWRhdGVQb29sU2l6ZSIsImljZVRyYW5zcG9ydFBvbGljeSIsInJ0Y3BNdXhQb2xpY3kiLCJfY29udmVydEh0dHBSZXNwb25zZVRvU2V0UmVtb3RlRGVzY3JpcHRpb24iLCJfY2FsbGVlMTAiLCJfY29udGV4dDEwIiwiX3gyNyIsIl9jb252ZXJ0SHR0cFJlc3BvbnNlVG9BZGRJY2VDYW5kaWRhdGVzIiwiX2NhbGxlZTExIiwiX2NvbnRleHQxMSIsIl94MjgiLCJfY29udmVydEh0dHBSZXNwb25zZVRvRGVzdHJveVN0cmVhbSIsIl9jYWxsZWUxMiIsIl9jb250ZXh0MTIiLCJfeDI5Iiwibm9ybWFsaXplRGlzY292ZXJ5VXJpIiwiaGFzaCIsImJhc2VVcmkiLCJQdWJsaXNoZXJTdGF0ZSIsIlNlc3Npb25UZWxlbWV0cnkiLCJQdWJsaXNoZXJDb250ZXh0IiwiUmVhbFRpbWVQdWJsaXNoZXIiLCJkZWZhdWx0U3RyZWFtVGVybWluYXRpb25SZWFzb24iLCJmYWlsdXJlQ291bnRDbGVhblVwSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsInN0YW5kYnlQb2xsaW5nSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIm9uZUhvdXJJbk1pbGxpc2Vjb25kcyIsIm1heFJlY29ubmVjdGluZ0F0dGVtcHRzSW50ZXJ2YWxJbk1pbGxpc2Vjb25kcyIsIlB1Ymxpc2hlciIsInBlZXJDb25uZWN0aW9uQ29udGV4dE9wdGlvbnMiLCJfdG9rZW5Db250ZXh0IiwiX3B1Ymxpc2hlckNvbnRleHQiLCJfcGVlckNvbm5lY3Rpb25Db250ZXh0IiwiX3N0YXRlQ29udGV4dCIsIl9wdWJsaXNoZXJTdGFydFRpbWUiLCJfcmVhZE9ubHlUb2tlbiIsIl9yZWFkT25seVBlZXJDb25uZWN0aW9uIiwiX3JlYWRPbmx5U3RhdGUiLCJzdGF0ZSIsIl9yZWFkT25seVRva2VuRXhwaXJpbmciLCJfcmVhZE9ubHlBdXRob3JpemVkIiwiYXV0aG9yaXplZCIsIl9yZWFkT25seU9ubGluZSIsIm9ubGluZSIsIl9yZWFkT25seUxvYWRpbmciLCJsb2FkaW5nIiwiX3JlYWRPbmx5UHVibGlzaGluZyIsInB1Ymxpc2hpbmciLCJfcmVhZE9ubHlTdGFuZGJ5Iiwic3RhbmRieSIsIl9yZWFkT25seVN0b3BwZWQiLCJzdG9wcGVkIiwiX3JlYWRPbmx5RmFpbHVyZUNvdW50IiwiX3JlYWRPbmx5RW5kUG9pbnQiLCJfcmVhZE9ubHlTdHJlYW0iLCJfcmVhZE9ubHlSdGNTdGF0aXN0aWNzIiwiX3JlYWRPbmx5TWVkaWFTdHJlYW0iLCJfc2Vzc2lvblRlbGVtZXRyeSIsInB1Ymxpc2hlckRpc3Bvc2FibGVzIiwiY2xlYXJGYWlsdXJlQ291bnRUaW1lb3V0IiwiUHVibGlzaGluZyIsInJlbW92ZVdpbmRvd0V2ZW50TGlzdGVuZXIiLCJkaXNwb3NhYmxlcyIsIl9zdG9wIiwicHJvY2Vzc1N0b3AiLCJjbGVhblVwUmVzb3VyY2VzIiwiU3RvcHBlZCIsIl9kaXNwb3NlIiwiZ2V0VXJpIiwiX3N0YXJ0IiwicHJvY2Vzc1N0YXJ0IiwiX3Byb2Nlc3NTdGFydCIsImxpc3Rlbk9uU3RyZWFtU2V0dXAiLCJoYW5kbGVTdHJlYW1GYWlsdXJlQ2FsbGJhY2siLCJzdHJlYW1QdWJsaXNoZXIiLCJTdGFydGluZyIsIlVuYXV0aG9yaXplZCIsIlJlY292ZXJpbmciLCJoYW5kbGVTdHJlYW1GYWlsdXJlIiwiQ2xpZW50U3RhcnRFcnJvciIsImZpbmFsbHkiLCJhdXRvbWF0aWNSZXRyeU9uRmFpbHVyZSIsInN0YXJ0UmVjb25uZWN0aW9uQXR0ZW1wdHNUaW1lSW5NaWxsaXNlY29uZHMiLCJ0aW1lb3V0SWQiLCJnZXRSZXRyeUludGVydmFsIiwic2V0TWVkaWFTdHJlYW0iLCJfdGhpczUiLCJtZWRpYVRyYWNrIiwiX3RoaXM1JF9wZWVyQ29ubmVjdGlvIiwic2VuZGVyIiwiX3NlbmRlciR0cmFjayIsInJlcGxhY2VUcmFjayIsIk9mZmxpbmUiLCJJbml0aWFsaXppbmciLCJOb3RGb3VuZCIsIkdlb1Jlc3RyaWN0ZWQiLCJHZW9CbG9ja2VkIiwiUmVjb25uZWN0aW5nIiwiVW5zdXBwb3J0ZWRGZWF0dXJlIiwiQ29uZmlndXJhdGlvbkVycm9yIiwiVHJhbnNpZW50Q29uZmlndXJhdGlvbkVycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiX2hhbmRsZVN0cmVhbUZhaWx1cmUiLCJyZWNvbm5lY3RpbmdBdHRlbXB0c0ludGVydmFsIiwiX3RoaXM2IiwicHVibGlzaGVySW5pdGlhbGl6YXRpb24iLCJnZW5lcmF0ZVNjcmVlbk5hbWUiLCJhcHBseVB1Ymxpc2hTdGF0dXMiLCJhcHBseVVuYXV0aG9yaXplZCIsImFwcGx5Tm90Rm91bmQiLCJhcHBseVVuaGFuZGxlZEVycm9yIiwiYXBwbHlTZXRSZW1vdGVEZXNjcmlwdGlvblN0YXR1cyIsImFwcGx5QWRkSWNlQ2FuZGlkYXRlc1N0YXR1cyIsIm1hcFB1Ymxpc2hTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIlB1Ymxpc2hlcnMiLCJjcmVhdGVQdWJsaXNoZXIiLCJpbml0aWFsaXplZCIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycyIsImRlZmluZVByb3BlcnRpZXMiLCJpY2VDYW5kaWRhdGVBY2N1bXVsYXRpb25JbnRlcnZhbCIsInNvZnRSZXN0YXJ0SW50ZXJ2YWwiLCJwdWJsaXNoZXJDb250ZXh0IiwicGVlckNvbm5lY3Rpb25Db250ZXh0IiwibmF2aWdhdG9ySXNPbkxpbmUiLCJtZWRpYVRyYWNrcyIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJfcmVmMyQiLCJjbGllbnRPZmZlckRpc2FibGVkIiwic3VwcG9ydHNTZXRDb25maWd1cmF0aW9uIiwic3VwcG9ydHNHZXRDb25maWd1cmF0aW9uIiwiYXBwbHlSdGNDb25maWd1cmF0aW9uIiwic3VibWl0Q2FuZGlkYXRlc1RpbWVvdXQiLCJjYW5jZWxEaXNjb3ZlcnkiLCJjYW5kaWRhdGUiLCJfdGhpcyRfcHVibGlzaGVyQ29udGUiLCJfcmVmNCIsIm1hcEFkZEljZUNhbmRpZGF0ZXNTdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsInJldHJ5Q2FsbGJhY2siLCJyZWNvbm5lY3RQZWVyQ29ubmVjdGlvbiIsIl9jcmVhdGVBbnN3ZXJEZXNjcmlwdCIsImFuc3dlciIsIl9yZWY1IiwibWFwU2V0UmVtb3RlRGVzY3JpcHRpb25TdGF0dXNUb1B1Ymxpc2hlclN0YXR1cyIsIl90aGlzJF9wdWJsaXNoZXJDb250ZTIiLCJydGNQdWJsaXNoTW9uaXRvciIsImFwcGxpY2F0aW9uQWN0aXZpdHlNb25pdG9yIiwicnRjU3RhdGlzdGljIiwic3RhdGlzdGljcyIsIl9hcHBseVJ0Y0NvbmZpZ3VyYXRpb24iLCJvcHRpb25hbFBlZXJDb25uZWN0aW9uIiwibmV3UnRjQ29uZmlndXJhdGlvbiIsIm1heGltYWxOdW1iZXJPZlBlZXJDb25uZWN0aW9uUmVjb25uZWN0QXR0ZW1wdHMiLCJhdXRvbWF0aWNhbGx5UmVjb25uZWN0UGVlckNvbm5lY3Rpb24iLCJfcGVlckNvbm5lY3Rpb24kY3VycmUiLCJpc0NsaWVudE9mZmVyRmxvdyIsInJlY29ubmVjdFBlZXJDb25uZWN0aW9uVGltZW91dCIsImljZVJlc3RhcnQiLCJvZmZlciIsIl9fQlVJTERfVkVSU0lPTl9fIiwiX2RlZmF1bHRWZXJzaW9uIiwiVGVsZW1ldHJ5U2VydmljZSIsIl90ZWxlbWV0cnlTZXJ2aWNlIiwibG9nUmVjb3JkIiwiX2xvZ3MiLCJzZW5kTG9nc0lmQWJsZSIsImxvZ01lc3NhZ2VzIiwiX3NlbmRMb2dzSWZBYmxlIiwibnVtYmVyT2ZMb2dzVG9TZW5kIiwic2l6ZU9mTG9nc1RvU2VuZCIsImdldEl0ZW1TaXplIiwiZ2V0TG9nU2l6ZSIsInN1bSIsImR1cmF0aW9uIiwiX2R1cmF0aW9uIiwiaXNOZWdhdGl2ZSIsImFicyIsIm9mZnNldCIsIm1pbGxpc2Vjb25kcyIsInNlY29uZHMiLCJtaW51dGVzIiwiaG91cnMiLCJwYXJ0cyIsIlN0cmluZyIsInBhZFN0YXJ0IiwidGFyZ2V0TGVuZ3RoIiwicGFkU3RyaW5nIiwicmVwZWF0IiwiZGVmYXVsdEJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJkZWZhdWx0TWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsImRlZmF1bHRNYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIm1pbkJhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJtYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiX2JhY2tvZmZJbnRlcnZhbEluTWlsbGlzZWNvbmQiLCJfbWluQmFja29mZkludGVydmFsSW5NaWxsaXNlY29uZCIsIl9tYXhCYWNrb2ZmSW50ZXJ2YWxJbk1pbGxpc2Vjb25kIiwiYmFja29mZkludGVydmFsSW5TZWNvbmRzIiwicmFuZG9taXphdGlvbiIsImV4cG9uZW50aWFsQmFja29mZiIsImV4cG9uZW50aWFsQmFja29mZldpdGhSYW5kb21pemF0aW9uIiwiZXhwb25lbnRpYWxCYWNrb2ZmV2l0aFJhbmRvbWl6YXRpb25Jbk1pbGxpc2Vjb25kIiwibWF4IiwibWluIiwiX25ldHdvcmtNb25pdG9yIiwicmVjb3JkRm9yZWdyb3VuZENoYW5nZSIsInJlY29yZE5ldHdvcmtSVFRVcGRhdGUiLCJyZWNvcmROZXR3b3JrVHlwZUNoYW5nZVVwZGF0ZSIsImRvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5IiwicmVjb3JkTmV0d29ya0Rvd25saW5rVGhyb3VnaHB1dENhcGFjaXR5VXBkYXRlIiwidGltZVNpbmNlTGFzdENoYW5nZSIsIm5ld1JUVCIsIm9sZFJ0dCIsIl9sYXN0TmV0d29ya1N0YXRpc3RpY3MiLCJuZXdOZXR3b3JrVHlwZSIsIm9sZE5ldHdvcmtUeXBlIiwibmV3Q2FwYWNpdHkiLCJvbGRDYXBhY2l0eSIsImZsb2F0Il0sInNvdXJjZVJvb3QiOiIifQ==
|