single-scripture-rcl 3.3.3-beta.84 → 3.3.3-beta.85

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.
@@ -1010,8 +1010,11 @@ export default function ScriptureCard(_ref2) {
1010
1010
  }
1011
1011
  }, [owner, resourceId, bookId, languageId_, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef, originalScriptureBookObjects, selectedQuote]);
1012
1012
  React.useEffect(function () {
1013
+ // clear settings on verse change
1013
1014
  setState({
1014
- versesAlignmentStatus: null
1015
+ versesAlignmentStatus: null,
1016
+ unsavedChangesList: {},
1017
+ haveUnsavedChanges: false
1015
1018
  });
1016
1019
  }, [_reference]);
1017
1020
 
@@ -1322,4 +1325,4 @@ ScriptureCard.propTypes = {
1322
1325
  /** use method for using local storage specific for user */
1323
1326
  useUserLocalStorage: PropTypes.func.isRequired
1324
1327
  };
1325
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZ2V0TGFuZ3VhZ2UiLCJnZXRMZXhpY29uRGF0YSIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJodHRwQ29uZmlnIiwiaWQiLCJpc05UIiwibG9nZ2VkSW5Vc2VyIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsImluY2x1ZGVzIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwiaW5mbyIsInRoZW4iLCJzdWNjZXNzIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJjcmVhdGVFZGl0QnJhbmNoIiwid2FybiIsImdldFJlc3BvbnNlRGF0YSIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3Qm9va0pzb24iLCJuZXdWZXJzZVRleHQiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxTQUFaLE1BQTJCLFlBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyx5QkFBZixRQUFnRCx5QkFBaEQ7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFNBQW5CO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixxQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLGVBQTNCO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsUUFBc0MsZ0JBQXRDO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxXQUZGLEVBR0VDLHlCQUhGLEVBSUVDLFlBSkYsRUFLRUMsYUFMRixRQU1PLHVCQU5QO0FBT0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGFBRkYsRUFHRUMsZUFIRixFQUlFQyxrQkFKRixFQUtFQywyQkFMRixFQU1FQyxlQU5GLFFBT08sK0JBUFA7QUFRQSxTQUFTQyxLQUFULFFBQXNCLG1CQUF0QjtBQUNBLFNBQVNDLGNB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UyxDQUFDdVUsSUF0RUc7O0FBdUV4QjtBQUNBbFAsRUFBQUEsbUJBQW1CLEVBQUVyRixTQUFTLENBQUN1VSxJQUFWLENBQWVKO0FBeEVaLENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IGNvcmUsIFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXIgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7IHVzZUVkaXQgfSBmcm9tICdnaXRlYS1yZWFjdC10b29sa2l0J1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBSeExpbmsyLCBSeExpbmtCcmVhazIgfSBmcm9tICdyZWFjdC1pY29ucy9yeCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoIHx8IDBcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGlmICh1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICBodHRwQ29uZmlnID0ge1xuICAgICAgLi4uaHR0cENvbmZpZyxcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgbm9DYWNoZTogdHJ1ZSxcbiAgICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIG93bmVyLFxuICAgIHJlZmVyZW5jZTogY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2UsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIGh0dHBDb25maWcsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG4gICAgbGV0IHZhbGlkQnJhbmNoID0gdHJ1ZVxuXG4gICAgaWYgKF9zaGEpIHsgLy8gVFJJQ0tZOiBzaW5jZSB0aGlzIGZldGNoIG1heSBiZSBkZWxheWVkIC0gbWFrZSBzdXJlIGl0IHdhcyBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoIGJlZm9yZSB1c2luZyB0aGUgc2hhXG4gICAgICBjb25zdCBwYXJ0cyA9ICh1cmwgfHwgJycpLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGZldGNoQnJhbmNoID0gcGFydHMubGVuZ3RoID4gNyA/IHBhcnRzWzddIDogJydcbiAgICAgIHZhbGlkQnJhbmNoID0gZmV0Y2hCcmFuY2ggPT09IHJlZlxuICAgIH1cblxuICAgIGlmICh2YWxpZEJyYW5jaCAmJiBfc2hhICE9PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkOiBmb3IgJHt1cmx9ICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7IHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfSBhbmQgcmVhZHlGb3JGZXRjaCBpcyAke3JlYWR5Rm9yRmV0Y2h9YClcblxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIC8vIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQodXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuICAgICAgICBzdGFydEVkaXRCcmFuY2goKS50aGVuKChicmFuY2gpID0+IHtcbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZmFpbGVkIHRvIGNyZWF0ZSBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzXyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtvd25lciwgcmVzb3VyY2VJZCwgYm9va0lkLCBsYW5ndWFnZUlkXywgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U3RhdGUoeyB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgcHJvamVjdElkID0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkIHx8IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgdmVyc2UsXG4gICAgICBwcm9qZWN0SWQsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJy8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuXG4gICAgPFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXJcbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICBvblNlbGVjdGlvbnM9e25ld1NlbGVjdGlvbnMgPT4ge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWxlY3Rpb25zJywgbmV3U2VsZWN0aW9ucylcbiAgICAgIH19XG4gICAgICBxdW90ZT17c2VsZWN0ZWRRdW90ZT8ucXVvdGV9XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgdmVyc2VPYmplY3RzTWFwPXt2ZXJzZU9iamVjdHNNYXB9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZVxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXX0=
1328
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJpIiwibCIsInZlcnNlMSIsInZlcnNlMiIsIlNjcmlwdHVyZUNhcmQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZ2V0TGFuZ3VhZ2UiLCJnZXRMZXhpY29uRGF0YSIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJodHRwQ29uZmlnIiwiaWQiLCJpc05UIiwibG9nZ2VkSW5Vc2VyIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ0cmFuc2xhdGUiLCJ0aXRsZSIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2VsZWN0aW9ucyIsIk1hcCIsInNoYSIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzRm9yUmVmIiwic2hvd0FsaWdubWVudFBvcHVwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlT2JqZWN0c01hcCIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJ1cmwiLCJkb3dubG9hZF91cmwiLCJ2YWxpZEJyYW5jaCIsInBhcnRzIiwic3BsaXQiLCJmZXRjaEJyYW5jaCIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsImluY2x1ZGVzIiwiY2FyZElkIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJzdGFydEVkaXRCcmFuY2giLCJhY3Rpb25zIiwic3RhcnRFZGl0Iiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwidW5kZWZpbmVkIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJzdWJzdHJpbmciLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwiaW5mbyIsInRoZW4iLCJzdWNjZXNzIiwidW5zYXZlZENhcmRJbmRpY2VzIiwiY2FyZEluZGV4IiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsIm5ld1ZlcnNlVXNmbSIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJvbGRWZXJzZSIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJjcmVhdGVFZGl0QnJhbmNoIiwid2FybiIsImdldFJlc3BvbnNlRGF0YSIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3Qm9va0pzb24iLCJuZXdWZXJzZVRleHQiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJvcmlnaW5hbFZlcnNlcyIsInN1YnN0aXR1dGUiLCJzdGFydFZlcnNlIiwibGFzdFZlcnNlIiwiX3ZlcnNlIiwidmVyc2VzIiwidmVyc2VJdGVtIiwidm8iLCJjb25jYXQiLCJzZXQiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJmb3JFYWNoIiwid29yZHMiLCJrZXkiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwicmVuZGVyZWRTY3JpcHR1cmVQYW5lcyIsIl9jdXJyZW50VmVyc2VEYXRhIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiaGFuZGxlQWxpZ25CdXR0b25DbGljayIsIm9uUmVuZGVyVG9vbGJhciIsIm5ld0l0ZW1zIiwiYWxsVmVyc2VzQWxpZ25lZCIsInZhbHVlcyIsImV2ZXJ5IiwiYWxpZ25TdGF0dXMiLCJhbGlnbkljb24iLCJhbGlnbkJ1dHRvblRleHQiLCJwdXNoIiwiY3Vyc29yIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsT0FBTyxLQUFLQyxTQUFaLE1BQTJCLFlBQTNCO0FBQ0EsU0FBU0MsSUFBVCxFQUFlQyx5QkFBZixRQUFnRCx5QkFBaEQ7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFNBQW5CO0FBQ0EsU0FBU0MsT0FBVCxRQUF3QixxQkFBeEI7QUFDQSxTQUFTQyxVQUFULFFBQTJCLGVBQTNCO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsWUFBbEIsUUFBc0MsZ0JBQXRDO0FBQ0EsU0FDRUMsSUFERixFQUVFQyxXQUZGLEVBR0VDLHlCQUhGLEVBSUVDLFlBSkYsRUFLRUMsYUFMRixRQU1PLHVCQU5QO0FBT0EsU0FBU0Msd0JBQVQsUUFBeUMsa0JBQXpDO0FBQ0EsU0FBU0MsZ0JBQVQsRUFBMkJDLHlCQUEzQixRQUE0RCxrQkFBNUQ7QUFDQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUFTQyxTQUFULFFBQTBCLHVCQUExQjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLGFBRkYsRUFHRUMsZUFIRixFQUlFQyxrQkFKRixFQUtFQywyQkFMRixFQU1FQyxlQU5GLFFBT08sK0JBUFA7QUFRQSxTQUFTQyxLQUFULFFBQXNCLG1CQUF0QjtBQUNBLFNBQVNDLGNB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UyxDQUFDa1UsTUFBVixDQUFpQkMsVUFwRUE7O0FBcUV4QjtBQUNBaFAsRUFBQUEsU0FBUyxFQUFFbkYsU0FBUyxDQUFDdVUsSUF0RUc7O0FBdUV4QjtBQUNBbFAsRUFBQUEsbUJBQW1CLEVBQUVyRixTQUFTLENBQUN1VSxJQUFWLENBQWVKO0FBeEVaLENBQTFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgKiBhcyBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcydcbmltcG9ydCB7IGNvcmUsIFNlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXIgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7IHVzZUVkaXQgfSBmcm9tICdnaXRlYS1yZWFjdC10b29sa2l0J1xuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBSeExpbmsyLCBSeExpbmtCcmVhazIgfSBmcm9tICdyZWFjdC1pY29ucy9yeCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vLi4vdXRpbHMvZGVsYXknXG5pbXBvcnQgeyBhcmVNYXBzVGhlU2FtZSB9IGZyb20gJy4uLy4uL3V0aWxzL21hcHMnXG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJy4uL1NjcmlwdHVyZVBhbmUvc3R5bGVkJ1xuaW1wb3J0IHtcbiAgTlRfT1JJR19MQU5HLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbn0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBWZXJzZVNlbGVjdG9yUG9wdXAgfSBmcm9tICcuLi9WZXJzZVNlbGVjdG9yUG9wdXAnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoIHx8IDBcbiAgcmV0dXJuIHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlT2JqZWN0cyxcbiAgfVxufVxuXG4vKipcbiAqIGNvbXBhcmUgdHdvIHZlcnNlIHJlZnMgdG8gc2VlIGlmIHRoZXkgYXJlIHN1YnN0YW50aWFsbHkgc2ltaWxhclxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjFcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYyXG4gKi9cbmZ1bmN0aW9uIGFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmMTogYW55W10sIHZlcnNlc0ZvclJlZjI6IGFueVtdKSB7XG4gIHZlcnNlc0ZvclJlZjEgPSB2ZXJzZXNGb3JSZWYxIHx8IFtdXG4gIHZlcnNlc0ZvclJlZjIgPSB2ZXJzZXNGb3JSZWYyIHx8IFtdXG4gIGxldCBhcmVTYW1lID0gZmFsc2VcblxuICBpZiAodmVyc2VzRm9yUmVmMS5sZW5ndGggPT09IHZlcnNlc0ZvclJlZjIubGVuZ3RoKSB7XG4gICAgYXJlU2FtZSA9IHRydWVcblxuICAgIGZvciAobGV0IGkgPSAwLCBsPSB2ZXJzZXNGb3JSZWYxLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgdmVyc2UxID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYxW2ldKVxuICAgICAgY29uc3QgdmVyc2UyID0gY29tcGFyZU9iamVjdCh2ZXJzZXNGb3JSZWYyW2ldKVxuICAgICAgYXJlU2FtZSA9IGlzRXF1YWwodmVyc2UxLCB2ZXJzZTIpXG5cbiAgICAgIGlmICghYXJlU2FtZSkge1xuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmVTYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBhcHBSZWYsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBib29rSW5kZXgsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZ2V0TGFuZ3VhZ2UsXG4gIGdldExleGljb25EYXRhLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGh0dHBDb25maWcsXG4gIGlkLFxuICBpc05ULFxuICBsb2dnZWRJblVzZXIsXG4gIG9uTWluaW1pemUsXG4gIG9uUmVzb3VyY2VFcnJvcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgc2VsZWN0ZWRRdW90ZSxcbiAgc2VydmVyLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hhOiBudWxsLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0ZvclJlZjogbnVsbCxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICB9KVxuICBjb25zdCB7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZSxcbiAgICByZWFkeUZvckZldGNoLFxuICAgIHJlZixcbiAgICBzYXZlQ2xpY2tlZCxcbiAgICBzYXZlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNoYSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGlmICh1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICBodHRwQ29uZmlnID0ge1xuICAgICAgLi4uaHR0cENvbmZpZyxcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgbm9DYWNoZTogdHJ1ZSxcbiAgICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBpc05ULFxuICAgIHRpdGxlLFxuICAgIG93bmVyLFxuICAgIHJlZmVyZW5jZTogY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2UsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIGh0dHBDb25maWcsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoUmVzcF8/LmRhdGE/LmRvd25sb2FkX3VybCB8fCBudWxsXG4gICAgbGV0IHZhbGlkQnJhbmNoID0gdHJ1ZVxuXG4gICAgaWYgKF9zaGEpIHsgLy8gVFJJQ0tZOiBzaW5jZSB0aGlzIGZldGNoIG1heSBiZSBkZWxheWVkIC0gbWFrZSBzdXJlIGl0IHdhcyBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoIGJlZm9yZSB1c2luZyB0aGUgc2hhXG4gICAgICBjb25zdCBwYXJ0cyA9ICh1cmwgfHwgJycpLnNwbGl0KCcvJylcbiAgICAgIGNvbnN0IGZldGNoQnJhbmNoID0gcGFydHMubGVuZ3RoID4gNyA/IHBhcnRzWzddIDogJydcbiAgICAgIHZhbGlkQnJhbmNoID0gZmV0Y2hCcmFuY2ggPT09IHJlZlxuICAgIH1cblxuICAgIGlmICh2YWxpZEJyYW5jaCAmJiBfc2hhICE9PSBzaGEpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkOiBmb3IgJHt1cmx9ICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gISEobG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmIChyZXNvdXJjZUlkICE9PSBPUklHSU5BTF9TT1VSQ0UpICYmIC8vIFRSSUNLWSBpZiBub3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgYW5kIHdlIGhhdmUgbG9naW4gZGF0YSwgdGhlbiB3ZSBjYW4gdXNlIHRoZSBlZGl0IGJyYW5jaFxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLmluY2x1ZGVzKGxvZ2dlZEluVXNlcikpKSkgLy8gYWxzbyBtYWtlIHN1cmUgbm90IGEgdmVyc2lvbiB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGJyYW5jaERldGVybWluZWQsXG4gICAgICB1c2VyRWRpdEJyYW5jaE5hbWUsXG4gICAgICB1c2luZ1VzZXJCcmFuY2g6IF91c2luZ1VzZXJCcmFuY2gsXG4gICAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7IHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3YWl0aW5nIGZvciBicmFuY2ggZmV0Y2ggdG8gY29tcGxldGVcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfSBhbmQgcmVhZHlGb3JGZXRjaCBpcyAke3JlYWR5Rm9yRmV0Y2h9YClcblxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG4gIGNvbnN0IHVzaW5nT3JpZ2luYWxCaWJsZSA9IGlzT3JpZ2luYWxCaWJsZShzY3JpcHR1cmVDb25maWdbJ3Jlc291cmNlJ10/LnByb2plY3RJZClcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICBjb25zdCBib29rQ2FwcyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlPy5wcm9qZWN0SWQgPyBzY3JpcHR1cmVDb25maWcucmVmZXJlbmNlLnByb2plY3RJZC50b1VwcGVyQ2FzZSgpIDogJydcbiAgICByZXR1cm4gYCR7Ym9va0luZGV4fS0ke2Jvb2tDYXBzfS51c2ZtYFxuICB9XG5cbiAgY29uc3QgZmlsZXBhdGggPSBnZXRCb29rTmFtZSgpXG5cbiAgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBlZGl0IHN0YXRlXG4gIGNvbnN0IHtcbiAgICBlcnJvcjogc2F2ZUVycm9yLFxuICAgIGlzRXJyb3I6IGlzU2F2ZUVycm9yLFxuICAgIG9uU2F2ZUVkaXQsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZSBlcnJvcmAsIHNhdmVFcnJvcilcbiAgICAgIC8vIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBzYXZpbmcgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfSAke3NhdmVFcnJvcn1gLCB0cnVlKVxuICAgIH1cbiAgfSwgW3NhdmVFcnJvciwgaXNTYXZlRXJyb3JdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQodXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKHNoYSlcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCcpXG4gICAgICAgICAgc2V0U3RhdGUoeyBzdGFydFNhdmU6IGZhbHNlIH0pXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZSwgZWRpdEJyYW5jaFJlYWR5LCBzaGFdKVxuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHVwZGF0ZWRWZXJzZU9iamVjdHMgdG8gVVNGTSBhbmQgbWVyZ2UgaW50byB0aGUgYmlibGVVc2ZtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm0gLSBVU0ZNIG9mIGJpYmxlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0cyAtIG5ldyB2ZXJzZSBpbiB2ZXJzZU9iamVjdCBmb3JtYXRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGNhcmROdW1cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBjb25zdCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuXG4gICAgICBpZiAodmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gbmV3IFVTRk0gZm9yIGNhcmQ6fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGhcbiAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuICAgICAgICBzdGFydEVkaXRCcmFuY2goKS50aGVuKChicmFuY2gpID0+IHtcbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZmFpbGVkIHRvIGNyZWF0ZSBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICBsZXQgYmlibGVVc2ZtID0gY29yZS5nZXRSZXNwb25zZURhdGEoc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlKVxuICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcbiAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtKSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICBiaWJsZVVzZm0gPSBuZXdVc2ZtXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7IHZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzXyB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGJpYmxlVXNmbSA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ29udGVudDogYmlibGVVc2ZtLCBzdGFydFNhdmU6IHRydWUsIHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtvd25lciwgcmVzb3VyY2VJZCwgYm9va0lkLCBsYW5ndWFnZUlkXywgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIHNlbGVjdGVkUXVvdGVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlLCBhbGlnbmVkKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IHByb2plY3RJZCA9IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZCB8fCByZWZlcmVuY2U/LnByb2plY3RJZFxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5fdmVyc2VzRm9yUmVmLFxuICAgICAgY2hhcHRlcixcbiAgICAgIHZlcnNlLFxuICAgICAgcHJvamVjdElkLFxuICAgIH1cbiAgICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgICBjdXJyZW50SW5kZXg6IGluZGV4LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIHJlZmVyZW5jZTogX3JlZmVyZW5jZSxcbiAgICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIH1cblxuICAgIGxldCBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSBmYWxzZVxuXG4gICAgaWYgKHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQpIHtcbiAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQuY2hhcHRlciA9PSBjaGFwdGVyICYmIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQudmVyc2UgPT0gdmVyc2VcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFNjcmlwdHVyZVBhbmVcbiAgICAgICAgey4uLnNjcmlwdHVyZUNvbmZpZ31cbiAgICAgICAgY29udGVudFN0eWxlPXtjb250ZW50U3R5bGV9XG4gICAgICAgIGN1cnJlbnRJbmRleD17aW5kZXh9XG4gICAgICAgIGRldGVybWluaW5nQnJhbmNoPXshcmVhZHlGb3JGZXRjaH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ9e2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudH1cbiAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgb25BbGlnbm1lbnRGaW5pc2g9eygpID0+IHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCB9KX1cbiAgICAgICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz17b3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0c31cbiAgICAgICAgcmVmU3R5bGU9e3JlZlN0eWxlfVxuICAgICAgICByZWZlcmVuY2U9e19yZWZlcmVuY2V9XG4gICAgICAgIHNhdmluZz17c3RhcnRTYXZlfVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc9e19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiB0cnVlIH0pXG4gICAgfSBlbHNlIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZXNGb3JSZWZbMF0gfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvblJlbmRlclRvb2xiYXIgPSAoeyBpdGVtcyB9KSA9PiB7XG4gICAgY29uc3QgbmV3SXRlbXMgPSBbLi4uaXRlbXNdXG5cbiAgICBsZXQgYWxsVmVyc2VzQWxpZ25lZCA9IGZhbHNlXG5cbiAgICAvLyBDaGVjayBpZiBhbGwgdmFsdWVzIGluIHZlcnNlc0FsaWdubWVudFN0YXR1cyBhcmUgdHJ1ZVxuICAgIGlmICh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpIHtcbiAgICAgIGFsbFZlcnNlc0FsaWduZWQgPSBPYmplY3QudmFsdWVzKHZlcnNlc0FsaWdubWVudFN0YXR1cykuZXZlcnkoYWxpZ25TdGF0dXMgPT4gYWxpZ25TdGF0dXMgPT09IHRydWUpXG4gICAgfVxuXG4gICAgbGV0IGFsaWduSWNvbiA9IG51bGxcbiAgICBsZXQgYWxpZ25CdXR0b25UZXh0ID0gJydcblxuICAgIGlmIChhbGxWZXJzZXNBbGlnbmVkKSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rMiBpZD17YHZhbGlkX2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPScjQkJCJy8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e3N0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfVxuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2VcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl19
@@ -68,6 +68,7 @@ function ScripturePane(_ref) {
68
68
  resourceLink = _ref.resourceLink,
69
69
  saving = _ref.saving,
70
70
  scriptureAlignmentEditConfig = _ref.scriptureAlignmentEditConfig,
71
+ setSavedChanges = _ref.setSavedChanges,
71
72
  setWordAlignerStatus = _ref.setWordAlignerStatus,
72
73
  server = _ref.server,
73
74
  translate = _ref.translate,
@@ -135,6 +136,7 @@ function ScripturePane(_ref) {
135
136
  var _scriptureAlignmentEdit = useScriptureAlignmentEdit(_scriptureAlignmentEditConfig);
136
137
 
137
138
  var _scriptureAlignmentEd = _scriptureAlignmentEdit.actions,
139
+ clearChanges = _scriptureAlignmentEd.clearChanges,
138
140
  handleAlignmentClick = _scriptureAlignmentEd.handleAlignmentClick,
139
141
  setEditing = _scriptureAlignmentEd.setEditing,
140
142
  setVerseChanged = _scriptureAlignmentEd.setVerseChanged,
@@ -181,6 +183,7 @@ function ScripturePane(_ref) {
181
183
  var verseText = UsfmFileConversionHelpers.getUsfmForVerseContent({
182
184
  verseObjects: initialVerseObjects
183
185
  });
186
+ clearChanges();
184
187
  setInitialVerseText(verseText);
185
188
  }, [{
186
189
  reference: reference,
@@ -244,4 +247,4 @@ ScripturePane.defaultProps = {
244
247
  verseObjects: []
245
248
  };
246
249
  export default ScripturePane;
247
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJTY3JpcHR1cmVQYW5lIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMZXhpY29uRGF0YSIsImlzTlQiLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJvbkFsaWdubWVudEZpbmlzaCIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwic2VydmVyIiwidHJhbnNsYXRlIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNc2ciLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInVzZUVmZmVjdCIsImNvbnNvbGUiLCJsb2ciLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsImFjdGlvbnMiLCJoYW5kbGVBbGlnbm1lbnRDbGljayIsInNldEVkaXRpbmciLCJzZXRWZXJzZUNoYW5nZWQiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsImVkaXRpbmciLCJ1bnNhdmVkQ2hhbmdlcyIsIm5ld1ZlcnNlVGV4dCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsInBhZGRpbmdCb3R0b20iLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0Msa0JBQVQsRUFBNkJDLGdCQUE3QixRQUFxRCxhQUFyRDtBQUNBLFNBQVNDLDJCQUFULEVBQXNDQyx5QkFBdEMsUUFBdUUsdUNBQXZFO0FBQ0EsU0FBU0MsU0FBVCxFQUFvQkMsT0FBcEIsUUFBbUMs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QUFHRSxJQUFBLGtCQUFrQixFQUFFM0Msa0JBSHRCO0FBSUUsSUFBQSxjQUFjLEVBQUVDLGNBSmxCO0FBS0UsSUFBQSxTQUFTLEVBQUVhO0FBTGIsSUFiSixDQUZGLENBUEosQ0FERjtBQW9DRDs7QUFFRGxCLGFBQWEsQ0FBQ2lFLFlBQWQsR0FBNkI7QUFBRVIsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZXpELGFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cyB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHsgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFJlc291cmNlTWVzc2FnZSwgTE9BRElOR19SRVNPVVJDRSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQ29udGVudCB9IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIGN1cnJlbnRJbmRleCxcbiAgY29udGVudFN0eWxlLFxuICBkZXRlcm1pbmluZ0JyYW5jaCxcbiAgZGlyZWN0aW9uLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGZvbnRTaXplLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgaXNOVCxcbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICBvbkFsaWdubWVudEZpbmlzaCxcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZWZTdHlsZSxcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2F2aW5nLFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgc2VydmVyLFxuICB0cmFuc2xhdGUsXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyxcbn0gOiBQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlLFxuICAgIG5ld1RleHQ6IG51bGwsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBkb2luZ0FsaWdubWVudCxcbiAgICBuZXdUZXh0LFxuICAgIHVybEVycm9yLFxuICB9ID0gc3RhdGVcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IFtpbml0aWFsVmVyc2VUZXh0LCBzZXRJbml0aWFsVmVyc2VUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXG5cbiAgbGV0IHJlc291cmNlTXNnID0gbnVsbFxuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1zZyA9ICdTYXZpbmcgQ2hhbmdlcy4uLidcbiAgfSBlbHNlIGlmIChkZXRlcm1pbmluZ0JyYW5jaCkge1xuICAgIHJlc291cmNlTXNnID0gJ1ByZS0nICsgTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIHJlc291cmNlTXNnID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHByb2plY3RJZCxcbiAgfSA9IHJlZmVyZW5jZVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmU6IGRldGVybWluaW5nQnJhbmNoIGlzICR7ZGV0ZXJtaW5pbmdCcmFuY2h9YCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICB9LCBbZGV0ZXJtaW5pbmdCcmFuY2hdKVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB9LFxuICB9ID0gX3NjcmlwdHVyZUFsaWdubWVudEVkaXRcblxuICBpZiAoaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ICYmICFhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICBoYW5kbGVBbGlnbm1lbnRDbGljaygpXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyhyZWZlcmVuY2UsIGFsaWduZWQpXG4gIH0sIFthbGlnbmVkLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAoZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogZmFsc2UgfSlcbiAgICAgIG9uQWxpZ25tZW50RmluaXNoICYmIG9uQWxpZ25tZW50RmluaXNoKClcbiAgICB9XG4gIH0sIFtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdD8uc3RhdGU/LmFsaWduZXJEYXRhXSlcblxuICAvLyBkeW5hbWljYWxseSBhZGp1c3QgZm9udCBzaXplXG4gIGNvbnN0IGNhbGN1bGF0ZWRGb250U2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKFxuICAgIHBhcnNlRmxvYXQoVGV4dEFyZWFTdHlsZS5mb250U2l6ZSkgKiBmb250U2l6ZSAvIDEwMCArICdweCdcbiAgKSwgW2ZvbnRTaXplXSlcblxuICBjb25zdCB0ZXh0QXJlYVN0eWxlID0ge1xuICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAuLi5UZXh0QXJlYVN0eWxlLFxuICAgIGZvbnRTaXplOiBjYWxjdWxhdGVkRm9udFNpemUsXG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBpbml0aWFsVmVyc2VPYmplY3RzIH0pXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gIH0sIFt7IHJlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvblRleHRDaGFuZ2UoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgLy8gY29uc29sZS5sb2coYFNQLm9uVGV4dENoYW5nZWAsIHsgY2hhbmdlZCwgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0IH0pXG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1RleHQpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgc3R5bGU9e3sgZGlyZWN0aW9uLCB3aWR0aDogJzEwMCUnLCBwYWRkaW5nQm90dG9tOiAnMC41ZW0nIH19PlxuICAgICAge3Jlc291cmNlTXNnID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNc2d9IDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgOlxuICAgICAgICA8Q29udGVudD5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17cmVmU3R5bGV9PiB7Y2hhcHRlcn06e3ZlcnNlfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17Y29udGVudFN0eWxlfSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRFZGl0aW5nICYmIHNldEVkaXRpbmcodHJ1ZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtlZGl0aW5nID9cbiAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtuZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dH1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17b25UZXh0Q2hhbmdlfVxuICAgICAgICAgICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt0ZXh0QXJlYVN0eWxlfVxuICAgICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA6XG4gICAgICAgICAgICAgIDxWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICB2ZXJzZUtleT17YCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWB9XG4gICAgICAgICAgICAgICAgdmVyc2VPYmplY3RzPXtjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHN9XG4gICAgICAgICAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJ9XG4gICAgICAgICAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Db250ZW50PlxuICAgICAgfVxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cblNjcmlwdHVyZVBhbmUuZGVmYXVsdFByb3BzID0geyB2ZXJzZU9iamVjdHM6IFtdIH1cblxuZXhwb3J0IGRlZmF1bHQgU2NyaXB0dXJlUGFuZVxuIl19
250
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJTY3JpcHR1cmVQYW5lIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMZXhpY29uRGF0YSIsImlzTlQiLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJvbkFsaWdubWVudEZpbmlzaCIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwic2VydmVyIiwidHJhbnNsYXRlIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNc2ciLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInVzZUVmZmVjdCIsImNvbnNvbGUiLCJsb2ciLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsImFjdGlvbnMiLCJjbGVhckNoYW5nZXMiLCJoYW5kbGVBbGlnbm1lbnRDbGljayIsInNldEVkaXRpbmciLCJzZXRWZXJzZUNoYW5nZWQiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsImVkaXRpbmciLCJ1bnNhdmVkQ2hhbmdlcyIsIm5ld1ZlcnNlVGV4dCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsInBhZGRpbmdCb3R0b20iLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0Msa0JBQVQsRUFBNkJDLGdCQUE3QixRQUFxRCxhQUFyRDtBQUNBLFNBQVNDLDJCQUFULEVBQXNDQyx5QkFBdEMsUUFBdUUsdUNBQXZFO0FB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O0FBQ0UsSUFBQSxRQUFRLFlBQUs5QyxTQUFTLENBQUN1QixPQUFmLGNBQTBCdkIsU0FBUyxDQUFDd0IsS0FBcEMsQ0FEVjtBQUVFLElBQUEsWUFBWSxFQUFFYyxtQkFBbUIsSUFBSUMsbUJBRnZDO0FBR0UsSUFBQSxrQkFBa0IsRUFBRTdDLGtCQUh0QjtBQUlFLElBQUEsY0FBYyxFQUFFQyxjQUpsQjtBQUtFLElBQUEsU0FBUyxFQUFFYztBQUxiLElBYkosQ0FGRixDQVBKLENBREY7QUFvQ0Q7O0FBRURuQixhQUFhLENBQUNtRSxZQUFkLEdBQTZCO0FBQUVSLEVBQUFBLFlBQVksRUFBRTtBQUFoQixDQUE3QjtBQUVBLGVBQWUzRCxhQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBWZXJzZU9iamVjdHMgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUmVmZXJlbmNlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRSZXNvdXJjZU1lc3NhZ2UsIExPQURJTkdfUkVTT1VSQ0UgfSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcywgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIENvbnRlbnQgfSBmcm9tICcuL3N0eWxlZCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIGNvbnRlbnQgKiovXG4gIGNvbnRlbnRTdHlsZTogYW55O1xuICAvLyBpbmRleCBudW1iZXIgZm9yIHRoaXMgc2NyaXB0dXJlIHBhbmVcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHdhaXRpbmcgdG8gZGV0ZXJtaW5lIGJyYW5jaFxuICBkZXRlcm1pbmluZ0JyYW5jaDogYm9vbGVhbixcbiAgLyoqIGxhbmd1YWdlIGRpcmVjdGlvbiB0byB1c2UgKiovXG4gIGRpcmVjdGlvbjogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBkbyBub3QgZGlzcGxheSBsZXhpY29uIHBvcG92ZXIgb24gaG92ZXIgKiovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogYm9vbGVhbnx1bmRlZmluZWQ7XG4gIC8qKiBmb250IHNpemUgZm9yIG1lc3NhZ2VzICovXG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogRnVuY3Rpb247XG4gIC8qKiB0cnVlIGlmIGJyb3dzaW5nIE5UICovXG4gIGlzTlQ6IGJvb2xlYW47XG4gIC8qKiB3aGV0aGVyIG9yIG5vdCB0aGlzIGN1cnJlbnQgdmVyc2UgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGFsaWdubWVudCAqL1xuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IGJvb2xlYW47XG4gIC8qKiBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB2ZXJzZSBhbGlnbm1lbnQgaGFzIGZpbmlzaGVkICovXG4gIG9uQWxpZ25tZW50RmluaXNoOiBGdW5jdGlvbjtcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogb2JqZWN0LFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgcmVmZXJlbmNlICoqL1xuICByZWZTdHlsZTogYW55O1xuICAvKiogb2JqZWN0IHRoYXQgY29udGFpbnMgcmVzb3VyY2UgbG9hZGluZyBzdGF0dXMgb3IgZmV0Y2hpbmcgZXJyb3JzICovXG4gIHJlc291cmNlU3RhdHVzOiBvYmplY3R8dW5kZWZpbmVkO1xuICAvKiogcmVzb3VyY2UgdGhhdCB3YXMgbG9hZGVkICovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIHRydWUgaWYgY3VycmVudGx5IHNhdmluZyB1cGRhdGVkIHRleHQgYW5kIGFsaWdubWVudHMgKi9cbiAgc2F2aW5nOiBib29sZWFuO1xuICAvLyBpbml0aWFsaXphdGlvbiBmb3IgdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsXG4gIC8qKiBzZXJ2ZXIgKi9cbiAgc2VydmVyOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogY2FsbGJhY2sgdG8gZmxhZyB1bnNhdmVkIHN0YXR1cyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uO1xuICAvLyBjYWxsYmFjayBmb3IgY2hhbmdlIGluIHdvcmQgYWxpZ25tZW50IHN0YXR1c1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogRnVuY3Rpb247XG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogRnVuY3Rpb247XG4gIC8qKiBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gdXBkYXRlIHZlcnNlIGFsaWdubWVudCBzdGF0dXMgKi9cbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzOiBGdW5jdGlvbjtcbn1cblxuY29uc3QgTWVzc2FnZVN0eWxlID0ge1xuICBkaXJlY3Rpb246ICdsdHInLFxuICB3aGl0ZVNwYWNlOiAncHJlLXdyYXAnLFxuICBsaW5lSGVpZ2h0OiAnbm9ybWFsJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgZm9udFNpemU6ICcxNnB4JyxcbiAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbn1cblxuY29uc3QgVGV4dEFyZWFTdHlsZSA9IHtcbiAgaGVpZ2h0OiAnNjAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgbWluV2lkdGg6ICcyMjBweCcsXG4gIGZvbnRTaXplOiAnMTZweCcsXG59XG5cbmZ1bmN0aW9uIFNjcmlwdHVyZVBhbmUoe1xuICBjdXJyZW50SW5kZXgsXG4gIGNvbnRlbnRTdHlsZSxcbiAgZGV0ZXJtaW5pbmdCcmFuY2gsXG4gIGRpcmVjdGlvbixcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBmb250U2l6ZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGlzTlQsXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgb25BbGlnbm1lbnRGaW5pc2gsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVmU3R5bGUsXG4gIHJlc291cmNlU3RhdHVzLFxuICByZXNvdXJjZUxpbmssXG4gIHNhdmluZyxcbiAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbiAgc2VydmVyLFxuICB0cmFuc2xhdGUsXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyxcbn0gOiBQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlLFxuICAgIG5ld1RleHQ6IG51bGwsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBkb2luZ0FsaWdubWVudCxcbiAgICBuZXdUZXh0LFxuICAgIHVybEVycm9yLFxuICB9ID0gc3RhdGVcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGNvbnN0IFtpbml0aWFsVmVyc2VUZXh0LCBzZXRJbml0aWFsVmVyc2VUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpXG5cbiAgbGV0IHJlc291cmNlTXNnID0gbnVsbFxuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1zZyA9ICdTYXZpbmcgQ2hhbmdlcy4uLidcbiAgfSBlbHNlIGlmIChkZXRlcm1pbmluZ0JyYW5jaCkge1xuICAgIHJlc291cmNlTXNnID0gJ1ByZS0nICsgTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIHJlc291cmNlTXNnID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHByb2plY3RJZCxcbiAgfSA9IHJlZmVyZW5jZVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmU6IGRldGVybWluaW5nQnJhbmNoIGlzICR7ZGV0ZXJtaW5pbmdCcmFuY2h9YCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICB9LCBbZGV0ZXJtaW5pbmdCcmFuY2hdKVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB9LFxuICB9ID0gX3NjcmlwdHVyZUFsaWdubWVudEVkaXRcblxuICBpZiAoaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ICYmICFhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICBoYW5kbGVBbGlnbm1lbnRDbGljaygpXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyhyZWZlcmVuY2UsIGFsaWduZWQpXG4gIH0sIFthbGlnbmVkLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhbGlnbmVyRGF0YSAmJiAhZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAoZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogZmFsc2UgfSlcbiAgICAgIG9uQWxpZ25tZW50RmluaXNoICYmIG9uQWxpZ25tZW50RmluaXNoKClcbiAgICB9XG4gIH0sIFtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdD8uc3RhdGU/LmFsaWduZXJEYXRhXSlcblxuICAvLyBkeW5hbWljYWxseSBhZGp1c3QgZm9udCBzaXplXG4gIGNvbnN0IGNhbGN1bGF0ZWRGb250U2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKFxuICAgIHBhcnNlRmxvYXQoVGV4dEFyZWFTdHlsZS5mb250U2l6ZSkgKiBmb250U2l6ZSAvIDEwMCArICdweCdcbiAgKSwgW2ZvbnRTaXplXSlcblxuICBjb25zdCB0ZXh0QXJlYVN0eWxlID0ge1xuICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAuLi5UZXh0QXJlYVN0eWxlLFxuICAgIGZvbnRTaXplOiBjYWxjdWxhdGVkRm9udFNpemUsXG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBpbml0aWFsVmVyc2VPYmplY3RzIH0pXG4gICAgY2xlYXJDaGFuZ2VzKClcbiAgICBzZXRJbml0aWFsVmVyc2VUZXh0KHZlcnNlVGV4dClcbiAgfSwgW3sgcmVmZXJlbmNlLCBpbml0aWFsVmVyc2VPYmplY3RzIH1dKVxuXG4gIGZ1bmN0aW9uIG9uVGV4dENoYW5nZShldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcbiAgICBjb25zdCBuZXdWZXJzZVRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IGNoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAvLyBjb25zb2xlLmxvZyhgU1Aub25UZXh0Q2hhbmdlYCwgeyBjaGFuZ2VkLCBuZXdUZXh0OiBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQgfSlcbiAgICBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZCwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbmV3VmVyc2VUZXh0IH0pXG4gIH1cblxuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgc2V0RWRpdGluZyhmYWxzZSwgbmV3VGV4dClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNc2cgP1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIDxkaXYgc3R5bGU9e01lc3NhZ2VTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfX0+IHtyZXNvdXJjZU1zZ30gPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA6XG4gICAgICAgIDxDb250ZW50PlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtyZWZTdHlsZX0+IHtjaGFwdGVyfTp7dmVyc2V9Jm5ic3A7PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIHN0eWxlPXtjb250ZW50U3R5bGV9IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgIHNldEVkaXRpbmcgJiYgc2V0RWRpdGluZyh0cnVlKVxuICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2VkaXRpbmcgP1xuICAgICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0fVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtvblRleHRDaGFuZ2V9XG4gICAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3RleHRBcmVhU3R5bGV9XG4gICAgICAgICAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDpcbiAgICAgICAgICAgICAgPFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgIHZlcnNlS2V5PXtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YH1cbiAgICAgICAgICAgICAgICB2ZXJzZU9iamVjdHM9e2N1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c31cbiAgICAgICAgICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcn1cbiAgICAgICAgICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgICAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXX0=
@@ -435,9 +435,6 @@ export function useScripture(_ref) {
435
435
  } // @ts-ignore
436
436
 
437
437
  }, [currentBookRef]);
438
- useEffect(function () {
439
- console.log("useScripture book ref changed to ".concat(_bookId, ", ").concat(resourceLink_)); // @ts-ignore
440
- }, [_bookId]);
441
438
  useEffect(function () {
442
439
  var expectedBookId = _bookId || '';
443
440
  var fetchedBookSame = fetchedBook && fetchedBook === expectedBookId;
@@ -473,4 +470,4 @@ export function useScripture(_ref) {
473
470
  versesForRef: versesForRef
474
471
  };
475
472
  }
476
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsImdldFZlcnNlcyIsImlzRXF1YWwiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiU2VydmVyQ29uZmlnIiwiU2NyaXB0dXJlUmVzb3VyY2UiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJnZXRCcmFuY2hOYW1lIiwicmVzb3VyY2VMaW5rIiwiYnJhbmNoIiwicGFydHMiLCJzcGxpdCIsImxlbmd0aCIsIl9wYXJ0cyIsImdldFZlcnNlc0ZvclJlZlN0ciIsInJlZlN0ciIsImJvb2tPYmplY3RzIiwibGFuZ3VhZ2VJZCIsInZlcnNlcyIsImNoYXB0ZXJzIiwibWFwIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwib2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyIsImdldFZlcnNlc0ZvclJlZiIsInJlZmVyZW5jZSIsImNoYXB0ZXIiLCJ1c2VTY3JpcHR1cmUiLCJjb25maWciLCJyZWFkeUZvckZldGNoIiwicmVzb3VyY2VfIiwicmVzb3VyY2UiLCJyZXNvdXJjZUxpbmtfIiwid2hvbGVCb29rIiwiZmV0Y2hlZEJvb2siLCJmZXRjaFBhcmFtcyIsImlnbm9yZVNoYSIsImluaXRpYWxpemVkIiwiZmV0Y2hlZCIsInJlc291cmNlU3RhdGUiLCJiaWJsZUpzb24iLCJtYXRjaGVkVmVyc2UiLCJjb250ZW50IiwibG9hZGluZ1Jlc291cmNlIiwibG9hZGluZ0NvbnRlbnQiLCJmZXRjaFJlc3BvbnNlIiwidmVyc2VzRm9yUmVmIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfYm9va0lkIiwicHJvamVjdElkIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsInJlZiIsInJlZl8iLCJyZXNvdXJjZUlkIiwiYm9va1JlZiIsIm5ld0ZldGNoUGFyYW1zIiwib3B0aW9ucyIsImdldEJpYmxlSnNvbiIsIl9yZXNvdXJjZVJlc3VsdHMiLCJjdXJyZW50UmVzb3VyY2VTdGF0ZSIsInNhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJuYW1lIiwiZXh0IiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsInNoYSIsImRhdGEiLCJ1cmwiLCJmZXRjaGVkQnJhbmNoIiwiZmV0Y2hpbmdCcmFuY2giLCJ1cGRhdGVWZXJzZXNGb3JSZWYiLCJ0aXRsZSIsInZlcnNpb24iLCJsb2FkaW5nIiwiY29udGVudE5vdEZvdW5kRXJyb3IiLCJzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciIsIm1hbmlmZXN0Tm90Rm91bmRFcnJvciIsIm1hbmlmZXN0IiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJlcnJvciIsInJlc291cmNlU3RhdHVzIiwiaW50aWFsaXplZCIsIl9nZXRWZXJzZXNGb3JSZWYiLCJjb250ZW50XyIsInVwZGF0ZVZlcnNlIiwiYm9va09iamVjdHNfIiwiX2Jvb2tPYmplY3RzIiwibmV3VmVyc2VzRm9yUmVmIiwicmVsb2FkUmVzb3VyY2UiLCJfcmVsb2FkUmVzb3VyY2UiLCJhY3Rpb25zIiwiY3VycmVudEJvb2tSZWYiLCJmZXRjaGVkQm9va1NhbWUiLCJfdmVyc2VzRm9yUmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUNFQyxJQURGLEVBRUVDLE9BRkYsUUFHTyx5QkFI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ZVxuaW1wb3J0IHtcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBjb3JlLFxuICB1c2VSc3JjLFxufSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBjbGVhbnVwVmVyc2VPYmplY3RzLCBnZXRSZXNvdXJjZUxpbmsgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczogeyByZXNvdXJjZUxpbms6ICcnLCByZWZlcmVuY2U6IHt9IH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBiaWJsZUpzb246IG51bGwsXG4gICAgICBtYXRjaGVkVmVyc2U6IG51bGwsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgZmV0Y2hSZXNwb25zZTogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoZWRCb29rLFxuICAgIGZldGNoUGFyYW1zLFxuICAgIGZldGNoZWQsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgX2Jvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gcmVhZHlGb3JGZXRjaCB0cnVlLCBpbml0aWFsaXppbmdgKVxuICAgICAgbGV0IHJlc291cmNlTGluayA9IHJlYWR5Rm9yRmV0Y2ggJiYgcmVzb3VyY2VMaW5rX1xuXG4gICAgICBpZiAoIXJlc291cmNlTGlua18gJiYgcmVzb3VyY2VfKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHByb2plY3RJZCxcbiAgICAgICAgICBicmFuY2ggPSAnbWFzdGVyJyxcbiAgICAgICAgICByZWYgPSBudWxsLFxuICAgICAgICB9ID0gcmVzb3VyY2VfIHx8IHt9XG4gICAgICAgIGNvbnN0IHJlZl8gPSByZWYgfHwgYnJhbmNoXG5cbiAgICAgICAgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IHByb2plY3RJZCxcbiAgICAgICAgICByZWY6IHJlZl8sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvb2tSZWYgPSB7IC4uLnJlZmVyZW5jZSB9XG5cbiAgICAgIGlmICh3aG9sZUJvb2spIHtcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYuY2hhcHRlciAvLyByZW1vdmUgdGhlIGNoYXB0ZXIgYW5kIHZlcnNlIHNvIHRoZSB3aG9sZSBib29rIGlzIGZldGNoZWRcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYudmVyc2VcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlTGluayAhPT0gZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7cmVzb3VyY2VMaW5rX31gKVxuICAgICAgfSBlbHNlIGlmIChib29rUmVmICE9PSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBib29rIGNoYW5nZWQgdG8gJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua31gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdGZXRjaFBhcmFtcyA9IHtcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgICByZWZlcmVuY2U6IGJvb2tSZWYsXG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFcXVhbChuZXdGZXRjaFBhcmFtcywgZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBGRVRDSElORyBuZXcgcGFyYW1zICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7cmVzb3VyY2VMaW5rX31gLCBuZXdGZXRjaFBhcmFtcylcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGZldGNoUGFyYW1zOiBuZXdGZXRjaFBhcmFtcyxcbiAgICAgICAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICAgICAgICBpZ25vcmVTaGE6IG51bGwsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVhZHlGb3JGZXRjaCwgX2Jvb2tJZCwgcmVzb3VyY2VMaW5rX10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlYWR5Rm9yRmV0Y2ggaXMgbm93ICR7cmVhZHlGb3JGZXRjaH1gKVxuICB9LCBbcmVhZHlGb3JGZXRjaF0pXG5cbiAgY29uc3Qgb3B0aW9ucyA9IHsgZ2V0QmlibGVKc29uOiB0cnVlIH1cblxuICBjb25zdCBfcmVzb3VyY2VSZXN1bHRzID0gdXNlUnNyYyh7XG4gICAgY29uZmlnLFxuICAgIHJlZmVyZW5jZTogZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUxpbms6IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmssXG4gICAgb3B0aW9ucyxcbiAgfSlcblxuICAvLyBvbmx5IHVzZSB0aGUgcmVzdWx0cyBpZiByZWFkeVRvRmV0Y2hcbiAgY29uc3Qge1xuICAgIGJpYmxlSnNvbixcbiAgICBjb250ZW50LFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgbG9hZGluZ1Jlc291cmNlLFxuICAgIGxvYWRpbmdDb250ZW50LFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZXNvdXJjZSxcbiAgfSA9IHJlc291cmNlU3RhdGVcblxuICB1c2VFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zdCBjdXJyZW50UmVzb3VyY2VTdGF0ZSA9IF9yZXNvdXJjZVJlc3VsdHM/LnN0YXRlXG5cbiAgICAgIGlmICghZmV0Y2hlZCAmJiAhaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZmV0Y2hSZXNwb25zZSxcbiAgICAgICAgICBsb2FkaW5nQ29udGVudCxcbiAgICAgICAgICBsb2FkaW5nUmVzb3VyY2UsXG4gICAgICAgIH0gPSBjdXJyZW50UmVzb3VyY2VTdGF0ZVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIHJlc291cmNlcyBjaGFuZ2VkYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcywgZmV0Y2hSZXNwb25zZSB9KVxuXG4gICAgICAgIGlmICghbG9hZGluZ0NvbnRlbnQgJiYgIWxvYWRpbmdSZXNvdXJjZSAmJiBjb250ZW50ICYmIGZldGNoUmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfVxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgY29udGVudCBjaGFuZ2VkYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcywgZmV0Y2hSZXNwb25zZSB9KVxuXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gcmVzcG9uc2VzIGZyb20gc2VydmVyIGNhbiBjb21lIGJhY2sgZnJvbSBwcmV2aW91cyByZXF1ZXN0cy4gIFNvIHdlIG1ha2Ugc3VyZSB0aGlzIHJlc3BvbnNlIGlzIGZvciB0aGUgY3VycmVudCByZXF1ZXN0ZWQgYm9va1xuICAgICAgICAgIGxldCBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gX2Jvb2tJZCB8fCAnJ1xuICAgICAgICAgIGNvbnN0IGZldGNoZWRCb29rID0gY29udGVudC5uYW1lXG5cbiAgICAgICAgICBpZiAoZmV0Y2hlZEJvb2sgJiYgZXhwZWN0ZWRCb29rSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lLCBleHRdID0gZmV0Y2hlZEJvb2suc3BsaXQoJy4nKVxuXG4gICAgICAgICAgICBpZiAoZXh0LnRvTG93ZXJDYXNlKCkgPT09ICd1c2ZtJykge1xuICAgICAgICAgICAgICBzYW1lQm9vayA9IG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhleHBlY3RlZEJvb2tJZC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHNoYSA9IGZldGNoUmVzcG9uc2U/LmRhdGE/LnNoYSB8fCBudWxsXG4gICAgICAgICAgY29uc3QgdXJsID0gZmV0Y2hSZXNwb25zZT8uZGF0YT8udXJsIHx8IG51bGxcblxuICAgICAgICAgIGlmIChzYW1lQm9vaykgeyAvLyBhbHNvIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBicmFuY2hcbiAgICAgICAgICAgIGNvbnN0IGZldGNoZWRCcmFuY2ggPSBnZXRCcmFuY2hOYW1lKHVybClcbiAgICAgICAgICAgIGNvbnN0IGZldGNoaW5nQnJhbmNoID0gZ2V0QnJhbmNoTmFtZShmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKVxuXG4gICAgICAgICAgICBpZiAoZmV0Y2hlZEJyYW5jaCAhPT0gZmV0Y2hpbmdCcmFuY2gpIHtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBpbnZhbGlkIGJyYW5jaCwgZXhwZWN0ZWQgYnJhbmNoIGlzICR7ZmV0Y2hpbmdCcmFuY2h9LCBidXQgZmV0Y2hlZEJyYW5jaCBpcyAke2ZldGNoZWRCcmFuY2h9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgICAgICBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlnbm9yZVNoYSA9PT0gc2hhKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gdGhlIHNoYSBpcyB0aGUgc2FtZSBhcyB0aGUgaWdub3JlIHNoYSAke3NoYX1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgICBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzYW1lQm9vaykge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdGF0ZVsnYm9va09iamVjdHMnXSA9IGNvbnRlbnRcbiAgICAgICAgICAgIG5ld1N0YXRlWyd2ZXJzZXNGb3JSZWYnXSA9IHVwZGF0ZVZlcnNlc0ZvclJlZihjb250ZW50KVxuICAgICAgICAgICAgbmV3U3RhdGVbJ2ZldGNoZWRCb29rJ10gPSBleHBlY3RlZEJvb2tJZFxuXG4gICAgICAgICAgICBpZiAoIWlzRXF1YWwobmV3U3RhdGUsIHtcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgICAgICAgICAgZmV0Y2hlZEJvb2s6IGV4cGVjdGVkQm9va0lkLFxuICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlLFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgICAgICBuZXdTdGF0ZVsnZmV0Y2hlZCddID0gdHJ1ZVxuICAgICAgICAgICAgICBuZXdTdGF0ZVsnaWdub3JlU2hhJ10gPSBudWxsXG4gICAgICAgICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWlzRXF1YWwoY3VycmVudFJlc291cmNlU3RhdGUsIHJlc291cmNlU3RhdGUpKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIHN0YXRlIGNoYW5nZWQsIGJ1dCBubyBjb250ZW50YCwgY3VycmVudFJlc291cmNlU3RhdGUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHJlc291cmNlU3RhdGU6IGN1cnJlbnRSZXNvdXJjZVN0YXRlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVhZHlGb3JGZXRjaCwgX3Jlc291cmNlUmVzdWx0cz8uc3RhdGVdKVxuXG4gIGNvbnN0IHsgdGl0bGUsIHZlcnNpb24gfSA9IHBhcnNlUmVzb3VyY2VNYW5pZmVzdChyZXNvdXJjZSlcbiAgY29uc3QgeyBsYW5ndWFnZUlkIH0gPSByZXNvdXJjZV8gfHwge31cbiAgY29uc3QgbG9hZGluZyA9IGxvYWRpbmdSZXNvdXJjZSB8fCBsb2FkaW5nQ29udGVudCB8fCAhcmVhZHlGb3JGZXRjaFxuICBjb25zdCBjb250ZW50Tm90Rm91bmRFcnJvciA9ICFjb250ZW50XG4gIGNvbnN0IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yID0gIWJpYmxlSnNvblxuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSByZWZTdHJcbiAgICogQHBhcmFtIGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2UoY2hhcHRlciwgdmVyc2UsIHZlcnNlRGF0YSkge1xuICAgIGlmIChib29rT2JqZWN0cykge1xuICAgICAgY29uc3QgYm9va09iamVjdHNfID0geyAuLi5ib29rT2JqZWN0cyB9IC8vIHNoYWxsb3cgY29weVxuXG4gICAgICBpZiAoYm9va09iamVjdHNfPy5jaGFwdGVycykge1xuICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnMgPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVycyB9IC8vIHNoYWxsb3cgY29weSBjaGFwdGVyc1xuXG4gICAgICAgIGlmIChib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0pIHtcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSB9IC8vIHNoYWxsb3cgY29weSB2ZXJzZXNcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl1bdmVyc2VdID0gdmVyc2VEYXRhXG4gICAgICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogYm9va09iamVjdHNfIH0pXG4gICAgICAgICAgcmV0dXJuIGJvb2tPYmplY3RzX1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiBjdXJyZW50IHJlc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gaWdub3JlU2hhIC0gb3B0aW9uYWwgc2hhIHRvIGlnbm9yZVxuICAgKi9cbiAgZnVuY3Rpb24gcmVsb2FkUmVzb3VyY2UoaWdub3JlU2hhKSB7XG4gICAgY29uc3QgX3JlbG9hZFJlc291cmNlID0gX3Jlc291cmNlUmVzdWx0cz8uYWN0aW9ucy5yZWxvYWRSZXNvdXJjZVxuXG4gICAgaWYgKF9yZWxvYWRSZXNvdXJjZSkge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7IGZldGNoZWQ6IGZhbHNlIH1cblxuICAgICAgaWYgKGlnbm9yZVNoYSkgeyAvLyBUUklDS1kgLSBpZiB0aGUgcmVzcG9uc2Ugd2FzIGZvciB0aGlzIHNoYSAod2hpY2ggd2FzIHRoZSBwcmV2aW91cyBzaGEpIHRoZW4gd2UgbmVlZCB0byBpZ25vcmUgaXRcbiAgICAgICAgbmV3U3RhdGVbJ2lnbm9yZVNoYSddID0gaWdub3JlU2hhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSggbmV3U3RhdGUpXG4gICAgICBfcmVsb2FkUmVzb3VyY2UoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMgfSlcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwgfSlcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbY3VycmVudEJvb2tSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBib29rIHJlZiBjaGFuZ2VkIHRvICR7X2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW19ib29rSWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBfYm9va0lkIHx8ICcnXG4gICAgY29uc3QgZmV0Y2hlZEJvb2tTYW1lID0gZmV0Y2hlZEJvb2sgJiYgKGZldGNoZWRCb29rID09PSBleHBlY3RlZEJvb2tJZClcbiAgICBsZXQgX3ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoIWZldGNoZWRCb29rU2FtZSkge1xuICAgICAgLy8gaWYgKGV4cGVjdGVkQm9va0lkICYmIGZldGNoZWRCb29rKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZXhwZWN0ZWQgYm9vayAke2V4cGVjdGVkQm9va0lkfSBidXQgZmV0Y2hlZCBib29rIHdhcyAke2ZldGNoZWRCb29rfSAtIGNsZWFyaW5nYClcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2Jvb2tPYmplY3RzID0gZmV0Y2hlZEJvb2tTYW1lID8gYm9va09iamVjdHMgOiBudWxsXG4gICAgICBfdmVyc2VzRm9yUmVmID0gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgZ2V0VmVyc2VzRm9yUmVmOiBfZ2V0VmVyc2VzRm9yUmVmLFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVsb2FkUmVzb3VyY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIHJlc291cmNlU3RhdHVzLFxuICAgIHRpdGxlLFxuICAgIHVwZGF0ZVZlcnNlLFxuICAgIHZlcnNpb24sXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9XG59XG4iXX0=
473
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZVJzcmMiLCJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIkVSUk9SX1NUQVRFIiwiSU5JVElBTElaRURfU1RBVEUiLCJJTlZBTElEX01BTklGRVNUX0VSUk9SIiwiTE9BRElOR19TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUiIsImdldFZlcnNlcyIsImlzRXF1YWwiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0UmVzb3VyY2VMaW5rIiwiU2VydmVyQ29uZmlnIiwiU2NyaXB0dXJlUmVzb3VyY2UiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJwYXJzZVJlc291cmNlTWFuaWZlc3QiLCJnZXRCcmFuY2hOYW1lIiwicmVzb3VyY2VMaW5rIiwiYnJhbmNoIiwicGFydHMiLCJzcGxpdCIsImxlbmd0aCIsIl9wYXJ0cyIsImdldFZlcnNlc0ZvclJlZlN0ciIsInJlZlN0ciIsImJvb2tPYmplY3RzIiwibGFuZ3VhZ2VJZCIsInZlcnNlcyIsImNoYXB0ZXJzIiwibWFwIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwib2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyIsImdldFZlcnNlc0ZvclJlZiIsInJlZmVyZW5jZSIsImNoYXB0ZXIiLCJ1c2VTY3JpcHR1cmUiLCJjb25maWciLCJyZWFkeUZvckZldGNoIiwicmVzb3VyY2VfIiwicmVzb3VyY2UiLCJyZXNvdXJjZUxpbmtfIiwid2hvbGVCb29rIiwiZmV0Y2hlZEJvb2siLCJmZXRjaFBhcmFtcyIsImlnbm9yZVNoYSIsImluaXRpYWxpemVkIiwiZmV0Y2hlZCIsInJlc291cmNlU3RhdGUiLCJiaWJsZUpzb24iLCJtYXRjaGVkVmVyc2UiLCJjb250ZW50IiwibG9hZGluZ1Jlc291cmNlIiwibG9hZGluZ0NvbnRlbnQiLCJmZXRjaFJlc3BvbnNlIiwidmVyc2VzRm9yUmVmIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfYm9va0lkIiwicHJvamVjdElkIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsInJlZiIsInJlZl8iLCJyZXNvdXJjZUlkIiwiYm9va1JlZiIsIm5ld0ZldGNoUGFyYW1zIiwib3B0aW9ucyIsImdldEJpYmxlSnNvbiIsIl9yZXNvdXJjZVJlc3VsdHMiLCJjdXJyZW50UmVzb3VyY2VTdGF0ZSIsInNhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJuYW1lIiwiZXh0IiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsInNoYSIsImRhdGEiLCJ1cmwiLCJmZXRjaGVkQnJhbmNoIiwiZmV0Y2hpbmdCcmFuY2giLCJ1cGRhdGVWZXJzZXNGb3JSZWYiLCJ0aXRsZSIsInZlcnNpb24iLCJsb2FkaW5nIiwiY29udGVudE5vdEZvdW5kRXJyb3IiLCJzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciIsIm1hbmlmZXN0Tm90Rm91bmRFcnJvciIsIm1hbmlmZXN0IiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJlcnJvciIsInJlc291cmNlU3RhdHVzIiwiaW50aWFsaXplZCIsIl9nZXRWZXJzZXNGb3JSZWYiLCJjb250ZW50XyIsInVwZGF0ZVZlcnNlIiwiYm9va09iamVjdHNfIiwiX2Jvb2tPYmplY3RzIiwibmV3VmVyc2VzRm9yUmVmIiwicmVsb2FkUmVzb3VyY2UiLCJfcmVsb2FkUmVzb3VyY2UiLCJhY3Rpb25zIiwiY3VycmVudEJvb2tSZWYiLCJmZXRjaGVkQm9va1NhbWUiLCJfdmVyc2VzRm9yUmVmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUNFQyxJQURGLEVBRUVDLE9BRkYsUUFHTyx5QkFI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RCxLQUpELE1BSU87QUFDTCxVQUFNTixZQUFZLEdBQUdNLGVBQWUsR0FBR3JGLFdBQUgsR0FBaUIsSUFBckQ7O0FBQ0FzRixNQUFBQSxhQUFhLEdBQUd2QixrQkFBa0IsQ0FBQ2dCLFlBQUQsQ0FBbEMsQ0FGSyxDQUdMO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDL0YsT0FBTyxDQUFDc0csYUFBRCxFQUFnQnRELFlBQWhCLENBQVosRUFBMkM7QUFDekNLLE1BQUFBLFFBQVEsQ0FBQztBQUFFTCxRQUFBQSxZQUFZLEVBQUVzRDtBQUFoQixPQUFELENBQVI7QUFDRDtBQUNGLEdBbEJRLEVBa0JOLENBQUMzRSxTQUFELENBbEJNLENBQVQ7QUFvQkEsU0FBTztBQUNMWCxJQUFBQSxXQUFXLEVBQVhBLFdBREs7QUFFTCtCLElBQUFBLGFBQWEsRUFBYkEsYUFGSztBQUdMckIsSUFBQUEsZUFBZSxFQUFFaUUsZ0JBSFo7QUFJTGhELElBQUFBLFlBQVksRUFBWkEsWUFKSztBQUtMaEIsSUFBQUEsU0FBUyxFQUFFVSxXQUFGLGFBQUVBLFdBQUYsdUJBQUVBLFdBQVcsQ0FBRVYsU0FMbkI7QUFNTHNFLElBQUFBLGNBQWMsRUFBZEEsY0FOSztBQU9MekYsSUFBQUEsWUFBWSxFQUFFNkIsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUU3QixZQVB0QjtBQVFMaUYsSUFBQUEsY0FBYyxFQUFkQSxjQVJLO0FBU0xULElBQUFBLEtBQUssRUFBTEEsS0FUSztBQVVMYSxJQUFBQSxXQUFXLEVBQVhBLFdBVks7QUFXTFosSUFBQUEsT0FBTyxFQUFQQSxPQVhLO0FBWUxqQyxJQUFBQSxZQUFZLEVBQVpBO0FBWkssR0FBUDtBQWNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHtcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBjb3JlLFxuICB1c2VSc3JjLFxufSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBjbGVhbnVwVmVyc2VPYmplY3RzLCBnZXRSZXNvdXJjZUxpbmsgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczogeyByZXNvdXJjZUxpbms6ICcnLCByZWZlcmVuY2U6IHt9IH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBiaWJsZUpzb246IG51bGwsXG4gICAgICBtYXRjaGVkVmVyc2U6IG51bGwsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgZmV0Y2hSZXNwb25zZTogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoZWRCb29rLFxuICAgIGZldGNoUGFyYW1zLFxuICAgIGZldGNoZWQsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgX2Jvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gcmVhZHlGb3JGZXRjaCB0cnVlLCBpbml0aWFsaXppbmdgKVxuICAgICAgbGV0IHJlc291cmNlTGluayA9IHJlYWR5Rm9yRmV0Y2ggJiYgcmVzb3VyY2VMaW5rX1xuXG4gICAgICBpZiAoIXJlc291cmNlTGlua18gJiYgcmVzb3VyY2VfKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHByb2plY3RJZCxcbiAgICAgICAgICBicmFuY2ggPSAnbWFzdGVyJyxcbiAgICAgICAgICByZWYgPSBudWxsLFxuICAgICAgICB9ID0gcmVzb3VyY2VfIHx8IHt9XG4gICAgICAgIGNvbnN0IHJlZl8gPSByZWYgfHwgYnJhbmNoXG5cbiAgICAgICAgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQ6IHByb2plY3RJZCxcbiAgICAgICAgICByZWY6IHJlZl8sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGJvb2tSZWYgPSB7IC4uLnJlZmVyZW5jZSB9XG5cbiAgICAgIGlmICh3aG9sZUJvb2spIHtcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYuY2hhcHRlciAvLyByZW1vdmUgdGhlIGNoYXB0ZXIgYW5kIHZlcnNlIHNvIHRoZSB3aG9sZSBib29rIGlzIGZldGNoZWRcbiAgICAgICAgZGVsZXRlIGJvb2tSZWYudmVyc2VcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlTGluayAhPT0gZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7cmVzb3VyY2VMaW5rX31gKVxuICAgICAgfSBlbHNlIGlmIChib29rUmVmICE9PSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBib29rIGNoYW5nZWQgdG8gJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua31gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdGZXRjaFBhcmFtcyA9IHtcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgICByZWZlcmVuY2U6IGJvb2tSZWYsXG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFcXVhbChuZXdGZXRjaFBhcmFtcywgZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBGRVRDSElORyBuZXcgcGFyYW1zICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7cmVzb3VyY2VMaW5rX31gLCBuZXdGZXRjaFBhcmFtcylcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGZldGNoUGFyYW1zOiBuZXdGZXRjaFBhcmFtcyxcbiAgICAgICAgICBmZXRjaGVkOiBmYWxzZSxcbiAgICAgICAgICBpZ25vcmVTaGE6IG51bGwsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVhZHlGb3JGZXRjaCwgX2Jvb2tJZCwgcmVzb3VyY2VMaW5rX10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlYWR5Rm9yRmV0Y2ggaXMgbm93ICR7cmVhZHlGb3JGZXRjaH1gKVxuICB9LCBbcmVhZHlGb3JGZXRjaF0pXG5cbiAgY29uc3Qgb3B0aW9ucyA9IHsgZ2V0QmlibGVKc29uOiB0cnVlIH1cblxuICBjb25zdCBfcmVzb3VyY2VSZXN1bHRzID0gdXNlUnNyYyh7XG4gICAgY29uZmlnLFxuICAgIHJlZmVyZW5jZTogZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUxpbms6IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmssXG4gICAgb3B0aW9ucyxcbiAgfSlcblxuICAvLyBvbmx5IHVzZSB0aGUgcmVzdWx0cyBpZiByZWFkeVRvRmV0Y2hcbiAgY29uc3Qge1xuICAgIGJpYmxlSnNvbixcbiAgICBjb250ZW50LFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgbG9hZGluZ1Jlc291cmNlLFxuICAgIGxvYWRpbmdDb250ZW50LFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZXNvdXJjZSxcbiAgfSA9IHJlc291cmNlU3RhdGVcblxuICB1c2VFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoKSB7XG4gICAgICBjb25zdCBjdXJyZW50UmVzb3VyY2VTdGF0ZSA9IF9yZXNvdXJjZVJlc3VsdHM/LnN0YXRlXG5cbiAgICAgIGlmICghZmV0Y2hlZCAmJiAhaXNFcXVhbChjdXJyZW50UmVzb3VyY2VTdGF0ZSwgcmVzb3VyY2VTdGF0ZSkpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGNvbnRlbnQsXG4gICAgICAgICAgZmV0Y2hSZXNwb25zZSxcbiAgICAgICAgICBsb2FkaW5nQ29udGVudCxcbiAgICAgICAgICBsb2FkaW5nUmVzb3VyY2UsXG4gICAgICAgIH0gPSBjdXJyZW50UmVzb3VyY2VTdGF0ZVxuICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIHJlc291cmNlcyBjaGFuZ2VkYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcywgZmV0Y2hSZXNwb25zZSB9KVxuXG4gICAgICAgIGlmICghbG9hZGluZ0NvbnRlbnQgJiYgIWxvYWRpbmdSZXNvdXJjZSAmJiBjb250ZW50ICYmIGZldGNoUmVzcG9uc2UpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgcmVzb3VyY2VTdGF0ZTogY3VycmVudFJlc291cmNlU3RhdGUgfVxuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgY29udGVudCBjaGFuZ2VkYCwgeyBjb250ZW50LCBmZXRjaFBhcmFtcywgZmV0Y2hSZXNwb25zZSB9KVxuXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gcmVzcG9uc2VzIGZyb20gc2VydmVyIGNhbiBjb21lIGJhY2sgZnJvbSBwcmV2aW91cyByZXF1ZXN0cy4gIFNvIHdlIG1ha2Ugc3VyZSB0aGlzIHJlc3BvbnNlIGlzIGZvciB0aGUgY3VycmVudCByZXF1ZXN0ZWQgYm9va1xuICAgICAgICAgIGxldCBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gX2Jvb2tJZCB8fCAnJ1xuICAgICAgICAgIGNvbnN0IGZldGNoZWRCb29rID0gY29udGVudC5uYW1lXG5cbiAgICAgICAgICBpZiAoZmV0Y2hlZEJvb2sgJiYgZXhwZWN0ZWRCb29rSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IFtuYW1lLCBleHRdID0gZmV0Y2hlZEJvb2suc3BsaXQoJy4nKVxuXG4gICAgICAgICAgICBpZiAoZXh0LnRvTG93ZXJDYXNlKCkgPT09ICd1c2ZtJykge1xuICAgICAgICAgICAgICBzYW1lQm9vayA9IG5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhleHBlY3RlZEJvb2tJZC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHNoYSA9IGZldGNoUmVzcG9uc2U/LmRhdGE/LnNoYSB8fCBudWxsXG4gICAgICAgICAgY29uc3QgdXJsID0gZmV0Y2hSZXNwb25zZT8uZGF0YT8udXJsIHx8IG51bGxcblxuICAgICAgICAgIGlmIChzYW1lQm9vaykgeyAvLyBhbHNvIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBicmFuY2hcbiAgICAgICAgICAgIGNvbnN0IGZldGNoZWRCcmFuY2ggPSBnZXRCcmFuY2hOYW1lKHVybClcbiAgICAgICAgICAgIGNvbnN0IGZldGNoaW5nQnJhbmNoID0gZ2V0QnJhbmNoTmFtZShmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKVxuXG4gICAgICAgICAgICBpZiAoZmV0Y2hlZEJyYW5jaCAhPT0gZmV0Y2hpbmdCcmFuY2gpIHtcbiAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBpbnZhbGlkIGJyYW5jaCwgZXhwZWN0ZWQgYnJhbmNoIGlzICR7ZmV0Y2hpbmdCcmFuY2h9LCBidXQgZmV0Y2hlZEJyYW5jaCBpcyAke2ZldGNoZWRCcmFuY2h9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgICAgICBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGlnbm9yZVNoYSA9PT0gc2hhKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gdGhlIHNoYSBpcyB0aGUgc2FtZSBhcyB0aGUgaWdub3JlIHNoYSAke3NoYX1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgICAgICBzYW1lQm9vayA9IGZhbHNlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFzYW1lQm9vaykge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdTdGF0ZVsnYm9va09iamVjdHMnXSA9IGNvbnRlbnRcbiAgICAgICAgICAgIG5ld1N0YXRlWyd2ZXJzZXNGb3JSZWYnXSA9IHVwZGF0ZVZlcnNlc0ZvclJlZihjb250ZW50KVxuICAgICAgICAgICAgbmV3U3RhdGVbJ2ZldGNoZWRCb29rJ10gPSBleHBlY3RlZEJvb2tJZFxuXG4gICAgICAgICAgICBpZiAoIWlzRXF1YWwobmV3U3RhdGUsIHtcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgICAgICAgICAgZmV0Y2hlZEJvb2s6IGV4cGVjdGVkQm9va0lkLFxuICAgICAgICAgICAgICByZXNvdXJjZVN0YXRlLFxuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgICAgICAgICBuZXdTdGF0ZVsnZmV0Y2hlZCddID0gdHJ1ZVxuICAgICAgICAgICAgICBuZXdTdGF0ZVsnaWdub3JlU2hhJ10gPSBudWxsXG4gICAgICAgICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoIWlzRXF1YWwoY3VycmVudFJlc291cmNlU3RhdGUsIHJlc291cmNlU3RhdGUpKSB7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIHN0YXRlIGNoYW5nZWQsIGJ1dCBubyBjb250ZW50YCwgY3VycmVudFJlc291cmNlU3RhdGUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHJlc291cmNlU3RhdGU6IGN1cnJlbnRSZXNvdXJjZVN0YXRlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVhZHlGb3JGZXRjaCwgX3Jlc291cmNlUmVzdWx0cz8uc3RhdGVdKVxuXG4gIGNvbnN0IHsgdGl0bGUsIHZlcnNpb24gfSA9IHBhcnNlUmVzb3VyY2VNYW5pZmVzdChyZXNvdXJjZSlcbiAgY29uc3QgeyBsYW5ndWFnZUlkIH0gPSByZXNvdXJjZV8gfHwge31cbiAgY29uc3QgbG9hZGluZyA9IGxvYWRpbmdSZXNvdXJjZSB8fCBsb2FkaW5nQ29udGVudCB8fCAhcmVhZHlGb3JGZXRjaFxuICBjb25zdCBjb250ZW50Tm90Rm91bmRFcnJvciA9ICFjb250ZW50XG4gIGNvbnN0IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yID0gIWJpYmxlSnNvblxuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSByZWZTdHJcbiAgICogQHBhcmFtIGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2UoY2hhcHRlciwgdmVyc2UsIHZlcnNlRGF0YSkge1xuICAgIGlmIChib29rT2JqZWN0cykge1xuICAgICAgY29uc3QgYm9va09iamVjdHNfID0geyAuLi5ib29rT2JqZWN0cyB9IC8vIHNoYWxsb3cgY29weVxuXG4gICAgICBpZiAoYm9va09iamVjdHNfPy5jaGFwdGVycykge1xuICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnMgPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVycyB9IC8vIHNoYWxsb3cgY29weSBjaGFwdGVyc1xuXG4gICAgICAgIGlmIChib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0pIHtcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSB9IC8vIHNoYWxsb3cgY29weSB2ZXJzZXNcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl1bdmVyc2VdID0gdmVyc2VEYXRhXG4gICAgICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogYm9va09iamVjdHNfIH0pXG4gICAgICAgICAgcmV0dXJuIGJvb2tPYmplY3RzX1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBmdW5jdGlvbiB1cGRhdGVWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiBjdXJyZW50IHJlc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gaWdub3JlU2hhIC0gb3B0aW9uYWwgc2hhIHRvIGlnbm9yZVxuICAgKi9cbiAgZnVuY3Rpb24gcmVsb2FkUmVzb3VyY2UoaWdub3JlU2hhKSB7XG4gICAgY29uc3QgX3JlbG9hZFJlc291cmNlID0gX3Jlc291cmNlUmVzdWx0cz8uYWN0aW9ucy5yZWxvYWRSZXNvdXJjZVxuXG4gICAgaWYgKF9yZWxvYWRSZXNvdXJjZSkge1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7IGZldGNoZWQ6IGZhbHNlIH1cblxuICAgICAgaWYgKGlnbm9yZVNoYSkgeyAvLyBUUklDS1kgLSBpZiB0aGUgcmVzcG9uc2Ugd2FzIGZvciB0aGlzIHNoYSAod2hpY2ggd2FzIHRoZSBwcmV2aW91cyBzaGEpIHRoZW4gd2UgbmVlZCB0byBpZ25vcmUgaXRcbiAgICAgICAgbmV3U3RhdGVbJ2lnbm9yZVNoYSddID0gaWdub3JlU2hhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSggbmV3U3RhdGUpXG4gICAgICBfcmVsb2FkUmVzb3VyY2UoKVxuICAgIH1cbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY3VycmVudEJvb2tSZWYgPSBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjdXJyZW50Qm9va1JlZikge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBmZXRjaGVkIGJvb2sgY2hhbmdlZCB0byAke2N1cnJlbnRCb29rUmVmfSwgJHtyZXNvdXJjZUxpbmtffWAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMgfSlcbiAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IG51bGwgfSlcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbY3VycmVudEJvb2tSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBfYm9va0lkIHx8ICcnXG4gICAgY29uc3QgZmV0Y2hlZEJvb2tTYW1lID0gZmV0Y2hlZEJvb2sgJiYgKGZldGNoZWRCb29rID09PSBleHBlY3RlZEJvb2tJZClcbiAgICBsZXQgX3ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoIWZldGNoZWRCb29rU2FtZSkge1xuICAgICAgLy8gaWYgKGV4cGVjdGVkQm9va0lkICYmIGZldGNoZWRCb29rKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZXhwZWN0ZWQgYm9vayAke2V4cGVjdGVkQm9va0lkfSBidXQgZmV0Y2hlZCBib29rIHdhcyAke2ZldGNoZWRCb29rfSAtIGNsZWFyaW5nYClcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2Jvb2tPYmplY3RzID0gZmV0Y2hlZEJvb2tTYW1lID8gYm9va09iamVjdHMgOiBudWxsXG4gICAgICBfdmVyc2VzRm9yUmVmID0gdXBkYXRlVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoUmVzcG9uc2UsXG4gICAgZ2V0VmVyc2VzRm9yUmVmOiBfZ2V0VmVyc2VzRm9yUmVmLFxuICAgIG1hdGNoZWRWZXJzZSxcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVsb2FkUmVzb3VyY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIHJlc291cmNlU3RhdHVzLFxuICAgIHRpdGxlLFxuICAgIHVwZGF0ZVZlcnNlLFxuICAgIHZlcnNpb24sXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9XG59XG4iXX0=
@@ -533,6 +533,7 @@ export function useScriptureAlignmentEdit(_ref) {
533
533
  return {
534
534
  actions: {
535
535
  cancelAlignment: cancelAlignment,
536
+ clearChanges: clearChanges,
536
537
  getChanges: getChanges,
537
538
  handleAlignmentClick: handleAlignmentClick,
538
539
  onAlignmentsChange: onAlignmentsChange,
@@ -557,4 +558,4 @@ export function useScriptureAlignmentEdit(_ref) {
557
558
  }
558
559
  };
559
560
  }
560
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwiYm9va0lkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwidmVyc2VSZWZlcmVuY2UiLCJvcmlnVmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJwdXNoIiwiYXBwbHkiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiX25ld1N0YXRlIiwidXBkYXRlZFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfYWxpZ25lckRhdGEiLCJvcmlnaW5hbFZlcnNlVXNmbSIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiZWRpdGluZ18iLCJfbmV3VmVyc2VUZXh0Iiwic2V0VmVyc2VDaGFuZ2VkIiwiY2hhbmdlZCIsIl9pbml0aWFsVmVyc2VUZXh0IiwiX2NoYW5nZWQiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FDRUMsZ0JBREYsRUFFRUMseUJBRkYsRUFHRUMsV0FIRixRQUlPLGtCQUpQO0FBS0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FDRUMsZUFERixFQUVFQyxrQkFGRixFQUdFQyxZQUhGLFFBSU8sVUFKUDtBQUtBLFNBQVNDLDRCQUFULFFBQTZDLDRCQUE3QztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsVUFBaEM7QUFDQSxTQUFTQyxlQUFULFFBQWdDLGdCQUFoQzs7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLGVBQXZCLEVBQXdDQyxvQkFBeEMsRUFBOEQ7QUFBQTs7QUFDNURBLEVBQUFBLG9CQUFvQixHQUFHLHlCQUFBQSxvQkFBb0IsVUFBcEIsOERBQXNCQyxNQUF0QixHQUErQkQsb0JBQS9CLEdBQXNELElBQTdFLENBRDRELENBQ3NCOztBQUR0Qiw4QkFFM0JaLGdCQUFnQixDQUFDYyxnQ0FBakIsQ0FBa0RILGVBQWxELEVBQW1FQyxvQkFBbkUsQ0FGMkI7QUFBQSxNQUVwREcsVUFGb0QseUJBRXBEQSxVQUZvRDtBQUFBLE1BRXhDQyxRQUZ3Qyx5QkFFeENBLFFBRndDOztBQUc1RCxTQUFPaEIsZ0JBQWdCLENBQUNpQixvQkFBakIsQ0FBc0NELFFB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TyxFQUFQQSxPQURLO0FBRUxDLE1BQUFBLFdBQVcsRUFBWEEsV0FGSztBQUdMZ0UsTUFBQUEsbUJBQW1CLEVBQW5CQSxtQkFISztBQUlML0QsTUFBQUEsT0FBTyxFQUFQQSxPQUpLO0FBS0xqQixNQUFBQSxnQkFBZ0IsRUFBaEJBLGdCQUxLO0FBTUxaLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBTks7QUFPTEUsTUFBQUEsWUFBWSxFQUFaQSxZQVBLO0FBUUxlLE1BQUFBLFNBQVMsRUFBRW1CLGNBUk47QUFTTGYsTUFBQUEsY0FBYyxFQUFkQSxjQVRLO0FBVUxFLE1BQUFBLGNBQWMsRUFBZEEsY0FWSztBQVdMQyxNQUFBQSxLQUFLLEVBQUxBLEtBWEs7QUFZTHFFLE1BQUFBLGNBQWMsRUFBZEEsY0FaSztBQWFMNUYsTUFBQUEsZ0JBQWdCLEVBQWhCQTtBQWJLO0FBVkYsR0FBUDtBQTBCRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyxcbiAgdXNmbUhlbHBlcnMsXG59IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBTY3JpcHR1cmVDb25maWcsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgU2VydmVyQ29uZmlnLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyB7XG4gIC8vIGluZGV4IHRvIHVzZSBmb3IgYm9vayAoZS5nLiBgMDFgIGZvciBgR0VOYClcbiAgYm9va0luZGV4OiBzdHJpbmcsXG4gIC8vIGN1cnJlbnQgdmVyc2Ugc2VsZWN0ZWQgZnJvbSBpbml0aWFsVmVyc2VPYmplY3RzW11cbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHJlZmVyZW5jZSBmb3IgdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudFxuICBjdXJyZW50VmVyc2VSZWY6IFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxuICBlbmFibGVFZGl0OiBib29sZWFuLFxuICAvLyBpZiB0cnVlIHRoZW4gYWxpZ25tZW50IGlzIGFsbG93ZWRcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxuICAvLyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaHR0cCBjb21tdW5pY2F0aW9uXG4gIGh0dHBDb25maWc6IFNlcnZlckNvbmZpZyxcbiAgLy8gYXJyYXkgb2YgZWFjaCB2ZXJzZSBmb3IgaW4gcmVmZXJlbmNlIHJhbmdlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFtdLFxuICAvLyBpbml0aWFsIHRleHQgZm9yIHZlcnNlXG4gIGluaXRpYWxWZXJzZVRleHQ6IHN0cmluZyxcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcbiAgaXNOZXdUZXN0YW1lbnQ6IGJvb2xlYW4sXG4gIC8vIHVzZXIgbmFtZSBvZiBsb2dnZWQgaW4gdXNlclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcbiAgLy8gb3duZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VzXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogc3RyaW5nLFxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXG4gIG9yaWdpbmFsUmVwb1VybDogc3RyaW5nLFxuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8vIGRldGFpbHMgYWJvdXQgdGhlIGN1cnJlbnQgc2NyaXB0dXJlIGxvYWRlZFxuICBzY3JpcHR1cmVDb25maWc6IFNjcmlwdHVyZUNvbmZpZyxcbiAgLy8gc2V0dGluZ3MgdG8gYmUgdXNlZCBmb3Igc2NyaXB0dXJlXG4gIHNjcmlwdHVyZVNldHRpbmdzOiB7IH0sXG4gIC8vIGNhbGxiYWNrIHRvIHNhdmUgY3VycmVudCB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgY2hhbmdlc1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uLFxuICAvLyBzb3VyY2UgbGFuZ3VhZ2VcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBvYmplY3QsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7b2JqZWN0W119IG9yaWdpbmFsVmVyc2VPYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XG4gIGNvbnN0IHsgYWxpZ25tZW50cywgd29yZEJhbmsgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgcmV0dXJuIEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUod29yZEJhbmssIGFsaWdubWVudHMpXG59XG5cbi8qKlxuICogZ2V0IHRoZSB1cGRhdGVkIFVTRk0gZm9yIHRhcmdldCB2ZXJzZSBmcm9tIHRoZSB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYW5kIGxhdGVzdCB0ZXh0XG4gKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbml0aWFsVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZlcnNlVGV4dENoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQpIHtcbiAgbGV0IHRhcmdldFZlcnNlVVNGTSA9IG51bGxcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcblxuICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldFZlcnNlVVNGTSA9IHRhcmdldFZlcnNlVGV4dFxuICB9IGVsc2Uge1xuICAgIHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgfVxuICByZXR1cm4gdGFyZ2V0VmVyc2VVU0ZNXG59XG5cbi8vIG1hbmFnZSB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgc3RhdGVzXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCh7XG4gIGN1cnJlbnRJbmRleCxcbiAgZW5hYmxlRWRpdCxcbiAgZW5hYmxlQWxpZ25tZW50LFxuICBodHRwQ29uZmlnLFxuICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICBpbml0aWFsVmVyc2VUZXh0LFxuICBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBvcmlnaW5hbFJlcG9VcmwsXG4gIHJlZmVyZW5jZSxcbiAgc2NyaXB0dXJlQ29uZmlnLFxuICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzb3VyY2VMYW5ndWFnZSxcbiAgc3RhcnRFZGl0QnJhbmNoLFxuICB0YXJnZXRMYW5ndWFnZSxcbiAgdGl0bGUsXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbn0gOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGFsaWduZWQ6IGZhbHNlLFxuICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWQsXG4gICAgYWxpZ25lckRhdGEsXG4gICAgZWRpdGluZyxcbiAgICBuZXdBbGlnbm1lbnRzLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgYWxpZ25tZW50IHN0YXR1cyB3aGVuIGFsaWduZXIgaXMgaGlkZGVuXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBsZXQgYWxpZ25lZF8gPSBmYWxzZVxuXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cbiAgICAgIGlmIChub3RFbXB0eSkgeyAvLyBza2lwIGlmIGVtcHR5XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgICBhbGlnbmVkXyA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZChyZXN1bHRzPy50YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcbiAgICAgICAgc2V0U3RhdGUoeyBhbGlnbmVkOiBhbGlnbmVkXyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxWZXJzZU9iamVjdHMsIGFsaWduZXJEYXRhLCBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQsIGVuYWJsZUFsaWdubWVudCwgb3JpZ2luYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBnZXQgY2hhbmdlcyBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIG9wdGlvbmFsbHkgcGFzcyBpbiBuZXcgc3RhdGUgKHRvIG92ZXJyaWRlIHN0YXRlKVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2hhbmdlcyhuZXdTdGF0ZSA9IHt9KSB7XG4gICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBzdGFydGVkICR7Y3VycmVudEluZGV4fSAtIHBhc3NlZCBzdGF0ZWAsIG5ld1N0YXRlKVxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdBbGlnbm1lbnRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSA9IF9uZXdTdGF0ZVxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgIGlmIChuZXdBbGlnbm1lbnRzKSB7IC8vIGlmIHVuc2F2ZWQgYWxpZ25tZW50IGNoYW5nZXMsIGFwcGx5IHRoZW1cbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YSA9IG51bGxcbiAgICAgIGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gaWYgd29yZCBhbGlnbmVyIG5vdCBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSB0b2dnbGUgT04gYWxpZ25tZW50YClcbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcblxuICAgICAgICBpZiAob3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXG4gICAgICAgICAgdmVyc2VBbGlnbm1lbnRzOiBhbGlnbm1lbnRzLFxuICAgICAgICB9ID0gQWxpZ25tZW50SGVscGVycy5wYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VVc2ZtKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cbiAgICAgIH0gZWxzZSB7IC8vIHdvcmQgYWxpZ25lciBjdXJyZW50bHkgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gYWxpZ25tZW50IGFscmVhZHkgc2hvd25gKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogX2FsaWduZXJEYXRhIH0pXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYWZ0ZXIgYWxpZ25tZW50cyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHRhcmdldFZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCB8fCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgY29uc3QgdmVyc2VVc2ZtID0gQWxpZ25tZW50SGVscGVycy5hZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0oX25ld0FsaWdubWVudHMudGFyZ2V0V29yZHMsIF9uZXdBbGlnbm1lbnRzLnZlcnNlQWxpZ25tZW50cywgdGFyZ2V0VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxuICAgIHJldHVybiBhbGlnbmVkVmVyc2VPYmplY3RzXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBzYXZlIGN1cnJlbnQgYWxpZ25tZW50cyBpbiB3b3JkIGFsaWduZXIuICBHZW5lcmF0ZXMgbmV3IHZlcnNlIGNvbnRlbnQgYW5kIHNhdmVzIGluIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUFsaWdubWVudChfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbmV3QWxpZ25tZW50c2AsIF9uZXdBbGlnbm1lbnRzKVxuXG4gICAgaWYgKF9uZXdBbGlnbm1lbnRzKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cylcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IGFsaWduZWRWZXJzZU9iamVjdHMsXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHRydWUsIG5ld1N0YXRlIClcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIGNhbmNlbCB3b3JrIGluIHdvcmQgYWxpZ25lci4gIENhbGN1bGF0ZXMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgYWxpZ25tZW50IHZhbGlkIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqL1xuICBmdW5jdGlvbiBjYW5jZWxBbGlnbm1lbnQoKSB7XG4gICAgY29uc29sZS5sb2coYGNhbmNlbEFsaWdubWVudCgpYClcbiAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IG51bGwsIGFsaWduZWQgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3IgYnV0dG9uIHRvIHNldCBlZGl0aW5nIHN0YXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZ18gLSBpZiB0cnVlLCBlZGl0b3IgaXMgc2hvd24sIG90aGVyd2lzZSBlZGl0b3IgaXMgaGlkZGVuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfbmV3VmVyc2VUZXh0IC0gb3B0aW9uYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbiAgYXN5bmMgZnVuY3Rpb24gc2V0RWRpdGluZyhlZGl0aW5nXywgX25ld1ZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCkge1xuICAgIGlmIChlbmFibGVFZGl0KSB7XG4gICAgICBpZiAoZWRpdGluZ18gIT09IGVkaXRpbmcpIHtcbiAgICAgICAgX25ld1ZlcnNlVGV4dCA9IF9uZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHsgZWRpdGluZzogZWRpdGluZ18sIG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCB9XG4gICAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSgoX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCksIG5ld1N0YXRlIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZnJvbSB0aGUgZWRpdCBvbkNoYW5nZSBldmVudCB0byB1cGRhdGUgZWRpdCBzdGF0ZSB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBjaGFuZ2VkIC0gdHJ1ZSBpZiB0aGUgbmV3VmVyc2VUZXh0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBpbml0aWFsVmVyc2VUZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBjdXJyZW50IGNoYW5nZWQgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2luaXRpYWxWZXJzZVRleHQgLSBpbml0aWFsIHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIHNldFZlcnNlQ2hhbmdlZChjaGFuZ2VkLCBuZXdWZXJzZVRleHQsIF9pbml0aWFsVmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoaW5pdGlhbFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgX2NoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQ6IF9jaGFuZ2VkLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgYWxpZ25lZCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGdlbmVyYXRlIG5ldyB2ZXJzZU9iamVjdHMgdG8gZGlzcGxheSBpbiBTY3JpcHR1cmVQYW5lXG4gICAgaWYgKGluaXRpYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odGFyZ2V0VmVyc2VVU0ZNKVxuICAgICAgcmV0dXJuIGN1cnJlbnRWZXJzZU9iamVjdHNfXG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmVyc2VPYmplY3RzXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHRdKVxuXG4gIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzOmJvb2xlYW4gPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBpbmRpY2F0ZSB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2ZXJzZVRleHRDaGFuZ2VkIHx8ICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIHVwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgIHJldHVybiBjaGFuZ2VkXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgdG8gc2NyaXB0dXJlIGNhcmQgdG8gdXBkYXRlZCB3aXRoIGxhdGVzdCBzdGF0ZSBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5zYXZlZENoYW5nZXNfXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfLCBuZXdTdGF0ZSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCBhbGlnbmVyRGF0YVxuICAgIGNhbGxTZXRTYXZlZFN0YXRlKHVuc2F2ZWRDaGFuZ2VzXylcbiAgfSwgW3Vuc2F2ZWRDaGFuZ2VzLCBhbGlnbmVyRGF0YV0pXG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIGFsaWdubWVudHMgYXJlIGJlaW5nIGNoYW5nZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzKSB7XG4gICAgY29uc29sZS5sb2coYG9uQWxpZ25tZW50c0NoYW5nZSgpIC0gYWxpZ25tZW50IGNoYW5nZWQsIHJlc3VsdHNgLCByZXN1bHRzKSAvLyBtZXJnZSBhbGlnbm1lbnRzIGludG8gdGFyZ2V0IHZlcnNlIGFuZCBjb252ZXJ0IHRvIFVTRk1cbiAgICBjb25zdCB7IHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMgfSA9IHJlc3VsdHNcbiAgICBjb25zdCBhbGlnbm1lbnRDb21wbGV0ZSA9IEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUodGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cylcbiAgICBjb25zb2xlLmxvZyhgQWxpZ25tZW50cyBhcmUgJHthbGlnbm1lbnRDb21wbGV0ZSA/ICdDT01QTEVURSEnIDogJ2luY29tcGxldGUnfWApXG4gICAgc2V0U3RhdGUoeyBuZXdBbGlnbm1lbnRzOiByZXN1bHRzLCBhbGlnbmVkOiBhbGlnbm1lbnRDb21wbGV0ZSB9KVxuICAgIHJldHVybiBhbGlnbm1lbnRDb21wbGV0ZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjYW5jZWxBbGlnbm1lbnQsXG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2ssXG4gICAgICBvbkFsaWdubWVudHNDaGFuZ2UsXG4gICAgICBzYXZlQWxpZ25tZW50LFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9LFxuICB9XG59XG4iXX0=
561
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwiYm9va0lkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwidmVyc2VSZWZlcmVuY2UiLCJvcmlnVmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiQXJyYXkiLCJwcm90b3R5cGUiLCJwdXNoIiwiYXBwbHkiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiX25ld1N0YXRlIiwidXBkYXRlZFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfYWxpZ25lckRhdGEiLCJvcmlnaW5hbFZlcnNlVXNmbSIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiZWRpdGluZ18iLCJfbmV3VmVyc2VUZXh0Iiwic2V0VmVyc2VDaGFuZ2VkIiwiY2hhbmdlZCIsIl9pbml0aWFsVmVyc2VUZXh0IiwiX2NoYW5nZWQiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0EsT0FBTyxLQUFLQSxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FDRUMsZ0JBREYsRUFFRUMseUJBRkYsRUFHRUMsV0FIRixRQUlPLGtCQUpQO0FBS0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FDRUMsZUFERixFQUVFQyxrQkFGRixFQUdFQyxZQUhGLFFBSU8sVUFKUDtBQUtBLFNBQVNDLDRCQUFULFFBQTZDLDRCQUE3QztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsVUFBaEM7QUFDQSxTQUFTQyxlQUFULFFBQWdDLGdCQUFoQzs7QUFxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLGVBQXZCLEVBQXdDQyxvQkFBeEMsRUFBOEQ7QUFBQTs7QUFDNURBLEVBQUFBLG9CQUFvQixHQUFHLHlCQUFBQSxvQkFBb0IsVUFBcEIsOERBQXNCQyxNQUF0QixHQUErQkQsb0JBQS9CLEdBQXNELElBQTdFLENBRDRELENBQ3NCOztBQUR0Qiw4QkFFM0JaLGdCQUFnQixDQUFDYyxnQ0FBakIsQ0FBa0RILGVBQWxELEVBQW1FQyxvQkFBbkUsQ0FGMkI7QUFBQSxNQUVwREcsVUFGb0QseUJBRXBEQSxVQUZvRDtBQUFBLE1BRXhDQyxRQUZ3Qyx5QkFFeENBLFFBRndDOztBQUc1RCxTQUFPaEIsZ0JBQWdCLENBQUNpQixvQkFBakIsQ0FBc0NELFFB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QUFBLEtBQUssRUFBRTtBQUNMSixNQUFBQSxPQUFPLEVBQVBBLE9BREs7QUFFTEMsTUFBQUEsV0FBVyxFQUFYQSxXQUZLO0FBR0xnRSxNQUFBQSxtQkFBbUIsRUFBbkJBLG1CQUhLO0FBSUwvRCxNQUFBQSxPQUFPLEVBQVBBLE9BSks7QUFLTGpCLE1BQUFBLGdCQUFnQixFQUFoQkEsZ0JBTEs7QUFNTFosTUFBQUEsbUJBQW1CLEVBQW5CQSxtQkFOSztBQU9MRSxNQUFBQSxZQUFZLEVBQVpBLFlBUEs7QUFRTGUsTUFBQUEsU0FBUyxFQUFFbUIsY0FSTjtBQVNMZixNQUFBQSxjQUFjLEVBQWRBLGNBVEs7QUFVTEUsTUFBQUEsY0FBYyxFQUFkQSxjQVZLO0FBV0xDLE1BQUFBLEtBQUssRUFBTEEsS0FYSztBQVlMcUUsTUFBQUEsY0FBYyxFQUFkQSxjQVpLO0FBYUw1RixNQUFBQSxnQkFBZ0IsRUFBaEJBO0FBYks7QUFYRixHQUFQO0FBMkJEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB1c2ZtSGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7XG4gIFNjcmlwdHVyZUNvbmZpZyxcbiAgU2NyaXB0dXJlUmVmZXJlbmNlLFxuICBTZXJ2ZXJDb25maWcsXG59IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyB9IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgT1JJR0lOQUxfU09VUkNFIH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQgeyBnZXRWZXJzZXNGb3JSZWYgfSBmcm9tICcuL3VzZVNjcmlwdHVyZSdcblxuaW50ZXJmYWNlIFN0YXJ0RWRpdCB7XG4gICgpOiBQcm9taXNlPHN0cmluZz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIHtcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxuICBib29rSW5kZXg6IHN0cmluZyxcbiAgLy8gY3VycmVudCB2ZXJzZSBzZWxlY3RlZCBmcm9tIGluaXRpYWxWZXJzZU9iamVjdHNbXVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gcmVmZXJlbmNlIGZvciB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50XG4gIGN1cnJlbnRWZXJzZVJlZjogU2NyaXB0dXJlUmVmZXJlbmNlLFxuICAvLyBpZiB0cnVlIHRoZW4gZWRpdGluZyBpcyBhbGxvd2VkXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXG4gIC8vIGlmIHRydWUgdGhlbiBhbGlnbm1lbnQgaXMgYWxsb3dlZFxuICBlbmFibGVBbGlnbm1lbnQ6IGJvb2xlYW4sXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cbiAgaHR0cENvbmZpZzogU2VydmVyQ29uZmlnLFxuICAvLyBhcnJheSBvZiBlYWNoIHZlcnNlIGZvciBpbiByZWZlcmVuY2UgcmFuZ2VcbiAgaW5pdGlhbFZlcnNlT2JqZWN0czogW10sXG4gIC8vIGluaXRpYWwgdGV4dCBmb3IgdmVyc2VcbiAgaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nLFxuICAvLyBmbGFnIHRoYXQgd2UgYXJlIHdvcmtpbmcgb24gTlQgYm9va1xuICBpc05ld1Rlc3RhbWVudDogYm9vbGVhbixcbiAgLy8gdXNlciBuYW1lIG9mIGxvZ2dlZCBpbiB1c2VyXG4gIGxvZ2dlZEluVXNlcjogc3RyaW5nLFxuICAvLyBvd25lciB0byB1c2Ugd2hlbiBmZXRjaGluZyBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZXNcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBzdHJpbmcsXG4gIC8vIHVybCBmb3IgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHJlcG9cbiAgb3JpZ2luYWxSZXBvVXJsOiBzdHJpbmcsXG4gIC8vIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IG9iamVjdCxcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLy8gZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzY3JpcHR1cmUgbG9hZGVkXG4gIHNjcmlwdHVyZUNvbmZpZzogU2NyaXB0dXJlQ29uZmlnLFxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcbiAgc2NyaXB0dXJlU2V0dGluZ3M6IHsgfSxcbiAgLy8gY2FsbGJhY2sgdG8gc2F2ZSBjdXJyZW50IHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBjaGFuZ2VzXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXG4gIC8vIHNvdXJjZSBsYW5ndWFnZVxuICBzb3VyY2VMYW5ndWFnZTogc3RyaW5nLFxuICAvLyBjYWxsYmFjayB0byBjcmVhdGUgYSB1c2VyIGJyYW5jaCBmb3Igc2F2aW5nIGVkaXQgZGF0YVxuICBzdGFydEVkaXRCcmFuY2g6IFN0YXJ0RWRpdCxcbiAgLy8gY3VycmVudCB0YXJnZXQgbGFuZ3VhZ2VcbiAgdGFyZ2V0TGFuZ3VhZ2U6IG9iamVjdCxcbiAgLy8gdGl0bGUgdG8gc2hvdyBpbiBhbGlnbm1lbnRcbiAgdGl0bGU6IHN0cmluZyxcbiAgIC8vIGJyYW5jaCBuYW1lIGN1cnJlbnRseSBiZWluZyB1c2VkIChlLmcuIGBtYXN0ZXJgIG9yIHVzZXIgYnJhbmNoKVxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHN0cmluZyxcbn1cblxuLyoqXG4gKiBkZXRlcm1pbmVzIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZSBiYXNlZCBvbiB0YXJnZXQgVVNGTSBhbmQgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2Ugb2JqZWN0c1xuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFZlcnNlVVNGTVxuICogQHBhcmFtIHtvYmplY3RbXX0gb3JpZ2luYWxWZXJzZU9iamVjdHNcbiAqL1xuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XG4gIG9yaWdpbmFsVmVyc2VPYmplY3RzID0gb3JpZ2luYWxWZXJzZU9iamVjdHM/Lmxlbmd0aCA/IG9yaWdpbmFsVmVyc2VPYmplY3RzIDogbnVsbCAvLyBtYWtlIHN1cmUgbm90IHBhc3NpbmcgZW1wdHkgQXJyYXlcbiAgY29uc3QgeyBhbGlnbm1lbnRzLCB3b3JkQmFuayB9ID0gQWxpZ25tZW50SGVscGVycy5leHRyYWN0QWxpZ25tZW50c0Zyb21UYXJnZXRWZXJzZSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICByZXR1cm4gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh3b3JkQmFuaywgYWxpZ25tZW50cylcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHVwZGF0ZWQgVVNGTSBmb3IgdGFyZ2V0IHZlcnNlIGZyb20gdGhlIHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhbmQgbGF0ZXN0IHRleHRcbiAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7b2JqZWN0W119IGluaXRpYWxWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQ6IGJvb2xlYW4sIG5ld1ZlcnNlVGV4dCkge1xuICBsZXQgdGFyZ2V0VmVyc2VVU0ZNID0gbnVsbFxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICB9XG4gIHJldHVybiB0YXJnZXRWZXJzZVVTRk1cbn1cblxuLy8gbWFuYWdlIHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBzdGF0ZXNcbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0KHtcbiAgY3VycmVudEluZGV4LFxuICBlbmFibGVFZGl0LFxuICBlbmFibGVBbGlnbm1lbnQsXG4gIGh0dHBDb25maWcsXG4gIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gIGluaXRpYWxWZXJzZVRleHQsXG4gIGlzTmV3VGVzdGFtZW50LFxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIG9yaWdpbmFsUmVwb1VybCxcbiAgcmVmZXJlbmNlLFxuICBzY3JpcHR1cmVDb25maWcsXG4gIHNjcmlwdHVyZVNldHRpbmdzLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNvdXJjZUxhbmd1YWdlLFxuICBzdGFydEVkaXRCcmFuY2gsXG4gIHRhcmdldExhbmd1YWdlLFxuICB0aXRsZSxcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxufSA6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgYWxpZ25lZDogZmFsc2UsXG4gICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgZWRpdGluZzogZmFsc2UsXG4gICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0czogbnVsbCxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IHN0YXRlXG4gIGNvbnN0IGNoYXB0ZXIgPSByZWZlcmVuY2U/LmNoYXB0ZXJcbiAgY29uc3QgdmVyc2UgPSByZWZlcmVuY2U/LnZlcnNlXG4gIGNvbnN0IHByb2plY3RJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IGJhc2ljUmVmZXJlbmNlID0geyAvLyBvbmx5IGhhcyB0aGUgdGhyZWUgYmFzaWMgZmllbGRzXG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICBwcm9qZWN0SWQsXG4gIH1cblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNsZWFyQ2hhbmdlcygpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSAke0pTT04uc3RyaW5naWZ5KGJhc2ljUmVmZXJlbmNlKX1gKVxuICAgIGNvbnN0IGNsZWFyU3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogbnVsbCxcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChzdGF0ZSwgY2xlYXJTdGF0ZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtIHJlZmVyZW5jZSBjaGFuZ2VkLCByZXNldCBlZGl0L2FsaWdubWVudCBzdGF0ZSB2YXJpYWJsZXNgKVxuICAgICAgc2V0U3RhdGUoY2xlYXJTdGF0ZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyA9IHtcbiAgICAuLi5zY3JpcHR1cmVTZXR0aW5ncyxcbiAgICByZXNvdXJjZUlkOiBPUklHSU5BTF9TT1VSQ0UsXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGh0dHBDb25maWcgPSBodHRwQ29uZmlnIHx8IHt9XG4gIGNvbnN0IGJvb2tJZCA9IHByb2plY3RJZFxuICBjb25zdCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzID0gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgICBib29rSWQsIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCwgb3JpZ2luYWxSZXBvVXJsLFxuICApXG5cbiAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHsgLy8gaWYgbm90IGVuYWJsZWQsIHRoZW4gd2UgZG9uJ3QgZmV0Y2ggcmVzb3VyY2VcbiAgICBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IG51bGxcbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsVmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7IC8vIGdldCB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgdmVyc2VPYmplY3RzXG4gICAgY29uc3QgdmVyc2VPYmplY3RzID0gW11cblxuICAgIGlmIChvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXNGb3JSZWYoYmFzaWNSZWZlcmVuY2UsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/Lmxhbmd1YWdlSWQpXG5cbiAgICAgIGlmICh2ZXJzZXM/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmZXJlbmNlIG9mIHZlcnNlcykge1xuICAgICAgICAgIGNvbnN0IG9yaWdWZXJzZU9iamVjdHMgPSB2ZXJzZVJlZmVyZW5jZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcblxuICAgICAgICAgIGlmIChvcmlnVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh2ZXJzZU9iamVjdHMsIG9yaWdWZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNcbiAgfSwgW29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsIGNoYXB0ZXIsIHZlcnNlLCBwcm9qZWN0SWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHVwZGF0ZSBhbGlnbm1lbnQgc3RhdHVzIHdoZW4gYWxpZ25lciBpcyBoaWRkZW5cbiAgICBjb25zdCBub3RFbXB0eSA9ICEhaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGxldCBhbGlnbmVkXyA9IGZhbHNlXG5cbiAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIHNraXAgaWYgYWxpZ25lciBpcyBiZWluZyBzaG93blxuICAgICAgaWYgKG5vdEVtcHR5KSB7IC8vIHNraXAgaWYgZW1wdHlcbiAgICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcblxuICAgICAgICBpZiAoIWVuYWJsZUFsaWdubWVudCkge1xuICAgICAgICAgIGFsaWduZWRfID0gdHJ1ZVxuICAgICAgICB9IGVsc2UgaWYgKG5ld1ZlcnNlVGV4dCAmJiAobmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0KSkge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdHMgPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHJlc3VsdHM/LnRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhbGlnbmVkICE9PSBhbGlnbmVkXykge1xuICAgICAgICBzZXRTdGF0ZSh7IGFsaWduZWQ6IGFsaWduZWRfIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbaW5pdGlhbFZlcnNlT2JqZWN0cywgYWxpZ25lckRhdGEsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dCwgZW5hYmxlQWxpZ25tZW50LCBvcmlnaW5hbFZlcnNlT2JqZWN0c10pXG5cbiAgLyoqXG4gICAqIGdldCBjaGFuZ2VzIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlIC0gb3B0aW9uYWxseSBwYXNzIGluIG5ldyBzdGF0ZSAodG8gb3ZlcnJpZGUgc3RhdGUpXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDaGFuZ2VzKG5ld1N0YXRlID0ge30pIHtcbiAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIHN0YXJ0ZWQgJHtjdXJyZW50SW5kZXh9IC0gcGFzc2VkIHN0YXRlYCwgbmV3U3RhdGUpXG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld0FsaWdubWVudHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9ID0gX25ld1N0YXRlXG4gICAgbGV0IHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuXG4gICAgaWYgKG5ld0FsaWdubWVudHMpIHsgLy8gaWYgdW5zYXZlZCBhbGlnbm1lbnQgY2hhbmdlcywgYXBwbHkgdGhlbVxuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1bnNhdmVkIGFsaWdubWVudHN9YClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cygpXG4gICAgfVxuXG4gICAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIG5ldyB0ZXh0OmAsIG5ld1ZlcnNlVGV4dClcbiAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c18gfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgKVxuICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgfSBlbHNlIHsgLy8gb25seSBhbGlnbm1lbnQgY2hhbmdlcyB0byB1cGxvYWRcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYCwgeyBuZXdWZXJzZVRleHQsIHVwZGF0ZWRWZXJzZU9iamVjdHNfIH0pXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0c18pIHtcbiAgICAgIGNvbnN0IHJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5bY3VycmVudEluZGV4XVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICByZWYsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBhbGlnbm1lbnQgYnV0dG9uIC0gd2lsbCBzaG93IGlmIG5vdCBhbHJlYWR5IHNob3duXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcbiAgICBpZiAoZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICBsZXQgX2FsaWduZXJEYXRhID0gbnVsbFxuICAgICAgYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBpZiB3b3JkIGFsaWduZXIgbm90IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIHRvZ2dsZSBPTiBhbGlnbm1lbnRgKVxuICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgbGV0IG9yaWdpbmFsVmVyc2VVc2ZtID0gbnVsbFxuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRhcmdldFdvcmRzOiB3b3JkQmFuayxcbiAgICAgICAgICB2ZXJzZUFsaWdubWVudHM6IGFsaWdubWVudHMsXG4gICAgICAgIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZVVzZm0pXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IHsgd29yZEJhbmssIGFsaWdubWVudHMgfVxuICAgICAgfSBlbHNlIHsgLy8gd29yZCBhbGlnbmVyIGN1cnJlbnRseSBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSBhbGlnbm1lbnQgYWxyZWFkeSBzaG93bmApXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IGFsaWduZXJEYXRhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBfYWxpZ25lckRhdGEgfSlcbiAgICAgIGNvbnNvbGUubG9nKF9hbGlnbmVyRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhZnRlciBhbGlnbm1lbnRzIGNoYW5nZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzID0gbmV3QWxpZ25tZW50cykge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0IHx8IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICBjb25zdCB2ZXJzZVVzZm0gPSBBbGlnbm1lbnRIZWxwZXJzLmFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTShfbmV3QWxpZ25tZW50cy50YXJnZXRXb3JkcywgX25ld0FsaWdubWVudHMudmVyc2VBbGlnbm1lbnRzLCB0YXJnZXRWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih2ZXJzZVVzZm0pXG4gICAgcmV0dXJuIGFsaWduZWRWZXJzZU9iamVjdHNcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIHNhdmUgY3VycmVudCBhbGlnbm1lbnRzIGluIHdvcmQgYWxpZ25lci4gIEdlbmVyYXRlcyBuZXcgdmVyc2UgY29udGVudCBhbmQgc2F2ZXMgaW4gc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICogQHBhcmFtIHtvYmplY3R9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiBzYXZlQWxpZ25tZW50KF9uZXdBbGlnbm1lbnRzID0gbmV3QWxpZ25tZW50cykge1xuICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBuZXdBbGlnbm1lbnRzYCwgX25ld0FsaWdubWVudHMpXG5cbiAgICBpZiAoX25ld0FsaWdubWVudHMpIHtcbiAgICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzKVxuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIGFsaWduZWRWZXJzZU9iamVjdHNgLCBhbGlnbmVkVmVyc2VPYmplY3RzKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogYWxpZ25lZFZlcnNlT2JqZWN0cyxcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgY2FsbFNldFNhdmVkU3RhdGUodHJ1ZSwgbmV3U3RhdGUgKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gY2FuY2VsIHdvcmsgaW4gd29yZCBhbGlnbmVyLiAgQ2FsY3VsYXRlcyBhbmQgZGlzcGxheXMgY3VycmVudCBhbGlnbm1lbnQgdmFsaWQgc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICovXG4gIGZ1bmN0aW9uIGNhbmNlbEFsaWdubWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FuY2VsQWxpZ25tZW50KClgKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogbnVsbCwgYWxpZ25lZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nXyAtIGlmIHRydWUsIGVkaXRvciBpcyBzaG93biwgb3RoZXJ3aXNlIGVkaXRvciBpcyBoaWRkZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9uZXdWZXJzZVRleHQgLSBvcHRpb25hbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICBhc3luYyBmdW5jdGlvbiBzZXRFZGl0aW5nKGVkaXRpbmdfLCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0geyBlZGl0aW5nOiBlZGl0aW5nXywgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0IH1cbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKChfbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0KSwgbmV3U3RhdGUgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmcm9tIHRoZSBlZGl0IG9uQ2hhbmdlIGV2ZW50IHRvIHVwZGF0ZSBlZGl0IHN0YXRlIHZhcmlhYmxlc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNoYW5nZWQgLSB0cnVlIGlmIHRoZSBuZXdWZXJzZVRleHQgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGluaXRpYWxWZXJzZVRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dCAtIGN1cnJlbnQgY2hhbmdlZCB2ZXJzZSB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfaW5pdGlhbFZlcnNlVGV4dCAtIGluaXRpYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgZnVuY3Rpb24gc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgX2luaXRpYWxWZXJzZVRleHQpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShpbml0aWFsVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCBfY2hhbmdlZCA9IG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0Q2hhbmdlZDogX2NoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18sIG5ld1N0YXRlID0geyB9ICkge1xuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coYGNhbGxTZXRTYXZlZFN0YXRlIC0gbmV3IHN0YXRlYCwgX25ld1N0YXRlKVxuICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCAhdW5zYXZlZENoYW5nZXNfLCB7XG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgc3RhdGU6IF9uZXdTdGF0ZSxcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2V0IHNhdmVkIGNoYW5nZXMgd2hlbmV2ZXIgdXNlciBlZGl0cyB2ZXJzZSB0ZXh0IG9yIGFsaWdubWVudHMgb3IgaWYgYWxpZ25tZW50cyBhcmUgb3BlblxuICAgIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzXyA9IHVuc2F2ZWRDaGFuZ2VzIHx8IGFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVzdWx0c1xuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZVxuICAgKi9cbiAgZnVuY3Rpb24gb25BbGlnbm1lbnRzQ2hhbmdlKHJlc3VsdHMpIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICByZWZlcmVuY2U6IGJhc2ljUmVmZXJlbmNlLFxuICAgICAgc291cmNlTGFuZ3VhZ2UsXG4gICAgICB0YXJnZXRMYW5ndWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
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-beta.84",
4
+ "version": "3.3.3-beta.85",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"