single-scripture-rcl 3.4.12 → 3.4.13-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ScriptureCard/ScriptureCard.js +19 -6
- package/dist/components/ScripturePane/ScripturePane.js +41 -18
- package/dist/components/ScripturePane/styled.js +14 -3
- package/dist/hooks/useScripture.js +45 -2
- package/dist/hooks/useScriptureAlignmentEdit.js +3 -1
- package/dist/utils/ScriptureSettings.js +33 -1
- package/package.json +1 -1
|
@@ -4,6 +4,7 @@ import "core-js/modules/es.array.filter.js";
|
|
|
4
4
|
import "core-js/modules/es.array.find-index.js";
|
|
5
5
|
import "core-js/modules/es.array.for-each.js";
|
|
6
6
|
import "core-js/modules/es.array.includes.js";
|
|
7
|
+
import "core-js/modules/es.array.index-of.js";
|
|
7
8
|
import "core-js/modules/es.array.is-array.js";
|
|
8
9
|
import "core-js/modules/es.array.iterator.js";
|
|
9
10
|
import "core-js/modules/es.array.join.js";
|
|
@@ -838,13 +839,25 @@ export default function ScriptureCard(_ref2) {
|
|
|
838
839
|
var currentChapter = chapterChunks[chapterIndex];
|
|
839
840
|
var verseChunks = currentChapter.split('\\v ');
|
|
840
841
|
var verseIndex = findRefInArray(ref === null || ref === void 0 ? void 0 : ref.verse, verseChunks);
|
|
842
|
+
var frontMatter = (ref === null || ref === void 0 ? void 0 : ref.verse) === 'front';
|
|
841
843
|
|
|
842
|
-
if (verseIndex >= 0) {
|
|
844
|
+
if (frontMatter || verseIndex >= 0) {
|
|
843
845
|
var newVerseUsfm = UsfmFileConversionHelpers.convertVerseDataToUSFM(updatedVerseObjects);
|
|
844
|
-
console.log("saveChangesToCloud(".concat(cardNum, ")
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
846
|
+
console.log("saveChangesToCloud() - new USFM for card ".concat(cardNum, ", verse ").concat(ref === null || ref === void 0 ? void 0 : ref.verse, ":} - ").concat(newVerseUsfm.substring(0, 100)));
|
|
847
|
+
|
|
848
|
+
if (frontMatter) {
|
|
849
|
+
// front matter goes before first verse
|
|
850
|
+
var oldVerse = verseChunks[0];
|
|
851
|
+
var prefixLen = oldVerse.indexOf('\n'); // characters before the front matter text
|
|
852
|
+
|
|
853
|
+
verseChunks[verseIndex] = oldVerse.substring(0, prefixLen + 1) + newVerseUsfm;
|
|
854
|
+
} else {
|
|
855
|
+
var _oldVerse = verseChunks[verseIndex];
|
|
856
|
+
var verseNumLen = ((ref === null || ref === void 0 ? void 0 : ref.verse) + '').length; // characters before the verse text
|
|
857
|
+
|
|
858
|
+
verseChunks[verseIndex] = _oldVerse.substring(0, verseNumLen + 1) + newVerseUsfm;
|
|
859
|
+
}
|
|
860
|
+
|
|
848
861
|
var newChapter = verseChunks.join('\\v ');
|
|
849
862
|
chapterChunks[chapterIndex] = newChapter;
|
|
850
863
|
newUsfm = chapterChunks.join('\\c ');
|
|
@@ -1593,4 +1606,4 @@ ScriptureCard.propTypes = {
|
|
|
1593
1606
|
/** use method for using local storage specific for user */
|
|
1594
1607
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1595
1608
|
};
|
|
1596
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsImdldFBhdGNoIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiY29tcGFyZU9iamVjdCIsInZlcnNlUmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VEYXRhIiwidmVyc2VPYmplY3RzIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwibGF0ZXN0QmlibGUiLCJyZXNvdXJjZVN0YXRlIiwicmVzb3VyY2UiLCJwcm9qZWN0SWQiLCJmaWxlbmFtZSIsIm5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiYmlibGVVc2ZtIiwiZXJyb3IiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsIm9yaWdpbmFsTGFuZ3VhZ2VPd25lciIsInJlc291cmNlTGluayIsInNlbGVjdGVkUXVvdGUiLCJzZXJ2ZXIiLCJzZXRDYXJkc0xvYWRpbmdNZXJnZSIsInNldENhcmRzTG9hZGluZ1VwZGF0ZSIsInNldENhcmRzU2F2aW5nIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJ1cGRhdGVNZXJnZVN0YXRlIiwidXNlU3RhdGUiLCJjaGVja0ZvckVkaXRCcmFuY2giLCJjdXJyZW50UmVmZXJlbmNlIiwiZWRpdEJyYW5jaFJlYWR5IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hvd0FsaWdubWVudFBvcHVwIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZU9iamVjdHNNYXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJub0NhY2hlIiwic2V0VXJsRXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaGVkUmVzb3VyY2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJfc2F2ZUVkaXQiLCJpbmZvIiwic2F2ZUZ1bmN0aW9uIiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbV8iLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsImRpZmZQYXRjaCIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Iiwic2V0QXJlUmVzb3VyY2VzTG9hZGluZyIsInNldEFyZVJlc291cmNlc1NhdmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFFRUMsV0FGRixFQUdFQyxXQUhGLEVBSUVDLHlCQUpGLEVBS0VDLGtCQUxGLEVBTUVDLGVBTkYsRUFPRUMsWUFQRixFQVFFQyxxQkFSRixFQVNFQyxtQkFURixFQVVFQyxhQVZGLFFBV08sdUJBWFAsQyxDQVlBOztBQUNBLFNBQVNDLHdCQUFULFFBQXlDLGtCQUF6QztBQUNBLFNBQVNDLGdCQUFULEVBQTJCQyx5QkFBM0IsUUFBNEQsa0JBQTVEO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQix1QkFBMUI7QUFDQSxTQUFTQyxhQUFULEVBQXdCQyxpQkFBeEIsUUFBaUQsSUFBakQ7QUFDQSxTQUFTQyxvQkFBVCxRQUFxQyxrQ0FBckM7QUFDQSxTQUNFQyxtQkFERixFQUVFQyxhQUZGLEVBR0VDLDJCQUhGLEVBSUVDLGVBSkYsRUFLRUMsa0JBTEYsRUFNRUMsMkJBTkYsRUFPRUMsZUFQRixRQVFPLCtCQVJQO0FBU0EsU0FBU0MsS0FBVCxRQUFzQixtQkFBdEI7QUFDQSxTQUFTQyxj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QUFTLENBQUNxWCxJQWhGRzs7QUFpRnhCO0FBQ0FuUSxFQUFBQSxnQkFBZ0IsRUFBRWxILFNBQVMsQ0FBQ3FYLElBbEZKOztBQW1GeEI7QUFDQXBRLEVBQUFBLG1CQUFtQixFQUFFakgsU0FBUyxDQUFDcVgsSUFBVixDQUFlSjtBQXBGWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGVkaXRCcmFuY2hSZWFkeSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXG4gICAgICB1cGRhdGVTdGF0dXM6IG1lcmdlRnJvbU1hc3RlcixcbiAgICB9LFxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cbiAgICAgIGF3YWl0IHNhdmVGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm1fID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpIC8vIGdldCBvcmlnaW5hbCBVU0ZNXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGJpYmxlVXNmbV8gLy8gbWFrZSBhIGNvcHkgdG8gZWRpdFxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbV8pIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG9ubHkgY2hhbmdlZCBhIGZldyB2ZXJzZXMsIHdlIHdpbGwganVzdCBtYWtlIGEgZGlmZnBhdGNoIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtICYmIGJpYmxlVXNmbV8pIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1fLCBiaWJsZVVzZm0sIGZhbHNlKVxuICAgICAgICAgICAgICBiaWJsZVVzZm1fID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayB3aXRoIHBhdGNoIGRhdGEgKG11Y2ggc2hvcnRlcilcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogYmlibGVVc2ZtXyxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5wcm9qZWN0SWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBwcm9qZWN0SWQgPSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWQgfHwgcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBwcm9qZWN0SWQsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
|
|
1609
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsImdldFBhdGNoIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiY29tcGFyZU9iamVjdCIsInZlcnNlUmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VEYXRhIiwidmVyc2VPYmplY3RzIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwibGF0ZXN0QmlibGUiLCJyZXNvdXJjZVN0YXRlIiwicmVzb3VyY2UiLCJwcm9qZWN0SWQiLCJmaWxlbmFtZSIsIm5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiYmlibGVVc2ZtIiwiZXJyb3IiLCJTY3JpcHR1cmVDYXJkIiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsIm9yaWdpbmFsTGFuZ3VhZ2VPd25lciIsInJlc291cmNlTGluayIsInNlbGVjdGVkUXVvdGUiLCJzZXJ2ZXIiLCJzZXRDYXJkc0xvYWRpbmdNZXJnZSIsInNldENhcmRzTG9hZGluZ1VwZGF0ZSIsInNldENhcmRzU2F2aW5nIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJ1cGRhdGVNZXJnZVN0YXRlIiwidXNlU3RhdGUiLCJjaGVja0ZvckVkaXRCcmFuY2giLCJjdXJyZW50UmVmZXJlbmNlIiwiZWRpdEJyYW5jaFJlYWR5IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hvd0FsaWdubWVudFBvcHVwIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZU9iamVjdHNNYXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJub0NhY2hlIiwic2V0VXJsRXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaGVkUmVzb3VyY2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJjYXJkSWQiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwidGhlbiIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJ1c2VFZmZlY3QiLCJwcmV2Q2FyZHNMb2FkaW5nIiwiZmlsdGVyIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwic2hhIiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJfc2F2ZUVkaXQiLCJpbmZvIiwic2F2ZUZ1bmN0aW9uIiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJmcm9udE1hdHRlciIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInByZWZpeExlbiIsImluZGV4T2YiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsImJpYmxlVXNmbV8iLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsImRpZmZQYXRjaCIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Iiwic2V0QXJlUmVzb3VyY2VzTG9hZGluZyIsInNldEFyZVJlc291cmNlc1NhdmluZyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPLEtBQUtDLFNBQVosTUFBMkIsWUFBM0I7QUFDQSxTQUFTQyxJQUFULEVBQWVDLHlCQUFmLFFBQWdELHlCQUFoRDtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLHFCQUF4QjtBQUNBLFNBQVNDLFVBQVQsUUFBMkIsZUFBM0I7QUFDQSxTQUFTQyxPQUFULEVBQWtCQyxZQUFsQixRQUFzQyxnQkFBdEM7QUFDQSxTQUNFQyxJQURGLEVBRUVDLFdBRkYsRUFHRUMsV0FIRixFQUlFQyx5QkFKRixFQUtFQyxrQkFMRixFQU1FQyxlQU5GLEVBT0VDLFlBUEYsRUFRRUMscUJBUkYsRUFTRUMsbUJBVEYsRUFVRUMsYUFWRixRQVdPLHVCQVhQLEMsQ0FZQTs7QUFDQSxTQUFTQyx3QkFBVCxRQUF5QyxrQkFBekM7QUFDQSxTQUFTQyxnQkFBVCxFQUEyQkMseUJBQTNCLFFBQTRELGtCQUE1RDtBQUNBLE9BQU8sS0FBS0MsT0FBWixNQUF5QixZQUF6QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsU0FBU0MsYUFBVCxFQUF3QkMsaUJBQXhCLFFBQWlELElBQWpEO0FBQ0EsU0FBU0Msb0JBQVQsUUFBcUMsa0NBQXJDO0FBQ0EsU0FDRUMsbUJBREYsRUFFRUMsYUFGRixFQUdFQywyQkFIRixFQUlFQyxlQUpGLEVBS0VDLGtCQUxGLEVBTUVDLDJCQU5GLEVBT0VDLGVBUEYsUUFRTywrQkFSUDtBQVNB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aUJDLFVBOUREOztBQStEeEI7QUFDQVEsRUFBQUEsc0JBQXNCLEVBQUU1WCxTQUFTLENBQUN3WCxJQWhFVjs7QUFpRXhCO0FBQ0FLLEVBQUFBLHFCQUFxQixFQUFFN1gsU0FBUyxDQUFDd1gsSUFsRVQ7O0FBbUV4QjtBQUNBOVEsRUFBQUEsb0JBQW9CLEVBQUUxRyxTQUFTLENBQUN3WCxJQXBFUjs7QUFxRXhCO0FBQ0E3USxFQUFBQSxxQkFBcUIsRUFBRTNHLFNBQVMsQ0FBQ3dYLElBdEVUOztBQXVFeEI7QUFDQTVRLEVBQUFBLGNBQWMsRUFBRTVHLFNBQVMsQ0FBQ3dYLElBeEVGOztBQXlFeEI7QUFDQTNRLEVBQUFBLGVBQWUsRUFBRTdHLFNBQVMsQ0FBQ3dYLElBMUVIOztBQTJFeEI7QUFDQTFRLEVBQUFBLG9CQUFvQixFQUFFOUcsU0FBUyxDQUFDd1gsSUE1RVI7O0FBNkV4QjtBQUNBeFEsRUFBQUEsS0FBSyxFQUFFaEgsU0FBUyxDQUFDbVgsTUFBVixDQUFpQkMsVUE5RUE7O0FBK0V4QjtBQUNBclEsRUFBQUEsU0FBUyxFQUFFL0csU0FBUyxDQUFDd1gsSUFoRkc7O0FBaUZ4QjtBQUNBdFEsRUFBQUEsZ0JBQWdCLEVBQUVsSCxTQUFTLENBQUN3WCxJQWxGSjs7QUFtRnhCO0FBQ0F2USxFQUFBQSxtQkFBbUIsRUFBRWpILFNBQVMsQ0FBQ3dYLElBQVYsQ0FBZUo7QUFwRlosQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcbmltcG9ydCB7IGdldFBhdGNoIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZXMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gSlNPTi5zdHJpbmdpZnkodmVyc2VEYXRhLnZlcnNlT2JqZWN0cykgOiAnJ1xuICByZXR1cm4ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VPYmplY3RzLFxuICB9XG59XG5cbi8qKlxuICogY29tcGFyZSB0d28gdmVyc2UgcmVmcyB0byBzZWUgaWYgdGhleSBhcmUgc3Vic3RhbnRpYWxseSBzaW1pbGFyXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMVxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjJcbiAqL1xuZnVuY3Rpb24gYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYxOiBhbnlbXSwgdmVyc2VzRm9yUmVmMjogYW55W10pIHtcbiAgdmVyc2VzRm9yUmVmMSA9IHZlcnNlc0ZvclJlZjEgfHwgW11cbiAgdmVyc2VzRm9yUmVmMiA9IHZlcnNlc0ZvclJlZjIgfHwgW11cbiAgbGV0IGFyZVNhbWUgPSBmYWxzZVxuXG4gIGlmICh2ZXJzZXNGb3JSZWYxLmxlbmd0aCA9PT0gdmVyc2VzRm9yUmVmMi5sZW5ndGgpIHtcbiAgICBhcmVTYW1lID0gdHJ1ZVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGw9IHZlcnNlc0ZvclJlZjEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB2ZXJzZTEgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjFbaV0pXG4gICAgICBjb25zdCB2ZXJzZTIgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjJbaV0pXG4gICAgICBhcmVTYW1lID0gaXNFcXVhbCh2ZXJzZTEsIHZlcnNlMilcblxuICAgICAgaWYgKCFhcmVTYW1lKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZVNhbWVcbn1cblxuLyoqXG4gKiBnZXQgdGhlIFVTRk0gZm9yIGJvb2tJZCBmcm9tIHNjcmlwdHVyZUNvbmZpZy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRCb29rID0gKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSA9PiB7XG4gIGNvbnN0IGxhdGVzdEJpYmxlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucHJvamVjdElkXG4gIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICBsZXQgaXNCb29rVmFsaWQgPSBmYWxzZVxuICBjb25zdCBib29rTmFtZSA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSlcbiAgaXNCb29rVmFsaWQgPSBib29rTmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuICBpZiAoIWlzQm9va1ZhbGlkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIFVTRk0gZmlsZSBpcyAke2ZpbGVuYW1lfWApXG4gIH1cbiAgaWYgKGxhdGVzdEJpYmxlPy50b0xvd2VyQ2FzZSgpICE9PSBib29rSWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBidXQgZmV0Y2hlZCBwcm9qZWN0SWQgaXMgJHtsYXRlc3RCaWJsZX1gKVxuICAgIGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgfVxuICBpZiAoaXNCb29rVmFsaWQpIHtcbiAgICBjb25zdCBiaWJsZVVzZm0gPSBzY3JpcHR1cmVDb25maWc/LmJpYmxlVXNmbTtcbiAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICByZXR1cm4gYmlibGVVc2ZtXG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBCaWJsZSBVU0ZNIG1pc3NpbmdgKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBFeHBlY3RlZCAke2Jvb2tJZH0gYnV0IGdvdCBmaWxlICR7ZmlsZW5hbWV9YClcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGFwcFJlZixcbiAgYXV0aGVudGljYXRpb24sXG4gIGJvb2tJbmRleCxcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBnZXRMYW5ndWFnZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgaHR0cENvbmZpZyxcbiAgaWQsXG4gIGlzTlQsXG4gIGxvZ2dlZEluVXNlcixcbiAgb25NaW5pbWl6ZSxcbiAgb25SZXNvdXJjZUVycm9yLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXJ2ZXIsXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGUsXG4gIHNldENhcmRzU2F2aW5nLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB1cGRhdGVNZXJnZVN0YXRlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzYXZlRGlmZlBhdGNoOiBmYWxzZSxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgICBvblNhdmVFZGl0UGF0Y2gsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIGVtYWlsOiBhdXRoZW50aWNhdGlvbj8udXNlcj8uZW1haWwsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGxldCBzYXZlRnVuY3Rpb24gPSBvblNhdmVFZGl0XG4gICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICBzYXZlRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG4gICAgICBhd2FpdCBzYXZlRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSwgdXNlckVkaXRCcmFuY2hOYW1lKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBsZXQgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0gcmVmPy52ZXJzZSA9PT0gJ2Zyb250J1xuXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBuZXcgVVNGTSBmb3IgY2FyZCAke2NhcmROdW19LCB2ZXJzZSAke3JlZj8udmVyc2V9On0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1swXVxuICAgICAgICAgIGNvbnN0IHByZWZpeExlbiA9IG9sZFZlcnNlLmluZGV4T2YoJ1xcbicpOyAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZnJvbnQgbWF0dGVyIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCBwcmVmaXhMZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aCAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgdmVyc2UgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtXyA9IGdldEN1cnJlbnRCb29rKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSAvLyBnZXQgb3JpZ2luYWwgVVNGTVxuICAgICAgICAgIGxldCBiaWJsZVVzZm0gPSBiaWJsZVVzZm1fIC8vIG1ha2UgYSBjb3B5IHRvIGVkaXRcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1fKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzYXZlRGlmZlBhdGNoID0gZmFsc2UgLy8gaWYgdHJ1ZSB0aGVuIHdlIHdpbGwgc2VuZCB1cCBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBib29rXG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgICB9IGVsc2UgeyAvLyBpZiBvbmx5IGNoYW5nZWQgYSBmZXcgdmVyc2VzLCB3ZSB3aWxsIGp1c3QgbWFrZSBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lICYmIGJpYmxlVXNmbSAmJiBiaWJsZVVzZm1fKSB7IC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIG1ha2UgYSBwYXRjaFxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtXywgYmlibGVVc2ZtLCBmYWxzZSlcbiAgICAgICAgICAgICAgYmlibGVVc2ZtXyA9IGRpZmZQYXRjaCAvLyByZXBsYWNlIHdob2xlIGJvb2sgd2l0aCBwYXRjaCBkYXRhIChtdWNoIHNob3J0ZXIpXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgc2F2ZUNvbnRlbnQ6IGJpYmxlVXNmbV8sXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCxcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgcHJvamVjdElkID0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkIHx8IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgcHJvamVjdElkLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIE9ubHkgc2hvdyB0aGUgdXBkYXRlIGZyb20gbWFpbiBidXR0b24gaWYgc2NyaXB0dXJlIGlzIG5vdCBvcmlnaW5hbCB0ZXh0LlxuICAgICF1c2luZ09yaWdpbmFsQmlibGUgJiYgbmV3SXRlbXMucHVzaChcbiAgICAgIDw+XG4gICAgICAgIDxVcGRhdGVCcmFuY2hCdXR0b24gey4uLnVwZGF0ZUJ1dHRvblByb3BzfSBpc0xvYWRpbmc9e2lzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmV9Lz5cbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cbiAgICAgIDwvPlxuICAgIClcblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXG4gIHNldEFyZVJlc291cmNlc0xvYWRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHNhdmluZyBzdGF0ZSovXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBtZXJnZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgc2F2aW5nIHN0YXR1cyAqL1xuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xuICB1cGRhdGVNZXJnZVN0YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdfQ==
|