@sapui5/sap.fe.core 1.139.0 → 1.139.1

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.
Files changed (43) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppStateHandler.js +6 -5
  4. package/src/sap/fe/core/AppStateHandler.ts +5 -5
  5. package/src/sap/fe/core/ExtensionAPI.js +5 -2
  6. package/src/sap/fe/core/ExtensionAPI.ts +7 -1
  7. package/src/sap/fe/core/PageController.js +4 -4
  8. package/src/sap/fe/core/PageController.ts +3 -3
  9. package/src/sap/fe/core/TemplateComponent.js +3 -3
  10. package/src/sap/fe/core/TemplateComponent.ts +2 -2
  11. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +6 -2
  12. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +8 -1
  13. package/src/sap/fe/core/controllerextensions/EditFlow.js +6 -15
  14. package/src/sap/fe/core/controllerextensions/EditFlow.ts +5 -14
  15. package/src/sap/fe/core/controllerextensions/KPIManagement.js +29 -14
  16. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +31 -13
  17. package/src/sap/fe/core/controllerextensions/Recommendations.js +26 -3
  18. package/src/sap/fe/core/controllerextensions/Recommendations.ts +48 -2
  19. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +12 -2
  20. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +14 -7
  21. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +10 -2
  22. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +10 -2
  23. package/src/sap/fe/core/converters/annotations/DataField.js +6 -2
  24. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
  25. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +6 -5
  26. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +5 -4
  27. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -2
  28. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -1
  29. package/src/sap/fe/core/fpm/manifest.json +1 -1
  30. package/src/sap/fe/core/helpers/DeleteHelper.js +8 -9
  31. package/src/sap/fe/core/helpers/DeleteHelper.ts +10 -8
  32. package/src/sap/fe/core/helpers/ModelHelper.js +6 -2
  33. package/src/sap/fe/core/helpers/ModelHelper.ts +5 -1
  34. package/src/sap/fe/core/library.js +3 -9
  35. package/src/sap/fe/core/library.ts +5 -26
  36. package/src/sap/fe/core/rootView/RootViewBaseController.js +17 -17
  37. package/src/sap/fe/core/rootView/RootViewBaseController.ts +24 -29
  38. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  39. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  40. package/src/sap/fe/core/templating/PropertyHelper.js +3 -2
  41. package/src/sap/fe/core/templating/PropertyHelper.ts +2 -1
  42. package/src/sap/fe/core/templating/UIFormatters.js +2 -2
  43. package/src/sap/fe/core/templating/UIFormatters.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.core",
3
- "version": "1.139.0",
3
+ "version": "1.139.1",
4
4
  "description": "SAPUI5 Library sap.fe.core",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.139.0</version>
9
+ <version>1.139.1</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.core</documentation>
12
12
 
@@ -248,15 +248,15 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
248
248
 
249
249
  /**
250
250
  * Applies an appstate by fetching appdata and passing it to _applyAppstateToPage.
251
- * @param viewId
252
- * @param view
251
+ * @param view The view for which the app state must be applied. If no view is provided, then app state of all the views is applied.
253
252
  * @returns A promise for async handling
254
253
  */;
255
- _proto.applyAppState = async function applyAppState(viewId, view) {
254
+ _proto.applyAppState = async function applyAppState(view) {
256
255
  if (AppStateHandler.getRTAVersionWasActivated(this.oAppComponent.getId())) {
257
256
  AppStateHandler.setRTAVersionWasActivated(this.oAppComponent.getId(), false);
258
257
  return Promise.resolve();
259
258
  }
259
+ const viewId = view?.getId();
260
260
  if (!this.oAppComponent.getEnvironmentCapabilities().getCapabilities().AppState || BusyLocker.isLocked(this, viewId)) {
261
261
  return Promise.resolve();
262
262
  }
@@ -305,7 +305,8 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
305
305
  }
306
306
  shouldApplyState = false;
307
307
  }
308
- const applyViewState = await oRootController.viewState.applyViewState(this._mCurrentAppState, this._createNavigationParameters(oAppData, sNavType), skipMerge);
308
+ const stateToApply = viewId && appStateData?.[viewId] ? appStateData : this._mCurrentAppState;
309
+ const applyViewState = await oRootController.viewState.applyViewState(stateToApply, this._createNavigationParameters(oAppData, sNavType), skipMerge);
309
310
  if (!shouldApplyState) {
310
311
  return {};
311
312
  } else {
@@ -357,4 +358,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/fe/base/ClassSupp
357
358
  */
358
359
  return AppStateHandler;
359
360
  }, true);
