@sapui5/sap.fe.core 1.99.0 → 1.100.0

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 (246) hide show
  1. package/package.json +4 -2
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AnnotationHelper.js +1 -69
  4. package/src/sap/fe/core/AnnotationHelper.ts +0 -70
  5. package/src/sap/fe/core/AppComponent.js +388 -399
  6. package/src/sap/fe/core/AppComponent.ts +403 -0
  7. package/src/sap/fe/core/AppStateHandler.js +127 -158
  8. package/src/sap/fe/core/BaseController.js +82 -58
  9. package/src/sap/fe/core/BaseController.ts +68 -0
  10. package/src/sap/fe/core/CommonUtils.js +111 -20
  11. package/src/sap/fe/core/CommonUtils.ts +131 -32
  12. package/src/sap/fe/core/ExtensionAPI.js +278 -274
  13. package/src/sap/fe/core/ExtensionAPI.ts +250 -0
  14. package/src/sap/fe/core/PageController.js +157 -29
  15. package/src/sap/fe/core/PageController.ts +60 -32
  16. package/src/sap/fe/core/RouterProxy.js +694 -756
  17. package/src/sap/fe/core/RouterProxy.ts +11 -9
  18. package/src/sap/fe/core/Synchronization.js +21 -31
  19. package/src/sap/fe/core/TemplateComponent.js +1 -1
  20. package/src/sap/fe/core/TemplateComponent.ts +10 -3
  21. package/src/sap/fe/core/TemplateModel.js +20 -38
  22. package/src/sap/fe/core/TemplateModel.ts +1 -1
  23. package/src/sap/fe/core/TransactionHelper.js +1354 -1370
  24. package/src/sap/fe/core/TransactionHelper.ts +33 -22
  25. package/src/sap/fe/core/actions/collaboration/ActivitySync.js +392 -0
  26. package/src/sap/fe/core/actions/collaboration/ActivitySync.ts +355 -0
  27. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.js +136 -0
  28. package/src/sap/fe/core/actions/collaboration/CollaborationCommon.ts +119 -0
  29. package/src/sap/fe/core/actions/collaboration/Manage.js +262 -0
  30. package/src/sap/fe/core/actions/collaboration/Manage.ts +244 -0
  31. package/src/sap/fe/core/actions/collaboration/ManageDialog.fragment.xml +103 -0
  32. package/src/sap/fe/core/actions/collaboration/UserDetails.fragment.xml +13 -0
  33. package/src/sap/fe/core/actions/draft.js +30 -68
  34. package/src/sap/fe/core/actions/draft.ts +44 -71
  35. package/src/sap/fe/core/actions/messageHandling.js +55 -36
  36. package/src/sap/fe/core/actions/messageHandling.ts +66 -46
  37. package/src/sap/fe/core/actions/operations.js +34 -15
  38. package/src/sap/fe/core/actions/operations.ts +48 -18
  39. package/src/sap/fe/core/actions/sticky.js +17 -4
  40. package/src/sap/fe/core/actions/sticky.ts +21 -4
  41. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.js +69 -66
  42. package/src/sap/fe/core/controllerextensions/ControllerExtensionMetadata.ts +65 -0
  43. package/src/sap/fe/core/controllerextensions/EditFlow.js +1593 -1669
  44. package/src/sap/fe/core/controllerextensions/EditFlow.ts +1672 -0
  45. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +79 -54
  46. package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +61 -0
  47. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +718 -779
  48. package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +783 -0
  49. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +796 -816
  50. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +803 -0
  51. package/src/sap/fe/core/controllerextensions/InternalRouting.js +1004 -1005
  52. package/src/sap/fe/core/controllerextensions/InternalRouting.ts +978 -0
  53. package/src/sap/fe/core/controllerextensions/KPIManagement.js +487 -521
  54. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +2 -2
  55. package/src/sap/fe/core/controllerextensions/MassEdit.js +141 -169
  56. package/src/sap/fe/core/controllerextensions/MassEdit.ts +156 -0
  57. package/src/sap/fe/core/controllerextensions/MessageHandler.js +233 -244
  58. package/src/sap/fe/core/controllerextensions/MessageHandler.ts +225 -0
  59. package/src/sap/fe/core/controllerextensions/PageReady.js +301 -336
  60. package/src/sap/fe/core/controllerextensions/PageReady.ts +12 -10
  61. package/src/sap/fe/core/controllerextensions/Paginator.js +188 -175
  62. package/src/sap/fe/core/controllerextensions/Paginator.ts +163 -0
  63. package/src/sap/fe/core/controllerextensions/Placeholder.js +157 -149
  64. package/src/sap/fe/core/controllerextensions/Placeholder.ts +151 -0
  65. package/src/sap/fe/core/controllerextensions/Routing.js +144 -125
  66. package/src/sap/fe/core/controllerextensions/Routing.ts +132 -0
  67. package/src/sap/fe/core/controllerextensions/RoutingListener.js +7 -6
  68. package/src/sap/fe/core/controllerextensions/RoutingListener.ts +3 -0
  69. package/src/sap/fe/core/controllerextensions/Share.js +230 -268
  70. package/src/sap/fe/core/controllerextensions/Share.ts +231 -0
  71. package/src/sap/fe/core/controllerextensions/SideEffects.js +592 -633
  72. package/src/sap/fe/core/controllerextensions/SideEffects.ts +8 -7
  73. package/src/sap/fe/core/controllerextensions/ViewState.js +788 -806
  74. package/src/sap/fe/core/controllerextensions/ViewState.ts +805 -0
  75. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +2 -2
  76. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +2 -2
  77. package/src/sap/fe/core/controls/CommandExecution.js +67 -66
  78. package/src/sap/fe/core/controls/CommandExecution.ts +72 -0
  79. package/src/sap/fe/core/controls/ConditionalWrapper.js +90 -75
  80. package/src/sap/fe/core/controls/ConditionalWrapper.ts +83 -0
  81. package/src/sap/fe/core/controls/CustomQuickViewPage.js +130 -125
  82. package/src/sap/fe/core/controls/CustomQuickViewPage.ts +126 -0
  83. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +103 -112
  84. package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +101 -0
  85. package/src/sap/fe/core/controls/FieldWrapper.js +122 -135
  86. package/src/sap/fe/core/controls/FieldWrapper.ts +115 -0
  87. package/src/sap/fe/core/controls/FilterBar.js +162 -159
  88. package/src/sap/fe/core/controls/FilterBar.ts +143 -0
  89. package/src/sap/fe/core/controls/FormElementWrapper.js +45 -39
  90. package/src/sap/fe/core/controls/FormElementWrapper.ts +40 -0
  91. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +37 -42
  92. package/src/sap/fe/core/controls/MultiValueParameterDelegate.ts +31 -0
  93. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +126 -116
  94. package/src/sap/fe/core/controls/filterbar/FilterContainer.ts +98 -0
  95. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +241 -255
  96. package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +245 -0
  97. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +150 -141
  98. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +125 -0
  99. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +335 -322
  100. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +337 -0
  101. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +74 -74
  102. package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +70 -0
  103. package/src/sap/fe/core/converters/ConverterContext.js +348 -379
  104. package/src/sap/fe/core/converters/ConverterContext.ts +19 -16
  105. package/src/sap/fe/core/converters/ManifestSettings.js +12 -1
  106. package/src/sap/fe/core/converters/ManifestSettings.ts +12 -1
  107. package/src/sap/fe/core/converters/ManifestWrapper.js +354 -378
  108. package/src/sap/fe/core/converters/ManifestWrapper.ts +10 -0
  109. package/src/sap/fe/core/converters/MetaModelConverter.js +6 -4
  110. package/src/sap/fe/core/converters/MetaModelConverter.ts +5 -2
  111. package/src/sap/fe/core/converters/TemplateConverter.js +1 -1
  112. package/src/sap/fe/core/converters/TemplateConverter.ts +2 -1
  113. package/src/sap/fe/core/converters/annotations/DataField.js +26 -12
  114. package/src/sap/fe/core/converters/annotations/DataField.ts +37 -13
  115. package/src/sap/fe/core/converters/controls/Common/Form.js +2 -2
  116. package/src/sap/fe/core/converters/controls/Common/Form.ts +4 -2
  117. package/src/sap/fe/core/converters/controls/Common/KPI.js +1 -1
  118. package/src/sap/fe/core/converters/controls/Common/KPI.ts +3 -2
  119. package/src/sap/fe/core/converters/controls/Common/Table.js +130 -23
  120. package/src/sap/fe/core/converters/controls/Common/Table.ts +134 -29
  121. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +118 -53
  122. package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +156 -93
  123. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +161 -207
  124. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +148 -206
  125. package/src/sap/fe/core/converters/helpers/Aggregation.js +115 -133
  126. package/src/sap/fe/core/converters/helpers/BindingHelper.js +20 -6
  127. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +16 -4
  128. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +12 -1
  129. package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +11 -0
  130. package/src/sap/fe/core/converters/helpers/Key.js +42 -57
  131. package/src/sap/fe/core/converters/helpers/Key.ts +1 -1
  132. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +25 -4
  133. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +20 -3
  134. package/src/sap/fe/core/converters/templates/ListReportConverter.js +10 -4
  135. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +15 -4
  136. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +7 -5
  137. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +5 -1
  138. package/src/sap/fe/core/designtime/AppComponent.designtime.js +92 -98
  139. package/src/sap/fe/core/designtime/AppComponent.designtime.ts +91 -0
  140. package/src/sap/fe/core/formatters/CollaborationFormatter.js +104 -0
  141. package/src/sap/fe/core/formatters/CollaborationFormatter.ts +60 -0
  142. package/src/sap/fe/core/formatters/TableFormatter.js +53 -2
  143. package/src/sap/fe/core/formatters/TableFormatter.ts +51 -0
  144. package/src/sap/fe/core/fpm/Component.js +50 -54
  145. package/src/sap/fe/core/fpm/Component.ts +48 -0
  146. package/src/sap/fe/core/helpers/AppStartupHelper.js +323 -309
  147. package/src/sap/fe/core/helpers/AppStartupHelper.ts +363 -337
  148. package/src/sap/fe/core/helpers/BindingExpression.js +7 -7
  149. package/src/sap/fe/core/helpers/BindingExpression.ts +7 -7
  150. package/src/sap/fe/core/helpers/ClassSupport.js +186 -62
  151. package/src/sap/fe/core/helpers/ClassSupport.ts +168 -52
  152. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +5 -4
  153. package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -5
  154. package/src/sap/fe/core/helpers/FPMHelper.js +1 -1
  155. package/src/sap/fe/core/helpers/FPMHelper.ts +1 -1
  156. package/src/sap/fe/core/helpers/MassEditHelper.js +601 -684
  157. package/src/sap/fe/core/helpers/MassEditHelper.ts +699 -0
  158. package/src/sap/fe/core/helpers/ModelHelper.js +25 -1
  159. package/src/sap/fe/core/helpers/ModelHelper.ts +23 -0
  160. package/src/sap/fe/core/helpers/SemanticDateOperators.js +5 -1
  161. package/src/sap/fe/core/helpers/SemanticDateOperators.ts +4 -0
  162. package/src/sap/fe/core/library.js +426 -451
  163. package/src/sap/fe/core/library.support.js +22 -33
  164. package/src/sap/fe/core/library.support.ts +23 -0
  165. package/src/sap/fe/core/library.ts +420 -0
  166. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +5 -3
  167. package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +4 -1
  168. package/src/sap/fe/core/messagebundle.properties +22 -5
  169. package/src/sap/fe/core/messagebundle_ar.properties +27 -7
  170. package/src/sap/fe/core/messagebundle_bg.properties +27 -7
  171. package/src/sap/fe/core/messagebundle_ca.properties +27 -7
  172. package/src/sap/fe/core/messagebundle_cs.properties +27 -7
  173. package/src/sap/fe/core/messagebundle_cy.properties +27 -7
  174. package/src/sap/fe/core/messagebundle_da.properties +27 -7
  175. package/src/sap/fe/core/messagebundle_de.properties +27 -7
  176. package/src/sap/fe/core/messagebundle_el.properties +27 -7
  177. package/src/sap/fe/core/messagebundle_en.properties +27 -7
  178. package/src/sap/fe/core/messagebundle_en_GB.properties +27 -7
  179. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +27 -7
  180. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +27 -7
  181. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +27 -7
  182. package/src/sap/fe/core/messagebundle_es.properties +27 -7
  183. package/src/sap/fe/core/messagebundle_es_MX.properties +27 -7
  184. package/src/sap/fe/core/messagebundle_et.properties +27 -7
  185. package/src/sap/fe/core/messagebundle_fi.properties +28 -8
  186. package/src/sap/fe/core/messagebundle_fr.properties +28 -8
  187. package/src/sap/fe/core/messagebundle_fr_CA.properties +29 -9
  188. package/src/sap/fe/core/messagebundle_hi.properties +27 -7
  189. package/src/sap/fe/core/messagebundle_hr.properties +27 -7
  190. package/src/sap/fe/core/messagebundle_hu.properties +27 -7
  191. package/src/sap/fe/core/messagebundle_id.properties +27 -7
  192. package/src/sap/fe/core/messagebundle_it.properties +27 -7
  193. package/src/sap/fe/core/messagebundle_iw.properties +27 -7
  194. package/src/sap/fe/core/messagebundle_ja.properties +26 -6
  195. package/src/sap/fe/core/messagebundle_kk.properties +27 -7
  196. package/src/sap/fe/core/messagebundle_ko.properties +27 -7
  197. package/src/sap/fe/core/messagebundle_lt.properties +27 -7
  198. package/src/sap/fe/core/messagebundle_lv.properties +28 -8
  199. package/src/sap/fe/core/messagebundle_ms.properties +27 -7
  200. package/src/sap/fe/core/messagebundle_nl.properties +27 -7
  201. package/src/sap/fe/core/messagebundle_no.properties +27 -7
  202. package/src/sap/fe/core/messagebundle_pl.properties +27 -7
  203. package/src/sap/fe/core/messagebundle_pt.properties +28 -8
  204. package/src/sap/fe/core/messagebundle_pt_PT.properties +27 -7
  205. package/src/sap/fe/core/messagebundle_ro.properties +27 -7
  206. package/src/sap/fe/core/messagebundle_ru.properties +27 -7
  207. package/src/sap/fe/core/messagebundle_sh.properties +27 -7
  208. package/src/sap/fe/core/messagebundle_sk.properties +27 -7
  209. package/src/sap/fe/core/messagebundle_sl.properties +27 -7
  210. package/src/sap/fe/core/messagebundle_sv.properties +27 -7
  211. package/src/sap/fe/core/messagebundle_th.properties +26 -6
  212. package/src/sap/fe/core/messagebundle_tr.properties +30 -10
  213. package/src/sap/fe/core/messagebundle_uk.properties +27 -7
  214. package/src/sap/fe/core/messagebundle_vi.properties +27 -7
  215. package/src/sap/fe/core/messagebundle_zh_CN.properties +27 -7
  216. package/src/sap/fe/core/messagebundle_zh_TW.properties +27 -7
  217. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +45 -71
  218. package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +154 -192
  219. package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +4 -4
  220. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +66 -92
  221. package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +1 -1
  222. package/src/sap/fe/core/services/NavigationServiceFactory.js +284 -339
  223. package/src/sap/fe/core/services/NavigationServiceFactory.ts +10 -13
  224. package/src/sap/fe/core/services/ResourceModelServiceFactory.js +67 -102
  225. package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +5 -2
  226. package/src/sap/fe/core/services/RoutingServiceFactory.js +754 -814
  227. package/src/sap/fe/core/services/RoutingServiceFactory.ts +13 -13
  228. package/src/sap/fe/core/services/ShellServicesFactory.js +649 -736
  229. package/src/sap/fe/core/services/ShellServicesFactory.ts +7 -4
  230. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +567 -592
  231. package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +22 -3
  232. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +354 -386
  233. package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +21 -14
  234. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.js +1 -1
  235. package/src/sap/fe/core/services/view/TemplatingErrorPage.controller.ts +1 -1
  236. package/src/sap/fe/core/support/CommonHelper.js +1 -1
  237. package/src/sap/fe/core/support/CommonHelper.ts +1 -1
  238. package/src/sap/fe/core/support/Diagnostics.js +36 -48
  239. package/src/sap/fe/core/templating/DataModelPathHelper.js +93 -85
  240. package/src/sap/fe/core/templating/DataModelPathHelper.ts +104 -95
  241. package/src/sap/fe/core/templating/FilterHelper.js +25 -32
  242. package/src/sap/fe/core/templating/FilterHelper.ts +36 -35
  243. package/src/sap/fe/core/templating/PropertyHelper.js +2 -2
  244. package/src/sap/fe/core/templating/PropertyHelper.ts +1 -1
  245. package/src/sap/fe/core/templating/UIFormatters.js +32 -26
  246. package/src/sap/fe/core/templating/UIFormatters.ts +37 -24
