single-scripture-rcl 3.4.20-beta.18 → 3.4.21-beta.5
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.
|
@@ -516,7 +516,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
516
516
|
*/
|
|
517
517
|
function setEditVerse(verseRef, editing) {
|
|
518
518
|
if (editing && verseRef !== editVerse) {
|
|
519
|
-
// if we need to set flag that we are editing this verse
|
|
519
|
+
// check if we need to set flag that we are editing this verse
|
|
520
520
|
setState({
|
|
521
521
|
editVerse: verseRef
|
|
522
522
|
});
|
|
@@ -566,10 +566,12 @@ export default function ScriptureCard(_ref2) {
|
|
|
566
566
|
};
|
|
567
567
|
}, [scaledFontSize]);
|
|
568
568
|
var contentStyle = React.useMemo(function () {
|
|
569
|
-
return {
|
|
569
|
+
return _objectSpread({
|
|
570
570
|
fontFamily: 'Noto Sans',
|
|
571
571
|
fontSize: "".concat(scaledFontSize, "%")
|
|
572
|
-
}
|
|
572
|
+
}, isHebrew ? {
|
|
573
|
+
lineHeight: '2.0em'
|
|
574
|
+
} : {});
|
|
573
575
|
}, [scaledFontSize]);
|
|
574
576
|
var scriptureLabel = /*#__PURE__*/React.createElement(Title, null, scriptureTitle);
|
|
575
577
|
var disableWordPopover_ = disableWordPopover;
|
|
@@ -756,6 +758,12 @@ export default function ScriptureCard(_ref2) {
|
|
|
756
758
|
});
|
|
757
759
|
return true;
|
|
758
760
|
}
|
|
761
|
+
function logChanged(comment, initial, _final, diff, sha) {
|
|
762
|
+
console.error("".concat(comment, " - sha:"), sha);
|
|
763
|
+
console.error("initial", initial);
|
|
764
|
+
console.error("final", _final);
|
|
765
|
+
console.error("diff", diff);
|
|
766
|
+
}
|
|
759
767
|
var _saveEdit = /*#__PURE__*/function () {
|
|
760
768
|
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
761
769
|
var uploadFunction, success, error, results, _saveContent, fileSha, savedBibleUsfm, editedBibleUsfm, upToDate, diffPatch;
|
|
@@ -775,17 +783,18 @@ export default function ScriptureCard(_ref2) {
|
|
|
775
783
|
// push change to server
|
|
776
784
|
error = success ? null : 'saving changed scripture failed';
|
|
777
785
|
if (success) {
|
|
778
|
-
_context.next =
|
|
786
|
+
_context.next = 37;
|
|
779
787
|
break;
|
|
780
788
|
}
|
|
781
789
|
// if save failed, attempt a retry
|
|
790
|
+
logChanged('saveChangesToCloud() - saving changed scripture failed, sent', saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent.initial, saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent["new"], saveContent, sha);
|
|
782
791
|
console.error('saveChangesToCloud() - saving changed scripture failed, retrying');
|
|
783
|
-
_context.next =
|
|
792
|
+
_context.next = 12;
|
|
784
793
|
return delay(500);
|
|
785
|
-
case
|
|
786
|
-
_context.next =
|
|
794
|
+
case 12:
|
|
795
|
+
_context.next = 14;
|
|
787
796
|
return fetchBibleBook(server, httpConfig, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.resource, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reference);
|
|
788
|
-
case
|
|
797
|
+
case 14:
|
|
789
798
|
results = _context.sent;
|
|
790
799
|
error = results === null || results === void 0 ? void 0 : results.error;
|
|
791
800
|
_saveContent = saveContent;
|
|
@@ -794,49 +803,50 @@ export default function ScriptureCard(_ref2) {
|
|
|
794
803
|
editedBibleUsfm = saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent["new"];
|
|
795
804
|
upToDate = savedBibleUsfm === editedBibleUsfm; // check if new bible content differs from latest on repo
|
|
796
805
|
if (error) {
|
|
797
|
-
_context.next =
|
|
806
|
+
_context.next = 37;
|
|
798
807
|
break;
|
|
799
808
|
}
|
|
800
809
|
if (!upToDate) {
|
|
801
|
-
_context.next =
|
|
810
|
+
_context.next = 27;
|
|
802
811
|
break;
|
|
803
812
|
}
|
|
804
813
|
// if the data we are trying to save matches what is now on the server there is nothing to do
|
|
805
814
|
console.log('saveChangesToCloud() - data was correctly uploaded, so nothing more to do');
|
|
806
815
|
success = true;
|
|
807
|
-
_context.next =
|
|
816
|
+
_context.next = 37;
|
|
808
817
|
break;
|
|
809
|
-
case
|
|
818
|
+
case 27:
|
|
810
819
|
if (!saveDiffPatch) {
|
|
811
|
-
_context.next =
|
|
820
|
+
_context.next = 33;
|
|
812
821
|
break;
|
|
813
822
|
}
|
|
814
|
-
_context.next =
|
|
823
|
+
_context.next = 30;
|
|
815
824
|
return delay(100);
|
|
816
|
-
case
|
|
825
|
+
case 30:
|
|
817
826
|
// allow UI to update before running computationally expensive function
|
|
818
827
|
// regenerate the patch against the latest content
|
|
819
828
|
diffPatch = getPatch(saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent.filename, savedBibleUsfm, editedBibleUsfm, false);
|
|
820
829
|
_saveContent = diffPatch;
|
|
821
830
|
fileSha = results === null || results === void 0 ? void 0 : results.sha;
|
|
822
|
-
case
|
|
823
|
-
_context.next =
|
|
831
|
+
case 33:
|
|
832
|
+
_context.next = 35;
|
|
824
833
|
return uploadFunction(userEditBranchName, _saveContent, fileSha);
|
|
825
|
-
case
|
|
834
|
+
case 35:
|
|
826
835
|
success = _context.sent;
|
|
827
836
|
// push change to server
|
|
828
837
|
if (!success) {
|
|
838
|
+
logChanged('saveChangesToCloud() - saving changed scripture failed on second attempt, sent', savedBibleUsfm, editedBibleUsfm, _saveContent, fileSha);
|
|
829
839
|
error = 'saving changed scripture failed on second attempt';
|
|
830
840
|
} else {
|
|
831
841
|
console.log('saveChangesToCloud() - save successful on second attempt');
|
|
832
842
|
}
|
|
833
|
-
case
|
|
843
|
+
case 37:
|
|
834
844
|
if (!(!error && success)) {
|
|
835
|
-
_context.next =
|
|
845
|
+
_context.next = 39;
|
|
836
846
|
break;
|
|
837
847
|
}
|
|
838
848
|
return _context.abrupt("return", _saveSuccesful());
|
|
839
|
-
case
|
|
849
|
+
case 39:
|
|
840
850
|
console.error("saveChangesToCloud() - ".concat(error || 'unknown save error'));
|
|
841
851
|
setCardsSaving(function (prevCardsSaving) {
|
|
842
852
|
return prevCardsSaving.filter(function (cardId) {
|
|
@@ -847,7 +857,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
847
857
|
startSave: false
|
|
848
858
|
});
|
|
849
859
|
return _context.abrupt("return", false);
|
|
850
|
-
case
|
|
860
|
+
case 43:
|
|
851
861
|
case "end":
|
|
852
862
|
return _context.stop();
|
|
853
863
|
}
|
|
@@ -1347,7 +1357,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1347
1357
|
showAlignmentPopup: true
|
|
1348
1358
|
});
|
|
1349
1359
|
} else if ((versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.length) === 1) {
|
|
1350
|
-
// if only one verse is shown, then edit that verse
|
|
1360
|
+
// if only one verse is shown on card, then edit that verse
|
|
1351
1361
|
setState({
|
|
1352
1362
|
verseSelectedForAlignment: versesForRef[0]
|
|
1353
1363
|
});
|
|
@@ -1555,4 +1565,4 @@ ScriptureCard.propTypes = {
|
|
|
1555
1565
|
/** use method for using local storage specific for user */
|
|
1556
1566
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1557
1567
|
};
|
|
1558
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2VsZWN0aW9uc1JlZnMiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJfdXNlVXNlckJyYW5jaCRzdGF0ZSIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkYWN0aW9uIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsImZpbmlzaEVkaXQiLCJfdXNlQnJhbmNoTWVyZ2VyIiwidXNlckJyYW5jaCIsInRva2VuaWQiLCJ0b2tlbiIsInNoYTEiLCJfdXNlQnJhbmNoTWVyZ2VyJHN0YXQiLCJtZXJnZVRvTWFzdGVyIiwibWVyZ2VTdGF0dXMiLCJtZXJnZUZyb21NYXN0ZXIiLCJ1cGRhdGVTdGF0dXMiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJvcmlnaW5hbFJlcG9VcmwiLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiY3VycmVudFZlcnNlUmVmIiwiX3NldFNhdmVkQ2hhbmdlcyIsInNvdXJjZUxhbmd1YWdlIiwidGFyZ2V0TGFuZ3VhZ2UiLCJjdXJyZW50SW5kZXgiLCJzYXZlZCIsIl9yZWYzIiwiX3JlZjMkZ2V0Q2hhbmdlcyIsImdldENoYW5nZXMiLCJfcmVmMyRjbGVhckNoYW5nZXMiLCJjbGVhckNoYW5nZXMiLCJfcmVmMyRzdGF0ZSIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJfaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiX3NjcmlwdHVyZUNvbmZpZyRyZWZlIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiX3VzZUVkaXQiLCJjb250ZW50IiwiY29uZmlnIiwiZG9udENyZWF0ZUJyYW5jaCIsInRpbWVvdXQiLCJzZXJ2ZXJUaW1lT3V0IiwiYXV0aG9yIiwiZW1haWwiLCJ1c2VyIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIm9uU2F2ZUVkaXRQYXRjaCIsIl9zYXZlU3VjY2VzZnVsIiwicHJldkNhcmRzU2F2aW5nIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJjYXJkSW5kZXgiLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJ1cGxvYWRGdW5jdGlvbiIsInN1Y2Nlc3MiLCJyZXN1bHRzIiwiX3NhdmVDb250ZW50IiwiZmlsZVNoYSIsInNhdmVkQmlibGVVc2ZtIiwiZWRpdGVkQmlibGVVc2ZtIiwidXBUb0RhdGUiLCJkaWZmUGF0Y2giLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtSW5pdGlhbCIsImJpYmxlVXNmbU5ldyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIl9zYXZlRnVsbEJpYmxlQ29udGVudCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJpbml0aWFsIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJib29rSWRfIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJkZXRlcm1pbmluZ0JyYW5jaCIsIm9uQWxpZ25tZW50RmluaXNoIiwic2F2aW5nIiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIl9yZWYxMCIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJjb2xvciIsIm9uQ2xpY2siLCJjdXJzb3IiLCJGcmFnbWVudCIsIm9wZW4iLCJvbkNsb3NlIiwibGluayIsImxpbmtUb29sdGlwIiwic2VsZWN0aW9uQm9va09iamVjdHMiLCJvblNlbGVjdGlvbnMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZmV0Y2hCaWJsZUJvb2ssXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5pbXBvcnQgeyBnZXRQYXRjaCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGVzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgVmVyc2VPYmplY3RzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlOiByZWZlcmVuY2VfLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlXz8uYm9va0lkIHx8IHJlZmVyZW5jZV8/LnByb2plY3RJZCAvLyBvbGRlciB2ZXJzaW9ucyB1c2UgcHJvamVjdElkLCBzbyBmYWxsIGJhY2sgdG8gdGhhdFxuICBjb25zdCByZWZlcmVuY2UgPSB7XG4gICAgYm9va0lkLFxuICAgIGNoYXB0ZXI6IHJlZmVyZW5jZV8/LmNoYXB0ZXIsXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxuICB9XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzYXZlRGlmZlBhdGNoOiBmYWxzZSxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2VsZWN0aW9uc1JlZnM6ICcnLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGVkaXRWZXJzZSwgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBiZWluZyBlZGl0dGVkXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UsIGVkaXRWZXJzZTogbnVsbCB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICAvKipcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSBiZWluZyBlZGl0ZWQgb3IgZmluaXNoZWQgZWRpdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlIHdoZW4gZWRpdGluZ1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBlZGl0aW5nKSB7XG4gICAgaWYgKGVkaXRpbmcgJiYgKHZlcnNlUmVmICE9PSBlZGl0VmVyc2UpKSB7IC8vIGlmIHdlIG5lZWQgdG8gc2V0IGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyB0aGlzIHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcbiAgICB9IGVsc2UgaWYgKCFlZGl0aW5nICYmICh2ZXJzZVJlZiA9PT0gZWRpdFZlcnNlKSkgeyAvLyBjbGVhciBlZGl0IGZsYWcgaWYgaXQgaXMgZm9yIGN1cnJlbnQgZWRpdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9ICEhZWRpdFZlcnNlIC8vIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgY2xpY2tpbmcgb24gY2hhbmdlIGJ1dHRvbnMgd2hpbGUgZWRpdGluZ1xuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5ib29rSWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLmJvb2tJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG4gIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZT8uc2hhXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gICAgb25TYXZlRWRpdFBhdGNoLFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgZG9udENyZWF0ZUJyYW5jaDogdHJ1ZSxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICBlbWFpbDogYXV0aGVudGljYXRpb24/LnVzZXI/LmVtYWlsLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvciAmJiAhc3RhcnRTYXZlKSB7IC8vIGlmIGVycm9yIHRoZW4gc2hvdyBhZnRlciBzYXZlIGNvbXBsZXRlcywgc2luY2Ugd2UgbWF5IHJldHJ5XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3IsIHN0YXJ0U2F2ZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGZ1bmN0aW9uIF9zYXZlU3VjY2VzZnVsKCkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjb25zdCB7Y2xlYXJDaGFuZ2VzfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgICAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB9KVxuICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgfSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGNvbnNvbGUuaW5mbyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBVc2luZyBzaGE6ICR7c2hhfWApXG4gICAgICBsZXQgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0XG4gICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cbiAgICAgIGxldCBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lKS8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgbGV0IGVycm9yID0gc3VjY2VzcyA/IG51bGwgOiAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCdcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7IC8vIGlmIHNhdmUgZmFpbGVkLCBhdHRlbXB0IGEgcmV0cnlcbiAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCByZXRyeWluZycpXG4gICAgICAgIGF3YWl0IGRlbGF5KDUwMCkgLy8gc2luY2Ugd2UgaGFkIGFuIGVycm9yLCB3YWl0IGZvciBkYXRhIHRvIHVwZGF0ZSBvbiBzZXJ2ZXIgYmVmb3JlIGdldHRpbmcgdGhlIGxhdGVzdFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIC8vIGZldGNoIHRoZSBsYXRlc3QgYm9vayBjb250ZW50LCBzbyB3ZSBjYW4gdGVsbCBpZiBsYXRlc3QgY2hhbmdlcyB3ZXJlIHNhdmVkIGFuZCBoYXZlIHRoZSBsYXRlc3QgZmlsZSBzaGFcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGZldGNoQmlibGVCb29rKHNlcnZlciwgaHR0cENvbmZpZywgc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZSwgc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UpXG4gICAgICAgIGVycm9yID0gcmVzdWx0cz8uZXJyb3JcbiAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IHNhdmVDb250ZW50XG4gICAgICAgIGxldCBmaWxlU2hhID0gbnVsbFxuICAgICAgICBjb25zdCBzYXZlZEJpYmxlVXNmbSA9IHJlc3VsdHM/LmJpYmxlVXNmbVxuICAgICAgICBjb25zdCBlZGl0ZWRCaWJsZVVzZm0gPSBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3XG4gICAgICAgIGxldCB1cFRvRGF0ZSA9IHNhdmVkQmlibGVVc2ZtID09PSBlZGl0ZWRCaWJsZVVzZm0gLy8gY2hlY2sgaWYgbmV3IGJpYmxlIGNvbnRlbnQgZGlmZmVycyBmcm9tIGxhdGVzdCBvbiByZXBvXG5cbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgIGlmICh1cFRvRGF0ZSkgeyAvLyBpZiB0aGUgZGF0YSB3ZSBhcmUgdHJ5aW5nIHRvIHNhdmUgbWF0Y2hlcyB3aGF0IGlzIG5vdyBvbiB0aGUgc2VydmVyIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGRhdGEgd2FzIGNvcnJlY3RseSB1cGxvYWRlZCwgc28gbm90aGluZyBtb3JlIHRvIGRvJylcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEwMCkgLy8gYWxsb3cgVUkgdG8gdXBkYXRlIGJlZm9yZSBydW5uaW5nIGNvbXB1dGF0aW9uYWxseSBleHBlbnNpdmUgZnVuY3Rpb25cbiAgICAgICAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgcGF0Y2ggYWdhaW5zdCB0aGUgbGF0ZXN0IGNvbnRlbnRcbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmZpbGVuYW1lLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBmYWxzZSlcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoXG4gICAgICAgICAgICAgIGZpbGVTaGEgPSByZXN1bHRzPy5zaGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSwgX3NhdmVDb250ZW50LCBmaWxlU2hhKSAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICBlcnJvciA9ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkIG9uIHNlY29uZCBhdHRlbXB0J1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzdWNjZXNzZnVsIG9uIHNlY29uZCBhdHRlbXB0JylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvciAmJiBzdWNjZXNzKSB7IC8vIGlmIG5vIGVycm9yIG1lc3NhZ2UgYW5kIHNhdmUgd2FzIGEgc3VjY2Vzc1xuICAgICAgICByZXR1cm4gX3NhdmVTdWNjZXNmdWwoKSAvLyBub3RoaW5nIHRvIGRvXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gJHtlcnJvciB8fCAndW5rbm93biBzYXZlIGVycm9yJ31gKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe3N0YXJ0U2F2ZTogZmFsc2V9KVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7U2NyaXB0dXJlUmVmZXJlbmNlVHlwZX0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm06IHN0cmluZywgcmVmOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCB1cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbUluaXRpYWwgPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtTmV3ID0gYmlibGVVc2ZtSW5pdGlhbCAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCkge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbU5ldykgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtTmV3LCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbU5ldyA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgIGxldCBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSBudWxsXG4gICAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IGJpYmxlVXNmbU5ld1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm1OZXcgJiYgYmlibGVVc2ZtSW5pdGlhbCkgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwgPT09IGJpYmxlVXNmbU5ldykgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1Jbml0aWFsLCBiaWJsZVVzZm1OZXcsIGZhbHNlKVxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoID0gdHJ1ZVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2ggLy8gcmVwbGFjZSB3aG9sZSBib29rIGNvbnRlbnQgd2l0aCBqdXN0IHBhdGNoIGRhdGEgKG11Y2ggZmFzdGVyIHVwbG9hZHMpXG4gICAgICAgICAgICAgIF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IHsgIC8vIGtlZXAgdHJhY2sgb2YgcGF0Y2ggZGF0YSBpbiBjYXNlIHdlIG5lZWQgdG8gcmV0cnkgc2F2ZVxuICAgICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIGluaXRpYWw6IGJpYmxlVXNmbUluaXRpYWwsXG4gICAgICAgICAgICAgICAgbmV3OiBiaWJsZVVzZm1OZXcsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtTmV3KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtTmV3LnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogX3NhdmVDb250ZW50LFxuICAgICAgICAgICAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgICAgICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHN0YXJ0U2F2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnNSZWZzID0gX21hcCA/IFsuLi5fbWFwLmtleXMoKV0uam9pbignOycpIDogJycgLy8gY29tYmluZSBhbGwgdGhlIHZlcnNlIHJlZmVyZW5jZXMgaW50byBhIHNpbmdsZSB2ZXJzZSByZWZlcmVuY2UgZm9yIHRoZSBzZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5ib29rSWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgYWxpZ25lZDogYm9vbGVhbikgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBib29rSWRfID0gY3VycmVudFJlZmVyZW5jZT8uYm9va0lkIHx8IGJvb2tJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIGJvb2tJZDogYm9va0lkXyxcbiAgICAgIHZlcnNlLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRFZGl0VmVyc2U9e3NldEVkaXRWZXJzZX1cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7IC8vIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSB2ZXJzZXMgc2hvd24gaW4gY2FyZCwgbmVlZCB0byBwcm9tcHQgdXNlciBmb3Igd2hpY2ggdmVyc2UgdG8gYWxpZ25cbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkgeyAvLyBpZiBvbmx5IG9uZSB2ZXJzZSBpcyBzaG93biwgdGhlbiBlZGl0IHRoYXQgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPyAnI0JCQicgOiAnIzAwMCcgLy8gZ3JheSBvdXQgYnV0dG9uIGlmIGRpc2FibGVkXG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9e2NvbG9yfSAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2Rpc2FibGVDaGFuZ2VCdXR0b25zID8gbnVsbCA6IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBPbmx5IHNob3cgdGhlIHVwZGF0ZSBmcm9tIG1haW4gYnV0dG9uIGlmIHNjcmlwdHVyZSBpcyBub3Qgb3JpZ2luYWwgdGV4dC5cbiAgICAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIG5ld0l0ZW1zLnB1c2goXG4gICAgICA8PlxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XG4gICAgICAgIDxFcnJvckRpYWxvZyB0aXRsZT17ZGlhbG9nVGl0bGV9IGNvbnRlbnQ9e2RpYWxvZ01lc3NhZ2V9IG9wZW49e2lzRXJyb3JEaWFsb2dPcGVufSBvbkNsb3NlPXtvbkNsb3NlRXJyb3JEaWFsb2d9IGlzTG9hZGluZz17IGlzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmUgfSBsaW5rPXtkaWFsb2dMaW5rfSBsaW5rVG9vbHRpcD17ZGlhbG9nTGlua1Rvb2x0aXB9IC8+XG4gICAgICA8Lz5cbiAgICApXG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGlvbkJvb2tPYmplY3RzID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBib29rT2JqZWN0PXtzZWxlY3Rpb25Cb29rT2JqZWN0cyB8fCB7fX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGUgfHwgJyd9XG4gICAgICByZWZTdHJpbmc9e3NlbGVjdGlvbnNSZWZzfVxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17ZGlzYWJsZUNoYW5nZUJ1dHRvbnMgfHwgc3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9IC8vIGdyYXkgb3V0IHNhdmUgYnV0dG9uIGlmIGRpc2FibGVkLCBpZiBzYXZpbmcsIG9yIGlmIG5vIHVuc2F2ZWQgY2hhbmdlc1xuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBib29rIElEIHRvIHVzZSwgb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkICovXG4gICAgYm9va0lkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCBpbnN0ZWFkIG9mIGJvb2tJZCAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXG4gIHNldEFyZVJlc291cmNlc0xvYWRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHNhdmluZyBzdGF0ZSovXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBtZXJnZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgc2F2aW5nIHN0YXR1cyAqL1xuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xuICB1cGRhdGVNZXJnZVN0YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdLCJtYXBwaW5ncyI6IjsrQ0FDQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsSUFBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsQ0FBQU8sS0FBQSxLQUFBQyxDQUFBLHdCQUFBQyxNQUFBLEdBQUFBLE1BQUEsT0FBQUMsQ0FBQSxHQUFBRixDQUFBLENBQUFHLFFBQUEsa0JBQUFDLENBQUEsR0FBQUosQ0FBQSxDQUFBSyxhQUFBLHVCQUFBQyxDQUFBLEdBQUFOLENBQUEsQ0FBQU8sV0FBQSw4QkFBQUMsT0FBQWpCLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFDLE1BQUEsQ0FBQUssY0FBQSxDQUFBUCxDQUFBLEVBQUFELENBQUEsSUFBQVMsS0FBQSxFQUFBUCxDQUFBLEVBQUFpQixVQUFBLE1BQUFDLFlBQUEsTUFBQUMsUUFBQSxTQUFBcEIsQ0FBQSxDQUFBRCxDQUFBLFdBQUFrQixNQUFBLG1CQUFBakIsQ0FBQSxJQUFBaUIsTUFBQSxZQUFBQSxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUQsQ0FBQSxDQUFBRCxDQUFBLElBQUFFLENBQUEsZ0JBQUFvQixLQUFBckIsQ0FB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
|
|
1568
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjMiLCJfdmVyc2VzRm9yUmVmNCIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJvbk1pbmltaXplIiwib25SZXNvdXJjZUVycm9yIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZV8iLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2VsZWN0aW9uc1JlZnMiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJjYXJkUmVzb3VyY2VJZCIsInJlZl8iLCJjYW5Vc2VFZGl0QnJhbmNoIiwiX3VzZVVzZXJCcmFuY2giLCJjYXJkSWQiLCJfdXNlVXNlckJyYW5jaCRzdGF0ZSIsImJyYW5jaERldGVybWluZWQiLCJ1c2VyRWRpdEJyYW5jaE5hbWUiLCJfdXNpbmdVc2VyQnJhbmNoIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX3VzZVVzZXJCcmFuY2gkYWN0aW9uIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsImZpbmlzaEVkaXQiLCJfdXNlQnJhbmNoTWVyZ2VyIiwidXNlckJyYW5jaCIsInRva2VuaWQiLCJ0b2tlbiIsInNoYTEiLCJfdXNlQnJhbmNoTWVyZ2VyJHN0YXQiLCJtZXJnZVRvTWFzdGVyIiwibWVyZ2VTdGF0dXMiLCJtZXJnZUZyb21NYXN0ZXIiLCJ1cGRhdGVTdGF0dXMiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsImxpbmVIZWlnaHQiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJfc2F2ZVN1Y2Nlc2Z1bCIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibG9nQ2hhbmdlZCIsImNvbW1lbnQiLCJpbml0aWFsIiwiZmluYWwiLCJkaWZmIiwiX3NhdmVFZGl0IiwiX3JlZjQiLCJfY2FsbGVlIiwidXBsb2FkRnVuY3Rpb24iLCJzdWNjZXNzIiwicmVzdWx0cyIsIl9zYXZlQ29udGVudCIsImZpbGVTaGEiLCJzYXZlZEJpYmxlVXNmbSIsImVkaXRlZEJpYmxlVXNmbSIsInVwVG9EYXRlIiwiZGlmZlBhdGNoIiwiX2NhbGxlZSQiLCJfY29udGV4dCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJmcm9udE1hdHRlciIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInByZWZpeExlbiIsImluZGV4T2YiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiX2dldFJlYWR5Rm9yU2F2ZSIsIl9jYWxsZWUyIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbUluaXRpYWwiLCJiaWJsZVVzZm1OZXciLCJtZXJnZUZhaWwiLCJfY2FyZE51bSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8iLCJfc3RhdGUiLCJfZ2V0Q2hhbmdlcyIsIl9yZWY1IiwiX3NhdmVEaWZmUGF0Y2giLCJfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJuZXdCb29rSnNvbiIsIl9pdGVyYXRvcjMiLCJfc3RlcDMiLCJfY2FyZEluZGV4IiwiX2NhcmROdW0yIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfMiIsIl9nZXRDaGFuZ2VzMiIsIl9zdGF0ZTIiLCJfbmV3VXNmbSIsIl9nZXRDaGFuZ2VzMyIsIm5ld1ZlcnNlVGV4dCIsIl9yZWY2IiwiX3VwZGF0ZWRWZXJzZU9iamVjdHMiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTEiLCJfY2FsbGVlMiQiLCJfY29udGV4dDIiLCJwYXJzZUludCIsInQwIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3JlZjciLCJfdmVyc2VzRm9yUmVmIiwibmV3U2VsZWN0aW9ucyIsInVwZGF0ZVNlbGVjdGlvbnMiLCJfbWFwIiwib3JpZ2luYWxCb29rSWQiLCJib29rVmVyc2VPYmplY3QiLCJjaGFwdGVycyIsIm5ld1NlbGVjdGVkUXVvdGUiLCJxdW90ZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTMiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwiX2l0ZXJhdG9yNCIsIl9zdGVwNCIsInZlcnNlSXRlbSIsInZvIiwiX2Jvb2tWZXJzZU9iamVjdCRfY2hhIiwic2V0IiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMiIsInN1YlJlZiIsInF1b3RlTWF0Y2hlcyIsImJvb2tPYmplY3QiLCJvY2N1cnJlbmNlIiwic2l6ZSIsIndvcmRzIiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsIl92ZXJzZXNGb3JSZWYyIiwiX3JlZjgiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJfY3VycmVudFZlcnNlRGF0YSR2ZXIiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZjkiLCJib29rSWRfIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJkZXRlcm1pbmluZ0JyYW5jaCIsIm9uQWxpZ25tZW50RmluaXNoIiwic2F2aW5nIiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIl9yZWYxMCIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJjb2xvciIsIm9uQ2xpY2siLCJjdXJzb3IiLCJGcmFnbWVudCIsIm9wZW4iLCJvbkNsb3NlIiwibGluayIsImxpbmtUb29sdGlwIiwic2VsZWN0aW9uQm9va09iamVjdHMiLCJvblNlbGVjdGlvbnMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZmV0Y2hCaWJsZUJvb2ssXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5pbXBvcnQgeyBnZXRQYXRjaCB9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGVzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgVmVyc2VPYmplY3RzVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCA/IEpTT04uc3RyaW5naWZ5KHZlcnNlRGF0YS52ZXJzZU9iamVjdHMpIDogJydcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbi8qKlxuICogZ2V0IHRoZSBVU0ZNIGZvciBib29rSWQgZnJvbSBzY3JpcHR1cmVDb25maWcuXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDdXJyZW50Qm9vayA9IChzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgPT4ge1xuICBjb25zdCBsYXRlc3RCaWJsZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnByb2plY3RJZFxuICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgbGV0IGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgY29uc3QgYm9va05hbWUgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpXG4gIGlzQm9va1ZhbGlkID0gYm9va05hbWU/LnRvTG93ZXJDYXNlKCk/LmluY2x1ZGVzKGJvb2tJZClcbiAgaWYgKCFpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBVU0ZNIGZpbGUgaXMgJHtmaWxlbmFtZX1gKVxuICB9XG4gIGlmIChsYXRlc3RCaWJsZT8udG9Mb3dlckNhc2UoKSAhPT0gYm9va0lkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYnV0IGZldGNoZWQgcHJvamVjdElkIGlzICR7bGF0ZXN0QmlibGV9YClcbiAgICBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIH1cbiAgaWYgKGlzQm9va1ZhbGlkKSB7XG4gICAgY29uc3QgYmlibGVVc2ZtID0gc2NyaXB0dXJlQ29uZmlnPy5iaWJsZVVzZm07XG4gICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgcmV0dXJuIGJpYmxlVXNmbVxuICAgIH1cbiAgICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gQmlibGUgVVNGTSBtaXNzaW5nYClcbiAgfVxuICBjb25zb2xlLmVycm9yKGBnZXRDdXJyZW50Qm9vaygpIC0gRXhwZWN0ZWQgJHtib29rSWR9IGJ1dCBnb3QgZmlsZSAke2ZpbGVuYW1lfWApXG4gIHJldHVybiBudWxsXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlOiByZWZlcmVuY2VfLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRDYXJkc0xvYWRpbmdNZXJnZSxcbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlLFxuICBzZXRDYXJkc1NhdmluZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgdXBkYXRlTWVyZ2VTdGF0ZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlXz8uYm9va0lkIHx8IHJlZmVyZW5jZV8/LnByb2plY3RJZCAvLyBvbGRlciB2ZXJzaW9ucyB1c2UgcHJvamVjdElkLCBzbyBmYWxsIGJhY2sgdG8gdGhhdFxuICBjb25zdCByZWZlcmVuY2UgPSB7XG4gICAgYm9va0lkLFxuICAgIGNoYXB0ZXI6IHJlZmVyZW5jZV8/LmNoYXB0ZXIsXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxuICB9XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzYXZlRGlmZlBhdGNoOiBmYWxzZSxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2VsZWN0aW9uc1JlZnM6ICcnLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGVkaXRWZXJzZSwgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBiZWluZyBlZGl0dGVkXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UsIGVkaXRWZXJzZTogbnVsbCB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICAvKipcbiAgICogc2V0IGVkaXQgc3RhdGUgZm9yIHNwZWNpZmljIHZlcnNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ZXJzZVJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSBiZWluZyBlZGl0ZWQgb3IgZmluaXNoZWQgZWRpdFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSB0cnVlIHdoZW4gZWRpdGluZ1xuICAgKi9cbiAgZnVuY3Rpb24gc2V0RWRpdFZlcnNlKHZlcnNlUmVmLCBlZGl0aW5nKSB7XG4gICAgaWYgKGVkaXRpbmcgJiYgKHZlcnNlUmVmICE9PSBlZGl0VmVyc2UpKSB7IC8vIGNoZWNrIGlmIHdlIG5lZWQgdG8gc2V0IGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyB0aGlzIHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogdmVyc2VSZWYgfSlcbiAgICB9IGVsc2UgaWYgKCFlZGl0aW5nICYmICh2ZXJzZVJlZiA9PT0gZWRpdFZlcnNlKSkgeyAvLyBjbGVhciBlZGl0IGZsYWcgaWYgaXQgaXMgZm9yIGN1cnJlbnQgZWRpdCB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXNhYmxlQ2hhbmdlQnV0dG9ucyA9ICEhZWRpdFZlcnNlIC8vIHdlIGRvbid0IHdhbnQgdG8gYWxsb3cgY2xpY2tpbmcgb24gY2hhbmdlIGJ1dHRvbnMgd2hpbGUgZWRpdGluZ1xuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gICAgLi4uKGlzSGVicmV3ID8ge2xpbmVIZWlnaHQ6ICcyLjBlbSd9IDoge30pXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IF9yZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5ib29rSWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLmJvb2tJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG4gIGNvbnN0IHNoYSA9IGZldGNoZWRSZXNvdXJjZT8uc2hhXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gICAgb25TYXZlRWRpdFBhdGNoLFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgZG9udENyZWF0ZUJyYW5jaDogdHJ1ZSxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICBlbWFpbDogYXV0aGVudGljYXRpb24/LnVzZXI/LmVtYWlsLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHdlIGdldCBhIHNhdmUgc2F2ZUVycm9yXG4gICAgaWYgKHNhdmVFcnJvciAmJiBpc1NhdmVFcnJvciAmJiAhc3RhcnRTYXZlKSB7IC8vIGlmIGVycm9yIHRoZW4gc2hvdyBhZnRlciBzYXZlIGNvbXBsZXRlcywgc2luY2Ugd2UgbWF5IHJldHJ5XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3IsIHN0YXJ0U2F2ZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGZ1bmN0aW9uIF9zYXZlU3VjY2VzZnVsKCkge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjb25zdCB7Y2xlYXJDaGFuZ2VzfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkSW5kZXhdXG4gICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgICAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICAgICAgcmVmOiB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB9KVxuICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgfSlcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9nQ2hhbmdlZChjb21tZW50LCBpbml0aWFsLCBmaW5hbCwgZGlmZiwgc2hhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke2NvbW1lbnR9IC0gc2hhOmAsIHNoYSlcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGluaXRpYWxgLCBpbml0aWFsKVxuICAgICAgY29uc29sZS5lcnJvcihgZmluYWxgLCBmaW5hbClcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGRpZmZgLCBkaWZmKVxuICAgIH1cblxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG4gICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSkvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgIGxldCBlcnJvciA9IHN1Y2Nlc3MgPyBudWxsIDogJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnXG5cbiAgICAgIGlmICghc3VjY2VzcykgeyAvLyBpZiBzYXZlIGZhaWxlZCwgYXR0ZW1wdCBhIHJldHJ5XG4gICAgICAgIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCwgc2VudCcsIHNhdmVGdWxsQmlibGVDb250ZW50Py5pbml0aWFsLCBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3LCBzYXZlQ29udGVudCwgc2hhKVxuICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nJylcbiAgICAgICAgYXdhaXQgZGVsYXkoNTAwKSAvLyBzaW5jZSB3ZSBoYWQgYW4gZXJyb3IsIHdhaXQgZm9yIGRhdGEgdG8gdXBkYXRlIG9uIHNlcnZlciBiZWZvcmUgZ2V0dGluZyB0aGUgbGF0ZXN0XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gZmV0Y2ggdGhlIGxhdGVzdCBib29rIGNvbnRlbnQsIHNvIHdlIGNhbiB0ZWxsIGlmIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2F2ZWQgYW5kIGhhdmUgdGhlIGxhdGVzdCBmaWxlIHNoYVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hCaWJsZUJvb2soc2VydmVyLCBodHRwQ29uZmlnLCBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlLCBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSlcbiAgICAgICAgZXJyb3IgPSByZXN1bHRzPy5lcnJvclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcbiAgICAgICAgbGV0IGZpbGVTaGEgPSBudWxsXG4gICAgICAgIGNvbnN0IHNhdmVkQmlibGVVc2ZtID0gcmVzdWx0cz8uYmlibGVVc2ZtXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcbiAgICAgICAgbGV0IHVwVG9EYXRlID0gc2F2ZWRCaWJsZVVzZm0gPT09IGVkaXRlZEJpYmxlVXNmbSAvLyBjaGVjayBpZiBuZXcgYmlibGUgY29udGVudCBkaWZmZXJzIGZyb20gbGF0ZXN0IG9uIHJlcG9cblxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgaWYgKHVwVG9EYXRlKSB7IC8vIGlmIHRoZSBkYXRhIHdlIGFyZSB0cnlpbmcgdG8gc2F2ZSBtYXRjaGVzIHdoYXQgaXMgbm93IG9uIHRoZSBzZXJ2ZXIgdGhlcmUgaXMgbm90aGluZyB0byBkb1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZGF0YSB3YXMgY29ycmVjdGx5IHVwbG9hZGVkLCBzbyBub3RoaW5nIG1vcmUgdG8gZG8nKVxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgICAgICAgYXdhaXQgZGVsYXkoMTAwKSAvLyBhbGxvdyBVSSB0byB1cGRhdGUgYmVmb3JlIHJ1bm5pbmcgY29tcHV0YXRpb25hbGx5IGV4cGVuc2l2ZSBmdW5jdGlvblxuICAgICAgICAgICAgICAvLyByZWdlbmVyYXRlIHRoZSBwYXRjaCBhZ2FpbnN0IHRoZSBsYXRlc3QgY29udGVudFxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChzYXZlRnVsbEJpYmxlQ29udGVudD8uZmlsZW5hbWUsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIGZhbHNlKVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2hcbiAgICAgICAgICAgICAgZmlsZVNoYSA9IHJlc3VsdHM/LnNoYVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpIC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgICAgICAgIGxvZ0NoYW5nZWQoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCwgc2VudCcsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIF9zYXZlQ29udGVudCwgZmlsZVNoYSlcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc3VjY2Vzc2Z1bCBvbiBzZWNvbmQgYXR0ZW1wdCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXJyb3IgJiYgc3VjY2VzcykgeyAvLyBpZiBubyBlcnJvciBtZXNzYWdlIGFuZCBzYXZlIHdhcyBhIHN1Y2Nlc3NcbiAgICAgICAgcmV0dXJuIF9zYXZlU3VjY2VzZnVsKCkgLy8gbm90aGluZyB0byBkb1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtICR7ZXJyb3IgfHwgJ3Vua25vd24gc2F2ZSBlcnJvcid9YClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtzdGFydFNhdmU6IGZhbHNlfSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge1NjcmlwdHVyZVJlZmVyZW5jZVR5cGV9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtOiBzdHJpbmcsIHJlZjogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSwgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBsZXQgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0gcmVmPy52ZXJzZSA9PT0gJ2Zyb250J1xuXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBuZXcgVVNGTSBmb3IgY2FyZCAke2NhcmROdW19LCB2ZXJzZSAke3JlZj8udmVyc2V9On0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1swXVxuICAgICAgICAgIGNvbnN0IHByZWZpeExlbiA9IG9sZFZlcnNlLmluZGV4T2YoJ1xcbicpIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmcm9udCBtYXR0ZXIgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzWzBdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHByZWZpeExlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSB2ZXJzZSB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm1Jbml0aWFsID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpIC8vIGdldCBvcmlnaW5hbCBVU0ZNXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbU5ldyA9IGJpYmxlVXNmbUluaXRpYWwgLy8gbWFrZSBhIGNvcHkgdG8gZWRpdFxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwpIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm1OZXcpIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbU5ldywgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm1OZXcgPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICBsZXQgX3NhdmVGdWxsQmlibGVDb250ZW50ID0gbnVsbFxuICAgICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBiaWJsZVVzZm1OZXdcblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG9ubHkgY2hhbmdlZCBhIGZldyB2ZXJzZXMsIHdlIHdpbGwganVzdCBtYWtlIGEgZGlmZnBhdGNoIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtTmV3ICYmIGJpYmxlVXNmbUluaXRpYWwpIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXG4gICAgICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsID09PSBiaWJsZVVzZm1OZXcpIHsgLy8gaWYgbm8gZGF0YSBjaGFuZ2UsIHRoZW4gc2tpcCBzYXZlIGJlY2F1c2UgRENTIGNyYXNoZXMgb24gYW4gZW1wdHkgcGF0Y2hcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gdGhlcmUgaXMgbm90aGluZyB0byBzYXZlLCBza2lwcGluZ2ApXG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtSW5pdGlhbCwgYmlibGVVc2ZtTmV3LCBmYWxzZSlcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayBjb250ZW50IHdpdGgganVzdCBwYXRjaCBkYXRhIChtdWNoIGZhc3RlciB1cGxvYWRzKVxuICAgICAgICAgICAgICBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSB7ICAvLyBrZWVwIHRyYWNrIG9mIHBhdGNoIGRhdGEgaW4gY2FzZSB3ZSBuZWVkIHRvIHJldHJ5IHNhdmVcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsOiBiaWJsZVVzZm1Jbml0aWFsLFxuICAgICAgICAgICAgICAgIG5ldzogYmlibGVVc2ZtTmV3LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbU5ldykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbU5ldy5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgc2F2ZUNvbnRlbnQ6IF9zYXZlQ29udGVudCxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogX3NhdmVGdWxsQmlibGVDb250ZW50LFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zUmVmcyA9IF9tYXAgPyBbLi4uX21hcC5rZXlzKCldLmpvaW4oJzsnKSA6ICcnIC8vIGNvbWJpbmUgYWxsIHRoZSB2ZXJzZSByZWZlcmVuY2VzIGludG8gYSBzaW5nbGUgdmVyc2UgcmVmZXJlbmNlIGZvciB0aGUgc2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8uYm9va0lkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIGFsaWduZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgYm9va0lkXyA9IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZCB8fCBib29rSWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBib29rSWQ6IGJvb2tJZF8sXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0RWRpdFZlcnNlPXtzZXRFZGl0VmVyc2V9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkgeyAvLyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2VzIHNob3duIGluIGNhcmQsIG5lZWQgdG8gcHJvbXB0IHVzZXIgZm9yIHdoaWNoIHZlcnNlIHRvIGFsaWduXG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHsgLy8gaWYgb25seSBvbmUgdmVyc2UgaXMgc2hvd24gb24gY2FyZCwgdGhlbiBlZGl0IHRoYXQgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPyAnI0JCQicgOiAnIzAwMCcgLy8gZ3JheSBvdXQgYnV0dG9uIGlmIGRpc2FibGVkXG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9e2NvbG9yfSAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2Rpc2FibGVDaGFuZ2VCdXR0b25zID8gbnVsbCA6IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBPbmx5IHNob3cgdGhlIHVwZGF0ZSBmcm9tIG1haW4gYnV0dG9uIGlmIHNjcmlwdHVyZSBpcyBub3Qgb3JpZ2luYWwgdGV4dC5cbiAgICAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIG5ld0l0ZW1zLnB1c2goXG4gICAgICA8PlxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XG4gICAgICAgIDxFcnJvckRpYWxvZyB0aXRsZT17ZGlhbG9nVGl0bGV9IGNvbnRlbnQ9e2RpYWxvZ01lc3NhZ2V9IG9wZW49e2lzRXJyb3JEaWFsb2dPcGVufSBvbkNsb3NlPXtvbkNsb3NlRXJyb3JEaWFsb2d9IGlzTG9hZGluZz17IGlzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmUgfSBsaW5rPXtkaWFsb2dMaW5rfSBsaW5rVG9vbHRpcD17ZGlhbG9nTGlua1Rvb2x0aXB9IC8+XG4gICAgICA8Lz5cbiAgICApXG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGlvbkJvb2tPYmplY3RzID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBib29rT2JqZWN0PXtzZWxlY3Rpb25Cb29rT2JqZWN0cyB8fCB7fX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGUgfHwgJyd9XG4gICAgICByZWZTdHJpbmc9e3NlbGVjdGlvbnNSZWZzfVxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17ZGlzYWJsZUNoYW5nZUJ1dHRvbnMgfHwgc3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9IC8vIGdyYXkgb3V0IHNhdmUgYnV0dG9uIGlmIGRpc2FibGVkLCBpZiBzYXZpbmcsIG9yIGlmIG5vIHVuc2F2ZWQgY2hhbmdlc1xuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBib29rIElEIHRvIHVzZSwgb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkICovXG4gICAgYm9va0lkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCBpbnN0ZWFkIG9mIGJvb2tJZCAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXG4gIHNldEFyZVJlc291cmNlc0xvYWRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHNhdmluZyBzdGF0ZSovXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBtZXJnZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgc2F2aW5nIHN0YXR1cyAqL1xuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xuICB1cGRhdGVNZXJnZVN0YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdLCJtYXBwaW5ncyI6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
|