360
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9BcHBTdGF0ZUhhbmRsZXIiLCJfQmFzZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJfdGhpcyIsImNhbGwiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwic2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsInNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQiLCJpZCIsInZhbHVlIiwidmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJnZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsImhhc093blByb3BlcnR5IiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25BY3RpdmF0ZWQgPSB7XG5cdHZlcnNpb25XYXNBY3RpdmF0ZWQ6IGJvb2xlYW47XG59O1xuXG5jb25zdCBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFID0gXCJSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclwiKVxuY2xhc3MgQXBwU3RhdGVIYW5kbGVyIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdHB1YmxpYyBzSWQ6IHN0cmluZztcblxuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXG5cdHB1YmxpYyBiTm9Sb3V0ZUNoYW5nZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlPzogQXBwU3RhdGUgPSB7fTtcblxuXHRzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5cdHN0YXRpYyB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zSWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLiBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKG5ld0hhc2ggJiYgdGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPT09IDAgJiYgbmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKG5ld0hhc2gsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICFpc1N0aWNreU1vZGUpO1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IHRydWU7XG5cdFx0fVxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgQXBwc3RhdGUgS2V5LlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVEYXRhIEFwcHN0YXRlXG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICogQHJldHVybnMgQXBwc3RhdGUgS2V5XG5cdCAqL1xuXHRhc3luYyBfY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhOiBJbm5lckFwcERhdGEsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQsXG5cdFx0XHRuYXZpZ2F0aW9uU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKSB7XG5cdFx0XHQvLyBhbnkgb3RoZXIgdmFsdWVcblx0XHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDAgb3IgdW5kZWZpbmVkXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwU3RhdGVLZXkgPSBhd2FpdCBuYXZpZ2F0aW9uU2VydmljZS5zdG9yZUlubmVyQXBwU3RhdGVBc3luYyhhcHBTdGF0ZURhdGEsIHRydWUsIHRydWUpO1xuXG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0tLTtcblxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IEFwcHN0YXRlIHN0b3JlZFwiKTtcblx0XHRyZXR1cm4gYXBwU3RhdGVLZXk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhcHBzdGF0ZSBpbmZvLlxuXHQgKiBAcGFyYW0gaW5uZXJBcHBTdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBfZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgY3JlYXRlQXBwUGFyYW1ldGVycz86IENyZWF0ZUFwcFBhcmFtZXRlcnMpOiBQcm9taXNlPEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHsgcmVwbGFjZUhhc2ggPSB0cnVlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRsZXQgYXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cblx0XHRjb25zdCBjdXJyZW50U3RhdGVUb1VwZGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKGlubmVyQXBwU3RhdGUgJiYgIWRlZXBFcXVhbChjdXJyZW50U3RhdGVUb1VwZGF0ZSwgaW5uZXJBcHBTdGF0ZSkpIHtcblx0XHRcdC8vXG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0geyAuLi50aGlzLl9tQ3VycmVudEFwcFN0YXRlLCAuLi4oaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcblx0XHRcdGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgdGhpcy5fY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHR0aGlzLl9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAob0Vycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgcm91dGVyUHJveHkgPSBhcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKTtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YSxcblx0XHRcdGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGFwcHN0YXRlLlxuXHQgKiBSZXBsYWNlcyB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgYXBwc3RhdGUgYmFzZWQgb24gcmVwbGFjZUhhc2guXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzIFBhcmFtZXRlcnMgZm9yIGNyZWF0aW5nIG5ldyBhcHBzdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5yZXBsYWNlSGFzaCBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgdG8gcmVwbGFjZSB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5za2lwTWVyZ2UgQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHNraXAgdGhlIGtleSB1c2VyIHNoaW5lIHRocm91Z2hcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgUlRBIHZlcnNpb24gd2FzIGFjdGl2YXRlZC5cblx0ICovXG5cdHN0YXRpYyBzZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKGlkOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1c1tpZF0gPSB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aXZhdGlvbiBzdGF0dXMgb3IgdW5kZWZpbmVkIGlmIG5vdCBzZXQuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0UlRBVmVyc2lvbldhc0FjdGl2YXRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldyk6IGJvb2xlYW4ge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0aWYgKHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQga2V5ID0gXCJcIixcblx0XHRcdGkgPSAwO1xuXHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IG5hdlR5cGUgPT09IE5hdlR5cGUuaHlicmlkID8gb0FwcERhdGEuaUFwcFN0YXRlIDogb0FwcERhdGE7XG5cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0Zm9yIChpOyBpIDwgT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXSA9PT0gdmlld0lkKSB7XG5cdFx0XHRcdFx0a2V5ID0gT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W09iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV1dOiBhcHBTdGF0ZURhdGEuYXBwU3RhdGVba2V5XSB8fCB7fVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyBhbiBhcHBzdGF0ZSBieSBmZXRjaGluZyBhcHBkYXRhIGFuZCBwYXNzaW5nIGl0IHRvIF9hcHBseUFwcHN0YXRlVG9QYWdlLlxuXHQgKiBAcGFyYW0gdmlld0lkXG5cdCAqIEBwYXJhbSB2aWV3XG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSBmb3IgYXN5bmMgaGFuZGxpbmdcblx0ICovXG5cdGFzeW5jIGFwcGx5QXBwU3RhdGUodmlld0lkPzogc3RyaW5nLCB2aWV3PzogVmlldyk6IFByb21pc2U8dm9pZCB8IHt9PiB7XG5cdFx0aWYgKEFwcFN0YXRlSGFuZGxlci5nZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRJZCgpKSkge1xuXHRcdFx0QXBwU3RhdGVIYW5kbGVyLnNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQodGhpcy5vQXBwQ29tcG9uZW50LmdldElkKCksIGZhbHNlKTtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcywgdmlld0lkKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNoZWNrSWZMYXN0U2VlblJlY29yZCA9IHRoaXMuX2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3KTtcblx0XHRpZiAoY2hlY2tJZkxhc3RTZWVuUmVjb3JkID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdC8vIGxvY2sgdGhlIGFwcGx5IHN0YXRlIGZvciB0aGUgY3VycmVudCB2aWV3XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMsIHZpZXdJZCk7XG5cdFx0Ly8gbG9jayB0aGUgQXBwIFN0YXRlIGhhbmRsZXIsIHVzZWQgdG8gYXZvaWQgYSBjcmVhdGlvbiBvZiBhcHAgc3RhdGUgZHVyaW5nIGFwcGx5XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gdG9FUzZQcm9taXNlPHVua25vd25bXT4ob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IGFwcGx5Vmlld1N0YXRlID0gYXdhaXQgb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5hcHBseVZpZXdTdGF0ZShcblx0XHRcdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRcdFx0XHRcdHRoaXMuX2NyZWF0ZU5hdmlnYXRpb25QYXJhbWV0ZXJzKG9BcHBEYXRhLCBzTmF2VHlwZSksXG5cdFx0XHRcdFx0c2tpcE1lcmdlXG5cdFx0XHRcdCk7XG5cdFx0XHRcdGlmICghc2hvdWxkQXBwbHlTdGF0ZSkge1xuXHRcdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gYXBwbHlWaWV3U3RhdGU7XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoXCJhcHBTdGF0ZSBjb3VsZCBub3QgYmUgYXBwbGllZFwiLCBvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdFx0dGhyb3cgb0Vycm9yO1xuXHRcdFx0fSlcblx0XHRcdC5maW5hbGx5KCgpID0+IHtcblx0XHRcdFx0Ly8gdW5sb2NrIGFwcGx5IHN0YXRlIGZvciB0aGUgY3VycmVudCB2aWV3XG5cdFx0XHRcdEJ1c3lMb2NrZXIudW5sb2NrKHRoaXMsIHZpZXdJZCk7XG5cdFx0XHRcdC8vIHVubG9jayB0aGUgYXBwIHN0YXRlIGhhbmRsZXIsIHNvIHRoYXQgYXBwIHN0YXRlIGNyZWF0aW9uIGNhbiBoYXBwZW4gbm93LlxuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzKTtcblx0XHRcdFx0Ly8gdW5sb2NrIHRoZSBSb290Q29udHJvbCB0byByZW1vdmUgdGhlIGJ1c3kgaW5kaWNhdG9yLlxuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLm9BcHBDb21wb25lbnQuZ2V0Um9vdENvbnRyb2woKSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUbyBjaGVjayBpcyByb3V0ZSBpcyBjaGFuZ2VkIGJ5IGNoYW5nZSBpbiB0aGUgaUFQUFN0YXRlLlxuXHQgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJvdXRlIGhhcyBjaG5hZ2VkXG5cdCAqL1xuXHRjaGVja0lmUm91dGVDaGFuZ2VkQnlJQXBwKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmJOb1JvdXRlQ2hhbmdlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlc2V0IHRoZSByb3V0ZSBjaGFuZ2VkIGJ5IGlBUFBTdGF0ZS5cblx0ICovXG5cdHJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwKCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmJOb1JvdXRlQ2hhbmdlKSB7XG5cdFx0XHR0aGlzLmJOb1JvdXRlQ2hhbmdlID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0Ly8gUmVzZXQgYWxsIGFjdGl2YXRpb24gc3RhdHVzZXMgaW4gQXBwU3RhdGVIYW5kbGVyLnZlcnNpb25BY3RpdmF0aW9uU3RhdHVzIHRvIGZhbHNlXG5cdHN0YXRpYyByZXNldFZlcnNpb25BY3RpdmF0aW9uU3RhdHVzKCk6IHZvaWQge1xuXHRcdGZvciAoY29uc3QgaWQgaW4gdGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cykge1xuXHRcdFx0aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnZlcnNpb25BY3RpdmF0aW9uU3RhdHVzLCBpZCkpIHtcblx0XHRcdFx0dGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1c1tpZF0gPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEFwcFN0YXRlSGFuZGxlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7RUFnQkEsTUFBTUEsT0FBTyxHQUFHQyxP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QUFDLENBQUMsQ0FDRFgsS0FBSyxDQUFDLFVBQVV0RSxNQUFlLEVBQUU7UUFDakNuQyxHQUFHLENBQUNvQyxLQUFLLENBQUMsK0JBQStCLEVBQUVELE1BQWdCLENBQUM7UUFDNUQsTUFBTUEsTUFBTTtNQUNiLENBQUMsQ0FBQyxDQUNEa0YsT0FBTyxDQUFDLE1BQU07UUFDZDtRQUNBM0UsVUFBVSxDQUFDNEUsTUFBTSxDQUFDLElBQUksRUFBRXZGLE1BQU0sQ0FBQztRQUMvQjtRQUNBVyxVQUFVLENBQUM0RSxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3ZCO1FBQ0E1RSxVQUFVLENBQUM0RSxNQUFNLENBQUMsSUFBSSxDQUFDOUgsYUFBYSxDQUFDc0QsY0FBYyxDQUFDLENBQUMsQ0FBQztNQUN2RCxDQUFDLENBQUM7SUFDSjs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUEzQyxNQUFBLENBSUFvSCx5QkFBeUIsR0FBekIsU0FBQUEseUJBQXlCQSxDQUFBLEVBQVk7TUFDcEMsT0FBTyxJQUFJLENBQUN4SCxjQUFjO0lBQzNCOztJQUVBO0FBQ0Q7QUFDQSxPQUZDO0lBQUFJLE1BQUEsQ0FHQXFILHVCQUF1QixHQUF2QixTQUFBQSx1QkFBdUJBLENBQUEsRUFBUztNQUMvQixJQUFJLElBQUksQ0FBQ3pILGNBQWMsRUFBRTtRQUN4QixJQUFJLENBQUNBLGNBQWMsR0FBRyxLQUFLO01BQzVCO0lBQ0Q7O0lBRUE7SUFBQTtJQUFBYixlQUFBLENBQ091SSw0QkFBNEIsR0FBbkMsU0FBT0EsNEJBQTRCQSxDQUFBLEVBQVM7TUFDM0MsS0FBSyxNQUFNdEQsRUFBRSxJQUFJLElBQUksQ0FBQ0UsdUJBQXVCLEVBQUU7UUFDOUMsSUFBSVosTUFBTSxDQUFDckQsU0FBUyxDQUFDc0gsY0FBYyxDQUFDaEksSUFBSSxDQUFDLElBQUksQ0FBQzJFLHVCQUF1QixFQUFFRixFQUFFLENBQUMsRUFBRTtVQUMzRSxJQUFJLENBQUNFLHVCQUF1QixDQUFDRixFQUFFLENBQUMsR0FBRyxLQUFLO1FBQ3pDO01BQ0Q7SUFDRCxDQUFDO0lBQUEsT0FBQWpGLGVBQUE7RUFBQSxFQWhXNEJ5SSxVQUFVLEdBQUFySSxnQkFBQSxDQVdoQytFLHVCQUF1QixHQUE0QixDQUFDLENBQUMsRUFBQS9FLGdCQUFBLE1BQUFELE1BQUE7RUF3VjdEO0FBQ0E7QUFDQTtFQUZBLE9BR2VILGVBQWU7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
361
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOYXZUeXBlIiwibGlicmFyeSIsIlNLSVBfTUVSR0VfS0VZIiwiUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSIsIkFwcFN0YXRlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9jbGFzcyIsIl9BcHBTdGF0ZUhhbmRsZXIiLCJfQmFzZU9iamVjdCIsIm9BcHBDb21wb25lbnQiLCJfdGhpcyIsImNhbGwiLCJfbUN1cnJlbnRBcHBTdGF0ZSIsInNJZCIsImdldElkIiwic2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdCIsImJOb1JvdXRlQ2hhbmdlIiwiTG9nIiwiaW5mbyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiX2dldElubmVyQXBwU3RhdGVGb3JWaWV3IiwiaW5uZXJBcHBTdGF0ZSIsInN0YXRlSWRlbnRpZmllciIsIl9hZGRBcHBTdGF0ZUluSGFzaCIsImFwcFN0YXRlS2V5IiwiYXBwQ29tcG9uZW50IiwibmF2aWdhdGlvblNlcnZpY2UiLCJnZXROYXZpZ2F0aW9uU2VydmljZSIsInJvdXRlclByb3h5IiwiZ2V0Um91dGVyUHJveHkiLCJoYXNoIiwiZ2V0SGFzaCIsImlzU3RpY2t5TW9kZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZ2V0TWV0YU1vZGVsIiwibmV3SGFzaCIsInJlcGxhY2VJbm5lckFwcFN0YXRlS2V5IiwibmF2VG9IYXNoIiwidW5kZWZpbmVkIiwiX2NyZWF0ZUFwcFN0YXRlS2V5IiwiYXBwU3RhdGVEYXRhIiwic3RvcmVJbm5lckFwcFN0YXRlQXN5bmMiLCJfZ2V0QXBwU3RhdGVJbmZvIiwiY3JlYXRlQXBwUGFyYW1ldGVycyIsInJlcGxhY2VIYXNoIiwidmlld0lkIiwiYXBwU3RhdGUiLCJjdXJyZW50U3RhdGVUb1VwZGF0ZSIsImRlZXBFcXVhbCIsIm9FcnJvciIsImVycm9yIiwiZmluZEFwcFN0YXRlSW5IYXNoIiwiY3JlYXRlQXBwU3RhdGUiLCJnZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcyIsImdldENhcGFiaWxpdGllcyIsIkFwcFN0YXRlIiwiQnVzeUxvY2tlciIsImlzTG9ja2VkIiwic2tpcE1lcmdlIiwicm9vdENvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbCIsImdldENvbnRyb2xsZXIiLCJ2aWV3U3RhdGUiLCJFcnJvciIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsInJvdXRpbmdJc0NvbXBsZXRlIiwicmV0cmlldmVWaWV3U3RhdGUiLCJfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMiLCJvQXBwRGF0YSIsInNOYXZUeXBlIiwiT2JqZWN0IiwiYXNzaWduIiwic2VsZWN0aW9uVmFyaWFudERlZmF1bHRzIiwib0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQiLCJzZWxlY3Rpb25WYXJpYW50Iiwib1NlbGVjdGlvblZhcmlhbnQiLCJyZXF1aXJlc1N0YW5kYXJkVmFyaWFudCIsImJOYXZTZWxWYXJIYXNEZWZhdWx0c09ubHkiLCJuYXZpZ2F0aW9uVHlwZSIsInNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQiLCJpZCIsInZhbHVlIiwidmVyc2lvbkFjdGl2YXRpb25TdGF0dXMiLCJnZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkIiwiX2NoZWNrSWZMYXN0U2VlblJlY29yZCIsInZpZXciLCJpbnRlcm5hbE1vZGVsQ29udGV4dCIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0UHJvcGVydHkiLCJ0ZWNobmljYWxLZXlzT2JqZWN0IiwiYmluZGluZ0NvbnRleHQiLCJwYXRoIiwiZ2V0UGF0aCIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwibWV0YVBhdGgiLCJnZXRNZXRhUGF0aCIsInRlY2huaWNhbEtleXMiLCJnZXRPYmplY3QiLCJlbGVtZW50Iiwia2V5VmFsdWUiLCJzZXRQcm9wZXJ0eSIsIl9nZXRBcHBTdGF0ZURhdGEiLCJuYXZUeXBlIiwia2V5IiwiaSIsImh5YnJpZCIsImlBcHBTdGF0ZSIsImtleXMiLCJsZW5ndGgiLCJhcHBseUFwcFN0YXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0lmTGFzdFNlZW5SZWNvcmQiLCJsb2NrIiwib05hdmlnYXRpb25TZXJ2aWNlIiwidG9FUzZQcm9taXNlIiwicGFyc2VOYXZpZ2F0aW9uIiwiY2F0Y2giLCJhRXJyb3JEYXRhIiwid2FybmluZyIsInRoZW4iLCJhUmVzdWx0cyIsImluaXRpYWwiLCJvUm9vdENvbnRyb2xsZXIiLCJzaG91bGRBcHBseVN0YXRlIiwiX2lzU3RhdGVFbXB0eUZvcklBcHBTdGF0ZU5hdlR5cGUiLCJfZ2V0SW5pdGlhbFN0YXRlQXBwbGllZCIsIl9zZXRJbml0aWFsU3RhdGVBcHBsaWVkIiwic3RhdGVUb0FwcGx5IiwiYXBwbHlWaWV3U3RhdGUiLCJmaW5hbGx5IiwidW5sb2NrIiwiY2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCIsInJlc2V0Um91dGVDaGFuZ2VkQnlJQXBwIiwicmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cyIsImhhc093blByb3BlcnR5IiwiQmFzZU9iamVjdCJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQXBwU3RhdGVIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB7IGRlZmluZVVJNUNsYXNzIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgTmF2aWdhdGlvblBhcmFtZXRlciB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9WaWV3U3RhdGVcIjtcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxNb2RlbENvbnRleHQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHRvRVM2UHJvbWlzZSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Ub0VTNlByb21pc2VcIjtcbmltcG9ydCB0eXBlIHsgSW5uZXJBcHBEYXRhIH0gZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL05hdmlnYXRpb25IYW5kbGVyXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL25hdmlnYXRpb24vU2VsZWN0aW9uVmFyaWFudFwiO1xuaW1wb3J0IGxpYnJhcnkgZnJvbSBcInNhcC9mZS9uYXZpZ2F0aW9uL2xpYnJhcnlcIjtcbmltcG9ydCBCYXNlT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9PYmplY3RcIjtcbmltcG9ydCB0eXBlIFZpZXcgZnJvbSBcInNhcC91aS9jb3JlL212Yy9WaWV3XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IEJ1c3lMb2NrZXIgZnJvbSBcIi4vY29udHJvbGxlcmV4dGVuc2lvbnMvQnVzeUxvY2tlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCIuL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcblxuY29uc3QgTmF2VHlwZSA9IGxpYnJhcnkuTmF2VHlwZTtcbnR5cGUgQXBwU3RhdGUgPSB7XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdFtrZXk6IHN0cmluZ106IHVua25vd247XG59O1xuZXhwb3J0IHR5cGUgQXBwRGF0YSA9IHtcblx0b0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQ6IFNlbGVjdGlvblZhcmlhbnQ7XG5cdG9TZWxlY3Rpb25WYXJpYW50OiBTZWxlY3Rpb25WYXJpYW50O1xuXHRiTmF2U2VsVmFySGFzRGVmYXVsdHNPbmx5OiBib29sZWFuO1xuXHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdGlBcHBTdGF0ZT86IHtcblx0XHRhcHBTdGF0ZTogQXBwU3RhdGU7XG5cdH07XG59O1xuY29uc3QgU0tJUF9NRVJHRV9LRVkgPSBcInNraXBNZXJnZVwiO1xuZXhwb3J0IHR5cGUgSUFwcFN0YXRlID0ge1xuXHRhcHBTdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59O1xuXG5leHBvcnQgdHlwZSBBcHBEYXRhSW5mbyA9IHtcblx0YXBwU3RhdGVEYXRhOiB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfTtcblx0YXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVBcHBQYXJhbWV0ZXJzID0ge1xuXHRyZXBsYWNlSGFzaD86IGJvb2xlYW47XG5cdHNraXBNZXJnZT86IGJvb2xlYW47XG5cdHZpZXdJZD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFZlcnNpb25BY3RpdmF0ZWQgPSB7XG5cdHZlcnNpb25XYXNBY3RpdmF0ZWQ6IGJvb2xlYW47XG59O1xuXG5jb25zdCBSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFID0gXCJSRVBMQUNFX0NPTVBMRVRFX0FQUFNUQVRFXCI7XG5cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkFwcFN0YXRlSGFuZGxlclwiKVxuY2xhc3MgQXBwU3RhdGVIYW5kbGVyIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdHB1YmxpYyBzSWQ6IHN0cmluZztcblxuXHRwdWJsaWMgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50O1xuXG5cdHB1YmxpYyBiTm9Sb3V0ZUNoYW5nZTogYm9vbGVhbjtcblxuXHRwcml2YXRlIF9tQ3VycmVudEFwcFN0YXRlPzogQXBwU3RhdGUgPSB7fTtcblxuXHRzaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuXG5cdHN0YXRpYyB2ZXJzaW9uQWN0aXZhdGlvblN0YXR1czogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHRjb25zdHJ1Y3RvcihvQXBwQ29tcG9uZW50OiBBcHBDb21wb25lbnQpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub0FwcENvbXBvbmVudCA9IG9BcHBDb21wb25lbnQ7XG5cdFx0dGhpcy5zSWQgPSBgJHtvQXBwQ29tcG9uZW50LmdldElkKCl9L0FwcFN0YXRlSGFuZGxlcmA7XG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0ID0ge307XG5cdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEUgOiBBcHBzdGF0ZSBoYW5kbGVyIGluaXRpYWxpemVkXCIpO1xuXHR9XG5cblx0Z2V0SWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gdGhpcy5zSWQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHZpZXcgc3BlY2lmaWMgYXBwc3RhdGUuXG5cdCAqIEBwYXJhbSBpbm5lckFwcFN0YXRlIE92ZXJhbGwgYXBwc3RhdGVcblx0ICogQHBhcmFtIHN0YXRlSWRlbnRpZmllciBTdGF0ZSBpZGVudGlmaWVyLiBJZCBvZiB0aGUgbG9jYWwgdmlld1xuXHQgKiBAcmV0dXJucyBJbm5lciBhcHBzdGF0ZVxuXHQgKi9cblx0X2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgc3RhdGVJZGVudGlmaWVyOiBzdHJpbmcpOiBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQge1xuXHRcdGlmIChzdGF0ZUlkZW50aWZpZXIgPT09IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfHwgIWlubmVyQXBwU3RhdGUpIHtcblx0XHRcdC8vIG92ZXJhbGwgYXBwIHN0YXRlIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuXG5cdFx0XHRyZXR1cm4gaW5uZXJBcHBTdGF0ZTtcblx0XHR9XG5cblx0XHQvLyB3ZSB0YWtlIHRoZSBzdWJzZXQgb2YgdGhlIGFwcCBzdGF0ZSB3cnQgdG8gdGhlIGxvY2FsIHZpZXcgaWQuXG5cdFx0cmV0dXJuIHtcblx0XHRcdFtzdGF0ZUlkZW50aWZpZXJdOiBpbm5lckFwcFN0YXRlW3N0YXRlSWRlbnRpZmllciBhcyBrZXlvZiB0eXBlb2YgaW5uZXJBcHBTdGF0ZV0gfHwge31cblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhcHBzdGF0ZSBpbiBoYXNoLlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVLZXkgQXBwc3RhdGUga2V5XG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICovXG5cdF9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleTogc3RyaW5nLCBzdGF0ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IHRoaXMub0FwcENvbXBvbmVudCxcblx0XHRcdG5hdmlnYXRpb25TZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldE5hdmlnYXRpb25TZXJ2aWNlKCksXG5cdFx0XHRyb3V0ZXJQcm94eSA9IGFwcENvbXBvbmVudC5nZXRSb3V0ZXJQcm94eSgpLFxuXHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKSxcblx0XHRcdGlzU3RpY2t5TW9kZSA9IE1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChhcHBDb21wb25lbnQuZ2V0TWV0YU1vZGVsKCkpLFxuXHRcdFx0bmV3SGFzaCA9IG5hdmlnYXRpb25TZXJ2aWNlLnJlcGxhY2VJbm5lckFwcFN0YXRlS2V5KHJvdXRlclByb3h5LmdldEhhc2goKSwgYXBwU3RhdGVLZXkpO1xuXG5cdFx0aWYgKG5ld0hhc2ggJiYgdGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0gPT09IDAgJiYgbmV3SGFzaCAhPT0gaGFzaCkge1xuXHRcdFx0cm91dGVyUHJveHkubmF2VG9IYXNoKG5ld0hhc2gsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsICFpc1N0aWNreU1vZGUpO1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IHRydWU7XG5cdFx0fVxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IG5hdlRvSGFzaFwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGUgQXBwc3RhdGUgS2V5LlxuXHQgKiBAcGFyYW0gYXBwU3RhdGVEYXRhIEFwcHN0YXRlXG5cdCAqIEBwYXJhbSBzdGF0ZUlkZW50aWZpZXIgU3RhdGUgaWRlbnRpZmllci4gSWQgb2YgdGhlIGxvY2FsIHZpZXdcblx0ICogQHJldHVybnMgQXBwc3RhdGUgS2V5XG5cdCAqL1xuXHRhc3luYyBfY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhOiBJbm5lckFwcERhdGEsIHN0YXRlSWRlbnRpZmllcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQsXG5cdFx0XHRuYXZpZ2F0aW9uU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXROYXZpZ2F0aW9uU2VydmljZSgpO1xuXG5cdFx0aWYgKHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKSB7XG5cdFx0XHQvLyBhbnkgb3RoZXIgdmFsdWVcblx0XHRcdHRoaXMuc2ltdWx0YW5lb3VzQ3JlYXRlUmVxdWVzdFtzdGF0ZUlkZW50aWZpZXJdKys7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIDAgb3IgdW5kZWZpbmVkXG5cdFx0XHR0aGlzLnNpbXVsdGFuZW91c0NyZWF0ZVJlcXVlc3Rbc3RhdGVJZGVudGlmaWVyXSA9IDE7XG5cdFx0fVxuXG5cdFx0Y29uc3QgYXBwU3RhdGVLZXkgPSBhd2FpdCBuYXZpZ2F0aW9uU2VydmljZS5zdG9yZUlubmVyQXBwU3RhdGVBc3luYyhhcHBTdGF0ZURhdGEsIHRydWUsIHRydWUpO1xuXG5cdFx0dGhpcy5zaW11bHRhbmVvdXNDcmVhdGVSZXF1ZXN0W3N0YXRlSWRlbnRpZmllcl0tLTtcblxuXHRcdExvZy5pbmZvKFwiQVBQU1RBVEU6IEFwcHN0YXRlIHN0b3JlZFwiKTtcblx0XHRyZXR1cm4gYXBwU3RhdGVLZXk7XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyBhcHBzdGF0ZSBpbmZvLlxuXHQgKiBAcGFyYW0gaW5uZXJBcHBTdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycyBQYXJhbWV0ZXJzIGZvciBjcmVhdGluZyBuZXcgYXBwc3RhdGVcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMucmVwbGFjZUhhc2ggQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHJlcGxhY2UgdGhlIGhhc2ggd2l0aCB0aGUgbmV3IGdlbmVyYXRlZCBrZXlcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZS5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHJlc29sdmluZyB0aGUgc3RvcmVkIGRhdGEgb3IgYXBwc3RhdGUga2V5XG5cdCAqL1xuXHRhc3luYyBfZ2V0QXBwU3RhdGVJbmZvKGlubmVyQXBwU3RhdGU6IElubmVyQXBwRGF0YSB8IHVuZGVmaW5lZCwgY3JlYXRlQXBwUGFyYW1ldGVycz86IENyZWF0ZUFwcFBhcmFtZXRlcnMpOiBQcm9taXNlPEFwcERhdGFJbmZvPiB7XG5cdFx0Y29uc3QgYXBwQ29tcG9uZW50ID0gdGhpcy5vQXBwQ29tcG9uZW50O1xuXHRcdGNvbnN0IHsgcmVwbGFjZUhhc2ggPSB0cnVlLCB2aWV3SWQ6IHN0YXRlSWRlbnRpZmllciA9IFJFUExBQ0VfQ09NUExFVEVfQVBQU1RBVEUgfSA9IGNyZWF0ZUFwcFBhcmFtZXRlcnMgPz8ge307XG5cblx0XHRsZXQgYXBwU3RhdGVLZXk6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXHRcdGxldCBhcHBTdGF0ZURhdGEgPSB7IGFwcFN0YXRlOiB0aGlzLl9tQ3VycmVudEFwcFN0YXRlIH07XG5cblx0XHRjb25zdCBjdXJyZW50U3RhdGVUb1VwZGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KHRoaXMuX21DdXJyZW50QXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKGlubmVyQXBwU3RhdGUgJiYgIWRlZXBFcXVhbChjdXJyZW50U3RhdGVUb1VwZGF0ZSwgaW5uZXJBcHBTdGF0ZSkpIHtcblx0XHRcdC8vXG5cdFx0XHR0aGlzLl9tQ3VycmVudEFwcFN0YXRlID0geyAuLi50aGlzLl9tQ3VycmVudEFwcFN0YXRlLCAuLi4oaW5uZXJBcHBTdGF0ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgfTtcblx0XHRcdGFwcFN0YXRlRGF0YSA9IHsgYXBwU3RhdGU6IHRoaXMuX21DdXJyZW50QXBwU3RhdGUgfTtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdGFwcFN0YXRlS2V5ID0gYXdhaXQgdGhpcy5fY3JlYXRlQXBwU3RhdGVLZXkoYXBwU3RhdGVEYXRhLCBzdGF0ZUlkZW50aWZpZXIpO1xuXHRcdFx0XHRpZiAocmVwbGFjZUhhc2ggPT09IHRydWUpIHtcblx0XHRcdFx0XHR0aGlzLl9hZGRBcHBTdGF0ZUluSGFzaChhcHBTdGF0ZUtleSwgc3RhdGVJZGVudGlmaWVyKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAob0Vycm9yOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgcm91dGVyUHJveHkgPSBhcHBDb21wb25lbnQuZ2V0Um91dGVyUHJveHkoKSxcblx0XHRcdFx0aGFzaCA9IHJvdXRlclByb3h5LmdldEhhc2goKTtcblx0XHRcdGFwcFN0YXRlS2V5ID0gcm91dGVyUHJveHkuZmluZEFwcFN0YXRlSW5IYXNoKGhhc2gpIGFzIHN0cmluZztcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFwcFN0YXRlRGF0YSxcblx0XHRcdGFwcFN0YXRlS2V5XG5cdFx0fTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIG9yIHVwZGF0ZXMgdGhlIGFwcHN0YXRlLlxuXHQgKiBSZXBsYWNlcyB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgYXBwc3RhdGUgYmFzZWQgb24gcmVwbGFjZUhhc2guXG5cdCAqIEBwYXJhbSBjcmVhdGVBcHBQYXJhbWV0ZXJzIFBhcmFtZXRlcnMgZm9yIGNyZWF0aW5nIG5ldyBhcHBzdGF0ZVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5yZXBsYWNlSGFzaCBCb29sZWFuIHdoaWNoIGRldGVybWluZXMgdG8gcmVwbGFjZSB0aGUgaGFzaCB3aXRoIHRoZSBuZXcgZ2VuZXJhdGVkIGtleVxuXHQgKiBAcGFyYW0gY3JlYXRlQXBwUGFyYW1ldGVycy5za2lwTWVyZ2UgQm9vbGVhbiB3aGljaCBkZXRlcm1pbmVzIHRvIHNraXAgdGhlIGtleSB1c2VyIHNoaW5lIHRocm91Z2hcblx0ICogQHBhcmFtIGNyZWF0ZUFwcFBhcmFtZXRlcnMudmlld0lkIElkIG9mIHRoZSB2aWV3IGZvciB3aGljaCB3ZSBuZWVkIHRvIGNyZWF0ZSB0aGUgYXBwIHN0YXRlLiBUaGlzIGlzIHRvIGNyZWF0ZSBvciB1cGRhdGUgdmlldyBzcGVjaWZpYyBhcHBzdGF0ZVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgcmVzb2x2aW5nIHRoZSBzdG9yZWQgZGF0YSBvciBhcHBzdGF0ZSBrZXlcblx0ICovXG5cdGFzeW5jIGNyZWF0ZUFwcFN0YXRlKGNyZWF0ZUFwcFBhcmFtZXRlcnM/OiBDcmVhdGVBcHBQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgQXBwRGF0YUluZm8+IHtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLm9BcHBDb21wb25lbnQ7XG5cdFx0aWYgKCFhcHBDb21wb25lbnQuZ2V0RW52aXJvbm1lbnRDYXBhYmlsaXRpZXMoKS5nZXRDYXBhYmlsaXRpZXMoKS5BcHBTdGF0ZSB8fCBCdXN5TG9ja2VyLmlzTG9ja2VkKHRoaXMpKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHsgc2tpcE1lcmdlID0gZmFsc2UsIHZpZXdJZDogc3RhdGVJZGVudGlmaWVyID0gUkVQTEFDRV9DT01QTEVURV9BUFBTVEFURSB9ID0gY3JlYXRlQXBwUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdHJvb3RDb250cm9sbGVyID0gYXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXG5cdFx0aWYgKCFyb290Q29udHJvbGxlci52aWV3U3RhdGUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG5vdCBhdmFpbGFibGUgZm9yIGNvbnRyb2xsZXI6ICR7cm9vdENvbnRyb2xsZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9YCk7XG5cdFx0fVxuXG5cdFx0Ly8gSW4gY2FzZSwgb24gbG9hZCBvZiBGQ0wgYXBwIHdlIGhhdmUgbXVsdGlwbGUgdmlld3MoTFIsIE9QLCBzdWItT1AuLi4pIGFuZCB1cmwgaGFzIGlBcHBTdGF0ZSgxKS5cblx0XHQvLyBUaGUgTFIgdmlldyBsb2FkcyB3aXRoIGFwcGxpZWQgaUFwcFN0YXRlKDEpIGFuZCBjYWxscyBjcmVhdGVBcHBTdGF0ZShleGFtcGxlOiBvblNlYXJjaCBldmVudCBpbiBMUikgYmVmb3JlIE9QIGlzIGxvYWRlZC5cblx0XHQvLyBUaGlzIGNyZWF0ZXMgaUFwcFN0YXRlKDIpIGJlZm9yZSBpQXBwU3RhdGUoMSkgaXMgYXBwbGllZCB0byBPUC5cblx0XHQvLyBTbywgd2UgdHJ5IHRvIHdhaXQgdGlsbCB0aGUgcm91dGluZyBpcyBjb21wbGV0ZS5cblx0XHRhd2FpdCByb290Q29udHJvbGxlci5yb3V0aW5nSXNDb21wbGV0ZSgpO1xuXG5cdFx0Ly8gR2V0IGFwcFN0YXRlIHRvIHVwZGF0ZVxuXHRcdGxldCBpbm5lckFwcFN0YXRlID0gKGF3YWl0IHJvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5yZXRyaWV2ZVZpZXdTdGF0ZSgpKSBhcyBJbm5lckFwcERhdGEgfCB1bmRlZmluZWQ7XG5cdFx0aW5uZXJBcHBTdGF0ZSA9IHRoaXMuX2dldElubmVyQXBwU3RhdGVGb3JWaWV3KGlubmVyQXBwU3RhdGUsIHN0YXRlSWRlbnRpZmllcik7XG5cdFx0aWYgKHNraXBNZXJnZSkge1xuXHRcdFx0aW5uZXJBcHBTdGF0ZSA9IHsgLi4uaW5uZXJBcHBTdGF0ZSwgLi4ueyBza2lwTWVyZ2UgfSB9O1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl9nZXRBcHBTdGF0ZUluZm8oaW5uZXJBcHBTdGF0ZSwgY3JlYXRlQXBwUGFyYW1ldGVycyk7XG5cdH1cblxuXHRfY3JlYXRlTmF2aWdhdGlvblBhcmFtZXRlcnMob0FwcERhdGE6IEFwcERhdGEsIHNOYXZUeXBlOiBzdHJpbmcpOiBOYXZpZ2F0aW9uUGFyYW1ldGVyIHtcblx0XHRyZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgb0FwcERhdGEsIHtcblx0XHRcdHNlbGVjdGlvblZhcmlhbnREZWZhdWx0czogb0FwcERhdGEub0RlZmF1bHRlZFNlbGVjdGlvblZhcmlhbnQsXG5cdFx0XHRzZWxlY3Rpb25WYXJpYW50OiBvQXBwRGF0YS5vU2VsZWN0aW9uVmFyaWFudCxcblx0XHRcdHJlcXVpcmVzU3RhbmRhcmRWYXJpYW50OiAhb0FwcERhdGEuYk5hdlNlbFZhckhhc0RlZmF1bHRzT25seSxcblx0XHRcdG5hdmlnYXRpb25UeXBlOiBzTmF2VHlwZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNldHMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIGluZGljYXRpbmcgd2hldGhlciB0aGUgUlRBIHZlcnNpb24gd2FzIGFjdGl2YXRlZC5cblx0ICovXG5cdHN0YXRpYyBzZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKGlkOiBzdHJpbmcsIHZhbHVlOiBib29sZWFuKTogdm9pZCB7XG5cdFx0dGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1c1tpZF0gPSB2YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIFJUQSAoUnVudGltZSBBZGFwdGF0aW9uKSB2ZXJzaW9uIGFjdGl2YXRpb24gc3RhdHVzIGZvciBhIHNwZWNpZmljIElELlxuXHQgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyLlxuXHQgKiBAcmV0dXJucyBUaGUgYWN0aXZhdGlvbiBzdGF0dXMgb3IgdW5kZWZpbmVkIGlmIG5vdCBzZXQuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0UlRBVmVyc2lvbldhc0FjdGl2YXRlZChpZDogc3RyaW5nKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdO1xuXHR9XG5cblx0X2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3PzogVmlldyk6IGJvb2xlYW4ge1xuXHRcdC8vZ2V0dGluZyB0aGUgaW50ZXJuYWwgbW9kZWwgY29udGV4dCBpbiBvcmRlciB0byBmZXRjaCB0aGUgdGVjaG5pY2Fsa2V5cyBvZiBsYXN0IHNlZW4gcmVjb3JkIGFuZCBjbG9zZSBjb2x1bW4gZmxhZyBzZXQgaW4gdGhlIGludGVybmFscm91dGluZyBmb3IgcmV0YWluaW5nIHNldHRpbmdzIGluIHBlcnNpc3RlbmNlIG1vZGVcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsQ29udGV4dCA9IHZpZXcgJiYgKHZpZXcuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dCk7XG5cdFx0aWYgKGludGVybmFsTW9kZWxDb250ZXh0ICYmIGludGVybmFsTW9kZWxDb250ZXh0LmdldFByb3BlcnR5KFwiZmNsQ29sdW1uQ2xvc2VkXCIpID09PSB0cnVlKSB7XG5cdFx0XHRjb25zdCB0ZWNobmljYWxLZXlzT2JqZWN0ID0gaW50ZXJuYWxNb2RlbENvbnRleHQuZ2V0UHJvcGVydHkoXCJ0ZWNobmljYWxLZXlzT2ZMYXN0U2VlblJlY29yZFwiKTtcblx0XHRcdGNvbnN0IGJpbmRpbmdDb250ZXh0ID0gdmlldz8uZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3QgcGF0aCA9IChiaW5kaW5nQ29udGV4dCAmJiBiaW5kaW5nQ29udGV4dC5nZXRQYXRoKCkpIHx8IFwiXCI7XG5cdFx0XHRjb25zdCBtZXRhTW9kZWwgPSBiaW5kaW5nQ29udGV4dD8uZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdGNvbnN0IG1ldGFQYXRoID0gbWV0YU1vZGVsPy5nZXRNZXRhUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IHRlY2huaWNhbEtleXMgPSBtZXRhTW9kZWw/LmdldE9iamVjdChgJHttZXRhUGF0aH0vJFR5cGUvJEtleWApO1xuXHRcdFx0aWYgKHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0Zm9yIChjb25zdCBlbGVtZW50IG9mIHRlY2huaWNhbEtleXMpIHtcblx0XHRcdFx0XHRjb25zdCBrZXlWYWx1ZSA9IGJpbmRpbmdDb250ZXh0LmdldE9iamVjdCgpW2VsZW1lbnRdO1xuXHRcdFx0XHRcdGlmIChrZXlWYWx1ZSAhPT0gdGVjaG5pY2FsS2V5c09iamVjdFtlbGVtZW50XSkge1xuXHRcdFx0XHRcdFx0aW50ZXJuYWxNb2RlbENvbnRleHQuc2V0UHJvcGVydHkoXCJmY2xDb2x1bW5DbG9zZWRcIiwgZmFsc2UpO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQvL3RoZSByZWNvcmQgb3BlbmVkIGlzIG5vdCB0aGUgbGFzdCBzZWVuIG9uZSA6IG5vIG5lZWQgdG8gcGVyc2lzdCB0aGUgY2hhbmdlcywgcmVzZXQgdG8gZGVmYXVsdCBpbnN0ZWFkXG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdF9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGE6IEFwcERhdGEsIHZpZXdJZD86IHN0cmluZywgbmF2VHlwZT86IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcblx0XHRsZXQga2V5ID0gXCJcIixcblx0XHRcdGkgPSAwO1xuXHRcdGNvbnN0IGFwcFN0YXRlRGF0YSA9IG5hdlR5cGUgPT09IE5hdlR5cGUuaHlicmlkID8gb0FwcERhdGEuaUFwcFN0YXRlIDogb0FwcERhdGE7XG5cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0Zm9yIChpOyBpIDwgT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXSA9PT0gdmlld0lkKSB7XG5cdFx0XHRcdFx0a2V5ID0gT2JqZWN0LmtleXMoYXBwU3RhdGVEYXRhLmFwcFN0YXRlKVtpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYXBwU3RhdGVEYXRhPy5hcHBTdGF0ZSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0W09iamVjdC5rZXlzKGFwcFN0YXRlRGF0YS5hcHBTdGF0ZSlbaV1dOiBhcHBTdGF0ZURhdGEuYXBwU3RhdGVba2V5XSB8fCB7fVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQXBwbGllcyBhbiBhcHBzdGF0ZSBieSBmZXRjaGluZyBhcHBkYXRhIGFuZCBwYXNzaW5nIGl0IHRvIF9hcHBseUFwcHN0YXRlVG9QYWdlLlxuXHQgKiBAcGFyYW0gdmlldyBUaGUgdmlldyBmb3Igd2hpY2ggdGhlIGFwcCBzdGF0ZSBtdXN0IGJlIGFwcGxpZWQuIElmIG5vIHZpZXcgaXMgcHJvdmlkZWQsIHRoZW4gYXBwIHN0YXRlIG9mIGFsbCB0aGUgdmlld3MgaXMgYXBwbGllZC5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIGZvciBhc3luYyBoYW5kbGluZ1xuXHQgKi9cblx0YXN5bmMgYXBwbHlBcHBTdGF0ZSh2aWV3PzogVmlldyk6IFByb21pc2U8dm9pZCB8IHt9PiB7XG5cdFx0aWYgKEFwcFN0YXRlSGFuZGxlci5nZXRSVEFWZXJzaW9uV2FzQWN0aXZhdGVkKHRoaXMub0FwcENvbXBvbmVudC5nZXRJZCgpKSkge1xuXHRcdFx0QXBwU3RhdGVIYW5kbGVyLnNldFJUQVZlcnNpb25XYXNBY3RpdmF0ZWQodGhpcy5vQXBwQ29tcG9uZW50LmdldElkKCksIGZhbHNlKTtcblx0XHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0XHR9XG5cdFx0Y29uc3Qgdmlld0lkID0gdmlldz8uZ2V0SWQoKTtcblx0XHRpZiAoIXRoaXMub0FwcENvbXBvbmVudC5nZXRFbnZpcm9ubWVudENhcGFiaWxpdGllcygpLmdldENhcGFiaWxpdGllcygpLkFwcFN0YXRlIHx8IEJ1c3lMb2NrZXIuaXNMb2NrZWQodGhpcywgdmlld0lkKSkge1xuXHRcdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNoZWNrSWZMYXN0U2VlblJlY29yZCA9IHRoaXMuX2NoZWNrSWZMYXN0U2VlblJlY29yZCh2aWV3KTtcblx0XHRpZiAoY2hlY2tJZkxhc3RTZWVuUmVjb3JkID09PSB0cnVlKSB7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdFx0fVxuXHRcdC8vIGxvY2sgdGhlIGFwcGx5IHN0YXRlIGZvciB0aGUgY3VycmVudCB2aWV3XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMsIHZpZXdJZCk7XG5cdFx0Ly8gbG9jayB0aGUgQXBwIFN0YXRlIGhhbmRsZXIsIHVzZWQgdG8gYXZvaWQgYSBjcmVhdGlvbiBvZiBhcHAgc3RhdGUgZHVyaW5nIGFwcGx5XG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMpO1xuXHRcdC8vIERvbmUgZm9yIGJ1c3kgaW5kaWNhdG9yXG5cdFx0QnVzeUxvY2tlci5sb2NrKHRoaXMub0FwcENvbXBvbmVudC5nZXRSb290Q29udHJvbCgpKTtcblx0XHRjb25zdCBvTmF2aWdhdGlvblNlcnZpY2UgPSB0aGlzLm9BcHBDb21wb25lbnQuZ2V0TmF2aWdhdGlvblNlcnZpY2UoKTtcblx0XHQvLyBUT0RPIG9OYXZpZ2F0aW9uU2VydmljZS5wYXJzZU5hdmlnYXRpb24oKSBzaG91bGQgcmV0dXJuIEVTNiBwcm9taXNlIGluc3RlYWQgalF1ZXJ5LnByb21pc2Vcblx0XHRyZXR1cm4gdG9FUzZQcm9taXNlPHVua25vd25bXT4ob05hdmlnYXRpb25TZXJ2aWNlLnBhcnNlTmF2aWdhdGlvbigpKVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChhRXJyb3JEYXRhOiB1bmtub3duW10pIHtcblx0XHRcdFx0aWYgKCFhRXJyb3JEYXRhKSB7XG5cdFx0XHRcdFx0YUVycm9yRGF0YSA9IFtdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiQVBQU1RBVEU6IFBhcnNlIE5hdmlnYXRpb24gZmFpbGVkXCIsIGFFcnJvckRhdGFbMF0gYXMgc3RyaW5nKTtcblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQvKiBhcHAgZGF0YSAqL1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0YUVycm9yRGF0YVsxXSxcblx0XHRcdFx0XHRhRXJyb3JEYXRhWzJdXG5cdFx0XHRcdF07XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgKGFSZXN1bHRzOiB1bmtub3duW10pID0+IHtcblx0XHRcdFx0TG9nLmluZm8oXCJBUFBTVEFURTogUGFyc2UgTmF2aWdhdGlvbiBkb25lXCIpO1xuXG5cdFx0XHRcdC8vIGFSZXN1bHRzWzFdID0+IG9TdGFydHVwUGFyYW1ldGVycyAobm90IGV2YWx1YXRlZClcblx0XHRcdFx0Y29uc3Qgb0FwcERhdGEgPSAoYVJlc3VsdHNbMF0gfHwge30pIGFzIEFwcERhdGEsXG5cdFx0XHRcdFx0c05hdlR5cGUgPSAoYVJlc3VsdHNbMl0gYXMgc3RyaW5nKSB8fCBOYXZUeXBlLmluaXRpYWwsXG5cdFx0XHRcdFx0b1Jvb3RDb250cm9sbGVyID0gdGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkuZ2V0Q29udHJvbGxlcigpO1xuXHRcdFx0XHQvLyBhcHBseSB0aGUgYXBwc3RhdGUgZGVwZW5kaW5nIHVwb24gdGhlIHZpZXcgKExSL09QKVxuXHRcdFx0XHRjb25zdCBhcHBTdGF0ZURhdGEgPSB0aGlzLl9nZXRBcHBTdGF0ZURhdGEob0FwcERhdGEsIHZpZXdJZCwgc05hdlR5cGUpO1xuXHRcdFx0XHQvLyBmZXRjaCB0aGUgc2tpcE1lcmdlIGZsYWcgZnJvbSBhcHBTdGF0ZSBmb3Igc2F2ZSBhcyB0aWxlXG5cdFx0XHRcdGNvbnN0IHNraXBNZXJnZTogYm9vbGVhbiB8IHVuZGVmaW5lZCA9IG9BcHBEYXRhPy5hcHBTdGF0ZT8uW1NLSVBfTUVSR0VfS0VZXTtcblx0XHRcdFx0dGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSA9XG5cdFx0XHRcdFx0c05hdlR5cGUgPT09IE5hdlR5cGUuaUFwcFN0YXRlIHx8IHNOYXZUeXBlID09PSBOYXZUeXBlLmh5YnJpZCA/IHsgLi4udGhpcy5fbUN1cnJlbnRBcHBTdGF0ZSwgLi4uYXBwU3RhdGVEYXRhIH0gOiB7fTtcblx0XHRcdFx0bGV0IHNob3VsZEFwcGx5U3RhdGUgPSB0cnVlO1xuXG5cdFx0XHRcdGlmICghb1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgdmlld1N0YXRlIGV4dGVuc2lvbiByZXF1aXJlZCBmb3IgY29udHJvbGxlciAke29Sb290Q29udHJvbGxlci5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX1gKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob1Jvb3RDb250cm9sbGVyLnZpZXdTdGF0ZS5faXNTdGF0ZUVtcHR5Rm9ySUFwcFN0YXRlTmF2VHlwZShvQXBwRGF0YSwgc05hdlR5cGUpKSB7XG5cdFx0XHRcdFx0aWYgKCFvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLl9nZXRJbml0aWFsU3RhdGVBcHBsaWVkKCkpIHtcblx0XHRcdFx0XHRcdG9Sb290Q29udHJvbGxlci52aWV3U3RhdGUuX3NldEluaXRpYWxTdGF0ZUFwcGxpZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0c2hvdWxkQXBwbHlTdGF0ZSA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnN0IHN0YXRlVG9BcHBseSA9IHZpZXdJZCAmJiBhcHBTdGF0ZURhdGE/Llt2aWV3SWRdID8gYXBwU3RhdGVEYXRhIDogdGhpcy5fbUN1cnJlbnRBcHBTdGF0ZTtcblx0XHRcdFx0Y29uc3QgYXBwbHlWaWV3U3RhdGUgPSBhd2FpdCBvUm9vdENvbnRyb2xsZXIudmlld1N0YXRlLmFwcGx5Vmlld1N0YXRlKFxuXHRcdFx0XHRcdHN0YXRlVG9BcHBseSxcblx0XHRcdFx0XHR0aGlzLl9jcmVhdGVOYXZpZ2F0aW9uUGFyYW1ldGVycyhvQXBwRGF0YSwgc05hdlR5cGUpLFxuXHRcdFx0XHRcdHNraXBNZXJnZVxuXHRcdFx0XHQpO1xuXHRcdFx0XHRpZiAoIXNob3VsZEFwcGx5U3RhdGUpIHtcblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFwcGx5Vmlld1N0YXRlO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IHVua25vd24pIHtcblx0XHRcdFx0TG9nLmVycm9yKFwiYXBwU3RhdGUgY291bGQgbm90IGJlIGFwcGxpZWRcIiwgb0Vycm9yIGFzIHN0cmluZyk7XG5cdFx0XHRcdHRocm93IG9FcnJvcjtcblx0XHRcdH0pXG5cdFx0XHQuZmluYWxseSgoKSA9PiB7XG5cdFx0XHRcdC8vIHVubG9jayBhcHBseSBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgdmlld1xuXHRcdFx0XHRCdXN5TG9ja2VyLnVubG9jayh0aGlzLCB2aWV3SWQpO1xuXHRcdFx0XHQvLyB1bmxvY2sgdGhlIGFwcCBzdGF0ZSBoYW5kbGVyLCBzbyB0aGF0IGFwcCBzdGF0ZSBjcmVhdGlvbiBjYW4gaGFwcGVuIG5vdy5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcyk7XG5cdFx0XHRcdC8vIHVubG9jayB0aGUgUm9vdENvbnRyb2wgdG8gcmVtb3ZlIHRoZSBidXN5IGluZGljYXRvci5cblx0XHRcdFx0QnVzeUxvY2tlci51bmxvY2sodGhpcy5vQXBwQ29tcG9uZW50LmdldFJvb3RDb250cm9sKCkpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogVG8gY2hlY2sgaXMgcm91dGUgaXMgY2hhbmdlZCBieSBjaGFuZ2UgaW4gdGhlIGlBUFBTdGF0ZS5cblx0ICogQHJldHVybnMgYHRydWVgIGlmIHRoZSByb3V0ZSBoYXMgY2huYWdlZFxuXHQgKi9cblx0Y2hlY2tJZlJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5iTm9Sb3V0ZUNoYW5nZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXNldCB0aGUgcm91dGUgY2hhbmdlZCBieSBpQVBQU3RhdGUuXG5cdCAqL1xuXHRyZXNldFJvdXRlQ2hhbmdlZEJ5SUFwcCgpOiB2b2lkIHtcblx0XHRpZiAodGhpcy5iTm9Sb3V0ZUNoYW5nZSkge1xuXHRcdFx0dGhpcy5iTm9Sb3V0ZUNoYW5nZSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8vIFJlc2V0IGFsbCBhY3RpdmF0aW9uIHN0YXR1c2VzIGluIEFwcFN0YXRlSGFuZGxlci52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cyB0byBmYWxzZVxuXHRzdGF0aWMgcmVzZXRWZXJzaW9uQWN0aXZhdGlvblN0YXR1cygpOiB2b2lkIHtcblx0XHRmb3IgKGNvbnN0IGlkIGluIHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXMpIHtcblx0XHRcdGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy52ZXJzaW9uQWN0aXZhdGlvblN0YXR1cywgaWQpKSB7XG5cdFx0XHRcdHRoaXMudmVyc2lvbkFjdGl2YXRpb25TdGF0dXNbaWRdID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBBcHBTdGF0ZUhhbmRsZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0VBZ0JBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDRCxPQUFPO0VBYy9CLE1BQU1FLGNBQWMsR0FBRyxXQUFXO0VBb0JsQyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7RUFBQyxJQUd4REMsZUFBZSxJQUFBQyxJQUFBLEdBRHBCQyxjQUFjLENBQUMsNkJBQTZCLENBQUMsRUFBQUQsSUFBQSxDQUFBRSxNQUFBLElBQUFDLGdCQUFBLDBCQUFBQyxXQUFBO0lBYzdDLFNBQUFMLGdCQUFZTSxhQUEyQixFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN4Q0EsS0FBQSxHQUFBRixXQUFBLENBQUFHLElBQUEsS0FBTSxDQUFDO01BQUNELEtBQUEsQ0FQREUsaUJBQWlCLEdBQWMsQ0FBQyxDQUFDO01BUXhDRixLQUFBLENBQUtELGFBQWEsR0FBR0EsYUFBYTtNQUNsQ0MsS0FBQSxDQUFLRyxHQUFHLEdBQUcsR0FBR0osYUFBYSxDQUFDSyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7TUFDckRKLEtBQUEsQ0FBS0sseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO01BQ25DTCxLQUFBLENBQUtNLGNBQWMsR0FBRyxLQUFLO01BQzNCQyxHQUFHLENBQUNDLElBQUksQ0FBQyx5Q0FBeUMsQ0FBQztNQUFDLE9BQUFSLEtBQUE7SUFDckQ7SUFBQ1MsY0FBQSxDQUFBaEIsZUFBQSxFQUFBSyxXQUFBO0lBQUEsSUFBQVksTUFBQSxHQUFBakIsZUFBQSxDQUFBa0IsU0FBQTtJQUFBRCxNQUFBLENBRUROLEtBQUssR0FBTCxTQUFBQSxLQUFLQSxDQUFBLEVBQVc7TUFDZixPQUFPLElBQUksQ0FBQ0QsR0FBRztJQUNoQjs7SUFFQTtB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
@@ -290,16 +290,15 @@ class AppStateHandler extends BaseObject {
290
290
 
291
291
  /**
292
292
  * Applies an appstate by fetching appdata and passing it to _applyAppstateToPage.
293
- * @param viewId
294
- * @param view
293
+ * @param view The view for which the app state must be applied. If no view is provided, then app state of all the views is applied.
295
294
  * @returns A promise for async handling
296
295
  */
297
- async applyAppState(viewId?: string, view?: View): Promise<void | {}> {
296
+ async applyAppState(view?: View): Promise<void | {}> {
298
297
  if (AppStateHandler.getRTAVersionWasActivated(this.oAppComponent.getId())) {
299
298
  AppStateHandler.setRTAVersionWasActivated(this.oAppComponent.getId(), false);
300
299
  return Promise.resolve();
301
300
  }
302
-
301
+ const viewId = view?.getId();
303
302
  if (!this.oAppComponent.getEnvironmentCapabilities().getCapabilities().AppState || BusyLocker.isLocked(this, viewId)) {
304
303
  return Promise.resolve();
305
304
  }
@@ -354,8 +353,9 @@ class AppStateHandler extends BaseObject {
354
353
  }
355
354
  shouldApplyState = false;
356
355
  }
356
+ const stateToApply = viewId && appStateData?.[viewId] ? appStateData : this._mCurrentAppState;
357
357
  const applyViewState = await oRootController.viewState.applyViewState(
358
- this._mCurrentAppState as Record<string, unknown>,
358
+ stateToApply,
359
359
  this._createNavigationParameters(oAppData, sNavType),
360
360
  skipMerge
361
361
  );
@@ -56,8 +56,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
56
56
  _this.extension = _this._controller.extension;
57
57
  _this.editFlow = _this._controller.editFlow;
58
58
  _this.routing = _this._controller.routing;
59
- _this._routing = _this._controller._routing;
60
59
  _this.intentBasedNavigation = _this._controller.intentBasedNavigation;
60
+
61
+ // Setting internal controller extensions for default building block handler to work when using ExtensionAPI as controller in custom fragment scnearios.
62
+ _this._routing = _this._controller._routing;
63
+ _this._intentBasedNavigation = _this._controller._intentBasedNavigation;
61
64
  _this._prefix = sId;
62
65
  return _this;
63
66
  }
@@ -342,4 +345,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BindingToolkit", "sap/fe/base/ClassS
342
345
  }), _class2)) || _class);