@@ -68,6 +68,30 @@ sap.ui.define([], function () {
68
68
  return false;
69
69
  },
70
70
 
71
+ /**
72
+ * Method to determine if the service, supports collaboration draft.
73
+ *
74
+ * @function
75
+ * @name isCollaborationDraftSupported
76
+ * @param {object} metaObject MetaObject to be used for determination
77
+ * @param {object} templateInterface API provided by UI5 templating if used
78
+ * @returns {boolean} Returns true if the service supports collaboration draft, else false
79
+ */
80
+ isCollaborationDraftSupported: function (metaObject, templateInterface) {
81
+ var _templateInterface$co;
82
+
83
+ var oMetaModel = (templateInterface === null || templateInterface === void 0 ? void 0 : (_templateInterface$co = templateInterface.context) === null || _templateInterface$co === void 0 ? void 0 : _templateInterface$co.getModel()) || metaObject;
84
+ var oEntityContainer = oMetaModel.getObject("/");
85
+
86
+ for (var sEntitySet in oEntityContainer) {
87
+ if (oEntityContainer[sEntitySet].$kind === "EntitySet" && oMetaModel.getObject("/" + sEntitySet + "@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction")) {
88
+ return true;
89
+ }
90
+ }
91
+
92
+ return false;
93
+ },
94
+
71
95
  /**
72
96
  * Returns path to the target entity set via using navigation property binding.
73
97
  *
@@ -228,4 +252,4 @@ sap.ui.define([], function () {
228
252
  };
229
253
  return ModelHelper;
230
254
  }, false);
231
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJvQ29udGV4dCIsImdldFBhdGgiLCJzRW50aXR5U2V0UGF0aCIsImdldEVudGl0eVNldFBhdGgiLCJmaWx0ZXJPdXROYXZQcm9wQmluZGluZyIsImpvaW4iLCJnZXRBY3Rpb25QYXJhbWV0ZXJJdGVtc01vZGVsUGF0aCIsIm9QYXJhbWV0ZXIiLCIkTmFtZSIsInVuZGVmaW5lZCIsInNQYXRoUGFydCIsImVuaGFuY2VJbnRlcm5hbEpTT05Nb2RlbCIsIm9JbnRlcm5hbE1vZGVsIiwiZm5CaW5kQ29udGV4dCIsImJpbmRDb250ZXh0IiwibVBhcmFtZXRlcnMiLCJhcmdzIiwiYXBwbHkiLCJmbkdldEJvdW5kQ29udGV4dCIsImdldEJvdW5kQ29udGV4dCIsInN1YkFyZ3MiLCJvQm91bmRDb250ZXh0Iiwic2V0UHJvcGVydHkiLCJzU2V0UHJvcFBhdGgiLCJ2YWx1ZSIsImdldE1vZGVsIiwiaXNGaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlIiwiYUZpbHRlckZ1bmN0aW9ucyIsImluZGV4T2YiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJvTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJnZXRBYnNvbHV0ZU1ldGFQYXRoRm9yTGlzdEJpbmRpbmciLCJvVmlldyIsInZMaXN0QmluZGluZyIsInNNZXRhUGF0aCIsInN0YXJ0c1dpdGgiLCJvQmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInNSb290Q29udGV4dFBhdGgiLCJvQmluZGluZyIsIm9Sb290QmluZGluZyIsImdldFJvb3RCaW5kaW5nIiwic1Jvb3RCaW5kaW5nUGF0aCIsInNSZWxhdGl2ZVBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFGQTtBQUtBLE1BQU1BLFdBQVcsR0FBRztBQUNuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLElBQUFBLHdCQUF3QixFQUFFLFVBQVNDLFVBQVQsRUFBcUM7QUFDOUQsVUFBTUMsZ0JBQWdCLEdBQUdELFVBQVUsQ0FBQ0UsU0FBWCxDQUFxQixHQUFyQixDQUF6Qjs7QUFDQSxXQUFLLElBQU1DLFVBQVgsSUFBeUJGLGdCQUF6QixFQUEyQztBQUMxQyxZQUNDQSxnQkFBZ0IsQ0FBQ0UsVUFBRCxDQUFoQixDQUE2QkMsS0FBN0IsS0FBdUMsV0FBdkMsSUFDQUosVUFBVSxDQUFDRSxTQUFYLFlBQXlCQyxVQUF6Qiw2REFGRCxFQUdFO0FBQ0QsaUJBQU8sSUFBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0EsS0FwQmtCOztBQXNCbkI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NFLElBQUFBLGdCQUFnQixFQUFFLFVBQVNMLFVBQVQsRUFBMEJNLEtBQTFCLEVBQXlDO0FBQzFELFVBQU1DLFlBQVksR0FBR1AsVUFBVSxDQUFDUSxjQUFYLENBQTBCRixLQUExQixDQUFyQjtBQUNBLFVBQUlHLGdCQUFnQixHQUFHLEtBQUtDLGtCQUFMLENBQXdCSCxZQUF4QixDQUF2QjtBQUFBLFVBQ0NJLHVCQUREO0FBQUEsVUFFQ0MsTUFGRDs7QUFJQSxVQUFJTCxZQUFZLENBQUNNLFdBQWIsSUFBNEJOLFlBQVksQ0FBQ00sV0FB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eUMsWUFBdkIsQ0FBWjtBQUNBLFNBSEQsTUFHTztBQUNOO0FBQ0EsY0FBTUcsZUFBZSxHQUFHSixLQUFLLENBQUNLLGlCQUFOLEVBQXhCO0FBQ0EsY0FBTUMsZ0JBQWdCLEdBQUdGLGVBQWUsQ0FBQ3BDLE9BQWhCLEVBQXpCO0FBQ0FrQyxVQUFBQSxTQUFTLEdBQUd6RCxVQUFVLENBQUNlLFdBQVgsV0FBMEI4QyxnQkFBMUIsY0FBOENMLFlBQTlDLEVBQVo7QUFDQTtBQUNELE9BVkQsTUFVTztBQUNOO0FBQ0EsWUFBTU0sUUFBUSxHQUFHTixZQUFqQjtBQUNBLFlBQU1PLFlBQVksR0FBR0QsUUFBUSxDQUFDRSxjQUFULEVBQXJCOztBQUNBLFlBQUlGLFFBQVEsS0FBS0MsWUFBakIsRUFBK0I7QUFDOUI7QUFDQU4sVUFBQUEsU0FBUyxHQUFHekQsVUFBVSxDQUFDZSxXQUFYLENBQXVCK0MsUUFBUSxDQUFDdkMsT0FBVCxFQUF2QixDQUFaO0FBQ0EsU0FIRCxNQUdPO0FBQ047QUFDQSxjQUFNMEMsZ0JBQWdCLEdBQUdGLFlBQVksQ0FBQ3hDLE9BQWIsRUFBekI7QUFDQSxjQUFNMkMsYUFBYSxHQUFHSixRQUFRLENBQUN2QyxPQUFULEVBQXRCO0FBQ0FrQyxVQUFBQSxTQUFTLEdBQUd6RCxVQUFVLENBQUNlLFdBQVgsV0FBMEJrRCxnQkFBMUIsY0FBOENDLGFBQTlDLEVBQVo7QUFDQTtBQUNEOztBQUNELGFBQU9ULFNBQVA7QUFDQTtBQXROa0IsR0FBcEI7U0E2TmUzRCxXIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGhlbHBlcnMgdG8gYmUgdXNlZCBhdCBydW50aW1lIHRvIHJldHJpZXZlIGZ1cnRoZXIgaW5mb3JtYXRpb24gb24gdGhlIG1vZGVsICovXG5pbXBvcnQgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCBCYXNlQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5cbmNvbnN0IE1vZGVsSGVscGVyID0ge1xuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgc3RpY2t5LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTWV0YU1vZGVsfSBvTWV0YU1vZGVsIE9EYXRhTW9kZWxNZXRhTW9kZWwgdG8gY2hlY2sgZm9yIHN0aWNreSBlbmFibGVkIGVudGl0eVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHN0aWNreSwgZWxzZSBmYWxzZVxuXHQgKi9cblx0aXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkOiBmdW5jdGlvbihvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCkge1xuXHRcdGNvbnN0IG9FbnRpdHlDb250YWluZXIgPSBvTWV0YU1vZGVsLmdldE9iamVjdChcIi9cIik7XG5cdFx0Zm9yIChjb25zdCBzRW50aXR5U2V0IGluIG9FbnRpdHlDb250YWluZXIpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0b0VudGl0eUNvbnRhaW5lcltzRW50aXR5U2V0XS4ka2luZCA9PT0gXCJFbnRpdHlTZXRcIiAmJlxuXHRcdFx0XHRvTWV0YU1vZGVsLmdldE9iamVjdChgLyR7c0VudGl0eVNldH1AY29tLnNhcC52b2NhYnVsYXJpZXMuU2Vzc2lvbi52MS5TdGlja3lTZXNzaW9uU3VwcG9ydGVkYClcblx0XHRcdCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBwcm9ncmFtbWluZyBtb2RlbCBpcyBkcmFmdC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzRHJhZnRTdXBwb3J0ZWRcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwub2RhdGEudjQuTWV0YU1vZGVsfSBvTWV0YU1vZGVsIE9EYXRhTW9kZWxNZXRhTW9kZWwgb2YgdGhlIGNvbnRleHQgZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1BhdGggUGF0aCBmb3Igd2hpY2ggZHJhZnQgc3VwcG9ydCBzaGFsbCBiZSBjaGVja2VkXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzRHJhZnRTdXBwb3J0ZWQ6IGZ1bmN0aW9uKG9NZXRhTW9kZWw6IGFueSwgc1BhdGg6IHN0cmluZykge1xuXHRcdGNvbnN0IG9NZXRhQ29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQoc1BhdGgpO1xuXHRcdGxldCBzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob01ldGFDb250ZXh0KSxcblx0XHRcdG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0LFxuXHRcdFx0YVBhcnRzO1xuXG5cdFx0aWYgKG9NZXRhQ29udGV4dC5nZXRQcm9wZXJ0eSAmJiBvTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoKSAmJiBvTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkoKS4kQ29udGFpbnNUYXJnZXQgPT09IHRydWUpIHtcblx0XHRcdGFQYXJ0cyA9IG9NZXRhTW9kZWxcblx0XHRcdFx0LmdldE1ldGFQYXRoKHNQYXRoKVxuXHRcdFx0XHQuc3BsaXQoXCIvXCIpXG5cdFx0XHRcdC5maWx0ZXIoQm9vbGVhbik7XG5cdFx0XHRpZiAoYVBhcnRzLmxlbmd0aCkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gYVBhcnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG5cdFx0XHRcdFx0b1BhcmVudEVudGl0eVNldENvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoXCIvXCIgKyBhUGFydHNbaV0pKTtcblx0XHRcdFx0XHRpZiAob1BhcmVudEVudGl0eVNldENvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIpIHtcblx0XHRcdFx0XHRcdHNUYXJnZXRFbnRpdHlTZXQgPSB0aGlzLmdldFRhcmdldEVudGl0eVNldChvUGFyZW50RW50aXR5U2V0Q29udGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9NZXRhQ29udGV4dCk7XG5cdFx0fVxuXHRcdGNvbnN0IG9FbnRpdHlDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChzVGFyZ2V0RW50aXR5U2V0KTtcblx0XHRpZiAoXG5cdFx0XHRvRW50aXR5Q29udGV4dC5nZXRPYmplY3QoXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdFwiKSB8fFxuXHRcdFx0b0VudGl0eUNvbnRleHQuZ2V0T2JqZWN0KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdE5vZGVcIilcblx0XHQpIHtcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXQgdmlhIHVzaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgYmluZGluZy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFRhcmdldEVudGl0eVNldFxuXHQgKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBDb250ZXh0IGZvciB3aGljaCB0aGUgdGFyZ2V0IGVudGl0eSBzZXQgc2hhbGwgYmUgZGV0ZXJtaW5lZFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHBhdGggdG8gdGhlIHRhcmdldCBlbnRpdHkgc2V0XG5cdCAqL1xuXHRnZXRUYXJnZXRFbnRpdHlTZXQ6IGZ1bmN0aW9uKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIFwiL1wiICsgb0NvbnRleHQuZ2V0T2JqZWN0KHNFbnRpdHlTZXRQYXRoKTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBjb21wbGV0ZSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRFbnRpdHlTZXRQYXRoXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUGF0aCBQYXRoIGZvciB3aGljaCBjb21wbGV0ZSBlbnRpdHlTZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RW50aXR5U2V0UGF0aDogZnVuY3Rpb24oc1BhdGg6IHN0cmluZykge1xuXHRcdHJldHVybiAoXG5cdFx0XHRcIi9cIiArXG5cdFx0XHRzUGF0aFxuXHRcdFx0XHQuc3BsaXQoXCIvXCIpXG5cdFx0XHRcdC5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpXG5cdFx0XHRcdC5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggZm9yIHRoZSBpdGVtcyBwcm9wZXJ0eSBvZiBNdWx0aVZhbHVlRmllbGQgcGFyYW1ldGVycy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvUGFyYW1ldGVyIEFjdGlvbiBQYXJhbWV0ZXJcblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29tcGxldGUgbW9kZWwgcGF0aCBmb3IgdGhlIGl0ZW1zIHByb3BlcnR5IG9mIE11bHRpVmFsdWVGaWVsZCBwYXJhbWV0ZXJzXG5cdCAqL1xuXHRnZXRBY3Rpb25QYXJhbWV0ZXJJdGVtc01vZGVsUGF0aDogZnVuY3Rpb24ob1BhcmFtZXRlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9QYXJhbWV0ZXIgJiYgb1BhcmFtZXRlci4kTmFtZSA/IGB7cGF0aDogJ212ZnZpZXc+LyR7b1BhcmFtZXRlci4kTmFtZX0nfWAgOiB1bmRlZmluZWQ7XG5cdH0sXG5cblx0ZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmc6IGZ1bmN0aW9uKHNQYXRoUGFydDogYW55KSB7XG5cdFx0cmV0dXJuIHNQYXRoUGFydCAhPT0gXCJcIiAmJiBzUGF0aFBhcnQgIT09IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhIHNldFByb3BlcnR5IHRvIHRoZSBjcmVhdGVkIGJpbmRpbmcgY29udGV4dHMgb2YgdGhlIGludGVybmFsIEpTT04gbW9kZWwuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IEludGVybmFsIEpTT04gTW9kZWwgd2hpY2ggaXMgZW5oYW5jZWRcblx0ICovXG5cblx0ZW5oYW5jZUludGVybmFsSlNPTk1vZGVsOiBmdW5jdGlvbihvSW50ZXJuYWxNb2RlbDogYW55KSB7XG5cdFx0Y29uc3QgZm5CaW5kQ29udGV4dCA9IG9JbnRlcm5hbE1vZGVsLmJpbmRDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsLmJpbmRDb250ZXh0ID0gZnVuY3Rpb24oc1BhdGg6IGFueSwgb0NvbnRleHQ6IGFueSwgbVBhcmFtZXRlcnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcblx0XHRcdG9Db250ZXh0ID0gZm5CaW5kQ29udGV4dC5hcHBseSh0aGlzLCBbc1BhdGgsIG9Db250ZXh0LCBtUGFyYW1ldGVycywgLi4uYXJnc10pO1xuXHRcdFx0Y29uc3QgZm5HZXRCb3VuZENvbnRleHQgPSBvQ29udGV4dC5nZXRCb3VuZENvbnRleHQ7XG5cblx0XHRcdG9Db250ZXh0LmdldEJvdW5kQ29udGV4dCA9IGZ1bmN0aW9uKC4uLnN1YkFyZ3M6IGFueVtdKSB7XG5cdFx0XHRcdGNvbnN0IG9Cb3VuZENvbnRleHQgPSBmbkdldEJvdW5kQ29udGV4dC5hcHBseSh0aGlzLCAuLi5zdWJBcmdzKTtcblx0XHRcdFx0aWYgKG9Cb3VuZENvbnRleHQgJiYgIW9Cb3VuZENvbnRleHQuc2V0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRvQm91bmRDb250ZXh0LnNldFByb3BlcnR5ID0gZnVuY3Rpb24oc1NldFByb3BQYXRoOiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmdldE9iamVjdCgpID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaW5pdGlhbGl6ZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmdldE1vZGVsKCkuc2V0UHJvcGVydHkodGhpcy5nZXRQYXRoKCksIHt9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuZ2V0TW9kZWwoKS5zZXRQcm9wZXJ0eShzU2V0UHJvcFBhdGgsIHZhbHVlLCB0aGlzKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvQm91bmRDb250ZXh0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBvQ29udGV4dDtcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgZmlsdGVyaW5nIG9uIHRoZSB0YWJsZSBpcyBjYXNlIHNlbnNpdGl2ZS5cblx0ICpcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIGluc3RhbmNlIG9mIHRoZSBtZXRhIG1vZGVsXG5cdCAqIEByZXR1cm5zIHtib29sZWFufHVuZGVmaW5lZH0gUmV0dXJucyAnZmFsc2UnIGlmIEZpbHRlckZ1bmN0aW9ucyBhbm5vdGF0aW9uIHN1cHBvcnRzICd0b2xvd2VyJywgZWxzZSAndHJ1ZSdcblx0ICovXG5cdGlzRmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZTogZnVuY3Rpb24ob01ldGFNb2RlbDogYW55KSB7XG5cdFx0aWYgKCFvTWV0YU1vZGVsKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRjb25zdCBhRmlsdGVyRnVuY3Rpb25zID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyRnVuY3Rpb25zXCIpO1xuXHRcdC8vIEdldCBmaWx0ZXIgZnVuY3Rpb25zIGRlZmluZWQgYXQgRW50aXR5Q29udGFpbmVyIGFuZCBjaGVjayBmb3IgZXhpc3RlbmNlIG9mICd0b2xvd2VyJ1xuXHRcdHJldHVybiBhRmlsdGVyRnVuY3Rpb25zID8gYUZpbHRlckZ1bmN0aW9ucy5pbmRleE9mKFwidG9sb3dlclwiKSA9PT0gLTEgOiB0cnVlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IG9Db250ZXh0IENvbnRleHQgdG8gYmUgdXNlZFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqL1xuXHRnZXRNZXRhUGF0aEZvckNvbnRleHQ6IGZ1bmN0aW9uKG9Db250ZXh0OiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBvTWV0YU1vZGVsICYmIHNQYXRoICYmIG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBsaXN0YmluZGluZy5cblx0ICpcblx0ICogQHBhcmFtIHtWaWV3fSBvVmlldyBWaWV3IG9mIHRoZSBjb250cm9sIHVzaW5nIGxpc3RCaW5kaW5nXG5cdCAqIEBwYXJhbSB7T0RhdGFMaXN0QmluZGluZyB8IHN0cmluZ30gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbihvVmlldzogYW55LCB2TGlzdEJpbmRpbmc6IGFueSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvVmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGxldCBzTWV0YVBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHZMaXN0QmluZGluZyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZMaXN0QmluZGluZy5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHQvLyBhYnNvbHV0ZSBwYXRoXG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgodkxpc3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHJlbGF0aXZlIHBhdGhcblx0XHRcdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdFx0Y29uc3Qgc1Jvb3RDb250ZXh0UGF0aCA9IG9CaW5kaW5nQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoYCR7c1Jvb3RDb250ZXh0UGF0aH0vJHt2TGlzdEJpbmRpbmd9YCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHdlIGFscmVhZHkgZ2V0IGEgbGlzdCBiaW5kaW5nIHVzZSB0aGlzIG9uZVxuXHRcdFx0Y29uc3Qgb0JpbmRpbmcgPSB2TGlzdEJpbmRpbmc7XG5cdFx0XHRjb25zdCBvUm9vdEJpbmRpbmcgPSBvQmluZGluZy5nZXRSb290QmluZGluZygpO1xuXHRcdFx0aWYgKG9CaW5kaW5nID09PSBvUm9vdEJpbmRpbmcpIHtcblx0XHRcdFx0Ly8gYWJzb2x1dGUgcGF0aFxuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9CaW5kaW5nLmdldFBhdGgoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyByZWxhdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IHNSb290QmluZGluZ1BhdGggPSBvUm9vdEJpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0XHRjb25zdCBzUmVsYXRpdmVQYXRoID0gb0JpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290QmluZGluZ1BhdGh9LyR7c1JlbGF0aXZlUGF0aH1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNNZXRhUGF0aDtcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxNb2RlbENvbnRleHQgPSBCYXNlQ29udGV4dCAmIHtcblx0c2V0UHJvcGVydHkoc1BhdGg6IHN0cmluZywgdlZhbHVlOiBhbnkpOiB2b2lkO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9kZWxIZWxwZXI7XG4iXX0=
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGVsSGVscGVyLnRzIl0sIm5hbWVzIjpbIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwib01ldGFNb2RlbCIsIm9FbnRpdHlDb250YWluZXIiLCJnZXRPYmplY3QiLCJzRW50aXR5U2V0IiwiJGtpbmQiLCJpc0RyYWZ0U3VwcG9ydGVkIiwic1BhdGgiLCJvTWV0YUNvbnRleHQiLCJnZXRNZXRhQ29udGV4dCIsInNUYXJnZXRFbnRpdHlTZXQiLCJnZXRUYXJnZXRFbnRpdHlTZXQiLCJvUGFyZW50RW50aXR5U2V0Q29udGV4dCIsImFQYXJ0cyIsImdldFByb3BlcnR5IiwiJENvbnRhaW5zVGFyZ2V0IiwiZ2V0TWV0YVBhdGgiLCJzcGxpdCIsImZpbHRlciIsIkJvb2xlYW4iLCJsZW5ndGgiLCJpIiwib0VudGl0eUNvbnRleHQiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsIm1ldGFPYmplY3QiLCJ0ZW1wbGF0ZUludGVyZmFjZSIsImNvbnRleHQiLCJnZXRNb2RlbCIsIm9Db250ZXh0IiwiZ2V0UGF0aCIsInNFbnRpdHlTZXRQYXRoIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlck91dE5hdlByb3BCaW5kaW5nIiwiam9pbiIsImdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoIiwib1BhcmFtZXRlciIsIiROYW1lIiwidW5kZWZpbmVkIiwic1BhdGhQYXJ0IiwiZW5oYW5jZUludGVybmFsSlNPTk1vZGVsIiwib0ludGVybmFsTW9kZWwiLCJmbkJpbmRDb250ZXh0IiwiYmluZENvbnRleHQiLCJtUGFyYW1ldGVycyIsImFyZ3MiLCJhcHBseSIsImZuR2V0Qm91bmRDb250ZXh0IiwiZ2V0Qm91bmRDb250ZXh0Iiwic3ViQXJncyIsIm9Cb3VuZENvbnRleHQiLCJzZXRQcm9wZXJ0eSIsInNTZXRQcm9wUGF0aCIsInZhbHVlIiwiaXNGaWx0ZXJpbmdDYXNlU2Vuc2l0aXZlIiwiYUZpbHRlckZ1bmN0aW9ucyIsImluZGV4T2YiLCJnZXRNZXRhUGF0aEZvckNvbnRleHQiLCJvTW9kZWwiLCJnZXRNZXRhTW9kZWwiLCJnZXRBYnNvbHV0ZU1ldGFQYXRoRm9yTGlzdEJpbmRpbmciLCJvVmlldyIsInZMaXN0QmluZGluZyIsInNNZXRhUGF0aCIsInN0YXJ0c1dpdGgiLCJvQmluZGluZ0NvbnRleHQiLCJnZXRCaW5kaW5nQ29udGV4dCIsInNSb290Q29udGV4dFBhdGgiLCJvQmluZGluZyIsIm9Sb290QmluZGluZyIsImdldFJvb3RCaW5kaW5nIiwic1Jvb3RCaW5kaW5nUGF0aCIsInNSZWxhdGl2ZVBhdGgiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7QUFGQTtBQUtBLE1BQU1BLFdBQVcsR0FBRztBQUNuQjtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NDLElBQUFBLHdCQUF3QixFQUFFLFVBQVNDLFVBQVQsRUFBcUM7QUFDOUQsVUFBTUMsZ0JBQWdCLEdBQUdELFVBQVUsQ0FBQ0UsU0FBWCxDQUFxQixHQUFyQixDQUF6Qjs7QUFDQSxXQUFLLElBQU1DLFVBQVgsSUFBeUJGLGdCQUF6QixFQUEyQztBQUMxQyxZQUNDQSxnQkFBZ0IsQ0FBQ0UsVUFBRCxDQUFoQixDQUE2QkMsS0FBN0IsS0FBdUMsV0FBdkMsSUFDQUosVUFBVSxDQUFDRSxTQUFYLFlBQXlCQyxVQUF6Qiw2REFGRCxFQUdFO0FBQ0QsaUJBQU8sSUFBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxLQUFQO0FBQ0EsS0FwQmtCOztBQXNCbkI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0NFLElBQUFBLGdCQUFnQixFQUFFLFVBQVNMLFVBQVQsRUFBMEJNLEtBQTFCLEVBQXlDO0FBQzFELFVBQU1DLFlBQVksR0FBR1AsVUFBVSxDQUFDUSxjQUFYLENBQTBCRixLQUExQixDQUFyQjtBQUNBLFVBQUlHLGdCQUFnQixHQUFHLEtBQUtDLGtCQUFMLENBQXdCSCxZQUF4QixDQUF2QjtBQUFBLFVB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LFlBQWpCLEVBQStCO0FBQzlCO0FBQ0FOLFVBQUFBLFNBQVMsR0FBRzdELFVBQVUsQ0FBQ2UsV0FBWCxDQUF1Qm1ELFFBQVEsQ0FBQ3RDLE9BQVQsRUFBdkIsQ0FBWjtBQUNBLFNBSEQsTUFHTztBQUNOO0FBQ0EsY0FBTXlDLGdCQUFnQixHQUFHRixZQUFZLENBQUN2QyxPQUFiLEVBQXpCO0FBQ0EsY0FBTTBDLGFBQWEsR0FBR0osUUFBUSxDQUFDdEMsT0FBVCxFQUF0QjtBQUNBaUMsVUFBQUEsU0FBUyxHQUFHN0QsVUFBVSxDQUFDZSxXQUFYLFdBQTBCc0QsZ0JBQTFCLGNBQThDQyxhQUE5QyxFQUFaO0FBQ0E7QUFDRDs7QUFDRCxhQUFPVCxTQUFQO0FBQ0E7QUE3T2tCLEdBQXBCO1NBb1BlL0QsVyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiLyogVGhpcyBjbGFzcyBjb250YWlucyBoZWxwZXJzIHRvIGJlIHVzZWQgYXQgcnVudGltZSB0byByZXRyaWV2ZSBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBtb2RlbCAqL1xuaW1wb3J0IENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgQmFzZUNvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuXG5jb25zdCBNb2RlbEhlbHBlciA9IHtcblx0LyoqXG5cdCAqIE1ldGhvZCB0byBkZXRlcm1pbmUgaWYgdGhlIHByb2dyYW1taW5nIG1vZGVsIGlzIHN0aWNreS5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZFxuXHQgKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1ldGFNb2RlbH0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIHRvIGNoZWNrIGZvciBzdGlja3kgZW5hYmxlZCBlbnRpdHlcblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiBzdGlja3ksIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZDogZnVuY3Rpb24ob01ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwpIHtcblx0XHRjb25zdCBvRW50aXR5Q29udGFpbmVyID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIpO1xuXHRcdGZvciAoY29uc3Qgc0VudGl0eVNldCBpbiBvRW50aXR5Q29udGFpbmVyKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9FbnRpdHlDb250YWluZXJbc0VudGl0eVNldF0uJGtpbmQgPT09IFwiRW50aXR5U2V0XCIgJiZcblx0XHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3QoYC8ke3NFbnRpdHlTZXR9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLlNlc3Npb24udjEuU3RpY2t5U2Vzc2lvblN1cHBvcnRlZGApXG5cdFx0XHQpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgcHJvZ3JhbW1pbmcgbW9kZWwgaXMgZHJhZnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBpc0RyYWZ0U3VwcG9ydGVkXG5cdCAqIEBwYXJhbSB7c2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk1ldGFNb2RlbH0gb01ldGFNb2RlbCBPRGF0YU1vZGVsTWV0YU1vZGVsIG9mIHRoZSBjb250ZXh0IGZvciB3aGljaCBkcmFmdCBzdXBwb3J0IHNoYWxsIGJlIGNoZWNrZWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNQYXRoIFBhdGggZm9yIHdoaWNoIGRyYWZ0IHN1cHBvcnQgc2hhbGwgYmUgY2hlY2tlZFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIGRyYWZ0LCBlbHNlIGZhbHNlXG5cdCAqL1xuXHRpc0RyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbihvTWV0YU1vZGVsOiBhbnksIHNQYXRoOiBzdHJpbmcpIHtcblx0XHRjb25zdCBvTWV0YUNvbnRleHQgPSBvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KHNQYXRoKTtcblx0XHRsZXQgc1RhcmdldEVudGl0eVNldCA9IHRoaXMuZ2V0VGFyZ2V0RW50aXR5U2V0KG9NZXRhQ29udGV4dCksXG5cdFx0XHRvUGFyZW50RW50aXR5U2V0Q29udGV4dCxcblx0XHRcdGFQYXJ0cztcblxuXHRcdGlmIChvTWV0YUNvbnRleHQuZ2V0UHJvcGVydHkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkgJiYgb01ldGFDb250ZXh0LmdldFByb3BlcnR5KCkuJENvbnRhaW5zVGFyZ2V0ID09PSB0cnVlKSB7XG5cdFx0XHRhUGFydHMgPSBvTWV0YU1vZGVsXG5cdFx0XHRcdC5nZXRNZXRhUGF0aChzUGF0aClcblx0XHRcdFx0LnNwbGl0KFwiL1wiKVxuXHRcdFx0XHQuZmlsdGVyKEJvb2xlYW4pO1xuXHRcdFx0aWYgKGFQYXJ0cy5sZW5ndGgpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGFQYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHRcdFx0XHRcdG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0ID0gb01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvTWV0YU1vZGVsLmdldE1ldGFQYXRoKFwiL1wiICsgYVBhcnRzW2ldKSk7XG5cdFx0XHRcdFx0aWYgKG9QYXJlbnRFbnRpdHlTZXRDb250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkVudGl0eVNldFwiKSB7XG5cdFx0XHRcdFx0XHRzVGFyZ2V0RW50aXR5U2V0ID0gdGhpcy5nZXRUYXJnZXRFbnRpdHlTZXQob1BhcmVudEVudGl0eVNldENvbnRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHNUYXJnZXRFbnRpdHlTZXQgPSB0aGlzLmdldFRhcmdldEVudGl0eVNldChvTWV0YUNvbnRleHQpO1xuXHRcdH1cblx0XHRjb25zdCBvRW50aXR5Q29udGV4dCA9IG9NZXRhTW9kZWwuZ2V0TWV0YUNvbnRleHQoc1RhcmdldEVudGl0eVNldCk7XG5cdFx0aWYgKFxuXHRcdFx0b0VudGl0eUNvbnRleHQuZ2V0T2JqZWN0KFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5EcmFmdFJvb3RcIikgfHxcblx0XHRcdG9FbnRpdHlDb250ZXh0LmdldE9iamVjdChcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuRHJhZnROb2RlXCIpXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBNZXRob2QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBzZXJ2aWNlLCBzdXBwb3J0cyBjb2xsYWJvcmF0aW9uIGRyYWZ0LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaXNDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWRcblx0ICogQHBhcmFtIHtvYmplY3R9IG1ldGFPYmplY3QgTWV0YU9iamVjdCB0byBiZSB1c2VkIGZvciBkZXRlcm1pbmF0aW9uXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB0ZW1wbGF0ZUludGVyZmFjZSBBUEkgcHJvdmlkZWQgYnkgVUk1IHRlbXBsYXRpbmcgaWYgdXNlZFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSBzZXJ2aWNlIHN1cHBvcnRzIGNvbGxhYm9yYXRpb24gZHJhZnQsIGVsc2UgZmFsc2Vcblx0ICovXG5cdGlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkOiBmdW5jdGlvbihtZXRhT2JqZWN0OiBhbnksIHRlbXBsYXRlSW50ZXJmYWNlPzogYW55KSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9ICh0ZW1wbGF0ZUludGVyZmFjZT8uY29udGV4dD8uZ2V0TW9kZWwoKSB8fCBtZXRhT2JqZWN0KSBhcyBPRGF0YU1ldGFNb2RlbDtcblx0XHRjb25zdCBvRW50aXR5Q29udGFpbmVyID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIpO1xuXHRcdGZvciAoY29uc3Qgc0VudGl0eVNldCBpbiBvRW50aXR5Q29udGFpbmVyKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9FbnRpdHlDb250YWluZXJbc0VudGl0eVNldF0uJGtpbmQgPT09IFwiRW50aXR5U2V0XCIgJiZcblx0XHRcdFx0b01ldGFNb2RlbC5nZXRPYmplY3QoXCIvXCIgKyBzRW50aXR5U2V0ICsgXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkRyYWZ0Um9vdC9TaGFyZUFjdGlvblwiKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0sXG5cblx0LyoqXG5cdCAqIFJldHVybnMgcGF0aCB0byB0aGUgdGFyZ2V0IGVudGl0eSBzZXQgdmlhIHVzaW5nIG5hdmlnYXRpb24gcHJvcGVydHkgYmluZGluZy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldFRhcmdldEVudGl0eVNldFxuXHQgKiBAcGFyYW0ge3NhcC51aS5tb2RlbC5vZGF0YS52NC5Db250ZXh0fSBvQ29udGV4dCBDb250ZXh0IGZvciB3aGljaCB0aGUgdGFyZ2V0IGVudGl0eSBzZXQgc2hhbGwgYmUgZGV0ZXJtaW5lZFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHBhdGggdG8gdGhlIHRhcmdldCBlbnRpdHkgc2V0XG5cdCAqL1xuXHRnZXRUYXJnZXRFbnRpdHlTZXQ6IGZ1bmN0aW9uKG9Db250ZXh0OiBDb250ZXh0KSB7XG5cdFx0Y29uc3Qgc1BhdGggPSBvQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRleHQuZ2V0T2JqZWN0KFwiJGtpbmRcIikgPT09IFwiRW50aXR5U2V0XCIgfHxcblx0XHRcdG9Db250ZXh0LmdldE9iamVjdChcIiRraW5kXCIpID09PSBcIkFjdGlvblwiIHx8XG5cdFx0XHRvQ29udGV4dC5nZXRPYmplY3QoXCIwLyRraW5kXCIpID09PSBcIkFjdGlvblwiXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gc1BhdGg7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChzUGF0aCk7XG5cdFx0cmV0dXJuIFwiL1wiICsgb0NvbnRleHQuZ2V0T2JqZWN0KHNFbnRpdHlTZXRQYXRoKTtcblx0fSxcblxuXHQvKipcblx0ICogUmV0dXJucyBjb21wbGV0ZSBwYXRoIHRvIHRoZSBlbnRpdHkgc2V0IHZpYSB1c2luZyBuYXZpZ2F0aW9uIHByb3BlcnR5IGJpbmRpbmcuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBnZXRFbnRpdHlTZXRQYXRoXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUGF0aCBQYXRoIGZvciB3aGljaCBjb21wbGV0ZSBlbnRpdHlTZXQgcGF0aCBuZWVkcyB0byBiZSBkZXRlcm1pbmVkXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgY29tcGxldGUgcGF0aCB0byB0aGUgZW50aXR5IHNldFxuXHQgKi9cblx0Z2V0RW50aXR5U2V0UGF0aDogZnVuY3Rpb24oc1BhdGg6IHN0cmluZykge1xuXHRcdHJldHVybiAoXG5cdFx0XHRcIi9cIiArXG5cdFx0XHRzUGF0aFxuXHRcdFx0XHQuc3BsaXQoXCIvXCIpXG5cdFx0XHRcdC5maWx0ZXIoTW9kZWxIZWxwZXIuZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmcpXG5cdFx0XHRcdC5qb2luKFwiLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nL1wiKVxuXHRcdCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEdldHMgdGhlIHBhdGggZm9yIHRoZSBpdGVtcyBwcm9wZXJ0eSBvZiBNdWx0aVZhbHVlRmllbGQgcGFyYW1ldGVycy5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGdldEFjdGlvblBhcmFtZXRlckl0ZW1zTW9kZWxQYXRoXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBvUGFyYW1ldGVyIEFjdGlvbiBQYXJhbWV0ZXJcblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29tcGxldGUgbW9kZWwgcGF0aCBmb3IgdGhlIGl0ZW1zIHByb3BlcnR5IG9mIE11bHRpVmFsdWVGaWVsZCBwYXJhbWV0ZXJzXG5cdCAqL1xuXHRnZXRBY3Rpb25QYXJhbWV0ZXJJdGVtc01vZGVsUGF0aDogZnVuY3Rpb24ob1BhcmFtZXRlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9QYXJhbWV0ZXIgJiYgb1BhcmFtZXRlci4kTmFtZSA/IGB7cGF0aDogJ212ZnZpZXc+LyR7b1BhcmFtZXRlci4kTmFtZX0nfWAgOiB1bmRlZmluZWQ7XG5cdH0sXG5cblx0ZmlsdGVyT3V0TmF2UHJvcEJpbmRpbmc6IGZ1bmN0aW9uKHNQYXRoUGFydDogYW55KSB7XG5cdFx0cmV0dXJuIHNQYXRoUGFydCAhPT0gXCJcIiAmJiBzUGF0aFBhcnQgIT09IFwiJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdcIjtcblx0fSxcblxuXHQvKipcblx0ICogQWRkcyBhIHNldFByb3BlcnR5IHRvIHRoZSBjcmVhdGVkIGJpbmRpbmcgY29udGV4dHMgb2YgdGhlIGludGVybmFsIEpTT04gbW9kZWwuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBlbmhhbmNlSW50ZXJuYWxKU09OTW9kZWxcblx0ICogQHBhcmFtIHtzYXAudWkubW9kZWwuanNvbi5KU09OTW9kZWx9IEludGVybmFsIEpTT04gTW9kZWwgd2hpY2ggaXMgZW5oYW5jZWRcblx0ICovXG5cblx0ZW5oYW5jZUludGVybmFsSlNPTk1vZGVsOiBmdW5jdGlvbihvSW50ZXJuYWxNb2RlbDogYW55KSB7XG5cdFx0Y29uc3QgZm5CaW5kQ29udGV4dCA9IG9JbnRlcm5hbE1vZGVsLmJpbmRDb250ZXh0O1xuXHRcdG9JbnRlcm5hbE1vZGVsLmJpbmRDb250ZXh0ID0gZnVuY3Rpb24oc1BhdGg6IGFueSwgb0NvbnRleHQ6IGFueSwgbVBhcmFtZXRlcnM6IGFueSwgLi4uYXJnczogYW55W10pIHtcblx0XHRcdG9Db250ZXh0ID0gZm5CaW5kQ29udGV4dC5hcHBseSh0aGlzLCBbc1BhdGgsIG9Db250ZXh0LCBtUGFyYW1ldGVycywgLi4uYXJnc10pO1xuXHRcdFx0Y29uc3QgZm5HZXRCb3VuZENvbnRleHQgPSBvQ29udGV4dC5nZXRCb3VuZENvbnRleHQ7XG5cblx0XHRcdG9Db250ZXh0LmdldEJvdW5kQ29udGV4dCA9IGZ1bmN0aW9uKC4uLnN1YkFyZ3M6IGFueVtdKSB7XG5cdFx0XHRcdGNvbnN0IG9Cb3VuZENvbnRleHQgPSBmbkdldEJvdW5kQ29udGV4dC5hcHBseSh0aGlzLCAuLi5zdWJBcmdzKTtcblx0XHRcdFx0aWYgKG9Cb3VuZENvbnRleHQgJiYgIW9Cb3VuZENvbnRleHQuc2V0UHJvcGVydHkpIHtcblx0XHRcdFx0XHRvQm91bmRDb250ZXh0LnNldFByb3BlcnR5ID0gZnVuY3Rpb24oc1NldFByb3BQYXRoOiBhbnksIHZhbHVlOiBhbnkpIHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmdldE9iamVjdCgpID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaW5pdGlhbGl6ZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmdldE1vZGVsKCkuc2V0UHJvcGVydHkodGhpcy5nZXRQYXRoKCksIHt9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuZ2V0TW9kZWwoKS5zZXRQcm9wZXJ0eShzU2V0UHJvcFBhdGgsIHZhbHVlLCB0aGlzKTtcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBvQm91bmRDb250ZXh0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiBvQ29udGV4dDtcblx0XHR9O1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBSZXR1cm5zIHdoZXRoZXIgZmlsdGVyaW5nIG9uIHRoZSB0YWJsZSBpcyBjYXNlIHNlbnNpdGl2ZS5cblx0ICpcblx0ICogQHBhcmFtIG9NZXRhTW9kZWwgVGhlIGluc3RhbmNlIG9mIHRoZSBtZXRhIG1vZGVsXG5cdCAqIEByZXR1cm5zIHtib29sZWFufHVuZGVmaW5lZH0gUmV0dXJucyAnZmFsc2UnIGlmIEZpbHRlckZ1bmN0aW9ucyBhbm5vdGF0aW9uIHN1cHBvcnRzICd0b2xvd2VyJywgZWxzZSAndHJ1ZSdcblx0ICovXG5cdGlzRmlsdGVyaW5nQ2FzZVNlbnNpdGl2ZTogZnVuY3Rpb24ob01ldGFNb2RlbDogYW55KSB7XG5cdFx0aWYgKCFvTWV0YU1vZGVsKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRjb25zdCBhRmlsdGVyRnVuY3Rpb25zID0gb01ldGFNb2RlbC5nZXRPYmplY3QoXCIvQE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyRnVuY3Rpb25zXCIpO1xuXHRcdC8vIEdldCBmaWx0ZXIgZnVuY3Rpb25zIGRlZmluZWQgYXQgRW50aXR5Q29udGFpbmVyIGFuZCBjaGVjayBmb3IgZXhpc3RlbmNlIG9mICd0b2xvd2VyJ1xuXHRcdHJldHVybiBhRmlsdGVyRnVuY3Rpb25zID8gYUZpbHRlckZ1bmN0aW9ucy5pbmRleE9mKFwidG9sb3dlclwiKSA9PT0gLTEgOiB0cnVlO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBjb250ZXh0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0NvbnRleHR9IG9Db250ZXh0IENvbnRleHQgdG8gYmUgdXNlZFxuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGNvbnRleHQuXG5cdCAqL1xuXHRnZXRNZXRhUGF0aEZvckNvbnRleHQ6IGZ1bmN0aW9uKG9Db250ZXh0OiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBvQ29udGV4dC5nZXRNb2RlbCgpLFxuXHRcdFx0b01ldGFNb2RlbCA9IG9Nb2RlbC5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdHNQYXRoID0gb0NvbnRleHQuZ2V0UGF0aCgpO1xuXHRcdHJldHVybiBvTWV0YU1vZGVsICYmIHNQYXRoICYmIG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoc1BhdGgpO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXQgTWV0YVBhdGggZm9yIHRoZSBsaXN0YmluZGluZy5cblx0ICpcblx0ICogQHBhcmFtIHtWaWV3fSBvVmlldyBWaWV3IG9mIHRoZSBjb250cm9sIHVzaW5nIGxpc3RCaW5kaW5nXG5cdCAqIEBwYXJhbSB7T0RhdGFMaXN0QmluZGluZyB8IHN0cmluZ30gdkxpc3RCaW5kaW5nIE9EYXRhTGlzdEJpbmRpbmcgb2JqZWN0IG9yIHRoZSBiaW5kaW5nIHBhdGggZm9yIGEgdGVtcG9yYXJ5IGxpc3QgYmluZGluZ1xuXHQgKiBAcmV0dXJucyB7c3RyaW5nIHwgdW5kZWZpbmVkfSBSZXR1cm5zIG1ldGEgcGF0aCBmb3IgdGhlIGxpc3RiaW5kaW5nLlxuXHQgKi9cblx0Z2V0QWJzb2x1dGVNZXRhUGF0aEZvckxpc3RCaW5kaW5nOiBmdW5jdGlvbihvVmlldzogYW55LCB2TGlzdEJpbmRpbmc6IGFueSkge1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBvVmlldy5nZXRNb2RlbCgpLmdldE1ldGFNb2RlbCgpO1xuXHRcdGxldCBzTWV0YVBhdGg7XG5cblx0XHRpZiAodHlwZW9mIHZMaXN0QmluZGluZyA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0aWYgKHZMaXN0QmluZGluZy5zdGFydHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0XHQvLyBhYnNvbHV0ZSBwYXRoXG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgodkxpc3RCaW5kaW5nKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIHJlbGF0aXZlIHBhdGhcblx0XHRcdFx0Y29uc3Qgb0JpbmRpbmdDb250ZXh0ID0gb1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKTtcblx0XHRcdFx0Y29uc3Qgc1Jvb3RDb250ZXh0UGF0aCA9IG9CaW5kaW5nQ29udGV4dC5nZXRQYXRoKCk7XG5cdFx0XHRcdHNNZXRhUGF0aCA9IG9NZXRhTW9kZWwuZ2V0TWV0YVBhdGgoYCR7c1Jvb3RDb250ZXh0UGF0aH0vJHt2TGlzdEJpbmRpbmd9YCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIHdlIGFscmVhZHkgZ2V0IGEgbGlzdCBiaW5kaW5nIHVzZSB0aGlzIG9uZVxuXHRcdFx0Y29uc3Qgb0JpbmRpbmcgPSB2TGlzdEJpbmRpbmc7XG5cdFx0XHRjb25zdCBvUm9vdEJpbmRpbmcgPSBvQmluZGluZy5nZXRSb290QmluZGluZygpO1xuXHRcdFx0aWYgKG9CaW5kaW5nID09PSBvUm9vdEJpbmRpbmcpIHtcblx0XHRcdFx0Ly8gYWJzb2x1dGUgcGF0aFxuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKG9CaW5kaW5nLmdldFBhdGgoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyByZWxhdGl2ZSBwYXRoXG5cdFx0XHRcdGNvbnN0IHNSb290QmluZGluZ1BhdGggPSBvUm9vdEJpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0XHRjb25zdCBzUmVsYXRpdmVQYXRoID0gb0JpbmRpbmcuZ2V0UGF0aCgpO1xuXHRcdFx0XHRzTWV0YVBhdGggPSBvTWV0YU1vZGVsLmdldE1ldGFQYXRoKGAke3NSb290QmluZGluZ1BhdGh9LyR7c1JlbGF0aXZlUGF0aH1gKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNNZXRhUGF0aDtcblx0fVxufTtcblxuZXhwb3J0IHR5cGUgSW50ZXJuYWxNb2RlbENvbnRleHQgPSBCYXNlQ29udGV4dCAmIHtcblx0c2V0UHJvcGVydHkoc1BhdGg6IHN0cmluZywgdlZhbHVlOiBhbnkpOiB2b2lkO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTW9kZWxIZWxwZXI7XG4iXX0=
@@ -67,6 +67,29 @@ const ModelHelper = {
67
67
  return false;
68
68
  },
69
69
 
70
+ /**
71
+ * Method to determine if the service, supports collaboration draft.
72
+ *
73
+ * @function
74
+ * @name isCollaborationDraftSupported
75
+ * @param {object} metaObject MetaObject to be used for determination
76
+ * @param {object} templateInterface API provided by UI5 templating if used
77
+ * @returns {boolean} Returns true if the service supports collaboration draft, else false
78
+ */
79
+ isCollaborationDraftSupported: function(metaObject: any, templateInterface?: any) {
80
+ const oMetaModel = (templateInterface?.context?.getModel() || metaObject) as ODataMetaModel;
81
+ const oEntityContainer = oMetaModel.getObject("/");
82
+ for (const sEntitySet in oEntityContainer) {
83
+ if (
84
+ oEntityContainer[sEntitySet].$kind === "EntitySet" &&
85
+ oMetaModel.getObject("/" + sEntitySet + "@com.sap.vocabularies.Common.v1.DraftRoot/ShareAction")
86
+ ) {
87
+ return true;
88
+ }
89
+ }
90
+ return false;
91
+ },
92
+
70
93
  /**
71
94
  * Returns path to the target entity set via using navigation property binding.
72
95
  *
@@ -163,6 +163,10 @@ sap.ui.define(["sap/ui/mdc/condition/FilterOperatorUtil", "sap/ui/mdc/condition/
163
163
  "YEARTODATE": {
164
164
  "key": "YEARTODATE",
165
165
  "category": FIXED_YEAR_CATEGORY
166
+ },
167
+ "DATETOYEAR": {
168
+ "key": "DATETOYEAR",
169
+ "category": FIXED_YEAR_CATEGORY
166
170
  }
167
171
  };
168
172
 
@@ -342,4 +346,4 @@ sap.ui.define(["sap/ui/mdc/condition/FilterOperatorUtil", "sap/ui/mdc/condition/
342
346
  };
343
347
  return SemanticDateOperators;
344
348
  }, false);
345
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJzYXAiLCJ1aSIsImdldENvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJhZGRPcGVyYXRvciIsImdldFN1cHBvcnRlZE9wZXJhdGlvbnMiLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsInJlbW92ZVNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldEZpbHRlck9wZXJhdGlvbnMiLCJhT3BlcmF0aW9ucyIsIm4iLCJwdXNoIiwibWFwIiwia2V5IiwiaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIm9Db25kaXRpb25zIiwiYVNlbWFudGljRGF0ZU9wcyIsImFGaWx0ZXJDb25kdGlvbiIsIm9TZW1hbnRpY09wZXJhdG9yIiwiZmluZCIsIm9Db25kaXRpb24iLCJvcGVyYXRvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBLE1BQU1BLG9CQUFvQixHQUFHLENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUIsSUFBakIsRUFBdUIsV0FBdkIsQ0FBN0I7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxjQUE5QjtBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFlBQTVCO0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsa0JBQWxDO0FBQ0EsTUFBTUMsMEJBQTBCLEdBQUcsbUJBQW5DO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsZUFBL0I7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1D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QWdELENBQUMsQ0FBeEQ7QUFDQSxTQUZ5QixDQUExQjs7QUFHQSxZQUFJSCxpQkFBSixFQUF1QjtBQUN0QixpQkFBTyxLQUFQO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDQTtBQTNDNEIsR0FBOUI7U0E4Q2V2QixxQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEZpbHRlck9wZXJhdG9yVXRpbCBmcm9tIFwic2FwL3VpL21kYy9jb25kaXRpb24vRmlsdGVyT3BlcmF0b3JVdGlsXCI7XG5pbXBvcnQgT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL09wZXJhdG9yXCI7XG5pbXBvcnQgTW9kZWxPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgVmFsaWRhdGVFeGNlcHRpb24gZnJvbSBcInNhcC91aS9tb2RlbC9WYWxpZGF0ZUV4Y2VwdGlvblwiO1xuXG5jb25zdCBhU3VwcG9ydGVkT3BlcmF0aW9ucyA9IFtcIkRBVEVcIiwgXCJGUk9NXCIsIFwiVE9cIiwgXCJEQVRFUkFOR0VcIl07XG5jb25zdCBEWU5BTUlDX0RBVEVfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURVwiO1xuY29uc3QgRklYRURfREFURV9DQVRFR09SWSA9IFwiRklYRUQuREFURVwiO1xuY29uc3QgRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5EQVRFLklOVFwiO1xuY29uc3QgRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURVJBTkdFXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0NBVEVHT1JZID0gXCJEWU5BTUlDLk1PTlRIXCI7XG5jb25zdCBGSVhFRF9XRUVLX0NBVEVHT1JZID0gXCJGSVhFRC5XRUVLXCI7XG5jb25zdCBGSVhFRF9NT05USF9DQVRFR09SWSA9IFwiRklYRUQuTU9OVEhcIjtcbmNvbnN0IEZJWEVEX1FVQVJURVJfQ0FURUdPUlkgPSBcIkZJWEVELlFVQVJURVJcIjtcbmNvbnN0IEZJWEVEX1lFQVJfQ0FURUdPUlkgPSBcIkZJWEVELllFQVJcIjtcbmNvbnN0IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuV0VFSy5JTlRcIjtcbmNvbnN0IERZTkFNSUNfTU9OVEhfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLk1PTlRILklOVFwiO1xuY29uc3QgRFlOQU1JQ19RVUFSVEVSX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5RVUFSVEVSLklOVFwiO1xuY29uc3QgRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5ZRUFSLklOVFwiO1xuY29uc3QgbVNlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGFueSA9IHtcblx0XCJEQVRFXCI6IHtcblx0XHRcImtleVwiOiBcIkRBVEVcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIkZST01cIjoge1xuXHRcdFwia2V5XCI6IFwiRlJPTVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVSQU5HRVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFUkFOR0VcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZXG5cdH0sXG5cdFwiU1BFQ0lGSUNNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJTUEVDSUZJQ01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT0RBWUZST01UT1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT0RBWUZST01UT1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFU1RFUkRBWVwiOiB7XG5cdFx0XCJrZXlcIjogXCJZRVNURVJEQVlcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJUT01PUlJPV1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUT01PUlJPV1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1REQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1REQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVERBWVNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVERBWVNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFdFRUtTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RXRUVLU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRXRUVLXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9XRUVLX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFdFRUtTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRXRUVLU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19XRUVLX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUTU9OVEhTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RNT05USFNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfTU9OVEhfQ0FURUdPUllcblx0fSxcblx0XCJORVhUTU9OVEhTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRNT05USFNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfTU9OVEhfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1FVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1FVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RRVUFSVEVSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUUVVBUlRFUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUUVVBUlRFUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRRVUFSVEVSU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUUVVBUlRFUlNcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMVwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIyXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIyXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjNcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjNcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSNFwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSNFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFlFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUWUVBUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFlFQVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFlFQVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1lFQVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUWUVBUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFlFQVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1lFQVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiWUVBUlRPREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJZRUFSVE9EQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH1cbn07XG5cbmZ1bmN0aW9uIF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRGF0ZVJhbmdlID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19EQVRFX1JBTkdFXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIkRBVEVSQU5HRVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkJULFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKFteIV0uKikgXFxcXC0gKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0gLSB7MX0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmLCAoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZl0sXG5cdFx0bG9uZ1RleHQ6IHNEYXRlUmFuZ2UsXG5cdFx0dG9rZW5UZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiLFxuXHRcdHZhbGlkYXRlOiBmdW5jdGlvbihhVmFsdWVzOiBhbnksIG9UeXBlOiBhbnkpIHtcblx0XHRcdGlmIChhVmFsdWVzLmxlbmd0aCA8IDIpIHtcblx0XHRcdFx0dGhyb3cgbmV3IFZhbGlkYXRlRXhjZXB0aW9uKFwiRGF0ZSBSYW5nZSBtdXN0IGhhdmUgdHdvIHZhbHVlc1wiKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGZyb21EYXRlID0gbmV3IERhdGUoYVZhbHVlc1swXSk7XG5cdFx0XHRcdGNvbnN0IHRvRGF0ZSA9IG5ldyBEYXRlKGFWYWx1ZXNbMV0pO1xuXHRcdFx0XHRpZiAoZnJvbURhdGUuZ2V0VGltZSgpID4gdG9EYXRlLmdldFRpbWUoKSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbihcIkZyb20gRGF0ZSBTaG91bGQgQmUgTGVzcyBUaGFuIFRvIERhdGVcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdE9wZXJhdG9yLnByb3RvdHlwZS52YWxpZGF0ZS5hcHBseSh0aGlzLCBbYVZhbHVlcywgb1R5cGVdKTtcblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0RGF0ZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNEYXRlID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19EQVRFXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIkRBVEVcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5FUSxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKCguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZl0sXG5cdFx0bG9uZ1RleHQ6IHNEYXRlLFxuXHRcdHRva2VuVGV4dDogc0RhdGUsXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXRGcm9tT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0Zyb20gPSBvUmVzb3VyY2VCdW5kbGUgJiYgb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJDX0ZST01cIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiRlJPTVwiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkdFLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc0Zyb20sXG5cdFx0dG9rZW5UZXh0OiBzRnJvbSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc1RvID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19UT1wiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJUT1wiLFxuXHRcdGZpbHRlck9wZXJhdG9yOiBNb2RlbE9wZXJhdG9yLkxFLFxuXHRcdHRva2VuUGFyc2U6IFwiXiN0b2tlblRleHQjIFxcXFwoKC4rKVxcXFwpJFwiLFxuXHRcdHRva2VuRm9ybWF0OiBcIiN0b2tlblRleHQjICh7MH0pXCIsXG5cdFx0dmFsdWVUeXBlczogWyhPcGVyYXRvciBhcyBhbnkpLlZhbHVlVHlwZS5TZWxmXSxcblx0XHRsb25nVGV4dDogc1RvLFxuXHRcdHRva2VuVGV4dDogc1RvLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZmlsdGVyT3BlcmF0aW9uKG9PcGVyYXRpb246IGFueSwgYU9wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdGlmICghYU9wZXJhdG9yQ29uZmlndXJhdGlvbikge1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gPSBBcnJheS5pc0FycmF5KGFPcGVyYXRvckNvbmZpZ3VyYXRpb24pID8gYU9wZXJhdG9yQ29uZmlndXJhdGlvbiA6IFthT3BlcmF0b3JDb25maWd1cmF0aW9uXTtcblx0bGV0IGJSZXN1bHQ7XG5cblx0YU9wZXJhdG9yQ29uZmlndXJhdGlvbi5zb21lKGZ1bmN0aW9uKG9PcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRcdGxldCBqO1xuXHRcdGlmICghb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc1ZhbHVlID0gb09wZXJhdGlvbltvT3BlcmF0b3JDb25maWd1cmF0aW9uLnBhdGhdO1xuXHRcdGNvbnN0IGJFeGNsdWRlID0gb09wZXJhdG9yQ29uZmlndXJhdGlvbi5leGNsdWRlIHx8IGZhbHNlO1xuXHRcdGxldCBhT3BlcmF0b3JWYWx1ZXM7XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5jb250YWlucyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMuc3BsaXQoXCIsXCIpO1xuXHRcdFx0YlJlc3VsdCA9IGJFeGNsdWRlO1xuXHRcdFx0Zm9yIChqID0gMDsgaiA8IGFPcGVyYXRvclZhbHVlcy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRpZiAoYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUuaW5kZXhPZihhT3BlcmF0b3JWYWx1ZXNbal0pID4gLTEpIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscyAmJiBzVmFsdWUpIHtcblx0XHRcdGFPcGVyYXRvclZhbHVlcyA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXF1YWxzLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZSA9PT0gYU9wZXJhdG9yVmFsdWVzW2pdKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCFiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9KTtcblx0cmV0dXJuIGJSZXN1bHQ7XG59XG5jb25zdCBTZW1hbnRpY0RhdGVPcGVyYXRvcnMgPSB7XG5cdC8vIEV4dGVuZGluZyBvcGVyYXRvcnMgZm9yIFNlbWF0aWMgRGF0ZSBDb250cm9sXG5cdGFkZFNlbWFudGljRGF0ZU9wZXJhdG9yczogZnVuY3Rpb24oKSB7XG5cdFx0Y29uc3Qgb1Jlc291cmNlQnVuZGxlID0gc2FwLnVpLmdldENvcmUoKS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVSYW5nZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RGF0ZU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0RnJvbU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZSkpO1xuXHRcdEZpbHRlck9wZXJhdG9yVXRpbC5hZGRPcGVyYXRvcihfZ2V0VG9PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0fSxcblx0Z2V0U3VwcG9ydGVkT3BlcmF0aW9uczogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIGFTdXBwb3J0ZWRPcGVyYXRpb25zO1xuXHR9LFxuXHRnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBmdW5jdGlvbigpIHtcblx0XHRyZXR1cm4gT2JqZWN0LmtleXMobVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpO1xuXHR9LFxuXHQvLyBUT0RPOiBXb3VsZCBuZWVkIHRvIGNoZWNrIHdpdGggTURDIGZvciByZW1vdmVPcGVyYXRvciBtZXRob2Rcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuXHRyZW1vdmVTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uKCkge30sXG5cdC8vIFRvIGZpbHRlciBvcGVyYXRvcnMgYmFzZWQgb24gbWFuaWZlc3QgYU9wZXJhdG9yQ29uZmlndXJhdGlvbiBzZXR0aW5nc1xuXHRnZXRGaWx0ZXJPcGVyYXRpb25zOiBmdW5jdGlvbihhT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0XHRjb25zdCBhT3BlcmF0aW9ucyA9IFtdO1xuXHRcdGZvciAoY29uc3QgbiBpbiBtU2VtYW50aWNEYXRlT3BlcmF0aW9ucykge1xuXHRcdFx0Y29uc3Qgb09wZXJhdGlvbiA9IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zW25dO1xuXHRcdFx0aWYgKF9maWx0ZXJPcGVyYXRpb24ob09wZXJhdGlvbiwgYU9wZXJhdG9yQ29uZmlndXJhdGlvbikpIHtcblx0XHRcdFx0YU9wZXJhdGlvbnMucHVzaChvT3BlcmF0aW9uKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIGFPcGVyYXRpb25zLm1hcChmdW5jdGlvbihvT3BlcmF0aW9uOiBhbnkpIHtcblx0XHRcdHJldHVybiBvT3BlcmF0aW9uLmtleTtcblx0XHR9KTtcblx0fSxcblx0aGFzU2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24ob0NvbmRpdGlvbnM6IGFueSkge1xuXHRcdGNvbnN0IGFTZW1hbnRpY0RhdGVPcHMgPSB0aGlzLmdldFNlbWFudGljRGF0ZU9wZXJhdGlvbnMoKTtcblx0XHRmb3IgKGNvbnN0IG4gaW4gb0NvbmRpdGlvbnMpIHtcblx0XHRcdGNvbnN0IGFGaWx0ZXJDb25kdGlvbiA9IG9Db25kaXRpb25zW25dO1xuXHRcdFx0Y29uc3Qgb1NlbWFudGljT3BlcmF0b3IgPSBhRmlsdGVyQ29uZHRpb24uZmluZChmdW5jdGlvbihvQ29uZGl0aW9uOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIGFTZW1hbnRpY0RhdGVPcHMuaW5kZXhPZihvQ29uZGl0aW9uLm9wZXJhdG9yKSA+IC0xO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAob1NlbWFudGljT3BlcmF0b3IpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VtYW50aWNEYXRlT3BlcmF0b3JzO1xuIl19
349
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlNlbWFudGljRGF0ZU9wZXJhdG9ycy50cyJdLCJuYW1lcyI6WyJhU3VwcG9ydGVkT3BlcmF0aW9ucyIsIkRZTkFNSUNfREFURV9DQVRFR09SWSIsIkZJWEVEX0RBVEVfQ0FURUdPUlkiLCJEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19EQVRFUkFOR0VfQ0FURUdPUlkiLCJEWU5BTUlDX01PTlRIX0NBVEVHT1JZIiwiRklYRURfV0VFS19DQVRFR09SWSIsIkZJWEVEX01PTlRIX0NBVEVHT1JZIiwiRklYRURfUVVBUlRFUl9DQVRFR09SWSIsIkZJWEVEX1lFQVJfQ0FURUdPUlkiLCJEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19NT05USF9JTlRfQ0FURUdPUlkiLCJEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZIiwiRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWSIsIm1TZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiX2dldERhdGVSYW5nZU9wZXJhdG9yIiwib1Jlc291cmNlQnVuZGxlIiwic0RhdGVSYW5nZSIsImdldFRleHQiLCJPcGVyYXRvciIsIm5hbWUiLCJmaWx0ZXJPcGVyYXRvciIsIk1vZGVsT3BlcmF0b3IiLCJCVCIsInRva2VuUGFyc2UiLCJ0b2tlbkZvcm1hdCIsInZhbHVlVHlwZXMiLCJWYWx1ZVR5cGUiLCJTZWxmIiwibG9uZ1RleHQiLCJ0b2tlblRleHQiLCJhZGRpdGlvbmFsSW5mbyIsInZhbGlkYXRlIiwiYVZhbHVlcyIsIm9UeXBlIiwibGVuZ3RoIiwiVmFsaWRhdGVFeGNlcHRpb24iLCJmcm9tRGF0ZSIsIkRhdGUiLCJ0b0RhdGUiLCJnZXRUaW1lIiwicHJvdG90eXBlIiwiYXBwbHkiLCJfZ2V0RGF0ZU9wZXJhdG9yIiwic0RhdGUiLCJFUSIsIl9nZXRGcm9tT3BlcmF0b3IiLCJzRnJvbSIsIkdFIiwiX2dldFRvT3BlcmF0b3IiLCJzVG8iLCJMRSIsIl9maWx0ZXJPcGVyYXRpb24iLCJvT3BlcmF0aW9uIiwiYU9wZXJhdG9yQ29uZmlndXJhdGlvbiIsIkFycmF5IiwiaXNBcnJheSIsImJSZXN1bHQiLCJzb21lIiwib09wZXJhdG9yQ29uZmlndXJhdGlvbiIsImoiLCJwYXRoIiwic1ZhbHVlIiwiYkV4Y2x1ZGUiLCJleGNsdWRlIiwiYU9wZXJhdG9yVmFsdWVzIiwiY29udGFpbnMiLCJzcGxpdCIsImluZGV4T2YiLCJlcXVhbHMiLCJTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnMiLCJzYXAiLCJ1aSIsImdldENvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJGaWx0ZXJPcGVyYXRvclV0aWwiLCJhZGRPcGVyYXRvciIsImdldFN1cHBvcnRlZE9wZXJhdGlvbnMiLCJnZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zIiwiT2JqZWN0Iiwia2V5cyIsInJlbW92ZVNlbWFudGljRGF0ZU9wZXJhdG9ycyIsImdldEZpbHRlck9wZXJhdGlvbnMiLCJhT3BlcmF0aW9ucyIsIm4iLCJwdXNoIiwibWFwIiwia2V5IiwiaGFzU2VtYW50aWNEYXRlT3BlcmF0aW9ucyIsIm9Db25kaXRpb25zIiwiYVNlbWFudGljRGF0ZU9wcyIsImFGaWx0ZXJDb25kdGlvbiIsIm9TZW1hbnRpY09wZXJhdG9yIiwiZmluZCIsIm9Db25kaXRpb24iLCJvcGVyYXRvciJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUdBLE1BQU1BLG9CQUFvQixHQUFHLENBQUMsTUFBRCxFQUFTLE1BQVQsRUFBaUIsSUFBakIsRUFBdUIsV0FBdkIsQ0FBN0I7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxjQUE5QjtBQUNBLE1BQU1DLG1CQUFtQixHQUFHLFlBQTVCO0FBQ0EsTUFBTUMseUJBQXlCLEdBQUcsa0JBQWxDO0FBQ0EsTUFBTUMsMEJBQTBCLEdBQUcsbUJBQW5DO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsZUFBL0I7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxZQUE1QjtBQUNBLE1BQU1D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QUFPSixnQkFBZ0IsQ0FBQ3ZCLE9BQWpCLENBQXlCMkIsVUFBVSxDQUFDQyxRQUFwQyxJQUFnRCxDQUFDLENBQXhEO0FBQ0EsU0FGeUIsQ0FBMUI7O0FBR0EsWUFBSUgsaUJBQUosRUFBdUI7QUFDdEIsaUJBQU8sS0FBUDtBQUNBO0FBQ0Q7O0FBQ0QsYUFBTyxJQUFQO0FBQ0E7QUEzQzRCLEdBQTlCO1NBOENldkIscUIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBGaWx0ZXJPcGVyYXRvclV0aWwgZnJvbSBcInNhcC91aS9tZGMvY29uZGl0aW9uL0ZpbHRlck9wZXJhdG9yVXRpbFwiO1xuaW1wb3J0IE9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbWRjL2NvbmRpdGlvbi9PcGVyYXRvclwiO1xuaW1wb3J0IE1vZGVsT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IFZhbGlkYXRlRXhjZXB0aW9uIGZyb20gXCJzYXAvdWkvbW9kZWwvVmFsaWRhdGVFeGNlcHRpb25cIjtcblxuY29uc3QgYVN1cHBvcnRlZE9wZXJhdGlvbnMgPSBbXCJEQVRFXCIsIFwiRlJPTVwiLCBcIlRPXCIsIFwiREFURVJBTkdFXCJdO1xuY29uc3QgRFlOQU1JQ19EQVRFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVcIjtcbmNvbnN0IEZJWEVEX0RBVEVfQ0FURUdPUlkgPSBcIkZJWEVELkRBVEVcIjtcbmNvbnN0IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuREFURS5JTlRcIjtcbmNvbnN0IERZTkFNSUNfREFURVJBTkdFX0NBVEVHT1JZID0gXCJEWU5BTUlDLkRBVEVSQU5HRVwiO1xuY29uc3QgRFlOQU1JQ19NT05USF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USFwiO1xuY29uc3QgRklYRURfV0VFS19DQVRFR09SWSA9IFwiRklYRUQuV0VFS1wiO1xuY29uc3QgRklYRURfTU9OVEhfQ0FURUdPUlkgPSBcIkZJWEVELk1PTlRIXCI7XG5jb25zdCBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZID0gXCJGSVhFRC5RVUFSVEVSXCI7XG5jb25zdCBGSVhFRF9ZRUFSX0NBVEVHT1JZID0gXCJGSVhFRC5ZRUFSXCI7XG5jb25zdCBEWU5BTUlDX1dFRUtfSU5UX0NBVEVHT1JZID0gXCJEWU5BTUlDLldFRUsuSU5UXCI7XG5jb25zdCBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWSA9IFwiRFlOQU1JQy5NT05USC5JTlRcIjtcbmNvbnN0IERZTkFNSUNfUVVBUlRFUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuUVVBUlRFUi5JTlRcIjtcbmNvbnN0IERZTkFNSUNfWUVBUl9JTlRfQ0FURUdPUlkgPSBcIkRZTkFNSUMuWUVBUi5JTlRcIjtcbmNvbnN0IG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zOiBhbnkgPSB7XG5cdFwiREFURVwiOiB7XG5cdFx0XCJrZXlcIjogXCJEQVRFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJGUk9NXCI6IHtcblx0XHRcImtleVwiOiBcIkZST01cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9DQVRFR09SWVxuXHR9LFxuXHRcIlRPXCI6IHtcblx0XHRcImtleVwiOiBcIlRPXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJEQVRFUkFOR0VcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVJBTkdFXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVSQU5HRV9DQVRFR09SWVxuXHR9LFxuXHRcIlNQRUNJRklDTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiU1BFQ0lGSUNNT05USFwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIlRPREFZXCI6IHtcblx0XHRcImtleVwiOiBcIlRPREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9EQVlGUk9NVE9cIjoge1xuXHRcdFwia2V5XCI6IFwiVE9EQVlGUk9NVE9cIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfREFURV9JTlRfQ0FURUdPUllcblx0fSxcblx0XCJZRVNURVJEQVlcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVTVEVSREFZXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9EQVRFX0NBVEVHT1JZXG5cdH0sXG5cdFwiVE9NT1JST1dcIjoge1xuXHRcdFwia2V5XCI6IFwiVE9NT1JST1dcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX0RBVEVfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUREFZU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUREFZU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19EQVRFX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFREQVlTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFREQVlTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX0RBVEVfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiVEhJU1dFRUtcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU1dFRUtcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1dFRUtfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJORVhUV0VFS1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfV0VFS19DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRXRUVLU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUV0VFS1NcIixcblx0XHRcImNhdGVnb3J5XCI6IERZTkFNSUNfV0VFS19JTlRfQ0FURUdPUllcblx0fSxcblx0XCJUSElTTU9OVEhcIjoge1xuXHRcdFwia2V5XCI6IFwiVEhJU01PTlRIXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9NT05USF9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJMQVNUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRNT05USFwiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX01PTlRIX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVE1PTlRIU1wiOiB7XG5cdFx0XCJrZXlcIjogXCJORVhUTU9OVEhTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX01PTlRIX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIlRISVNRVUFSVEVSXCI6IHtcblx0XHRcImtleVwiOiBcIlRISVNRVUFSVEVSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJMQVNUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTEFTVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFFVQVJURVJcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJORVhUUVVBUlRFUlNcIjoge1xuXHRcdFwia2V5XCI6IFwiTkVYVFFVQVJURVJTXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBEWU5BTUlDX1FVQVJURVJfSU5UX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjFcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjFcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJRVUFSVEVSMlwiOiB7XG5cdFx0XCJrZXlcIjogXCJRVUFSVEVSMlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfUVVBUlRFUl9DQVRFR09SWVxuXHR9LFxuXHRcIlFVQVJURVIzXCI6IHtcblx0XHRcImtleVwiOiBcIlFVQVJURVIzXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9RVUFSVEVSX0NBVEVHT1JZXG5cdH0sXG5cdFwiUVVBUlRFUjRcIjoge1xuXHRcdFwia2V5XCI6IFwiUVVBUlRFUjRcIixcblx0XHRcImNhdGVnb3J5XCI6IEZJWEVEX1FVQVJURVJfQ0FURUdPUllcblx0fSxcblx0XCJUSElTWUVBUlwiOiB7XG5cdFx0XCJrZXlcIjogXCJUSElTWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkxBU1RZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTEFTVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIkxBU1RZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIk5FWFRZRUFSXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSXCIsXG5cdFx0XCJjYXRlZ29yeVwiOiBGSVhFRF9ZRUFSX0NBVEVHT1JZXG5cdH0sXG5cdFwiTkVYVFlFQVJTXCI6IHtcblx0XHRcImtleVwiOiBcIk5FWFRZRUFSU1wiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRFlOQU1JQ19ZRUFSX0lOVF9DQVRFR09SWVxuXHR9LFxuXHRcIllFQVJUT0RBVEVcIjoge1xuXHRcdFwia2V5XCI6IFwiWUVBUlRPREFURVwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9LFxuXHRcIkRBVEVUT1lFQVJcIjoge1xuXHRcdFwia2V5XCI6IFwiREFURVRPWUVBUlwiLFxuXHRcdFwiY2F0ZWdvcnlcIjogRklYRURfWUVBUl9DQVRFR09SWVxuXHR9XG59O1xuXG5mdW5jdGlvbiBfZ2V0RGF0ZVJhbmdlT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlOiBhbnkpIHtcblx0Y29uc3Qgc0RhdGVSYW5nZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURV9SQU5HRVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFUkFOR0VcIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5CVCxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKChbXiFdLiopIFxcXFwtICguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9IC0gezF9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZiwgKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZVJhbmdlLFxuXHRcdHRva2VuVGV4dDogc0RhdGVSYW5nZSxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIixcblx0XHR2YWxpZGF0ZTogZnVuY3Rpb24oYVZhbHVlczogYW55LCBvVHlwZTogYW55KSB7XG5cdFx0XHRpZiAoYVZhbHVlcy5sZW5ndGggPCAyKSB7XG5cdFx0XHRcdHRocm93IG5ldyBWYWxpZGF0ZUV4Y2VwdGlvbihcIkRhdGUgUmFuZ2UgbXVzdCBoYXZlIHR3byB2YWx1ZXNcIik7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBmcm9tRGF0ZSA9IG5ldyBEYXRlKGFWYWx1ZXNbMF0pO1xuXHRcdFx0XHRjb25zdCB0b0RhdGUgPSBuZXcgRGF0ZShhVmFsdWVzWzFdKTtcblx0XHRcdFx0aWYgKGZyb21EYXRlLmdldFRpbWUoKSA+IHRvRGF0ZS5nZXRUaW1lKCkpIHtcblx0XHRcdFx0XHR0aHJvdyBuZXcgVmFsaWRhdGVFeGNlcHRpb24oXCJGcm9tIERhdGUgU2hvdWxkIEJlIExlc3MgVGhhbiBUbyBEYXRlXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRPcGVyYXRvci5wcm90b3R5cGUudmFsaWRhdGUuYXBwbHkodGhpcywgW2FWYWx1ZXMsIG9UeXBlXSk7XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGU6IGFueSkge1xuXHRjb25zdCBzRGF0ZSA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfREFURVwiKTtcblx0cmV0dXJuIG5ldyBPcGVyYXRvcih7XG5cdFx0bmFtZTogXCJEQVRFXCIsXG5cdFx0ZmlsdGVyT3BlcmF0b3I6IE1vZGVsT3BlcmF0b3IuRVEsXG5cdFx0dG9rZW5QYXJzZTogXCJeI3Rva2VuVGV4dCMgXFxcXCgoLispXFxcXCkkXCIsXG5cdFx0dG9rZW5Gb3JtYXQ6IFwiI3Rva2VuVGV4dCMgKHswfSlcIixcblx0XHR2YWx1ZVR5cGVzOiBbKE9wZXJhdG9yIGFzIGFueSkuVmFsdWVUeXBlLlNlbGZdLFxuXHRcdGxvbmdUZXh0OiBzRGF0ZSxcblx0XHR0b2tlblRleHQ6IHNEYXRlLFxuXHRcdGFkZGl0aW9uYWxJbmZvOiBcIlwiXG5cdH0pO1xufVxuXG5mdW5jdGlvbiBfZ2V0RnJvbU9wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNGcm9tID0gb1Jlc291cmNlQnVuZGxlICYmIG9SZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiQ19GUk9NXCIpO1xuXHRyZXR1cm4gbmV3IE9wZXJhdG9yKHtcblx0XHRuYW1lOiBcIkZST01cIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5HRSxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKCguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZl0sXG5cdFx0bG9uZ1RleHQ6IHNGcm9tLFxuXHRcdHRva2VuVGV4dDogc0Zyb20sXG5cdFx0YWRkaXRpb25hbEluZm86IFwiXCJcblx0fSk7XG59XG5cbmZ1bmN0aW9uIF9nZXRUb09wZXJhdG9yKG9SZXNvdXJjZUJ1bmRsZTogYW55KSB7XG5cdGNvbnN0IHNUbyA9IG9SZXNvdXJjZUJ1bmRsZSAmJiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIkNfVE9cIik7XG5cdHJldHVybiBuZXcgT3BlcmF0b3Ioe1xuXHRcdG5hbWU6IFwiVE9cIixcblx0XHRmaWx0ZXJPcGVyYXRvcjogTW9kZWxPcGVyYXRvci5MRSxcblx0XHR0b2tlblBhcnNlOiBcIl4jdG9rZW5UZXh0IyBcXFxcKCguKylcXFxcKSRcIixcblx0XHR0b2tlbkZvcm1hdDogXCIjdG9rZW5UZXh0IyAoezB9KVwiLFxuXHRcdHZhbHVlVHlwZXM6IFsoT3BlcmF0b3IgYXMgYW55KS5WYWx1ZVR5cGUuU2VsZl0sXG5cdFx0bG9uZ1RleHQ6IHNUbyxcblx0XHR0b2tlblRleHQ6IHNUbyxcblx0XHRhZGRpdGlvbmFsSW5mbzogXCJcIlxuXHR9KTtcbn1cblxuZnVuY3Rpb24gX2ZpbHRlck9wZXJhdGlvbihvT3BlcmF0aW9uOiBhbnksIGFPcGVyYXRvckNvbmZpZ3VyYXRpb246IGFueSkge1xuXHRpZiAoIWFPcGVyYXRvckNvbmZpZ3VyYXRpb24pIHtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRhT3BlcmF0b3JDb25maWd1cmF0aW9uID0gQXJyYXkuaXNBcnJheShhT3BlcmF0b3JDb25maWd1cmF0aW9uKSA/IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gOiBbYU9wZXJhdG9yQ29uZmlndXJhdGlvbl07XG5cdGxldCBiUmVzdWx0O1xuXG5cdGFPcGVyYXRvckNvbmZpZ3VyYXRpb24uc29tZShmdW5jdGlvbihvT3BlcmF0b3JDb25maWd1cmF0aW9uOiBhbnkpIHtcblx0XHRsZXQgajtcblx0XHRpZiAoIW9PcGVyYXRvckNvbmZpZ3VyYXRpb24ucGF0aCkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNWYWx1ZSA9IG9PcGVyYXRpb25bb09wZXJhdG9yQ29uZmlndXJhdGlvbi5wYXRoXTtcblx0XHRjb25zdCBiRXhjbHVkZSA9IG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uZXhjbHVkZSB8fCBmYWxzZTtcblx0XHRsZXQgYU9wZXJhdG9yVmFsdWVzO1xuXG5cdFx0aWYgKG9PcGVyYXRvckNvbmZpZ3VyYXRpb24uY29udGFpbnMgJiYgc1ZhbHVlKSB7XG5cdFx0XHRhT3BlcmF0b3JWYWx1ZXMgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmNvbnRhaW5zLnNwbGl0KFwiLFwiKTtcblx0XHRcdGJSZXN1bHQgPSBiRXhjbHVkZTtcblx0XHRcdGZvciAoaiA9IDA7IGogPCBhT3BlcmF0b3JWYWx1ZXMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0aWYgKGJFeGNsdWRlICYmIHNWYWx1ZS5pbmRleE9mKGFPcGVyYXRvclZhbHVlc1tqXSkgPiAtMSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICghYkV4Y2x1ZGUgJiYgc1ZhbHVlLmluZGV4T2YoYU9wZXJhdG9yVmFsdWVzW2pdKSA+IC0xKSB7XG5cdFx0XHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAob09wZXJhdG9yQ29uZmlndXJhdGlvbi5lcXVhbHMgJiYgc1ZhbHVlKSB7XG5cdFx0XHRhT3BlcmF0b3JWYWx1ZXMgPSBvT3BlcmF0b3JDb25maWd1cmF0aW9uLmVxdWFscy5zcGxpdChcIixcIik7XG5cdFx0XHRiUmVzdWx0ID0gYkV4Y2x1ZGU7XG5cdFx0XHRmb3IgKGogPSAwOyBqIDwgYU9wZXJhdG9yVmFsdWVzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGlmIChiRXhjbHVkZSAmJiBzVmFsdWUgPT09IGFPcGVyYXRvclZhbHVlc1tqXSkge1xuXHRcdFx0XHRcdGJSZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmICghYkV4Y2x1ZGUgJiYgc1ZhbHVlID09PSBhT3BlcmF0b3JWYWx1ZXNbal0pIHtcblx0XHRcdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fSk7XG5cdHJldHVybiBiUmVzdWx0O1xufVxuY29uc3QgU2VtYW50aWNEYXRlT3BlcmF0b3JzID0ge1xuXHQvLyBFeHRlbmRpbmcgb3BlcmF0b3JzIGZvciBTZW1hdGljIERhdGUgQ29udHJvbFxuXHRhZGRTZW1hbnRpY0RhdGVPcGVyYXRvcnM6IGZ1bmN0aW9uKCkge1xuXHRcdGNvbnN0IG9SZXNvdXJjZUJ1bmRsZSA9IHNhcC51aS5nZXRDb3JlKCkuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIik7XG5cdFx0RmlsdGVyT3BlcmF0b3JVdGlsLmFkZE9wZXJhdG9yKF9nZXREYXRlUmFuZ2VPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldERhdGVPcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldEZyb21PcGVyYXRvcihvUmVzb3VyY2VCdW5kbGUpKTtcblx0XHRGaWx0ZXJPcGVyYXRvclV0aWwuYWRkT3BlcmF0b3IoX2dldFRvT3BlcmF0b3Iob1Jlc291cmNlQnVuZGxlKSk7XG5cdH0sXG5cdGdldFN1cHBvcnRlZE9wZXJhdGlvbnM6IGZ1bmN0aW9uKCkge1xuXHRcdHJldHVybiBhU3VwcG9ydGVkT3BlcmF0aW9ucztcblx0fSxcblx0Z2V0U2VtYW50aWNEYXRlT3BlcmF0aW9uczogZnVuY3Rpb24oKSB7XG5cdFx0cmV0dXJuIE9iamVjdC5rZXlzKG1TZW1hbnRpY0RhdGVPcGVyYXRpb25zKTtcblx0fSxcblx0Ly8gVE9ETzogV291bGQgbmVlZCB0byBjaGVjayB3aXRoIE1EQyBmb3IgcmVtb3ZlT3BlcmF0b3IgbWV0aG9kXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cblx0cmVtb3ZlU2VtYW50aWNEYXRlT3BlcmF0b3JzOiBmdW5jdGlvbigpIHt9LFxuXHQvLyBUbyBmaWx0ZXIgb3BlcmF0b3JzIGJhc2VkIG9uIG1hbmlmZXN0IGFPcGVyYXRvckNvbmZpZ3VyYXRpb24gc2V0dGluZ3Ncblx0Z2V0RmlsdGVyT3BlcmF0aW9uczogZnVuY3Rpb24oYU9wZXJhdG9yQ29uZmlndXJhdGlvbjogYW55KSB7XG5cdFx0Y29uc3QgYU9wZXJhdGlvbnMgPSBbXTtcblx0XHRmb3IgKGNvbnN0IG4gaW4gbVNlbWFudGljRGF0ZU9wZXJhdGlvbnMpIHtcblx0XHRcdGNvbnN0IG9PcGVyYXRpb24gPSBtU2VtYW50aWNEYXRlT3BlcmF0aW9uc1tuXTtcblx0XHRcdGlmIChfZmlsdGVyT3BlcmF0aW9uKG9PcGVyYXRpb24sIGFPcGVyYXRvckNvbmZpZ3VyYXRpb24pKSB7XG5cdFx0XHRcdGFPcGVyYXRpb25zLnB1c2gob09wZXJhdGlvbik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBhT3BlcmF0aW9ucy5tYXAoZnVuY3Rpb24ob09wZXJhdGlvbjogYW55KSB7XG5cdFx0XHRyZXR1cm4gb09wZXJhdGlvbi5rZXk7XG5cdFx0fSk7XG5cdH0sXG5cdGhhc1NlbWFudGljRGF0ZU9wZXJhdGlvbnM6IGZ1bmN0aW9uKG9Db25kaXRpb25zOiBhbnkpIHtcblx0XHRjb25zdCBhU2VtYW50aWNEYXRlT3BzID0gdGhpcy5nZXRTZW1hbnRpY0RhdGVPcGVyYXRpb25zKCk7XG5cdFx0Zm9yIChjb25zdCBuIGluIG9Db25kaXRpb25zKSB7XG5cdFx0XHRjb25zdCBhRmlsdGVyQ29uZHRpb24gPSBvQ29uZGl0aW9uc1tuXTtcblx0XHRcdGNvbnN0IG9TZW1hbnRpY09wZXJhdG9yID0gYUZpbHRlckNvbmR0aW9uLmZpbmQoZnVuY3Rpb24ob0NvbmRpdGlvbjogYW55KSB7XG5cdFx0XHRcdHJldHVybiBhU2VtYW50aWNEYXRlT3BzLmluZGV4T2Yob0NvbmRpdGlvbi5vcGVyYXRvcikgPiAtMTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9TZW1hbnRpY09wZXJhdG9yKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlbWFudGljRGF0ZU9wZXJhdG9ycztcbiJdfQ==
@@ -161,6 +161,10 @@ const mSemanticDateOperations: any = {
161
161
  "YEARTODATE": {
162
162
  "key": "YEARTODATE",
163
163
  "category": FIXED_YEAR_CATEGORY
164
+ },
165
+ "DATETOYEAR": {
166
+ "key": "DATETOYEAR",
167
+ "category": FIXED_YEAR_CATEGORY
164
168
  }
165
169
  };
166
170