@sapui5/sap.fe.core 1.136.7 → 1.136.9

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 (56) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +28 -16
  4. package/src/sap/fe/core/AppComponent.ts +36 -20
  5. package/src/sap/fe/core/AppStateHandler.js +6 -5
  6. package/src/sap/fe/core/AppStateHandler.ts +5 -5
  7. package/src/sap/fe/core/CommonUtils.js +22 -2
  8. package/src/sap/fe/core/CommonUtils.ts +22 -4
  9. package/src/sap/fe/core/ExtensionAPI.js +5 -2
  10. package/src/sap/fe/core/ExtensionAPI.ts +7 -1
  11. package/src/sap/fe/core/PageController.js +4 -4
  12. package/src/sap/fe/core/PageController.ts +3 -3
  13. package/src/sap/fe/core/TemplateComponent.js +3 -3
  14. package/src/sap/fe/core/TemplateComponent.ts +2 -2
  15. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +6 -2
  16. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +8 -1
  17. package/src/sap/fe/core/controllerextensions/EditFlow.js +159 -34
  18. package/src/sap/fe/core/controllerextensions/EditFlow.ts +177 -39
  19. package/src/sap/fe/core/controllerextensions/SideEffects.js +7 -3
  20. package/src/sap/fe/core/controllerextensions/SideEffects.ts +2 -2
  21. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +28 -17
  22. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +35 -18
  23. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +5 -2
  24. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +3 -1
  25. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +13 -9
  26. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +13 -9
  27. package/src/sap/fe/core/converters/annotations/DataField.js +6 -2
  28. package/src/sap/fe/core/converters/annotations/DataField.ts +5 -1
  29. package/src/sap/fe/core/converters/controls/Common/Action.js +5 -5
  30. package/src/sap/fe/core/converters/controls/Common/Action.ts +7 -4
  31. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +6 -5
  32. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +5 -4
  33. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +2 -2
  34. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +1 -1
  35. package/src/sap/fe/core/fpm/manifest.json +1 -1
  36. package/src/sap/fe/core/helpers/DeleteHelper.js +8 -9
  37. package/src/sap/fe/core/helpers/DeleteHelper.ts +10 -8
  38. package/src/sap/fe/core/library.js +3 -7
  39. package/src/sap/fe/core/library.ts +5 -21
  40. package/src/sap/fe/core/messagebundle_da.properties +3 -3
  41. package/src/sap/fe/core/messagebundle_es.properties +1 -1
  42. package/src/sap/fe/core/messagebundle_fr.properties +9 -9
  43. package/src/sap/fe/core/messagebundle_hu.properties +1 -1
  44. package/src/sap/fe/core/messagebundle_id.properties +1 -1
  45. package/src/sap/fe/core/messagebundle_ja.properties +1 -1
  46. package/src/sap/fe/core/messagebundle_lv.properties +1 -1
  47. package/src/sap/fe/core/messagebundle_uk.properties +1 -1
  48. package/src/sap/fe/core/messagebundle_zh_CN.properties +1 -1
  49. package/src/sap/fe/core/rootView/RootViewBaseController.js +17 -17
  50. package/src/sap/fe/core/rootView/RootViewBaseController.ts +24 -29
  51. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +13 -6
  52. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +17 -5
  53. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  54. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  55. package/src/sap/fe/core/templating/UIFormatters.js +2 -2
  56. package/src/sap/fe/core/templating/UIFormatters.ts +1 -1
@@ -156,7 +156,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
156
156
  let fromApplySettings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
157
157
  const owner = this._getOwner();
158
158
  if (owner) {
159
- this.onMetadataAvailable(owner);
159
+ try {
160
+ this.onMetadataAvailable(owner);
161
+ } catch (err) {
162
+ Log.error(`Error creating content for building block ${this.getMetadata().getName()} with ID: ${this.getId()}`, err);
163
+ }
160
164
  if (this.isA("sap.fe.core.controllerextensions.viewState.IViewStateContributor")) {
161
165
  this.getPageController()?.viewState.registerStateContributor(this);
162
166
  }
@@ -285,4 +289,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/BuildingBlockBase", "sap/fe/base/Cla
285
289
  }), _class2)) || _class);
286
290
  return BuildingBlock;
287
291
  }, false);