343
346
  return ExtensionAPI;
344
347
  }, false);
345
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsIl9yb3V0aW5nIiwiaW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiX3ByZWZpeCIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiZ2V0RWRpdEZsb3ciLCJnZXRSb3V0aW5nIiwiZ2V0SW50ZW50QmFzZWROYXZpZ2F0aW9uIiwiYnlJZCIsImlkIiwiY29udHJvbCIsInVuZGVmaW5lZCIsImlzQSIsInBhcmVudCIsImdldFBhcmVudCIsIkVycm9yIiwiZ2V0SWQiLCJnZXRNb2RlbCIsInNNb2RlbE5hbWUiLCJvQXBwQ29tcG9uZW50IiwiQ29tbW9uVXRpbHMiLCJnZXRBcHBDb21wb25lbnQiLCJnZXRNYW5pZmVzdEVudHJ5IiwibW9kZWxzIiwiYWRkRGVwZW5kZW50Iiwib0NvbnRyb2wiLCJyZW1vdmVEZXBlbmRlbnQiLCJuYXZpZ2F0ZVRvVGFyZ2V0Iiwic1RhcmdldCIsIm9Db250ZXh0IiwibG9hZEZyYWdtZW50IiwibVNldHRpbmdzIiwiX3RoaXMyIiwib1RlbXBsYXRlQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRTZXJ2aWNlIiwib1BhZ2VNb2RlbCIsImkxOG5Nb2RlbCIsIm9NZXRhTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJtVmlld0RhdGEiLCJnZXRWaWV3RGF0YSIsInRhcmdldENvbnRleHRQYXRoIiwiZ2V0RW50aXR5U2V0IiwiZ2V0Q29udGV4dFBhdGgiLCJvVmlld0RhdGFNb2RlbCIsIkpTT05Nb2RlbCIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsImJpbmRpbmdDb250ZXh0cyIsImNvbnRleHRQYXRoIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJjb252ZXJ0ZXJDb250ZXh0Iiwibm9SZXNvbHZlIiwidmlld0RhdGEiLCJtZXRhTW9kZWwiLCJhcHBDb21wb25lbnQiLCJjb250cm9sbGVySW5zdGFuY2UiLCJjb250cm9sbGVyIiwic3ViQ2xhc3MiLCJnZXRNZXRhZGF0YSIsImdldENsYXNzIiwiZXh0ZW5kIiwiY29udHJvbGxlckVsZW1lbnRLZXkiLCJjb250cm9sbGVyRWxlbWVudCIsImJpbmQiLCJib3VuZEZ1bmN0aW9uIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJydW5Bc093bmVyIiwiYXBwbHkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldCIsInNldCIsInYiLCJuZXdJc0EiLCJjbGFzc05hbWUiLCJvVGVtcGxhdGVQcm9taXNlIiwidGVtcGxhdGVDb250cm9sRnJhZ21lbnQiLCJuYW1lIiwiaXNYTUwiLCJjb250YWluaW5nVmlldyIsIm9GcmFnbWVudCIsImluaXRpYWxCaW5kaW5nQ29udGV4dCIsInNldEJpbmRpbmdDb250ZXh0Iiwib0Vycm9yIiwiTG9nIiwiZXJyb3IiLCJ1cGRhdGVBcHBTdGF0ZSIsInZpZXciLCJhcHBTdGF0ZUluZm8iLCJnZXRBcHBTdGF0ZUhhbmRsZXIiLCJjcmVhdGVBcHBTdGF0ZSIsInZpZXdJZCIsImFwcFN0YXRlRGF0YSIsInJ1bldpdGhGUE1Db250ZXh0IiwiZm4iLCJ0ZW1wbGF0ZUNvbXBvbmVudCIsIndhdGNoUHJvcGVydHkiLCJwcm9wZXJ0eU5hbWUiLCJjYWxsYmFjayIsIkRhdGFXYXRjaGVyIiwicHJvcGVydHlCaW5kaW5nIiwiY29tcGlsZUV4cHJlc3Npb24iLCJwYXRoSW5Nb2RlbCIsInZhbHVlQ2hhbmdlZCIsImUiLCJnZXRQYXJhbWV0ZXIiLCJCYXNlT2JqZWN0IiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJFeHRlbnNpb25BUEkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBjb21waWxlRXhwcmVzc2lvbiwgcGF0aEluTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQmluZGluZ1Rvb2xraXRcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgdHlwZSB7IEZFVmlldyB9IGZyb20gXCJzYXAvZmUvY29yZS9CYXNlQ29udHJvbGxlclwiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBUZW1wbGF0ZUNvbXBvbmVudCBmcm9tIFwic2FwL2ZlL2NvcmUvVGVtcGxhdGVDb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIEVkaXRGbG93IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9FZGl0Rmxvd1wiO1xuaW1wb3J0IHR5cGUgSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9JbnRlbnRCYXNlZE5hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIEludGVybmFsUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZXJuYWxSb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSBSb3V0aW5nIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9Sb3V0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IFdhdGNoZXJDYWxsYmFjayB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IERhdGFXYXRjaGVyIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9scy9EYXRhV2F0Y2hlclwiO1xuaW1wb3J0IHR5cGUgTWFjcm9BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvTWFjcm9BUElcIjtcbmltcG9ydCB0eXBlIEZvcm1BUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZm9ybS9Gb3JtQVBJXCI7XG5pbXBvcnQgQmFzZU9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvT2JqZWN0XCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBUU0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG4vKipcbiAqIENvbW1vbiBFeHRlbnNpb24gQVBJIGZvciBhbGwgcGFnZXMgb2YgU0FQIEZpb3JpIGVsZW1lbnRzIGZvciBPRGF0YSBWNC5cbiAqXG4gKiBUbyBjb3JyZWN0bHkgaW50ZWdyYXRlIHlvdXIgYXBwIGV4dGVuc2lvbiBjb2Rpbmcgd2l0aCBTQVAgRmlvcmkgZWxlbWVudHMsIHVzZSBvbmx5IHRoZSBleHRlbnNpb25BUEkgb2YgU0FQIEZpb3JpIGVsZW1lbnRzLiBEb24ndCBhY2Nlc3Mgb3IgbWFuaXB1bGF0ZSBjb250cm9scywgcHJvcGVydGllcywgbW9kZWxzLCBvciBvdGhlciBpbnRlcm5hbCBvYmplY3RzIGNyZWF0ZWQgYnkgdGhlIFNBUCBGaW9yaSBlbGVtZW50cyBmcmFtZXdvcmsuXG4gKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9jb250cm9sbGVyRXh0ZW5zaW9uc092ZXJ2aWV3IE92ZXJ2aWV3IG9mIEJ1aWxkaW5nIEJsb2NrfVxuICogQHB1YmxpY1xuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHNpbmNlIDEuNzkuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIilcbmNsYXNzIEV4dGVuc2lvbkFQSSBleHRlbmRzIEJhc2VPYmplY3Qge1xuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSBlZGl0IGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9iYXNpY0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuRWRpdEZsb3dcIiB9KVxuXHRlZGl0RmxvdzogRWRpdEZsb3c7XG5cblx0LyoqXG5cdCAqIEEgY29udHJvbGxlciBleHRlbnNpb24gb2ZmZXJpbmcgaG9va3MgaW50byB0aGUgcm91dGluZyBmbG93IG9mIHRoZSBhcHBsaWNhdGlvbi5cblx0ICoge0BsaW5rIGRlbW86c2FwL2ZlL2NvcmUvZnBtRXhwbG9yZXIvaW5kZXguaHRtbCMvY29udHJvbGxlckV4dGVuc2lvbnMvcm91dGluZ0V4dGVuc2liaWxpdHkgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLmZlLmNvcmUuY29udHJvbGxlcmV4dGVuc2lvbnMuUm91dGluZ1wiIH0pXG5cdHJvdXRpbmc6IFJvdXRpbmc7XG5cblx0LyoqXG5cdCAqIEV4dGVuc2lvbkFQSSBmb3IgaW50ZW50LWJhc2VkIG5hdmlnYXRpb25cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5JbnRlbnRCYXNlZE5hdmlnYXRpb25cIiB9KVxuXHRpbnRlbnRCYXNlZE5hdmlnYXRpb246IEludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRwdWJsaWMgX2NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyO1xuXG5cdHByb3RlY3RlZCBfdmlldzogRkVWaWV3O1xuXG5cdHByaXZhdGUgX3JvdXRpbmc6IEludGVybmFsUm91dGluZztcblxuXHRwcml2YXRlIF9wcmVmaXg/OiBzdHJpbmc7XG5cblx0cHJpdmF0ZSBleHRlbnNpb246IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5cdGNvbnN0cnVjdG9yKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc0lkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIoKTtcblx0XHR0aGlzLl9jb250cm9sbGVyID0gb0NvbnRyb2xsZXI7XG5cdFx0dGhpcy5fdmlldyA9IG9Db250cm9sbGVyLmdldFZpZXcoKTtcblx0XHR0aGlzLmV4dGVuc2lvbiA9IHRoaXMuX2NvbnRyb2xsZXIuZXh0ZW5zaW9uO1xuXHRcdHRoaXMuZWRpdEZsb3cgPSB0aGlzLl9jb250cm9sbGVyLmVkaXRGbG93O1xuXHRcdHRoaXMucm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIucm91dGluZztcblx0XHR0aGlzLl9yb3V0aW5nID0gdGhpcy5fY29udHJvbGxlci5fcm91dGluZztcblx0XHR0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbiA9IHRoaXMuX2NvbnRyb2xsZXIuaW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpOiBFZGl0RmxvdyB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdEZsb3c7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSByb3V0aW5nIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldFJvdXRpbmcoKTogUm91dGluZyB7XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgdGhpcyBwYWdlLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRCYXNlZE5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVudEJhc2VkTmF2aWdhdGlvbigpOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYSBjb250cm9sIGJ5IGl0cyBJRC4gSWYgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgc3RhYmxlIEFQSSwgdGhlIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGVycm9yLlxuXHQgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGNvbnRyb2wgd2l0aG91dCB2aWV3IGFuZCBzZWN0aW9uIHByZWZpeC5cblx0ICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb250cm9sLCBpZiBmb3VuZCBpbiB0aGUgdmlldyAvIHNlY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGJ5SWQoaWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGlkKTtcblxuXHRcdGlmICghY29udHJvbCAmJiB0aGlzLl9wcmVmaXgpIHtcblx0XHRcdC8vIGdpdmUgaXQgYSB0cnkgd2l0aCB0aGUgcHJlZml4XG5cdFx0XHRjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7aWR9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICghY29udHJvbC5pc0E8TWFjcm9BUEk+KFwic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiKSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgYXBwIHRyaWVkIHRvIGFjY2VzcyBhbiBpbnRlcm5hbCBjb250cm9sIHdyYXBwZWQgYnkgYSBtYWNybyBBUElcblx0XHRcdGxldCBwYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXG5cdFx0XHR3aGlsZSAocGFyZW50KSB7XG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPEZvcm1BUEk+KFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1BUElcIikpIHtcblx0XHRcdFx0XHQvLyB3ZSByZWFjaGVkIHRoZSBmb3JtQVBJIGJ1dCBubyBmaWVsZCAtIHRoZSBhcHAgdHJpZXMgdG8gYWNjZXNzIGFueSBjdXN0b20gY29udHJvbCB3aGljaCBpcyBmaW5lXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocGFyZW50LmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0YFlvdSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wuIFRoaXMgaXMgcmlza3kgYW5kIG1pZ2h0IGNoYW5nZSBsYXRlci4gSW5zdGVhZCBhY2Nlc3MgaXRzIHN0YWJsZSBBUEkgYnkgdXNpbmcgSUQgJHtwYXJlbnQuZ2V0SWQoKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udHJvbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWNjZXNzIHRvIG1vZGVscyBtYW5hZ2VkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy48YnI+XG5cdCAqIFRoZSBmb2xsb3dpbmcgbW9kZWxzIGNhbiBiZSBhY2Nlc3NlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+dW5kZWZpbmVkOiB0aGUgdW5kZWZpbmVkIG1vZGVsIHJldHVybnMgdGhlIFNBUFVJNSBPRGF0YSBWNCBtb2RlbCBib3VuZCB0byB0aGlzIHBhZ2U8L2xpPlxuXHQgKiA8bGk+aTE4biAvIGZ1cnRoZXIgZGF0YSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Q8L2xpPlxuXHQgKiA8bGk+dWk6IHJldHVybnMgYSBTQVBVSTUgSlNPTiBtb2RlbCBjb250YWluaW5nIFVJIGluZm9ybWF0aW9uLlxuXHQgKiBPbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcHVibGljIGFuZCBzdXBwb3J0ZWQ6XG5cdCAqIDx1bD5cblx0ICogPGxpPmlzRWRpdGFibGU6IHNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBpbiBlZGl0IG1vZGU8L2xpPlxuXHQgKiA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGF3YWl0IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRTZXJ2aWNlKFwidGVtcGxhdGVkVmlld1NlcnZpY2VcIik7XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG1WaWV3RGF0YSA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHRhcmdldENvbnRleHRQYXRoID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpXG5cdFx0XHQ/IGAvJHtvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KCkhfWBcblx0XHRcdDogb1RlbXBsYXRlQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkhO1xuXHRcdGNvbnN0IG9WaWV3RGF0YU1vZGVsID0gbmV3IEpTT05Nb2RlbChtVmlld0RhdGEpLFxuXHRcdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobVNldHRpbmdzLmNvbnRleHRQYXRoIHx8IHRhcmdldENvbnRleHRQYXRoKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwsXG5cdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBvVmlld0RhdGFNb2RlbCxcblx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IGkxOG5Nb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhcHBDb21wb25lbnQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KVxuXHRcdFx0fTtcblxuXHRcdC8vIFdlIHNjb3BlIHRoZSBmcmFnbWVudCB3aXRoIG91ciBFeHRlbnNpb25BUEkuIElmIGEgY29udHJvbGxlciBvYmplY3QgaXMgcGFzc2VkIHdlIG1lcmdlIGl0IHdpdGggdGhlIGV4dGVuc2lvbkFQSVxuXHRcdGxldCBjb250cm9sbGVySW5zdGFuY2U6IEV4dGVuc2lvbkFQSTtcblx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIgJiYgIShtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpPy5pc0E/LihcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSkge1xuXHRcdFx0Y29uc3Qgc3ViQ2xhc3MgPSAoXG5cdFx0XHRcdHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRDbGFzcygpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRcdGV4dGVuZDogKGlkOiBzdHJpbmcsIGNvbnRlbnQ6IG9iamVjdCkgPT4geyBuZXcgKHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IEV4dGVuc2lvbkFQSSB9O1xuXHRcdFx0XHR9XG5cdFx0XHQpLmV4dGVuZChtU2V0dGluZ3MuaWQgKyBcIi1jb250cm9sbGVyXCIsIHt9KTtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbGxlckVsZW1lbnRLZXkgaW4gbVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlckVsZW1lbnQgPSBtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRpZiAoKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKT8uYmluZCkge1xuXHRcdFx0XHRcdGNvbnN0IGJvdW5kRnVuY3Rpb24gPSAoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pLmJpbmQobVNldHRpbmdzLmNvbnRyb2xsZXIpO1xuXHRcdFx0XHRcdGlmIChvVGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBib3VuZEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSBib3VuZEZ1bmN0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MucHJvdG90eXBlLCBjb250cm9sbGVyRWxlbWVudEtleSwge1xuXHRcdFx0XHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbVNldHRpbmdzLmNvbnRyb2xsZXI/Lltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNldCh2OiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRcdFx0XHRcdChtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdIGFzIHVua25vd24pID0gdjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgc3ViQ2xhc3ModGhpcy5fY29udHJvbGxlcik7XG5cdFx0XHRjb25zdCBuZXdJc0EgPSBjb250cm9sbGVySW5zdGFuY2UuaXNBO1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlLmlzQSA9IChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHQvLyBXZSBrZWVwIHRoZSBcdHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSBhcyBhIHZhbGlkIHR5cGUgZm9yIHRoaXMgbmV3IGNsYXNzXG5cdFx0XHRcdC8vIHRoaXMgdHlwZSBpcyBsb3N0IGFzIHNvb24gYXMgdGhlIG1lcmdlZCBjb250cm9sbGVyIG9iamVjdCBnZXRzIGEgbWV0aG9kIGlzQVxuXHRcdFx0XHRyZXR1cm4gbmV3SXNBLmJpbmQoY29udHJvbGxlckluc3RhbmNlKShjbGFzc05hbWUpIHx8IHRoaXMuaXNBKGNsYXNzTmFtZSk7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSAobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKSA/PyB0aGlzO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RlbXBsYXRlUHJvbWlzZSA9IENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KG1TZXR0aW5ncy5uYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHtcblx0XHRcdFx0Y29udHJvbGxlcjogY29udHJvbGxlckluc3RhbmNlLFxuXHRcdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRcdGlkOiBtU2V0dGluZ3MuaWQsXG5cdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiB0aGlzLl92aWV3LFxuXHRcdFx0XHRjb250ZXh0UGF0aDogbVNldHRpbmdzLmNvbnRleHRQYXRoID8/IHRhcmdldENvbnRleHRQYXRoXG5cdFx0XHR9KSBhcyBQcm9taXNlPENvbnRyb2w+O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb0ZyYWdtZW50OiBDb250cm9sID0gYXdhaXQgb1RlbXBsYXRlUHJvbWlzZTtcblx0XHRcdFx0aWYgKG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdG9GcmFnbWVudC5zZXRCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudChvRnJhZ21lbnQpO1xuXHRcdFx0XHRyZXR1cm4gb0ZyYWdtZW50O1xuXHRcdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9KSBhcyBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIHVwZGF0ZSBvZiB0aGUgYXBwIHN0YXRlLlxuXHQgKiBTaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBzdGF0ZSBvZiBhIGNvbnRyb2wsIG9yIGFueSBvdGhlciBzdGF0ZS1yZWxldmFudCBpbmZvcm1hdGlvbiwgd2FzIGNoYW5nZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhcHAgc3RhdGUgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfT4ge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLl9jb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLl9jb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGFwcFN0YXRlSW5mbyA9IGF3YWl0IGFwcENvbXBvbmVudC5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5jcmVhdGVBcHBTdGF0ZSh7XG5cdFx0XHR2aWV3SWQ6IHZpZXcuZ2V0SWQoKVxuXHRcdH0pO1xuXHRcdHJldHVybiBhcHBTdGF0ZUluZm8/LmFwcFN0YXRlRGF0YTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpdGggdGhlIEZQTSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgYWxsb3dzIHRvIGluaXRpYWxpemUgYWxsIHRoZSBlbGVtZW50cyByZXF1aXJlZCBieSBidWlsZGluZyBibG9ja3MgdG8gcmVuZGVyIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIGZuIFRoZSBGdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRydW5XaXRoRlBNQ29udGV4dChmbjogRnVuY3Rpb24pOiB1bmtub3duIHtcblx0XHRjb25zdCB0ZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0cmV0dXJuIHRlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoZm4gYXMgVFNGdW5jdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogV2F0Y2ggYSBwcm9wZXJ0eSBmcm9tIHRoZSBtYWluIHBhZ2UgY29udGV4dCBhbmQgdHJpZ2dlciBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHdhdGNoXG5cdCAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gdHJpZ2dlciB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHdhdGNoUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBXYXRjaGVyQ2FsbGJhY2spOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChcblx0XHRcdG5ldyBEYXRhV2F0Y2hlcih7XG5cdFx0XHRcdHByb3BlcnR5QmluZGluZzogY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwocHJvcGVydHlOYW1lKSksXG5cdFx0XHRcdHZhbHVlQ2hhbmdlZDogKGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjYWxsYmFjayhlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcIm9sZFZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcImlzSW5pdGlhbFwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJjb250ZXh0XCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBUkEsSUFVTUEsWUFBWSxJQUFBQyxJQUFBLEdBRGpCQyxjQUFjLENBQUMsMEJBQTBCLENBQUMsRUFBQUMsS0FBQSxHQU96Q0MsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUE0QyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQVEvREYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUEyQyxDQUFDLENBQUMsRUFBQUUsS0FBQSxHQU85REgsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUF5RCxDQUFDLENBQUMsRUFBQUosSUFBQSxDQUFBTyxNQUFBLElBQUFDLE9BQUEsMEJBQUFDLFdBQUE7SUFhN0UsU0FBQVYsYUFBWVcsV0FBMkIsRUFBRUMsR0FBWSxFQUFFO01BQUEsSUFBQUMsS0FBQTtNQUN0REEsS0FBQSxHQUFBSCxXQUFBLENBQUFJLElBQUEsS0FBTSxDQUFDO01BbENSO0FB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
348
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFeHRlbnNpb25BUEkiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInByb3BlcnR5IiwidHlwZSIsIl9kZWMzIiwiX2RlYzQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0Jhc2VPYmplY3QiLCJvQ29udHJvbGxlciIsInNJZCIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfY29udHJvbGxlciIsIl92aWV3IiwiZ2V0VmlldyIsImV4dGVuc2lvbiIsImVkaXRGbG93Iiwicm91dGluZyIsImludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9yb3V0aW5nIiwiX2ludGVudEJhc2VkTmF2aWdhdGlvbiIsIl9wcmVmaXgiLCJfaW5oZXJpdHNMb29zZSIsIl9wcm90byIsInByb3RvdHlwZSIsImdldEVkaXRGbG93IiwiZ2V0Um91dGluZyIsImdldEludGVudEJhc2VkTmF2aWdhdGlvbiIsImJ5SWQiLCJpZCIsImNvbnRyb2wiLCJ1bmRlZmluZWQiLCJpc0EiLCJwYXJlbnQiLCJnZXRQYXJlbnQiLCJFcnJvciIsImdldElkIiwiZ2V0TW9kZWwiLCJzTW9kZWxOYW1lIiwib0FwcENvbXBvbmVudCIsIkNvbW1vblV0aWxzIiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0TWFuaWZlc3RFbnRyeSIsIm1vZGVscyIsImFkZERlcGVuZGVudCIsIm9Db250cm9sIiwicmVtb3ZlRGVwZW5kZW50IiwibmF2aWdhdGVUb1RhcmdldCIsInNUYXJnZXQiLCJvQ29udGV4dCIsImxvYWRGcmFnbWVudCIsIm1TZXR0aW5ncyIsIl90aGlzMiIsIm9UZW1wbGF0ZUNvbXBvbmVudCIsIkNvbXBvbmVudCIsImdldE93bmVyQ29tcG9uZW50Rm9yIiwiZ2V0U2VydmljZSIsIm9QYWdlTW9kZWwiLCJpMThuTW9kZWwiLCJvTWV0YU1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwibVZpZXdEYXRhIiwiZ2V0Vmlld0RhdGEiLCJ0YXJnZXRDb250ZXh0UGF0aCIsImdldEVudGl0eVNldCIsImdldENvbnRleHRQYXRoIiwib1ZpZXdEYXRhTW9kZWwiLCJKU09OTW9kZWwiLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJiaW5kaW5nQ29udGV4dHMiLCJjb250ZXh0UGF0aCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwiY29udmVydGVyQ29udGV4dCIsIm5vUmVzb2x2ZSIsInZpZXdEYXRhIiwibWV0YU1vZGVsIiwiYXBwQ29tcG9uZW50IiwiY29udHJvbGxlckluc3RhbmNlIiwiY29udHJvbGxlciIsInN1YkNsYXNzIiwiZ2V0TWV0YWRhdGEiLCJnZXRDbGFzcyIsImV4dGVuZCIsImNvbnRyb2xsZXJFbGVtZW50S2V5IiwiY29udHJvbGxlckVsZW1lbnQiLCJiaW5kIiwiYm91bmRGdW5jdGlvbiIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwicnVuQXNPd25lciIsImFwcGx5IiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJzZXQiLCJ2IiwibmV3SXNBIiwiY2xhc3NOYW1lIiwib1RlbXBsYXRlUHJvbWlzZSIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50IiwibmFtZSIsImlzWE1MIiwiY29udGFpbmluZ1ZpZXciLCJvRnJhZ21lbnQiLCJpbml0aWFsQmluZGluZ0NvbnRleHQiLCJzZXRCaW5kaW5nQ29udGV4dCIsIm9FcnJvciIsIkxvZyIsImVycm9yIiwidXBkYXRlQXBwU3RhdGUiLCJ2aWV3IiwiYXBwU3RhdGVJbmZvIiwiZ2V0QXBwU3RhdGVIYW5kbGVyIiwiY3JlYXRlQXBwU3RhdGUiLCJ2aWV3SWQiLCJhcHBTdGF0ZURhdGEiLCJydW5XaXRoRlBNQ29udGV4dCIsImZuIiwidGVtcGxhdGVDb21wb25lbnQiLCJ3YXRjaFByb3BlcnR5IiwicHJvcGVydHlOYW1lIiwiY2FsbGJhY2siLCJEYXRhV2F0Y2hlciIsInByb3BlcnR5QmluZGluZyIsImNvbXBpbGVFeHByZXNzaW9uIiwicGF0aEluTW9kZWwiLCJ2YWx1ZUNoYW5nZWQiLCJlIiwiZ2V0UGFyYW1ldGVyIiwiQmFzZU9iamVjdCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRXh0ZW5zaW9uQVBJLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHsgY29tcGlsZUV4cHJlc3Npb24sIHBhdGhJbk1vZGVsIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgeyBGRVZpZXcgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQmFzZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIFBhZ2VDb250cm9sbGVyIGZyb20gXCJzYXAvZmUvY29yZS9QYWdlQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVGVtcGxhdGVDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBFZGl0RmxvdyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvRWRpdEZsb3dcIjtcbmltcG9ydCB0eXBlIEludGVudEJhc2VkTmF2aWdhdGlvbiBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5pbXBvcnQgdHlwZSBJbnRlcm5hbFJvdXRpbmcgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgUm91dGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvUm91dGluZ1wiO1xuaW1wb3J0IHR5cGUgeyBXYXRjaGVyQ2FsbGJhY2sgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRGF0YVdhdGNoZXJcIjtcbmltcG9ydCBEYXRhV2F0Y2hlciBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbHMvRGF0YVdhdGNoZXJcIjtcbmltcG9ydCB0eXBlIE1hY3JvQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL01hY3JvQVBJXCI7XG5pbXBvcnQgdHlwZSBGb3JtQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2Zvcm0vRm9ybUFQSVwiO1xuaW1wb3J0IEJhc2VPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL09iamVjdFwiO1xuaW1wb3J0IENvbXBvbmVudCBmcm9tIFwic2FwL3VpL2NvcmUvQ29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBVSTVFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgdHlwZSBPRGF0YVY0Q29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgVFNGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi8uLi90eXBlcy9leHRlbnNpb25fdHlwZXNcIjtcbmltcG9ydCB0eXBlIEludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uIGZyb20gXCIuL2NvbnRyb2xsZXJleHRlbnNpb25zL0ludGVybmFsSW50ZW50QmFzZWROYXZpZ2F0aW9uXCI7XG5cbi8qKlxuICogQ29tbW9uIEV4dGVuc2lvbiBBUEkgZm9yIGFsbCBwYWdlcyBvZiBTQVAgRmlvcmkgZWxlbWVudHMgZm9yIE9EYXRhIFY0LlxuICpcbiAqIFRvIGNvcnJlY3RseSBpbnRlZ3JhdGUgeW91ciBhcHAgZXh0ZW5zaW9uIGNvZGluZyB3aXRoIFNBUCBGaW9yaSBlbGVtZW50cywgdXNlIG9ubHkgdGhlIGV4dGVuc2lvbkFQSSBvZiBTQVAgRmlvcmkgZWxlbWVudHMuIERvbid0IGFjY2VzcyBvciBtYW5pcHVsYXRlIGNvbnRyb2xzLCBwcm9wZXJ0aWVzLCBtb2RlbHMsIG9yIG90aGVyIGludGVybmFsIG9iamVjdHMgY3JlYXRlZCBieSB0aGUgU0FQIEZpb3JpIGVsZW1lbnRzIGZyYW1ld29yay5cbiAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2NvbnRyb2xsZXJFeHRlbnNpb25zT3ZlcnZpZXcgT3ZlcnZpZXcgb2YgQnVpbGRpbmcgQmxvY2t9XG4gKiBAcHVibGljXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAc2luY2UgMS43OS4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKVxuY2xhc3MgRXh0ZW5zaW9uQVBJIGV4dGVuZHMgQmFzZU9iamVjdCB7XG5cdC8qKlxuXHQgKiBBIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIG9mZmVyaW5nIGhvb2tzIGludG8gdGhlIGVkaXQgZmxvdyBvZiB0aGUgYXBwbGljYXRpb24uXG5cdCAqIHtAbGluayBkZW1vOnNhcC9mZS9jb3JlL2ZwbUV4cGxvcmVyL2luZGV4Lmh0bWwjL2NvbnRyb2xsZXJFeHRlbnNpb25zL2Jhc2ljRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5FZGl0Rmxvd1wiIH0pXG5cdGVkaXRGbG93OiBFZGl0RmxvdztcblxuXHQvKipcblx0ICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBob29rcyBpbnRvIHRoZSByb3V0aW5nIGZsb3cgb2YgdGhlIGFwcGxpY2F0aW9uLlxuXHQgKiB7QGxpbmsgZGVtbzpzYXAvZmUvY29yZS9mcG1FeHBsb3Jlci9pbmRleC5odG1sIy9jb250cm9sbGVyRXh0ZW5zaW9ucy9yb3V0aW5nRXh0ZW5zaWJpbGl0eSBPdmVydmlldyBvZiBCdWlsZGluZyBCbG9ja31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5Sb3V0aW5nXCIgfSlcblx0cm91dGluZzogUm91dGluZztcblxuXHQvKipcblx0ICogRXh0ZW5zaW9uQVBJIGZvciBpbnRlbnQtYmFzZWQgbmF2aWdhdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLkludGVudEJhc2VkTmF2aWdhdGlvblwiIH0pXG5cdGludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXG5cdHB1YmxpYyBfY29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIF92aWV3OiBGRVZpZXc7XG5cblx0cHJpdmF0ZSBfcm91dGluZzogSW50ZXJuYWxSb3V0aW5nO1xuXG5cdHByaXZhdGUgX2ludGVudEJhc2VkTmF2aWdhdGlvbjogSW50ZXJuYWxJbnRlbnRCYXNlZE5hdmlnYXRpb247XG5cblx0cHJpdmF0ZSBfcHJlZml4Pzogc3RyaW5nO1xuXG5cdHByaXZhdGUgZXh0ZW5zaW9uOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuXHRjb25zdHJ1Y3RvcihvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIHNJZD86IHN0cmluZykge1xuXHRcdHN1cGVyKCk7XG5cdFx0dGhpcy5fY29udHJvbGxlciA9IG9Db250cm9sbGVyO1xuXHRcdHRoaXMuX3ZpZXcgPSBvQ29udHJvbGxlci5nZXRWaWV3KCk7XG5cdFx0dGhpcy5leHRlbnNpb24gPSB0aGlzLl9jb250cm9sbGVyLmV4dGVuc2lvbjtcblx0XHR0aGlzLmVkaXRGbG93ID0gdGhpcy5fY29udHJvbGxlci5lZGl0Rmxvdztcblx0XHR0aGlzLnJvdXRpbmcgPSB0aGlzLl9jb250cm9sbGVyLnJvdXRpbmc7XG5cdFx0dGhpcy5pbnRlbnRCYXNlZE5hdmlnYXRpb24gPSB0aGlzLl9jb250cm9sbGVyLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblxuXHRcdC8vIFNldHRpbmcgaW50ZXJuYWwgY29udHJvbGxlciBleHRlbnNpb25zIGZvciBkZWZhdWx0IGJ1aWxkaW5nIGJsb2NrIGhhbmRsZXIgdG8gd29yayB3aGVuIHVzaW5nIEV4dGVuc2lvbkFQSSBhcyBjb250cm9sbGVyIGluIGN1c3RvbSBmcmFnbWVudCBzY25lYXJpb3MuXG5cdFx0dGhpcy5fcm91dGluZyA9IHRoaXMuX2NvbnRyb2xsZXIuX3JvdXRpbmc7XG5cdFx0dGhpcy5faW50ZW50QmFzZWROYXZpZ2F0aW9uID0gdGhpcy5fY29udHJvbGxlci5faW50ZW50QmFzZWROYXZpZ2F0aW9uO1xuXHRcdHRoaXMuX3ByZWZpeCA9IHNJZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIGVkaXRGbG93IGNvbnRyb2xsZXIgZXh0ZW5zaW9uXG5cdCAqL1xuXHRnZXRFZGl0RmxvdygpOiBFZGl0RmxvdyB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdEZsb3c7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSByb3V0aW5nIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvciB0aGlzIHBhZ2UuXG5cdCAqIEBwdWJsaWNcblx0ICogQHJldHVybnMgVGhlIHJvdXRpbmcgY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldFJvdXRpbmcoKTogUm91dGluZyB7XG5cdFx0cmV0dXJuIHRoaXMucm91dGluZztcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGludGVudEJhc2VkTmF2aWdhdGlvbiBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3IgdGhpcyBwYWdlLlxuXHQgKiBAcHVibGljXG5cdCAqIEByZXR1cm5zIFRoZSBpbnRlbnRCYXNlZE5hdmlnYXRpb24gY29udHJvbGxlciBleHRlbnNpb25cblx0ICovXG5cdGdldEludGVudEJhc2VkTmF2aWdhdGlvbigpOiBJbnRlbnRCYXNlZE5hdmlnYXRpb24ge1xuXHRcdHJldHVybiB0aGlzLmludGVudEJhc2VkTmF2aWdhdGlvbjtcblx0fVxuXG5cdC8qKlxuXHQgKiBBY2Nlc3MgYSBjb250cm9sIGJ5IGl0cyBJRC4gSWYgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wgaW5zdGVhZCBvZiB0aGUgc3RhYmxlIEFQSSwgdGhlIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGVycm9yLlxuXHQgKiBAcGFyYW0gaWQgSUQgb2YgdGhlIGNvbnRyb2wgd2l0aG91dCB2aWV3IGFuZCBzZWN0aW9uIHByZWZpeC5cblx0ICogQHJldHVybnMgVGhlIHJlcXVlc3RlZCBjb250cm9sLCBpZiBmb3VuZCBpbiB0aGUgdmlldyAvIHNlY3Rpb24uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGJ5SWQoaWQ6IHN0cmluZyk6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGlkKTtcblxuXHRcdGlmICghY29udHJvbCAmJiB0aGlzLl9wcmVmaXgpIHtcblx0XHRcdC8vIGdpdmUgaXQgYSB0cnkgd2l0aCB0aGUgcHJlZml4XG5cdFx0XHRjb250cm9sID0gdGhpcy5fdmlldy5ieUlkKGAke3RoaXMuX3ByZWZpeH0tLSR7aWR9YCk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb250cm9sKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblxuXHRcdGlmICghY29udHJvbC5pc0E8TWFjcm9BUEk+KFwic2FwLmZlLm1hY3Jvcy5NYWNyb0FQSVwiKSkge1xuXHRcdFx0Ly8gY2hlY2sgaWYgYXBwIHRyaWVkIHRvIGFjY2VzcyBhbiBpbnRlcm5hbCBjb250cm9sIHdyYXBwZWQgYnkgYSBtYWNybyBBUElcblx0XHRcdGxldCBwYXJlbnQgPSBjb250cm9sLmdldFBhcmVudCgpO1xuXG5cdFx0XHR3aGlsZSAocGFyZW50KSB7XG5cdFx0XHRcdGlmIChwYXJlbnQuaXNBPEZvcm1BUEk+KFwic2FwLmZlLm1hY3Jvcy5mb3JtLkZvcm1BUElcIikpIHtcblx0XHRcdFx0XHQvLyB3ZSByZWFjaGVkIHRoZSBmb3JtQVBJIGJ1dCBubyBmaWVsZCAtIHRoZSBhcHAgdHJpZXMgdG8gYWNjZXNzIGFueSBjdXN0b20gY29udHJvbCB3aGljaCBpcyBmaW5lXG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocGFyZW50LmlzQTxNYWNyb0FQST4oXCJzYXAuZmUubWFjcm9zLk1hY3JvQVBJXCIpKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFxuXHRcdFx0XHRcdFx0YFlvdSBhdHRlbXB0ZWQgdG8gYWNjZXNzIGFuIGludGVybmFsIGNvbnRyb2wuIFRoaXMgaXMgcmlza3kgYW5kIG1pZ2h0IGNoYW5nZSBsYXRlci4gSW5zdGVhZCBhY2Nlc3MgaXRzIHN0YWJsZSBBUEkgYnkgdXNpbmcgSUQgJHtwYXJlbnQuZ2V0SWQoKX1gXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC5nZXRQYXJlbnQoKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY29udHJvbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYWNjZXNzIHRvIG1vZGVscyBtYW5hZ2VkIGJ5IFNBUCBGaW9yaSBlbGVtZW50cy48YnI+XG5cdCAqIFRoZSBmb2xsb3dpbmcgbW9kZWxzIGNhbiBiZSBhY2Nlc3NlZDpcblx0ICogPHVsPlxuXHQgKiA8bGk+dW5kZWZpbmVkOiB0aGUgdW5kZWZpbmVkIG1vZGVsIHJldHVybnMgdGhlIFNBUFVJNSBPRGF0YSBWNCBtb2RlbCBib3VuZCB0byB0aGlzIHBhZ2U8L2xpPlxuXHQgKiA8bGk+aTE4biAvIGZ1cnRoZXIgZGF0YSBtb2RlbHMgZGVmaW5lZCBpbiB0aGUgbWFuaWZlc3Q8L2xpPlxuXHQgKiA8bGk+dWk6IHJldHVybnMgYSBTQVBVSTUgSlNPTiBtb2RlbCBjb250YWluaW5nIFVJIGluZm9ybWF0aW9uLlxuXHQgKiBPbmx5IHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgcHVibGljIGFuZCBzdXBwb3J0ZWQ6XG5cdCAqIDx1bD5cblx0ICogPGxpPmlzRWRpdGFibGU6IHNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBpbiBlZGl0IG1vZGU8L2xpPlxuXHQgKiA8L3VsPlxuXHQgKiA8L2xpPlxuXHQgKiA8L3VsPi5cblx0ICogZWRpdE1vZGUgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGFueW1vcmUuIFVzZSBpc0VkaXRhYmxlIGluc3RlYWQuXG5cdCAqIEBwYXJhbSBzTW9kZWxOYW1lIE5hbWUgb2YgdGhlIG1vZGVsXG5cdCAqIEByZXR1cm5zIFRoZSByZXF1aXJlZCBtb2RlbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRnZXRNb2RlbChzTW9kZWxOYW1lPzogc3RyaW5nKTogTW9kZWwgfCB1bmRlZmluZWQge1xuXHRcdGxldCBvQXBwQ29tcG9uZW50O1xuXG5cdFx0aWYgKHNNb2RlbE5hbWUgJiYgc01vZGVsTmFtZSAhPT0gXCJ1aVwiKSB7XG5cdFx0XHRvQXBwQ29tcG9uZW50ID0gQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KHRoaXMuX3ZpZXcpO1xuXHRcdFx0aWYgKCFvQXBwQ29tcG9uZW50LmdldE1hbmlmZXN0RW50cnkoXCJzYXAudWk1XCIpLm1vZGVsc1tzTW9kZWxOYW1lXSkge1xuXHRcdFx0XHQvLyBkb24ndCBhbGxvdyBhY2Nlc3MgdG8gb3VyIGludGVybmFsIG1vZGVsc1xuXHRcdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLl92aWV3LmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhbnkgY29udHJvbCBhcyBhIGRlcGVuZGVudCBjb250cm9sIHRvIHRoaXMgU0FQIEZpb3JpIGVsZW1lbnRzIHBhZ2UuXG5cdCAqIEBwYXJhbSBvQ29udHJvbCBDb250cm9sIHRvIGJlIGFkZGVkIGFzIGEgZGVwZW5kZW50IGNvbnRyb2xcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0YWRkRGVwZW5kZW50KG9Db250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0dGhpcy5fdmlldy5hZGREZXBlbmRlbnQob0NvbnRyb2wpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBhIGRlcGVuZGVudCBjb250cm9sIGZyb20gdGhpcyBTQVAgRmlvcmkgZWxlbWVudHMgcGFnZS5cblx0ICogQHBhcmFtIG9Db250cm9sIENvbnRyb2wgdG8gYmUgYWRkZWQgYXMgYSBkZXBlbmRlbnQgY29udHJvbFxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRyZW1vdmVEZXBlbmRlbnQob0NvbnRyb2w6IENvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LnJlbW92ZURlcGVuZGVudChvQ29udHJvbCk7XG5cdH1cblxuXHQvKipcblx0ICogTmF2aWdhdGUgdG8gYW5vdGhlciB0YXJnZXQuXG5cdCAqIEBwYXJhbSBzVGFyZ2V0IE5hbWUgb2YgdGhlIHRhcmdldCByb3V0ZVxuXHQgKiBAcGFyYW0gW29Db250ZXh0XSBPRGF0YSB2NCBjb250ZXh0IGluc3RhbmNlXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdG5hdmlnYXRlVG9UYXJnZXQoc1RhcmdldDogc3RyaW5nLCBvQ29udGV4dDogT0RhdGFWNENvbnRleHQpOiB2b2lkIHtcblx0XHR0aGlzLl9jb250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0NvbnRleHQsIHNUYXJnZXQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIExvYWQgYSBmcmFnbWVudCBhbmQgZ28gdGhyb3VnaCB0aGUgdGVtcGxhdGUgcHJlcHJvY2Vzc29yIHdpdGggdGhlIGN1cnJlbnQgcGFnZSBjb250ZXh0LlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzIFRoZSBzZXR0aW5ncyBvYmplY3Rcblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pZCBUaGUgSUQgb2YgdGhlIGZyYWdtZW50IGl0c2VsZlxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLm5hbWUgVGhlIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIGxvYWRlZFxuXHQgKiBAcGFyYW0gbVNldHRpbmdzLmNvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgdG8gYmUgYXR0YWNoZWQgdG8gdGhlIGZyYWdtZW50XG5cdCAqIEBwYXJhbSBtU2V0dGluZ3MuY29udGV4dFBhdGggVGhlIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgZm9yIHRoZSB0ZW1wbGF0aW5nIHByb2Nlc3Ncblx0ICogQHBhcmFtIG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgVGhlIGluaXRpYWwgYmluZGluZyBjb250ZXh0XG5cdCAqIEByZXR1cm5zIFRoZSBmcmFnbWVudCBkZWZpbml0aW9uXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdGFzeW5jIGxvYWRGcmFnbWVudChtU2V0dGluZ3M6IHtcblx0XHRpZDogc3RyaW5nO1xuXHRcdG5hbWU6IHN0cmluZztcblx0XHRjb250cm9sbGVyPzogb2JqZWN0O1xuXHRcdGNvbnRleHRQYXRoPzogc3RyaW5nO1xuXHRcdGluaXRpYWxCaW5kaW5nQ29udGV4dD86IENvbnRleHQ7XG5cdH0pOiBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+IHtcblx0XHRjb25zdCBvVGVtcGxhdGVDb21wb25lbnQgPSBDb21wb25lbnQuZ2V0T3duZXJDb21wb25lbnRGb3IodGhpcy5fdmlldykgYXMgRW5oYW5jZVdpdGhVSTU8VGVtcGxhdGVDb21wb25lbnQ+O1xuXHRcdGF3YWl0IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRTZXJ2aWNlKFwidGVtcGxhdGVkVmlld1NlcnZpY2VcIik7XG5cdFx0Y29uc3Qgb1BhZ2VNb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJfcGFnZU1vZGVsXCIpO1xuXHRcdGNvbnN0IGkxOG5Nb2RlbCA9IHRoaXMuX3ZpZXcuZ2V0TW9kZWwoXCJzYXAuZmUuaTE4blwiKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IG1WaWV3RGF0YSA9IG9UZW1wbGF0ZUNvbXBvbmVudC5nZXRWaWV3RGF0YSgpO1xuXHRcdGNvbnN0IHRhcmdldENvbnRleHRQYXRoID0gb1RlbXBsYXRlQ29tcG9uZW50LmdldEVudGl0eVNldCgpXG5cdFx0XHQ/IGAvJHtvVGVtcGxhdGVDb21wb25lbnQuZ2V0RW50aXR5U2V0KCkhfWBcblx0XHRcdDogb1RlbXBsYXRlQ29tcG9uZW50LmdldENvbnRleHRQYXRoKCkhO1xuXHRcdGNvbnN0IG9WaWV3RGF0YU1vZGVsID0gbmV3IEpTT05Nb2RlbChtVmlld0RhdGEpLFxuXHRcdFx0b1ByZXByb2Nlc3NvclNldHRpbmdzID0ge1xuXHRcdFx0XHRiaW5kaW5nQ29udGV4dHM6IHtcblx0XHRcdFx0XHRjb250ZXh0UGF0aDogb01ldGFNb2RlbD8uY3JlYXRlQmluZGluZ0NvbnRleHQobVNldHRpbmdzLmNvbnRleHRQYXRoIHx8IHRhcmdldENvbnRleHRQYXRoKSxcblx0XHRcdFx0XHRjb252ZXJ0ZXJDb250ZXh0OiBvUGFnZU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiLCB1bmRlZmluZWQsIHsgbm9SZXNvbHZlOiB0cnVlIH0pLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBtVmlld0RhdGEgPyBvVmlld0RhdGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikgOiBudWxsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdG1vZGVsczoge1xuXHRcdFx0XHRcdGNvbnRleHRQYXRoOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdGNvbnZlcnRlckNvbnRleHQ6IG9QYWdlTW9kZWwsXG5cdFx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0XHRcdHZpZXdEYXRhOiBvVmlld0RhdGFNb2RlbCxcblx0XHRcdFx0XHRcInNhcC5mZS5pMThuXCI6IGkxOG5Nb2RlbFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRhcHBDb21wb25lbnQ6IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh0aGlzLl92aWV3KVxuXHRcdFx0fTtcblxuXHRcdC8vIFdlIHNjb3BlIHRoZSBmcmFnbWVudCB3aXRoIG91ciBFeHRlbnNpb25BUEkuIElmIGEgY29udHJvbGxlciBvYmplY3QgaXMgcGFzc2VkIHdlIG1lcmdlIGl0IHdpdGggdGhlIGV4dGVuc2lvbkFQSVxuXHRcdGxldCBjb250cm9sbGVySW5zdGFuY2U6IEV4dGVuc2lvbkFQSTtcblx0XHRpZiAobVNldHRpbmdzLmNvbnRyb2xsZXIgJiYgIShtU2V0dGluZ3MuY29udHJvbGxlciBhcyBFeHRlbnNpb25BUEkpPy5pc0E/LihcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSkge1xuXHRcdFx0Y29uc3Qgc3ViQ2xhc3MgPSAoXG5cdFx0XHRcdHRoaXMuZ2V0TWV0YWRhdGEoKS5nZXRDbGFzcygpIGFzIHVua25vd24gYXMge1xuXHRcdFx0XHRcdGV4dGVuZDogKGlkOiBzdHJpbmcsIGNvbnRlbnQ6IG9iamVjdCkgPT4geyBuZXcgKHBhZ2VDb250cm9sbGVyOiBQYWdlQ29udHJvbGxlcik6IEV4dGVuc2lvbkFQSSB9O1xuXHRcdFx0XHR9XG5cdFx0XHQpLmV4dGVuZChtU2V0dGluZ3MuaWQgKyBcIi1jb250cm9sbGVyXCIsIHt9KTtcblx0XHRcdGZvciAoY29uc3QgY29udHJvbGxlckVsZW1lbnRLZXkgaW4gbVNldHRpbmdzLmNvbnRyb2xsZXIpIHtcblx0XHRcdFx0Y29uc3QgY29udHJvbGxlckVsZW1lbnQgPSBtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRpZiAoKGNvbnRyb2xsZXJFbGVtZW50IGFzIEZ1bmN0aW9uKT8uYmluZCkge1xuXHRcdFx0XHRcdGNvbnN0IGJvdW5kRnVuY3Rpb24gPSAoY29udHJvbGxlckVsZW1lbnQgYXMgRnVuY3Rpb24pLmJpbmQobVNldHRpbmdzLmNvbnRyb2xsZXIpO1xuXHRcdFx0XHRcdGlmIChvVGVtcGxhdGVDb21wb25lbnQpIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSAoLi4uYXJnczogdW5rbm93bltdKTogdW5rbm93biA9PiB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBvVGVtcGxhdGVDb21wb25lbnQucnVuQXNPd25lcigoKSA9PiBib3VuZEZ1bmN0aW9uLmFwcGx5KHRoaXMsIGFyZ3MpKTtcblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHN1YkNsYXNzLnByb3RvdHlwZVtjb250cm9sbGVyRWxlbWVudEtleV0gPSBib3VuZEZ1bmN0aW9uO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoc3ViQ2xhc3MucHJvdG90eXBlLCBjb250cm9sbGVyRWxlbWVudEtleSwge1xuXHRcdFx0XHRcdFx0Z2V0KCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gbVNldHRpbmdzLmNvbnRyb2xsZXI/Lltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNldCh2OiB1bmtub3duKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChtU2V0dGluZ3MuY29udHJvbGxlcikge1xuXHRcdFx0XHRcdFx0XHRcdChtU2V0dGluZ3MuY29udHJvbGxlcltjb250cm9sbGVyRWxlbWVudEtleSBhcyBrZXlvZiB0eXBlb2YgbVNldHRpbmdzLmNvbnRyb2xsZXJdIGFzIHVua25vd24pID0gdjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSBuZXcgc3ViQ2xhc3ModGhpcy5fY29udHJvbGxlcik7XG5cdFx0XHRjb25zdCBuZXdJc0EgPSBjb250cm9sbGVySW5zdGFuY2UuaXNBO1xuXHRcdFx0Y29udHJvbGxlckluc3RhbmNlLmlzQSA9IChjbGFzc05hbWU6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0XHQvLyBXZSBrZWVwIHRoZSBcdHNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSSBhcyBhIHZhbGlkIHR5cGUgZm9yIHRoaXMgbmV3IGNsYXNzXG5cdFx0XHRcdC8vIHRoaXMgdHlwZSBpcyBsb3N0IGFzIHNvb24gYXMgdGhlIG1lcmdlZCBjb250cm9sbGVyIG9iamVjdCBnZXRzIGEgbWV0aG9kIGlzQVxuXHRcdFx0XHRyZXR1cm4gbmV3SXNBLmJpbmQoY29udHJvbGxlckluc3RhbmNlKShjbGFzc05hbWUpIHx8IHRoaXMuaXNBKGNsYXNzTmFtZSk7XG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb250cm9sbGVySW5zdGFuY2UgPSAobVNldHRpbmdzLmNvbnRyb2xsZXIgYXMgRXh0ZW5zaW9uQVBJKSA/PyB0aGlzO1xuXHRcdH1cblx0XHRyZXR1cm4gb1RlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoYXN5bmMgKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb1RlbXBsYXRlUHJvbWlzZSA9IENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KG1TZXR0aW5ncy5uYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIHtcblx0XHRcdFx0Y29udHJvbGxlcjogY29udHJvbGxlckluc3RhbmNlLFxuXHRcdFx0XHRpc1hNTDogZmFsc2UsXG5cdFx0XHRcdGlkOiBtU2V0dGluZ3MuaWQsXG5cdFx0XHRcdGNvbnRhaW5pbmdWaWV3OiB0aGlzLl92aWV3LFxuXHRcdFx0XHRjb250ZXh0UGF0aDogbVNldHRpbmdzLmNvbnRleHRQYXRoID8/IHRhcmdldENvbnRleHRQYXRoXG5cdFx0XHR9KSBhcyBQcm9taXNlPENvbnRyb2w+O1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3Qgb0ZyYWdtZW50OiBDb250cm9sID0gYXdhaXQgb1RlbXBsYXRlUHJvbWlzZTtcblx0XHRcdFx0aWYgKG1TZXR0aW5ncy5pbml0aWFsQmluZGluZ0NvbnRleHQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdG9GcmFnbWVudC5zZXRCaW5kaW5nQ29udGV4dChtU2V0dGluZ3MuaW5pdGlhbEJpbmRpbmdDb250ZXh0KTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudChvRnJhZ21lbnQpO1xuXHRcdFx0XHRyZXR1cm4gb0ZyYWdtZW50O1xuXHRcdFx0fSBjYXRjaCAob0Vycm9yKSB7XG5cdFx0XHRcdExvZy5lcnJvcihvRXJyb3IgYXMgc3RyaW5nKTtcblx0XHRcdH1cblx0XHR9KSBhcyBQcm9taXNlPFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10+O1xuXHR9XG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIHVwZGF0ZSBvZiB0aGUgYXBwIHN0YXRlLlxuXHQgKiBTaG91bGQgYmUgY2FsbGVkIGlmIHRoZSBzdGF0ZSBvZiBhIGNvbnRyb2wsIG9yIGFueSBvdGhlciBzdGF0ZS1yZWxldmFudCBpbmZvcm1hdGlvbiwgd2FzIGNoYW5nZWQuXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHdpdGggdGhlIG5ldyBhcHAgc3RhdGUgb2JqZWN0LlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRhc3luYyB1cGRhdGVBcHBTdGF0ZSgpOiBQcm9taXNlPHZvaWQgfCB7IGFwcFN0YXRlOiBvYmplY3QgfCB1bmRlZmluZWQgfT4ge1xuXHRcdGNvbnN0IHZpZXcgPSB0aGlzLl9jb250cm9sbGVyLmdldFZpZXcoKTtcblx0XHRjb25zdCBhcHBDb21wb25lbnQgPSB0aGlzLl9jb250cm9sbGVyLmdldEFwcENvbXBvbmVudCgpO1xuXHRcdGNvbnN0IGFwcFN0YXRlSW5mbyA9IGF3YWl0IGFwcENvbXBvbmVudC5nZXRBcHBTdGF0ZUhhbmRsZXIoKS5jcmVhdGVBcHBTdGF0ZSh7XG5cdFx0XHR2aWV3SWQ6IHZpZXcuZ2V0SWQoKVxuXHRcdH0pO1xuXHRcdHJldHVybiBhcHBTdGF0ZUluZm8/LmFwcFN0YXRlRGF0YTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSdW4gdGhlIGdpdmVuIGZ1bmN0aW9uIHdpdGggdGhlIEZQTSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHBhZ2UuXG5cdCAqIFRoaXMgYWxsb3dzIHRvIGluaXRpYWxpemUgYWxsIHRoZSBlbGVtZW50cyByZXF1aXJlZCBieSBidWlsZGluZyBibG9ja3MgdG8gcmVuZGVyIGNvcnJlY3RseS5cblx0ICogQHBhcmFtIGZuIFRoZSBGdW5jdGlvbiB0byBiZSBleGVjdXRlZFxuXHQgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHRydW5XaXRoRlBNQ29udGV4dChmbjogRnVuY3Rpb24pOiB1bmtub3duIHtcblx0XHRjb25zdCB0ZW1wbGF0ZUNvbXBvbmVudCA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcih0aGlzLl92aWV3KSBhcyBFbmhhbmNlV2l0aFVJNTxUZW1wbGF0ZUNvbXBvbmVudD47XG5cdFx0cmV0dXJuIHRlbXBsYXRlQ29tcG9uZW50LnJ1bkFzT3duZXIoZm4gYXMgVFNGdW5jdGlvbik7XG5cdH1cblxuXHQvKipcblx0ICogV2F0Y2ggYSBwcm9wZXJ0eSBmcm9tIHRoZSBtYWluIHBhZ2UgY29udGV4dCBhbmQgdHJpZ2dlciBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHdhdGNoXG5cdCAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2sgdG8gdHJpZ2dlciB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHdhdGNoUHJvcGVydHkocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiBXYXRjaGVyQ2FsbGJhY2spOiB2b2lkIHtcblx0XHR0aGlzLl92aWV3LmFkZERlcGVuZGVudChcblx0XHRcdG5ldyBEYXRhV2F0Y2hlcih7XG5cdFx0XHRcdHByb3BlcnR5QmluZGluZzogY29tcGlsZUV4cHJlc3Npb24ocGF0aEluTW9kZWwocHJvcGVydHlOYW1lKSksXG5cdFx0XHRcdHZhbHVlQ2hhbmdlZDogKGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRjYWxsYmFjayhlLmdldFBhcmFtZXRlcihcInZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcIm9sZFZhbHVlXCIpLCBlLmdldFBhcmFtZXRlcihcImlzSW5pdGlhbFwiKSwgZS5nZXRQYXJhbWV0ZXIoXCJjb250ZXh0XCIpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEV4dGVuc2lvbkFQSTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7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
@@ -23,6 +23,7 @@ import type Model from "sap/ui/model/Model";
23
23
  import JSONModel from "sap/ui/model/json/JSONModel";
