@sapui5/sap.fe.core 1.141.2 → 1.142.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 (207) hide show
  1. package/package.json +1 -1
  2. package/src/sap/fe/core/.library +4 -1
  3. package/src/sap/fe/core/ActionRuntime.js +48 -23
  4. package/src/sap/fe/core/ActionRuntime.ts +61 -35
  5. package/src/sap/fe/core/AppComponent.js +76 -6
  6. package/src/sap/fe/core/AppComponent.ts +94 -8
  7. package/src/sap/fe/core/AppStateHandler.js +9 -8
  8. package/src/sap/fe/core/AppStateHandler.ts +13 -9
  9. package/src/sap/fe/core/BaseController.js +8 -5
  10. package/src/sap/fe/core/BaseController.ts +6 -1
  11. package/src/sap/fe/core/CommonUtils.js +4 -123
  12. package/src/sap/fe/core/CommonUtils.ts +3 -172
  13. package/src/sap/fe/core/ExtensionAPI.js +3 -10
  14. package/src/sap/fe/core/ExtensionAPI.ts +2 -14
  15. package/src/sap/fe/core/PageController.js +64 -43
  16. package/src/sap/fe/core/PageController.ts +62 -47
  17. package/src/sap/fe/core/TemplateComponent.js +20 -1
  18. package/src/sap/fe/core/TemplateComponent.ts +24 -2
  19. package/src/sap/fe/core/buildingBlocks/BuildingBlock.js +37 -24
  20. package/src/sap/fe/core/buildingBlocks/BuildingBlock.ts +47 -31
  21. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.js +1 -1
  22. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockSupport.ts +4 -0
  23. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.js +4 -1
  24. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplateProcessor.ts +3 -0
  25. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.js +4 -1
  26. package/src/sap/fe/core/buildingBlocks/templating/BuildingBlockTemplatingBase.ts +4 -0
  27. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.js +7 -5
  28. package/src/sap/fe/core/controllerextensions/BaseControllerExtension.ts +22 -2
  29. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.js +82 -39
  30. package/src/sap/fe/core/controllerextensions/CollaborativeDraft.ts +91 -54
  31. package/src/sap/fe/core/controllerextensions/EditFlow.js +25 -3
  32. package/src/sap/fe/core/controllerextensions/EditFlow.ts +27 -3
  33. package/src/sap/fe/core/controllerextensions/InlineEditFlow.js +9 -7
  34. package/src/sap/fe/core/controllerextensions/InlineEditFlow.ts +17 -5
  35. package/src/sap/fe/core/controllerextensions/InternalRouting.js +37 -18
  36. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +49 -17
  37. package/src/sap/fe/core/controllerextensions/KPIManagement.js +30 -15
  38. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +32 -14
  39. package/src/sap/fe/core/controllerextensions/MessageHandler.js +9 -10
  40. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +8 -9
  41. package/src/sap/fe/core/controllerextensions/Paginator.js +2 -2
  42. package/src/sap/fe/core/controllerextensions/Paginator.ts +1 -1
  43. package/src/sap/fe/core/controllerextensions/Placeholder.js +10 -2
  44. package/src/sap/fe/core/controllerextensions/Placeholder.ts +5 -1
  45. package/src/sap/fe/core/controllerextensions/Recommendations.js +3 -3
  46. package/src/sap/fe/core/controllerextensions/Recommendations.ts +2 -2
  47. package/src/sap/fe/core/controllerextensions/Routing.js +9 -5
  48. package/src/sap/fe/core/controllerextensions/Routing.ts +7 -7
  49. package/src/sap/fe/core/controllerextensions/Share.js +5 -5
  50. package/src/sap/fe/core/controllerextensions/Share.ts +4 -4
  51. package/src/sap/fe/core/controllerextensions/SideEffects.js +1 -1
  52. package/src/sap/fe/core/controllerextensions/SideEffects.ts +17 -2
  53. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +2 -2
  54. package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +1 -1
  55. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.js +3 -3
  56. package/src/sap/fe/core/controllerextensions/editFlow/NotApplicableContextDialog.tsx +3 -2
  57. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +33 -11
  58. package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.ts +45 -14
  59. package/src/sap/fe/core/controllerextensions/editFlow/draft.js +37 -3
  60. package/src/sap/fe/core/controllerextensions/editFlow/draft.ts +41 -8
  61. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.js +10 -4
  62. package/src/sap/fe/core/controllerextensions/editFlow/draftDataLossPopup.ts +6 -1
  63. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.js +7 -7
  64. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataOperation.ts +6 -5
  65. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.js +2 -2
  66. package/src/sap/fe/core/controllerextensions/editFlow/operations/ODataStrictHandling.ts +1 -1
  67. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.js +2 -1
  68. package/src/sap/fe/core/controllerextensions/editFlow/operations/OperationParameters.ts +1 -0
  69. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +10 -6
  70. package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.ts +6 -5
  71. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +11 -9
  72. package/src/sap/fe/core/controllerextensions/routing/RouterProxy.ts +22 -9
  73. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.js +9 -4
  74. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DraftDataLossDialog.tsx +10 -4
  75. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.js +31 -2
  76. package/src/sap/fe/core/controls/Recommendations/ConfirmRecommendationDialog.tsx +34 -1
  77. package/src/sap/fe/core/converters/ManifestSettings.js +7 -1
  78. package/src/sap/fe/core/converters/ManifestSettings.ts +37 -0
  79. package/src/sap/fe/core/converters/ManifestWrapper.js +29 -9
  80. package/src/sap/fe/core/converters/ManifestWrapper.ts +29 -11
  81. package/src/sap/fe/core/converters/annotations/DataField.js +46 -19
  82. package/src/sap/fe/core/converters/annotations/DataField.ts +93 -19
  83. package/src/sap/fe/core/converters/common/AnnotationConverter.js +88 -35
  84. package/src/sap/fe/core/converters/controls/Common/Action.js +57 -20
  85. package/src/sap/fe/core/converters/controls/Common/Action.ts +71 -21
  86. package/src/sap/fe/core/converters/controls/Common/Chart.js +13 -3
  87. package/src/sap/fe/core/converters/controls/Common/Chart.ts +20 -4
  88. package/src/sap/fe/core/converters/controls/Common/Form.js +18 -3
  89. package/src/sap/fe/core/converters/controls/Common/Form.ts +23 -1
  90. package/src/sap/fe/core/converters/controls/Common/Table.js +89 -57
  91. package/src/sap/fe/core/converters/controls/Common/Table.ts +110 -56
  92. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.js +243 -0
  93. package/src/sap/fe/core/converters/controls/Common/filter/FilterRestrictions.ts +309 -0
  94. package/src/sap/fe/core/converters/controls/Common/table/Columns.js +142 -58
  95. package/src/sap/fe/core/converters/controls/Common/table/Columns.ts +172 -78
  96. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +12 -18
  97. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +13 -27
  98. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +7 -16
  99. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +6 -17
  100. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +16 -5
  101. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +16 -5
  102. package/src/sap/fe/core/converters/helpers/Aggregation.js +12 -2
  103. package/src/sap/fe/core/converters/helpers/Aggregation.ts +11 -1
  104. package/src/sap/fe/core/converters/helpers/DataFieldHelper.js +27 -3
  105. package/src/sap/fe/core/converters/helpers/DataFieldHelper.ts +28 -1
  106. package/src/sap/fe/core/converters/helpers/ID.js +3 -1
  107. package/src/sap/fe/core/converters/helpers/ID.ts +1 -0
  108. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +5 -2
  109. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +7 -1
  110. package/src/sap/fe/core/converters/templates/ListReportConverter.js +11 -3
  111. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +12 -4
  112. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +19 -8
  113. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +18 -7
  114. package/src/sap/fe/core/designtime/AnnotationBasedChanges.js +8 -3
  115. package/src/sap/fe/core/designtime/AnnotationBasedChanges.ts +7 -2
  116. package/src/sap/fe/core/formatters/FPMFormatter.js +2 -2
  117. package/src/sap/fe/core/formatters/FPMFormatter.ts +1 -1
  118. package/src/sap/fe/core/fpm/Component.js +8 -1
  119. package/src/sap/fe/core/fpm/Component.ts +8 -0
  120. package/src/sap/fe/core/fpm/manifest.json +1 -1
  121. package/src/sap/fe/core/helpers/AppStartupHelper.js +79 -25
  122. package/src/sap/fe/core/helpers/AppStartupHelper.ts +91 -32
  123. package/src/sap/fe/core/helpers/ManifestHelper.js +6 -3
  124. package/src/sap/fe/core/helpers/ManifestHelper.ts +3 -0
  125. package/src/sap/fe/core/helpers/MetaModelFunction.js +12 -3
  126. package/src/sap/fe/core/helpers/MetaModelFunction.ts +11 -3
  127. package/src/sap/fe/core/helpers/ModelHelper.js +48 -9
  128. package/src/sap/fe/core/helpers/ModelHelper.ts +55 -10
  129. package/src/sap/fe/core/helpers/TypeGuards.js +12 -2
  130. package/src/sap/fe/core/helpers/TypeGuards.ts +10 -1
  131. package/src/sap/fe/core/helpers/WebSocket.js +6 -7
  132. package/src/sap/fe/core/helpers/WebSocket.ts +10 -6
  133. package/src/sap/fe/core/library.js +30 -3
  134. package/src/sap/fe/core/library.ts +28 -1
  135. package/src/sap/fe/core/messagebundle.properties +8 -1
  136. package/src/sap/fe/core/messagebundle_ar.properties +7 -0
  137. package/src/sap/fe/core/messagebundle_bg.properties +10 -3
  138. package/src/sap/fe/core/messagebundle_ca.properties +7 -0
  139. package/src/sap/fe/core/messagebundle_cnr.properties +7 -0
  140. package/src/sap/fe/core/messagebundle_cs.properties +7 -0
  141. package/src/sap/fe/core/messagebundle_cy.properties +8 -1
  142. package/src/sap/fe/core/messagebundle_da.properties +7 -0
  143. package/src/sap/fe/core/messagebundle_de.properties +7 -0
  144. package/src/sap/fe/core/messagebundle_el.properties +7 -0
  145. package/src/sap/fe/core/messagebundle_en.properties +8 -1
  146. package/src/sap/fe/core/messagebundle_en_GB.properties +7 -0
  147. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +5 -0
  148. package/src/sap/fe/core/messagebundle_es.properties +8 -1
  149. package/src/sap/fe/core/messagebundle_es_MX.properties +7 -0
  150. package/src/sap/fe/core/messagebundle_et.properties +7 -0
  151. package/src/sap/fe/core/messagebundle_fi.properties +7 -0
  152. package/src/sap/fe/core/messagebundle_fr.properties +16 -9
  153. package/src/sap/fe/core/messagebundle_fr_CA.properties +7 -0
  154. package/src/sap/fe/core/messagebundle_hi.properties +8 -1
  155. package/src/sap/fe/core/messagebundle_hr.properties +7 -0
  156. package/src/sap/fe/core/messagebundle_hu.properties +7 -0
  157. package/src/sap/fe/core/messagebundle_id.properties +7 -0
  158. package/src/sap/fe/core/messagebundle_it.properties +7 -0
  159. package/src/sap/fe/core/messagebundle_iw.properties +7 -0
  160. package/src/sap/fe/core/messagebundle_ja.properties +8 -1
  161. package/src/sap/fe/core/messagebundle_kk.properties +7 -0
  162. package/src/sap/fe/core/messagebundle_ko.properties +7 -0
  163. package/src/sap/fe/core/messagebundle_lt.properties +7 -0
  164. package/src/sap/fe/core/messagebundle_lv.properties +7 -0
  165. package/src/sap/fe/core/messagebundle_mk.properties +7 -0
  166. package/src/sap/fe/core/messagebundle_ms.properties +7 -0
  167. package/src/sap/fe/core/messagebundle_nl.properties +7 -0
  168. package/src/sap/fe/core/messagebundle_no.properties +7 -0
  169. package/src/sap/fe/core/messagebundle_pl.properties +7 -0
  170. package/src/sap/fe/core/messagebundle_pt.properties +7 -0
  171. package/src/sap/fe/core/messagebundle_pt_PT.properties +7 -0
  172. package/src/sap/fe/core/messagebundle_ro.properties +7 -0
  173. package/src/sap/fe/core/messagebundle_ru.properties +7 -0
  174. package/src/sap/fe/core/messagebundle_sh.properties +7 -0
  175. package/src/sap/fe/core/messagebundle_sk.properties +7 -0
  176. package/src/sap/fe/core/messagebundle_sl.properties +7 -0
  177. package/src/sap/fe/core/messagebundle_sr.properties +7 -0
  178. package/src/sap/fe/core/messagebundle_sv.properties +7 -0
  179. package/src/sap/fe/core/messagebundle_th.properties +7 -0
  180. package/src/sap/fe/core/messagebundle_tr.properties +7 -0
  181. package/src/sap/fe/core/messagebundle_uk.properties +7 -0
  182. package/src/sap/fe/core/messagebundle_vi.properties +7 -0
  183. package/src/sap/fe/core/messagebundle_zh_CN.properties +8 -1
  184. package/src/sap/fe/core/messagebundle_zh_TW.properties +7 -0
  185. package/src/sap/fe/core/rootView/Fcl.controller.js +21 -7
  186. package/src/sap/fe/core/rootView/Fcl.controller.ts +28 -6
  187. package/src/sap/fe/core/rootView/RootViewBaseController.js +96 -88
  188. package/src/sap/fe/core/rootView/RootViewBaseController.ts +106 -96
  189. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +14 -10
  190. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +15 -10
  191. package/src/sap/fe/core/services/RoutingServiceFactory.js +16 -7
  192. package/src/sap/fe/core/services/RoutingServiceFactory.ts +23 -10
  193. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +9 -7
  194. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +13 -8
  195. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +62 -6
  196. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +74 -11
  197. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.js +33 -15
  198. package/src/sap/fe/core/services/collaborativeDraftServiceFactory.ts +31 -11
  199. package/src/sap/fe/core/templating/DisplayModeFormatter.js +4 -5
  200. package/src/sap/fe/core/templating/DisplayModeFormatter.ts +4 -6
  201. package/src/sap/fe/core/templating/UIFormatters.js +17 -2
  202. package/src/sap/fe/core/templating/UIFormatters.ts +25 -1
  203. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.js +10 -0
  204. package/src/sap/fe/core/types/sap.fe.core-auto-ext.d.ts +369 -0
  205. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.js +9 -0
  206. package/src/sap/fe/core/types/sap.fe.core-manual-ext.d.ts +49 -0
  207. package/ui5.yaml +2 -0
@@ -25,11 +25,13 @@ import type HostType from "sap/ui/integration/Host";
25
25
  import type { Host$ActionEvent } from "sap/ui/integration/Host";
26
26
  import type { default as Card, CardManifest, default as CardType, ChartCardContent } from "sap/ui/integration/widgets/Card";
27
27
  import Filter from "sap/ui/model/Filter";
28
- import type FilterOperator from "sap/ui/model/FilterOperator";
28
+ import FilterOperator from "sap/ui/model/FilterOperator";
29
29
  import Sorter from "sap/ui/model/Sorter";
30
30
  import JSONModel from "sap/ui/model/json/JSONModel";
31
31
  import type Context from "sap/ui/model/odata/v4/Context";
32
+ import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
32
33
  import type ODataModel from "sap/ui/model/odata/v4/ODataModel";
34
+ import ModelHelper from "../helpers/ModelHelper";
33
35
 
