single-scripture-rcl 3.3.3-patch.10 → 3.3.3-patch.11

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.
@@ -730,7 +730,7 @@ export default function ScriptureCard(_ref2) {
730
730
  switch (_context2.prev = _context2.next) {
731
731
  case 0:
732
732
  if (!saveClicked) {
733
- _context2.next = 53;
733
+ _context2.next = 54;
734
734
  break;
735
735
  }
736
736
 
@@ -750,7 +750,7 @@ export default function ScriptureCard(_ref2) {
750
750
  }
751
751
 
752
752
  if (!createEditBranch) {
753
- _context2.next = 17;
753
+ _context2.next = 18;
754
754
  break;
755
755
  }
756
756
 
@@ -779,20 +779,23 @@ export default function ScriptureCard(_ref2) {
779
779
  readyForFetch: true,
780
780
  ref: branch
781
781
  });
782
- _context2.next = 17;
782
+ _context2.next = 18;
783
783
  break;
784
784
 
785
785
  case 14:
786
786
  console.error('saveChangesToCloud() - error creating edit branch');
787
787
  onResourceError && onResourceError(null, false, null, "Error creating edit branch ".concat(languageId_, "_").concat(resourceId), true);
788
+ setState({
789
+ saveClicked: false
790
+ });
788
791
  return _context2.abrupt("return");
789
792
 
790
- case 17:
793
+ case 18:
791
794
  console.log("saveChangesToCloud - getting verse changes");
792
795
  unsavedCardIndices = Object.keys(unsavedChangesList);
793
796
 
794
797
  if (!(unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length)) {
795
- _context2.next = 53;
798
+ _context2.next = 54;
796
799
  break;
797
800
  }
798
801
 
@@ -800,13 +803,13 @@ export default function ScriptureCard(_ref2) {
800
803
  mergeFail = false;
801
804
  _cardNum = 0;
802
805
  _iterator2 = _createForOfIteratorHelper(unsavedCardIndices);
803
- _context2.prev = 24;
806
+ _context2.prev = 25;
804
807
 
805
808
  _iterator2.s();
806
809
 
807
- case 26:
810
+ case 27:
808
811
  if ((_step2 = _iterator2.n()).done) {
809
- _context2.next = 42;
812
+ _context2.next = 43;
810
813
  break;
811
814
  }
812
815
 
@@ -815,7 +818,7 @@ export default function ScriptureCard(_ref2) {
815
818
  _unsavedChangesList$_2 = unsavedChangesList[_cardNum], _getChanges2 = _unsavedChangesList$_2.getChanges, _state2 = _unsavedChangesList$_2.state;
816
819
 
817
820
  if (!_getChanges2) {
818
- _context2.next = 40;
821
+ _context2.next = 41;
819
822
  break;
820
823
  }
821
824
 
@@ -828,40 +831,40 @@ export default function ScriptureCard(_ref2) {
828
831
  }
829
832
 
830
833
  if (!_newUsfm) {
831
- _context2.next = 38;
834
+ _context2.next = 39;
832
835
  break;
833
836
  }
834
837
 
835
838
  bibleUsfm = _newUsfm;
836
- _context2.next = 40;
839
+ _context2.next = 41;
837
840
  break;
838
841
 
839
- case 38:
842
+ case 39:
840
843
  mergeFail = true;
841
- return _context2.abrupt("break", 42);
844
+ return _context2.abrupt("break", 43);
842
845
 
843
- case 40:
844
- _context2.next = 26;
846
+ case 41:
847
+ _context2.next = 27;
845
848
  break;
846
849
 
847
- case 42:
848
- _context2.next = 47;
850
+ case 43:
851
+ _context2.next = 48;
849
852
  break;
850
853
 
851
- case 44:
852
- _context2.prev = 44;
853
- _context2.t0 = _context2["catch"](24);
854
+ case 45:
855
+ _context2.prev = 45;
856
+ _context2.t0 = _context2["catch"](25);
854
857
 
855
858
  _iterator2.e(_context2.t0);
856
859
 
857
- case 47:
858
- _context2.prev = 47;
860
+ case 48:
861
+ _context2.prev = 48;
859
862
 
860
863
  _iterator2.f();
861
864
 
862
- return _context2.finish(47);
865
+ return _context2.finish(48);
863
866
 
864
- case 50:
867
+ case 51:
865
868
  if (mergeFail) {
866
869
  // if we failed to merge, fallback to brute force verse objects to USFM
867
870
  console.log("saveChangesToCloud(".concat(_cardNum, ") - verse not found, falling back to inserting verse object"));
@@ -913,12 +916,12 @@ export default function ScriptureCard(_ref2) {
913
916
  saveClicked: false
914
917
  });
915
918
 
916
- case 53:
919
+ case 54:
917
920
  case "end":
918
921
  return _context2.stop();
919
922
  }
920
923
  }
921
- }, _callee2, null, [[24, 44, 47, 50]]);
924
+ }, _callee2, null, [[25, 45, 48, 51]]);
922
925
  }));