24
24
  import type ODataV4Context from "sap/ui/model/odata/v4/Context";
25
25
  import type { TSFunction } from "../../../../../../types/extension_types";
26
+ import type InternalIntentBasedNavigation from "./controllerextensions/InternalIntentBasedNavigation";
26
27
 
27
28
  /**
28
29
  * Common Extension API for all pages of SAP Fiori elements for OData V4.
@@ -64,6 +65,8 @@ class ExtensionAPI extends BaseObject {
64
65
 
65
66
  private _routing: InternalRouting;
66
67
 
68
+ private _intentBasedNavigation: InternalIntentBasedNavigation;
69
+
67
70
  private _prefix?: string;
68
71
 
69
72
  private extension: Record<string, unknown>;
@@ -75,8 +78,11 @@ class ExtensionAPI extends BaseObject {
75
78
  this.extension = this._controller.extension;
76
79
  this.editFlow = this._controller.editFlow;
77
80
  this.routing = this._controller.routing;
78
- this._routing = this._controller._routing;
79
81
  this.intentBasedNavigation = this._controller.intentBasedNavigation;
82
+
83
+ // Setting internal controller extensions for default building block handler to work when using ExtensionAPI as controller in custom fragment scnearios.
84
+ this._routing = this._controller._routing;
85
+ this._intentBasedNavigation = this._controller._intentBasedNavigation;
80
86
  this._prefix = sId;
81
87
  }
82
88