34
36
  const MessageTypeFromCriticality: Record<string, MessageType> = {
35
37
  "1": MessageType.Error,
@@ -738,7 +740,7 @@ class KPIManagementControllerExtension extends ControllerExtension {
738
740
 
739
741
  // Create a JSON model to store KPI data
740
742
  const oKPIModel = new JSONModel();
741
- oView.setModel(oKPIModel, "kpiModel");
743
+ this.base.getOwnerComponent().setModel(oKPIModel, "kpiModel");
742
744
 
743
745
  this.aKPIDefinitions.forEach((kpiDefinition) => {
744
746
  // We only need to worry about analytical KPI definition
@@ -971,6 +973,26 @@ class KPIManagementControllerExtension extends ControllerExtension {
971
973
  }
972
974
  }
973
975
 
976
+ /**
977
+ * Returns the overall filters to be applied to a KPI, including SelectionVariant filters and the IsActiveEntity filter if draft is supported.
978
+ * @param kpiDefinition
979
+ * @param metaModel
980
+ * @returns An array of sap.ui.model.Filter objects
981
+ */
982
+ protected getKPIFilters(kpiDefinition: AnalyticalKPIDefinition, metaModel: ODataMetaModel): Filter[] {
983
+ let filters: Filter[] = [];
984
+ if (kpiDefinition.selectionVariantFilterDefinitions?.length) {
985
+ filters = kpiDefinition.selectionVariantFilterDefinitions.map(createFilterFromDefinition).filter((filter) => {
986
+ return filter !== undefined;
987
+ }) as Filter[];
988
+ }
989
+ if (ModelHelper.isDraftSupported(metaModel, kpiDefinition.contextPath)) {
990
+ filters.push(new Filter("IsActiveEntity", FilterOperator.EQ, true));
991
+ }
992
+
993
+ return filters;
994
+ }
995
+
974
996
  /**
975
997
  * Loads tag data for a KPI, and stores it in the JSON KPI model.
976
998
  * @param kpiDefinition The definition of the KPI.
@@ -1019,12 +1041,10 @@ class KPIManagementControllerExtension extends ControllerExtension {
1019
1041
 
1020
1042
  oListBinding.setAggregation({ aggregate: oAggregate });
1021
1043
 
1022
- // Manage SelectionVariant filters
1023
- if (kpiDefinition.selectionVariantFilterDefinitions?.length) {
1024
- const aFilters = kpiDefinition.selectionVariantFilterDefinitions.map(createFilterFromDefinition).filter((filter) => {
1025
- return filter !== undefined;
1026
- }) as Filter[];
1027
- oListBinding.filter(aFilters);
1044
+ // Filters
1045
+ const filters = this.getKPIFilters(kpiDefinition, oMainModel.getMetaModel());
1046
+ if (filters.length > 0) {
1047
+ oListBinding.filter(filters);
1028
1048
  }
1029
1049
 
1030
1050
  return oListBinding.requestContexts(0, 1).then((aContexts: Context[]): void => {
@@ -1093,12 +1113,10 @@ class KPIManagementControllerExtension extends ControllerExtension {
1093
1113
  aggregate: oAggregate
1094
1114
  });
1095
1115
 
1096
- // Manage SelectionVariant filters
1097
- if (kpiDefinition.selectionVariantFilterDefinitions?.length) {
1098
- const aFilters = kpiDefinition.selectionVariantFilterDefinitions.map(createFilterFromDefinition).filter((filter) => {
1099
- return filter !== undefined;
1100
- }) as Filter[];
1101
- oListBinding.filter(aFilters);
1116
+ // Filters
1117
+ const filters = this.getKPIFilters(kpiDefinition, oMainModel.getMetaModel());
1118
+ if (filters.length > 0) {
1119
+ oListBinding.filter(filters);
1102
1120
  }
1103
1121
 
1104
1122
  // Sorting
@@ -17,8 +17,7 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/base/util/uid", "
17
17
  function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
18
18
  function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
19
19
  /**
20
- *
21
- * Defines the message detail relevant for the MessageButton building block to display a popover.
20
+ * Defines the message details relevant for the MessageButton building block to display a popover.
22
21
  * @public
23
22
  */
24
23
  /**
@@ -104,18 +103,18 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/base/util/uid", "
104
103
  }
105
104
 
106
105
  /**
107
- * Allows consumer of a message button BB to decide which bound messages should be shown and how.
106
+ * Allows the consumer of the MessageButton building block to decide which bound messages are shown and how.
108
107
  *
109
- * This hook is called when the message button BB detects a change in the message model.
110
- * The hooks allows to define behaviour for messages in the message button BB.
108
+ * This hook is called when the MessageButton building block detects a change in the message model.
109
+ * The hooks allow you to define the behavior for messages in the MessageButton building block.
111
110
  *
112
- * Consumers will be able to do the following with this hook.
111
+ * Consumers are able to do the following with this hook:
113
112
  *
114
113
  * 1. Filter out messages so that they are not shown on the message button.
115
- * 2. group the messages based on their UI.
116
- * 3. provide a presser handler incase the message should show as a link.
114
+ * 2. Group messages based on their UI.
115
+ * 3. Provide a presser handler if the message should display as a link.
117
116
  * @param _messageDetails Object containing the details related to the message.
118
- * @param _messageDetails.message The message from the message model.Ideally, it must not be modified directly.
117
+ * @param _messageDetails.message The message from the message. It must not be modified directly.
119
118
  * @param _messageDetails.groupName The group name associated with the current message.
120
119
  * @param _messageDetails.activeTitleHandler Function to handle the click event on a message in the MessageButton building block.
121
120
  * @returns A promise that must be returned by the overridden method.
@@ -462,4 +461,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/deepEqual", "sap/base/util/uid", "
462
461
  }(ControllerExtension), _applyDecoratedDescriptor(_class2.prototype, "onInit", [_dec2], Object.getOwnPropertyDescriptor(_class2.prototype, "onInit"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class2.prototype, "getShowBoundMessagesInMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "filterContextBoundMessages", [_dec5, _dec6], Object.getOwnPropertyDescriptor(_class2.prototype, "filterContextBoundMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "beforeShowMessageButton", [_dec7, _dec8], Object.getOwnPropertyDescriptor(_class2.prototype, "beforeShowMessageButton"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessageDialog", [_dec9, _dec10], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessageDialog"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "removeTransitionMessages", [_dec11], Object.getOwnPropertyDescriptor(_class2.prototype, "removeTransitionMessages"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "showMessages", [_dec12, _dec13], Object.getOwnPropertyDescriptor(_class2.prototype, "showMessages"), _class2.prototype), _class2)) || _class);
463
462
  return MessageHandler;
464
463
  }, false);
465
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwibWV0aG9kT3ZlcnJpZGUiLCJfZGVjMyIsInByaXZhdGVFeHRlbnNpb24iLCJfZGVjNCIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiZmluYWxFeHRlbnNpb24iLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfdGhpcyIsImNhbGwiLCJzdHJpY3RXYXJuaW5nTWVzc2FnZXMiLCJob2xkS2V5cyIsImhvbGRNc2dzVG9TaG93IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkluaXQiLCJpbnRlcm5hbE1vZGVsIiwiYmFzZSIsImdldEFwcENvbXBvbmVudCIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFkZFdhcm5pbmdNZXNzYWdlc1RvTWVzc2FnZUhhbmRsZXIiLCJhTWVzc2FnZXMiLCJjb25jYXQiLCJpc1N0cmljdFdhcm5pbmdNZXNzYWdlIiwib01lc3NhZ2UiLCJmaW5kIiwibWVzc2FnZSIsImdldENvZGUiLCJnZXRNZXNzYWdlIiwiZ2V0VHlwZSIsImdldERlc2NyaXB0aW9uVXJsIiwiZGVlcEVxdWFsIiwiZ2V0VGFyZ2V0cyIsImdldFBlcnNpc3RlbnQiLCJjbGVhclN0cmljdFdhcm5pbmdNZXNzYWdlcyIsImZpbHRlckVycm9yTWVzc2FnZXMiLCJtZXNzYWdlcyIsImZpbHRlciIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZyIsImZpbHRlckNvbnRleHRCb3VuZE1lc3NhZ2VzIiwidHJhbnNpdGlvbk1lc3NhZ2VzIiwiY29udGV4dCIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiX21lc3NhZ2VEZXRhaWxzIiwicmVnaXN0ZXJUb0hvbGRNZXNzYWdlcyIsImtleSIsInVuaXF1ZUtleSIsInVpZCIsImluY2x1ZGVzIiwicHVzaCIsInJlc2V0SG9sZEtleXMiLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiZ2V0UHJvcGVydHkiLCJtZXNzYWdlc0luTW9kZWwiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwiZHVwbGljYXRlV2FybmluZ01lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwib09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsInZpZXdUeXBlIiwiZ2V0Vmlld0RhdGEiLCJjb252ZXJ0ZXJUeXBlIiwiaXNPcGVyYXRpb25EaWFsb2dPcGVuIiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwicmVqZWN0Iiwic2V0VGltZW91dCIsInByb2Nlc3NBbmRTaG93TWVzc2FnZXMiLCJiaW5kIiwicGFyYW1ldGVycyIsImJpbmRpbmdDb250ZXh0Iiwic2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwic3VjY2VzcyIsImZhaWx1cmUiLCJjb25jdXJyZW50RWRpdEZsYWciLCJjb250cm9sIiwic0FjdGlvbk5hbWUiLCJvbkJlZm9yZVNob3dNZXNzYWdlIiwidW5Ib2xkS2V5IiwiZm9yY2VTaG93VUlFbGVtZW50Iiwib3ZlcnJpZGVVSURlY2lzaW9uIiwic2hvd0JvdW5kU3RhdGVNZXNzYWdlcyIsIm5ld1VJRGVjaXNpb25zIiwibWVzc2FnZUhhbmRsaW5nIiwiZ2V0VUlEZWNpc2lvbnMiLCJnZXRSZXNvdXJjZU1vZGVsIiwidXBkYXRlVUlEZWNpc2lvbnMiLCJyZW1vdmVIb2xkS2V5IiwiZ2V0SWQiLCJ1aUVsZW1lbnRJc0F2YWlsYWJsZSIsInRoZW4iLCJzaG93TWVzc2FnZXNXaXRoQ29uZHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2hvd1VJRWxlbWVudCIsImNoZWNrVG9TaG93VUlFbGVtZW50IiwicmV0Iiwic2hvd01lc3NhZ2VzSW5VSSIsImVyciIsIkxvZyIsImVycm9yIiwiaW5mbyIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJrZWVwVW5ib3VuZE1lc3NhZ2UiLCJzUGF0aFRvQmVSZW1vdmVkIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlIiwiYVVuYm91bmRNZXNzYWdlcyIsImdldE1lc3NhZ2VzIiwiYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsImJJc1N0aWNreUVkaXRNb2RlIiwiQ29tbW9uVXRpbHMiLCJpc1N0aWNreUVkaXRNb2RlIiwibU1lc3NhZ2VQYWdlUGFyYW1ldGVycyIsImlzRGF0YVJlY2VpdmVkRXJyb3IiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibmF2aWdhdGVCYWNrVG9PcmlnaW4iLCJlcnJvclR5cGUiLCJpc0luaXRpYWxMb2FkNTAzRXJyb3IiLCJvVGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJodHRwU3RhdHVzIiwiX2dldEhUVFA1MDNNZXNzYWdlUGFyYW1ldGVycyIsInRlY2huaWNhbERldGFpbHMiLCJtZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJzZWNvbmRzQmVmb3JlUmV0cnkiLCJyZXRyeUFmdGVyIiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwicmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImRSZXRyeUFmdGVyIiwiZEN1cnJlbnREYXRlVGltZSIsIkRhdGUiLCJpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJnZXRUaW1lIiwiaVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiaVNlY29uZHNCZWZvcmVSZXRyeSIsIm9sZFVJRGVjaXNpb25zIiwiYWxsTWVzc2FnZXNUb1Nob3ciLCJtZXJnZWRVSURlY2lzaW9uIiwibWVzc2FnZXNUb1Nob3ciLCJBcnJheSIsImZyb20iLCJTZXQiLCJlbGVtZW50cyIsInVpRWxlbWVudFRvVXNlIiwiY29udGV4dE5lZWRzRXRhZ1JlZnJlc2giLCJjb250YWluc0JvdW5kVHJhbnNpdGlvbiIsImluS2V5Iiwic3BsaWNlIiwiaW5kZXhPZiIsImhvbGRNZXNzYWdlc0ZvckNvbnRyb2wiLCJpZGVudGlmaWVyIiwicmVsZWFzZUhvbGRCeUNvbnRyb2wiLCJzaG93TWVzc2FnZXMiLCJtZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjayIsImhhbmRsZVNoZWxsQmFjayIsInNoZWxsQmFjayIsIm9SZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9yb3V0aW5nIiwibmF2aWdhdGVUb01lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsImNhdGNoIiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIG1ldGhvZE92ZXJyaWRlLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0TWVzc2FnZVRlY2huaWNhbERldGFpbHMsXG5cdE1lc3NhZ2VVSURlY2lzaW9ucyxcblx0U2hvd01lc3NhZ2VQYXJhbWV0ZXJzLFxuXHRTdXBwb3J0ZWRVSUVsZW1lbnRcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCIuLi9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcblxudHlwZSBPYmplY3RXaXRoQ29udmVydGVyVHlwZSA9IG9iamVjdCAmIHtcblx0Y29udmVydGVyVHlwZTogc3RyaW5nO1xufTtcbnR5cGUgTmF2aWdhdGlvblRvRXJyb3JQYWdlUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0Y29uY3VycmVudEVkaXRGbGFnPzogYm9vbGVhbjtcblx0aXNEYXRhUmVjZWl2ZWRFcnJvcj86IGJvb2xlYW47XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0aXNJbml0aWFsTG9hZDUwM0Vycm9yPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VSZXN1bHQgPSB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0ZXJyb3JUeXBlPzogc3RyaW5nO1xuXHRuYXZpZ2F0ZUJhY2tUb09yaWdpbj86IGJvb2xlYW47XG5cdGhhbmRsZVNoZWxsQmFjaz86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZSA9IHtcblx0Y29kZTogc3RyaW5nO1xuXHR0ZXh0OiBzdHJpbmc7XG5cdHBlcnNpc3RlbnQ6IGJvb2xlYW47XG5cdHR5cGU6IE1lc3NhZ2VUeXBlO1xufTtcbmV4cG9ydCB0eXBlIFNob3dNZXNzYWdlRGlhbG9nUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0aXNPcGVyYXRpb25EaWFsb2dPcGVuPzogYm9vbGVhbjtcblx0Y29udGV4dD86IENvbnRleHQ7XG5cdGNvbmN1cnJlbnRFZGl0RmxhZz86IGJvb2xlYW47XG5cdGNvbnRyb2w/OiBDb250cm9sO1xuXHRzQWN0aW9uTmFtZT86IHN0cmluZztcblx0YVNlbGVjdGVkQ29udGV4dHM/OiBDb250ZXh0IHwgQ29udGV4dFtdIHwgbnVsbDtcblx0b25CZWZvcmVTaG93TWVzc2FnZT86IChtZXNzYWdlczogTWVzc2FnZVtdLCBzaG93TWVzc2FnZVBhcmFtZXRlcnM6IFNob3dNZXNzYWdlUGFyYW1ldGVycykgPT4gU2hvd01lc3NhZ2VQYXJhbWV0ZXJzO1xuXHR1bkhvbGRLZXk/OiBzdHJpbmc7XG5cdG92ZXJyaWRlVUlEZWNpc2lvbj86IGJvb2xlYW47XG5cdHNob3dCb3VuZFN0YXRlTWVzc2FnZXM/OiBib29sZWFuO1xuXHRib3VuZEFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cdGVudGl0eVNldD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNob3dNZXNzYWdlc1BhcmFtZXRlcnMgPSBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlciAmIHtcblx0bWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0c2hlbGxCYWNrPzogRnVuY3Rpb24gfCBib29sZWFuO1xuXHRpc0RhdGFSZWNlaXZlZEVycm9yPzogYm9vbGVhbjtcblx0aXNJbml0aWFsTG9hZDUwM0Vycm9yPzogYm9vbGVhbjtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcbi8qKlxuICpcbiAqIERlZmluZXMgdGhlIG1lc3NhZ2UgZGV0YWlsIHJlbGV2YW50IGZvciB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jayB0byBkaXNwbGF5IGEgcG9wb3Zlci5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZURldGFpbCA9IHtcblx0bWVzc2FnZTogTWVzc2FnZTtcblx0Z3JvdXBOYW1lPzogc3RyaW5nO1xuXHRhY3RpdmVUaXRsZUhhbmRsZXI/OiBGdW5jdGlvbjtcbn07XG5cbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBtZXNzYWdlIGhhbmRsaW5nLlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTAuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiKVxuY2xhc3MgTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBzdHJpY3RXYXJuaW5nTWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIGhvbGRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdHByaXZhdGUgaG9sZE1zZ3NUb1Nob3cgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiLCB1bmRlZmluZWQpO1xuXHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIsIFByb21pc2UucmVzb2x2ZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIHdhcm5pbmcgbWVzc2FnZXMgdG8gdGhlIG1lc3NhZ2UgaGFuZGxlci5cblx0ICogQHBhcmFtIGFNZXNzYWdlcyBUaGUgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZXMgdG8gYmUgYWRkZWRcblx0ICovXG5cdGFkZFdhcm5pbmdNZXNzYWdlc1RvTWVzc2FnZUhhbmRsZXIoYU1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcblx0XHR0aGlzLnN0cmljdFdhcm5pbmdNZXNzYWdlcyA9IHRoaXMuc3RyaWN0V2FybmluZ01lc3NhZ2VzLmNvbmNhdChhTWVzc2FnZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgYSBtZXNzYWdlIGlzIGEgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZSB0aGF0IHdhcyByZWNlaXZlZCBwcmV2aW91c2x5LlxuXHQgKiBAcGFyYW0gb01lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgbWVzc2FnZSBpcyBhIHN0cmljdCB3YXJuaW5nIG1lc3NhZ2Vcblx0ICovXG5cdGlzU3RyaWN0V2FybmluZ01lc3NhZ2Uob01lc3NhZ2U6IE1lc3NhZ2UpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5zdHJpY3RXYXJuaW5nTWVzc2FnZXMuZmluZCgobWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0Q29kZSgpID09PSBvTWVzc2FnZS5nZXRDb2RlKCkgJiZcblx0XHRcdFx0XHRtZXNzYWdlLmdldE1lc3NhZ2UoKSA9PT0gb01lc3NhZ2UuZ2V0TWVzc2FnZSgpICYmXG5cdFx0XHRcdFx0bWVzc2FnZS5nZXRUeXBlKCkgPT09IG9NZXNzYWdlLmdldFR5cGUoKSAmJlxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKSA9PT0gb01lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKSAmJlxuXHRcdFx0XHRcdGRlZXBFcXVhbChtZXNzYWdlLmdldFRhcmdldHMoKSwgb01lc3NhZ2UuZ2V0VGFyZ2V0cygpKSAmJlxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0UGVyc2lzdGVudCgpID09PSBvTWVzc2FnZS5nZXRQZXJzaXN0ZW50KClcblx0XHRcdFx0KTtcblx0XHRcdH0pICE9PSB1bmRlZmluZWRcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBoYW5kbGVyLlxuXHQgKi9cblx0Y2xlYXJTdHJpY3RXYXJuaW5nTWVzc2FnZXMoKTogdm9pZCB7XG5cdFx0dGhpcy5zdHJpY3RXYXJuaW5nTWVzc2FnZXMgPSBbXTtcblx0fVxuXG5cdGZpbHRlckVycm9yTWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IE1lc3NhZ2VbXSB7XG5cdFx0cmV0dXJuIG1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS5nZXRUeXBlKCkgPT09IE1lc3NhZ2VUeXBlLkVycm9yKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICogQHJldHVybnMgRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIGRpYWxvZy5cblx0ICpcblx0ICogRm9yIHRoZSBvYmplY3QgcGFnZSBpZiB0aGUgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIHN0cmlwLCB0aGVuIHJlbW92ZSB0aGF0IGZyb20gdGhlIGRpYWxvZyB0byBhdm9pZCBkdXBsaWNhdGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIE9ubHkgcmVtb3ZlIHRoZSBtZXNzYWdlcyBpZiBtb3JlIHRoYW4gb25lIG1lc3NhZ2UgaXMgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBtb2RlbC5cblx0ICogQHBhcmFtIHRyYW5zaXRpb25NZXNzYWdlcyBUaGUgbWVzc2FnZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdGhlIGJvdW5kIG1lc3NhZ2VzIHdoaWNoIHNob3VsZCBiZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0ZmlsdGVyQ29udGV4dEJvdW5kTWVzc2FnZXModHJhbnNpdGlvbk1lc3NhZ2VzOiBNZXNzYWdlW10sIGNvbnRleHQ6IENvbnRleHQpOiBNZXNzYWdlW10ge1xuXHRcdHJldHVybiB0cmFuc2l0aW9uTWVzc2FnZXM7XG5cdH1cblxuXHQvKipcblx0ICogQWxsb3dzIGNvbnN1bWVyIG9mIGEgbWVzc2FnZSBidXR0b24gQkIgdG8gZGVjaWRlIHdoaWNoIGJvdW5kIG1lc3NhZ2VzIHNob3VsZCBiZSBzaG93biBhbmQgaG93LlxuXHQgKlxuXHQgKiBUaGlzIGhvb2sgaXMgY2FsbGVkIHdoZW4gdGhlIG1lc3NhZ2UgYnV0dG9uIEJCIGRldGVjdHMgYSBjaGFuZ2UgaW4gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqIFRoZSBob29rcyBhbGxvd3MgdG8gZGVmaW5lIGJlaGF2aW91ciBmb3IgbWVzc2FnZXMgaW4gdGhlIG1lc3NhZ2UgYnV0dG9uIEJCLlxuXHQgKlxuXHQgKiBDb25zdW1lcnMgd2lsbCBiZSBhYmxlIHRvIGRvIHRoZSBmb2xsb3dpbmcgd2l0aCB0aGlzIGhvb2suXG5cdCAqXG5cdCAqIDEuIEZpbHRlciBvdXQgbWVzc2FnZXMgc28gdGhhdCB0aGV5IGFyZSBub3Qgc2hvd24gb24gdGhlIG1lc3NhZ2UgYnV0dG9uLlxuXHQgKiAyLiBncm91cCB0aGUgbWVzc2FnZXMgYmFzZWQgb24gdGhlaXIgVUkuXG5cdCAqIDMuIHByb3ZpZGUgYSBwcmVzc2VyIGhhbmRsZXIgaW5jYXNlIHRoZSBtZXNzYWdlIHNob3VsZCBzaG93IGFzIGEgbGluay5cblx0ICogQHBhcmFtIF9tZXNzYWdlRGV0YWlscyBPYmplY3QgY29udGFpbmluZyB0aGUgZGV0YWlscyByZWxhdGVkIHRvIHRoZSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0gX21lc3NhZ2VEZXRhaWxzLm1lc3NhZ2UgVGhlIG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC5JZGVhbGx5LCBpdCBtdXN0IG5vdCBiZSBtb2RpZmllZCBkaXJlY3RseS5cblx0ICogQHBhcmFtIF9tZXNzYWdlRGV0YWlscy5ncm91cE5hbWUgVGhlIGdyb3VwIG5hbWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IG1lc3NhZ2UuXG5cdCAqIEBwYXJhbSBfbWVzc2FnZURldGFpbHMuYWN0aXZlVGl0bGVIYW5kbGVyIEZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgY2xpY2sgZXZlbnQgb24gYSBtZXNzYWdlIGluIHRoZSBNZXNzYWdlQnV0dG9uIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBtdXN0IGJlIHJldHVybmVkIGJ5IHRoZSBvdmVycmlkZGVuIG1ldGhvZC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKFwiQWZ0ZXJBc3luY1wiKVxuXHRhc3luYyBiZWZvcmVTaG93TWVzc2FnZUJ1dHRvbihfbWVzc2FnZURldGFpbHM6IE1lc3NhZ2VEZXRhaWxbXSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWdpc3RlciB0byBob2xkIG1lc3NhZ2VzIHVuaXRsIGEgcHJvY2VzcyBpcyBjb21wbGV0ZS5cblx0ICpcblx0ICogVGhlIGNhbGxlciBjYW4gcmVnaXN0ZXIgdG8gaG9sZCB0aGUgbWVzc2FnZSBoYW5kbGVyIGZyb20gc2hvd2luZyBtZXNzYWdlcyB1bnRpbCB0aGUgY2FsbGVyJ3MgcHJvY2Vzc2VzIGFyZSBjb21wbGV0ZWQuXG5cdCAqIE9uIHJlZ2lzdGVyaW5nIHRoZSBjYWxsZXIgaXMgcmV0dXJuZWQgYSB1bmlxdWUga2V5LlxuXHQgKiBUaGUgbWVzc2FnZXMgd2lsbCBub3QgYmUgc2hvd24gaW4gdGhlIFVJIHdpdGggc3Vic2VxdWVudCAnc2hvd01lc3NhZ2VEaWFsb2coKScgY2FsbHMuXG5cdCAqIFRoZSBjYWxsZXIgbmVlZHMgdG8gdXNlICdzaG93TWVzc2FnZURpYWxvZyg8a2V5PiknIGF0IHRoZSBlbmQgb2YgYWxsIGhpcyBwcm9jZXNzZXMgdG8gc2hvdyB0aGUgbWVzc2FnZXMgaW4gdGhlIFVJLlxuXHQgKlxuXHQgKiBJZiBtdWx0aXBsZSBvd25lcnMgcmVnaXN0ZXIgc2ltdWx0YW5lb3VzbHksIHRoZW4gbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBVSSBvbmx5IGFmdGVyICdzaG93TWVzc2FnZURpYWxvZyg8cmVzcGVjdGl2ZV9rZXk+KScgaXMgY2FsbGVkIGJ5IGFsbCB0aGUgcHJvY2Vzc2VzJyBvd25lcnMuXG5cdCAqIEBwYXJhbSBrZXkgVW5pcXVlIGlkZW50aWZpZXIgdG8gdXNlLCBJZiBub3QgcHJvdmlkZWQsIGEgVUlEIHdvdWxkIGJlIGNyZWF0ZWQgYW5kIHVzZWQgdG8gcmVnaXN0ZXIuXG5cdCAqIEByZXR1cm5zIFVuaXF1ZSBLZXkgdG8gYmUgdXNlZCBieSB0aGUgY2FsbGVyIHRvIHNob3cgbWVzc2FnZXMgYXQgYSBsYXRlciBwb2ludCBvZiB0aW1lLlxuXHQgKi9cblx0cmVnaXN0ZXJUb0hvbGRNZXNzYWdlcyhrZXk/OiBzdHJpbmcpOiBzdHJpbmcge1xuXHRcdGNvbnN0IHVuaXF1ZUtleSA9IGtleSA/PyB1aWQoKTtcblx0XHRpZiAoIXRoaXMuaG9sZEtleXMuaW5jbHVkZXModW5pcXVlS2V5KSkge1xuXHRcdFx0dGhpcy5ob2xkS2V5cy5wdXNoKHVuaXF1ZUtleSk7XG5cdFx0fVxuXHRcdHJldHVybiB1bmlxdWVLZXk7XG5cdH1cblxuXHQvKipcblx0ICogQ2xlYXIgYWxsIGV4aXN0aW5nIGhlbGQga2V5cy5cblx0ICovXG5cdHJlc2V0SG9sZEtleXMoKTogdm9pZCB7XG5cdFx0dGhpcy5ob2xkS2V5cyA9IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgbWVzc2FnZSBkaWFsb2cgd2l0aCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGlmIHRoZXJlIGFyZSBhbnkuXG5cdCAqIFRoZSBtZXNzYWdlIGRpYWxvZyBpcyBzaG93biBhcyBhIG1vZGFsIGRpYWxvZy4gT25jZSB0aGUgdXNlciBjb25maXJtcyB0aGUgZGlhbG9nLCBhbGwgdHJhbnNpdGlvbiBtZXNzYWdlc1xuXHQgKiBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIG1lc3NhZ2UsIGEgbGlzdCBvZiBtZXNzYWdlcyBpcyBzaG93bi4gVGhlIHVzZXJcblx0ICogY2FuIGZpbHRlciBvbiBtZXNzYWdlIHR5cGVzIGFuZCBjYW4gZGlzcGxheSBkZXRhaWxzIGFzIHdlbGwgYXMgdGhlIGxvbmcgdGV4dC4gSWYgdGhlcmUgaXMgb25lIG1lc3NhZ2UsXG5cdCAqIHRoZSBkaWFsb2cgaW1tZWRpYXRlbHkgc2hvd3MgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UuIElmIHRoZXJlIGlzIGp1c3Qgb25lIHN1Y2Nlc3MgbWVzc2FnZSwgYSBtZXNzYWdlXG5cdCAqIHRvYXN0IGlzIHNob3duIGluc3RlYWQuXG5cdCAqIEBwYXJhbSBtUGFyYW1ldGVycyBQUklWQVRFXG5cdCAqIEByZXR1cm5zIEEgcHJvbWlzZSB0aGF0IGlzIHJlc29sdmVkIG9uY2UgdGhlIHVzZXIgY2xvc2VzIHRoZSBkaWFsb2cuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICogQHB1YmxpY1xuXHQgKiBAc2luY2UgMS45MC4wXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgc2hvd01lc3NhZ2VEaWFsb2cobVBhcmFtZXRlcnM/OiBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Ly8gcmVtb3ZlIHN0cmljdCB3YXJuaW5nIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwgYmVmb3JlIHNob3dpbmcgdGhlIG1lc3NhZ2UgZGlhbG9nXG5cdFx0YXdhaXQgaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlFbGVtZW50SXNBdmFpbGFibGVcIik7XG5cblx0XHRjb25zdCBtZXNzYWdlc0luTW9kZWwgPSBNZXNzYWdpbmcuZ2V0TWVzc2FnZU1vZGVsKCkuZ2V0RGF0YSgpO1xuXHRcdGNvbnN0IGR1cGxpY2F0ZVdhcm5pbmdNZXNzYWdlID0gbWVzc2FnZXNJbk1vZGVsLmZpbHRlcigobWVzc2FnZTogTWVzc2FnZSkgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuaXNTdHJpY3RXYXJuaW5nTWVzc2FnZShtZXNzYWdlKTtcblx0XHR9KTtcblx0XHRNZXNzYWdpbmcucmVtb3ZlTWVzc2FnZXMoZHVwbGljYXRlV2FybmluZ01lc3NhZ2UpO1xuXG5cdFx0Y29uc3QgY3VzdG9tTWVzc2FnZXMgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA/IG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzIDogdW5kZWZpbmVkLFxuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCA9IHRoaXMuYmFzZS5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblx0XHRjb25zdCB2aWV3VHlwZSA9ICh0aGlzLmJhc2UuZ2V0VmlldygpLmdldFZpZXdEYXRhKCkgYXMgT2JqZWN0V2l0aENvbnZlcnRlclR5cGUpLmNvbnZlcnRlclR5cGU7XG5cdFx0Ly8gc2V0IGlzQWN0aW9uUGFyYW1ldGVyRGlhbG9nIG9wZW4gc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgY29udHJvbGxlciBleHRlbnNpb24gdG8gZGVjaWRlIHdoZXRoZXIgbWVzc2FnZSBkaWFsb2cgc2hvdWxkIG9wZW4gb3Igbm90XG5cdFx0aWYgKG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmlzT3BlcmF0aW9uRGlhbG9nT3BlbiAmJiBvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0KSB7XG5cdFx0XHRvT1BJbnRlcm5hbEJpbmRpbmdDb250ZXh0LnNldFByb3BlcnR5KFwiaXNPcGVyYXRpb25EaWFsb2dPcGVuXCIsIHRydWUpO1xuXHRcdH1cblx0XHRjb25zdCBiU2hvd0JvdW5kTWVzc2FnZXMgPSB0aGlzLmdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCk7XG5cdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gKFxuXHRcdFx0bVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY29udGV4dCA/IG1QYXJhbWV0ZXJzLmNvbnRleHQgOiB0aGlzLmdldFZpZXcoKS5nZXRCaW5kaW5nQ29udGV4dCgpXG5cdFx0KSBhcyBPRGF0YVY0Q29udGV4dDtcblx0XHQvL2NvbnN0IGJFdGFnTWVzc2FnZSA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmJIYXNFdGFnTWVzc2FnZTtcblx0XHQvLyByZXNldCAgaXNPcGVyYXRpb25EaWFsb2dPcGVuXG5cdFx0Ly8gY2Fubm90IGRvIHRoaXMgb3BlcmF0aW9ucy5qcyBzaW5jZSBpdCBpcyBub3QgYXdhcmUgb2YgdGhlIHZpZXdcblx0XHRpZiAob09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzT3BlcmF0aW9uRGlhbG9nT3BlblwiLCBmYWxzZSk7XG5cdFx0fVxuXHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPihcblx0XHRcdGZ1bmN0aW9uICh0aGlzOiBNZXNzYWdlSGFuZGxlciwgcmVzb2x2ZTogKCkgPT4gdm9pZCwgcmVqZWN0OiAoKSA9PiB2b2lkKTogdm9pZCB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0c2V0VGltZW91dChcblx0XHRcdFx0XHRmdW5jdGlvbiAodGhpczogTWVzc2FnZUhhbmRsZXIpOiB2b2lkIHtcblx0XHRcdFx0XHRcdC8vIFRPRE86IGdyZWF0IEFQSSAtIHdpbGwgYmUgY2hhbmdlZCBsYXRlclxuXHRcdFx0XHRcdFx0dGhpcy5wcm9jZXNzQW5kU2hvd01lc3NhZ2VzKFxuXHRcdFx0XHRcdFx0XHRtUGFyYW1ldGVycyA/PyB7fSxcblx0XHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0LFxuXHRcdFx0XHRcdFx0XHRiU2hvd0JvdW5kTWVzc2FnZXMsXG5cdFx0XHRcdFx0XHRcdGN1c3RvbU1lc3NhZ2VzID8/IFtdLFxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlLFxuXHRcdFx0XHRcdFx0XHRyZWplY3QsXG5cdFx0XHRcdFx0XHRcdHZpZXdUeXBlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH0uYmluZCh0aGlzKSxcblx0XHRcdFx0XHQwXG5cdFx0XHRcdCk7XG5cdFx0XHR9LmJpbmQodGhpcylcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByb2Nlc3MgdGhlIG1lc3NhZ2VzIGFuZCBzaG93IHRoZW0gd2hlbiBleHBlY3RlZC5cblx0ICpcblx0ICogV2UgZmlsdGVyIHRoZSBtZXNzYWdlcyB0byBzaG93IGFuZCBob2xkIHRoZW0gdW50aWwgYWxsIHJlZ2lzdGVyZWQgcHJvY2Vzc2VzIGNhbGwgc2hvd01lc3NhZ2VEaWFsb2cgd2l0aCB0aGVpciByZXNwZWN0aXZlIGhlbGQga2V5cy5cblx0ICogQHBhcmFtIHBhcmFtZXRlcnMgUGFyYW1ldGVycyB0byBzaG93IG1lc3NhZ2UgZGlhbG9nLlxuXHQgKiBAcGFyYW0gYmluZGluZ0NvbnRleHQgQmluZCBjb250ZXh0IG9mIHRoZSBwYWdlLlxuXHQgKiBAcGFyYW0gc2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIFNob3VsZCBib3VuZCBtZXNzYWdlcyBiZSBzaG93bi5cblx0ICogQHBhcmFtIGN1c3RvbU1lc3NhZ2VzIEN1c3RvbSBtZXNzYWdlcyB0byBhZGQuXG5cdCAqIEBwYXJhbSBzdWNjZXNzIFN1Y2Nlc3MgY2FsbGJhY2suXG5cdCAqIEBwYXJhbSBmYWlsdXJlIEZhaWx1cmUgY2FsbGJhY2suXG5cdCAqIEBwYXJhbSB2aWV3VHlwZSBWaWV3IHR5cGUsIGxpc3QgcmVwb3J0IG9yIG9iamVjdCBwYWdlLlxuXHQgKi9cblx0cHJvY2Vzc0FuZFNob3dNZXNzYWdlcyhcblx0XHRwYXJhbWV0ZXJzOiBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlcixcblx0XHRiaW5kaW5nQ29udGV4dDogT0RhdGFWNENvbnRleHQsXG5cdFx0c2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzOiBib29sZWFuLFxuXHRcdGN1c3RvbU1lc3NhZ2VzOiBDdXN0b21NZXNzYWdlW10sXG5cdFx0c3VjY2VzczogKCkgPT4gdm9pZCxcblx0XHRmYWlsdXJlOiAoKSA9PiB2b2lkLFxuXHRcdHZpZXdUeXBlPzogc3RyaW5nXG5cdCk6IHZvaWQge1xuXHRcdGNvbnN0IHtcblx0XHRcdGNvbmN1cnJlbnRFZGl0RmxhZyxcblx0XHRcdGNvbnRyb2wsXG5cdFx0XHRzQWN0aW9uTmFtZSxcblx0XHRcdG9uQmVmb3JlU2hvd01lc3NhZ2UsXG5cdFx0XHR1bkhvbGRLZXksXG5cdFx0XHRpc09wZXJhdGlvbkRpYWxvZ09wZW46IGZvcmNlU2hvd1VJRWxlbWVudCA9IGZhbHNlLFxuXHRcdFx0b3ZlcnJpZGVVSURlY2lzaW9uLFxuXHRcdFx0c2hvd0JvdW5kU3RhdGVNZXNzYWdlc1xuXHRcdH0gPSBwYXJhbWV0ZXJzO1xuXHRcdHRoaXMuaG9sZE1zZ3NUb1Nob3cgPSB0cnVlO1xuXG5cdFx0Ly8gQ3JlYXRlIGEgVUkgZGVjaXNpb24uXG5cdFx0Y29uc3QgbmV3VUlEZWNpc2lvbnMgPSBtZXNzYWdlSGFuZGxpbmcuZ2V0VUlEZWNpc2lvbnMoXG5cdFx0XHRjdXN0b21NZXNzYWdlcyxcblx0XHRcdGJpbmRpbmdDb250ZXh0LFxuXHRcdFx0c2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLFxuXHRcdFx0Y29uY3VycmVudEVkaXRGbGFnLFxuXHRcdFx0Y29udHJvbCxcblx0XHRcdHNBY3Rpb25OYW1lLFxuXHRcdFx0b25CZWZvcmVTaG93TWVzc2FnZSxcblx0XHRcdHZpZXdUeXBlLFxuXHRcdFx0c2hvd0JvdW5kU3RhdGVNZXNzYWdlcyxcblx0XHRcdHBhcmFtZXRlcnMsXG5cdFx0XHRnZXRSZXNvdXJjZU1vZGVsKHRoaXMuZ2V0VmlldygpKSxcblx0XHRcdHRoaXNcblx0XHQpO1xuXHRcdHRoaXMudXBkYXRlVUlEZWNpc2lvbnMobmV3VUlEZWNpc2lvbnMsIG92ZXJyaWRlVUlEZWNpc2lvbik7XG5cdFx0dGhpcy5yZW1vdmVIb2xkS2V5KHVuSG9sZEtleSA/PyBjb250cm9sPy5nZXRJZCgpKTtcblx0XHRjb25zdCB1aUVsZW1lbnRJc0F2YWlsYWJsZSA9IHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcImludGVybmFsXCIpPy5nZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlFbGVtZW50SXNBdmFpbGFibGVcIik7XG5cdFx0KHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbCk/LnNldFByb3BlcnR5KFxuXHRcdFx0XCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIsXG5cdFx0XHR1aUVsZW1lbnRJc0F2YWlsYWJsZS50aGVuKFxuXHRcdFx0XHRhc3luYyBmdW5jdGlvbiAodGhpczogTWVzc2FnZUhhbmRsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZXNXaXRoQ29uZHRpb25zKGZvcmNlU2hvd1VJRWxlbWVudCwgc3VjY2VzcywgZmFpbHVyZSk7XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogU2hvdyBNZXNzYWdlcyBpbiB0aGUgVUkgYmFzZWQgb24gY29uZGl0aW9ucy5cblx0ICogQHBhcmFtIGZvcmNlU2hvd1VJRWxlbWVudFxuXHQgKiBAcGFyYW0gc3VjY2Vzc1xuXHQgKiBAcGFyYW0gZmFpbHVyZVxuXHQgKi9cblx0YXN5bmMgc2hvd01lc3NhZ2VzV2l0aENvbmR0aW9ucyhcblx0XHRmb3JjZVNob3dVSUVsZW1lbnQgPSBmYWxzZSxcblx0XHRzdWNjZXNzPzogKHJldD86IHVua25vd24pID0+IHZvaWQsXG5cdFx0ZmFpbHVyZT86IChlcnI/OiB1bmtub3duKSA9PiB2b2lkXG5cdCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IHNob3dVSUVsZW1lbnQgPSBmb3JjZVNob3dVSUVsZW1lbnQgfHwgdGhpcy5jaGVja1RvU2hvd1VJRWxlbWVudCgpO1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0aWYgKHNob3dVSUVsZW1lbnQgJiYgaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiKSkge1xuXHRcdFx0Ly8gU2hvdyBVSSBlbGVtZW50IGZvciB0aGUgcHJlc2VudCBkZWNpc2lvbiBhbmQgY2xlYXIgdGhlIGRlY2lzaW9uLlxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Y29uc3QgcmV0ID0gYXdhaXQgbWVzc2FnZUhhbmRsaW5nLnNob3dNZXNzYWdlc0luVUkoaW50ZXJuYWxNb2RlbC5nZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiKSk7XG5cdFx0XHRcdHN1Y2Nlc3M/LihyZXQpO1xuXHRcdFx0fSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgRkUgOiBWNCA6IE1lc3NhZ2VIYW5kbGVyIDogRXJyb3Igb24gdHJ5aW5nIHRvIHNob3cgVUkgZWxlbWVudDogJHtlcnJ9YCk7XG5cdFx0XHRcdGZhaWx1cmU/LihlcnIpO1xuXHRcdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL21lc3NhZ2VVSUVsZW1lbnRJc0F2YWlsYWJsZVwiLCBQcm9taXNlLnJlc29sdmUoKSk7XG5cdFx0XHR9XG5cdFx0XHRpbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL21lc3NhZ2VVSURlY2lzaW9uXCIsIHVuZGVmaW5lZCk7XG5cdFx0XHR0aGlzLmNsZWFyU3RyaWN0V2FybmluZ01lc3NhZ2VzKCk7XG5cdFx0XHR0aGlzLmhvbGRNc2dzVG9TaG93ID0gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdExvZy5pbmZvKFwiRkUgOiBWNCA6IE1lc3NhZ2VIYW5kbGVyIDogSG9sZGluZyBtZXNzYWdlcyB1bnRpbCBhIHJlZ2lzdGVyZWQgcHJvY2VzcyBcIik7XG5cdFx0XHRzdWNjZXNzPy4oKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogWW91IGNhbiByZW1vdmUgdGhlIGV4aXN0aW5nIHRyYW5zaXRpb24gbWVzc2FnZSBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIHdpdGggdGhpcyBtZXRob2QuXG5cdCAqIFdpdGggZXZlcnkgdXNlciBpbnRlcmFjdGlvbiB0aGF0IGNhdXNlcyBzZXJ2ZXIgY29tbXVuaWNhdGlvbiAobGlrZSBjbGlja2luZyBvbiBhbiBhY3Rpb24sIGNoYW5naW5nIGRhdGEpLFxuXHQgKiB0aGlzIG1ldGhvZCByZW1vdmVzIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2VzIGZyb20gdGhlIG1lc3NhZ2UgbW9kZWwuXG5cdCAqIEBwYXJhbSBba2VlcEJvdW5kTWVzc2FnZV0gQ2hlY2tzIGlmIHRoZSBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIGFyZSBub3QgdG8gYmUgcmVtb3ZlZFxuXHQgKiBAcGFyYW0ga2VlcFVuYm91bmRNZXNzYWdlXG5cdCAqIEBwYXJhbSBzUGF0aFRvQmVSZW1vdmVkXG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0cmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKGtlZXBCb3VuZE1lc3NhZ2U/OiBib29sZWFuLCBrZWVwVW5ib3VuZE1lc3NhZ2U/OiBib29sZWFuLCBzUGF0aFRvQmVSZW1vdmVkPzogc3RyaW5nKTogdm9pZCB7XG5cdFx0aWYgKCFrZWVwQm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoc1BhdGhUb0JlUmVtb3ZlZCk7XG5cdFx0fVxuXHRcdGlmICgha2VlcFVuYm91bmRNZXNzYWdlKSB7XG5cdFx0XHRtZXNzYWdlSGFuZGxpbmcucmVtb3ZlVW5ib3VuZFRyYW5zaXRpb25NZXNzYWdlcygpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdGhhdCByZXR1cm5zIGFsbCB0aGUgcGFyYW1ldGVycyBuZWVkZWQgdG8gaGFuZGxlIHRoZSBuYXZpZ2F0aW9uIHRvIHRoZSBlcnJvciBwYWdlLlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnNcblx0ICogQHJldHVybnMgVGhlIHBhcmFtZXRlcnMgbmVjZXNzYXJ5IGZvciB0aGUgbmF2aWdhdGlvbiB0byB0aGUgZXJyb3IgcGFnZVxuXHQgKi9cblx0X2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlKG1QYXJhbWV0ZXJzPzogTmF2aWdhdGlvblRvRXJyb3JQYWdlUGFyYW1ldGVyKTogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCBhVW5ib3VuZE1lc3NhZ2VzID0gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKCk7XG5cdFx0Y29uc3QgYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA9IHRoaXMuZ2V0U2hvd0JvdW5kTWVzc2FnZXNJbk1lc3NhZ2VEaWFsb2coKTtcblx0XHRjb25zdCBhQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPSBiU2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID8gbWVzc2FnZUhhbmRsaW5nLmdldE1lc3NhZ2VzKHRydWUsIHRydWUpIDogW107XG5cdFx0Y29uc3QgYUN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IFtdO1xuXHRcdGNvbnN0IGJJc1N0aWNreUVkaXRNb2RlID0gQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZSh0aGlzLmJhc2UuZ2V0VmlldygpKTtcblx0XHRsZXQgbU1lc3NhZ2VQYWdlUGFyYW1ldGVyczogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG5cdFx0Ly8gVE9ETzogU3RpY2sgbW9kZSBjaGVjayBpcyBva2F5IGFzIGxvbmcgYXMgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGlzIHVzZWQgd2l0aCBzYXAuZmUuY29yZSBhbmQgc2FwLmZlLmNvcmUuQXBwQ29tcG9uZW50LlxuXHRcdC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBwcm92aWRlIGFuIGV4dGVuc2lvbiB0byB0aGUgY29uc3VtZXIgb2YgdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIHByb3ZpZGUgdGhpcyB2YWx1ZS5cblxuXHRcdC8vIFRoZSBtZXNzYWdlIHBhZ2UgY2FuIG9ubHkgc2hvdyAxIG1lc3NhZ2UgdG9kYXksIHNvIHdlIG5hdmlnYXRlIHRvIGl0IHdoZW4gOlxuXHRcdC8vIDEuIFRoZXJlIGFyZSBubyBib3VuZCB0cmFuc2l0aW9uIG1lc3NhZ2VzIHRvIHNob3csXG5cdFx0Ly8gMi4gVGhlcmUgYXJlIG5vIGN1c3RvbSBtZXNzYWdlcyB0byBzaG93LCAmXG5cdFx0Ly8gMy4gVGhlcmUgaXMgZXhhY3RseSAxIHVuYm91bmQgbWVzc2FnZSBpbiB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHN0YXR1c0NvZGU9NTAzIGFuZCByZXRyeS1BZnRlciBhdmFpbGFibGVcblx0XHQvLyA0LiByZXRyeUFmdGVyIGlzIGdyZWF0ZXIgdGhhbiAxMjAgc2Vjb25kc1xuXHRcdC8vXG5cdFx0Ly8gSW4gQWRkaXRpb24sIG5hdmlnYXRpbmcgYXdheSBmcm9tIGEgc3RpY2t5IHNlc3Npb24gd2lsbCBkZXN0cm95IHRoZSBzZXNzaW9uIHNvIHdlIGRvIG5vdCBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UgZm9yIG5vdy5cblx0XHQvLyBUT0RPOiBjaGVjayBpZiBuYXZpZ2F0aW9uIHNob3VsZCBiZSBkb25lIGluIHN0aWNreSBlZGl0IG1vZGUuXG5cdFx0aWYgKG1QYXJhbWV0ZXJzPy5pc0RhdGFSZWNlaXZlZEVycm9yID09PSB0cnVlKSB7XG5cdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHR0aXRsZTogbVBhcmFtZXRlcnMudGl0bGUsXG5cdFx0XHRcdGRlc2NyaXB0aW9uOiBtUGFyYW1ldGVycy5kZXNjcmlwdGlvbixcblx0XHRcdFx0bmF2aWdhdGVCYWNrVG9PcmlnaW46IHRydWUsXG5cdFx0XHRcdGVycm9yVHlwZTogXCJQYWdlTm90Rm91bmRcIlxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0IWJJc1N0aWNreUVkaXRNb2RlICYmXG5cdFx0XHQhYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzLmxlbmd0aCAmJlxuXHRcdFx0IWFDdXN0b21NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdChhVW5ib3VuZE1lc3NhZ2VzLmxlbmd0aCA9PT0gMSB8fCBtUGFyYW1ldGVycz8uaXNJbml0aWFsTG9hZDUwM0Vycm9yID09PSB0cnVlKVxuXHRcdCkge1xuXHRcdFx0Y29uc3Qgb01lc3NhZ2UgPSBhVW5ib3VuZE1lc3NhZ2VzWzBdO1xuXHRcdFx0Y29uc3Qgb1RlY2huaWNhbERldGFpbHMgPSBvTWVzc2FnZS5nZXRUZWNobmljYWxEZXRhaWxzKCkgYXMgTWVzc2FnZVRlY2huaWNhbERldGFpbHMgfCB1bmRlZmluZWQ7XG5cdFx0XHRpZiAob1RlY2huaWNhbERldGFpbHM/Lmh0dHBTdGF0dXMgPT09IDUwMykge1xuXHRcdFx0XHRtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0gdGhpcy5fZ2V0SFRUUDUwM01lc3NhZ2VQYXJhbWV0ZXJzKG9NZXNzYWdlLCBvVGVjaG5pY2FsRGV0YWlscyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBtTWVzc2FnZVBhZ2VQYXJhbWV0ZXJzO1xuXHR9XG5cblx0X2dldEhUVFA1MDNNZXNzYWdlUGFyYW1ldGVycyhtZXNzYWdlOiBNZXNzYWdlLCB0ZWNobmljYWxEZXRhaWxzOiBNZXNzYWdlVGVjaG5pY2FsRGV0YWlscyk6IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG5cdFx0bGV0IG1lc3NhZ2VQYWdlUGFyYW1ldGVyczogTmF2aWdhdGlvblRvRXJyb3JQYWdlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG5cdFx0Y29uc3Qgc2Vjb25kc0JlZm9yZVJldHJ5ID1cblx0XHRcdHRlY2huaWNhbERldGFpbHMucmV0cnlBZnRlciAhPT0gdW5kZWZpbmVkID8gdGhpcy5fZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIodGVjaG5pY2FsRGV0YWlscy5yZXRyeUFmdGVyKSA6IHVuZGVmaW5lZDtcblxuXHRcdGlmIChzZWNvbmRzQmVmb3JlUmV0cnkgPT09IHVuZGVmaW5lZCB8fCBzZWNvbmRzQmVmb3JlUmV0cnkgPiAxMjApIHtcblx0XHRcdGNvbnN0IHJldHJ5QWZ0ZXJNZXNzYWdlID0gbWVzc2FnZUhhbmRsaW5nLmdldFJldHJ5QWZ0ZXJNZXNzYWdlKG1lc3NhZ2UpO1xuXHRcdFx0bWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRkZXNjcmlwdGlvbjogcmV0cnlBZnRlck1lc3NhZ2UgPyBgJHtyZXRyeUFmdGVyTWVzc2FnZX0gJHttZXNzYWdlLmdldE1lc3NhZ2UoKX1gIDogbWVzc2FnZS5nZXRNZXNzYWdlKCksXG5cdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlLFxuXHRcdFx0XHRlcnJvclR5cGU6IFwiVW5hYmxlVG9Mb2FkXCJcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG1lc3NhZ2VQYWdlUGFyYW1ldGVycztcblx0fVxuXG5cdF9nZXRTZWNvbmRzQmVmb3JlUmV0cnlBZnRlcihkUmV0cnlBZnRlcjogRGF0ZSk6IG51bWJlciB7XG5cdFx0Y29uc3QgZEN1cnJlbnREYXRlVGltZSA9IG5ldyBEYXRlKCksXG5cdFx0XHRpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkQ3VycmVudERhdGVUaW1lLmdldFRpbWUoKSxcblx0XHRcdGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyA9IGRSZXRyeUFmdGVyLmdldFRpbWUoKSxcblx0XHRcdGlTZWNvbmRzQmVmb3JlUmV0cnkgPSAoaVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzIC0gaUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzKSAvIDEwMDA7XG5cdFx0cmV0dXJuIGlTZWNvbmRzQmVmb3JlUmV0cnk7XG5cdH1cblxuXHQvKipcblx0ICogVXBkYXRlIHRoZSBleGlzdGluZyBVSSBkZWNpc2lvbnMgd2l0aCB0aGUgbmV3IG9uZXMuXG5cdCAqIEBwYXJhbSBuZXdVSURlY2lzaW9ucyBJbiBjb21taW5nIFVJIGRlY2lzaW9ucy5cblx0ICogQHBhcmFtIG92ZXJyaWRlVUlEZWNpc2lvbiBPdmVycmlkZSB0aGUgZXhpc3RpbmcgVUkgZGVjaXNpb24gdG8gc2hvdyBtZXNzYWdlcyB3aXRoIHRoZSBuZXcgb25lLlxuXHQgKlxuXHQgKiAnb3ZlcnJpZGVVSURlY2lzaW9uJywgVGhpcyB3b3VsZCBiZSBuZWVkZWQgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBpbiBwYWdlIGNvbnRleHQgYW5kIHRoZSBwYXJhbXRlcnMgdG8gY3JlYXRlIHRoZSBuZXcgVUkgZGVjaXNpb24gYXJlIGRpZmZlcmVudC5cblx0ICovXG5cdHVwZGF0ZVVJRGVjaXNpb25zKG5ld1VJRGVjaXNpb25zOiBNZXNzYWdlVUlEZWNpc2lvbnMsIG92ZXJyaWRlVUlEZWNpc2lvbiA9IGZhbHNlKTogdm9pZCB7XG5cdFx0Y29uc3QgaW50ZXJuYWxNb2RlbCA9IHRoaXMuYmFzZS5nZXRBcHBDb21wb25lbnQoKS5nZXRNb2RlbChcImludGVybmFsXCIpIGFzIEpTT05Nb2RlbDtcblx0XHRjb25zdCBvbGRVSURlY2lzaW9ucyA9IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRGVjaXNpb25cIikgYXMgTWVzc2FnZVVJRGVjaXNpb25zO1xuXHRcdGxldCBhbGxNZXNzYWdlc1RvU2hvdzogTWVzc2FnZVtdID0gW107XG5cdFx0bGV0IG1lcmdlZFVJRGVjaXNpb247XG5cdFx0aWYgKG9sZFVJRGVjaXNpb25zICYmIG92ZXJyaWRlVUlEZWNpc2lvbiA9PT0gZmFsc2UpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b2xkVUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3cubGVuZ3RoID09PSAxICYmXG5cdFx0XHRcdG5ld1VJRGVjaXNpb25zLm1lc3NhZ2VzVG9TaG93Lmxlbmd0aCA9PT0gMSAmJlxuXHRcdFx0XHRvbGRVSURlY2lzaW9ucy5tZXNzYWdlc1RvU2hvd1swXS5nZXRDb2RlKCkgPT09IFwiQ19DT01NT05fU1VDQ0VTU19NRVNTQUdFXCIgJiZcblx0XHRcdFx0bmV3VUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3dbMF0uZ2V0Q29kZSgpID09PSBcIkNfQ09NTU9OX1NVQ0NFU1NfTUVTU0FHRVwiXG5cdFx0XHQpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgYm90aCBhcmUgZ2VuZXJpYyBzdWNjZXNzIG1lc3NhZ2VzLCB0aGVuIHdlIHNob3cgb25seSBvbmUgbWVzc2FnZS5cblx0XHRcdFx0YWxsTWVzc2FnZXNUb1Nob3cgPSBvbGRVSURlY2lzaW9ucy5tZXNzYWdlc1RvU2hvdztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGFsbE1lc3NhZ2VzVG9TaG93ID0gQXJyYXkuZnJvbShuZXcgU2V0KFsuLi5vbGRVSURlY2lzaW9ucy5tZXNzYWdlc1RvU2hvdywgLi4ubmV3VUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3ddKSk7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlbGVtZW50cyA9IFtvbGRVSURlY2lzaW9ucy51aUVsZW1lbnRUb1VzZSwgbmV3VUlEZWNpc2lvbnMudWlFbGVtZW50VG9Vc2VdO1xuXHRcdFx0Ly8gRGVmYXVsdCB3ZSBzaG93IGRpYWxvZ1xuXHRcdFx0bGV0IHVpRWxlbWVudFRvVXNlOiBTdXBwb3J0ZWRVSUVsZW1lbnQgPSBhbGxNZXNzYWdlc1RvU2hvdy5sZW5ndGggPiAwID8gXCJEaWFsb2dcIiA6IFwiTm9uZVwiO1xuXG5cdFx0XHRpZiAoYWxsTWVzc2FnZXNUb1Nob3cubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRcdC8vIFNpbmdsZSBtZXNzYWdlLCB3ZSBjaGVjayBmb3Igc3BlY2lmaWMgVUkgRWxlbWVudCB0byB1c2UuXG5cdFx0XHRcdGlmIChlbGVtZW50cy5pbmNsdWRlcyhcIlRvYXN0XCIpKSB7XG5cdFx0XHRcdFx0dWlFbGVtZW50VG9Vc2UgPSBcIlRvYXN0XCI7XG5cdFx0XHRcdH0gZWxzZSBpZiAoZWxlbWVudHMuaW5jbHVkZXMoXCJCb3hcIikpIHtcblx0XHRcdFx0XHR1aUVsZW1lbnRUb1VzZSA9IFwiQm94XCI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0bWVyZ2VkVUlEZWNpc2lvbiA9IHtcblx0XHRcdFx0bWVzc2FnZXNUb1Nob3c6IGFsbE1lc3NhZ2VzVG9TaG93LFxuXHRcdFx0XHR1aUVsZW1lbnRUb1VzZSxcblx0XHRcdFx0Y29udGV4dE5lZWRzRXRhZ1JlZnJlc2g6IG9sZFVJRGVjaXNpb25zLmNvbnRleHROZWVkc0V0YWdSZWZyZXNoIHx8IG5ld1VJRGVjaXNpb25zLmNvbnRleHROZWVkc0V0YWdSZWZyZXNoLFxuXHRcdFx0XHRjb250YWluc0JvdW5kVHJhbnNpdGlvbjogb2xkVUlEZWNpc2lvbnMuY29udGFpbnNCb3VuZFRyYW5zaXRpb24gfHwgbmV3VUlEZWNpc2lvbnMuY29udGFpbnNCb3VuZFRyYW5zaXRpb25cblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdG1lcmdlZFVJRGVjaXNpb24gPSBuZXdVSURlY2lzaW9ucztcblx0XHR9XG5cdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiLCBtZXJnZWRVSURlY2lzaW9uKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgaGVsZCBrZXkuXG5cdCAqIEBwYXJhbSBpbktleSBLZXkgdG8gcmVtb3ZlLlxuXHQgKi9cblx0cmVtb3ZlSG9sZEtleShpbktleT86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmIChpbktleSAmJiB0aGlzLmhvbGRLZXlzLmluY2x1ZGVzKGluS2V5KSkge1xuXHRcdFx0dGhpcy5ob2xkS2V5cy5zcGxpY2UodGhpcy5ob2xkS2V5cy5pbmRleE9mKGluS2V5KSwgMSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIFVJIEVsZW1lbnQgd2l0aCBtZXNzYWdlcyBzaG91bGQgYmUgc2hvd24uXG5cdCAqIEByZXR1cm5zIEJvb2xlYW5cblx0ICovXG5cdGNoZWNrVG9TaG93VUlFbGVtZW50KCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLmhvbGRNc2dzVG9TaG93ICYmICh0aGlzLmhvbGRLZXlzLmxlbmd0aCA+IDAgPyBmYWxzZSA6IHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhvbGQgbWVzc2FnZXMgZm9yIHRoZSBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbFxuXHQgKi9cblx0aG9sZE1lc3NhZ2VzRm9yQ29udHJvbChjb250cm9sOiBDb250cm9sKTogdm9pZCB7XG5cdFx0Y29uc3QgaWRlbnRpZmllciA9IGNvbnRyb2wuZ2V0SWQoKTtcblx0XHR0aGlzLnJlZ2lzdGVyVG9Ib2xkTWVzc2FnZXMoaWRlbnRpZmllcik7XG5cdH1cblxuXHQvKipcblx0ICogUmVsZWFzZSBtZXNzYWdlIGhvbGQgYnkgYSBjb250cm9sLlxuXHQgKiBAcGFyYW0gY29udHJvbFxuXHQgKi9cblx0YXN5bmMgcmVsZWFzZUhvbGRCeUNvbnRyb2woY29udHJvbD86IENvbnRyb2wpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBpZGVudGlmaWVyID0gY29udHJvbD8uZ2V0SWQoKTtcblx0XHR0aGlzLnJlbW92ZUhvbGRLZXkoaWRlbnRpZmllcik7XG5cdFx0Y29uc3QgdWlFbGVtZW50SXNBdmFpbGFibGUgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIpO1xuXHRcdCh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpPy5zZXRQcm9wZXJ0eShcblx0XHRcdFwiL21lc3NhZ2VVSUVsZW1lbnRJc0F2YWlsYWJsZVwiLFxuXHRcdFx0dWlFbGVtZW50SXNBdmFpbGFibGU/LnRoZW4oXG5cdFx0XHRcdGFzeW5jIGZ1bmN0aW9uICh0aGlzOiBNZXNzYWdlSGFuZGxlcik6IFByb21pc2U8dm9pZD4ge1xuXHRcdFx0XHRcdHJldHVybiB0aGlzLnNob3dNZXNzYWdlc1dpdGhDb25kdGlvbnMoKTtcblx0XHRcdFx0fS5iaW5kKHRoaXMpXG5cdFx0XHQpXG5cdFx0KTtcblx0XHRhd2FpdCB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3dzIGEgbWVzc2FnZSBwYWdlIG9yIGEgbWVzc2FnZSBkaWFsb2cgYmFzZWQgb24gdGhlIG1lc3NhZ2VzIGluIHRoZSBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHBhcmFtIFtwYXJhbWV0ZXJzXVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgbWVzc2FnZSBkaWFsb2cgb3Igd2hlbiBuYXZpZ2F0aW9uIHRvIHRoZSBtZXNzYWdlIHBhZ2UgaXMgY29tcGxldGUuIElmIHRoZXJlIGFyZSBubyBtZXNzYWdlc1xuXHQgKiB0byBiZSBzaG93biwgdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQgaW1tZWRpYXRlbHlcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZmluYWxFeHRlbnNpb24oKVxuXHRhc3luYyBzaG93TWVzc2FnZXMocGFyYW1ldGVycz86IFNob3dNZXNzYWdlc1BhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQgfCBib29sZWFuIHwgRGlhbG9nPiB7XG5cdFx0Y29uc3QgbWVzc2FnZVBhZ2VQYXJhbWV0ZXJzID0gdGhpcy5fY2hlY2tOYXZpZ2F0aW9uVG9FcnJvclBhZ2UocGFyYW1ldGVycyk7XG5cblx0XHRpZiAobWVzc2FnZVBhZ2VQYXJhbWV0ZXJzKSB7XG5cdFx0XHQvLyBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UuXG5cdFx0XHQvLyBoYW5kbGVyIGJlZm9yZSBwYWdlIG5hdmlnYXRpb24gaXMgdHJpZ2dlcmVkLCBmb3IgZXhhbXBsZSB0byBjbG9zZSB0aGUgYWN0aW9uIHBhcmFtZXRlciBkaWFsb2dcblx0XHRcdGlmIChwYXJhbWV0ZXJzPy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaykge1xuXHRcdFx0XHRwYXJhbWV0ZXJzLm1lc3NhZ2VQYWdlTmF2aWdhdGlvbkNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdG1lc3NhZ2VQYWdlUGFyYW1ldGVycy5oYW5kbGVTaGVsbEJhY2sgPSAhcGFyYW1ldGVycz8uc2hlbGxCYWNrO1xuXHRcdFx0dGhpcy5yZW1vdmVUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IExpYnJhcnkuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29yZVwiKSE7XG5cblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTxib29sZWFuPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgdG8gc2V0IGEgdGltZW91dCB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZXNcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Ly8gY2xlYXIgYWxsIGhvbGQga2V5cyBhcyB3ZSBuYXZpZ2F0ZSB0byBtZXNzYWdlIHBhZ2UuXG5cdFx0XHRcdFx0dGhpcy5yZXNldEhvbGRLZXlzKCk7XG5cblx0XHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0XHR0aGlzLmJhc2UuX3JvdXRpbmdcblx0XHRcdFx0XHRcdC5uYXZpZ2F0ZVRvTWVzc2FnZVBhZ2UoXG5cdFx0XHRcdFx0XHRcdHBhcmFtZXRlcnM/LmlzRGF0YVJlY2VpdmVkRXJyb3IgPT09IHRydWVcblx0XHRcdFx0XHRcdFx0XHQ/IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19DT01NT05fU0FQRkVfREFUQV9SRUNFSVZFRF9FUlJPUlwiKVxuXHRcdFx0XHRcdFx0XHRcdDogb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX01FU1NBR0VfSEFORExJTkdfU0FQRkVfNTAzX1RJVExFXCIpLFxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlUGFnZVBhcmFtZXRlcnNcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHQuY2F0Y2gocmVqZWN0KTtcblx0XHRcdFx0fSwgMCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBkaWFsb2dcblx0XHRcdHJldHVybiB0aGlzLnNob3dNZXNzYWdlRGlhbG9nKHBhcmFtZXRlcnMpO1xuXHRcdH1cblx0fVxufVxuZXhwb3J0IGRlZmF1bHQgTWVzc2FnZUhhbmRs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
464
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNZXNzYWdlSGFuZGxlciIsIl9kZWMiLCJkZWZpbmVVSTVDbGFzcyIsIl9kZWMyIiwibWV0aG9kT3ZlcnJpZGUiLCJfZGVjMyIsInByaXZhdGVFeHRlbnNpb24iLCJfZGVjNCIsImV4dGVuc2libGUiLCJPdmVycmlkZUV4ZWN1dGlvbiIsIkluc3RlYWQiLCJfZGVjNSIsIl9kZWM2IiwiX2RlYzciLCJwdWJsaWNFeHRlbnNpb24iLCJfZGVjOCIsIl9kZWM5IiwiX2RlYzEwIiwiZmluYWxFeHRlbnNpb24iLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJfdGhpcyIsImNhbGwiLCJzdHJpY3RXYXJuaW5nTWVzc2FnZXMiLCJob2xkS2V5cyIsImhvbGRNc2dzVG9TaG93IiwiX2luaGVyaXRzTG9vc2UiLCJfcHJvdG8iLCJwcm90b3R5cGUiLCJvbkluaXQiLCJpbnRlcm5hbE1vZGVsIiwiYmFzZSIsImdldEFwcENvbXBvbmVudCIsImdldE1vZGVsIiwic2V0UHJvcGVydHkiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFkZFdhcm5pbmdNZXNzYWdlc1RvTWVzc2FnZUhhbmRsZXIiLCJhTWVzc2FnZXMiLCJjb25jYXQiLCJpc1N0cmljdFdhcm5pbmdNZXNzYWdlIiwib01lc3NhZ2UiLCJmaW5kIiwibWVzc2FnZSIsImdldENvZGUiLCJnZXRNZXNzYWdlIiwiZ2V0VHlwZSIsImdldERlc2NyaXB0aW9uVXJsIiwiZGVlcEVxdWFsIiwiZ2V0VGFyZ2V0cyIsImdldFBlcnNpc3RlbnQiLCJjbGVhclN0cmljdFdhcm5pbmdNZXNzYWdlcyIsImZpbHRlckVycm9yTWVzc2FnZXMiLCJtZXNzYWdlcyIsImZpbHRlciIsIk1lc3NhZ2VUeXBlIiwiRXJyb3IiLCJnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZyIsImZpbHRlckNvbnRleHRCb3VuZE1lc3NhZ2VzIiwidHJhbnNpdGlvbk1lc3NhZ2VzIiwiY29udGV4dCIsImJlZm9yZVNob3dNZXNzYWdlQnV0dG9uIiwiX21lc3NhZ2VEZXRhaWxzIiwicmVnaXN0ZXJUb0hvbGRNZXNzYWdlcyIsImtleSIsInVuaXF1ZUtleSIsInVpZCIsImluY2x1ZGVzIiwicHVzaCIsInJlc2V0SG9sZEtleXMiLCJzaG93TWVzc2FnZURpYWxvZyIsIm1QYXJhbWV0ZXJzIiwiZ2V0UHJvcGVydHkiLCJtZXNzYWdlc0luTW9kZWwiLCJNZXNzYWdpbmciLCJnZXRNZXNzYWdlTW9kZWwiLCJnZXREYXRhIiwiZHVwbGljYXRlV2FybmluZ01lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlcyIsImN1c3RvbU1lc3NhZ2VzIiwib09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCIsImdldFZpZXciLCJnZXRCaW5kaW5nQ29udGV4dCIsInZpZXdUeXBlIiwiZ2V0Vmlld0RhdGEiLCJjb252ZXJ0ZXJUeXBlIiwiaXNPcGVyYXRpb25EaWFsb2dPcGVuIiwiYlNob3dCb3VuZE1lc3NhZ2VzIiwib0JpbmRpbmdDb250ZXh0IiwicmVqZWN0Iiwic2V0VGltZW91dCIsInByb2Nlc3NBbmRTaG93TWVzc2FnZXMiLCJiaW5kIiwicGFyYW1ldGVycyIsImJpbmRpbmdDb250ZXh0Iiwic2hvd0JvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwic3VjY2VzcyIsImZhaWx1cmUiLCJjb25jdXJyZW50RWRpdEZsYWciLCJjb250cm9sIiwic0FjdGlvbk5hbWUiLCJvbkJlZm9yZVNob3dNZXNzYWdlIiwidW5Ib2xkS2V5IiwiZm9yY2VTaG93VUlFbGVtZW50Iiwib3ZlcnJpZGVVSURlY2lzaW9uIiwic2hvd0JvdW5kU3RhdGVNZXNzYWdlcyIsIm5ld1VJRGVjaXNpb25zIiwibWVzc2FnZUhhbmRsaW5nIiwiZ2V0VUlEZWNpc2lvbnMiLCJnZXRSZXNvdXJjZU1vZGVsIiwidXBkYXRlVUlEZWNpc2lvbnMiLCJyZW1vdmVIb2xkS2V5IiwiZ2V0SWQiLCJ1aUVsZW1lbnRJc0F2YWlsYWJsZSIsInRoZW4iLCJzaG93TWVzc2FnZXNXaXRoQ29uZHRpb25zIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2hvd1VJRWxlbWVudCIsImNoZWNrVG9TaG93VUlFbGVtZW50IiwicmV0Iiwic2hvd01lc3NhZ2VzSW5VSSIsImVyciIsIkxvZyIsImVycm9yIiwiaW5mbyIsInJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyIsImtlZXBCb3VuZE1lc3NhZ2UiLCJrZWVwVW5ib3VuZE1lc3NhZ2UiLCJzUGF0aFRvQmVSZW1vdmVkIiwicmVtb3ZlQm91bmRUcmFuc2l0aW9uTWVzc2FnZXMiLCJyZW1vdmVVbmJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzIiwiX2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlIiwiYVVuYm91bmRNZXNzYWdlcyIsImdldE1lc3NhZ2VzIiwiYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyIsImFDdXN0b21NZXNzYWdlcyIsImJJc1N0aWNreUVkaXRNb2RlIiwiQ29tbW9uVXRpbHMiLCJpc1N0aWNreUVkaXRNb2RlIiwibU1lc3NhZ2VQYWdlUGFyYW1ldGVycyIsImlzRGF0YVJlY2VpdmVkRXJyb3IiLCJ0aXRsZSIsImRlc2NyaXB0aW9uIiwibmF2aWdhdGVCYWNrVG9PcmlnaW4iLCJlcnJvclR5cGUiLCJpc0luaXRpYWxMb2FkNTAzRXJyb3IiLCJvVGVjaG5pY2FsRGV0YWlscyIsImdldFRlY2huaWNhbERldGFpbHMiLCJodHRwU3RhdHVzIiwiX2dldEhUVFA1MDNNZXNzYWdlUGFyYW1ldGVycyIsInRlY2huaWNhbERldGFpbHMiLCJtZXNzYWdlUGFnZVBhcmFtZXRlcnMiLCJzZWNvbmRzQmVmb3JlUmV0cnkiLCJyZXRyeUFmdGVyIiwiX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyIiwicmV0cnlBZnRlck1lc3NhZ2UiLCJnZXRSZXRyeUFmdGVyTWVzc2FnZSIsImRSZXRyeUFmdGVyIiwiZEN1cnJlbnREYXRlVGltZSIsIkRhdGUiLCJpQ3VycmVudERhdGVUaW1lSW5NaWxsaVNlY29uZHMiLCJnZXRUaW1lIiwiaVJldHJ5QWZ0ZXJEYXRlVGltZUluTWlsbGlTZWNvbmRzIiwiaVNlY29uZHNCZWZvcmVSZXRyeSIsIm9sZFVJRGVjaXNpb25zIiwiYWxsTWVzc2FnZXNUb1Nob3ciLCJtZXJnZWRVSURlY2lzaW9uIiwibWVzc2FnZXNUb1Nob3ciLCJBcnJheSIsImZyb20iLCJTZXQiLCJlbGVtZW50cyIsInVpRWxlbWVudFRvVXNlIiwiY29udGV4dE5lZWRzRXRhZ1JlZnJlc2giLCJjb250YWluc0JvdW5kVHJhbnNpdGlvbiIsImluS2V5Iiwic3BsaWNlIiwiaW5kZXhPZiIsImhvbGRNZXNzYWdlc0ZvckNvbnRyb2wiLCJpZGVudGlmaWVyIiwicmVsZWFzZUhvbGRCeUNvbnRyb2wiLCJzaG93TWVzc2FnZXMiLCJtZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjayIsImhhbmRsZVNoZWxsQmFjayIsInNoZWxsQmFjayIsIm9SZXNvdXJjZUJ1bmRsZSIsIkxpYnJhcnkiLCJnZXRSZXNvdXJjZUJ1bmRsZUZvciIsIl9yb3V0aW5nIiwibmF2aWdhdGVUb01lc3NhZ2VQYWdlIiwiZ2V0VGV4dCIsImNhdGNoIiwiQ29udHJvbGxlckV4dGVuc2lvbiIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIk1lc3NhZ2VIYW5kbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IGRlZXBFcXVhbCBmcm9tIFwic2FwL2Jhc2UvdXRpbC9kZWVwRXF1YWxcIjtcbmltcG9ydCB1aWQgZnJvbSBcInNhcC9iYXNlL3V0aWwvdWlkXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXh0ZW5zaWJsZSwgZmluYWxFeHRlbnNpb24sIG1ldGhvZE92ZXJyaWRlLCBwcml2YXRlRXh0ZW5zaW9uLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCB0eXBlIHtcblx0TWVzc2FnZVRlY2huaWNhbERldGFpbHMsXG5cdE1lc3NhZ2VVSURlY2lzaW9ucyxcblx0U2hvd01lc3NhZ2VQYXJhbWV0ZXJzLFxuXHRTdXBwb3J0ZWRVSUVsZW1lbnRcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL21lc3NhZ2VIYW5kbGVyL21lc3NhZ2VIYW5kbGluZ1wiO1xuaW1wb3J0IG1lc3NhZ2VIYW5kbGluZyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvbWVzc2FnZUhhbmRsZXIvbWVzc2FnZUhhbmRsaW5nXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIERpYWxvZyBmcm9tIFwic2FwL20vRGlhbG9nXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgTWVzc2FnaW5nIGZyb20gXCJzYXAvdWkvY29yZS9NZXNzYWdpbmdcIjtcbmltcG9ydCB0eXBlIE1lc3NhZ2UgZnJvbSBcInNhcC91aS9jb3JlL21lc3NhZ2UvTWVzc2FnZVwiO1xuaW1wb3J0IE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvdWkvY29yZS9tZXNzYWdlL01lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCB0eXBlIE9EYXRhVjRDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCIuLi9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcblxudHlwZSBPYmplY3RXaXRoQ29udmVydGVyVHlwZSA9IG9iamVjdCAmIHtcblx0Y29udmVydGVyVHlwZTogc3RyaW5nO1xufTtcbnR5cGUgTmF2aWdhdGlvblRvRXJyb3JQYWdlUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0Y29uY3VycmVudEVkaXRGbGFnPzogYm9vbGVhbjtcblx0aXNEYXRhUmVjZWl2ZWRFcnJvcj86IGJvb2xlYW47XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0aXNJbml0aWFsTG9hZDUwM0Vycm9yPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VSZXN1bHQgPSB7XG5cdHRpdGxlPzogc3RyaW5nO1xuXHRkZXNjcmlwdGlvbj86IHN0cmluZztcblx0ZXJyb3JUeXBlPzogc3RyaW5nO1xuXHRuYXZpZ2F0ZUJhY2tUb09yaWdpbj86IGJvb2xlYW47XG5cdGhhbmRsZVNoZWxsQmFjaz86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgQ3VzdG9tTWVzc2FnZSA9IHtcblx0Y29kZTogc3RyaW5nO1xuXHR0ZXh0OiBzdHJpbmc7XG5cdHBlcnNpc3RlbnQ6IGJvb2xlYW47XG5cdHR5cGU6IE1lc3NhZ2VUeXBlO1xufTtcbmV4cG9ydCB0eXBlIFNob3dNZXNzYWdlRGlhbG9nUGFyYW1ldGVyID0ge1xuXHRjdXN0b21NZXNzYWdlcz86IEN1c3RvbU1lc3NhZ2VbXTtcblx0aXNPcGVyYXRpb25EaWFsb2dPcGVuPzogYm9vbGVhbjtcblx0Y29udGV4dD86IENvbnRleHQ7XG5cdGNvbmN1cnJlbnRFZGl0RmxhZz86IGJvb2xlYW47XG5cdGNvbnRyb2w/OiBDb250cm9sO1xuXHRzQWN0aW9uTmFtZT86IHN0cmluZztcblx0YVNlbGVjdGVkQ29udGV4dHM/OiBDb250ZXh0IHwgQ29udGV4dFtdIHwgbnVsbDtcblx0b25CZWZvcmVTaG93TWVzc2FnZT86IChtZXNzYWdlczogTWVzc2FnZVtdLCBzaG93TWVzc2FnZVBhcmFtZXRlcnM6IFNob3dNZXNzYWdlUGFyYW1ldGVycykgPT4gU2hvd01lc3NhZ2VQYXJhbWV0ZXJzO1xuXHR1bkhvbGRLZXk/OiBzdHJpbmc7XG5cdG92ZXJyaWRlVUlEZWNpc2lvbj86IGJvb2xlYW47XG5cdHNob3dCb3VuZFN0YXRlTWVzc2FnZXM/OiBib29sZWFuO1xuXHRib3VuZEFjdGlvbk5hbWU/OiBzdHJpbmc7XG5cdGVudGl0eVNldD86IHN0cmluZztcbn07XG5cbmV4cG9ydCB0eXBlIFNob3dNZXNzYWdlc1BhcmFtZXRlcnMgPSBTaG93TWVzc2FnZURpYWxvZ1BhcmFtZXRlciAmIHtcblx0bWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2s/OiBGdW5jdGlvbjtcblx0c2hlbGxCYWNrPzogRnVuY3Rpb24gfCBib29sZWFuO1xuXHRpc0RhdGFSZWNlaXZlZEVycm9yPzogYm9vbGVhbjtcblx0aXNJbml0aWFsTG9hZDUwM0Vycm9yPzogYm9vbGVhbjtcblx0dGl0bGU/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufTtcbi8qKlxuICogRGVmaW5lcyB0aGUgbWVzc2FnZSBkZXRhaWxzIHJlbGV2YW50IGZvciB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jayB0byBkaXNwbGF5IGEgcG9wb3Zlci5cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IHR5cGUgTWVzc2FnZURldGFpbCA9IHtcblx0bWVzc2FnZTogTWVzc2FnZTtcblx0Z3JvdXBOYW1lPzogc3RyaW5nO1xuXHRhY3RpdmVUaXRsZUhhbmRsZXI/OiBGdW5jdGlvbjtcbn07XG5cbi8qKlxuICogQSBjb250cm9sbGVyIGV4dGVuc2lvbiBvZmZlcmluZyBtZXNzYWdlIGhhbmRsaW5nLlxuICogQGhpZGVjb25zdHJ1Y3RvclxuICogQHB1YmxpY1xuICogQHNpbmNlIDEuOTAuMFxuICovXG5AZGVmaW5lVUk1Q2xhc3MoXCJzYXAuZmUuY29yZS5jb250cm9sbGVyZXh0ZW5zaW9ucy5NZXNzYWdlSGFuZGxlclwiKVxuY2xhc3MgTWVzc2FnZUhhbmRsZXIgZXh0ZW5kcyBDb250cm9sbGVyRXh0ZW5zaW9uIHtcblx0cHJpdmF0ZSBzdHJpY3RXYXJuaW5nTWVzc2FnZXM6IE1lc3NhZ2VbXSA9IFtdO1xuXG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0cHJvdGVjdGVkIGhvbGRLZXlzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdHByaXZhdGUgaG9sZE1zZ3NUb1Nob3cgPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHR9XG5cblx0QG1ldGhvZE92ZXJyaWRlKClcblx0b25Jbml0KCk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiLCB1bmRlZmluZWQpO1xuXHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIsIFByb21pc2UucmVzb2x2ZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGRzIHdhcm5pbmcgbWVzc2FnZXMgdG8gdGhlIG1lc3NhZ2UgaGFuZGxlci5cblx0ICogQHBhcmFtIGFNZXNzYWdlcyBUaGUgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZXMgdG8gYmUgYWRkZWRcblx0ICovXG5cdGFkZFdhcm5pbmdNZXNzYWdlc1RvTWVzc2FnZUhhbmRsZXIoYU1lc3NhZ2VzOiBNZXNzYWdlW10pOiB2b2lkIHtcblx0XHR0aGlzLnN0cmljdFdhcm5pbmdNZXNzYWdlcyA9IHRoaXMuc3RyaWN0V2FybmluZ01lc3NhZ2VzLmNvbmNhdChhTWVzc2FnZXMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgYSBtZXNzYWdlIGlzIGEgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZSB0aGF0IHdhcyByZWNlaXZlZCBwcmV2aW91c2x5LlxuXHQgKiBAcGFyYW0gb01lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgbWVzc2FnZSBpcyBhIHN0cmljdCB3YXJuaW5nIG1lc3NhZ2Vcblx0ICovXG5cdGlzU3RyaWN0V2FybmluZ01lc3NhZ2Uob01lc3NhZ2U6IE1lc3NhZ2UpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0dGhpcy5zdHJpY3RXYXJuaW5nTWVzc2FnZXMuZmluZCgobWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0Q29kZSgpID09PSBvTWVzc2FnZS5nZXRDb2RlKCkgJiZcblx0XHRcdFx0XHRtZXNzYWdlLmdldE1lc3NhZ2UoKSA9PT0gb01lc3NhZ2UuZ2V0TWVzc2FnZSgpICYmXG5cdFx0XHRcdFx0bWVzc2FnZS5nZXRUeXBlKCkgPT09IG9NZXNzYWdlLmdldFR5cGUoKSAmJlxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKSA9PT0gb01lc3NhZ2UuZ2V0RGVzY3JpcHRpb25VcmwoKSAmJlxuXHRcdFx0XHRcdGRlZXBFcXVhbChtZXNzYWdlLmdldFRhcmdldHMoKSwgb01lc3NhZ2UuZ2V0VGFyZ2V0cygpKSAmJlxuXHRcdFx0XHRcdG1lc3NhZ2UuZ2V0UGVyc2lzdGVudCgpID09PSBvTWVzc2FnZS5nZXRQZXJzaXN0ZW50KClcblx0XHRcdFx0KTtcblx0XHRcdH0pICE9PSB1bmRlZmluZWRcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFycyBhbGwgc3RyaWN0IHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0aGUgbWVzc2FnZSBoYW5kbGVyLlxuXHQgKi9cblx0Y2xlYXJTdHJpY3RXYXJuaW5nTWVzc2FnZXMoKTogdm9pZCB7XG5cdFx0dGhpcy5zdHJpY3RXYXJuaW5nTWVzc2FnZXMgPSBbXTtcblx0fVxuXG5cdGZpbHRlckVycm9yTWVzc2FnZXMobWVzc2FnZXM6IE1lc3NhZ2VbXSk6IE1lc3NhZ2VbXSB7XG5cdFx0cmV0dXJuIG1lc3NhZ2VzLmZpbHRlcigobWVzc2FnZSkgPT4gbWVzc2FnZS5nZXRUeXBlKCkgPT09IE1lc3NhZ2VUeXBlLkVycm9yKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgaW5kaXZpZHVhbGx5IG92ZXJyaWRkZW4gYnkgY29uc3VtaW5nIGNvbnRyb2xsZXJzLCBidXQgbm90IHRvIGJlIGNhbGxlZCBkaXJlY3RseS5cblx0ICogVGhlIG92ZXJyaWRlIGV4ZWN1dGlvbiBpczoge0BsaW5rIHNhcC51aS5jb3JlLm12Yy5PdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkfS5cblx0ICpcblx0ICogSWYgdGhlIGJvdW5kIG1lc3NhZ2VzIGFyZSBzaG93biB0byB0aGUgdXNlciB3aXRoIGEgZGlmZmVyZW50IGNvbnRyb2wgbGlrZSB0aGUgKFRPRE86TGluaykgTWVzc2FnZUJ1dHRvblxuXHQgKiB0aGlzIG1ldGhvZCBoYXMgdG8gYmUgb3ZlcnJpZGRlbi5cblx0ICogQHJldHVybnMgRGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCBib3VuZCBtZXNzYWdlcyBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKi9cblx0QHByaXZhdGVFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHRnZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IGJvdW5kIG1lc3NhZ2VzIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIGRpYWxvZy5cblx0ICpcblx0ICogRm9yIHRoZSBvYmplY3QgcGFnZSBpZiB0aGUgYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGluIHRoZSBtZXNzYWdlIHN0cmlwLCB0aGVuIHJlbW92ZSB0aGF0IGZyb20gdGhlIGRpYWxvZyB0byBhdm9pZCBkdXBsaWNhdGUgbWVzc2FnZXMuXG5cdCAqXG5cdCAqIE9ubHkgcmVtb3ZlIHRoZSBtZXNzYWdlcyBpZiBtb3JlIHRoYW4gb25lIG1lc3NhZ2UgaXMgcHJlc2VudCBpbiB0aGUgbWVzc2FnZSBtb2RlbC5cblx0ICogQHBhcmFtIHRyYW5zaXRpb25NZXNzYWdlcyBUaGUgbWVzc2FnZXMgdGhhdCBhcmUgc2hvd24gaW4gdGhlIG1lc3NhZ2UgZGlhbG9nLlxuXHQgKiBAcGFyYW0gY29udGV4dCBUaGUgY29udGV4dCBvZiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEByZXR1cm5zIFJldHVybnMgdGhlIGJvdW5kIG1lc3NhZ2VzIHdoaWNoIHNob3VsZCBiZSBzaG93biBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqL1xuXHRAcHJpdmF0ZUV4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkluc3RlYWQpXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcblx0ZmlsdGVyQ29udGV4dEJvdW5kTWVzc2FnZXModHJhbnNpdGlvbk1lc3NhZ2VzOiBNZXNzYWdlW10sIGNvbnRleHQ6IENvbnRleHQpOiBNZXNzYWdlW10ge1xuXHRcdHJldHVybiB0cmFuc2l0aW9uTWVzc2FnZXM7XG5cdH1cblxuXHQvKipcblx0ICogQWxsb3dzIHRoZSBjb25zdW1lciBvZiB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jayB0byBkZWNpZGUgd2hpY2ggYm91bmQgbWVzc2FnZXMgYXJlIHNob3duIGFuZCBob3cuXG5cdCAqXG5cdCAqIFRoaXMgaG9vayBpcyBjYWxsZWQgd2hlbiB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jayBkZXRlY3RzIGEgY2hhbmdlIGluIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKiBUaGUgaG9va3MgYWxsb3cgeW91IHRvIGRlZmluZSB0aGUgYmVoYXZpb3IgZm9yIG1lc3NhZ2VzIGluIHRoZSBNZXNzYWdlQnV0dG9uIGJ1aWxkaW5nIGJsb2NrLlxuXHQgKlxuXHQgKiBDb25zdW1lcnMgYXJlIGFibGUgdG8gZG8gdGhlIGZvbGxvd2luZyB3aXRoIHRoaXMgaG9vazpcblx0ICpcblx0ICogMS4gRmlsdGVyIG91dCBtZXNzYWdlcyBzbyB0aGF0IHRoZXkgYXJlIG5vdCBzaG93biBvbiB0aGUgbWVzc2FnZSBidXR0b24uXG5cdCAqIDIuIEdyb3VwIG1lc3NhZ2VzIGJhc2VkIG9uIHRoZWlyIFVJLlxuXHQgKiAzLiBQcm92aWRlIGEgcHJlc3NlciBoYW5kbGVyIGlmIHRoZSBtZXNzYWdlIHNob3VsZCBkaXNwbGF5IGFzIGEgbGluay5cblx0ICogQHBhcmFtIF9tZXNzYWdlRGV0YWlscyBPYmplY3QgY29udGFpbmluZyB0aGUgZGV0YWlscyByZWxhdGVkIHRvIHRoZSBtZXNzYWdlLlxuXHQgKiBAcGFyYW0gX21lc3NhZ2VEZXRhaWxzLm1lc3NhZ2UgVGhlIG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZS4gSXQgbXVzdCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0bHkuXG5cdCAqIEBwYXJhbSBfbWVzc2FnZURldGFpbHMuZ3JvdXBOYW1lIFRoZSBncm91cCBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBtZXNzYWdlLlxuXHQgKiBAcGFyYW0gX21lc3NhZ2VEZXRhaWxzLmFjdGl2ZVRpdGxlSGFuZGxlciBGdW5jdGlvbiB0byBoYW5kbGUgdGhlIGNsaWNrIGV2ZW50IG9uIGEgbWVzc2FnZSBpbiB0aGUgTWVzc2FnZUJ1dHRvbiBidWlsZGluZyBibG9jay5cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgbXVzdCBiZSByZXR1cm5lZCBieSB0aGUgb3ZlcnJpZGRlbiBtZXRob2QuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShcIkFmdGVyQXN5bmNcIilcblx0YXN5bmMgYmVmb3JlU2hvd01lc3NhZ2VCdXR0b24oX21lc3NhZ2VEZXRhaWxzOiBNZXNzYWdlRGV0YWlsW10pOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVnaXN0ZXIgdG8gaG9sZCBtZXNzYWdlcyB1bml0bCBhIHByb2Nlc3MgaXMgY29tcGxldGUuXG5cdCAqXG5cdCAqIFRoZSBjYWxsZXIgY2FuIHJlZ2lzdGVyIHRvIGhvbGQgdGhlIG1lc3NhZ2UgaGFuZGxlciBmcm9tIHNob3dpbmcgbWVzc2FnZXMgdW50aWwgdGhlIGNhbGxlcidzIHByb2Nlc3NlcyBhcmUgY29tcGxldGVkLlxuXHQgKiBPbiByZWdpc3RlcmluZyB0aGUgY2FsbGVyIGlzIHJldHVybmVkIGEgdW5pcXVlIGtleS5cblx0ICogVGhlIG1lc3NhZ2VzIHdpbGwgbm90IGJlIHNob3duIGluIHRoZSBVSSB3aXRoIHN1YnNlcXVlbnQgJ3Nob3dNZXNzYWdlRGlhbG9nKCknIGNhbGxzLlxuXHQgKiBUaGUgY2FsbGVyIG5lZWRzIHRvIHVzZSAnc2hvd01lc3NhZ2VEaWFsb2coPGtleT4pJyBhdCB0aGUgZW5kIG9mIGFsbCBoaXMgcHJvY2Vzc2VzIHRvIHNob3cgdGhlIG1lc3NhZ2VzIGluIHRoZSBVSS5cblx0ICpcblx0ICogSWYgbXVsdGlwbGUgb3duZXJzIHJlZ2lzdGVyIHNpbXVsdGFuZW91c2x5LCB0aGVuIG1lc3NhZ2VzIGFyZSBzaG93biBpbiB0aGUgVUkgb25seSBhZnRlciAnc2hvd01lc3NhZ2VEaWFsb2coPHJlc3BlY3RpdmVfa2V5PiknIGlzIGNhbGxlZCBieSBhbGwgdGhlIHByb2Nlc3Nlcycgb3duZXJzLlxuXHQgKiBAcGFyYW0ga2V5IFVuaXF1ZSBpZGVudGlmaWVyIHRvIHVzZSwgSWYgbm90IHByb3ZpZGVkLCBhIFVJRCB3b3VsZCBiZSBjcmVhdGVkIGFuZCB1c2VkIHRvIHJlZ2lzdGVyLlxuXHQgKiBAcmV0dXJucyBVbmlxdWUgS2V5IHRvIGJlIHVzZWQgYnkgdGhlIGNhbGxlciB0byBzaG93IG1lc3NhZ2VzIGF0IGEgbGF0ZXIgcG9pbnQgb2YgdGltZS5cblx0ICovXG5cdHJlZ2lzdGVyVG9Ib2xkTWVzc2FnZXMoa2V5Pzogc3RyaW5nKTogc3RyaW5nIHtcblx0XHRjb25zdCB1bmlxdWVLZXkgPSBrZXkgPz8gdWlkKCk7XG5cdFx0aWYgKCF0aGlzLmhvbGRLZXlzLmluY2x1ZGVzKHVuaXF1ZUtleSkpIHtcblx0XHRcdHRoaXMuaG9sZEtleXMucHVzaCh1bmlxdWVLZXkpO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5pcXVlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIENsZWFyIGFsbCBleGlzdGluZyBoZWxkIGtleXMuXG5cdCAqL1xuXHRyZXNldEhvbGRLZXlzKCk6IHZvaWQge1xuXHRcdHRoaXMuaG9sZEtleXMgPSBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgZGlhbG9nIHdpdGggdHJhbnNpdGlvbiBtZXNzYWdlcyBpZiB0aGVyZSBhcmUgYW55LlxuXHQgKiBUaGUgbWVzc2FnZSBkaWFsb2cgaXMgc2hvd24gYXMgYSBtb2RhbCBkaWFsb2cuIE9uY2UgdGhlIHVzZXIgY29uZmlybXMgdGhlIGRpYWxvZywgYWxsIHRyYW5zaXRpb24gbWVzc2FnZXNcblx0ICogYXJlIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbC4gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBtZXNzYWdlLCBhIGxpc3Qgb2YgbWVzc2FnZXMgaXMgc2hvd24uIFRoZSB1c2VyXG5cdCAqIGNhbiBmaWx0ZXIgb24gbWVzc2FnZSB0eXBlcyBhbmQgY2FuIGRpc3BsYXkgZGV0YWlscyBhcyB3ZWxsIGFzIHRoZSBsb25nIHRleHQuIElmIHRoZXJlIGlzIG9uZSBtZXNzYWdlLFxuXHQgKiB0aGUgZGlhbG9nIGltbWVkaWF0ZWx5IHNob3dzIHRoZSBkZXRhaWxzIG9mIHRoZSBtZXNzYWdlLiBJZiB0aGVyZSBpcyBqdXN0IG9uZSBzdWNjZXNzIG1lc3NhZ2UsIGEgbWVzc2FnZVxuXHQgKiB0b2FzdCBpcyBzaG93biBpbnN0ZWFkLlxuXHQgKiBAcGFyYW0gbVBhcmFtZXRlcnMgUFJJVkFURVxuXHQgKiBAcmV0dXJucyBBIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCBvbmNlIHRoZSB1c2VyIGNsb3NlcyB0aGUgZGlhbG9nLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuOTAuMFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBmaW5hbEV4dGVuc2lvbigpXG5cdGFzeW5jIHNob3dNZXNzYWdlRGlhbG9nKG1QYXJhbWV0ZXJzPzogU2hvd01lc3NhZ2VEaWFsb2dQYXJhbWV0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdC8vIHJlbW92ZSBzdHJpY3Qgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsIGJlZm9yZSBzaG93aW5nIHRoZSBtZXNzYWdlIGRpYWxvZ1xuXHRcdGF3YWl0IGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIpO1xuXG5cdFx0Y29uc3QgbWVzc2FnZXNJbk1vZGVsID0gTWVzc2FnaW5nLmdldE1lc3NhZ2VNb2RlbCgpLmdldERhdGEoKTtcblx0XHRjb25zdCBkdXBsaWNhdGVXYXJuaW5nTWVzc2FnZSA9IG1lc3NhZ2VzSW5Nb2RlbC5maWx0ZXIoKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcblx0XHRcdHJldHVybiB0aGlzLmlzU3RyaWN0V2FybmluZ01lc3NhZ2UobWVzc2FnZSk7XG5cdFx0fSk7XG5cdFx0TWVzc2FnaW5nLnJlbW92ZU1lc3NhZ2VzKGR1cGxpY2F0ZVdhcm5pbmdNZXNzYWdlKTtcblxuXHRcdGNvbnN0IGN1c3RvbU1lc3NhZ2VzID0gbVBhcmFtZXRlcnMgJiYgbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgPyBtUGFyYW1ldGVycy5jdXN0b21NZXNzYWdlcyA6IHVuZGVmaW5lZCxcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQgPSB0aGlzLmJhc2UuZ2V0VmlldygpLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIikgYXMgSW50ZXJuYWxNb2RlbENvbnRleHQ7XG5cdFx0Y29uc3Qgdmlld1R5cGUgPSAodGhpcy5iYXNlLmdldFZpZXcoKS5nZXRWaWV3RGF0YSgpIGFzIE9iamVjdFdpdGhDb252ZXJ0ZXJUeXBlKS5jb252ZXJ0ZXJUeXBlO1xuXHRcdC8vIHNldCBpc0FjdGlvblBhcmFtZXRlckRpYWxvZyBvcGVuIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIHRvIGRlY2lkZSB3aGV0aGVyIG1lc3NhZ2UgZGlhbG9nIHNob3VsZCBvcGVuIG9yIG5vdFxuXHRcdGlmIChtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5pc09wZXJhdGlvbkRpYWxvZ09wZW4gJiYgb09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dCkge1xuXHRcdFx0b09QSW50ZXJuYWxCaW5kaW5nQ29udGV4dC5zZXRQcm9wZXJ0eShcImlzT3BlcmF0aW9uRGlhbG9nT3BlblwiLCB0cnVlKTtcblx0XHR9XG5cdFx0Y29uc3QgYlNob3dCb3VuZE1lc3NhZ2VzID0gdGhpcy5nZXRTaG93Qm91bmRNZXNzYWdlc0luTWVzc2FnZURpYWxvZygpO1xuXHRcdGNvbnN0IG9CaW5kaW5nQ29udGV4dCA9IChcblx0XHRcdG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmNvbnRleHQgPyBtUGFyYW1ldGVycy5jb250ZXh0IDogdGhpcy5nZXRWaWV3KCkuZ2V0QmluZGluZ0NvbnRleHQoKVxuXHRcdCkgYXMgT0RhdGFWNENvbnRleHQ7XG5cdFx0Ly9jb25zdCBiRXRhZ01lc3NhZ2UgPSBtUGFyYW1ldGVycyAmJiBtUGFyYW1ldGVycy5iSGFzRXRhZ01lc3NhZ2U7XG5cdFx0Ly8gcmVzZXQgIGlzT3BlcmF0aW9uRGlhbG9nT3BlblxuXHRcdC8vIGNhbm5vdCBkbyB0aGlzIG9wZXJhdGlvbnMuanMgc2luY2UgaXQgaXMgbm90IGF3YXJlIG9mIHRoZSB2aWV3XG5cdFx0aWYgKG9PUEludGVybmFsQmluZGluZ0NvbnRleHQpIHtcblx0XHRcdG9PUEludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc09wZXJhdGlvbkRpYWxvZ09wZW5cIiwgZmFsc2UpO1xuXHRcdH1cblx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oXG5cdFx0XHRmdW5jdGlvbiAodGhpczogTWVzc2FnZUhhbmRsZXIsIHJlc29sdmU6ICgpID0+IHZvaWQsIHJlamVjdDogKCkgPT4gdm9pZCk6IHZvaWQge1xuXHRcdFx0XHQvLyB3ZSBoYXZlIHRvIHNldCBhIHRpbWVvdXQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzXG5cdFx0XHRcdHNldFRpbWVvdXQoXG5cdFx0XHRcdFx0ZnVuY3Rpb24gKHRoaXM6IE1lc3NhZ2VIYW5kbGVyKTogdm9pZCB7XG5cdFx0XHRcdFx0XHQvLyBUT0RPOiBncmVhdCBBUEkgLSB3aWxsIGJlIGNoYW5nZWQgbGF0ZXJcblx0XHRcdFx0XHRcdHRoaXMucHJvY2Vzc0FuZFNob3dNZXNzYWdlcyhcblx0XHRcdFx0XHRcdFx0bVBhcmFtZXRlcnMgPz8ge30sXG5cdFx0XHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRcdFx0YlNob3dCb3VuZE1lc3NhZ2VzLFxuXHRcdFx0XHRcdFx0XHRjdXN0b21NZXNzYWdlcyA/PyBbXSxcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZSxcblx0XHRcdFx0XHRcdFx0cmVqZWN0LFxuXHRcdFx0XHRcdFx0XHR2aWV3VHlwZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9LmJpbmQodGhpcyksXG5cdFx0XHRcdFx0MFxuXHRcdFx0XHQpO1xuXHRcdFx0fS5iaW5kKHRoaXMpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzIHRoZSBtZXNzYWdlcyBhbmQgc2hvdyB0aGVtIHdoZW4gZXhwZWN0ZWQuXG5cdCAqXG5cdCAqIFdlIGZpbHRlciB0aGUgbWVzc2FnZXMgdG8gc2hvdyBhbmQgaG9sZCB0aGVtIHVudGlsIGFsbCByZWdpc3RlcmVkIHByb2Nlc3NlcyBjYWxsIHNob3dNZXNzYWdlRGlhbG9nIHdpdGggdGhlaXIgcmVzcGVjdGl2ZSBoZWxkIGtleXMuXG5cdCAqIEBwYXJhbSBwYXJhbWV0ZXJzIFBhcmFtZXRlcnMgdG8gc2hvdyBtZXNzYWdlIGRpYWxvZy5cblx0ICogQHBhcmFtIGJpbmRpbmdDb250ZXh0IEJpbmQgY29udGV4dCBvZiB0aGUgcGFnZS5cblx0ICogQHBhcmFtIHNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyBTaG91bGQgYm91bmQgbWVzc2FnZXMgYmUgc2hvd24uXG5cdCAqIEBwYXJhbSBjdXN0b21NZXNzYWdlcyBDdXN0b20gbWVzc2FnZXMgdG8gYWRkLlxuXHQgKiBAcGFyYW0gc3VjY2VzcyBTdWNjZXNzIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0gZmFpbHVyZSBGYWlsdXJlIGNhbGxiYWNrLlxuXHQgKiBAcGFyYW0gdmlld1R5cGUgVmlldyB0eXBlLCBsaXN0IHJlcG9ydCBvciBvYmplY3QgcGFnZS5cblx0ICovXG5cdHByb2Nlc3NBbmRTaG93TWVzc2FnZXMoXG5cdFx0cGFyYW1ldGVyczogU2hvd01lc3NhZ2VEaWFsb2dQYXJhbWV0ZXIsXG5cdFx0YmluZGluZ0NvbnRleHQ6IE9EYXRhVjRDb250ZXh0LFxuXHRcdHNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlczogYm9vbGVhbixcblx0XHRjdXN0b21NZXNzYWdlczogQ3VzdG9tTWVzc2FnZVtdLFxuXHRcdHN1Y2Nlc3M6ICgpID0+IHZvaWQsXG5cdFx0ZmFpbHVyZTogKCkgPT4gdm9pZCxcblx0XHR2aWV3VHlwZT86IHN0cmluZ1xuXHQpOiB2b2lkIHtcblx0XHRjb25zdCB7XG5cdFx0XHRjb25jdXJyZW50RWRpdEZsYWcsXG5cdFx0XHRjb250cm9sLFxuXHRcdFx0c0FjdGlvbk5hbWUsXG5cdFx0XHRvbkJlZm9yZVNob3dNZXNzYWdlLFxuXHRcdFx0dW5Ib2xkS2V5LFxuXHRcdFx0aXNPcGVyYXRpb25EaWFsb2dPcGVuOiBmb3JjZVNob3dVSUVsZW1lbnQgPSBmYWxzZSxcblx0XHRcdG92ZXJyaWRlVUlEZWNpc2lvbixcblx0XHRcdHNob3dCb3VuZFN0YXRlTWVzc2FnZXNcblx0XHR9ID0gcGFyYW1ldGVycztcblx0XHR0aGlzLmhvbGRNc2dzVG9TaG93ID0gdHJ1ZTtcblxuXHRcdC8vIENyZWF0ZSBhIFVJIGRlY2lzaW9uLlxuXHRcdGNvbnN0IG5ld1VJRGVjaXNpb25zID0gbWVzc2FnZUhhbmRsaW5nLmdldFVJRGVjaXNpb25zKFxuXHRcdFx0Y3VzdG9tTWVzc2FnZXMsXG5cdFx0XHRiaW5kaW5nQ29udGV4dCxcblx0XHRcdHNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyxcblx0XHRcdGNvbmN1cnJlbnRFZGl0RmxhZyxcblx0XHRcdGNvbnRyb2wsXG5cdFx0XHRzQWN0aW9uTmFtZSxcblx0XHRcdG9uQmVmb3JlU2hvd01lc3NhZ2UsXG5cdFx0XHR2aWV3VHlwZSxcblx0XHRcdHNob3dCb3VuZFN0YXRlTWVzc2FnZXMsXG5cdFx0XHRwYXJhbWV0ZXJzLFxuXHRcdFx0Z2V0UmVzb3VyY2VNb2RlbCh0aGlzLmdldFZpZXcoKSksXG5cdFx0XHR0aGlzXG5cdFx0KTtcblx0XHR0aGlzLnVwZGF0ZVVJRGVjaXNpb25zKG5ld1VJRGVjaXNpb25zLCBvdmVycmlkZVVJRGVjaXNpb24pO1xuXHRcdHRoaXMucmVtb3ZlSG9sZEtleSh1bkhvbGRLZXkgPz8gY29udHJvbD8uZ2V0SWQoKSk7XG5cdFx0Y29uc3QgdWlFbGVtZW50SXNBdmFpbGFibGUgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKT8uZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRWxlbWVudElzQXZhaWxhYmxlXCIpO1xuXHRcdCh0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWwpPy5zZXRQcm9wZXJ0eShcblx0XHRcdFwiL21lc3NhZ2VVSUVsZW1lbnRJc0F2YWlsYWJsZVwiLFxuXHRcdFx0dWlFbGVtZW50SXNBdmFpbGFibGUudGhlbihcblx0XHRcdFx0YXN5bmMgZnVuY3Rpb24gKHRoaXM6IE1lc3NhZ2VIYW5kbGVyKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0XHRcdFx0cmV0dXJuIHRoaXMuc2hvd01lc3NhZ2VzV2l0aENvbmR0aW9ucyhmb3JjZVNob3dVSUVsZW1lbnQsIHN1Y2Nlc3MsIGZhaWx1cmUpO1xuXHRcdFx0XHR9LmJpbmQodGhpcylcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNob3cgTWVzc2FnZXMgaW4gdGhlIFVJIGJhc2VkIG9uIGNvbmRpdGlvbnMuXG5cdCAqIEBwYXJhbSBmb3JjZVNob3dVSUVsZW1lbnRcblx0ICogQHBhcmFtIHN1Y2Nlc3Ncblx0ICogQHBhcmFtIGZhaWx1cmVcblx0ICovXG5cdGFzeW5jIHNob3dNZXNzYWdlc1dpdGhDb25kdGlvbnMoXG5cdFx0Zm9yY2VTaG93VUlFbGVtZW50ID0gZmFsc2UsXG5cdFx0c3VjY2Vzcz86IChyZXQ/OiB1bmtub3duKSA9PiB2b2lkLFxuXHRcdGZhaWx1cmU/OiAoZXJyPzogdW5rbm93bikgPT4gdm9pZFxuXHQpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRjb25zdCBzaG93VUlFbGVtZW50ID0gZm9yY2VTaG93VUlFbGVtZW50IHx8IHRoaXMuY2hlY2tUb1Nob3dVSUVsZW1lbnQoKTtcblx0XHRjb25zdCBpbnRlcm5hbE1vZGVsID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsO1xuXHRcdGlmIChzaG93VUlFbGVtZW50ICYmIGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRGVjaXNpb25cIikpIHtcblx0XHRcdC8vIFNob3cgVUkgZWxlbWVudCBmb3IgdGhlIHByZXNlbnQgZGVjaXNpb24gYW5kIGNsZWFyIHRoZSBkZWNpc2lvbi5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdGNvbnN0IHJldCA9IGF3YWl0IG1lc3NhZ2VIYW5kbGluZy5zaG93TWVzc2FnZXNJblVJKGludGVybmFsTW9kZWwuZ2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRGVjaXNpb25cIikpO1xuXHRcdFx0XHRzdWNjZXNzPy4ocmV0KTtcblx0XHRcdH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuXHRcdFx0XHRMb2cuZXJyb3IoYEZFIDogVjQgOiBNZXNzYWdlSGFuZGxlciA6IEVycm9yIG9uIHRyeWluZyB0byBzaG93IFVJIGVsZW1lbnQ6ICR7ZXJyfWApO1xuXHRcdFx0XHRmYWlsdXJlPy4oZXJyKTtcblx0XHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlFbGVtZW50SXNBdmFpbGFibGVcIiwgUHJvbWlzZS5yZXNvbHZlKCkpO1xuXHRcdFx0fVxuXHRcdFx0aW50ZXJuYWxNb2RlbC5zZXRQcm9wZXJ0eShcIi9tZXNzYWdlVUlEZWNpc2lvblwiLCB1bmRlZmluZWQpO1xuXHRcdFx0dGhpcy5jbGVhclN0cmljdFdhcm5pbmdNZXNzYWdlcygpO1xuXHRcdFx0dGhpcy5ob2xkTXNnc1RvU2hvdyA9IGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuaW5mbyhcIkZFIDogVjQgOiBNZXNzYWdlSGFuZGxlciA6IEhvbGRpbmcgbWVzc2FnZXMgdW50aWwgYSByZWdpc3RlcmVkIHByb2Nlc3MgXCIpO1xuXHRcdFx0c3VjY2Vzcz8uKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFlvdSBjYW4gcmVtb3ZlIHRoZSBleGlzdGluZyB0cmFuc2l0aW9uIG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBtb2RlbCB3aXRoIHRoaXMgbWV0aG9kLlxuXHQgKiBXaXRoIGV2ZXJ5IHVzZXIgaW50ZXJhY3Rpb24gdGhhdCBjYXVzZXMgc2VydmVyIGNvbW11bmljYXRpb24gKGxpa2UgY2xpY2tpbmcgb24gYW4gYWN0aW9uLCBjaGFuZ2luZyBkYXRhKSxcblx0ICogdGhpcyBtZXRob2QgcmVtb3ZlcyB0aGUgZXhpc3RpbmcgdHJhbnNpdGlvbiBtZXNzYWdlcyBmcm9tIHRoZSBtZXNzYWdlIG1vZGVsLlxuXHQgKiBAcGFyYW0gW2tlZXBCb3VuZE1lc3NhZ2VdIENoZWNrcyBpZiB0aGUgYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyBhcmUgbm90IHRvIGJlIHJlbW92ZWRcblx0ICogQHBhcmFtIGtlZXBVbmJvdW5kTWVzc2FnZVxuXHQgKiBAcGFyYW0gc1BhdGhUb0JlUmVtb3ZlZFxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdHJlbW92ZVRyYW5zaXRpb25NZXNzYWdlcyhrZWVwQm91bmRNZXNzYWdlPzogYm9vbGVhbiwga2VlcFVuYm91bmRNZXNzYWdlPzogYm9vbGVhbiwgc1BhdGhUb0JlUmVtb3ZlZD86IHN0cmluZyk6IHZvaWQge1xuXHRcdGlmICgha2VlcEJvdW5kTWVzc2FnZSkge1xuXHRcdFx0bWVzc2FnZUhhbmRsaW5nLnJlbW92ZUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzKHNQYXRoVG9CZVJlbW92ZWQpO1xuXHRcdH1cblx0XHRpZiAoIWtlZXBVbmJvdW5kTWVzc2FnZSkge1xuXHRcdFx0bWVzc2FnZUhhbmRsaW5nLnJlbW92ZVVuYm91bmRUcmFuc2l0aW9uTWVzc2FnZXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogTWV0aG9kIHRoYXQgcmV0dXJucyBhbGwgdGhlIHBhcmFtZXRlcnMgbmVlZGVkIHRvIGhhbmRsZSB0aGUgbmF2aWdhdGlvbiB0byB0aGUgZXJyb3IgcGFnZS5cblx0ICogQHBhcmFtIG1QYXJhbWV0ZXJzXG5cdCAqIEByZXR1cm5zIFRoZSBwYXJhbWV0ZXJzIG5lY2Vzc2FyeSBmb3IgdGhlIG5hdmlnYXRpb24gdG8gdGhlIGVycm9yIHBhZ2Vcblx0ICovXG5cdF9jaGVja05hdmlnYXRpb25Ub0Vycm9yUGFnZShtUGFyYW1ldGVycz86IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVBhcmFtZXRlcik6IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgYVVuYm91bmRNZXNzYWdlcyA9IG1lc3NhZ2VIYW5kbGluZy5nZXRNZXNzYWdlcygpO1xuXHRcdGNvbnN0IGJTaG93Qm91bmRUcmFuc2l0aW9uTWVzc2FnZXMgPSB0aGlzLmdldFNob3dCb3VuZE1lc3NhZ2VzSW5NZXNzYWdlRGlhbG9nKCk7XG5cdFx0Y29uc3QgYUJvdW5kVHJhbnNpdGlvbk1lc3NhZ2VzID0gYlNob3dCb3VuZFRyYW5zaXRpb25NZXNzYWdlcyA/IG1lc3NhZ2VIYW5kbGluZy5nZXRNZXNzYWdlcyh0cnVlLCB0cnVlKSA6IFtdO1xuXHRcdGNvbnN0IGFDdXN0b21NZXNzYWdlcyA9IG1QYXJhbWV0ZXJzICYmIG1QYXJhbWV0ZXJzLmN1c3RvbU1lc3NhZ2VzID8gbVBhcmFtZXRlcnMuY3VzdG9tTWVzc2FnZXMgOiBbXTtcblx0XHRjb25zdCBiSXNTdGlja3lFZGl0TW9kZSA9IENvbW1vblV0aWxzLmlzU3RpY2t5RWRpdE1vZGUodGhpcy5iYXNlLmdldFZpZXcoKSk7XG5cdFx0bGV0IG1NZXNzYWdlUGFnZVBhcmFtZXRlcnM6IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuXHRcdC8vIFRPRE86IFN0aWNrIG1vZGUgY2hlY2sgaXMgb2theSBhcyBsb25nIGFzIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiBpcyB1c2VkIHdpdGggc2FwLmZlLmNvcmUgYW5kIHNhcC5mZS5jb3JlLkFwcENvbXBvbmVudC5cblx0XHQvLyBJdCBtaWdodCBiZSBiZXR0ZXIgdG8gcHJvdmlkZSBhbiBleHRlbnNpb24gdG8gdGhlIGNvbnN1bWVyIG9mIHRoZSBjb250cm9sbGVyIGV4dGVuc2lvbiB0byBwcm92aWRlIHRoaXMgdmFsdWUuXG5cblx0XHQvLyBUaGUgbWVzc2FnZSBwYWdlIGNhbiBvbmx5IHNob3cgMSBtZXNzYWdlIHRvZGF5LCBzbyB3ZSBuYXZpZ2F0ZSB0byBpdCB3aGVuIDpcblx0XHQvLyAxLiBUaGVyZSBhcmUgbm8gYm91bmQgdHJhbnNpdGlvbiBtZXNzYWdlcyB0byBzaG93LFxuXHRcdC8vIDIuIFRoZXJlIGFyZSBubyBjdXN0b20gbWVzc2FnZXMgdG8gc2hvdywgJlxuXHRcdC8vIDMuIFRoZXJlIGlzIGV4YWN0bHkgMSB1bmJvdW5kIG1lc3NhZ2UgaW4gdGhlIG1lc3NhZ2UgbW9kZWwgd2l0aCBzdGF0dXNDb2RlPTUwMyBhbmQgcmV0cnktQWZ0ZXIgYXZhaWxhYmxlXG5cdFx0Ly8gNC4gcmV0cnlBZnRlciBpcyBncmVhdGVyIHRoYW4gMTIwIHNlY29uZHNcblx0XHQvL1xuXHRcdC8vIEluIEFkZGl0aW9uLCBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBhIHN0aWNreSBzZXNzaW9uIHdpbGwgZGVzdHJveSB0aGUgc2Vzc2lvbiBzbyB3ZSBkbyBub3QgbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlIGZvciBub3cuXG5cdFx0Ly8gVE9ETzogY2hlY2sgaWYgbmF2aWdhdGlvbiBzaG91bGQgYmUgZG9uZSBpbiBzdGlja3kgZWRpdCBtb2RlLlxuXHRcdGlmIChtUGFyYW1ldGVycz8uaXNEYXRhUmVjZWl2ZWRFcnJvciA9PT0gdHJ1ZSkge1xuXHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0dGl0bGU6IG1QYXJhbWV0ZXJzLnRpdGxlLFxuXHRcdFx0XHRkZXNjcmlwdGlvbjogbVBhcmFtZXRlcnMuZGVzY3JpcHRpb24sXG5cdFx0XHRcdG5hdmlnYXRlQmFja1RvT3JpZ2luOiB0cnVlLFxuXHRcdFx0XHRlcnJvclR5cGU6IFwiUGFnZU5vdEZvdW5kXCJcblx0XHRcdH07XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdCFiSXNTdGlja3lFZGl0TW9kZSAmJlxuXHRcdFx0IWFCb3VuZFRyYW5zaXRpb25NZXNzYWdlcy5sZW5ndGggJiZcblx0XHRcdCFhQ3VzdG9tTWVzc2FnZXMubGVuZ3RoICYmXG5cdFx0XHQoYVVuYm91bmRNZXNzYWdlcy5sZW5ndGggPT09IDEgfHwgbVBhcmFtZXRlcnM/LmlzSW5pdGlhbExvYWQ1MDNFcnJvciA9PT0gdHJ1ZSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IG9NZXNzYWdlID0gYVVuYm91bmRNZXNzYWdlc1swXTtcblx0XHRcdGNvbnN0IG9UZWNobmljYWxEZXRhaWxzID0gb01lc3NhZ2UuZ2V0VGVjaG5pY2FsRGV0YWlscygpIGFzIE1lc3NhZ2VUZWNobmljYWxEZXRhaWxzIHwgdW5kZWZpbmVkO1xuXHRcdFx0aWYgKG9UZWNobmljYWxEZXRhaWxzPy5odHRwU3RhdHVzID09PSA1MDMpIHtcblx0XHRcdFx0bU1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2dldEhUVFA1MDNNZXNzYWdlUGFyYW1ldGVycyhvTWVzc2FnZSwgb1RlY2huaWNhbERldGFpbHMpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbU1lc3NhZ2VQYWdlUGFyYW1ldGVycztcblx0fVxuXG5cdF9nZXRIVFRQNTAzTWVzc2FnZVBhcmFtZXRlcnMobWVzc2FnZTogTWVzc2FnZSwgdGVjaG5pY2FsRGV0YWlsczogTWVzc2FnZVRlY2huaWNhbERldGFpbHMpOiBOYXZpZ2F0aW9uVG9FcnJvclBhZ2VSZXN1bHQgfCB1bmRlZmluZWQge1xuXHRcdGxldCBtZXNzYWdlUGFnZVBhcmFtZXRlcnM6IE5hdmlnYXRpb25Ub0Vycm9yUGFnZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuXHRcdGNvbnN0IHNlY29uZHNCZWZvcmVSZXRyeSA9XG5cdFx0XHR0ZWNobmljYWxEZXRhaWxzLnJldHJ5QWZ0ZXIgIT09IHVuZGVmaW5lZCA/IHRoaXMuX2dldFNlY29uZHNCZWZvcmVSZXRyeUFmdGVyKHRlY2huaWNhbERldGFpbHMucmV0cnlBZnRlcikgOiB1bmRlZmluZWQ7XG5cblx0XHRpZiAoc2Vjb25kc0JlZm9yZVJldHJ5ID09PSB1bmRlZmluZWQgfHwgc2Vjb25kc0JlZm9yZVJldHJ5ID4gMTIwKSB7XG5cdFx0XHRjb25zdCByZXRyeUFmdGVyTWVzc2FnZSA9IG1lc3NhZ2VIYW5kbGluZy5nZXRSZXRyeUFmdGVyTWVzc2FnZShtZXNzYWdlKTtcblx0XHRcdG1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0ZGVzY3JpcHRpb246IHJldHJ5QWZ0ZXJNZXNzYWdlID8gYCR7cmV0cnlBZnRlck1lc3NhZ2V9ICR7bWVzc2FnZS5nZXRNZXNzYWdlKCl9YCA6IG1lc3NhZ2UuZ2V0TWVzc2FnZSgpLFxuXHRcdFx0XHRuYXZpZ2F0ZUJhY2tUb09yaWdpbjogdHJ1ZSxcblx0XHRcdFx0ZXJyb3JUeXBlOiBcIlVuYWJsZVRvTG9hZFwiXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHJldHVybiBtZXNzYWdlUGFnZVBhcmFtZXRlcnM7XG5cdH1cblxuXHRfZ2V0U2Vjb25kc0JlZm9yZVJldHJ5QWZ0ZXIoZFJldHJ5QWZ0ZXI6IERhdGUpOiBudW1iZXIge1xuXHRcdGNvbnN0IGRDdXJyZW50RGF0ZVRpbWUgPSBuZXcgRGF0ZSgpLFxuXHRcdFx0aUN1cnJlbnREYXRlVGltZUluTWlsbGlTZWNvbmRzID0gZEN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCksXG5cdFx0XHRpUmV0cnlBZnRlckRhdGVUaW1lSW5NaWxsaVNlY29uZHMgPSBkUmV0cnlBZnRlci5nZXRUaW1lKCksXG5cdFx0XHRpU2Vjb25kc0JlZm9yZVJldHJ5ID0gKGlSZXRyeUFmdGVyRGF0ZVRpbWVJbk1pbGxpU2Vjb25kcyAtIGlDdXJyZW50RGF0ZVRpbWVJbk1pbGxpU2Vjb25kcykgLyAxMDAwO1xuXHRcdHJldHVybiBpU2Vjb25kc0JlZm9yZVJldHJ5O1xuXHR9XG5cblx0LyoqXG5cdCAqIFVwZGF0ZSB0aGUgZXhpc3RpbmcgVUkgZGVjaXNpb25zIHdpdGggdGhlIG5ldyBvbmVzLlxuXHQgKiBAcGFyYW0gbmV3VUlEZWNpc2lvbnMgSW4gY29tbWluZyBVSSBkZWNpc2lvbnMuXG5cdCAqIEBwYXJhbSBvdmVycmlkZVVJRGVjaXNpb24gT3ZlcnJpZGUgdGhlIGV4aXN0aW5nIFVJIGRlY2lzaW9uIHRvIHNob3cgbWVzc2FnZXMgd2l0aCB0aGUgbmV3IG9uZS5cblx0ICpcblx0ICogJ292ZXJyaWRlVUlEZWNpc2lvbicsIFRoaXMgd291bGQgYmUgbmVlZGVkIHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2UgaW4gcGFnZSBjb250ZXh0IGFuZCB0aGUgcGFyYW10ZXJzIHRvIGNyZWF0ZSB0aGUgbmV3IFVJIGRlY2lzaW9uIGFyZSBkaWZmZXJlbnQuXG5cdCAqL1xuXHR1cGRhdGVVSURlY2lzaW9ucyhuZXdVSURlY2lzaW9uczogTWVzc2FnZVVJRGVjaXNpb25zLCBvdmVycmlkZVVJRGVjaXNpb24gPSBmYWxzZSk6IHZvaWQge1xuXHRcdGNvbnN0IGludGVybmFsTW9kZWwgPSB0aGlzLmJhc2UuZ2V0QXBwQ29tcG9uZW50KCkuZ2V0TW9kZWwoXCJpbnRlcm5hbFwiKSBhcyBKU09OTW9kZWw7XG5cdFx0Y29uc3Qgb2xkVUlEZWNpc2lvbnMgPSBpbnRlcm5hbE1vZGVsLmdldFByb3BlcnR5KFwiL21lc3NhZ2VVSURlY2lzaW9uXCIpIGFzIE1lc3NhZ2VVSURlY2lzaW9ucztcblx0XHRsZXQgYWxsTWVzc2FnZXNUb1Nob3c6IE1lc3NhZ2VbXSA9IFtdO1xuXHRcdGxldCBtZXJnZWRVSURlY2lzaW9uO1xuXHRcdGlmIChvbGRVSURlY2lzaW9ucyAmJiBvdmVycmlkZVVJRGVjaXNpb24gPT09IGZhbHNlKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9sZFVJRGVjaXNpb25zLm1lc3NhZ2VzVG9TaG93Lmxlbmd0aCA9PT0gMSAmJlxuXHRcdFx0XHRuZXdVSURlY2lzaW9ucy5tZXNzYWdlc1RvU2hvdy5sZW5ndGggPT09IDEgJiZcblx0XHRcdFx0b2xkVUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3dbMF0uZ2V0Q29kZSgpID09PSBcIkNfQ09NTU9OX1NVQ0NFU1NfTUVTU0FHRVwiICYmXG5cdFx0XHRcdG5ld1VJRGVjaXNpb25zLm1lc3NhZ2VzVG9TaG93WzBdLmdldENvZGUoKSA9PT0gXCJDX0NPTU1PTl9TVUNDRVNTX01FU1NBR0VcIlxuXHRcdFx0KSB7XG5cdFx0XHRcdC8vIENoZWNrIGlmIGJvdGggYXJlIGdlbmVyaWMgc3VjY2VzcyBtZXNzYWdlcywgdGhlbiB3ZSBzaG93IG9ubHkgb25lIG1lc3NhZ2UuXG5cdFx0XHRcdGFsbE1lc3NhZ2VzVG9TaG93ID0gb2xkVUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3c7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRhbGxNZXNzYWdlc1RvU2hvdyA9IEFycmF5LmZyb20obmV3IFNldChbLi4ub2xkVUlEZWNpc2lvbnMubWVzc2FnZXNUb1Nob3csIC4uLm5ld1VJRGVjaXNpb25zLm1lc3NhZ2VzVG9TaG93XSkpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgZWxlbWVudHMgPSBbb2xkVUlEZWNpc2lvbnMudWlFbGVtZW50VG9Vc2UsIG5ld1VJRGVjaXNpb25zLnVpRWxlbWVudFRvVXNlXTtcblx0XHRcdC8vIERlZmF1bHQgd2Ugc2hvdyBkaWFsb2dcblx0XHRcdGxldCB1aUVsZW1lbnRUb1VzZTogU3VwcG9ydGVkVUlFbGVtZW50ID0gYWxsTWVzc2FnZXNUb1Nob3cubGVuZ3RoID4gMCA/IFwiRGlhbG9nXCIgOiBcIk5vbmVcIjtcblxuXHRcdFx0aWYgKGFsbE1lc3NhZ2VzVG9TaG93Lmxlbmd0aCA9PT0gMSkge1xuXHRcdFx0XHQvLyBTaW5nbGUgbWVzc2FnZSwgd2UgY2hlY2sgZm9yIHNwZWNpZmljIFVJIEVsZW1lbnQgdG8gdXNlLlxuXHRcdFx0XHRpZiAoZWxlbWVudHMuaW5jbHVkZXMoXCJUb2FzdFwiKSkge1xuXHRcdFx0XHRcdHVpRWxlbWVudFRvVXNlID0gXCJUb2FzdFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGVsZW1lbnRzLmluY2x1ZGVzKFwiQm94XCIpKSB7XG5cdFx0XHRcdFx0dWlFbGVtZW50VG9Vc2UgPSBcIkJveFwiO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdG1lcmdlZFVJRGVjaXNpb24gPSB7XG5cdFx0XHRcdG1lc3NhZ2VzVG9TaG93OiBhbGxNZXNzYWdlc1RvU2hvdyxcblx0XHRcdFx0dWlFbGVtZW50VG9Vc2UsXG5cdFx0XHRcdGNvbnRleHROZWVkc0V0YWdSZWZyZXNoOiBvbGRVSURlY2lzaW9ucy5jb250ZXh0TmVlZHNFdGFnUmVmcmVzaCB8fCBuZXdVSURlY2lzaW9ucy5jb250ZXh0TmVlZHNFdGFnUmVmcmVzaCxcblx0XHRcdFx0Y29udGFpbnNCb3VuZFRyYW5zaXRpb246IG9sZFVJRGVjaXNpb25zLmNvbnRhaW5zQm91bmRUcmFuc2l0aW9uIHx8IG5ld1VJRGVjaXNpb25zLmNvbnRhaW5zQm91bmRUcmFuc2l0aW9uXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRtZXJnZWRVSURlY2lzaW9uID0gbmV3VUlEZWNpc2lvbnM7XG5cdFx0fVxuXHRcdGludGVybmFsTW9kZWwuc2V0UHJvcGVydHkoXCIvbWVzc2FnZVVJRGVjaXNpb25cIiwgbWVyZ2VkVUlEZWNpc2lvbik7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIGhlbGQga2V5LlxuXHQgKiBAcGFyYW0gaW5LZXkgS2V5IHRvIHJlbW92ZS5cblx0ICovXG5cdHJlbW92ZUhvbGRLZXkoaW5LZXk/OiBzdHJpbmcpOiB2b2lkIHtcblx0XHRpZiAoaW5LZXkgJiYgdGhpcy5ob2xkS2V5cy5pbmNsdWRlcyhpbktleSkpIHtcblx0XHRcdHRoaXMuaG9sZEtleXMuc3BsaWNlKHRoaXMuaG9sZEtleXMuaW5kZXhPZihpbktleSksIDEpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBVSSBFbGVtZW50IHdpdGggbWVzc2FnZXMgc2hvdWxkIGJlIHNob3duLlxuXHQgKiBAcmV0dXJucyBCb29sZWFuXG5cdCAqL1xuXHRjaGVja1RvU2hvd1VJRWxlbWVudCgpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gdGhpcy5ob2xkTXNnc1RvU2hvdyAmJiAodGhpcy5ob2xkS2V5cy5sZW5ndGggPiAwID8gZmFsc2UgOiB0cnVlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIb2xkIG1lc3NhZ2VzIGZvciB0aGUgY29udHJvbC5cblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICovXG5cdGhvbGRNZXNzYWdlc0ZvckNvbnRyb2woY29udHJvbDogQ29udHJvbCk6IHZvaWQge1xuXHRcdGNvbnN0IGlkZW50aWZpZXIgPSBjb250cm9sLmdldElkKCk7XG5cdFx0dGhpcy5yZWdpc3RlclRvSG9sZE1lc3NhZ2VzKGlkZW50aWZpZXIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbGVhc2UgbWVzc2FnZSBob2xkIGJ5IGEgY29udHJvbC5cblx0ICogQHBhcmFtIGNvbnRyb2xcblx0ICovXG5cdGFzeW5jIHJlbGVhc2VIb2xkQnlDb250cm9sKGNvbnRyb2w/OiBDb250cm9sKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgaWRlbnRpZmllciA9IGNvbnRyb2w/LmdldElkKCk7XG5cdFx0dGhpcy5yZW1vdmVIb2xkS2V5KGlkZW50aWZpZXIpO1xuXHRcdGNvbnN0IHVpRWxlbWVudElzQXZhaWxhYmxlID0gdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL21lc3NhZ2VVSUVsZW1lbnRJc0F2YWlsYWJsZVwiKTtcblx0XHQodGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIikgYXMgSlNPTk1vZGVsKT8uc2V0UHJvcGVydHkoXG5cdFx0XHRcIi9tZXNzYWdlVUlFbGVtZW50SXNBdmFpbGFibGVcIixcblx0XHRcdHVpRWxlbWVudElzQXZhaWxhYmxlPy50aGVuKFxuXHRcdFx0XHRhc3luYyBmdW5jdGlvbiAodGhpczogTWVzc2FnZUhhbmRsZXIpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZXNXaXRoQ29uZHRpb25zKCk7XG5cdFx0XHRcdH0uYmluZCh0aGlzKVxuXHRcdFx0KVxuXHRcdCk7XG5cdFx0YXdhaXQgdGhpcy5iYXNlLmdldEFwcENvbXBvbmVudCgpLmdldE1vZGVsKFwiaW50ZXJuYWxcIik/LmdldFByb3BlcnR5KFwiL21lc3NhZ2VVSUVsZW1lbnRJc0F2YWlsYWJsZVwiKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTaG93cyBhIG1lc3NhZ2UgcGFnZSBvciBhIG1lc3NhZ2UgZGlhbG9nIGJhc2VkIG9uIHRoZSBtZXNzYWdlcyBpbiB0aGUgbWVzc2FnZSBkaWFsb2cuXG5cdCAqIEBwYXJhbSBbcGFyYW1ldGVyc11cblx0ICogQHJldHVybnMgQSBwcm9taXNlIHRoYXQgaXMgcmVzb2x2ZWQgb25jZSB0aGUgdXNlciBjbG9zZXMgdGhlIG1lc3NhZ2UgZGlhbG9nIG9yIHdoZW4gbmF2aWdhdGlvbiB0byB0aGUgbWVzc2FnZSBwYWdlIGlzIGNvbXBsZXRlLiBJZiB0aGVyZSBhcmUgbm8gbWVzc2FnZXNcblx0ICogdG8gYmUgc2hvd24sIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkIGltbWVkaWF0ZWx5XG5cdCAqL1xuXHRAcHVibGljRXh0ZW5zaW9uKClcblx0QGZpbmFsRXh0ZW5zaW9uKClcblx0YXN5bmMgc2hvd01lc3NhZ2VzKHBhcmFtZXRlcnM/OiBTaG93TWVzc2FnZXNQYXJhbWV0ZXJzKTogUHJvbWlzZTx2b2lkIHwgYm9vbGVhbiB8IERpYWxvZz4ge1xuXHRcdGNvbnN0IG1lc3NhZ2VQYWdlUGFyYW1ldGVycyA9IHRoaXMuX2NoZWNrTmF2aWdhdGlvblRvRXJyb3JQYWdlKHBhcmFtZXRlcnMpO1xuXG5cdFx0aWYgKG1lc3NhZ2VQYWdlUGFyYW1ldGVycykge1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0Ly8gaGFuZGxlciBiZWZvcmUgcGFnZSBuYXZpZ2F0aW9uIGlzIHRyaWdnZXJlZCwgZm9yIGV4YW1wbGUgdG8gY2xvc2UgdGhlIGFjdGlvbiBwYXJhbWV0ZXIgZGlhbG9nXG5cdFx0XHRpZiAocGFyYW1ldGVycz8ubWVzc2FnZVBhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2spIHtcblx0XHRcdFx0cGFyYW1ldGVycy5tZXNzYWdlUGFnZU5hdmlnYXRpb25DYWxsYmFjaygpO1xuXHRcdFx0fVxuXG5cdFx0XHRtZXNzYWdlUGFnZVBhcmFtZXRlcnMuaGFuZGxlU2hlbGxCYWNrID0gIXBhcmFtZXRlcnM/LnNoZWxsQmFjaztcblx0XHRcdHRoaXMucmVtb3ZlVHJhbnNpdGlvbk1lc3NhZ2VzKCk7XG5cdFx0XHRjb25zdCBvUmVzb3VyY2VCdW5kbGUgPSBMaWJyYXJ5LmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvcmVcIikhO1xuXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8Ym9vbGVhbj4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0XHQvLyB3ZSBoYXZlIHRvIHNldCBhIHRpbWVvdXQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2VzXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdC8vIGNsZWFyIGFsbCBob2xkIGtleXMgYXMgd2UgbmF2aWdhdGUgdG8gbWVzc2FnZSBwYWdlLlxuXHRcdFx0XHRcdHRoaXMucmVzZXRIb2xkS2V5cygpO1xuXG5cdFx0XHRcdFx0Ly8gVE9ETzogZ3JlYXQgQVBJIC0gd2lsbCBiZSBjaGFuZ2VkIGxhdGVyXG5cdFx0XHRcdFx0dGhpcy5iYXNlLl9yb3V0aW5nXG5cdFx0XHRcdFx0XHQubmF2aWdhdGVUb01lc3NhZ2VQYWdlKFxuXHRcdFx0XHRcdFx0XHRwYXJhbWV0ZXJzPy5pc0RhdGFSZWNlaXZlZEVycm9yID09PSB0cnVlXG5cdFx0XHRcdFx0XHRcdFx0PyBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfQ09NTU9OX1NBUEZFX0RBVEFfUkVDRUlWRURfRVJST1JcIilcblx0XHRcdFx0XHRcdFx0XHQ6IG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19NRVNTQUdFX0hBTkRMSU5HX1NBUEZFXzUwM19USVRMRVwiKSxcblx0XHRcdFx0XHRcdFx0bWVzc2FnZVBhZ2VQYXJhbWV0ZXJzXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQudGhlbihyZXNvbHZlKVxuXHRcdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdH0sIDApO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIG1lc3NhZ2UgZGlhbG9nXG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93TWVzc2FnZURpYWxvZyhwYXJhbWV0ZXJzKTtcblx0XHR9XG5cdH1cbn1cbmV4cG9ydCBkZWZhdWx0IE1lc3NhZ2VIYW5kbGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7RUEyRUE7QUFDQTtBQUNBO0FBQ0E7RUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFMQSxJQU9NQSxjQUFjLElBQUFDLElBQUEsR0FEbkJDLGNBQWMsQ0FBQyxpREFBaUQsQ0FBQyxFQUFBQyxLQUFBLEdBY2hFQyxjQUFjLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBd0RoQkMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ2xCQyxVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFPLENBQUMsRUFBQUMsS0FBQSxHQWVyQ0wsZ0JBQWdCLENBQUMsQ0FBQyxFQUFBTSxLQUFBLEdBQ2xCSixVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxPQUFPLENBQUMsRUFBQUcsS0FBQSxHQXdCckNDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FDakJQLFVBQVUsQ0FBQyxZQUFZLENBQUMsRUFBQVEsS0FBQSxHQTZDeEJGLGVBQWUsQ0FBQyxDQUFDLEVBQUFHLE1BQUEsR0FDakJDLGNBQWMsQ0FBQyxDQUFDLEVBQUFDLE1BQUEsR0F3SmhCTCxlQUFlLENBQUMsQ0FBQyxFQUFBTSxNQUFBLEdBdUxqQk4sZUFBZSxDQUFDLENBQUMsRUFBQU8sTUFBQSxHQUNqQkgsY0FBYyxDQUFDLENBQUMsRUFBQWpCLElBQUEsQ0FBQXFCLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsb0JBQUE7SUFwZWpCLFNBQUF4QixlQUFBLEVBQWM7TUFBQSxJQUFBeUIsS0FBQTtNQUNiQSxLQUFBLEdBQUFELG9CQUFBLENBQUFFLElBQUEsS0FBTSxDQUFDO01BQUNELEtBQUEsQ0FUREUscUJBQXFCLEdBQWMsRUFBRTtNQUFBRixLQUFBLENBSW5DRyxRQUFRLEdBQWEsRUFBRTtNQUFBSCxLQUFBLENBRXpCSSxjQUFjLEdBQUcsS0FBSztNQUFBLE9BQUFKLEtBQUE7SUFJOUI7SUFBQ0ssY0FBQSxDQUFBOUIsY0FBQSxFQUFBd0Isb0JBQUE7SUFBQSxJQUFBTyxNQUFBLEdBQUEvQixjQUFBLENBQUFnQyxTQUFBO0lBQUFELE1BQUEsQ0FHREUsTUFBTSxHQUROLFNBQ0FBLE1BQU1BLENBQUEsRUFBUztNQUNkLE1BQU1DLGFBQWEsR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLFVBQVUsQ0FBYztNQUNuRkgsYUFBYSxDQUFDSSxXQUFXLENBQUMsb0JBQW9CLEVBQUVDLFNBQVMsQ0FBQztNQUMxREwsYUFBYSxDQUFDSSxXQUFXLENBQUMsOEJBQThCLEVBQUVFLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUFWLE1BQUEsQ0FJQVcsa0NBQWtDLEdBQWxDLFNBQUFBLGtDQUFrQ0EsQ0FBQ0MsU0FBb0IsRUFBUTtNQUM5RCxJQUFJLENBQUNoQixxQkFBcUIsR0FBRyxJQUFJLENBQUNBLHFCQUFxQixDQUFDaUIsTUFBTSxDQUFDRCxTQUFTLENBQUM7SUFDMUU7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQSxPQUpDO0lBQUFaLE1BQUEsQ0FLQWMsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ0MsUUFBaUIsRUFBVztNQUNsRCxPQUNDLElBQUksQ0FBQ25CLHFCQUFxQixDQUFDb0IsSUFBSSxDQUFFQyxPQUFPLElBQUs7UUFDNUMsT0FDQ0EsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxLQUFLSCxRQUFRLENBQUNHLE9BQU8sQ0FBQyxDQUFDLElBQ3hDRCxPQUFPLENBQUNFLFVBQVUsQ0FBQyxDQUFDLEtBQUtKLFFBQVEsQ0FBQ0ksVUFBVSxDQUFDLENBQUMsSUFDOUNGLE9BQU8sQ0FBQ0csT0FBTyxDQUFDLENBQUMsS0FBS0wsUUFBUSxDQUFDSyxPQUFPLENBQUMsQ0FBQyxJQUN4Q0gsT0FBTyxDQUFDSSxpQkFBaUIsQ0FBQyxDQUFDLEtBQUtOLFFBQVEsQ0FBQ00saUJBQWlCLENBQUMsQ0FBQyxJQUM1REMsU0FBUyxDQUFDTCxPQUFPLENBQUNNLFVBQVUsQ0FBQyxDQUFDLEVBQUVSLFFBQVEsQ0FBQ1EsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUN0RE4sT0FBTyxDQUFDTyxhQUFhLENBQUMsQ0FBQyxLQUFLVCxRQUFRLENBQUNTLGFBQWEsQ0FBQyxDQUFDO01BRXRELENBQUMsQ0FBQyxLQUFLaEIsU0FBUztJQUVsQjs7SUFFQTtBQUNEO0FBQ0EsT0FGQztJQUFBUixNQUFBLENBR0F5QiwwQkFBMEIsR0FBMUIsU0FBQUEsMEJBQTBCQSxDQUFBLEVBQVM7TUFDbEMsSUFBSSxDQUFDN0IscUJBQXFCLEdBQUcsRUFBRTtJQUNoQyxDQUFDO0lBQUFJLE1BQUEsQ0FFRDBCLG1CQUFtQixHQUFuQixTQUFBQSxtQkFBbUJBLENBQUNDLFFBQW1CLEVBQWE7TUFDbkQsT0FBT0EsUUFBUSxDQUFDQyxNQUFNLENBQUVYLE9BQU8sSUFBS0EsT0FBTyxDQUFDRyxPQUFPLENBQUMsQ0FBQyxLQUFLUyxXQUFXLENBQUNDLEtBQUssQ0FBQztJQUM3RTs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQVRDO0lBQUE5QixNQUFBLENBWUErQixtQ0FBbUMsR0FGbkMsU0FFQUEsbUNBQW1DQSxDQUFBLEVBQVk7TUFDOUMsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FUQztJQUFBL0IsTUFBQTtJQVlBO0lBQ0FnQywwQkFBMEIsR0FIMUIsU0FHQUEsMEJBQTBCQSxDQUFDQyxrQkFBNkIsRUFBRUMsT0FBZ0IsRUFBYTtNQUN0RixPQUFPRCxrQkFBa0I7SUFDMUI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BakJDO0lBQUFqQyxNQUFBLENBb0JNbUMsdUJBQXVCLEdBRjdCLGVBRU1BLHVCQUF1QkEsQ0FBQ0MsZUFBZ0MsRUFBaUI7TUFDOUUsT0FBTzNCLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUM7SUFDekI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BWEM7SUFBQVYsTUFBQSxDQVlBcUMsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FBQ0MsR0FBWSxFQUFVO01BQzVDLE1BQU1DLFNBQVMsR0FBR0QsR0FBRyxJQUFJRSxHQUFHLENBQUMsQ0FBQztNQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDM0MsUUFBUSxDQUFDNEMsUUFBUSxDQUFDRixTQUFTLENBQUMsRUFBRTtRQUN2QyxJQUFJLENBQUMxQyxRQUFRLENBQUM2QyxJQUFJLENBQUNILFNBQVMsQ0FBQztNQUM5QjtNQUNBLE9BQU9BLFNBQVM7SUFDakI7O0lBRUE7QUFDRDtBQUNBLE9BRkM7SUFBQXZDLE1BQUEsQ0FHQTJDLGFBQWEsR0FBYixTQUFBQSxhQUFhQSxDQUFBLEVBQVM7TUFDckIsSUFBSSxDQUFDOUMsUUFBUSxHQUFHLEVBQUU7SUFDbkI7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FaQztJQUFBRyxNQUFBLENBZU00QyxpQkFBaUIsR0FGdkIsZUFFTUEsaUJBQWlCQSxDQUFDQyxXQUF3QyxFQUFpQjtNQUNoRixNQUFNMUMsYUFBYSxHQUFHLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsVUFBVSxDQUFjO01BQ25GO01BQ0EsTUFBTUgsYUFBYSxDQUFDMkMsV0FBVyxDQUFDLDhCQUE4QixDQUFDO01BRS9ELE1BQU1DLGVBQWUsR0FBR0MsU0FBUyxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FBQztNQUM3RCxNQUFNQyx1QkFBdUIsR0FBR0osZUFBZSxDQUFDbkIsTUFBTSxDQUFFWCxPQUFnQixJQUFLO1FBQzVFLE9BQU8sSUFBSSxDQUFDSCxzQkFBc0IsQ0FBQ0csT0FBTyxDQUFDO01BQzVDLENBQUMsQ0FBQztNQUNGK0IsU0FBUyxDQUFDSSxjQUFjLENBQUNELHVCQUF1QixDQUFDO01BRWpELE1BQU1FLGNBQWMsR0FBR1IsV0FBVyxJQUFJQSxXQUFXLENBQUNRLGNBQWMsR0FBR1IsV0FBVyxDQUFDUSxjQUFjLEdBQUc3QyxTQUFTO1FBQ3hHOEMseUJBQXlCLEdBQUcsSUFBSSxDQUFDbEQsSUFBSSxDQUFDbUQsT0FBTyxDQUFDLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsVUFBVSxDQUF5QjtNQUN0RyxNQUFNQyxRQUFRLEdBQUksSUFBSSxDQUFDckQsSUFBSSxDQUFDbUQsT0FBTyxDQUFDLENBQUMsQ0FBQ0csV0FBVyxDQUFDLENBQUMsQ0FBNkJDLGFBQWE7TUFDN0Y7TUFDQSxJQUFJZCxXQUFXLElBQUlBLFdBQVcsQ0FBQ2UscUJBQXFCLElBQUlOLHlCQUF5QixFQUFFO1FBQ2xGQSx5QkFBeUIsQ0FBQy9DLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxJQUFJLENBQUM7TUFDckU7TUFDQSxNQUFNc0Qsa0JBQWtCLEdBQUcsSUFBSSxDQUFDOUIsbUNBQW1DLENBQUMsQ0FBQztNQUNyRSxNQUFNK0IsZUFBZSxHQUNwQmpCLFdBQVcsSUFBSUEsV0FBVyxDQUFDWCxPQUFPLEdBQUdXLFdBQVcsQ0FBQ1gsT0FBTyxHQUFHLElBQUksQ0FBQ3FCLE9BQU8sQ0FBQyxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQzFFO01BQ25CO01BQ0E7TUFDQTtNQUNBLElBQUlGLHlCQUF5QixFQUFFO1FBQzlCQSx5QkFBeUIsQ0FBQy9DLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRSxLQUFLLENBQUM7TUFDdEU7TUFDQSxPQUFPLElBQUlFLE9BQU8sQ0FDakIsVUFBZ0NDLE9BQW1CLEVBQUVxRCxNQUFrQixFQUFRO1FBQzlFO1FBQ0FDLFVBQVUsQ0FDVCxZQUFzQztVQUNyQztVQUNBLElBQUksQ0FBQ0Msc0JBQXNCLENBQzFCcEIsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUNqQmlCLGVBQWUsRUFDZkQsa0JBQWtCLEVBQ2xCUixjQUFjLElBQUksRUFBRSxFQUNwQjNDLE9BQU8sRUFDUHFELE1BQU0sRUFDTk4sUUFDRCxDQUFDO1FBQ0YsQ0FBQyxDQUFDUyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ1osQ0FDRCxDQUFDO01BQ0YsQ0FBQyxDQUFDQSxJQUFJLENBQUMsSUFBSSxDQUNaLENBQUM7SUFDRjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FYQztJQUFBbEUsTUFBQSxDQVlBaUUsc0JBQXNCLEdBQXRCLFNBQUFBLHNCQUFzQkEsQ0FDckJFLFVBQXNDLEVBQ3RDQyxjQUE4QixFQUM5QkMsMkJBQW9DLEVBQ3BDaEIsY0FBK0IsRUFDL0JpQixPQUFtQixFQUNuQkMsT0FBbUIsRUFDbkJkLFFBQWlCLEVBQ1Y7TUFDUCxNQUFNO1FBQ0xlLGtCQUFrQjtRQUNsQkMsT0FBTztRQUNQQyxXQUFXO1FBQ1hDLG1CQUFtQjtRQUNuQkMsU0FBUztRQUNUaEIscUJBQXFCLEVBQUVpQixrQkFBa0IsR0FBRyxLQUFLO1FBQ2pEQyxrQkFBa0I7UUFDbEJDO01BQ0QsQ0FBQyxHQUFHWixVQUFVO01BQ2QsSUFBSSxDQUFDckUsY0FBYyxHQUFHLElBQUk7O01BRTFCO01BQ0EsTUFBTWtGLGNBQWMsR0FBR0MsZUFBZSxDQUFDQyxjQUFjLENBQ3BEN0IsY0FBYyxFQUNkZSxjQUFjLEVBQ2RDLDJCQUEyQixFQUMzQkcsa0JBQWtCLEVBQ2xCQyxPQUFPLEVBQ1BDLFdBQVcsRUFDWEMsbUJBQW1CLEVBQ25CbEIsUUFBUSxFQUNSc0Isc0JBQXNCLEVBQ3RCWixVQUFVLEVBQ1ZnQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM1QixPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLElBQ0QsQ0FBQztNQUNELElBQUksQ0FBQzZCLGlCQUFpQixDQUFDSixjQUFjLEVBQUVGLGtCQUFrQixDQUFDO01BQzFELElBQUksQ0FBQ08sYUFBYSxDQUFDVCxTQUFTLElBQUlILE9BQU8sRUFBRWEsS0FBSyxDQUFDLENBQUMsQ0FBQztNQUNqRCxNQUFNQyxvQkFBb0IsR0FBRyxJQUFJLENBQUNuRixJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRXdDLFdBQVcsQ0FBQyw4QkFBOEIsQ0FBQztNQUN6SCxJQUFJLENBQUMxQyxJQUFJLENBQUNDLGVBQWUsQ0FBQyxDQUFDLENBQUNDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBZ0JDLFdBQVcsQ0FDM0UsOEJBQThCLEVBQzlCZ0Ysb0JBQW9CLENBQUNDLElBQUksQ0FDeEIsa0JBQXFEO1FBQ3BELE9BQU8sSUFBSSxDQUFDQyx5QkFBeUIsQ0FBQ1osa0JBQWtCLEVBQUVQLE9BQU8sRUFBRUMsT0FBTyxDQUFDO01BQzVFLENBQUMsQ0FBQ0wsSUFBSSxDQUFDLElBQUksQ0FDWixDQUNELENBQUM7SUFDRjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBbEUsTUFBQSxDQU1NeUYseUJBQXlCLEdBQS9CLGVBQU1BLHlCQUF5QkEsQ0FBQSxFQUlkO01BQUEsSUFIaEJaLGtCQUFrQixHQUFBYSxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBbEYsU0FBQSxHQUFBa0YsU0FBQSxNQUFHLEtBQUs7TUFBQSxJQUMxQnBCLE9BQWlDLEdBQUFvQixTQUFBLENBQUFDLE1BQUEsT0FBQUQsU0FBQSxNQUFBbEYsU0FBQTtNQUFBLElBQ2pDK0QsT0FBaUMsR0FBQW1CLFNBQUEsQ0FBQUMsTUFBQSxPQUFBRCxTQUFBLE1BQUFsRixTQUFBO01BRWpDLE1BQU1vRixhQUFhLEdBQUdmLGtCQUFrQixJQUFJLElBQUksQ0FBQ2dCLG9CQUFvQixDQUFDLENBQUM7TUFDdkUsTUFBTTFGLGFBQWEsR0FBRyxJQUFJLENBQUNDLElBQUksQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLFVBQVUsQ0FBYztNQUNuRixJQUFJc0YsYUFBYSxJQUFJekYsYUFBYSxDQUFDMkMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7UUFDckU7UUFDQSxJQUFJO1VBQ0gsTUFBTWdELEdBQUcsR0FBRyxNQUFNYixlQUFlLENBQUNjLGdCQUFnQixDQUFDNUYsYUFBYSxDQUFDMkMsV0FBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7VUFDbkd3QixPQUFPLEdBQUd3QixHQUFHLENBQUM7UUFDZixDQUFDLENBQUMsT0FBT0UsR0FBWSxFQUFFO1VBQ3RCQyxHQUFHLENBQUNDLEtBQUssQ0FBQyxrRUFBa0VGLEdBQUcsRUFBRSxDQUFDO1VBQ2xGekIsT0FBTyxHQUFHeUIsR0FBRyxDQUFDO1VBQ2Q3RixhQUFhLENBQUNJLFdBQVcsQ0FBQyw4QkFBOEIsRUFBRUUsT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzdFO1FBQ0FQLGFBQWEsQ0FBQ0ksV0FBVyxDQUFDLG9CQUFvQixFQUFFQyxTQUFTLENBQUM7UUFDMUQsSUFBSSxDQUFDaUIsMEJBQTBCLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMzQixjQUFjLEdBQUcsS0FBSztNQUM1QixDQUFDLE1BQU07UUFDTm1HLEdBQUcsQ0FBQ0UsSUFBSSxDQUFDLHlFQUF5RSxDQUFDO1FBQ25GN0IsT0FBTyxHQUFHLENBQUM7TUFDWjtJQUNEOztJQUVBO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FQQztJQUFBdEUsTUFBQSxDQVNBb0csd0JBQXdCLEdBRHhCLFNBQ0FBLHdCQUF3QkEsQ0FBQ0MsZ0JBQTBCLEVBQUVDLGtCQUE0QixFQUFFQyxnQkFBeUIsRUFBUTtNQUNuSCxJQUFJLENBQUNGLGdCQUFnQixFQUFFO1FBQ3RCcEIsZUFBZSxDQUFDdUIsNkJBQTZCLENBQUNELGdCQUFnQixDQUFDO01BQ2hFO01BQ0EsSUFBSSxDQUFDRCxrQkFBa0IsRUFBRTtRQUN4QnJCLGVBQWUsQ0FBQ3dCLCtCQUErQixDQUFDLENBQUM7TUFDbEQ7SUFDRDs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBLE9BSkM7SUFBQXpHLE1BQUEsQ0FLQTBHLDJCQUEyQixHQUEzQixTQUFBQSwyQkFBMkJBLENBQUM3RCxXQUE0QyxFQUEyQztNQUNsSCxNQUFNOEQsZ0JBQWdCLEdBQUcxQixlQUFlLENBQUMyQixXQUFXLENBQUMsQ0FBQztNQUN0RCxNQUFNQyw0QkFBNEIsR0FBRyxJQUFJLENBQUM5RSxtQ0FBbUMsQ0FBQyxDQUFDO01BQy9FLE1BQU0rRSx3QkFBd0IsR0FBR0QsNEJBQTRCLEdBQUc1QixlQUFlLENBQUMyQixXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7TUFDNUcsTUFBTUcsZUFBZSxHQUFHbEUsV0FBVyxJQUFJQSxXQUFXLENBQUNRLGNBQWMsR0FBR1IsV0FBVyxDQUFDUSxjQUFjLEdBQUcsRUFBRTtNQUNuRyxNQUFNMkQsaUJBQWlCLEdBQUdDLFdBQVcsQ0FBQ0MsZ0JBQWdCLENBQUMsSUFBSSxDQUFDOUcsSUFBSSxDQUFDbUQsT0FBTyxDQUFDLENBQUMsQ0FBQztNQUMzRSxJQUFJNEQsc0JBQStEOztNQUVuRTtNQUNBOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJdEUsV0FBVyxFQUFFdUUsbUJBQW1CLEtBQUssSUFBSSxFQUFFO1FBQzlDRCxzQkFBc0IsR0FBRztVQUN4QkUsS0FBSyxFQUFFeEUsV0FBVyxDQUFDd0UsS0FBSztVQUN4QkMsV0FBVyxFQUFFekUsV0FBVyxDQUFDeUUsV0FBVztVQUNwQ0Msb0JBQW9CLEVBQUUsSUFBSTtVQUMxQkMsU0FBUyxFQUFFO1FBQ1osQ0FBQztNQUNGLENBQUMsTUFBTSxJQUNOLENBQUNSLGlCQUFpQixJQUNsQixDQUFDRix3QkFBd0IsQ0FBQ25CLE1BQU0sSUFDaEMsQ0FBQ29CLGVBQWUsQ0FBQ3BCLE1BQU0sS0FDdEJnQixnQkFBZ0IsQ0FBQ2hCLE1BQU0sS0FBSyxDQUFDLElBQUk5QyxXQUFXLEVBQUU0RSxxQkFBcUIsS0FBSyxJQUFJLENBQUMsRUFDN0U7UUFDRCxNQUFNMUcsUUFBUSxHQUFHNEYsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU1lLGlCQUFpQixHQUFHM0csUUFBUSxDQUFDNEcsbUJBQW1CLENBQUMsQ0FBd0M7UUFDL0YsSUFBSUQsaUJBQWlCLEVBQUVFLFVBQVUsS0FBSyxHQUFHLEVBQUU7VUFDMUNULHNCQUFzQixHQUFHLElBQUksQ0FBQ1UsNEJBQTRCLENBQUM5RyxRQUFRLEVBQUUyRyxpQkFBaUIsQ0FBQztRQUN4RjtNQUNEO01BQ0EsT0FBT1Asc0JBQXNCO0lBQzlCLENBQUM7SUFBQW5ILE1BQUEsQ0FFRDZILDRCQUE0QixHQUE1QixTQUFBQSw0QkFBNEJBLENBQUM1RyxPQUFnQixFQUFFNkcsZ0JBQXlDLEVBQTJDO01BQ2xJLElBQUlDLHFCQUE4RDtNQUVsRSxNQUFNQyxrQkFBa0IsR0FDdkJGLGdCQUFnQixDQUFDRyxVQUFVLEtBQUt6SCxTQUFTLEdBQUcsSUFBSSxDQUFDMEgsMkJBQTJCLENBQUNKLGdCQUFnQixDQUFDRyxVQUFVLENBQUMsR0FBR3pILFNBQVM7TUFFdEgsSUFBSXdILGtCQUFrQixLQUFLeEgsU0FBUyxJQUFJd0gsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQ2pFLE1BQU1HLGlCQUFpQixHQUFHbEQsZUFBZSxDQUFDbUQsb0JBQW9CLENBQUNuSCxPQUFPLENBQUM7UUFDdkU4RyxxQkFBcUIsR0FBRztVQUN2QlQsV0FBVyxFQUFFYSxpQkFBaUIsR0FBRyxHQUFHQSxpQkFBaUIsSUFBSWxILE9BQU8sQ0FBQ0UsVUFBVSxDQUFDLENBQUMsRUFBRSxHQUFHRixPQUFPLENBQUNFLFVBQVUsQ0FBQyxDQUFDO1VBQ3RHb0csb0JBQW9CLEVBQUUsSUFBSTtVQUMxQkMsU0FBUyxFQUFFO1FBQ1osQ0FBQztNQUNGO01BRUEsT0FBT08scUJBQXFCO0lBQzdCLENBQUM7SUFBQS9ILE1BQUEsQ0FFRGtJLDJCQUEyQixHQUEzQixTQUFBQSwyQkFBMkJBLENBQUNHLFdBQWlCLEVBQVU7TUFDdEQsTUFBTUMsZ0JBQWdCLEdBQUcsSUFBSUMsSUFBSSxDQUFDLENBQUM7UUFDbENDLDhCQUE4QixHQUFHRixnQkFBZ0IsQ0FBQ0csT0FBTyxDQUFDLENBQUM7UUFDM0RDLGlDQUFpQyxHQUFHTCxXQUFXLENBQUNJLE9BQU8sQ0FBQyxDQUFDO1FBQ3pERSxtQkFBbUIsR0FBRyxDQUFDRCxpQ0FBaUMsR0FBR0YsOEJBQThCLElBQUksSUFBSTtNQUNsRyxPQUFPRyxtQkFBbUI7SUFDM0I7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBM0ksTUFBQSxDQU9Bb0YsaUJBQWlCLEdBQWpCLFNBQUFBLGlCQUFpQkEsQ0FBQ0osY0FBa0MsRUFBb0M7TUFBQSxJQUFsQ0Ysa0JBQWtCLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFsRixTQUFBLEdBQUFrRixTQUFBLE1BQUcsS0FBSztNQUMvRSxNQUFNdkYsYUFBYSxHQUFHLElBQUksQ0FBQ0MsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsVUFBVSxDQUFjO01BQ25GLE1BQU1zSSxjQUFjLEdBQUd6SSxhQUFhLENBQUMyQyxXQUFXLENBQUMsb0JBQW9CLENBQXVCO01BQzVGLElBQUkrRixpQkFBNEIsR0FBRyxFQUFFO01BQ3JDLElBQUlDLGdCQUFnQjtNQUNwQixJQUFJRixjQUFjLElBQUk5RCxrQkFBa0IsS0FBSyxLQUFLLEVBQUU7UUFDbkQsSUFDQzhELGNBQWMsQ0FBQ0csY0FBYyxDQUFDcEQsTUFBTSxLQUFLLENBQUMsSUFDMUNYLGNBQWMsQ0FBQytELGNBQWMsQ0FBQ3BELE1BQU0sS0FBSyxDQUFDLElBQzFDaUQsY0FBYyxDQUFDRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM3SCxPQUFPLENBQUMsQ0FBQyxLQUFLLDBCQUEwQixJQUN6RThELGNBQWMsQ0FBQytELGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQzdILE9BQU8sQ0FBQyxDQUFDLEtBQUssMEJBQTBCLEVBQ3hFO1VBQ0Q7VUFDQTJILGlCQUFpQixHQUFHRCxjQUFjLENBQUNHLGNBQWM7UUFDbEQsQ0FBQyxNQUFNO1VBQ05GLGlCQUFpQixHQUFHRyxLQUFLLENBQUNDLElBQUksQ0FBQyxJQUFJQyxHQUFHLENBQUMsQ0FBQyxHQUFHTixjQUFjLENBQUNHLGNBQWMsRUFBRSxHQUFHL0QsY0FBYyxDQUFDK0QsY0FBYyxDQUFDLENBQUMsQ0FBQztRQUM5RztRQUNBLE1BQU1JLFFBQVEsR0FBRyxDQUFDUCxjQUFjLENBQUNRLGNBQWMsRUFBRXBFLGNBQWMsQ0FBQ29FLGNBQWMsQ0FBQztRQUMvRTtRQUNBLElBQUlBLGNBQWtDLEdBQUdQLGlCQUFpQixDQUFDbEQsTUFBTSxHQUFHLENBQUMsR0FBRyxRQUFRLEdBQUcsTUFBTTtRQUV6RixJQUFJa0QsaUJBQWlCLENBQUNsRCxNQUFNLEtBQUssQ0FBQyxFQUFFO1VBQ25DO1VBQ0EsSUFBSXdELFFBQVEsQ0FBQzFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQjJHLGNBQWMsR0FBRyxPQUFPO1VBQ3pCLENBQUMsTUFBTSxJQUFJRCxRQUFRLENBQUMxRyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDcEMyRyxjQUFjLEdBQUcsS0FBSztVQUN2QjtRQUNEO1FBRUFOLGdCQUFnQixHQUFHO1VBQ2xCQyxjQUFjLEVBQUVGLGlCQUFpQjtVQUNqQ08sY0FBYztVQUNkQyx1QkFBdUIsRUFBRVQsY0FBYyxDQUFDUyx1QkFBdUIsSUFBSXJFLGNBQWMsQ0FBQ3FFLHVCQUF1QjtVQUN6R0MsdUJBQXVCLEVBQUVWLGNBQWMsQ0FBQ1UsdUJBQXVCLElBQUl0RSxjQUFjLENBQUNzRTtRQUNuRixDQUFDO01BQ0YsQ0FBQyxNQUFNO1FBQ05SLGdCQUFnQixHQUFHOUQsY0FBYztNQUNsQztNQUNBN0UsYUFBYSxDQUFDSSxXQUFXLENBQUMsb0JBQW9CLEVBQUV1SSxnQkFBZ0IsQ0FBQztJQUNsRTs7SUFFQTtBQUNEO0FBQ0E7QUFDQSxPQUhDO0lBQUE5SSxNQUFBLENBSUFxRixhQUFhLEdBQWIsU0FBQUEsYUFBYUEsQ0FBQ2tFLEtBQWMsRUFBUTtNQUNuQyxJQUFJQSxLQUFLLElBQUksSUFBSSxDQUFDMUosUUFBUSxDQUFDNEMsUUFBUSxDQUFDOEcsS0FBSyxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDMUosUUFBUSxDQUFDMkosTUFBTSxDQUFDLElBQUksQ0FBQzNKLFFBQVEsQ0FBQzRKLE9BQU8sQ0FBQ0YsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ3REO0lBQ0Q7O0lBRUE7QUFDRDtBQUNBO0FBQ0EsT0FIQztJQUFBdkosTUFBQSxDQUlBNkYsb0JBQW9CLEdBQXBCLFNBQUFBLG9CQUFvQkEsQ0FBQSxFQUFZO01BQy9CLE9BQU8sSUFBSSxDQUFDL0YsY0FBYyxLQUFLLElBQUksQ0FBQ0QsUUFBUSxDQUFDOEYsTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ3hFOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQTNGLE1BQUEsQ0FJQTBKLHNCQUFzQixHQUF0QixTQUFBQSxzQkFBc0JBLENBQUNqRixPQUFnQixFQUFRO01BQzlDLE1BQU1rRixVQUFVLEdBQUdsRixPQUFPLENBQUNhLEtBQUssQ0FBQyxDQUFDO01BQ2xDLElBQUksQ0FBQ2pELHNCQUFzQixDQUFDc0gsVUFBVSxDQUFDO0lBQ3hDOztJQUVBO0FBQ0Q7QUFDQTtBQUNBLE9BSEM7SUFBQTNKLE1BQUEsQ0FJTTRKLG9CQUFvQixHQUExQixlQUFNQSxvQkFBb0JBLENBQUNuRixPQUFpQixFQUFpQjtNQUM1RCxNQUFNa0YsVUFBVSxHQUFHbEYsT0FBTyxFQUFFYSxLQUFLLENBQUMsQ0FBQztNQUNuQyxJQUFJLENBQUNELGFBQWEsQ0FBQ3NFLFVBQVUsQ0FBQztNQUM5QixNQUFNcEUsb0JBQW9CLEdBQUcsSUFBSSxDQUFDbkYsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUV3QyxXQUFXLENBQUMsOEJBQThCLENBQUM7TUFDekgsSUFBSSxDQUFDMUMsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQWdCQyxXQUFXLENBQzNFLDhCQUE4QixFQUM5QmdGLG9CQUFvQixFQUFFQyxJQUFJLENBQ3pCLGtCQUFxRDtRQUNwRCxPQUFPLElBQUksQ0FBQ0MseUJBQXlCLENBQUMsQ0FBQztNQUN4QyxDQUFDLENBQUN2QixJQUFJLENBQUMsSUFBSSxDQUNaLENBQ0QsQ0FBQztNQUNELE1BQU0sSUFBSSxDQUFDOUQsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUV3QyxXQUFXLENBQUMsOEJBQThCLENBQUM7SUFDcEc7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQTlDLE1BQUEsQ0FRTTZKLFlBQVksR0FGbEIsZUFFTUEsWUFBWUEsQ0FBQzFGLFVBQW1DLEVBQW9DO01BQ3pGLE1BQU00RCxxQkFBcUIsR0FBRyxJQUFJLENBQUNyQiwyQkFBMkIsQ0FBQ3ZDLFVBQVUsQ0FBQztNQUUxRSxJQUFJNEQscUJBQXFCLEVBQUU7UUFDMUI7UUFDQTtRQUNBLElBQUk1RCxVQUFVLEVBQUUyRiw2QkFBNkIsRUFBRTtVQUM5QzNGLFVBQVUsQ0FBQzJGLDZCQUE2QixDQUFDLENBQUM7UUFDM0M7UUFFQS9CLHFCQUFxQixDQUFDZ0MsZUFBZSxHQUFHLENBQUM1RixVQUFVLEVBQUU2RixTQUFTO1FBQzlELElBQUksQ0FBQzVELHdCQUF3QixDQUFDLENBQUM7UUFDL0IsTUFBTTZELGVBQWUsR0FBR0MsT0FBTyxDQUFDQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUU7UUFFcEUsT0FBTyxJQUFJMUosT0FBTyxDQUFVLENBQUNDLE9BQU8sRUFBRXFELE1BQU0sS0FBSztVQUNoRDtVQUNBQyxVQUFVLENBQUMsTUFBTTtZQUNoQjtZQUNBLElBQUksQ0FBQ3JCLGFBQWEsQ0FBQyxDQUFDOztZQUVwQjtZQUNBLElBQUksQ0FBQ3ZDLElBQUksQ0FBQ2dLLFFBQVEsQ0FDaEJDLHFCQUFxQixDQUNyQmxHLFVBQVUsRUFBRWlELG1CQUFtQixLQUFLLElBQUksR0FDckM2QyxlQUFlLENBQUNLLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FBQyxHQUM3REwsZUFBZSxDQUFDSyxPQUFPLENBQUMsb0NBQW9DLENBQUMsRUFDaEV2QyxxQkFDRCxDQUFDLENBQ0F2QyxJQUFJLENBQUM5RSxPQUFPLENBQUMsQ0FDYjZKLEtBQUssQ0FBQ3hHLE1BQU0sQ0FBQztVQUNoQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ04sQ0FBQyxDQUFDO01BQ0gsQ0FBQyxNQUFNO1FBQ047UUFDQSxPQUFPLElBQUksQ0FBQ25CLGlCQUFpQixDQUFDdUIsVUFBVSxDQUFDO01BQzFDO0lBQ0QsQ0FBQztJQUFBLE9BQUFsRyxjQUFBO0VBQUEsRUFsaEIyQnVNLG1CQUFtQixHQUFBQyx5QkFBQSxDQUFBakwsT0FBQSxDQUFBUyxTQUFBLGFBQUE3QixLQUFBLEdBQUFzTSxNQUFBLENBQUFDLHdCQUFBLENBQUFuTCxPQUFBLENBQUFTLFNBQUEsYUFBQVQsT0FBQSxDQUFBUyxTQUFBLEdBQUF3Syx5QkFBQSxDQUFBakwsT0FBQSxDQUFBUyxTQUFBLDBDQUFBM0IsS0FBQSxFQUFBRSxLQUFBLEdBQUFrTSxNQUFBLENBQUFDLHdCQUFBLENBQUFuTCxPQUFBLENBQUFTLFNBQUEsMENBQUFULE9BQUEsQ0FBQVMsU0FBQSxHQUFBd0sseUJBQUEsQ0FBQWpMLE9BQUEsQ0FBQVMsU0FBQSxpQ0FBQXJCLEtBQUEsRUFBQUMsS0FBQSxHQUFBNkwsTUFBQSxDQUFBQyx3QkFBQSxDQUFBbkwsT0FBQSxDQUFBUyxTQUFBLGlDQUFBVCxPQUFBLENBQUFTLFNBQUEsR0FBQXdLLHlCQUFBLENBQUFqTCxPQUFBLENBQUFTLFNBQUEsOEJBQUFuQixLQUFBLEVBQUFFLEtBQUEsR0FBQTBMLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQW5MLE9BQUEsQ0FBQVMsU0FBQSw4QkFBQVQsT0FBQSxDQUFBUyxTQUFBLEdBQUF3Syx5QkFBQSxDQUFBakwsT0FBQSxDQUFBUyxTQUFBLHdCQUFBaEIsS0FBQSxFQUFBQyxNQUFBLEdBQUF3TCxNQUFBLENBQUFDLHdCQUFBLENBQUFuTCxPQUFBLENBQUFTLFNBQUEsd0JBQUFULE9BQUEsQ0FBQVMsU0FBQSxHQUFBd0sseUJBQUEsQ0FBQWpMLE9BQUEsQ0FBQVMsU0FBQSwrQkFBQWIsTUFBQSxHQUFBc0wsTUFBQSxDQUFBQyx3QkFBQSxDQUFBbkwsT0FBQSxDQUFBUyxTQUFBLCtCQUFBVCxPQUFBLENBQUFTLFNBQUEsR0FBQXdLLHlCQUFBLENBQUFqTCxPQUFBLENBQUFTLFNBQUEsbUJBQUFaLE1BQUEsRUFBQUMsTUFBQSxHQUFBb0wsTUFBQSxDQUFBQyx3QkFBQSxDQUFBbkwsT0FBQSxDQUFBUyxTQUFBLG1CQUFBVCxPQUFBLENBQUFTLFNBQUEsR0FBQVQsT0FBQSxNQUFBRCxNQUFBO0VBQUEsT0FvaEJqQ3RCLGNBQWM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -74,8 +74,7 @@ export type ShowMessagesParameters = ShowMessageDialogParameter & {
74
74
  description?: string;
75
75
  };
76
76
  /**
77
- *
78
- * Defines the message detail relevant for the MessageButton building block to display a popover.
77
+ * Defines the message details relevant for the MessageButton building block to display a popover.
79
78
  * @public
80
79
  */
81
80
  export type MessageDetail = {
@@ -184,18 +183,18 @@ class MessageHandler extends ControllerExtension {
184
183
  }
185
184
 
186
185
  /**
187
- * Allows consumer of a message button BB to decide which bound messages should be shown and how.
186
+ * Allows the consumer of the MessageButton building block to decide which bound messages are shown and how.
188
187
  *
189
- * This hook is called when the message button BB detects a change in the message model.
190
- * The hooks allows to define behaviour for messages in the message button BB.
188
+ * This hook is called when the MessageButton building block detects a change in the message model.
189
+ * The hooks allow you to define the behavior for messages in the MessageButton building block.
191
190
  *
192
- * Consumers will be able to do the following with this hook.
191
+ * Consumers are able to do the following with this hook:
193
192
  *
194
193
  * 1. Filter out messages so that they are not shown on the message button.
195
- * 2. group the messages based on their UI.
196
- * 3. provide a presser handler incase the message should show as a link.
194
+ * 2. Group messages based on their UI.
195
+ * 3. Provide a presser handler if the message should display as a link.
197
196
  * @param _messageDetails Object containing the details related to the message.
198
- * @param _messageDetails.message The message from the message model.Ideally, it must not be modified directly.
197
+ * @param _messageDetails.message The message from the message. It must not be modified directly.
199
198
  * @param _messageDetails.groupName The group name associated with the current message.
200
199
  * @param _messageDetails.activeTitleHandler Function to handle the click event on a message in the MessageButton building block.
201
200
  * @returns A promise that must be returned by the overridden method.
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2025 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution", "../library"], function (ClassSupport, HookSupport, ControllerExtension, OverrideExecution, library) {
5
+ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/fe/core/library", "sap/ui/core/mvc/ControllerExtension", "sap/ui/core/mvc/OverrideExecution"], function (ClassSupport, HookSupport, library, ControllerExtension, OverrideExecution) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _class, _class2;
@@ -80,4 +80,4 @@ sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/base/HookSupport", "sap/ui/co
80
80
  }(ControllerExtension), _applyDecoratedDescriptor(_class2.prototype, "initialize", [_dec2, _dec3], Object.getOwnPropertyDescriptor(_class2.prototype, "initialize"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onBeforeContextUpdate", [_dec4, _dec5], Object.getOwnPropertyDescriptor(_class2.prototype, "onBeforeContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "onContextUpdate", [_dec6, _dec7], Object.getOwnPropertyDescriptor(_class2.prototype, "onContextUpdate"), _class2.prototype), _applyDecoratedDescriptor(_class2.prototype, "determineContextNavigationType", [_dec8, _dec9], Object.getOwnPropertyDescriptor(_class2.prototype, "determineContextNavigationType"), _class2.prototype), _class2)) || _class);
81
81
  return Paginator;
82
82
  }, false);
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiaG9va2FibGUiLCJfZGVjNCIsIl9kZWM1IiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIkluc3RlYWQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiaW5pdGlhbGl6ZSIsIm9CaW5kaW5nIiwib0NvbnRleHQiLCJvbkJlZm9yZUNvbnRleHRVcGRhdGUiLCJvTGlzdEJpbmRpbmciLCJpQ3VycmVudEluZGV4IiwiaUluZGV4VXBkYXRlIiwib25Db250ZXh0VXBkYXRlIiwiZGV0ZXJtaW5lQ29udGV4dE5hdmlnYXRpb25UeXBlIiwiY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwiQ29udGV4dE5hdmlnYXRpb25UeXBlIiwiSW50ZXJuYWwiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBob29rYWJsZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29udHJvbGxlckV4dGVuc2lvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL0NvbnRyb2xsZXJFeHRlbnNpb25cIjtcbmltcG9ydCBPdmVycmlkZUV4ZWN1dGlvbiBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL092ZXJyaWRlRXhlY3V0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IGRlZmF1bHQgYXMgQ29udGV4dCB9IGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB7IENvbnRleHROYXZpZ2F0aW9uVHlwZSB9IGZyb20gXCIuLi9saWJyYXJ5XCI7XG5cbi8qKlxuICogQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbmF2aWdhdGlvbiB1c2luZyBwYWdpbmF0b3JzXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2luYXRvclwiKVxuY2xhc3MgUGFnaW5hdG9yIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0LyoqXG5cdCAqIEluaXRpYXRlcyB0aGUgcGFnaW5hdG9yIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gb0NvbnRleHQgQ3VycmVudCBjb250ZXh0IHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAaG9va2FibGUoXCJCZWZvcmVcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRpbml0aWFsaXplKG9CaW5kaW5nPzogT0RhdGFMaXN0QmluZGluZywgb0NvbnRleHQ/OiBDb250ZXh0KTogdm9pZCB7fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYmVmb3JlIGNvbnRleHQgdXBkYXRlLlxuXHQgKiBAcGFyYW0gb0xpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0XG5cdCAqIEBwYXJhbSBpQ3VycmVudEluZGV4IEN1cnJlbnQgaW5kZXggb2YgY29udGV4dCBpbiBsaXN0QmluZGluZyBmcm9tIHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcGFyYW0gaUluZGV4VXBkYXRlIFRoZSBkZWx0YSBpbmRleCBmb3IgdXBkYXRlXG5cdCAqIEByZXR1cm5zIGB0cnVlYCB0byBwcmV2ZW50IHRoZSB1cGRhdGUgb2YgY3VycmVudCBjb250ZXh0LlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQmVmb3JlQ29udGV4dFVwZGF0ZShvTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIGlDdXJyZW50SW5kZXg6IG51bWJlciwgaUluZGV4VXBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXBkYXRlZCBjb250ZXh0IGFmdGVyIHRoZSBwYWdpbmF0b3Igb3BlcmF0aW9uLlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgRmluYWwgY29udGV4dCByZXR1cm5lZCBhZnRlciB0aGUgcGFnaW5hdG9yIGFjdGlvblxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkNvbnRleHRVcGRhdGUob0NvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCB3aGVuZXZlciBhIGNvbnRleHQgaXMgbG9hZGVkIHVzaW5nIHRoZSBwYWdpbmF0b3IgYnV0dG9ucy4gSXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb250ZXh0IHN1cHBvcnRzIG5hdmlnYXRpb24uIFRoZSBtZXRob2QgbXVzdCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6XG5cdCAqIENvbnRleHROYXZpZ2F0aW9uVHlwZS5Ob25lOiBJZiB0aGUgY29udGV4dCBpcyBub3QgbmF2aWdhYmxlLlxuXHQgKiBDb250ZXh0TmF2aWdhdGlvblR5cGUuSW50ZXJuYWw6IElmIHRoZSBjb250ZXh0IHN1cHBvcnRzIGludGVybmFsIG5hdmlnYXRpb24gd2l0aGluIHRoZSBzYW1lIGFwcGxpY2F0aW9uIHRvIGEgZGV0YWlsIHZpZXcsIHN1Y2ggYXMgYW4gb2JqZWN0IHBhZ2Ugb3IgYSBzdWJvYmplY3QgcGFnZS5cblx0ICogQ29udGV4dE5hdmlnYXRpb25UeXBlLkV4dGVybmFsOiBJZiB0aGUgY29udGV4dCBuYXZpZ2F0ZXMgdG8gYW4gZXh0ZXJuYWwgYXBwbGljYXRpb24uXG5cdCAqIFRoZSBwYWdpbmF0b3IgYnV0dG9ucyBvbmx5IGFsbG93IG5hdmlnYXRpb24gdG8gY29udGV4dHMgd2l0aCBpbnRlcm5hbCBuYXZpZ2F0aW9uLiBDb250ZXh0cyB3aXRoIE5vbmUgb3IgRXh0ZXJuYWwgbmF2aWdhdGlvbiBhcmUgc2tpcHBlZC5cblx0ICogQHBhcmFtIGNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgdG8gYmUgbmF2aWdhdGVkLlxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugd2hpY2ggc2hvdWxkIHJlc29sdmUgdG8gQ29udGV4dE5hdmlnYXRpb25UeXBlIGVudW0uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTM4LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFzeW5jIGRldGVybWluZUNvbnRleHROYXZpZ2F0aW9uVHlwZShjb250ZXh0OiBDb250ZXh0KTogUHJvbWlzZTxDb250ZXh0TmF2aWdhdGlvblR5cGU+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKENvbnRleHROYXZpZ2F0aW9uVHlwZS5JbnRlcm5hbCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0VBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPTUEsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFBQyxLQUFBLEdBVzNEQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ2pCQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUFDLEtBQUEsR0FXbEJILGVBQWUsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FDakJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQUssQ0FBQyxFQUFBQyxLQUFBLEdBWW5DUixlQUFlLENBQUMsQ0FBQyxFQUFBUyxLQUFBLEdBQ2pCSixVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBQUcsS0FBQSxHQWlCbkNWLGVBQWUsQ0FBQyxDQUFDLEVBQUFXLEtBQUEsR0FDakJOLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNNLE9BQU8sQ0FBQyxFQUFBZixJQUFBLENBQUFnQixNQUFBLElBQUFDLE9BQUEsMEJBQUFDLG9CQUFBO0lBQUEsU0FBQW5CLFVBQUE7TUFBQSxPQUFBbUIsb0JBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQUMsY0FBQSxDQUFBdEIsU0FBQSxFQUFBbUIsb0JBQUE7SUFBQSxJQUFBSSxNQUFBLEdBQUF2QixTQUFBLENBQUF3QixTQUFBO0lBbkR0QztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQU5DRCxNQUFBO0lBU0E7SUFDQUUsVUFBVSxHQUhWLFNBR0FBLFVBQVVBLENBQUNDLFFBQTJCLEVBQUVDLFFBQWtCLEVBQVEsQ0FBQzs7SUFFbkU7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBSixNQUFBO0lBU0E7SUFDQUsscUJBQXFCLEdBSHJCLFNBR0FBLHFCQUFxQkEsQ0FBQ0MsWUFBOEIsRUFBRUMsYUFBcUIsRUFBRUMsWUFBb0IsRUFBVztNQUMzRyxPQUFPLEtBQUs7SUFDYjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBUixNQUFBO0lBUUE7SUFDQVMsZUFBZSxHQUhmLFNBR0FBLGVBQWVBLENBQUNMLFFBQWlCLEVBQVE7TUFDeEM7SUFBQTs7SUFHRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BVkM7SUFBQUosTUFBQSxDQWNNVSw4QkFBOEIsR0FIcEMsZUFHTUEsOEJBQThCQSxDQUFDQyxPQUFnQixFQUFrQztNQUN0RixPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ0MscUJBQXFCLENBQUNDLFFBQVEsQ0FBQztJQUN2RCxDQUFDO0lBQUEsT0FBQXRDLFNBQUE7RUFBQSxFQTFEc0J1QyxtQkFBbUIsR0FBQUMseUJBQUEsQ0FBQXRCLE9BQUEsQ0FBQU0sU0FBQSxpQkFBQXJCLEtBQUEsRUFBQUUsS0FBQSxHQUFBb0MsTUFBQSxDQUFBQyx3QkFBQSxDQUFBeEIsT0FBQSxDQUFBTSxTQUFBLGlCQUFBTixPQUFBLENBQUFNLFNBQUEsR0FBQWdCLHlCQUFBLENBQUF0QixPQUFBLENBQUFNLFNBQUEsNEJBQUFqQixLQUFBLEVBQUFDLEtBQUEsR0FBQWlDLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSw0QkFBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFnQix5QkFBQSxDQUFBdEIsT0FBQSxDQUFBTSxTQUFBLHNCQUFBWixLQUFBLEVBQUFDLEtBQUEsR0FBQTRCLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSxzQkFBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFnQix5QkFBQSxDQUFBdEIsT0FBQSxDQUFBTSxTQUFBLHFDQUFBVixLQUFBLEVBQUFDLEtBQUEsR0FBQTBCLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSxxQ0FBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFOLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BNkQ1QmpCLFNBQVM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYWdpbmF0b3IiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsInB1YmxpY0V4dGVuc2lvbiIsIl9kZWMzIiwiaG9va2FibGUiLCJfZGVjNCIsIl9kZWM1IiwiZXh0ZW5zaWJsZSIsIk92ZXJyaWRlRXhlY3V0aW9uIiwiQWZ0ZXIiLCJfZGVjNiIsIl9kZWM3IiwiX2RlYzgiLCJfZGVjOSIsIkluc3RlYWQiLCJfY2xhc3MiLCJfY2xhc3MyIiwiX0NvbnRyb2xsZXJFeHRlbnNpb24iLCJhcHBseSIsImFyZ3VtZW50cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwiaW5pdGlhbGl6ZSIsIm9CaW5kaW5nIiwib0NvbnRleHQiLCJvbkJlZm9yZUNvbnRleHRVcGRhdGUiLCJvTGlzdEJpbmRpbmciLCJpQ3VycmVudEluZGV4IiwiaUluZGV4VXBkYXRlIiwib25Db250ZXh0VXBkYXRlIiwiZGV0ZXJtaW5lQ29udGV4dE5hdmlnYXRpb25UeXBlIiwiY29udGV4dCIsIlByb21pc2UiLCJyZXNvbHZlIiwiQ29udGV4dE5hdmlnYXRpb25UeXBlIiwiSW50ZXJuYWwiLCJDb250cm9sbGVyRXh0ZW5zaW9uIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsIk9iamVjdCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiUGFnaW5hdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZVVJNUNsYXNzLCBleHRlbnNpYmxlLCBwdWJsaWNFeHRlbnNpb24gfSBmcm9tIFwic2FwL2ZlL2Jhc2UvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgeyBob29rYWJsZSB9IGZyb20gXCJzYXAvZmUvYmFzZS9Ib29rU3VwcG9ydFwiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgeyBDb250ZXh0TmF2aWdhdGlvblR5cGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IENvbnRyb2xsZXJFeHRlbnNpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyRXh0ZW5zaW9uXCI7XG5pbXBvcnQgT3ZlcnJpZGVFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL212Yy9PdmVycmlkZUV4ZWN1dGlvblwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIENvbnRleHQgfSBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTGlzdEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUxpc3RCaW5kaW5nXCI7XG5cbi8qKlxuICogQ29udHJvbGxlciBleHRlbnNpb24gcHJvdmlkaW5nIGhvb2tzIGZvciB0aGUgbmF2aWdhdGlvbiB1c2luZyBwYWdpbmF0b3JzXG4gKiBAaGlkZWNvbnN0cnVjdG9yXG4gKiBAcHVibGljXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb3JlLmNvbnRyb2xsZXJleHRlbnNpb25zLlBhZ2luYXRvclwiKVxuY2xhc3MgUGFnaW5hdG9yIGV4dGVuZHMgQ29udHJvbGxlckV4dGVuc2lvbiB7XG5cdHByb3RlY3RlZCBiYXNlITogUGFnZUNvbnRyb2xsZXI7XG5cblx0LyoqXG5cdCAqIEluaXRpYXRlcyB0aGUgcGFnaW5hdG9yIGNvbnRyb2wuXG5cdCAqIEBwYXJhbSBvQmluZGluZyBPRGF0YUxpc3RCaW5kaW5nIG9iamVjdFxuXHQgKiBAcGFyYW0gb0NvbnRleHQgQ3VycmVudCBjb250ZXh0IHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAaG9va2FibGUoXCJCZWZvcmVcIilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRpbml0aWFsaXplKG9CaW5kaW5nPzogT0RhdGFMaXN0QmluZGluZywgb0NvbnRleHQ/OiBDb250ZXh0KTogdm9pZCB7fVxuXG5cdC8qKlxuXHQgKiBDYWxsZWQgYmVmb3JlIGNvbnRleHQgdXBkYXRlLlxuXHQgKiBAcGFyYW0gb0xpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0XG5cdCAqIEBwYXJhbSBpQ3VycmVudEluZGV4IEN1cnJlbnQgaW5kZXggb2YgY29udGV4dCBpbiBsaXN0QmluZGluZyBmcm9tIHdoZXJlIHRoZSBuYXZpZ2F0aW9uIGlzIGluaXRpYXRlZFxuXHQgKiBAcGFyYW0gaUluZGV4VXBkYXRlIFRoZSBkZWx0YSBpbmRleCBmb3IgdXBkYXRlXG5cdCAqIEByZXR1cm5zIGB0cnVlYCB0byBwcmV2ZW50IHRoZSB1cGRhdGUgb2YgY3VycmVudCBjb250ZXh0LlxuXHQgKi9cblx0QHB1YmxpY0V4dGVuc2lvbigpXG5cdEBleHRlbnNpYmxlKE92ZXJyaWRlRXhlY3V0aW9uLkFmdGVyKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdG9uQmVmb3JlQ29udGV4dFVwZGF0ZShvTGlzdEJpbmRpbmc6IE9EYXRhTGlzdEJpbmRpbmcsIGlDdXJyZW50SW5kZXg6IG51bWJlciwgaUluZGV4VXBkYXRlOiBudW1iZXIpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgdXBkYXRlZCBjb250ZXh0IGFmdGVyIHRoZSBwYWdpbmF0b3Igb3BlcmF0aW9uLlxuXHQgKiBAcGFyYW0gb0NvbnRleHQgRmluYWwgY29udGV4dCByZXR1cm5lZCBhZnRlciB0aGUgcGFnaW5hdG9yIGFjdGlvblxuXHQgKiBAcHVibGljXG5cdCAqIEBzaW5jZSAxLjk0LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5BZnRlcilcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuXHRvbkNvbnRleHRVcGRhdGUob0NvbnRleHQ6IENvbnRleHQpOiB2b2lkIHtcblx0XHQvL1RvIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGFwcGxpY2F0aW9uXG5cdH1cblxuXHQvKipcblx0ICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCB3aGVuZXZlciBhIGNvbnRleHQgaXMgbG9hZGVkIHVzaW5nIHRoZSBwYWdpbmF0b3IgYnV0dG9ucy4gSXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb250ZXh0IHN1cHBvcnRzIG5hdmlnYXRpb24uIFRoZSBtZXRob2QgbXVzdCByZXR1cm4gb25lIG9mIHRoZSBmb2xsb3dpbmc6XG5cdCAqIENvbnRleHROYXZpZ2F0aW9uVHlwZS5Ob25lOiBJZiB0aGUgY29udGV4dCBpcyBub3QgbmF2aWdhYmxlLlxuXHQgKiBDb250ZXh0TmF2aWdhdGlvblR5cGUuSW50ZXJuYWw6IElmIHRoZSBjb250ZXh0IHN1cHBvcnRzIGludGVybmFsIG5hdmlnYXRpb24gd2l0aGluIHRoZSBzYW1lIGFwcGxpY2F0aW9uIHRvIGEgZGV0YWlsIHZpZXcsIHN1Y2ggYXMgYW4gb2JqZWN0IHBhZ2Ugb3IgYSBzdWJvYmplY3QgcGFnZS5cblx0ICogQ29udGV4dE5hdmlnYXRpb25UeXBlLkV4dGVybmFsOiBJZiB0aGUgY29udGV4dCBuYXZpZ2F0ZXMgdG8gYW4gZXh0ZXJuYWwgYXBwbGljYXRpb24uXG5cdCAqIFRoZSBwYWdpbmF0b3IgYnV0dG9ucyBvbmx5IGFsbG93IG5hdmlnYXRpb24gdG8gY29udGV4dHMgd2l0aCBpbnRlcm5hbCBuYXZpZ2F0aW9uLiBDb250ZXh0cyB3aXRoIE5vbmUgb3IgRXh0ZXJuYWwgbmF2aWdhdGlvbiBhcmUgc2tpcHBlZC5cblx0ICogQHBhcmFtIGNvbnRleHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNvbnRleHQgdG8gYmUgbmF2aWdhdGVkLlxuXHQgKiBAcmV0dXJucyBBIFByb21pc2Ugd2hpY2ggc2hvdWxkIHJlc29sdmUgdG8gQ29udGV4dE5hdmlnYXRpb25UeXBlIGVudW0uXG5cdCAqIEBwdWJsaWNcblx0ICogQHNpbmNlIDEuMTM4LjBcblx0ICovXG5cdEBwdWJsaWNFeHRlbnNpb24oKVxuXHRAZXh0ZW5zaWJsZShPdmVycmlkZUV4ZWN1dGlvbi5JbnN0ZWFkKVxuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5cdGFzeW5jIGRldGVybWluZUNvbnRleHROYXZpZ2F0aW9uVHlwZShjb250ZXh0OiBDb250ZXh0KTogUHJvbWlzZTxDb250ZXh0TmF2aWdhdGlvblR5cGU+IHtcblx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKENvbnRleHROYXZpZ2F0aW9uVHlwZS5JbnRlcm5hbCk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFnaW5hdG9yO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0VBU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTEEsSUFPTUEsU0FBUyxJQUFBQyxJQUFBLEdBRGRDLGNBQWMsQ0FBQyw0Q0FBNEMsQ0FBQyxFQUFBQyxLQUFBLEdBVzNEQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBQ2pCQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUFDLEtBQUEsR0FXbEJILGVBQWUsQ0FBQyxDQUFDLEVBQUFJLEtBQUEsR0FDakJDLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNDLEtBQUssQ0FBQyxFQUFBQyxLQUFBLEdBWW5DUixlQUFlLENBQUMsQ0FBQyxFQUFBUyxLQUFBLEdBQ2pCSixVQUFVLENBQUNDLGlCQUFpQixDQUFDQyxLQUFLLENBQUMsRUFBQUcsS0FBQSxHQWlCbkNWLGVBQWUsQ0FBQyxDQUFDLEVBQUFXLEtBQUEsR0FDakJOLFVBQVUsQ0FBQ0MsaUJBQWlCLENBQUNNLE9BQU8sQ0FBQyxFQUFBZixJQUFBLENBQUFnQixNQUFBLElBQUFDLE9BQUEsMEJBQUFDLG9CQUFBO0lBQUEsU0FBQW5CLFVBQUE7TUFBQSxPQUFBbUIsb0JBQUEsQ0FBQUMsS0FBQSxPQUFBQyxTQUFBO0lBQUE7SUFBQUMsY0FBQSxDQUFBdEIsU0FBQSxFQUFBbUIsb0JBQUE7SUFBQSxJQUFBSSxNQUFBLEdBQUF2QixTQUFBLENBQUF3QixTQUFBO0lBbkR0QztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQU5DRCxNQUFBO0lBU0E7SUFDQUUsVUFBVSxHQUhWLFNBR0FBLFVBQVVBLENBQUNDLFFBQTJCLEVBQUVDLFFBQWtCLEVBQVEsQ0FBQzs7SUFFbkU7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FOQztJQUFBSixNQUFBO0lBU0E7SUFDQUsscUJBQXFCLEdBSHJCLFNBR0FBLHFCQUFxQkEsQ0FBQ0MsWUFBOEIsRUFBRUMsYUFBcUIsRUFBRUMsWUFBb0IsRUFBVztNQUMzRyxPQUFPLEtBQUs7SUFDYjs7SUFFQTtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FMQztJQUFBUixNQUFBO0lBUUE7SUFDQVMsZUFBZSxHQUhmLFNBR0FBLGVBQWVBLENBQUNMLFFBQWlCLEVBQVE7TUFDeEM7SUFBQTs7SUFHRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BVkM7SUFBQUosTUFBQSxDQWNNVSw4QkFBOEIsR0FIcEMsZUFHTUEsOEJBQThCQSxDQUFDQyxPQUFnQixFQUFrQztNQUN0RixPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQ0MscUJBQXFCLENBQUNDLFFBQVEsQ0FBQztJQUN2RCxDQUFDO0lBQUEsT0FBQXRDLFNBQUE7RUFBQSxFQTFEc0J1QyxtQkFBbUIsR0FBQUMseUJBQUEsQ0FBQXRCLE9BQUEsQ0FBQU0sU0FBQSxpQkFBQXJCLEtBQUEsRUFBQUUsS0FBQSxHQUFBb0MsTUFBQSxDQUFBQyx3QkFBQSxDQUFBeEIsT0FBQSxDQUFBTSxTQUFBLGlCQUFBTixPQUFBLENBQUFNLFNBQUEsR0FBQWdCLHlCQUFBLENBQUF0QixPQUFBLENBQUFNLFNBQUEsNEJBQUFqQixLQUFBLEVBQUFDLEtBQUEsR0FBQWlDLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSw0QkFBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFnQix5QkFBQSxDQUFBdEIsT0FBQSxDQUFBTSxTQUFBLHNCQUFBWixLQUFBLEVBQUFDLEtBQUEsR0FBQTRCLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSxzQkFBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFnQix5QkFBQSxDQUFBdEIsT0FBQSxDQUFBTSxTQUFBLHFDQUFBVixLQUFBLEVBQUFDLEtBQUEsR0FBQTBCLE1BQUEsQ0FBQUMsd0JBQUEsQ0FBQXhCLE9BQUEsQ0FBQU0sU0FBQSxxQ0FBQU4sT0FBQSxDQUFBTSxTQUFBLEdBQUFOLE9BQUEsTUFBQUQsTUFBQTtFQUFBLE9BNkQ1QmpCLFNBQVM7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,11 +1,11 @@
1
1
  import { defineUI5Class, extensible, publicExtension } from "sap/fe/base/ClassSupport";
2
2
  import { hookable } from "sap/fe/base/HookSupport";
3
3
  import type PageController from "sap/fe/core/PageController";
4
+ import { ContextNavigationType } from "sap/fe/core/library";
4
5
  import ControllerExtension from "sap/ui/core/mvc/ControllerExtension";
5
6
  import OverrideExecution from "sap/ui/core/mvc/OverrideExecution";
6
7
  import type { default as Context } from "sap/ui/model/odata/v4/Context";
7
8
  import type ODataListBinding from "sap/ui/model/odata/v4/ODataListBinding";
8
- import { ContextNavigationType } from "../library";
9
9
 
10
10
  /**
11
11
  * Controller extension providing hooks for the navigation using paginators