923
926
  return _getReadyForSave.apply(this, arguments);
924
927
  }
@@ -1387,4 +1390,4 @@ ScriptureCard.propTypes = {
1387
1390
  /** use method for using local storage specific for user */
1388
1391
  useUserLocalStorage: PropTypes.func.isRequired
1389
1392
  };
1390
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZ2V0TGFuZ3VhZ2UiLCJnZXRMZXhpY29uRGF0YSIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJodHRwQ29uZmlnIiwiaWQiLCJpc05UIiwibG9nZ2VkSW5Vc2VyIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsImluY2x1ZGVzIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJkb250Q3JlYXRlQnJhbmNoIiwiYXV0aG9yIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIl9zYXZlRWRpdCIsImluZm8iLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsInJlbG9hZFJlc291cmNlIiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwiYmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIndhcm4iLCJnZXRSZXNwb25zZURhdGEiLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFFRUMsV0FGRixFQUdFQyx5QkFIRixFQUlFQyxZQUpGLEVBS0VDLGFBTEYsUUFNTyx1QkFOUCxDLENBT0E7O0FBQ0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGFBRkYsRUFHRUMsZUFIRixFQUlFQyxrQkFKRixFQUtFQywyQkFMRixFQU1FQyxlQU5GLFFBT08sK0JB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VSxLQUFWLENBQWdCO0FBQ3hCO0FBQ0EvUCxJQUFBQSxVQUFVLEVBQUUzRSxTQUFTLENBQUNvVSxNQUFWLENBQWlCQyxVQUZMOztBQUd4QjtBQUNBM1AsSUFBQUEsS0FBSyxFQUFFMUUsU0FBUyxDQUFDb1UsTUFBVixDQUFpQkMsVUFKQTs7QUFLeEI7QUFDQXpQLElBQUFBLFVBQVUsRUFBRTVFLFNBQVMsQ0FBQ29VLE1BQVYsQ0FBaUJDLFVBTkw7O0FBT3hCO0FBQ0F4UCxJQUFBQSxxQkFBcUIsRUFBRTdFLFNBQVMsQ0FBQ29VLE1BQVYsQ0FBaUJDO0FBUmhCLEdBQWhCLENBL0NjOztBQXlEeEI7QUFDQXZQLEVBQUFBLFlBQVksRUFBRTlFLFNBQVMsQ0FBQzRVLEdBMURBOztBQTJEeEI7QUFDQTdQLEVBQUFBLGFBQWEsRUFBRS9FLFNBQVMsQ0FBQ3NVLE1BNUREOztBQTZEeEI7QUFDQXRQLEVBQUFBLE1BQU0sRUFBRWhGLFNBQVMsQ0FBQ29VLE1BQVYsQ0FBaUJDLFVBOUREOztBQStEeEI7QUFDQXBQLEVBQUFBLGVBQWUsRUFBRWpGLFNBQVMsQ0FBQ3lVLElBaEVIOztBQWlFeEI7QUFDQXZQLEVBQUFBLG9CQUFvQixFQUFFbEYsU0FBUyxDQUFDeVUsSUFsRVI7O0FBbUV4QjtBQUNBclAsRUFBQUEsS0FBSyxFQUFFcEYsU0FBUyxDQUFDb1UsTUFBVixDQUFpQkMsVUFwRUE7O0FBcUV4QjtBQUNBbFAsRUFBQUEsU0FBUyxFQUFFbkYsU0FBUyxDQUFDeVUsSUF0RUc7O0FBdUV4QjtBQUNBcFAsRUFBQUEsbUJBQW1CLEVBQUVyRixTQUFTLENBQUN5VSxJQUFWLENBQWVKO0FBeEVaLENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IGNvcmUsIFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXIgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7IHVzZUVkaXQgfSBmcm9tICdnaXRlYS1yZWFjdC10b29sa2l0J1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBSeExpbmsyLCBSeExpbmtCcmVhazIgfSBmcm9tICdyZWFjdC1pY29ucy9yeCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoIHx8IDBcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGlmICh1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICBodHRwQ29uZmlnID0ge1xuICAgICAgLi4uaHR0cENvbmZpZyxcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgbm9DYWNoZTogdHJ1ZSxcbiAgICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIG93bmVyLFxuICAgIHJlZmVyZW5jZTogY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2UsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIGh0dHBDb25maWcsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG4gICAgbGV0IHZhbGlkQnJhbmNoID0gdHJ1ZVxuXG4gICAgaWYgKF9zaGEpIHsgLy8gVFJJQ0tZOiBzaW5jZSB0aGlzIGZldGNoIG1heSBiZSBkZWxheWVkIC0gbWFrZSBzdXJlIGl0IHdhcyBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoIGJlZm9yZSB1c2luZyB0aGUgc2hhXG4gICAgICBjb25zdCBwYXJ0cyA9ICh1cmwgfHwgJycpLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGZldGNoQnJhbmNoID0gcGFydHMubGVuZ3RoID4gNyA/IHBhcnRzWzddIDogJydcbiAgICAgIHZhbGlkQnJhbmNoID0gZmV0Y2hCcmFuY2ggPT09IHJlZlxuICAgIH1cblxuICAgIGlmICh2YWxpZEJyYW5jaCAmJiBfc2hhICE9PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkOiBmb3IgJHt1cmx9ICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7IHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfSBhbmQgcmVhZHlGb3JGZXRjaCBpcyAke3JlYWR5Rm9yRmV0Y2h9YClcblxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICB9ID0gdXNlRWRpdCh7XG4gICAgc2hhLFxuICAgIG93bmVyLFxuICAgIGNvbnRlbnQ6IHNhdmVDb250ZW50LFxuICAgIGNvbmZpZzoge1xuICAgICAgY2FjaGU6IHsgbWF4QWdlOiAwIH0sXG4gICAgICAuLi5hdXRoZW50aWNhdGlvbj8uY29uZmlnLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgYXdhaXQgb25TYXZlRWRpdCh1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2VkIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHtmb3JjZWROZXdMaW5lczogdHJ1ZX0pXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgIHNldFN0YXRlKHtzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZX0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICB9XG5cbiAgICBjb25zdCBib29rc05vdFNhbWUgPSByZWZlcmVuY2U/LnByb2plY3RJZCAhPT0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgICBpZiAoYm9va3NOb3RTYW1lIHx8ICFhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlc0ZvclJlZiA9IF92ZXJzZXNGb3JSZWZcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICB9XG5cbiAgICBpZiAobmV3U2VsZWN0ZWRRdW90ZSkge1xuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZVNlbGVjdGlvbnMpIHtcbiAgICAgIGlmICghYXJlTWFwc1RoZVNhbWUoc2VsZWN0aW9ucyB8fCAobmV3IE1hcCgpKSwgbmV3U2VsZWN0aW9ucykpIHtcbiAgICAgICAgbmV3U3RhdGUuc2VsZWN0aW9ucyA9IG5ld1NlbGVjdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoT2JqZWN0LmtleXMobmV3U3RhdGUpLmxlbmd0aCkge1xuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9LCBbb3duZXIsIHJlc291cmNlSWQsIGJvb2tJZCwgbGFuZ3VhZ2VJZF8sIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBzZWxlY3RlZFF1b3RlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBwcm9qZWN0SWQgPSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWQgfHwgcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICB2ZXJzZSxcbiAgICAgIHByb2plY3RJZCxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBWYWxpZCdcbiAgICB9IGVsc2Uge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjMDAwJy8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aGUgb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2sgKi9cbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdfQ==
1393
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZ2V0TGFuZ3VhZ2UiLCJnZXRMZXhpY29uRGF0YSIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJodHRwQ29uZmlnIiwiaWQiLCJpc05UIiwibG9nZ2VkSW5Vc2VyIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsImluY2x1ZGVzIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJkb250Q3JlYXRlQnJhbmNoIiwiYXV0aG9yIiwiYnJhbmNoIiwic2F2ZUVycm9yIiwiaXNTYXZlRXJyb3IiLCJpc0Vycm9yIiwib25TYXZlRWRpdCIsIl9zYXZlRWRpdCIsImluZm8iLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsInJlbG9hZFJlc291cmNlIiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwiYmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVhZHlGb3JTYXZlIiwiY3JlYXRlRWRpdEJyYW5jaCIsIndhcm4iLCJnZXRSZXNwb25zZURhdGEiLCJtZXJnZUZhaWwiLCJwYXJzZUludCIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsIm5ld0Jvb2tKc29uIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsInZlcnNlSXRlbSIsInZvIiwiY29uY2F0Iiwic2V0Iiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwiZm9yRWFjaCIsIndvcmRzIiwia2V5IiwiX2tleSIsIm1hcCIsIndvcmQiLCJ0ZXh0Iiwibm9ybWFsaXplU3RyaW5nIiwiYm9va3NOb3RTYW1lIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiYWxpZ25lZCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJ2YWx1ZXMiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwicHVzaCIsImN1cnNvciIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJvYmplY3QiLCJudW1iZXIiLCJib29sIiwiZnVuYyIsInNoYXBlIiwib25lT2ZUeXBlIiwiYW55Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FBS0MsU0FBWixNQUEyQixZQUEzQjtBQUNBLFNBQVNDLElBQVQsRUFBZUMseUJBQWYsUUFBZ0QseUJBQWhEO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixTQUFuQjtBQUNBLFNBQVNDLE9BQVQsUUFBd0IscUJBQXhCO0FBQ0EsU0FBU0MsVUFBVCxRQUEyQixlQUEzQjtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLFlBQWxCLFFBQXNDLGdCQUF0QztBQUNBLFNBQ0VDLElBREYsRUFFRUMsV0FGRixFQUdFQyx5QkFIRixFQUlFQyxZQUpGLEVBS0VDLGFBTEYsUUFNTyx1QkFOUCxDLENBT0E7O0FBQ0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGFBRkYsRUFHRUMsZUFIRixFQUlFQyxrQkFKRixFQUtFQywyQkFMRixFQU1FQyxlQU5GLFFBT08sK0JB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REM7QUFOeEMsR0FBaEIsQ0F0Q2E7O0FBOEN4QjtBQUNBNVAsRUFBQUEsUUFBUSxFQUFFekUsU0FBUyxDQUFDMFUsS0FBVixDQUFnQjtBQUN4QjtBQUNBL1AsSUFBQUEsVUFBVSxFQUFFM0UsU0FBUyxDQUFDb1UsTUFBVixDQUFpQkMsVUFGTDs7QUFHeEI7QUFDQTNQLElBQUFBLEtBQUssRUFBRTFFLFNBQVMsQ0FBQ29VLE1BQVYsQ0FBaUJDLFVBSkE7O0FBS3hCO0FBQ0F6UCxJQUFBQSxVQUFVLEVBQUU1RSxTQUFTLENBQUNvVSxNQUFWLENBQWlCQyxVQU5MOztBQU94QjtBQUNBeFAsSUFBQUEscUJBQXFCLEVBQUU3RSxTQUFTLENBQUNvVSxNQUFWLENBQWlCQztBQVJoQixHQUFoQixDQS9DYzs7QUF5RHhCO0FBQ0F2UCxFQUFBQSxZQUFZLEVBQUU5RSxTQUFTLENBQUM0VSxHQTFEQTs7QUEyRHhCO0FBQ0E3UCxFQUFBQSxhQUFhLEVBQUUvRSxTQUFTLENBQUNzVSxNQTVERDs7QUE2RHhCO0FBQ0F0UCxFQUFBQSxNQUFNLEVBQUVoRixTQUFTLENBQUNvVSxNQUFWLENBQWlCQyxVQTlERDs7QUErRHhCO0FBQ0FwUCxFQUFBQSxlQUFlLEVBQUVqRixTQUFTLENBQUN5VSxJQWhFSDs7QUFpRXhCO0FBQ0F2UCxFQUFBQSxvQkFBb0IsRUFBRWxGLFNBQVMsQ0FBQ3lVLElBbEVSOztBQW1FeEI7QUFDQXJQLEVBQUFBLEtBQUssRUFBRXBGLFNBQVMsQ0FBQ29VLE1BQVYsQ0FBaUJDLFVBcEVBOztBQXFFeEI7QUFDQWxQLEVBQUFBLFNBQVMsRUFBRW5GLFNBQVMsQ0FBQ3lVLElBdEVHOztBQXVFeEI7QUFDQXBQLEVBQUFBLG1CQUFtQixFQUFFckYsU0FBUyxDQUFDeVUsSUFBVixDQUFlSjtBQXhFWixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFUlJPUl9TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VVc2VyQnJhbmNoLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYgfSBmcm9tICd1dy1xdW90ZS1oZWxwZXJzJ1xuaW1wb3J0IHsgQWxpZ25tZW50SGVscGVycywgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgeyBTY3JpcHR1cmVQYW5lLCBTY3JpcHR1cmVTZWxlY3RvciB9IGZyb20gJy4uJ1xuaW1wb3J0IHsgdXNlU2NyaXB0dXJlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIGNsZWFudXBWZXJzZU9iamVjdHMsXG4gIGZpeE9jY3VycmVuY2UsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuLyoqXG4gKiBjcmVhdGUgYSBzaG9ydCBjb21wYXJpc29uIHZlcnNlIHJlZiBvYmplY3Qgd2l0aG91dCBhbGwgdGhlIHZlcnNlRGF0YVxuICogQHBhcmFtIHZlcnNlUmVmXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmVPYmplY3QodmVyc2VSZWYpIHtcbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VEYXRhLFxuICB9ID0gdmVyc2VSZWYgfHwge31cbiAgY29uc3QgdmVyc2VPYmplY3RzID0gdmVyc2VEYXRhPy52ZXJzZU9iamVjdHM/Lmxlbmd0aCB8fCAwXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgdHJhbnNsYXRlLFxuICB0aXRsZSxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbn0pIHtcbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjdXJyZW50UmVmZXJlbmNlOiBudWxsLFxuICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNoYTogbnVsbCxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsLFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZU9iamVjdHNNYXA6IG5ldyBNYXAoKSxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGVkaXRCcmFuY2hSZWFkeSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzaGEsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwLFxuICAgIHN0YXJ0U2F2ZSxcbiAgICB1cmxFcnJvcixcbiAgICB1c2luZ1VzZXJCcmFuY2gsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0LFxuICAgIHZlcnNlT2JqZWN0c01hcCxcbiAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cyxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuXG4gIGNvbnN0IFtmb250U2l6ZSwgc2V0Rm9udFNpemVdID0gdXNlVXNlckxvY2FsU3RvcmFnZShLRVlfRk9OVF9TSVpFX0JBU0UgKyBjYXJkTnVtLCAxMDApXG4gIGNvbnN0IGlzTlRfID0gaXNOVChib29rSWQpXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBpZiAodXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgaHR0cENvbmZpZyA9IHtcbiAgICAgIC4uLmh0dHBDb25maWcsXG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIG5vQ2FjaGU6IHRydWUsXG4gICAgfSAvLyBkaXNhYmxlIGh0dHAgY2FjaGluZ1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgaXNOVCxcbiAgICB0aXRsZSxcbiAgICBvd25lcixcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZXNvdXJjZUxpbmssXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaFJlc3BfPy5kYXRhPy5kb3dubG9hZF91cmwgfHwgbnVsbFxuICAgIGxldCB2YWxpZEJyYW5jaCA9IHRydWVcblxuICAgIGlmIChfc2hhKSB7IC8vIFRSSUNLWTogc2luY2UgdGhpcyBmZXRjaCBtYXkgYmUgZGVsYXllZCAtIG1ha2Ugc3VyZSBpdCB3YXMgZm9yIHRoZSBjdXJyZW50IGJyYW5jaCBiZWZvcmUgdXNpbmcgdGhlIHNoYVxuICAgICAgY29uc3QgcGFydHMgPSAodXJsIHx8ICcnKS5zcGxpdCgnLycpXG4gICAgICBjb25zdCBmZXRjaEJyYW5jaCA9IHBhcnRzLmxlbmd0aCA+IDcgPyBwYXJ0c1s3XSA6ICcnXG4gICAgICB2YWxpZEJyYW5jaCA9IGZldGNoQnJhbmNoID09PSByZWZcbiAgICB9XG5cbiAgICBpZiAodmFsaWRCcmFuY2ggJiYgX3NoYSAhPT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZDogZm9yICR7dXJsfSAke0pTT04uc3RyaW5naWZ5KHJlZmVyZW5jZV8pfSBuZXcgc2hhIGlzICR7X3NoYX1gKVxuICAgICAgc2V0U3RhdGUoeyBzaGE6IF9zaGEgfSlcbiAgICB9XG4gIH0sIFtmZXRjaFJlc3BfXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn0gYW5kIHJlYWR5Rm9yRmV0Y2ggaXMgJHtyZWFkeUZvckZldGNofWApXG5cbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2ggJiYgYnJhbmNoRGV0ZXJtaW5lZCApIHtcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSwgcmVmOiB3b3JraW5nUmVmIH0pXG4gICAgfVxuICB9LCBbYnJhbmNoRGV0ZXJtaW5lZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgaWYgKF91c2luZ1VzZXJCcmFuY2ggIT09IHVzaW5nVXNlckJyYW5jaCkge1xuICAgICAgc2V0U3RhdGUoeyB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2ggfSlcbiAgICB9XG4gIH0sIFtfdXNpbmdVc2VyQnJhbmNoLCB1c2luZ1VzZXJCcmFuY2hdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBkaXNwbGF5IHN0YXR1cyBpZiBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXVxuXG4gICAgaWYgKGVycm9yKSB7IC8vIGlmIGVycm9yIHdhcyBmb3VuZCBkbyBjYWxsYmFja1xuICAgICAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzXG4gICAgICBjb25zdCByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlQ29uZmlnKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTWVudUNsb3NlKCkge1xuICAgIC8vIGNvbnNvbGUubG9nKGBvbk1lbnVDbG9zZSgpYClcbiAgICBzZXRTdGF0ZSh7IHVybEVycm9yOiBudWxsIH0pXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGxhbmd1YWdlSWRfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZFxuICBjb25zdCBsYW5ndWFnZSA9IGdldExhbmd1YWdlKHsgbGFuZ3VhZ2VJZDogbGFuZ3VhZ2VJZF8gfSlcbiAgY29uc3QgZGlyZWN0aW9uID0gKGxhbmd1YWdlPy5kaXJlY3Rpb24pIHx8ICdsdHInXG4gIGNvbnN0IF9yZWZlcmVuY2UgPSBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgMTAwMDAsXG4gICAgICBzZXJ2ZXIsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQodXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwge2ZvcmNlZE5ld0xpbmVzOiB0cnVlfSlcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgc2V0U3RhdGUoe3NhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlfSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtvd25lciwgcmVzb3VyY2VJZCwgYm9va0lkLCBsYW5ndWFnZUlkXywgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgICAgcHJvamVjdElkLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJy8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e3N0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfVxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2VcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.3.3-patch.10",
4
+ "version": "3.3.3-patch.11",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"