288
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0aWYgKCFjb250ZXh0UGF0aFRvVXNlLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlICsgXCIvXCIpO1xuXHRcdFx0fVxuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNBQVlVLFFBQXNELEVBQUVDLE1BQTJDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hIQSxLQUFBLEdBQUFILGtCQUFBLENBQUFJLElBQUEsT0FBTUgsUUFBUSxFQUFFQyxNQUFNLENBQUM7TUFYeEI7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsZUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FNVUksaUJBQWlCLEdBQUcsS0FBSztNQU1sQ0osS0FBQSxDQUFLSyxpQkFBaUIsQ0FBQyxDQUFDO01BQUMsT0FBQUwsS0FBQTtJQUMxQjtJQUFDTSxjQUFBLENBQUFsQixhQUFBLEVBQUFTLGtCQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBbkIsYUFBQSxDQUFBb0IsU0FBQTtJQUFBRCxNQUFBLENBRVFFLGFBQWEsR0FBdEIsU0FBU0EsYUFBYUEsQ0FBQ0MsU0FBaUMsRUFBRUMsTUFBZSxFQUFRO01BQ2hGLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsSUFBSTtNQUM3QlAsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNQyxhQUFhLENBQUFSLElBQUEsT0FBQ1MsU0FBUyxFQUFFQyxNQUFNO01BQ3JDLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsS0FBSztNQUM5QixJQUFJLENBQUNRLHFCQUFxQixDQUFDLElBQUksQ0FBQztNQUVoQyxPQUFPLElBQUk7SUFDWixDQUFDO0lBQUFMLE1BQUEsQ0FFREYsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQSxFQUF3QjtNQUFBLElBQXZCUSxPQUFPLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLEtBQUs7TUFDaEMsTUFBTUcsYUFBYSxHQUFHN0IsYUFBYSxDQUFDOEIsY0FBYyxDQUFDQyxHQUFHLENBQUMsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxDQUFDO01BQ3BFLElBQUlILGFBQWEsSUFBSUEsYUFBYSxDQUFDRixNQUFNLEdBQUcsQ0FBQyxFQUFFO1FBQzlDLEtBQUssTUFBTU0sU0FBUyxJQUFJSixhQUFhLEVBQUU7VUFDdEMsSUFBSUosT0FBTyxFQUFFO1lBQ1osSUFBSVEsU0FBUyxDQUFDQyxTQUFTLEVBQUU7Y0FDeEJELFNBQVMsQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMxQjtVQUNELENBQUMsTUFBTSxJQUFJRCxTQUFTLENBQUNFLFdBQVcsRUFBRTtZQUNqQ0YsU0FBUyxDQUFDRSxXQUFXLENBQUMsSUFBSSxDQUFDO1VBQzVCO1FBQ0Q7TUFDRDtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTkM7SUFBQW5DLGFBQUEsQ0FPT29DLG9CQUFvQixHQUEzQixTQUFPQSxvQkFBb0JBLENBQUNDLEVBQVUsRUFBRUMsVUFBZ0MsRUFBUTtNQUMvRTtNQUNBLE1BQU1DLE9BQU8sR0FBR0MsZUFBZSxDQUFDVCxHQUFHLENBQUNNLEVBQUUsQ0FBQztNQUN2QztNQUNBLElBQUlFLE9BQU8sRUFBRTtRQUNaLElBQUlELFVBQVUsQ0FBQ0gsV0FBVyxFQUFFO1VBQzNCRyxVQUFVLENBQUNILFdBQVcsQ0FBQ0ksT0FBTyxDQUFDO1FBQ2hDO01BQ0QsQ0FBQyxNQUFNO1FBQ04sTUFBTVYsYUFBYSxHQUFHN0IsYUFBYSxDQUFDOEIsY0FBYyxDQUFDQyxHQUFHLENBQUNNLEVBQUUsQ0FBQztRQUMxRCxJQUFJUixhQUFhLEVBQUU7VUFDbEJBLGFBQWEsQ0FBQ1ksSUFBSSxDQUFDSCxVQUFVLENBQUM7UUFDL0IsQ0FBQyxNQUFNO1VBQ050QyxhQUFhLENBQUM4QixjQUFjLENBQUNZLEdBQUcsQ0FBQ0wsRUFBRSxFQUFFLENBQUNDLFVBQVUsQ0FBQyxDQUFDO1FBQ25EO01BQ0Q7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BUEM7SUFBQW5CLE1BQUEsQ0FTQXdCLFNBQVMsR0FBVCxTQUFBQSxTQUFTQSxDQUFBLEVBQWtDO01BQzFDO01BQ0EsSUFBSUMsT0FBNEIsR0FBRyxJQUFJO01BQ3ZDLElBQUlDLEtBQUssR0FBR0MsU0FBUyxDQUFDQyxvQkFBb0IsQ0FBQ0gsT0FBTyxDQUFDO01BQ25ELE9BQU8sQ0FBQ0MsS0FBSyxJQUFJRCxPQUFPLElBQUksQ0FBQ0EsT0FBTyxDQUFDSSxHQUFHLENBQVMsc0JBQXNCLENBQUMsRUFBRTtRQUN6RUosT0FBTyxHQUFHQSxPQUFPLENBQUNLLFNBQVMsQ0FBQyxDQUF3QjtRQUNwRCxJQUFJTCxPQUFPLEVBQUU7VUFDWkMsS0FBSyxHQUFHQyxTQUFTLENBQUNDLG9CQUFvQixDQUFDSCxPQUFPLENBQUM7UUFDaEQ7TUFDRDtNQUNBLElBQUlDLEtBQUssRUFBRUcsR0FBRyxDQUFvQiwrQkFBK0IsQ0FBQyxFQUFFO1FBQ25FLE9BQU9ILEtBQUs7TUFDYjtNQUNBLElBQUlBLEtBQUssRUFBRUcsR0FBRyxDQUFvQix5REFBeUQsQ0FBQyxFQUFFO1FBQzdGLE9BQU9ILEtBQUs7TUFDYjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0EsT0FKQztJQUFBMUIsTUFBQSxDQUtBK0IsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQSxFQUFrQztNQUFBLElBQWpDQyxRQUFRLEdBQUF6QixTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxJQUFJO01BQ2hDLE1BQU0wQixjQUFjLEdBQUcsSUFBSSxDQUFDVCxTQUFTLENBQUMsQ0FBQyxFQUFFVSxpQkFBaUIsR0FBRyxDQUFDO01BQzlELElBQUksQ0FBQ0QsY0FBYyxJQUFJRCxRQUFRLEVBQUU7UUFDaENHLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLHFDQUFxQyxDQUFDO01BQ2pEO01BQ0EsT0FBT0gsY0FBYztJQUN0QixDQUFDO0lBQUFqQyxNQUFBLENBRURxQyxZQUFZLEdBQVosU0FBQUEsWUFBWUEsQ0FBQSxFQUErQjtNQUMxQyxNQUFNWCxLQUFLLEdBQUcsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQztNQUM5QixJQUFJRSxLQUFLLEVBQUVHLEdBQUcsQ0FBb0IseURBQXlELENBQUMsRUFBRTtRQUM3RixJQUFJUyxTQUFTLEdBQUdaLEtBQUssRUFBRVcsWUFBWSxDQUFDLElBQUksQ0FBQ0MsU0FBUyxDQUFDO1FBQ25EO1FBQ0EsSUFBSSxDQUFDQSxTQUFTLElBQUksSUFBSSxDQUFDQSxTQUFTLEVBQUVDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRTtVQUNwREQsU0FBUyxHQUFHRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUNGLFNBQVMsQ0FBQztRQUM3QztRQUNBLE9BQU9BLFNBQVM7TUFDakIsQ0FBQyxNQUFNO1FBQ04sT0FBT1osS0FBSyxFQUFFVyxZQUFZLENBQUMsSUFBSSxDQUFDQyxTQUFTLENBQUM7TUFDM0M7SUFDRCxDQUFDO0lBQUF0QyxNQUFBLENBRVFNLE9BQU8sR0FBaEIsU0FBU0EsT0FBT0EsQ0FBQ21DLGtCQUE0QixFQUFRO01BQ3BELElBQUksSUFBSSxDQUFDWixHQUFHLENBQWlELGtFQUFrRSxDQUFDLEVBQUU7UUFDakksSUFBSSxDQUFDRSxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRVcsU0FBUyxFQUFFQywwQkFBMEIsQ0FBQyxJQUFJLENBQUM7TUFDM0U7TUFDQSxJQUFJLElBQUksQ0FBQ1osaUJBQWlCLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDbENhLHFDQUFxQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUNiLGlCQUFpQixDQUFDLENBQUUsQ0FBQztNQUN2RTtNQUNBLElBQUksQ0FBQ2pDLGlCQUFpQixDQUFDLElBQUksQ0FBQztNQUM1QlIsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNSyxPQUFPLENBQUFaLElBQUEsT0FBQytDLGtCQUFrQjtJQUNqQyxDQUFDO0lBQUF6QyxNQUFBLENBRURLLHFCQUFxQixHQUFyQixTQUFBQSxxQkFBcUJBLENBQUEsRUFBa0M7TUFBQSxJQUFqQ3dDLGlCQUFpQixHQUFBdEMsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQUUsU0FBQSxHQUFBRixTQUFBLE1BQUcsS0FBSztNQUM5QyxNQUFNbUIsS0FBSyxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDLENBQUM7TUFDOUIsSUFBSUUsS0FBSyxFQUFFO1FBQ1YsSUFBSSxDQUFDb0IsbUJBQW1CLENBQUNwQixLQUFLLENBQUM7UUFDL0IsSUFDQyxJQUFJLENBQUNHLEdBQUcsQ0FBaUQsa0VBQWtFLENBQUMsRUFDM0g7VUFDRCxJQUFJLENBQUNFLGlCQUFpQixDQUFDLENBQUMsRUFBRVcsU0FBUyxDQUFDSyx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7UUFDbkU7UUFDQSxJQUFJLElBQUksQ0FBQ2hCLGlCQUFpQixDQUFDLENBQUMsRUFBRTtVQUM3QmlCLG1DQUFtQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUNqQixpQkFBaUIsQ0FBQyxDQUFFLENBQUM7UUFDckU7TUFDRCxDQUFDLE1BQU07UUFDTixJQUFJLENBQUNjLGlCQUFpQixJQUFJLENBQUMsSUFBSSxDQUFDSSxPQUFPLEVBQUU7VUFDeEM7VUFDQWQsR0FBRyxDQUFDZSxPQUFPLENBQ1YscUlBQXFJLEVBQ3JJLElBQ0QsQ0FBQztRQUNGO1FBRUEsSUFBSSxDQUFDQyxlQUFlLENBQUMsb0JBQW9CLEVBQUUsWUFBcUM7VUFDL0UsSUFBSSxDQUFDOUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUM7TUFDSDtJQUNELENBQUM7SUFBQUwsTUFBQSxDQUVEb0QsS0FBSyxHQUFMLFNBQUFBLEtBQUtBLENBQUNDLFNBQWtCLEVBQUVDLFNBQW9CLEVBQVE7TUFDckQsTUFBTTVCLEtBQUssR0FBRyxJQUFJLENBQUNGLFNBQVMsQ0FBQyxDQUFDO01BQzlCLElBQUlFLEtBQUssRUFBRTtRQUNWLE9BQU9BLEtBQUssQ0FBQzZCLFVBQVUsQ0FBQyxNQUFNO1VBQzdCLE9BQUFqRSxrQkFBQSxDQUFBVyxTQUFBLENBQWFtRCxLQUFLLENBQUExRCxJQUFBLE9BQUMyRCxTQUFTLEVBQUVDLFNBQVM7UUFDeEMsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ04sT0FBQWhFLGtCQUFBLENBQUFXLFNBQUEsQ0FBYW1ELEtBQUssQ0FBQTFELElBQUEsT0FBQzJELFNBQVMsRUFBRUMsU0FBUztNQUN4QztJQUNELENBQUM7SUFBQXRELE1BQUEsQ0FFRDhDLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUNVLGVBQWtDLEVBQVE7TUFDN0Q7SUFBQSxDQUNBO0lBQUF4RCxNQUFBLENBRUR5RCxlQUFlLEdBQWYsU0FBQUEsZUFBZUEsQ0FBQSxFQUE2QjtNQUMzQyxNQUFNL0IsS0FBSyxHQUFHLElBQUksQ0FBQ0YsU0FBUyxDQUFDLENBQUM7TUFDOUIsT0FBT0UsS0FBSyxFQUFFK0IsZUFBZSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUFBekQsTUFBQSxDQUVEMEQsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBSUMsVUFBbUIsRUFBc0M7TUFDbEYsTUFBTXJCLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDO01BQ3JDLE1BQU11QixlQUFlLEdBQUdELFVBQVUsSUFBSSxJQUFJLENBQUNFLG1CQUFtQixDQUFDLENBQUM7TUFDaEUsT0FBT0Msd0NBQXdDLENBQUNGLGVBQWUsRUFBR3RCLFNBQVMsQ0FBQztJQUM3RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUF0QyxNQUFBLENBSUE2RCxtQkFBbUIsR0FBbkIsU0FBQUEsbUJBQW1CQSxDQUFBLEVBQXVCO01BQ3pDLE1BQU1uQyxLQUFLLEdBQUcsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBRTtNQUMvQixPQUFPRSxLQUFLLENBQUNxQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUN6QixTQUFTLENBQUM7SUFDaEQ7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQXRDLE1BQUEsQ0FNQWdFLDZCQUE2QixHQUE3QixTQUFBQSw2QkFBNkJBLENBQzVCQyxRQUFnQixFQUNoQkMsV0FBb0IsRUFDcUM7TUFDekQsTUFBTTVCLFNBQVMsR0FBRyxJQUFJLENBQUNELFlBQVksQ0FBQyxDQUFDO01BQ3JDLE1BQU04QixnQkFBZ0IsR0FBRyxJQUFJLENBQUNDLHNCQUFzQixDQUFDRixXQUFXLENBQUM7TUFFakUsSUFBSUcsbUJBQW1CO01BQ3ZCLElBQUlGLGdCQUFnQixFQUFFO1FBQ3JCRSxtQkFBbUIsR0FBR0YsZ0JBQWdCLENBQUNHLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBR0gsZ0JBQWdCLEdBQUdBLGdCQUFnQixHQUFHLEdBQUc7TUFDakc7TUFDQSxJQUFJLENBQUM3QixTQUFTLElBQUksRUFBRStCLG1CQUFtQixJQUFJSixRQUFRLENBQUNNLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUN2RSxNQUFNLElBQUlDLEtBQUssQ0FBQyw0REFBNEQsQ0FBQztNQUM5RTtNQUNBLElBQUlDLFdBQVcsR0FBR0osbUJBQW1CLEdBQUcvQixTQUFTLENBQUNvQyxvQkFBb0IsQ0FBQ0wsbUJBQW1CLENBQUMsR0FBRzVELFNBQVM7TUFDdkdnRSxXQUFXLEdBQUdBLFdBQVcsR0FBR0EsV0FBVyxHQUFHaEUsU0FBUztNQUNuRCxNQUFNa0UsZUFBZSxHQUFHckMsU0FBUyxDQUFDb0Msb0JBQW9CLENBQUNULFFBQVEsRUFBRVEsV0FBVyxDQUFDO01BQzdFLE9BQU9FLGVBQWUsR0FDbkJDLGtCQUFrQixDQUFDQywyQkFBMkIsQ0FBd0JGLGVBQWUsRUFBRUYsV0FBVyxDQUFDLEdBQ25HaEUsU0FBUztJQUNiLENBQUM7SUFBQVQsTUFBQSxDQUVEb0Usc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ0YsV0FBb0IsRUFBVTtNQUNwRCxJQUFJQyxnQkFBZ0IsR0FBR0QsV0FBVyxJQUFJLElBQUksQ0FBQ0wsbUJBQW1CLENBQUMsQ0FBRTtNQUNqRSxJQUFJTSxnQkFBZ0IsSUFBSSxDQUFDQSxnQkFBZ0IsQ0FBQzVCLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxRDRCLGdCQUFnQixHQUFHLElBQUksQ0FBQ04sbUJBQW1CLENBQUMsQ0FBQyxHQUFHTSxnQkFBZ0I7TUFDakU7TUFDQSxPQUFPQSxnQkFBZ0I7SUFDeEI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQW5FLE1BQUEsQ0FNQThFLGlCQUFpQixHQUFqQixTQUFBQSxpQkFBaUJBLENBQXdCQyxRQUFnQixFQUFFYixXQUFvQixFQUEwQztNQUN4SCxNQUFNNUIsU0FBUyxHQUFHLElBQUksQ0FBQ0QsWUFBWSxDQUFDLENBQUM7TUFDckMsTUFBTThCLGdCQUFnQixHQUFHLElBQUksQ0FBQ0Msc0JBQXNCLENBQUNGLFdBQVcsQ0FBQztNQUNqRSxJQUFJLENBQUM1QixTQUFTLElBQUksRUFBRTZCLGdCQUFnQixJQUFJWSxRQUFRLENBQUNSLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNwRXBDLEdBQUcsQ0FBQ2UsT0FBTyxDQUFDLGtEQUFrRGdCLFdBQVcsSUFBSWEsUUFBUSxFQUFFLENBQUM7UUFDeEYsT0FBTyxJQUFJO01BQ1o7TUFDQSxJQUFJO1FBQ0gsT0FBTyxJQUFJQyxRQUFRLENBQUNDLFlBQVksQ0FBQzNDLFNBQVMsQ0FBQyxFQUFFeUMsUUFBUSxFQUFFWixnQkFBZ0IsQ0FBQztNQUN6RSxDQUFDLENBQUMsT0FBT2UsQ0FBQyxFQUFFO1FBQ1gsSUFBSSxDQUFDZixnQkFBZ0IsQ0FBQ0csUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1VBQ3BDLE9BQU8sSUFBSSxDQUFDUSxpQkFBaUIsQ0FBd0JDLFFBQVEsRUFBRVosZ0JBQWdCLEdBQUcsR0FBRyxDQUFDO1FBQ3ZGO1FBQ0FoQyxHQUFHLENBQUNlLE9BQU8sQ0FBQyxrREFBa0RnQixXQUFXLElBQUlhLFFBQVEsRUFBRSxDQUFDO1FBQ3hGLE9BQU8sSUFBSTtNQUNaO0lBQ0QsQ0FBQztJQUFBL0UsTUFBQSxDQUVTbUYsUUFBUSxHQUFsQixTQUFVQSxRQUFRQSxDQUFBLEVBQWdIO01BQ2pJO01BQ0EsSUFBSSxJQUFJLENBQUN0RSxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQUEsU0FBQXVFLElBQUEsR0FBQTdFLFNBQUEsQ0FBQUMsTUFBQSxFQUZHNkUsV0FBVyxPQUFBQyxLQUFBLENBQUFGLElBQUEsR0FBQUcsSUFBQSxNQUFBQSxJQUFBLEdBQUFILElBQUEsRUFBQUcsSUFBQTtVQUFYRixXQUFXLENBQUFFLElBQUEsSUFBQWhGLFNBQUEsQ0FBQWdGLElBQUE7UUFBQTtRQUcvQixPQUFPQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMzRSxLQUFLLENBQUMsQ0FBQyxFQUFFLEdBQUd3RSxXQUFXLENBQUMsQ0FBQztNQUNoRDtNQUNBLE9BQU81RSxTQUFTO0lBQ2pCLENBQUM7SUFBQVQsTUFBQSxDQUVEeUYsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQ0MsTUFBYyxFQUFFdkUsVUFBc0IsRUFBRTRELFFBQWlCLEVBQVU7TUFDcEYsT0FDQyxDQUFFLElBQUksQ0FBQ1ksUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLElBQUksQ0FBQ25FLFNBQVMsQ0FBQyxDQUFDLEVBQUVtRSxRQUFRLENBQUMsYUFBYSxDQUFDLEdBQXFCQyxPQUFPLENBQ3RHRixNQUFNLEVBQ052RSxVQUFVLEVBQ1Y0RCxRQUNELENBQUMsSUFBSVcsTUFBTTtJQUViLENBQUM7SUFBQTFGLE1BQUEsQ0FFRDZGLGtCQUFrQixHQUFsQixTQUFBQSxrQkFBa0JBLENBQUEsRUFBZ0M7TUFDakQsT0FBTyxJQUFJLENBQUNyRSxTQUFTLENBQUMsQ0FBQyxFQUFFcUUsa0JBQWtCLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBQUE3RixNQUFBLENBRUQ4RixzQkFBc0IsR0FBdEIsU0FBQUEsc0JBQXNCQSxDQUFBLEVBQStCO01BQ3BELE9BQU8sSUFBSSxDQUFDdEUsU0FBUyxDQUFDLENBQUMsRUFBRXVFLG1CQUFtQixFQUFFQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFBQSxPQUFBbkgsYUFBQTtFQUFBLEVBcFJpRm9ILGlCQUFpQixHQUFBNUcsY0FBQSxDQVNwRnNCLGNBQWMsR0FBd0MsSUFBSXVGLEdBQUcsQ0FBQyxDQUFDLEVBQUE3RyxjQUFBLEdBQUFPLFdBQUEsR0FBQXVHLHlCQUFBLENBQUEvRyxPQUFBLENBQUFhLFNBQUEsZ0JBQUFqQixLQUFBO0lBQUFvSCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQW5ILE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BbVJoRU4sYUFBYTtBQUFBIiwiaWdub3JlTGlzdCI6W119
292
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCdWlsZGluZ0Jsb2NrIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0J1aWxkaW5nQmxvY2siLCJfQnVpbGRpbmdCbG9ja0Jhc2UiLCJzZXR0aW5ncyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXBwbHlpbmdTZXR0aW5ncyIsIm5vdGlmeUJCT2JzZXJ2ZXJzIiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJhcHBseVNldHRpbmdzIiwibVNldHRpbmdzIiwib1Njb3BlIiwiX2NoZWNrSWZNZXRhZGF0YVJlYWR5IiwiZGVzdHJveSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImJib2JzZXJ2ZXJNYXAiLCJfYmJvYnNlcnZlck1hcCIsImdldCIsImdldElkIiwib2JzZXJ2ZUJCIiwib25EZXN0cm95Iiwib25BdmFpbGFibGUiLCJvYnNlcnZlQnVpbGRpbmdCbG9jayIsImlkIiwicGFyYW1ldGVycyIsImVsZW1lbnQiLCJFbGVtZW50UmVnaXN0cnkiLCJwdXNoIiwic2V0IiwiX2dldE93bmVyIiwiY29udHJvbCIsIm93bmVyIiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJpc0EiLCJnZXRQYXJlbnQiLCJnZXRQYWdlQ29udHJvbGxlciIsImxvZ0Vycm9yIiwicGFnZUNvbnRyb2xsZXIiLCJnZXRSb290Q29udHJvbGxlciIsIkxvZyIsImVycm9yIiwiZ2V0TWV0YU1vZGVsIiwibWV0YU1vZGVsIiwic3RhcnRzV2l0aCIsImdldE1ldGFNb2RlbEJ5SWQiLCJzdXBwcmVzc0ludmFsaWRhdGUiLCJ2aWV3U3RhdGUiLCJkZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvciIsInJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMiLCJmcm9tQXBwbHlTZXR0aW5ncyIsIm9uTWV0YWRhdGFBdmFpbGFibGUiLCJlcnIiLCJnZXRNZXRhZGF0YSIsImdldE5hbWUiLCJyZWdpc3RlclN0YXRlQ29udHJpYnV0b3IiLCJpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyIsImNvbnRlbnQiLCJ3YXJuaW5nIiwiYXR0YWNoRXZlbnRPbmNlIiwiY2xvbmUiLCJzSWRTdWZmaXgiLCJhTG9jYWxJZHMiLCJydW5Bc093bmVyIiwiX293bmVyQ29tcG9uZW50IiwiZ2V0QXBwQ29tcG9uZW50IiwiZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aCIsInRhcmdldFBhdGgiLCJ0YXJnZXRQYXRoVG9Vc2UiLCJnZXRPd25lckNvbnRleHRQYXRoIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzRm9yVGFyZ2V0UGF0aCIsImdldEZ1bGxDb250ZXh0UGF0aCIsImdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoIiwibWV0YXBhdGgiLCJjb250ZXh0UGF0aCIsImNvbnRleHRQYXRoVG9Vc2UiLCJnZXRDb21wdXRlZENvbnRleHRQYXRoIiwicmVzb2x2ZWRDb250ZXh0UGF0aCIsImVuZHNXaXRoIiwiY2hhckF0IiwiRXJyb3IiLCJtZXRhQ29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0IiwibWV0YVBhdGhDb250ZXh0IiwiTWV0YU1vZGVsQ29udmVydGVyIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0TWV0YVBhdGhPYmplY3QiLCJtZXRhUGF0aCIsIk1ldGFQYXRoIiwiY29udmVydFR5cGVzIiwiZSIsImNyZWF0ZUlkIiwiX2xlbiIsInN0cmluZ1BhcnRzIiwiQXJyYXkiLCJfa2V5IiwiZ2VuZXJhdGUiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInRleHRJRCIsImdldE1vZGVsIiwiZ2V0VGV4dCIsImdldE1hbmlmZXN0V3JhcHBlciIsImdldE93bmVyUGFnZURlZmluaXRpb24iLCJwcmVwcm9jZXNzb3JDb250ZXh0IiwiZ2V0RGVmaW5pdGlvbkZvclBhZ2UiLCJCdWlsZGluZ0Jsb2NrQmFzZSIsIk1hcCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJjb25maWd1cmFibGUiLCJlbnVtZXJhYmxlIiwid3JpdGFibGUiLCJpbml0aWFsaXplciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiQnVpbGRpbmdCbG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2Jhc2UvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZGVmaW5lVUk1Q2xhc3MsIHByb3BlcnR5IH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgaW5pdENvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMsIHJlbW92ZUNvbnRyb2xsZXJFeHRlbnNpb25Ib29rSGFuZGxlcnMgfSBmcm9tIFwic2FwL2ZlL2Jhc2UvSG9va1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgRkVWaWV3IH0gZnJvbSBcInNhcC9mZS9jb3JlL0Jhc2VDb250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIFJlc291cmNlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1Jlc291cmNlTW9kZWxcIjtcbmltcG9ydCB0eXBlIFRlbXBsYXRlQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZUNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy92aWV3U3RhdGUvSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCI7XG5pbXBvcnQgdHlwZSBNYW5pZmVzdFdyYXBwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBNZXRhTW9kZWxDb252ZXJ0ZXIgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0VHlwZXMsIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgsIGdldE1ldGFNb2RlbEJ5SWQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRGVmaW5pdGlvblBhZ2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvZGVmaW5pdGlvbi9GRURlZmluaXRpb25cIjtcbmltcG9ydCBNZXRhUGF0aCBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhUGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBBdXRob3JpemVkSWRBbm5vdGF0aW9uc1R5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IHR5cGUgeyAkTWFuYWdlZE9iamVjdFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEVsZW1lbnRSZWdpc3RyeSBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFJlZ2lzdHJ5XCI7XG5cbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIEFwcENvbXBvbmVudCBmcm9tIFwiLi4vQXBwQ29tcG9uZW50XCI7XG5cbmV4cG9ydCB0eXBlIE9ic2VydmVCdWlsZGluZ0Jsb2NrID0ge1xuXHRvbkF2YWlsYWJsZT86IChiYjogVUk1RWxlbWVudCkgPT4gdm9pZDtcblx0b25EZXN0cm95PzogKGJiOiBVSTVFbGVtZW50KSA9PiB2b2lkO1xufTtcbi8qKlxuICogRGVmaW5lcyBhIGNvbnRyb2wgdGhhdCB3aWxsIG5vdCBleGlzdCBpbiB0aGUgRE9NLlxuICogSW5zdGVhZCwgb25seSBpdHMgY2hpbGQgd2lsbCBiZSB0aGVyZSBhbmQgdGhpcyBjb250cm9sIHdpbGwgZm9yd2FyZCBhbGwgRE9NIHJlbGF0ZWQgaW5zdHJ1Y3Rpb24gdG8gaXQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKiBAc2luY2UgMS4xMjEuMFxuICogQHB1YmxpY1xuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5CdWlsZGluZ0Jsb2NrXCIpXG5jbGFzcyBCdWlsZGluZ0Jsb2NrPFQgZXh0ZW5kcyBVSTVFbGVtZW50ID0gQ29udHJvbCwgSyBleHRlbmRzIG9iamVjdCA9IHt9PiBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlPFQsIEs+IHtcblx0LyoqXG5cdCAqIFRoZSBtZXRhbW9kZWwgbmFtZSBvciBpZCB0byBiZSB1c2VkIGZvciB0aGlzIGJ1aWxkaW5nIGJsb2NrXG5cdCAqL1xuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdG1ldGFNb2RlbD86IHN0cmluZztcblxuXHRwcm90ZWN0ZWQgX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblxuXHRwcml2YXRlIHN0YXRpYyBfYmJvYnNlcnZlck1hcDogTWFwPHN0cmluZywgT2JzZXJ2ZUJ1aWxkaW5nQmxvY2tbXT4gPSBuZXcgTWFwKCk7XG5cblx0Y29uc3RydWN0b3Ioc2V0dGluZ3M/OiBzdHJpbmcgfCBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+LCBvdGhlcnM/OiBQcm9wZXJ0aWVzT2Y8QnVpbGRpbmdCbG9ja0Jhc2U8VD4+KSB7XG5cdFx0c3VwZXIoc2V0dGluZ3MsIG90aGVycyk7XG5cdFx0dGhpcy5ub3RpZnlCQk9ic2VydmVycygpO1xuXHR9XG5cblx0b3ZlcnJpZGUgYXBwbHlTZXR0aW5ncyhtU2V0dGluZ3M6ICRNYW5hZ2VkT2JqZWN0U2V0dGluZ3MsIG9TY29wZT86IG9iamVjdCk6IHRoaXMge1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSB0cnVlO1xuXHRcdHN1cGVyLmFwcGx5U2V0dGluZ3MobVNldHRpbmdzLCBvU2NvcGUpO1xuXHRcdHRoaXMuX2FwcGx5aW5nU2V0dGluZ3MgPSBmYWxzZTtcblx0XHR0aGlzLl9jaGVja0lmTWV0YWRhdGFSZWFkeSh0cnVlKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0bm90aWZ5QkJPYnNlcnZlcnMoZGVzdHJveSA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KHRoaXMuZ2V0SWQoKSk7XG5cdFx0aWYgKGJib2JzZXJ2ZXJNYXAgJiYgYmJvYnNlcnZlck1hcC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb3IgKGNvbnN0IG9ic2VydmVCQiBvZiBiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGlmIChkZXN0cm95KSB7XG5cdFx0XHRcdFx0aWYgKG9ic2VydmVCQi5vbkRlc3Ryb3kpIHtcblx0XHRcdFx0XHRcdG9ic2VydmVCQi5vbkRlc3Ryb3kodGhpcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKG9ic2VydmVCQi5vbkF2YWlsYWJsZSkge1xuXHRcdFx0XHRcdG9ic2VydmVCQi5vbkF2YWlsYWJsZSh0aGlzKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBBbGxvd3MgdG8gb2JzZXJ2ZSBidWlsZGluZyBibG9jayBvbmNlIGl0IGlzIGNyZWF0ZWQuXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIHdoaWNoIHdpbGwgYmUgb2JzZXJ2ZWRcblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcGFyYW0gcGFyYW1ldGVycy5vbkF2YWlsYWJsZSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgYXZhaWxhYmxlXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzLm9uRGVzdHJveSBDYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgaW5zdGFuY2Ugb2YgdGhlIEJCIHdoZW4gaXQgaXMgZGVzdHJveWVkXG5cdCAqL1xuXHRzdGF0aWMgb2JzZXJ2ZUJ1aWxkaW5nQmxvY2soaWQ6IHN0cmluZywgcGFyYW1ldGVyczogT2JzZXJ2ZUJ1aWxkaW5nQmxvY2spOiB2b2lkIHtcblx0XHQvL2lmIChwYXJhbWV0ZXJzKVxuXHRcdGNvbnN0IGVsZW1lbnQgPSBFbGVtZW50UmVnaXN0cnkuZ2V0KGlkKTtcblx0XHQvLyBpZiB0aGUgZWxlbWVudCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWRcblx0XHRpZiAoZWxlbWVudCkge1xuXHRcdFx0aWYgKHBhcmFtZXRlcnMub25BdmFpbGFibGUpIHtcblx0XHRcdFx0cGFyYW1ldGVycy5vbkF2YWlsYWJsZShlbGVtZW50KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3QgYmJvYnNlcnZlck1hcCA9IEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuZ2V0KGlkKTtcblx0XHRcdGlmIChiYm9ic2VydmVyTWFwKSB7XG5cdFx0XHRcdGJib2JzZXJ2ZXJNYXAucHVzaChwYXJhbWV0ZXJzKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEJ1aWxkaW5nQmxvY2suX2Jib2JzZXJ2ZXJNYXAuc2V0KGlkLCBbcGFyYW1ldGVyc10pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGluc3RhbmNlIG9mIGEgYnVpbGRpbmcgYmxvY2sgYmFzZWQgb25jZSBpdCBpcyByZWdpc3RlcmVkLlxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBidWlsZGluZyBibG9jayB3aGljaCBpcyBiZWluZyByZXF1c3RlZFxuXHQgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmVkIHdpdGggYW4gaW5zdGFuY2Ugb2YgdGhlIGJ1aWxkaW5nIGJsb2NrIG9uY2UgaXQgaXMgcmVnaXN0ZXJlZC9pbnN0YW50aWVkLlxuXHQgKiBcdCBUaGUgcHJvbWlzZSBpcyByZXNvbHZlZCB3aGVuIHRoZSBidWlsZGluZyBibG9jayBpcyBpbnRhbnRpZWQgaGVuY2UgaXQgcmVjb21tZW5kZWQgdG8gb25seSBhd2FpdCBvbiB0aGUgcHJvbWlzZVxuXHQgKiBcdCB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGJ1aWxkaW5nIGJsb2NrIHdpbGwgYmUgYXZhaWxhYmxlLiBJbiBjYXNlcyBoZXJlIHRoZSBidWlsZGluZyBibG9jayBtaWdodCBub3QgYmUgYXZhaWxhYmxlLFxuXHQgKiBcdCBmb3IgZXhhbXBsZSBiZWN1YXNlIG9mIGxhenkgbG9hZGluZywgdGhlbiBpdCBpcyByZWNvbW1lbmRlZCBub3QgdG8gYXdhaXQgb24gdGhlIHByb21pc2UgYW5kIGluc3RlYWQgdXNlIFByb21pc2UudGhlbigpLlxuXHQgKi9cblxuXHRfZ2V0T3duZXIoKTogVGVtcGxhdGVDb21wb25lbnQgfCB1bmRlZmluZWQge1xuXHRcdC8vZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby10aGlzLWFsaWFzXG5cdFx0bGV0IGNvbnRyb2w6IENvbnRyb2wgfCB1bmRlZmluZWQgPSB0aGlzO1xuXHRcdGxldCBvd25lciA9IENvbXBvbmVudC5nZXRPd25lckNvbXBvbmVudEZvcihjb250cm9sKTtcblx0XHR3aGlsZSAoIW93bmVyICYmIGNvbnRyb2wgJiYgIWNvbnRyb2wuaXNBPEZFVmlldz4oXCJzYXAudWkuY29yZS5tdmMuVmlld1wiKSkge1xuXHRcdFx0Y29udHJvbCA9IGNvbnRyb2wuZ2V0UGFyZW50KCkgYXMgQ29udHJvbCB8IHVuZGVmaW5lZDtcblx0XHRcdGlmIChjb250cm9sKSB7XG5cdFx0XHRcdG93bmVyID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKGNvbnRyb2wpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5UZW1wbGF0ZUNvbXBvbmVudFwiKSkge1xuXHRcdFx0cmV0dXJuIG93bmVyO1xuXHRcdH1cblx0XHRpZiAob3duZXI/LmlzQTxUZW1wbGF0ZUNvbXBvbmVudD4oXCJzYXAuZmUuY29yZS5idWlsZGluZ0Jsb2Nrcy5JQnVpbGRpbmdCbG9ja093bmVyQ29tcG9uZW50XCIpKSB7XG5cdFx0XHRyZXR1cm4gb3duZXI7XG5cdFx0fVxuXHR9XG5cblx0Lypcblx0ICogR2V0IHRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICogQHBhcmFtIGxvZ0Vycm9yIFdoZXRoZXIgdG8gbG9nIGFuIGVycm9yIGlmIHRoZSBwYWdlIGNvbnRyb2xsZXIgaXMgbm90IGZvdW5kXG5cdCAqIEByZXR1cm5zIFRoZSBwYWdlIGNvbnRyb2xsZXIgaW5zdGFuY2Vcblx0ICovXG5cdGdldFBhZ2VDb250cm9sbGVyKGxvZ0Vycm9yID0gdHJ1ZSk6IFBhZ2VDb250cm9sbGVyIHtcblx0XHRjb25zdCBwYWdlQ29udHJvbGxlciA9IHRoaXMuX2dldE93bmVyKCk/LmdldFJvb3RDb250cm9sbGVyPy4oKTtcblx0XHRpZiAoIXBhZ2VDb250cm9sbGVyICYmIGxvZ0Vycm9yKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJObyBzYXAuZmUuY29yZS5QYWdlQ29udHJvbGxlciBmb3VuZFwiKTtcblx0XHR9XG5cdFx0cmV0dXJuIHBhZ2VDb250cm9sbGVyITtcblx0fVxuXG5cdGdldE1ldGFNb2RlbCgpOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcj8uaXNBPFRlbXBsYXRlQ29tcG9uZW50PihcInNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLklCdWlsZGluZ0Jsb2NrT3duZXJDb21wb25lbnRcIikpIHtcblx0XHRcdGxldCBtZXRhTW9kZWwgPSBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdC8vIEZhbGxiYWNrIGluIGNhc2UgdGhleSBkb24ndCBhcHBseSB0aGUgbG9naWMgZm9yIHRoZSBtZXRhbW9kZWwgY29udmVydGVyXG5cdFx0XHRpZiAoIW1ldGFNb2RlbCAmJiB0aGlzLm1ldGFNb2RlbD8uc3RhcnRzV2l0aChcImlkLVwiKSkge1xuXHRcdFx0XHRtZXRhTW9kZWwgPSBnZXRNZXRhTW9kZWxCeUlkKHRoaXMubWV0YU1vZGVsKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBtZXRhTW9kZWw7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBvd25lcj8uZ2V0TWV0YU1vZGVsKHRoaXMubWV0YU1vZGVsKTtcblx0XHR9XG5cdH1cblxuXHRvdmVycmlkZSBkZXN0cm95KHN1cHByZXNzSW52YWxpZGF0ZT86IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAodGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpKSB7XG5cdFx0XHR0aGlzLmdldFBhZ2VDb250cm9sbGVyKGZhbHNlKT8udmlld1N0YXRlPy5kZXJlZ2lzdGVyU3RhdGVDb250cmlidXRvcih0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoZmFsc2UpKSB7XG5cdFx0XHRyZW1vdmVDb250cm9sbGVyRXh0ZW5zaW9uSG9va0hhbmRsZXJzKHRoaXMsIHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSEpO1xuXHRcdH1cblx0XHR0aGlzLm5vdGlmeUJCT2JzZXJ2ZXJzKHRydWUpO1xuXHRcdHN1cGVyLmRlc3Ryb3koc3VwcHJlc3NJbnZhbGlkYXRlKTtcblx0fVxuXG5cdF9jaGVja0lmTWV0YWRhdGFSZWFkeShmcm9tQXBwbHlTZXR0aW5ncyA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dGhpcy5vbk1ldGFkYXRhQXZhaWxhYmxlKG93bmVyKTtcblx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFx0YEVycm9yIGNyZWF0aW5nIGNvbnRlbnQgZm9yIGJ1aWxkaW5nIGJsb2NrICR7dGhpcy5nZXRNZXRhZGF0YSgpLmdldE5hbWUoKX0gd2l0aCBJRDogJHt0aGlzLmdldElkKCl9YCxcblx0XHRcdFx0XHRlcnIgYXMgRXJyb3Jcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHRcdGlmIChcblx0XHRcdFx0dGhpcy5pc0E8SVZpZXdTdGF0ZUNvbnRyaWJ1dG9yPHVua25vd24+ICYgTWFuYWdlZE9iamVjdD4oXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy52aWV3U3RhdGUuSVZpZXdTdGF0ZUNvbnRyaWJ1dG9yXCIpXG5cdFx0XHQpIHtcblx0XHRcdFx0dGhpcy5nZXRQYWdlQ29udHJvbGxlcigpPy52aWV3U3RhdGUucmVnaXN0ZXJTdGF0ZUNvbnRyaWJ1dG9yKHRoaXMpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuZ2V0UGFnZUNvbnRyb2xsZXIoKSkge1xuXHRcdFx0XHRpbml0Q29udHJvbGxlckV4dGVuc2lvbkhvb2tIYW5kbGVycyh0aGlzLCB0aGlzLmdldFBhZ2VDb250cm9sbGVyKCkhKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYgKCFmcm9tQXBwbHlTZXR0aW5ncyAmJiAhdGhpcy5jb250ZW50KSB7XG5cdFx0XHRcdC8vIEluIGNhc2UgY291bGRuJ3QgY3JlYXRlIHRoZSBjb250ZW50IGR1cmluZyB0aGUgYXBwbHlTZXR0aW5ncywgdHJ5IGFnYWluXG5cdFx0XHRcdExvZy53YXJuaW5nKFxuXHRcdFx0XHRcdFwiVGhlIGJ1aWxkaW5nIGJsb2NrIHdhcyBub3QgY3JlYXRlZCB3aXRoaW4gYW4gRXh0ZW5zaW9uQVBJLnJ1bldpdGhGUE1Db250ZXh0IGNhbGwsIGZvciBwZXJmb3JtYW5jZSByZWFzb24gaXQncyByZWNvbW1lbmRlZCB0byBkbyBzby5cIixcblx0XHRcdFx0XHR0aGlzIGFzIHVua25vd24gYXMgc3RyaW5nXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuYXR0YWNoRXZlbnRPbmNlKFwibW9kZWxDb250ZXh0Q2hhbmdlXCIsIGZ1bmN0aW9uICh0aGlzOiBCdWlsZGluZ0Jsb2NrKTogdm9pZCB7XG5cdFx0XHRcdHRoaXMuX2NoZWNrSWZNZXRhZGF0YVJlYWR5KCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRjbG9uZShzSWRTdWZmaXg/OiBzdHJpbmcsIGFMb2NhbElkcz86IHN0cmluZ1tdKTogdGhpcyB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdGlmIChvd25lcikge1xuXHRcdFx0cmV0dXJuIG93bmVyLnJ1bkFzT3duZXIoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gc3VwZXIuY2xvbmUoc0lkU3VmZml4LCBhTG9jYWxJZHMpO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzdXBlci5jbG9uZShzSWRTdWZmaXgsIGFMb2NhbElkcyk7XG5cdFx0fVxuXHR9XG5cblx0b25NZXRhZGF0YUF2YWlsYWJsZShfb3duZXJDb21wb25lbnQ6IFRlbXBsYXRlQ29tcG9uZW50KTogdm9pZCB7XG5cdFx0Ly8gVG8gYmUgb3ZlcnJpZGVuIGJ5IHRoZSBjaGlsZCBjbGFzc1xuXHR9XG5cblx0Z2V0QXBwQ29tcG9uZW50KCk6IEFwcENvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3Qgb3duZXIgPSB0aGlzLl9nZXRPd25lcigpO1xuXHRcdHJldHVybiBvd25lcj8uZ2V0QXBwQ29tcG9uZW50KCk7XG5cdH1cblxuXHRnZXREYXRhTW9kZWxPYmplY3RQYXRoPE4+KHRhcmdldFBhdGg/OiBzdHJpbmcpOiBEYXRhTW9kZWxPYmplY3RQYXRoPE4+IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBtZXRhTW9kZWwgPSB0aGlzLmdldE1ldGFNb2RlbCgpO1xuXHRcdGNvbnN0IHRhcmdldFBhdGhUb1VzZSA9IHRhcmdldFBhdGggPz8gdGhpcy5nZXRPd25lckNvbnRleHRQYXRoKCk7XG5cdFx0cmV0dXJuIGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0c0ZvclRhcmdldFBhdGgodGFyZ2V0UGF0aFRvVXNlISwgbWV0YU1vZGVsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZXRyaWV2ZXMgdGhlIGNvbnRleHQgcGF0aCBmcm9tIHRoZSBvd25lciBjb21wb25lbnQuXG5cdCAqIEByZXR1cm5zIFRoZSBjb250ZXh0IHBhdGhcblx0ICovXG5cdGdldE93bmVyQ29udGV4dFBhdGgoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBvd25lciA9IHRoaXMuX2dldE93bmVyKCkhO1xuXHRcdHJldHVybiBvd25lci5nZXRGdWxsQ29udGV4dFBhdGgodGhpcy5tZXRhTW9kZWwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBtb2RlbCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhcGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhcGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgVGhlIGRhdGEgbW9kZWwgb2JqZWN0IHBhdGhcblx0ICovXG5cdGdldERhdGFNb2RlbE9iamVjdEZvck1ldGFQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4oXG5cdFx0bWV0YXBhdGg6IHN0cmluZyxcblx0XHRjb250ZXh0UGF0aD86IHN0cmluZ1xuXHQpOiBEYXRhTW9kZWxPYmplY3RQYXRoPEV4cGVjdGVkRGF0YU1vZGVsVHlwZT4gfCB1bmRlZmluZWQge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cblx0XHRsZXQgcmVzb2x2ZWRDb250ZXh0UGF0aDtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSkge1xuXHRcdFx0cmVzb2x2ZWRDb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoVG9Vc2UuZW5kc1dpdGgoXCIvXCIpID8gY29udGV4dFBhdGhUb1VzZSA6IGNvbnRleHRQYXRoVG9Vc2UgKyBcIi9cIjtcblx0XHR9XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShyZXNvbHZlZENvbnRleHRQYXRoIHx8IG1ldGFwYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJObyBtZXRhbW9kZWwgb3IgbWV0YXBhdGggaXMgbm90IHJlYWNoYWJsZSB3aXRoIGNvbnRleHRQYXRoXCIpO1xuXHRcdH1cblx0XHRsZXQgbWV0YUNvbnRleHQgPSByZXNvbHZlZENvbnRleHRQYXRoID8gbWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHJlc29sdmVkQ29udGV4dFBhdGgpIDogdW5kZWZpbmVkO1xuXHRcdG1ldGFDb250ZXh0ID0gbWV0YUNvbnRleHQgPyBtZXRhQ29udGV4dCA6IHVuZGVmaW5lZDtcblx0XHRjb25zdCBtZXRhUGF0aENvbnRleHQgPSBtZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQobWV0YXBhdGgsIG1ldGFDb250ZXh0KTtcblx0XHRyZXR1cm4gbWV0YVBhdGhDb250ZXh0XG5cdFx0XHQ/IE1ldGFNb2RlbENvbnZlcnRlci5nZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHM8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPihtZXRhUGF0aENvbnRleHQsIG1ldGFDb250ZXh0KVxuXHRcdFx0OiB1bmRlZmluZWQ7XG5cdH1cblxuXHRnZXRDb21wdXRlZENvbnRleHRQYXRoKGNvbnRleHRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRsZXQgY29udGV4dFBhdGhUb1VzZSA9IGNvbnRleHRQYXRoID8/IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpITtcblx0XHRpZiAoY29udGV4dFBhdGhUb1VzZSAmJiAhY29udGV4dFBhdGhUb1VzZS5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0Y29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0T3duZXJDb250ZXh0UGF0aCgpICsgY29udGV4dFBhdGhUb1VzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoVG9Vc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0cmlldmVzIHRoZSBNZXRhUGF0aCBvYmplY3QgZm9yIHRoZSBnaXZlbiBtZXRhUGF0aCBhbmQgb3B0aW9uYWwgY29udGV4dFBhdGguXG5cdCAqIEBwYXJhbSBtZXRhUGF0aFxuXHQgKiBAcGFyYW0gY29udGV4dFBhdGhcblx0ICogQHJldHVybnMgQSBNZXRhUGF0aCBwb2ludGluZyB0byB0aGUgdGFyZ2V0IHttZXRhUGF0aCwgY29udGV4dFBhdGh9XG5cdCAqL1xuXHRnZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoOiBzdHJpbmcsIGNvbnRleHRQYXRoPzogc3RyaW5nKTogTWV0YVBhdGg8RXhwZWN0ZWREYXRhTW9kZWxUeXBlPiB8IG51bGwge1xuXHRcdGNvbnN0IG1ldGFNb2RlbCA9IHRoaXMuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3QgY29udGV4dFBhdGhUb1VzZSA9IHRoaXMuZ2V0Q29tcHV0ZWRDb250ZXh0UGF0aChjb250ZXh0UGF0aCk7XG5cdFx0aWYgKCFtZXRhTW9kZWwgfHwgIShjb250ZXh0UGF0aFRvVXNlIHx8IG1ldGFQYXRoLmNoYXJBdCgwKSA9PT0gXCIvXCIpKSB7XG5cdFx0XHRMb2cud2FybmluZyhgTm8gbWV0YW1vZGVsIG9yIG1ldGFQYXRoIGlzIG5vdCByZWFjaGFibGUgd2l0aCAke2NvbnRleHRQYXRofToke21ldGFQYXRofWApO1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRyZXR1cm4gbmV3IE1ldGFQYXRoKGNvbnZlcnRUeXBlcyhtZXRhTW9kZWwpLCBtZXRhUGF0aCwgY29udGV4dFBhdGhUb1VzZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0aWYgKCFjb250ZXh0UGF0aFRvVXNlLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5nZXRNZXRhUGF0aE9iamVjdDxFeHBlY3RlZERhdGFNb2RlbFR5cGU+KG1ldGFQYXRoLCBjb250ZXh0UGF0aFRvVXNlICsgXCIvXCIpO1xuXHRcdFx0fVxuXHRcdFx0TG9nLndhcm5pbmcoYE5vIG1ldGFtb2RlbCBvciBtZXRhUGF0aCBpcyBub3QgcmVhY2hhYmxlIHdpdGggJHtjb250ZXh0UGF0aH06JHttZXRhUGF0aH1gKTtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBjcmVhdGVJZCguLi5zdHJpbmdQYXJ0czogKHN0cmluZyB8IHVuZGVmaW5lZCB8IERhdGFNb2RlbE9iamVjdFBhdGg8QXV0aG9yaXplZElkQW5ub3RhdGlvbnNUeXBlPilbXSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG5cdFx0Ly8gSWYgdGhlIGNoaWxkIGluc3RhbmNlIGhhcyBhbiBJRCBwcm9wZXJ0eSB1c2UgaXQgb3RoZXJ3aXNlIHJldHVybiB1bmRlZmluZWRcblx0XHRpZiAodGhpcy5nZXRJZCgpKSB7XG5cdFx0XHRyZXR1cm4gZ2VuZXJhdGUoW3RoaXMuZ2V0SWQoKSwgLi4uc3RyaW5nUGFydHNdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXG5cdGdldFRyYW5zbGF0ZWRUZXh0KHRleHRJRDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogdW5rbm93bltdLCBtZXRhUGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCgodGhpcy5nZXRNb2RlbChcInNhcC5mZS5pMThuXCIpID8/IHRoaXMuX2dldE93bmVyKCk/LmdldE1vZGVsKFwic2FwLmZlLmkxOG5cIikpIGFzIFJlc291cmNlTW9kZWwpPy5nZXRUZXh0KFxuXHRcdFx0XHR0ZXh0SUQsXG5cdFx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRcdG1ldGFQYXRoXG5cdFx0XHQpIHx8IHRleHRJRFxuXHRcdCk7XG5cdH1cblxuXHRnZXRNYW5pZmVzdFdyYXBwZXIoKTogTWFuaWZlc3RXcmFwcGVyIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8uZ2V0TWFuaWZlc3RXcmFwcGVyKCk7XG5cdH1cblxuXHRnZXRPd25lclBhZ2VEZWZpbml0aW9uKCk6IERlZmluaXRpb25QYWdlIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0T3duZXIoKT8ucHJlcHJvY2Vzc29yQ29udGV4dD8uZ2V0RGVmaW5pdGlvbkZvclBhZ2UoKTtcblx0fVxufVxuXG5pbnRlcmZhY2UgQnVpbGRpbmdCbG9jazxUIGV4dGVuZHMgVUk1RWxlbWVudD4ge1xuXHRnZXRDb250ZW50KCk6IFQgfCB1bmRlZmluZWQ7XG5cdGdldEFyaWFMYWJlbGxlZEJ5KCk6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBCdWlsZGluZ0Jsb2NrO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFOQSxJQVFNQSxhQUFhLElBQUFDLElBQUEsR0FEbEJDLGNBQWMsQ0FBQywwQ0FBMEMsQ0FBQyxFQUFBQyxLQUFBLEdBS3pEQyxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFKLElBQUEsQ0FBQUssTUFBQSxJQUFBQyxPQUFBLElBQUFDLGNBQUEsMEJBQUFDLGtCQUFBO0lBTzdCLFNBQUFULGNBQVlVLFFBQXNELEVBQUVDLE1BQTJDLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ2hIQSxLQUFBLEdBQUFILGtCQUFBLENBQUFJLElBQUEsT0FBTUgsUUFBUSxFQUFFQyxNQUFNLENBQUM7TUFYeEI7QUFDRDtBQUNBO01BRkNHLDBCQUFBLENBQUFGLEtBQUEsZUFBQUcsV0FBQSxFQUFBSCxLQUFBO01BQUFBLEtBQUEsQ0FNVUksaUJBQWlCLEdBQUcsS0FBSztNQU1sQ0osS0FBQSxDQUFLSyxpQkFBaUIsQ0FBQyxDQUFDO01BQUMsT0FBQUwsS0FBQTtJQUMxQjtJQUFDTSxjQUFBLENBQUFsQixhQUFBLEVBQUFTLGtCQUFBO0lBQUEsSUFBQVUsTUFBQSxHQUFBbkIsYUFBQSxDQUFBb0IsU0FBQTtJQUFBRCxNQUFBLENBRVFFLGFBQWEsR0FBdEIsU0FBU0EsYUFBYUEsQ0FBQ0MsU0FBaUMsRUFBRUMsTUFBZSxFQUFRO01BQ2hGLElBQUksQ0FBQ1AsaUJBQWlCLEdBQUcsSUFBSTtNQUM3QlAsa0JBQUEsQ0FBQVcsU0FBQSxDQUFNQyxhQUFhLENBQUFSLElBQUEsT0FBQ1MsU0FBUyxFQUFFQyxN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
@@ -171,7 +171,14 @@ class BuildingBlock<T extends UI5Element = Control, K extends object = {}> exten
171
171
  _checkIfMetadataReady(fromApplySettings = false): void {
172
172
  const owner = this._getOwner();
173
173
  if (owner) {
174
- this.onMetadataAvailable(owner);
174
+ try {
175
+ this.onMetadataAvailable(owner);
176
+ } catch (err) {
177
+ Log.error(
178
+ `Error creating content for building block ${this.getMetadata().getName()} with ID: ${this.getId()}`,
179
+ err as Error
180
+ );
181
+ }
175
182
  if (
176
183
  this.isA<IViewStateContributor<unknown> & ManagedObject>("sap.fe.core.controllerextensions.viewState.IViewStateContributor")
177
184
  ) {