@sapui5/sap.fe.core 1.93.3 → 1.97.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 (193) hide show
  1. package/package.json +6 -6
  2. package/src/sap/fe/core/.library +1 -1
  3. package/src/sap/fe/core/AppComponent.js +8 -40
  4. package/src/sap/fe/core/BusyLocker.js +12 -0
  5. package/src/sap/fe/core/CommonUtils.js +224 -48
  6. package/src/sap/fe/core/ExtensionAPI.js +1 -1
  7. package/src/sap/fe/core/PageController.js +13 -2
  8. package/src/sap/fe/core/RouterProxy.js +52 -64
  9. package/src/sap/fe/core/TemplateComponent.js +8 -2
  10. package/src/sap/fe/core/TransactionHelper.js +210 -180
  11. package/src/sap/fe/core/actions/draft.js +13 -1
  12. package/src/sap/fe/core/actions/messageHandling.js +80 -4
  13. package/src/sap/fe/core/actions/operations.js +207 -68
  14. package/src/sap/fe/core/controllerextensions/EditFlow.js +82 -55
  15. package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +13 -6
  16. package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +132 -23
  17. package/src/sap/fe/core/controllerextensions/InternalRouting.js +203 -214
  18. package/src/sap/fe/core/controllerextensions/KPIManagement.js +834 -170
  19. package/src/sap/fe/core/controllerextensions/KPIManagement.ts +890 -189
  20. package/src/sap/fe/core/controllerextensions/MessageHandler.js +222 -102
  21. package/src/sap/fe/core/controllerextensions/PageReady.js +48 -33
  22. package/src/sap/fe/core/controllerextensions/PageReady.ts +49 -14
  23. package/src/sap/fe/core/controllerextensions/Paginator.js +150 -0
  24. package/src/sap/fe/core/controllerextensions/Placeholder.js +133 -270
  25. package/src/sap/fe/core/controllerextensions/Share.js +12 -9
  26. package/src/sap/fe/core/controllerextensions/SideEffects.js +5 -6
  27. package/src/sap/fe/core/controllerextensions/SideEffects.ts +13 -12
  28. package/src/sap/fe/core/controllerextensions/ViewState.js +202 -8
  29. package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +39 -34
  30. package/src/sap/fe/core/controls/ActionParameterDialogValueHelp.fragment.xml +35 -0
  31. package/src/sap/fe/core/controls/ActionPartial.fragment.xml +1 -1
  32. package/src/sap/fe/core/controls/CustomQuickViewPage.js +109 -108
  33. package/src/sap/fe/core/controls/MultiValueParameterDelegate.js +45 -0
  34. package/src/sap/fe/core/controls/filterbar/FilterContainer.js +15 -4
  35. package/src/sap/fe/core/controls/filterbar/VisualFilter.js +250 -94
  36. package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +129 -135
  37. package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +325 -0
  38. package/src/sap/fe/core/controls/filterbar.d.js +8 -0
  39. package/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  40. package/src/sap/fe/core/converters/ConverterContext.js +19 -5
  41. package/src/sap/fe/core/converters/ConverterContext.ts +13 -3
  42. package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
  43. package/src/sap/fe/core/converters/ManifestSettings.ts +13 -3
  44. package/src/sap/fe/core/converters/ManifestWrapper.js +9 -9
  45. package/src/sap/fe/core/converters/MetaModelConverter.js +867 -871
  46. package/src/sap/fe/core/converters/MetaModelConverter.ts +772 -827
  47. package/src/sap/fe/core/converters/TemplateConverter.js +4 -4
  48. package/src/sap/fe/core/converters/annotations/DataField.js +57 -7
  49. package/src/sap/fe/core/converters/annotations/DataField.ts +52 -2
  50. package/src/sap/fe/core/converters/common/AnnotationConverter.js +146 -85
  51. package/src/sap/fe/core/converters/controls/Common/Action.js +61 -56
  52. package/src/sap/fe/core/converters/controls/Common/Action.ts +54 -39
  53. package/src/sap/fe/core/converters/controls/Common/Chart.js +101 -9
  54. package/src/sap/fe/core/converters/controls/Common/Chart.ts +100 -5
  55. package/src/sap/fe/core/converters/controls/Common/Criticality.js +1 -1
  56. package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +15 -16
  57. package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +16 -30
  58. package/src/sap/fe/core/converters/controls/Common/Form.js +77 -29
  59. package/src/sap/fe/core/converters/controls/Common/Form.ts +79 -21
  60. package/src/sap/fe/core/converters/controls/Common/KPI.js +287 -109
  61. package/src/sap/fe/core/converters/controls/Common/KPI.ts +314 -139
  62. package/src/sap/fe/core/converters/controls/Common/Table.js +521 -166
  63. package/src/sap/fe/core/converters/controls/Common/Table.ts +519 -115
  64. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +487 -0
  65. package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +541 -0
  66. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +364 -0
  67. package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +338 -0
  68. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +74 -0
  69. package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +50 -0
  70. package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +11 -11
  71. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +47 -35
  72. package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +45 -29
  73. package/src/sap/fe/core/converters/helpers/Aggregation.js +31 -32
  74. package/src/sap/fe/core/converters/helpers/Aggregation.ts +26 -27
  75. package/src/sap/fe/core/converters/helpers/BindingHelper.js +27 -2
  76. package/src/sap/fe/core/converters/helpers/BindingHelper.ts +22 -2
  77. package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +1 -1
  78. package/src/sap/fe/core/converters/helpers/ID.js +9 -3
  79. package/src/sap/fe/core/converters/helpers/ID.ts +6 -3
  80. package/src/sap/fe/core/converters/helpers/IssueManager.js +5 -4
  81. package/src/sap/fe/core/converters/helpers/IssueManager.ts +4 -3
  82. package/src/sap/fe/core/converters/helpers/Key.js +3 -3
  83. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +11 -6
  84. package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +9 -5
  85. package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +18 -5
  86. package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +14 -14
  87. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +91 -20
  88. package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +77 -5
  89. package/src/sap/fe/core/converters/templates/ListReportConverter.js +87 -714
  90. package/src/sap/fe/core/converters/templates/ListReportConverter.ts +85 -812
  91. package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +106 -17
  92. package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +121 -16
  93. package/src/sap/fe/core/designtime/AppComponent.designtime.js +2 -1
  94. package/src/sap/fe/core/formatters/CriticalityFormatter.js +1 -1
  95. package/src/sap/fe/core/formatters/FPMFormatter.js +1 -1
  96. package/src/sap/fe/core/formatters/FPMFormatter.ts +8 -3
  97. package/src/sap/fe/core/formatters/KPIFormatter.js +1 -1
  98. package/src/sap/fe/core/formatters/TableFormatter.js +27 -4
  99. package/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  100. package/src/sap/fe/core/formatters/TableFormatterTypes.js +1 -1
  101. package/src/sap/fe/core/formatters/ValueFormatter.js +1 -1
  102. package/src/sap/fe/core/fpm/Component.js +1 -1
  103. package/src/sap/fe/core/helpers/AnnotationEnum.js +3 -3
  104. package/src/sap/fe/core/helpers/BindingExpression.js +6 -6
  105. package/src/sap/fe/core/helpers/ClassSupport.js +4 -4
  106. package/src/sap/fe/core/helpers/ExcelFormatHelper.js +0 -2
  107. package/src/sap/fe/core/helpers/KeepAliveHelper.js +211 -0
  108. package/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  109. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +32 -0
  110. package/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  111. package/src/sap/fe/core/helpers/ModelHelper.js +78 -0
  112. package/src/sap/fe/core/helpers/PasteHelper.js +6 -0
  113. package/src/sap/fe/core/helpers/SemanticKeyHelper.js +2 -2
  114. package/src/sap/fe/core/helpers/StableIdHelper.js +1 -1
  115. package/src/sap/fe/core/helpers/StableIdHelper.ts +1 -1
  116. package/src/sap/fe/core/jsx-runtime/jsx.js +2 -2
  117. package/src/sap/fe/core/jsx-runtime/jsxs.js +1 -1
  118. package/src/sap/fe/core/library.js +1 -1
  119. package/src/sap/fe/core/messagebundle.properties +45 -2
  120. package/src/sap/fe/core/messagebundle_ar.properties +53 -1
  121. package/src/sap/fe/core/messagebundle_bg.properties +52 -0
  122. package/src/sap/fe/core/messagebundle_ca.properties +54 -2
  123. package/src/sap/fe/core/messagebundle_cs.properties +52 -0
  124. package/src/sap/fe/core/messagebundle_cy.properties +52 -0
  125. package/src/sap/fe/core/messagebundle_da.properties +53 -1
  126. package/src/sap/fe/core/messagebundle_de.properties +55 -3
  127. package/src/sap/fe/core/messagebundle_el.properties +53 -1
  128. package/src/sap/fe/core/messagebundle_en.properties +52 -0
  129. package/src/sap/fe/core/messagebundle_en_GB.properties +53 -1
  130. package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +49 -1
  131. package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +53 -1
  132. package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +53 -1
  133. package/src/sap/fe/core/messagebundle_es.properties +60 -8
  134. package/src/sap/fe/core/messagebundle_es_MX.properties +55 -3
  135. package/src/sap/fe/core/messagebundle_et.properties +52 -0
  136. package/src/sap/fe/core/messagebundle_fi.properties +52 -0
  137. package/src/sap/fe/core/messagebundle_fr.properties +61 -9
  138. package/src/sap/fe/core/messagebundle_fr_CA.properties +52 -0
  139. package/src/sap/fe/core/messagebundle_hi.properties +53 -1
  140. package/src/sap/fe/core/messagebundle_hr.properties +53 -1
  141. package/src/sap/fe/core/messagebundle_hu.properties +52 -0
  142. package/src/sap/fe/core/messagebundle_id.properties +54 -2
  143. package/src/sap/fe/core/messagebundle_it.properties +53 -1
  144. package/src/sap/fe/core/messagebundle_iw.properties +54 -2
  145. package/src/sap/fe/core/messagebundle_ja.properties +62 -10
  146. package/src/sap/fe/core/messagebundle_kk.properties +53 -1
  147. package/src/sap/fe/core/messagebundle_ko.properties +53 -1
  148. package/src/sap/fe/core/messagebundle_lt.properties +53 -1
  149. package/src/sap/fe/core/messagebundle_lv.properties +53 -1
  150. package/src/sap/fe/core/messagebundle_ms.properties +53 -1
  151. package/src/sap/fe/core/messagebundle_nl.properties +57 -5
  152. package/src/sap/fe/core/messagebundle_no.properties +54 -2
  153. package/src/sap/fe/core/messagebundle_pl.properties +53 -1
  154. package/src/sap/fe/core/messagebundle_pt.properties +54 -2
  155. package/src/sap/fe/core/messagebundle_pt_PT.properties +53 -1
  156. package/src/sap/fe/core/messagebundle_ro.properties +53 -1
  157. package/src/sap/fe/core/messagebundle_ru.properties +53 -1
  158. package/src/sap/fe/core/messagebundle_sh.properties +53 -1
  159. package/src/sap/fe/core/messagebundle_sk.properties +52 -0
  160. package/src/sap/fe/core/messagebundle_sl.properties +53 -1
  161. package/src/sap/fe/core/messagebundle_sv.properties +53 -1
  162. package/src/sap/fe/core/messagebundle_th.properties +52 -0
  163. package/src/sap/fe/core/messagebundle_tr.properties +52 -0
  164. package/src/sap/fe/core/messagebundle_uk.properties +52 -0
  165. package/src/sap/fe/core/messagebundle_vi.properties +53 -1
  166. package/src/sap/fe/core/messagebundle_zh_CN.properties +53 -1
  167. package/src/sap/fe/core/messagebundle_zh_TW.properties +53 -1
  168. package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +5 -5
  169. package/src/sap/fe/core/services/EnvironmentServiceFactory.js +5 -5
  170. package/src/sap/fe/core/services/RoutingServiceFactory.js +154 -78
  171. package/src/sap/fe/core/services/ShellServicesFactory.js +9 -9
  172. package/src/sap/fe/core/services/SideEffectsServiceFactory.js +11 -12
  173. package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +12 -2
  174. package/src/sap/fe/core/support/AnnotationIssue.support.js +2 -4
  175. package/src/sap/fe/core/support/CollectionFacetMissingID.support.js +2 -4
  176. package/src/sap/fe/core/support/CollectionFacetUnsupportedLevel.support.js +2 -4
  177. package/src/sap/fe/core/support/CommonHelper.js +2 -4
  178. package/src/sap/fe/core/support/Diagnostics.js +1 -1
  179. package/src/sap/fe/core/templating/CriticalityFormatters.js +4 -4
  180. package/src/sap/fe/core/templating/DataFieldFormatters.js +1 -1
  181. package/src/sap/fe/core/templating/DataModelPathHelper.js +54 -6
  182. package/src/sap/fe/core/templating/DataModelPathHelper.ts +54 -4
  183. package/src/sap/fe/core/templating/EntitySetHelper.js +86 -3
  184. package/src/sap/fe/core/templating/EntitySetHelper.ts +44 -0
  185. package/src/sap/fe/core/templating/FieldControlHelper.js +1 -1
  186. package/src/sap/fe/core/templating/FilterHelper.js +23 -5
  187. package/src/sap/fe/core/templating/FilterHelper.ts +15 -1
  188. package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
  189. package/src/sap/fe/core/templating/PropertyFormatters.js +1 -1
  190. package/src/sap/fe/core/templating/PropertyHelper.js +8 -8
  191. package/src/sap/fe/core/templating/UIFormatters.js +72 -4
  192. package/src/sap/fe/core/templating/UIFormatters.ts +98 -3
  193. package/src/sap/fe/core/type/Email.js +1 -1
@@ -65,7 +65,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
65
65
  _exports.buildExpressionForCriticalityColor = buildExpressionForCriticalityColor;
66
66
 
67
67
  var buildExpressionForCriticalityIcon = function (oTarget, oPropertyDataModelPath) {
68
- var oAnnotationTarget = (oTarget === null || oTarget === void 0 ? void 0 : oTarget.targetObject) ? oTarget.targetObject : oTarget;
68
+ var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
69
69
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
70
70
  var relativeLocation = oPropertyDataModelPath ? getPathRelativeLocation(oPropertyDataModelPath.contextLocation, oPropertyDataModelPath.navigationProperties).map(function (np) {
71
71
  return np.name;
@@ -104,7 +104,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
104
104
  _exports.buildExpressionForCriticalityIcon = buildExpressionForCriticalityIcon;
105
105
 
106
106
  var buildExpressionForCriticalityButtonType = function (oTarget) {
107
- var oAnnotationTarget = (oTarget === null || oTarget === void 0 ? void 0 : oTarget.targetObject) ? oTarget.targetObject : oTarget;
107
+ var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
108
108
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
109
109
  var oCriticalityExpression = annotationExpression(oCriticalityProperty);
110
110
  var sButtonTypeExpression;
@@ -136,7 +136,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
136
136
  _exports.buildExpressionForCriticalityButtonType = buildExpressionForCriticalityButtonType;
137
137
 
138
138
  var buildExpressionForCriticalityColorMicroChart = function (oTarget) {
139
- var oAnnotationTarget = (oTarget === null || oTarget === void 0 ? void 0 : oTarget.targetObject) ? oTarget.targetObject : oTarget;
139
+ var oAnnotationTarget = oTarget !== null && oTarget !== void 0 && oTarget.targetObject ? oTarget.targetObject : oTarget;
140
140
  var oCriticalityProperty = oAnnotationTarget === null || oAnnotationTarget === void 0 ? void 0 : oAnnotationTarget.Criticality;
141
141
  var oCriticalityExpression = annotationExpression(oCriticalityProperty);
142
142
  var sColorExpression;
@@ -153,4 +153,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
153
153
  _exports.buildExpressionForCriticalityColorMicroChart = buildExpressionForCriticalityColorMicroChart;
154
154
  return _exports;
155
155
  }, false);
156
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsInNWYWx1ZVN0YXRlRXhwcmVzc2lvbiIsImlmRWxzZSIsIm9yIiwiZXF1YWwiLCJjb25zdGFudCIsImNvbXBpbGVCaW5kaW5nIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiYkNvbmRpdGlvbiIsIkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24iLCJzSWNvblBhdGgiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUiLCJzQnV0dG9uVHlwZUV4cHJlc3Npb24iLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsInNDb2xvckV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFjTyxNQUFNQSxrQ0FBa0MsR0FBRyxVQUFDQyxPQUFELEVBQWVDLHNCQUFmLEVBQW1GO0FBQ3BJLFFBQU1DLGlCQUFpQixHQUFHRixPQUFPLENBQUNHLFlBQVIsR0FBdUJILE9BQU8sQ0FBQ0csWUFBL0IsR0FBOENILE9BQXhFO0FBQ0EsUUFBTUksb0JBQW9CLEdBQUdGLGlCQUFILGFBQUdBLGlCQUFILHVCQUFHQSxpQkFBaUIsQ0FB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QUFDUSxnQkFBRCxDQUFyQjtBQUNBLEdBbkNNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21waWxlQmluZGluZywgY29uc3RhbnQsIEV4cHJlc3Npb24sIGFubm90YXRpb25FeHByZXNzaW9uLCBvciwgZXF1YWwsIGlmRWxzZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBEYXRhTW9kZWxPYmplY3RQYXRoLCBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBidXR0b24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUsIENyaXRpY2FsIGFuZCBJbmZvcm1hdGlvbiBsZWFkaW5nIHRvIFN1Y2Nlc3MsIEVycm9yLCBXYXJuaW5nIGFuZCBOb25lIHN0YXRlIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yXG4gKiBAbWVtYmVyb2Ygc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzXG4gKiBAcGFyYW0ge29iamVjdH0gb1RhcmdldCBBIERhdGFGaWVsZCBhIERhdGFQb2ludCBvciBhIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcGFyYW0ge29iamVjdH0gW29Qcm9wZXJ0eURhdGFNb2RlbFBhdGhdIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSB0aGUgc3RhdGUgb2YgYW4gb2JqZWN0U3RhdHVzLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3IgPSAob1RhcmdldDogYW55LCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxQYXRoXG5cdFx0PyBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0bGV0IHNWYWx1ZVN0YXRlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c1ZhbHVlU3RhdGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJXYXJuaW5nXCIpLFxuXHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMykpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJTdWNjZXNzXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9JbmZvcm1hdGlvblwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCg1KSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcIkluZGljYXRpb24wNVwiKSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiTm9uZVwiKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gQW55IG90aGVyIGNhc2VzIGFyZSBub3QgdmFsaWQsIHRoZSBkZWZhdWx0IHZhbHVlIG9mICdOb25lJyB3aWxsIGJlIHJldHVybmVkXG5cdFx0c1ZhbHVlU3RhdGVFeHByZXNzaW9uID0gY29uc3RhbnQoXCJOb25lXCIpO1xuXHR9XG5cdHJldHVybiBjb21waWxlQmluZGluZyhzVmFsdWVTdGF0ZUV4cHJlc3Npb24pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGljb24gdHlwZSBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUsIENyaXRpY2FsIGFuZCBJbmZvcm1hdGlvbi5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb25cbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBpY29uIG9mIGFuIG9iamVjdFN0YXR1cy5cbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24gPSAob1RhcmdldDogYW55LCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCByZWxhdGl2ZUxvY2F0aW9uID0gb1Byb3BlcnR5RGF0YU1vZGVsUGF0aFxuXHRcdD8gZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24ob1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5jb250ZXh0TG9jYXRpb24sIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMpLm1hcChucCA9PiBucC5uYW1lKVxuXHRcdDogdW5kZWZpbmVkO1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSwgcmVsYXRpdmVMb2NhdGlvbik7XG5cdGNvbnN0IGJDb25kaXRpb24gPVxuXHRcdG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uICYmXG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gPT09IFwiVUkuQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvblR5cGUvV2l0aG91dEljb25cIjtcblx0bGV0IHNJY29uUGF0aDtcblx0aWYgKCFiQ29uZGl0aW9uKSB7XG5cdFx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0XHRzSWNvblBhdGggPSBpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2UtZXJyb3JcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS13YXJuaW5nXCIpLFxuXHRcdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1zdWNjZXNzXCIpLFxuXHRcdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9JbmZvcm1hdGlvblwiKSksXG5cdFx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjVcIikpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLWluZm9ybWF0aW9uXCIpLFxuXHRcdFx0XHRcdFx0XHRjb25zdGFudChcIlwiKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c0ljb25QYXRoID0gY29uc3RhbnQoXCJcIik7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdHNJY29uUGF0aCA9IGNvbnN0YW50KFwiXCIpO1xuXHR9XG5cdHJldHVybiBjb21waWxlQmluZGluZyhzSWNvblBhdGgpO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlIGFuZCBOZWdhdGl2ZSBsZWFkaW5nIHRvIEFjY2VwdCBhbmQgUmVqZWN0IGJ1dHRvbiB0eXBlIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGVcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkLCBEYXRhUG9pbnQsIERhdGFNb2RlbE9iamVjdFBhdGguXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBBbiBleHByZXNzaW9uIHRvIGRlZHVjZSBidXR0b24gdHlwZS5cbiAqIEBwcml2YXRlXG4gKiBAdWk1LXJlc3RyaWN0ZWRcbiAqKi9cbmV4cG9ydCBjb25zdCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQnV0dG9uVHlwZUV4cHJlc3Npb247XG5cdGlmIChvQ3JpdGljYWxpdHlQcm9wZXJ0eSkge1xuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdCksXG5cdFx0XHRjb25zdGFudChcIlJlamVjdFwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIkFjY2VwdFwiKSxcblx0XHRcdFx0Y29uc3RhbnQoXCJEZWZhdWx0XCIpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ0RlZmF1bHQnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzQnV0dG9uVHlwZUV4cHJlc3Npb24gPSBjb25zdGFudChcIkRlZmF1bHRcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNCdXR0b25UeXBlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgY29sb3IgaW4gTWljcm9DaGFydHMgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUsIE5lZ2F0aXZlIGFuZCBDcml0aWNhbCBsZWFkaW5nIHRvIEdvb2QsIEVycm9yIGFuZCBDcml0aWNhbCBjb2xvciByZXNwZWN0aXZlbHkuXG4gKlxuICogQGZ1bmN0aW9uXG4gKiBAc3RhdGljXG4gKiBAbmFtZSBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnMuYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnRcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkLCBEYXRhUG9pbnQsIERhdGFNb2RlbE9iamVjdFBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGNvbG9ycyBpbiBNaWNyb2NoYXJ0c1xuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JNaWNyb0NoYXJ0ID0gKG9UYXJnZXQ6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG5cdGNvbnN0IG9Bbm5vdGF0aW9uVGFyZ2V0ID0gb1RhcmdldD8udGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+ID0gYW5ub3RhdGlvbkV4cHJlc3Npb24ob0NyaXRpY2FsaXR5UHJvcGVydHkpO1xuXHRsZXQgc0NvbG9yRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGlmRWxzZShcblx0XHRcdG9yKFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9OZWdhdGl2ZVwiKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMVwiKSlcblx0XHRcdCksXG5cdFx0XHRjb25zdGFudChcIkVycm9yXCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Dcml0aWNhbFwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjJcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiQ3JpdGljYWxcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIkdvb2RcIiksXG5cdFx0XHRcdFx0Y29uc3RhbnQoXCJOZXV0cmFsXCIpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdHNDb2xvckV4cHJlc3Npb24gPSBjb25zdGFudChcIk5ldXRyYWxcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNDb2xvckV4cHJlc3Npb24pO1xufTtcbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNyaXRpY2FsaXR5Rm9ybWF0dGVycy50cyJdLCJuYW1lcyI6WyJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwib1RhcmdldCIsIm9Qcm9wZXJ0eURhdGFNb2RlbFBhdGgiLCJvQW5ub3RhdGlvblRhcmdldCIsInRhcmdldE9iamVjdCIsIm9Dcml0aWNhbGl0eVByb3BlcnR5IiwiQ3JpdGljYWxpdHkiLCJyZWxhdGl2ZUxvY2F0aW9uIiwiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0TG9jYXRpb24iLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsIm1hcCIsIm5wIiwibmFtZSIsInVuZGVmaW5lZCIsIm9Dcml0aWNhbGl0eUV4cHJlc3Npb24iLCJhbm5vdGF0aW9uRXhwcmVzc2lvbiIsInNWYWx1ZVN0YXRlRXhwcmVzc2lvbiIsImlmRWxzZSIsIm9yIiwiZXF1YWwiLCJjb25zdGFudCIsImNvbXBpbGVCaW5kaW5nIiwiYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uIiwiYkNvbmRpdGlvbiIsIkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24iLCJzSWNvblBhdGgiLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUJ1dHRvblR5cGUiLCJzQnV0dG9uVHlwZUV4cHJlc3Npb24iLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydCIsInNDb2xvckV4cHJlc3Npb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUEsa0NBQWtDLEdBQUcsVUFBQ0MsT0FBRCxFQUFlQyxzQkFBZixFQUFtRjtBQUNwSSxRQUFNQyxpQkFBaUIsR0FBR0YsT0FBTyxDQUFDRyxZQUFSLEdBQXVCSCxPQUFPLENBQUNHLFlBQS9CLEdBQThDSCxP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QUQsRUFBeUJNLFFBQVEsQ0FBQyxHQUFELENBQWpDLENBSEosQ0FERyxFQU1MQSxRQUFRLENBQUMsTUFBRCxDQU5ILEVBT0xBLFFBQVEsQ0FBQyxTQUFELENBUEgsQ0FQRCxDQVBrQixDQUF6QjtBQXlCQSxLQTFCRCxNQTBCTztBQUNOUyxNQUFBQSxnQkFBZ0IsR0FBR1QsUUFBUSxDQUFDLFNBQUQsQ0FBM0I7QUFDQTs7QUFDRCxXQUFPQyxjQUFjLENBQUNRLGdCQUFELENBQXJCO0FBQ0EsR0FuQ00iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBpbGVCaW5kaW5nLCBjb25zdGFudCwgRXhwcmVzc2lvbiwgYW5ub3RhdGlvbkV4cHJlc3Npb24sIG9yLCBlcXVhbCwgaWZFbHNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQmluZGluZ0V4cHJlc3Npb25cIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGgsIGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuLyoqXG4gKiBSZXR1cm5zIGFuIGV4cHJlc3Npb24gdG8gc2V0IGJ1dHRvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uIGxlYWRpbmcgdG8gU3VjY2VzcywgRXJyb3IsIFdhcm5pbmcgYW5kIE5vbmUgc3RhdGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5Q29sb3JcbiAqIEBtZW1iZXJvZiBzYXAuZmUuY29yZS5Dcml0aWNhbGl0eUZvcm1hdHRlcnNcbiAqIEBwYXJhbSB7b2JqZWN0fSBvVGFyZ2V0IEEgRGF0YUZpZWxkIGEgRGF0YVBvaW50IG9yIGEgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBbb1Byb3BlcnR5RGF0YU1vZGVsUGF0aF0gRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIHRoZSBzdGF0ZSBvZiBhbiBvYmplY3RTdGF0dXMuXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvciA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQudGFyZ2V0T2JqZWN0ID8gb1RhcmdldC50YXJnZXRPYmplY3QgOiBvVGFyZ2V0O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlQcm9wZXJ0eSA9IG9Bbm5vdGF0aW9uVGFyZ2V0Py5Dcml0aWNhbGl0eTtcblx0Y29uc3QgcmVsYXRpdmVMb2NhdGlvbiA9IG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGhcblx0XHQ/IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGguY29udGV4dExvY2F0aW9uLCBvUHJvcGVydHlEYXRhTW9kZWxQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKS5tYXAobnAgPT4gbnAubmFtZSlcblx0XHQ6IHVuZGVmaW5lZDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5RXhwcmVzc2lvbjogRXhwcmVzc2lvbjxzdHJpbmc+ID0gYW5ub3RhdGlvbkV4cHJlc3Npb24ob0NyaXRpY2FsaXR5UHJvcGVydHksIHJlbGF0aXZlTG9jYXRpb24pO1xuXHRsZXQgc1ZhbHVlU3RhdGVFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBpZkVsc2UoXG5cdFx0XHRvcihcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMSkpLFxuXHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjFcIikpXG5cdFx0XHQpLFxuXHRcdFx0Y29uc3RhbnQoXCJFcnJvclwiKSxcblx0XHRcdGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgyKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIyXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcIldhcm5pbmdcIiksXG5cdFx0XHRcdGlmRWxzZShcblx0XHRcdFx0XHRvcihcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgzKSksXG5cdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRjb25zdGFudChcIlN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDUpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCI1XCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwiSW5kaWNhdGlvbjA1XCIpLFxuXHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJOb25lXCIpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSBlbHNlIHtcblx0XHQvLyBBbnkgb3RoZXIgY2FzZXMgYXJlIG5vdCB2YWxpZCwgdGhlIGRlZmF1bHQgdmFsdWUgb2YgJ05vbmUnIHdpbGwgYmUgcmV0dXJuZWRcblx0XHRzVmFsdWVTdGF0ZUV4cHJlc3Npb24gPSBjb25zdGFudChcIk5vbmVcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNWYWx1ZVN0YXRlRXhwcmVzc2lvbik7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgaWNvbiB0eXBlIGJhc2VkIG9uIENyaXRpY2FsaXR5XG4gKiBTdXBwb3J0ZWQgQ3JpdGljYWxpdHk6IFBvc2l0aXZlLCBOZWdhdGl2ZSwgQ3JpdGljYWwgYW5kIEluZm9ybWF0aW9uLlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvblxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQgYSBEYXRhUG9pbnQgb3IgYSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHBhcmFtIHtvYmplY3R9IFtvUHJvcGVydHlEYXRhTW9kZWxQYXRoXSBEYXRhTW9kZWxPYmplY3RQYXRoLlxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgdGhlIGljb24gb2YgYW4gb2JqZWN0U3RhdHVzLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiA9IChvVGFyZ2V0OiBhbnksIG9Qcm9wZXJ0eURhdGFNb2RlbFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IHJlbGF0aXZlTG9jYXRpb24gPSBvUHJvcGVydHlEYXRhTW9kZWxQYXRoXG5cdFx0PyBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihvUHJvcGVydHlEYXRhTW9kZWxQYXRoLmNvbnRleHRMb2NhdGlvbiwgb1Byb3BlcnR5RGF0YU1vZGVsUGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0OiB1bmRlZmluZWQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5LCByZWxhdGl2ZUxvY2F0aW9uKTtcblx0Y29uc3QgYkNvbmRpdGlvbiA9XG5cdFx0b0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5UmVwcmVzZW50YXRpb24gJiZcblx0XHRvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHlSZXByZXNlbnRhdGlvbiA9PT0gXCJVSS5Dcml0aWNhbGl0eVJlcHJlc2VudGF0aW9uVHlwZS9XaXRob3V0SWNvblwiO1xuXHRsZXQgc0ljb25QYXRoO1xuXHRpZiAoIWJDb25kaXRpb24pIHtcblx0XHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRcdHNJY29uUGF0aCA9IGlmRWxzZShcblx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvTmVnYXRpdmVcIikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24gYXMgRXhwcmVzc2lvbjxOdW1iZXI+LCBjb25zdGFudCgxKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHRjb25zdGFudChcInNhcC1pY29uOi8vbWVzc2FnZS1lcnJvclwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvQ3JpdGljYWxcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDIpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXdhcm5pbmdcIiksXG5cdFx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdFx0b3IoXG5cdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL1Bvc2l0aXZlXCIpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIzXCIpKVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdGNvbnN0YW50KFwic2FwLWljb246Ly9tZXNzYWdlLXN1Y2Nlc3NcIiksXG5cdFx0XHRcdFx0XHRpZkVsc2UoXG5cdFx0XHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0luZm9ybWF0aW9uXCIpKSxcblx0XHRcdFx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoNSkpLFxuXHRcdFx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiNVwiKSlcblx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0Y29uc3RhbnQoXCJzYXAtaWNvbjovL21lc3NhZ2UtaW5mb3JtYXRpb25cIiksXG5cdFx0XHRcdFx0XHRcdGNvbnN0YW50KFwiXCIpXG5cdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzSWNvblBhdGggPSBjb25zdGFudChcIlwiKTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0c0ljb25QYXRoID0gY29uc3RhbnQoXCJcIik7XG5cdH1cblx0cmV0dXJuIGNvbXBpbGVCaW5kaW5nKHNJY29uUGF0aCk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYW4gZXhwcmVzc2lvbiB0byBzZXQgYnV0dG9uIHR5cGUgYmFzZWQgb24gQ3JpdGljYWxpdHlcbiAqIFN1cHBvcnRlZCBDcml0aWNhbGl0eTogUG9zaXRpdmUgYW5kIE5lZ2F0aXZlIGxlYWRpbmcgdG8gQWNjZXB0IGFuZCBSZWplY3QgYnV0dG9uIHR5cGUgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBmdW5jdGlvblxuICogQHN0YXRpY1xuICogQG5hbWUgc2FwLmZlLmNvcmUuQ3JpdGljYWxpdHlGb3JtYXR0ZXJzLmJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZVxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGV4cHJlc3Npb24gdG8gZGVkdWNlIGJ1dHRvbiB0eXBlLlxuICogQHByaXZhdGVcbiAqIEB1aTUtcmVzdHJpY3RlZFxuICoqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5QnV0dG9uVHlwZSA9IChvVGFyZ2V0OiBhbnkpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuXHRjb25zdCBvQW5ub3RhdGlvblRhcmdldCA9IG9UYXJnZXQ/LnRhcmdldE9iamVjdCA/IG9UYXJnZXQudGFyZ2V0T2JqZWN0IDogb1RhcmdldDtcblx0Y29uc3Qgb0NyaXRpY2FsaXR5UHJvcGVydHkgPSBvQW5ub3RhdGlvblRhcmdldD8uQ3JpdGljYWxpdHk7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eUV4cHJlc3Npb246IEV4cHJlc3Npb248c3RyaW5nPiA9IGFubm90YXRpb25FeHByZXNzaW9uKG9Dcml0aWNhbGl0eVByb3BlcnR5KTtcblx0bGV0IHNCdXR0b25UeXBlRXhwcmVzc2lvbjtcblx0aWYgKG9Dcml0aWNhbGl0eVByb3BlcnR5KSB7XG5cdFx0c0J1dHRvblR5cGVFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiUmVqZWN0XCIpLFxuXHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRvcihcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIlVJLkNyaXRpY2FsaXR5VHlwZS9Qb3NpdGl2ZVwiKSksXG5cdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uLCBjb25zdGFudChcIjNcIikpXG5cdFx0XHRcdCksXG5cdFx0XHRcdGNvbnN0YW50KFwiQWNjZXB0XCIpLFxuXHRcdFx0XHRjb25zdGFudChcIkRlZmF1bHRcIilcblx0XHRcdClcblx0XHQpO1xuXHR9IGVsc2Uge1xuXHRcdC8vIEFueSBvdGhlciBjYXNlcyBhcmUgbm90IHZhbGlkLCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAnRGVmYXVsdCcgd2lsbCBiZSByZXR1cm5lZFxuXHRcdHNCdXR0b25UeXBlRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiRGVmYXVsdFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0J1dHRvblR5cGVFeHByZXNzaW9uKTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhbiBleHByZXNzaW9uIHRvIHNldCBjb2xvciBpbiBNaWNyb0NoYXJ0cyBiYXNlZCBvbiBDcml0aWNhbGl0eVxuICogU3VwcG9ydGVkIENyaXRpY2FsaXR5OiBQb3NpdGl2ZSwgTmVnYXRpdmUgYW5kIENyaXRpY2FsIGxlYWRpbmcgdG8gR29vZCwgRXJyb3IgYW5kIENyaXRpY2FsIGNvbG9yIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAZnVuY3Rpb25cbiAqIEBzdGF0aWNcbiAqIEBuYW1lIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVycy5idWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yTWljcm9DaGFydFxuICogQG1lbWJlcm9mIHNhcC5mZS5jb3JlLkNyaXRpY2FsaXR5Rm9ybWF0dGVyc1xuICogQHBhcmFtIHtvYmplY3R9IG9UYXJnZXQgQSBEYXRhRmllbGQsIERhdGFQb2ludCwgRGF0YU1vZGVsT2JqZWN0UGF0aFxuICogQHJldHVybnMge3N0cmluZ30gQW4gZXhwcmVzc2lvbiB0byBkZWR1Y2UgY29sb3JzIGluIE1pY3JvY2hhcnRzXG4gKiBAcHJpdmF0ZVxuICogQHVpNS1yZXN0cmljdGVkXG4gKiovXG5leHBvcnQgY29uc3QgYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlDb2xvck1pY3JvQ2hhcnQgPSAob1RhcmdldDogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcblx0Y29uc3Qgb0Fubm90YXRpb25UYXJnZXQgPSBvVGFyZ2V0Py50YXJnZXRPYmplY3QgPyBvVGFyZ2V0LnRhcmdldE9iamVjdCA6IG9UYXJnZXQ7XG5cdGNvbnN0IG9Dcml0aWNhbGl0eVByb3BlcnR5ID0gb0Fubm90YXRpb25UYXJnZXQ/LkNyaXRpY2FsaXR5O1xuXHRjb25zdCBvQ3JpdGljYWxpdHlFeHByZXNzaW9uOiBFeHByZXNzaW9uPHN0cmluZz4gPSBhbm5vdGF0aW9uRXhwcmVzc2lvbihvQ3JpdGljYWxpdHlQcm9wZXJ0eSk7XG5cdGxldCBzQ29sb3JFeHByZXNzaW9uO1xuXHRpZiAob0NyaXRpY2FsaXR5UHJvcGVydHkpIHtcblx0XHRzQ29sb3JFeHByZXNzaW9uID0gaWZFbHNlKFxuXHRcdFx0b3IoXG5cdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL05lZ2F0aXZlXCIpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDEpKSxcblx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCIxXCIpKVxuXHRcdFx0KSxcblx0XHRcdGNvbnN0YW50KFwiRXJyb3JcIiksXG5cdFx0XHRpZkVsc2UoXG5cdFx0XHRcdG9yKFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiVUkuQ3JpdGljYWxpdHlUeXBlL0NyaXRpY2FsXCIpKSxcblx0XHRcdFx0XHRlcXVhbChvQ3JpdGljYWxpdHlFeHByZXNzaW9uIGFzIEV4cHJlc3Npb248TnVtYmVyPiwgY29uc3RhbnQoMikpLFxuXHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiMlwiKSlcblx0XHRcdFx0KSxcblx0XHRcdFx0Y29uc3RhbnQoXCJDcml0aWNhbFwiKSxcblx0XHRcdFx0aWZFbHNlKFxuXHRcdFx0XHRcdG9yKFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiwgY29uc3RhbnQoXCJVSS5Dcml0aWNhbGl0eVR5cGUvUG9zaXRpdmVcIikpLFxuXHRcdFx0XHRcdFx0ZXF1YWwob0NyaXRpY2FsaXR5RXhwcmVzc2lvbiBhcyBFeHByZXNzaW9uPE51bWJlcj4sIGNvbnN0YW50KDMpKSxcblx0XHRcdFx0XHRcdGVxdWFsKG9Dcml0aWNhbGl0eUV4cHJlc3Npb24sIGNvbnN0YW50KFwiM1wiKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdGNvbnN0YW50KFwiR29vZFwiKSxcblx0XHRcdFx0XHRjb25zdGFudChcIk5ldXRyYWxcIilcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0gZWxzZSB7XG5cdFx0c0NvbG9yRXhwcmVzc2lvbiA9IGNvbnN0YW50KFwiTmV1dHJhbFwiKTtcblx0fVxuXHRyZXR1cm4gY29tcGlsZUJpbmRpbmcoc0NvbG9yRXhwcmVzc2lvbik7XG59O1xuIl19
@@ -74,4 +74,4 @@ sap.ui.define(["sap/fe/core/templating/UIFormatters", "sap/fe/core/templating/Da
74
74
  _exports.isSemanticallyConnectedFields = isSemanticallyConnectedFields;
75
75
  return _exports;
76
76
  }, false);
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFGaWVsZEZvcm1hdHRlcnMudHMiXSwibmFtZXMiOlsiZ2V0RGF0YUZpZWxkIiwib0NvbnRleHQiLCJvSW50ZXJmYWNlIiwic1BhdGgiLCJjb250ZXh0IiwiZ2V0UGF0aCIsIkVycm9yIiwiaXNQYXRoIiwiaGFzT3duUHJvcGVydHkiLCIka2luZCIsIm9Db252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIiR0YXJnZXQiLCJnZXREYXRhRmllbGRPYmplY3RQYXRoIiwiaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidGFyZ2V0T2JqZWN0IiwidHlwZSIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImVuZHNXaXRoIiwiaXNTZW1hbnRpY2FsbHlDb25uZWN0ZWRGaWVsZHMiLCJvRGF0YUZpZWxkIiwiJFR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUtPLE1BQU1BLFlBQVksR0FBRyxVQUMzQkMsUUFEMkIsRUFFM0JDLFVBRjJCLEVBR2lCO0FBQzVDLFFBQU1DLEtBQUssR0FBR0QsVUFBVSxDQUFDRSxPQUFYLENBQW1CQyxPQUFuQixFQUFkOztBQUNBLFFBQUksQ0FBQ0osUUFBTCxFQUFlO0FBQ2QsWUFBTSxJQUFJSyxLQUFKLENBQVUsNkJBQTZCSCxLQUF2QyxDQUFOO0FBQ0E7O0FBQ0QsUUFBSUksTUFBTSxHQUFHLEtBQWI7O0FBQ0EsUUFBSSxPQUFPTixRQUFQLEtBQW9CLFFBQXBCLEtBQWlDQSxRQUFRLENBQUNPLGNBQVQsQ0FBd0IsT0FBeEIsS0FBb0NQLFFBQVEsQ0FBQ08sY0FBVCxDQUF3QixpQkFBeEIsQ0FBckUsQ0FBSixFQUFzSDtBQUNySEQsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQSxLQUZELE1BRU8sSUFBSSxPQUFPTixRQUFQLEtBQW9CLFFBQXBCLElBQWdDQSxRQUFRLENBQUNPLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBaEMsSUFBb0VQLFFBQVEsQ0FBQ1EsS0FBVCxLQUFtQixVQUEzRixFQUF1RztBQUM3RyxZQUFNLElBQUlILEtBQUosQ0FBVSw2REFBNkRMLFFBQVEsQ0FBQ1EsS0FBaEYsQ0FBTjtBQUNBOztBQUNELFFBQUlDLGlCQUFpQixHQUFHQyxtQkFBbUIsQ0FBQ1YsUUFBRCxFQUFXQyxVQUFYLENBQTNDOztBQUNBLFFBQUlLLE1BQUosRUFBWTtBQUNYRyxNQUFBQSxpQkFBaUIsR0FBSUEsaUJBQUQsQ0FBMkJFLE9BQS9DO0FBQ0E7O0FBQ0QsV0FBT0YsaUJBQVA7QUFDQSxHQW5CTTs7OztBQXFCQSxNQUFNRyxzQkFBc0IsR0FBRyxVQUNyQ1osUUFEcUMsRUFFckNDLFVBRnFDLEVBR2Y7QUFDdEIsUUFBTUMsS0FBSyxHQUFHRCxVQUFVLENBQUNFLE9BQVgsQ0FBbUJDLE9BQW5CLEVBQWQ7O0FBQ0EsUUFBSSxDQUFDSixRQUFMLEVBQWU7QUFDZCxZQUFNLElBQUlLLEtBQUosQ0FBVSw2QkFBNkJILEtBQXZDLENBQU47QUFDQTs7QUFDRCxRQUFJLE9BQU9GLFFBQVAsS0FBb0IsUUFBcEIsSUFBZ0NBLFFBQVEsQ0FBQ08sY0FBVCxDQUF3QixPQUF4QixDQUFoQyxJQUFvRVAsUUFBUSxDQUFDUSxLQUFULEtBQW1CLFVBQTNGLEVBQXVHO0FBQ3RHLFlBQU0sSUFBSUgsS0FBSixDQUFVLDREQUE0REwsUUFBUSxDQUFDUSxLQUEvRSxDQUFOO0FBQ0E7O0FBQ0QsUUFBSUssd0JBQXdCLEdBQUdDLDJCQUEyQixDQUFDYixVQUFVLENBQUNFLE9BQVosQ0FBMUQ7O0FBQ0EsUUFBSVUsd0JBQXdCLENBQUNFLFlBQXpCLElBQXlDRix3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NDLElBQXRDLEtBQStDLE1BQTVGLEVBQW9HO0FBQ25HSCxNQUFBQSx3QkFBd0IsR0FBR0ksb0JBQW9CLENBQUNKLHdCQUFELEVBQTJCQSx3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NHLElBQWpFLENBQS9DO0FBQ0E7O0FBQ0QsUUFBSUwsd0JBQXdCLENBQUNFLFlBQXpCLElBQXlDRix3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NDLElBQXRDLEtBQStDLGdCQUE1RixFQUE4RztBQUM3R0gsTUFBQUEsd0JBQXdCLEdBQUdJLG9CQUFvQixDQUFDSix3QkFBRCxFQUEyQkEsd0JBQXdCLENBQUNFLFlBQXBELENBQS9DO0FBQ0E7O0FBQ0QsUUFBSWIsS0FBSyxDQUFDaUIsUUFBTixDQUFlLE9BQWYsS0FBMkJqQixLQUFLLENBQUNpQixRQUFOLENBQWUsaUJBQWYsQ0FBL0IsRUFBa0U7QUFDakVOLE1BQUFBLHdCQUF3QixHQUFHSSxvQkFBb0IsQ0FBQ0osd0JBQUQsRUFBMkJiLFFBQTNCLENBQS9DO0FBQ0E7O0FBQ0QsV0FBT2Esd0JBQVA7QUFDQSxHQXRCTTs7OztBQXdCQSxNQUFNTyw2QkFBNkIsR0FBRyxVQUFTcEIsUUFBVCxFQUFxQ0MsVUFBckMsRUFBdUY7QUFDbkksUUFBTW9CLFVBQXFELEdBQUd0QixZQUFZLENBQUNDLFFBQUQsRUFBV0MsVUFBWCxDQUExRTtBQUNBLFdBQVFvQixVQUFELENBQXlDQyxLQUF6QyxxREFBUDtBQUNBLEdBSE0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSwgZ2V0Q29udmVydGVyQ29udGV4dCwgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgQ29ubmVjdGVkRmllbGRzVHlwZVR5cGVzLCBEYXRhRmllbGRUeXBlcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGgsIGVuaGFuY2VEYXRhTW9kZWxQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhRmllbGQgPSBmdW5jdGlvbihcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YUZpZWxkVHlwZXMgfCBDb25uZWN0ZWRGaWVsZHNUeXBlVHlwZXMge1xuXHRjb25zdCBzUGF0aCA9IG9JbnRlcmZhY2UuY29udGV4dC5nZXRQYXRoKCk7XG5cdGlmICghb0NvbnRleHQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlc29sdmVkIGNvbnRleHQgcGF0aCBcIiArIHNQYXRoKTtcblx0fVxuXHRsZXQgaXNQYXRoID0gZmFsc2U7XG5cdGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgKG9Db250ZXh0Lmhhc093blByb3BlcnR5KFwiJFBhdGhcIikgfHwgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpKSB7XG5cdFx0aXNQYXRoID0gdHJ1ZTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIka2luZFwiKSAmJiBvQ29udGV4dC4ka2luZCAhPT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ29udGV4dCBkb2VzIG5vdCByZXNvbHZlIHRvIGEgRGF0YUZpZWxkIG9iamVjdCBidXQgdG8gYSBcIiArIG9Db250ZXh0LiRraW5kKTtcblx0fVxuXHRsZXQgb0NvbnZlcnRlckNvbnRleHQgPSBnZXRDb252ZXJ0ZXJDb250ZXh0KG9Db250ZXh0LCBvSW50ZXJmYWNlKSBhcyBEYXRhRmllbGRUeXBlcztcblx0aWYgKGlzUGF0aCkge1xuXHRcdG9Db252ZXJ0ZXJDb250ZXh0ID0gKG9Db252ZXJ0ZXJDb250ZXh0IGFzIGFueSkuJHRhcmdldDtcblx0fVxuXHRyZXR1cm4gb0NvbnZlcnRlckNvbnRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZpZWxkT2JqZWN0UGF0aCA9IGZ1bmN0aW9uKFxuXHRvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCB8IHN0cmluZyxcblx0b0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3Qgc1BhdGggPSBvSW50ZXJmYWNlLmNvbnRleHQuZ2V0UGF0aCgpO1xuXHRpZiAoIW9Db250ZXh0KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZXNvbHZlZCBjb250ZXh0IHBhdGggXCIgKyBzUGF0aCk7XG5cdH1cblx0aWYgKHR5cGVvZiBvQ29udGV4dCA9PT0gXCJvYmplY3RcIiAmJiBvQ29udGV4dC5oYXNPd25Qcm9wZXJ0eShcIiRraW5kXCIpICYmIG9Db250ZXh0LiRraW5kICE9PSBcIlByb3BlcnR5XCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDb250ZXh0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBQcm9wZXJ0eSBvYmplY3QgYnV0IHRvIGEgXCIgKyBvQ29udGV4dC4ka2luZCk7XG5cdH1cblx0bGV0IGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvSW50ZXJmYWNlLmNvbnRleHQpO1xuXHRpZiAoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdCAmJiBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUGF0aFwiKSB7XG5cdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnBhdGgpO1xuXHR9XG5cdGlmIChpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0ICYmIGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cy50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJBbm5vdGF0aW9uUGF0aFwiKSB7XG5cdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0KTtcblx0fVxuXHRpZiAoc1BhdGguZW5kc1dpdGgoXCIkUGF0aFwiKSB8fCBzUGF0aC5lbmRzV2l0aChcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cywgb0NvbnRleHQgYXMgc3RyaW5nKTtcblx0fVxuXHRyZXR1cm4gaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VtYW50aWNhbGx5Q29ubmVjdGVkRmllbGRzID0gZnVuY3Rpb24ob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IGJvb2xlYW4ge1xuXHRjb25zdCBvRGF0YUZpZWxkOiBEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcyA9IGdldERhdGFGaWVsZChvQ29udGV4dCwgb0ludGVyZmFjZSk7XG5cdHJldHVybiAob0RhdGFGaWVsZCBhcyBDb25uZWN0ZWRGaWVsZHNUeXBlVHlwZXMpLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db25uZWN0ZWRGaWVsZHNUeXBlO1xufTtcbiJdfQ==
77
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFGaWVsZEZvcm1hdHRlcnMudHMiXSwibmFtZXMiOlsiZ2V0RGF0YUZpZWxkIiwib0NvbnRleHQiLCJvSW50ZXJmYWNlIiwic1BhdGgiLCJjb250ZXh0IiwiZ2V0UGF0aCIsIkVycm9yIiwiaXNQYXRoIiwiaGFzT3duUHJvcGVydHkiLCIka2luZCIsIm9Db252ZXJ0ZXJDb250ZXh0IiwiZ2V0Q29udmVydGVyQ29udGV4dCIsIiR0YXJnZXQiLCJnZXREYXRhRmllbGRPYmplY3RQYXRoIiwiaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwiZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIiwidGFyZ2V0T2JqZWN0IiwidHlwZSIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwicGF0aCIsImVuZHNXaXRoIiwiaXNTZW1hbnRpY2FsbHlDb25uZWN0ZWRGaWVsZHMiLCJvRGF0YUZpZWxkIiwiJFR5cGUiXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7OztBQUdPLE1BQU1BLFlBQVksR0FBRyxVQUMzQkMsUUFEMkIsRUFFM0JDLFVBRjJCLEVBR2lCO0FBQzVDLFFBQU1DLEtBQUssR0FBR0QsVUFBVSxDQUFDRSxPQUFYLENBQW1CQyxPQUFuQixFQUFkOztBQUNBLFFBQUksQ0FBQ0osUUFBTCxFQUFlO0FBQ2QsWUFBTSxJQUFJSyxLQUFKLENBQVUsNkJBQTZCSCxLQUF2QyxDQUFOO0FBQ0E7O0FBQ0QsUUFBSUksTUFBTSxHQUFHLEtBQWI7O0FBQ0EsUUFBSSxPQUFPTixRQUFQLEtBQW9CLFFBQXBCLEtBQWlDQSxRQUFRLENBQUNPLGNBQVQsQ0FBd0IsT0FBeEIsS0FBb0NQLFFBQVEsQ0FBQ08sY0FBVCxDQUF3QixpQkFBeEIsQ0FBckUsQ0FBSixFQUFzSDtBQUNySEQsTUFBQUEsTUFBTSxHQUFHLElBQVQ7QUFDQSxLQUZELE1BRU8sSUFBSSxPQUFPTixRQUFQLEtBQW9CLFFBQXBCLElBQWdDQSxRQUFRLENBQUNPLGNBQVQsQ0FBd0IsT0FBeEIsQ0FBaEMsSUFBb0VQLFFBQVEsQ0FBQ1EsS0FBVCxLQUFtQixVQUEzRixFQUF1RztBQUM3RyxZQUFNLElBQUlILEtBQUosQ0FBVSw2REFBNkRMLFFBQVEsQ0FBQ1EsS0FBaEYsQ0FBTjtBQUNBOztBQUNELFFBQUlDLGlCQUFpQixHQUFHQyxtQkFBbUIsQ0FBQ1YsUUFBRCxFQUFXQyxVQUFYLENBQTNDOztBQUNBLFFBQUlLLE1BQUosRUFBWTtBQUNYRyxNQUFBQSxpQkFBaUIsR0FBSUEsaUJBQUQsQ0FBMkJFLE9BQS9DO0FBQ0E7O0FBQ0QsV0FBT0YsaUJBQVA7QUFDQSxHQW5CTTs7OztBQXFCQSxNQUFNRyxzQkFBc0IsR0FBRyxVQUNyQ1osUUFEcUMsRUFFckNDLFVBRnFDLEVBR2Y7QUFDdEIsUUFBTUMsS0FBSyxHQUFHRCxVQUFVLENBQUNFLE9BQVgsQ0FBbUJDLE9BQW5CLEVBQWQ7O0FBQ0EsUUFBSSxDQUFDSixRQUFMLEVBQWU7QUFDZCxZQUFNLElBQUlLLEtBQUosQ0FBVSw2QkFBNkJILEtBQXZDLENBQU47QUFDQTs7QUFDRCxRQUFJLE9BQU9GLFFBQVAsS0FBb0IsUUFBcEIsSUFBZ0NBLFFBQVEsQ0FBQ08sY0FBVCxDQUF3QixPQUF4QixDQUFoQyxJQUFvRVAsUUFBUSxDQUFDUSxLQUFULEtBQW1CLFVBQTNGLEVBQXVHO0FBQ3RHLFlBQU0sSUFBSUgsS0FBSixDQUFVLDREQUE0REwsUUFBUSxDQUFDUSxLQUEvRSxDQUFOO0FBQ0E7O0FBQ0QsUUFBSUssd0JBQXdCLEdBQUdDLDJCQUEyQixDQUFDYixVQUFVLENBQUNFLE9BQVosQ0FBMUQ7O0FBQ0EsUUFBSVUsd0JBQXdCLENBQUNFLFlBQXpCLElBQXlDRix3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NDLElBQXRDLEtBQStDLE1BQTVGLEVBQW9HO0FBQ25HSCxNQUFBQSx3QkFBd0IsR0FBR0ksb0JBQW9CLENBQUNKLHdCQUFELEVBQTJCQSx3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NHLElBQWpFLENBQS9DO0FBQ0E7O0FBQ0QsUUFBSUwsd0JBQXdCLENBQUNFLFlBQXpCLElBQXlDRix3QkFBd0IsQ0FBQ0UsWUFBekIsQ0FBc0NDLElBQXRDLEtBQStDLGdCQUE1RixFQUE4RztBQUM3R0gsTUFBQUEsd0JBQXdCLEdBQUdJLG9CQUFvQixDQUFDSix3QkFBRCxFQUEyQkEsd0JBQXdCLENBQUNFLFlBQXBELENBQS9DO0FBQ0E7O0FBQ0QsUUFBSWIsS0FBSyxDQUFDaUIsUUFBTixDQUFlLE9BQWYsS0FBMkJqQixLQUFLLENBQUNpQixRQUFOLENBQWUsaUJBQWYsQ0FBL0IsRUFBa0U7QUFDakVOLE1BQUFBLHdCQUF3QixHQUFHSSxvQkFBb0IsQ0FBQ0osd0JBQUQsRUFBMkJiLFFBQTNCLENBQS9DO0FBQ0E7O0FBQ0QsV0FBT2Esd0JBQVA7QUFDQSxHQXRCTTs7OztBQXdCQSxNQUFNTyw2QkFBNkIsR0FBRyxVQUFTcEIsUUFBVCxFQUFxQ0MsVUFBckMsRUFBdUY7QUFDbkksUUFBTW9CLFVBQXFELEdBQUd0QixZQUFZLENBQUNDLFFBQUQsRUFBV0MsVUFBWCxDQUExRTtBQUNBLFdBQVFvQixVQUFELENBQXlDQyxLQUF6QyxxREFBUDtBQUNBLEdBSE0iLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSwgZ2V0Q29udmVydGVyQ29udGV4dCwgTWV0YU1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1VJRm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgQ29ubmVjdGVkRmllbGRzVHlwZVR5cGVzLCBEYXRhRmllbGRUeXBlcywgVUlBbm5vdGF0aW9uVHlwZXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IERhdGFNb2RlbE9iamVjdFBhdGgsIGVuaGFuY2VEYXRhTW9kZWxQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhRmllbGQgPSBmdW5jdGlvbihcblx0b0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsXG5cdG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZVxuKTogRGF0YUZpZWxkVHlwZXMgfCBDb25uZWN0ZWRGaWVsZHNUeXBlVHlwZXMge1xuXHRjb25zdCBzUGF0aCA9IG9JbnRlcmZhY2UuY29udGV4dC5nZXRQYXRoKCk7XG5cdGlmICghb0NvbnRleHQpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlc29sdmVkIGNvbnRleHQgcGF0aCBcIiArIHNQYXRoKTtcblx0fVxuXHRsZXQgaXNQYXRoID0gZmFsc2U7XG5cdGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgKG9Db250ZXh0Lmhhc093blByb3BlcnR5KFwiJFBhdGhcIikgfHwgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIkQW5ub3RhdGlvblBhdGhcIikpKSB7XG5cdFx0aXNQYXRoID0gdHJ1ZTtcblx0fSBlbHNlIGlmICh0eXBlb2Ygb0NvbnRleHQgPT09IFwib2JqZWN0XCIgJiYgb0NvbnRleHQuaGFzT3duUHJvcGVydHkoXCIka2luZFwiKSAmJiBvQ29udGV4dC4ka2luZCAhPT0gXCJQcm9wZXJ0eVwiKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiQ29udGV4dCBkb2VzIG5vdCByZXNvbHZlIHRvIGEgRGF0YUZpZWxkIG9iamVjdCBidXQgdG8gYSBcIiArIG9Db250ZXh0LiRraW5kKTtcblx0fVxuXHRsZXQgb0NvbnZlcnRlckNvbnRleHQgPSBnZXRDb252ZXJ0ZXJDb250ZXh0KG9Db250ZXh0LCBvSW50ZXJmYWNlKSBhcyBEYXRhRmllbGRUeXBlcztcblx0aWYgKGlzUGF0aCkge1xuXHRcdG9Db252ZXJ0ZXJDb250ZXh0ID0gKG9Db252ZXJ0ZXJDb250ZXh0IGFzIGFueSkuJHRhcmdldDtcblx0fVxuXHRyZXR1cm4gb0NvbnZlcnRlckNvbnRleHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YUZpZWxkT2JqZWN0UGF0aCA9IGZ1bmN0aW9uKFxuXHRvQ29udGV4dDogTWV0YU1vZGVsQ29udGV4dCB8IHN0cmluZyxcblx0b0ludGVyZmFjZTogQ29tcHV0ZWRBbm5vdGF0aW9uSW50ZXJmYWNlXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3Qgc1BhdGggPSBvSW50ZXJmYWNlLmNvbnRleHQuZ2V0UGF0aCgpO1xuXHRpZiAoIW9Db250ZXh0KSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZXNvbHZlZCBjb250ZXh0IHBhdGggXCIgKyBzUGF0aCk7XG5cdH1cblx0aWYgKHR5cGVvZiBvQ29udGV4dCA9PT0gXCJvYmplY3RcIiAmJiBvQ29udGV4dC5oYXNPd25Qcm9wZXJ0eShcIiRraW5kXCIpICYmIG9Db250ZXh0LiRraW5kICE9PSBcIlByb3BlcnR5XCIpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJDb250ZXh0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBQcm9wZXJ0eSBvYmplY3QgYnV0IHRvIGEgXCIgKyBvQ29udGV4dC4ka2luZCk7XG5cdH1cblx0bGV0IGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhvSW50ZXJmYWNlLmNvbnRleHQpO1xuXHRpZiAoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLnRhcmdldE9iamVjdCAmJiBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUGF0aFwiKSB7XG5cdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0LnBhdGgpO1xuXHR9XG5cdGlmIChpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0ICYmIGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cy50YXJnZXRPYmplY3QudHlwZSA9PT0gXCJBbm5vdGF0aW9uUGF0aFwiKSB7XG5cdFx0aW52b2x2ZWREYXRhTW9kZWxPYmplY3RzID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzLCBpbnZvbHZlZERhdGFNb2RlbE9iamVjdHMudGFyZ2V0T2JqZWN0KTtcblx0fVxuXHRpZiAoc1BhdGguZW5kc1dpdGgoXCIkUGF0aFwiKSB8fCBzUGF0aC5lbmRzV2l0aChcIiRBbm5vdGF0aW9uUGF0aFwiKSkge1xuXHRcdGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGludm9sdmVkRGF0YU1vZGVsT2JqZWN0cywgb0NvbnRleHQgYXMgc3RyaW5nKTtcblx0fVxuXHRyZXR1cm4gaW52b2x2ZWREYXRhTW9kZWxPYmplY3RzO1xufTtcblxuZXhwb3J0IGNvbnN0IGlzU2VtYW50aWNhbGx5Q29ubmVjdGVkRmllbGRzID0gZnVuY3Rpb24ob0NvbnRleHQ6IE1ldGFNb2RlbENvbnRleHQsIG9JbnRlcmZhY2U6IENvbXB1dGVkQW5ub3RhdGlvbkludGVyZmFjZSk6IGJvb2xlYW4ge1xuXHRjb25zdCBvRGF0YUZpZWxkOiBEYXRhRmllbGRUeXBlcyB8IENvbm5lY3RlZEZpZWxkc1R5cGVUeXBlcyA9IGdldERhdGFGaWVsZChvQ29udGV4dCwgb0ludGVyZmFjZSk7XG5cdHJldHVybiAob0RhdGFGaWVsZCBhcyBDb25uZWN0ZWRGaWVsZHNUeXBlVHlwZXMpLiRUeXBlID09PSBVSUFubm90YXRpb25UeXBlcy5Db25uZWN0ZWRGaWVsZHNUeXBlO1xufTtcbiJdfQ==
@@ -134,14 +134,34 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
134
134
  _exports.enhanceDataModelPath = enhanceDataModelPath;
135
135
 
136
136
  var getTargetEntitySetPath = function (dataModelObjectPath) {
137
- var targetEntitySetPath = "/".concat(dataModelObjectPath.startingEntitySet.name);
138
- var currentEntitySet = dataModelObjectPath.startingEntitySet;
137
+ var _dataModelObjectPath$;
138
+
139
+ var bRelative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
140
+ var targetEntitySetPath = "";
141
+
142
+ if (!bRelative) {
143
+ targetEntitySetPath += "/".concat(dataModelObjectPath.startingEntitySet.name);
144
+ }
145
+
146
+ var currentEntitySet = bRelative && (_dataModelObjectPath$ = dataModelObjectPath.contextLocation) !== null && _dataModelObjectPath$ !== void 0 && _dataModelObjectPath$.targetEntitySet ? dataModelObjectPath.contextLocation.targetEntitySet : dataModelObjectPath.startingEntitySet;
139
147
  var navigatedPaths = [];
140
148
  dataModelObjectPath.navigationProperties.forEach(function (navProp) {
141
- navigatedPaths.push(navProp.name);
149
+ var _dataModelObjectPath$2;
150
+
151
+ if (!bRelative || !dataModelObjectPath.contextLocation || !((_dataModelObjectPath$2 = dataModelObjectPath.contextLocation) !== null && _dataModelObjectPath$2 !== void 0 && _dataModelObjectPath$2.navigationProperties.some(function (contextNavProp) {
152
+ return contextNavProp.fullyQualifiedName === navProp.fullyQualifiedName;
153
+ }))) {
154
+ // in case of relative entitySetPath we don't consider navigationPath that are already in the context
155
+ navigatedPaths.push(navProp.name);
156
+ }
142
157
 
143
158
  if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
144
- targetEntitySetPath += "/$NavigationPropertyBinding/".concat(navigatedPaths.join("/"), "/$");
159
+ if (bRelative) {
160
+ targetEntitySetPath += "".concat(navigatedPaths.join("/"));
161
+ } else {
162
+ targetEntitySetPath += "/$NavigationPropertyBinding/".concat(navigatedPaths.join("/"), "/$");
163
+ }
164
+
145
165
  currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")];
146
166
  navigatedPaths = [];
147
167
  }
@@ -151,6 +171,24 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
151
171
 
152
172
  _exports.getTargetEntitySetPath = getTargetEntitySetPath;
153
173
 
174
+ var getTargetEntitySetNavigation = function (dataModelObjectPath) {
175
+ var visitedNavigationProperties = [];
176
+ var currentEntitySet = dataModelObjectPath.startingEntitySet;
177
+ var navigatedPaths = [];
178
+ dataModelObjectPath.navigationProperties.forEach(function (navProp) {
179
+ navigatedPaths.push(navProp.name);
180
+
181
+ if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
182
+ visitedNavigationProperties.push(navProp);
183
+ currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")];
184
+ navigatedPaths = [];
185
+ }
186
+ });
187
+ return visitedNavigationProperties;
188
+ };
189
+
190
+ _exports.getTargetEntitySetNavigation = getTargetEntitySetNavigation;
191
+
154
192
  var getTargetObjectPath = function (dataModelObjectPath) {
155
193
  var bRelative = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
156
194
  var path = "";
@@ -243,6 +281,16 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
243
281
 
244
282
  _exports.isPathUpdatable = isPathUpdatable;
245
283
 
284
+ var isPathSearchable = function (dataModelObjectPath, propertyPath, bTableCase) {
285
+ return checkOnPath(dataModelObjectPath, function (annotationObject) {
286
+ var _annotationObject$Sea;
287
+
288
+ return annotationObject === null || annotationObject === void 0 ? void 0 : (_annotationObject$Sea = annotationObject.SearchRestrictions) === null || _annotationObject$Sea === void 0 ? void 0 : _annotationObject$Sea.Searchable;
289
+ }, propertyPath, bTableCase);
290
+ };
291
+
292
+ _exports.isPathSearchable = isPathSearchable;
293
+
246
294
  var isPathDeletable = function (dataModelObjectPath, propertyPath, bTableCase) {
247
295
  return checkOnPath(dataModelObjectPath, function (annotationObject) {
248
296
  var _annotationObject$Del;
@@ -389,7 +437,7 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
389
437
  } //object page table case in path based scenario's fallback to exisiting approach
390
438
 
391
439
 
392
- if (bTableCase && !restrictions && ((_restrictionDefinitio = restrictionDefinition) === null || _restrictionDefinitio === void 0 ? void 0 : _restrictionDefinitio.path)) {
440
+ if (bTableCase && !restrictions && (_restrictionDefinitio = restrictionDefinition) !== null && _restrictionDefinitio !== void 0 && _restrictionDefinitio.path) {
393
441
  var oResult = {
394
442
  "currentEntityRestriction": targetRestrictions
395
443
  };
@@ -402,4 +450,4 @@ sap.ui.define(["sap/fe/core/helpers/BindingExpression", "sap/fe/core/templating/
402
450
  _exports.checkOnPath = checkOnPath;
403
451
  return _exports;
404
452
  }, false);
405
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2UiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwidW5kZWZpbmVkIiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsInRhcmdldEVudGl0eVNldFBhdGgiLCJuYXZpZ2F0ZWRQYXRocyIsImpvaW4iLCJnZXRUYXJnZXRPYmplY3RQYXRoIiwiYlJlbGF0aXZlIiwiX3R5cGUiLCJlbmRzV2l0aCIsInRlcm0iLCJnZXRDb250ZXh0UmVsYXRpdmVUYXJnZXRPYmplY3RQYXRoIiwiZm9yQmluZGluZ0V4cHJlc3Npb24iLCJuYXZQcm9wZXJ0aWVzIiwiaXNDb2xsZWN0aW9uIiwidHlwZSIsInZhbHVlIiwicXVhbGlmaWVyIiwiaXNQYXRoVXBkYXRhYmxlIiwiYlRhYmxlQ2FzZSIsImNoZWNrT25QYXRoIiwiYW5ub3RhdGlvbk9iamVjdCIsIlVwZGF0ZVJlc3RyaWN0aW9ucyIsIlVwZGF0YWJsZSIsImlzUGF0aERlbGV0YWJsZSIsIkRlbGV0ZVJlc3RyaWN0aW9ucyIsIkRlbGV0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJJbnNlcnRSZXN0cmljdGlvbnMiLCJJbnNlcnRhYmxlIiwiY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiYWxsb3dlZEV4cHJlc3Npb24iLCJmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImN1cnJlbnRPYmplY3RSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiUHJvcGVydHkiLCJpbmRleE9mIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwidG9TdHJpbmciLCJjaGVja0Z1bmN0aW9uIiwiY29uc3RhbnQiLCJwYXJlbnRFbnRpdHlTZXQiLCJ2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZSIsImFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMiLCJyZXNldFZpc2l0ZWROYXZQcm9wcyIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsImNvbnRhaW5zVGFyZ2V0IiwiZnVsbE5hdmlnYXRpb25QYXRoIiwicmVzdHJpY3Rpb25zIiwiX3BhcmVudEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwicmVzdHJpY3RlZE5hdlByb3AiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJyZXN0cmljdGlvbkRlZmluaXRpb24iLCJfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsImVxdWFsIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJvUmVzdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQXdCTyxNQUFNQSx1QkFBdUIsR0FBRyxVQUN0Q0MsV0FEc0MsRUFHZjtBQUFBLFFBRHZCQyxlQUN1Qix1RUFEaUIsRUFDakI7O0FBQ3ZCLFFBQUksQ0FBQ0QsV0FBTCxFQUFrQjtBQUNqQixhQUFPQyxlQUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ04sVUFBSUEsZUFBZSxDQUFDQyxNQUFoQixJQUEwQkYsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0QsTUFBL0QsRUFBdUU7QUFDdEUsWUFBSUUsaUJBQXVDLEdBQUcsRUFBOUM7QUFDQUosUUFBQUEsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0UsT0FBakMsQ0FBeUMsVUFBQ0MsT0FBRCxFQUFVQyxRQUFWLEVBQXVCO0FBQy9ELGNBQUlOLGVBQWUsQ0FBQ00sUUFBRCxDQUFmLEtBQThCRCxPQUFsQyxFQUEyQztBQUMxQ0YsWUFBQUEsaUJBQWlCLENBQUNJLElBQWxCLENBQXVCUCxlQUFlLENBQUNNLFFBQUQsQ0FBdEM7QUFDQTtBQUNELFNBSkQ7QUFLQUgsUUFBQUEsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDSyxNQUFsQixDQUF5QlIsZUFBZSxDQUFDUyxLQUFoQixDQUFzQlYsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0QsTUFBdkQsQ0FBekIsQ0FBcEIsQ0FQc0UsQ0FRdEU7O0FBQ0EsWUFBSVMsVUFBVSxHQUFHLENBQWpCOztBQUNBLGVBQU9QLGlCQUFpQixDQUFDRixNQUFsQixHQUEyQixDQUEzQixJQUFnQ1MsVUFBVSxJQUFJUCxpQkFBaUIsQ0FBQ0YsTUFBbEIsR0FBMkIsQ0FBaEYsRUFBbUY7QUFDbEYsY0FBTVUsVUFBVSxHQUFHUixpQkFBaUIsQ0FBQ08sVUFBRCxDQUFwQztBQUNBLGNBQU1FLFdBQVcsR0FBR1QsaUJBQWlCLENB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RUFBRSxDQUFDTixJQUFQO0FBQUEsT0FBOUYsQ0FGbUIsQ0FESyxFQUt6QixJQUx5QixDQUExQjtBQU9BLEtBM0ZxQixDQTRGdEI7OztBQUNBLFFBQUlrRCxVQUFVLElBQUksQ0FBQytCLFlBQWYsOEJBQStCUSxxQkFBL0IsMERBQStCLHNCQUF1QjVFLElBQXRELENBQUosRUFBZ0U7QUFDL0QsVUFBTWlGLE9BQVksR0FBRztBQUNwQixvQ0FBNEJEO0FBRFIsT0FBckI7QUFHQSxhQUFPQyxPQUFQO0FBQ0E7O0FBQ0QsV0FBT2IsWUFBWSxJQUFJWSxrQkFBaEIsSUFBc0NwQixRQUFRLENBQUMsSUFBRCxDQUFyRDtBQUNBLEdBekdNIiwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTZXQsIEVudGl0eVR5cGUsIE5hdmlnYXRpb25Qcm9wZXJ0eSwgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC9hbm5vdGF0aW9uLWNvbnZlcnRlclwiO1xuaW1wb3J0IHsgYW5ub3RhdGlvbkV4cHJlc3Npb24sIGNvbnN0YW50LCBlcXVhbCwgRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0JpbmRpbmdFeHByZXNzaW9uXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvblR5cGVzIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL0NhcGFiaWxpdGllc1wiO1xuaW1wb3J0IHsgUHJvcGVydHlPclBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9VSUZvcm1hdHRlcnNcIjtcbmltcG9ydCB7IGlzQW5ub3RhdGlvblBhdGhFeHByZXNzaW9uLCBpc1BhdGhFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlIZWxwZXJcIjtcbmltcG9ydCB7XG5cdEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlcyxcblx0TmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25cbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3R5cGVzL2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7XG5cdEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyxcblx0RW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllc1xufSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvZGlzdC9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzX0VkbVwiO1xuaW1wb3J0IHsgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdHN0YXJ0aW5nRW50aXR5U2V0OiBFbnRpdHlTZXQ7XG5cdGNvbnRleHRMb2NhdGlvbj86IERhdGFNb2RlbE9iamVjdFBhdGg7XG5cdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXTtcblx0dGFyZ2V0RW50aXR5U2V0PzogRW50aXR5U2V0O1xuXHR0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlO1xuXHR0YXJnZXRPYmplY3Q6IGFueTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbiA9IGZ1bmN0aW9uKFxuXHRjb250ZXh0UGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHZpc2l0ZWROYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXVxuKTogTmF2aWdhdGlvblByb3BlcnR5W10ge1xuXHRpZiAoIWNvbnRleHRQYXRoKSB7XG5cdFx0cmV0dXJuIHZpc2l0ZWROYXZQcm9wcztcblx0fSBlbHNlIHtcblx0XHRpZiAodmlzaXRlZE5hdlByb3BzLmxlbmd0aCA+PSBjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRcdGxldCByZW1haW5pbmdOYXZQcm9wczogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHRcdGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2goKG5hdlByb3AsIG5hdkluZGV4KSA9PiB7XG5cdFx0XHRcdGlmICh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdICE9PSBuYXZQcm9wKSB7XG5cdFx0XHRcdFx0cmVtYWluaW5nTmF2UHJvcHMucHVzaCh2aXNpdGVkTmF2UHJvcHNbbmF2SW5kZXhdKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRyZW1haW5pbmdOYXZQcm9wcyA9IHJlbWFpbmluZ05hdlByb3BzLmNvbmNhdCh2aXNpdGVkTmF2UHJvcHMuc2xpY2UoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSk7XG5cdFx0XHQvLyBDbGVhbiB1cCBOYXZQcm9wIC0+IE93bmVyXG5cdFx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0XHR3aGlsZSAocmVtYWluaW5nTmF2UHJvcHMubGVuZ3RoID4gMSAmJiBjdXJyZW50SWR4ICE9IHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IHJlbWFpbmluZ05hdlByb3BzW2N1cnJlbnRJZHhdO1xuXHRcdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IHJlbWFpbmluZ05hdlByb3BzW2N1cnJlbnRJZHggKyAxXTtcblx0XHRcdFx0aWYgKGN1cnJlbnROYXYucGFydG5lciA9PT0gbmV4dE5hdlByb3AubmFtZSkge1xuXHRcdFx0XHRcdHJlbWFpbmluZ05hdlByb3BzLnNwbGljZSgwLCAyKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJyZW50SWR4Kys7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiByZW1haW5pbmdOYXZQcm9wcztcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IGV4dHJhTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5W10gPSBbXTtcblx0XHRcdHZpc2l0ZWROYXZQcm9wcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXNbbmF2SW5kZXhdICE9PSBuYXZQcm9wKSB7XG5cdFx0XHRcdFx0ZXh0cmFOYXZQcm9wLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLmNvbmNhdChjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5zbGljZSh2aXNpdGVkTmF2UHJvcHMubGVuZ3RoKSk7XG5cdFx0XHQvLyBDbGVhbiB1cCBOYXZQcm9wIC0+IE93bmVyXG5cdFx0XHRsZXQgY3VycmVudElkeCA9IDA7XG5cdFx0XHR3aGlsZSAoZXh0cmFOYXZQcm9wLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSBleHRyYU5hdlByb3AubGVuZ3RoIC0gMSkge1xuXHRcdFx0XHRjb25zdCBjdXJyZW50TmF2ID0gZXh0cmFOYXZQcm9wW2N1cnJlbnRJZHhdO1xuXHRcdFx0XHRjb25zdCBuZXh0TmF2UHJvcCA9IGV4dHJhTmF2UHJvcFtjdXJyZW50SWR4ICsgMV07XG5cdFx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0XHRleHRyYU5hdlByb3Auc3BsaWNlKDAsIDIpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGN1cnJlbnRJZHgrKztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZXh0cmFOYXZQcm9wID0gZXh0cmFOYXZQcm9wLm1hcChuYXZQcm9wID0+IHtcblx0XHRcdFx0cmV0dXJuIG5hdlByb3AudGFyZ2V0VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKG5wID0+IG5wLm5hbWUgPT09IG5hdlByb3AucGFydG5lcikgYXMgTmF2aWdhdGlvblByb3BlcnR5O1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gZXh0cmFOYXZQcm9wO1xuXHRcdH1cblx0fVxufTtcblxuZXhwb3J0IGNvbnN0IGVuaGFuY2VEYXRhTW9kZWxQYXRoID0gZnVuY3Rpb24oXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGxldCBzUHJvcGVydHlQYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRpZiAoKGlzUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSB8fCBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpKSAmJiBwcm9wZXJ0eVBhdGgucGF0aCkge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGgucGF0aDtcblx0fSBlbHNlIGlmICh0eXBlb2YgcHJvcGVydHlQYXRoID09PSBcInN0cmluZ1wiKSB7XG5cdFx0c1Byb3BlcnR5UGF0aCA9IHByb3BlcnR5UGF0aCBhcyBzdHJpbmc7XG5cdH1cblx0bGV0IG9UYXJnZXQ7XG5cdGlmIChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkge1xuXHRcdG9UYXJnZXQgPSBwcm9wZXJ0eVBhdGguJHRhcmdldDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlLnJlc29sdmVQYXRoKHNQcm9wZXJ0eVBhdGgpO1xuXHR9IGVsc2Uge1xuXHRcdG9UYXJnZXQgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0fVxuXHRjb25zdCBhUGF0aFNwbGl0ID0gc1Byb3BlcnR5UGF0aC5zcGxpdChcIi9cIik7XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlTZXQ7XG5cdGxldCBjdXJyZW50RW50aXR5VHlwZSA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0Y29uc3QgbmF2aWdhdGlvblByb3BlcnRpZXMgPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmNvbmNhdCgpO1xuXHQvLyBQcm9jZXNzIG9ubHkgaWYgd2UgaGF2ZSB0byBnbyB0aHJvdWdoIG5hdmlnYXRpb24gcHJvcGVydGllc1xuXG5cdGFQYXRoU3BsaXQucmVkdWNlKChyZWR1Y2VkRW50aXR5VHlwZTogRW50aXR5VHlwZSB8IHVuZGVmaW5lZCwgcGF0aFBhcnQ6IHN0cmluZykgPT4ge1xuXHRcdGlmICghcmVkdWNlZEVudGl0eVR5cGUpIHtcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBvdGVudGlhbE5hdlByb3AgPSByZWR1Y2VkRW50aXR5VHlwZS5uYXZpZ2F0aW9uUHJvcGVydGllcy5maW5kKG5hdlByb3AgPT4gbmF2UHJvcC5uYW1lID09PSBwYXRoUGFydCk7XG5cdFx0aWYgKHBvdGVudGlhbE5hdlByb3ApIHtcblx0XHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzLnB1c2gocG90ZW50aWFsTmF2UHJvcCk7XG5cdFx0XHRjdXJyZW50RW50aXR5VHlwZSA9IHBvdGVudGlhbE5hdlByb3AudGFyZ2V0VHlwZTtcblx0XHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShwYXRoUGFydCkpIHtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1twYXRoUGFydF07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gY3VycmVudEVudGl0eVR5cGU7XG5cdFx0fVxuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH0sIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZSk7XG5cblx0cmV0dXJuIHtcblx0XHRzdGFydGluZ0VudGl0eVNldDogZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogbmF2aWdhdGlvblByb3BlcnRpZXMsXG5cdFx0Y29udGV4dExvY2F0aW9uOiBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbixcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGN1cnJlbnRFbnRpdHlTZXQsXG5cdFx0dGFyZ2V0RW50aXR5VHlwZTogY3VycmVudEVudGl0eVR5cGUsXG5cdFx0dGFyZ2V0T2JqZWN0OiBvVGFyZ2V0XG5cdH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCA9IGZ1bmN0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0UGF0aDogc3RyaW5nID0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBuYXZpZ2F0ZWRQYXRoczogc3RyaW5nW10gPSBbXTtcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKG5hdlByb3AgPT4ge1xuXHRcdG5hdmlnYXRlZFBhdGhzLnB1c2gobmF2UHJvcC5uYW1lKTtcblx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkobmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIikpKSB7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXRQYXRoICs9IGAvJE5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcvJHtuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKX0vJGA7XG5cdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW25hdmlnYXRlZFBhdGhzLmpvaW4oXCIvXCIpXTtcblx0XHRcdG5hdmlnYXRlZFBhdGhzID0gW107XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHRhcmdldEVudGl0eVNldFBhdGg7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIGJSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBcIlwiO1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gXCIvXCI7XG5cdH1cblx0aWYgKCFiUmVsYXRpdmUpIHtcblx0XHRwYXRoICs9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0fVxuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChuYXZQcm9wID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cdH1cblxuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRpZiAoIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuZmluZChucCA9PiBucC5pc0NvbGxlY3Rpb24pKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRsZXQgcGF0aCA9IG5hdlByb3BlcnRpZXMubWFwKG5wID0+IG5wLm5hbWUpLmpvaW4oXCIvXCIpO1xuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZSB8fFxuXHRcdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCIgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWUpKSAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXRcblx0KSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCAmJiAhcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz1cblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdFx0PyBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC52YWx1ZX1gXG5cdFx0XHRcdDogYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdFx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwicXVhbGlmaWVyXCIpICYmICEhZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyKSB7XG5cdFx0XHRwYXRoICs9IGAjJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXJ9YDtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhVcGRhdGFibGUgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRiVGFibGVDYXNlPzogYm9vbGVhblxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5VcGRhdGVSZXN0cmljdGlvbnM/LlVwZGF0YWJsZTtcblx0XHR9LFxuXHRcdHByb3BlcnR5UGF0aCxcblx0XHRiVGFibGVDYXNlXG5cdCk7XG59O1xuZXhwb3J0IGNvbnN0IGlzUGF0aERlbGV0YWJsZSA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdGJUYWJsZUNhc2U/OiBib29sZWFuXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0cmV0dXJuIGFubm90YXRpb25PYmplY3Q/LkRlbGV0ZVJlc3RyaWN0aW9ucz8uRGVsZXRhYmxlO1xuXHRcdH0sXG5cdFx0cHJvcGVydHlQYXRoLFxuXHRcdGJUYWJsZUNhc2Vcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhJbnNlcnRhYmxlID0gZnVuY3Rpb24oXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggfCB1bmRlZmluZWQsXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5PlxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5JbnNlcnRSZXN0cmljdGlvbnM/Lkluc2VydGFibGU7XG5cdFx0fSxcblx0XHRwcm9wZXJ0eVBhdGhcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0ZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0YWxsb3dlZEV4cHJlc3Npb246IChzdHJpbmcgfCB1bmRlZmluZWQpW11cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCBFbnRpdHlUeXBlQW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRpZiAoYW5ub3RhdGlvbk9iamVjdCAmJiBcIkZpbHRlclJlc3RyaWN0aW9uc1wiIGluIGFubm90YXRpb25PYmplY3QpIHtcblx0XHRcdFx0Y29uc3QgZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uczogRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10gPVxuXHRcdFx0XHRcdChhbm5vdGF0aW9uT2JqZWN0Py5GaWx0ZXJSZXN0cmljdGlvbnM/LkZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnMgYXMgRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9uVHlwZVR5cGVzW10pIHx8IFtdO1xuXHRcdFx0XHRjb25zdCBjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24gPSBmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zLmZpbmQocmVzdHJpY3Rpb24gPT4ge1xuXHRcdFx0XHRcdHJldHVybiAocmVzdHJpY3Rpb24uUHJvcGVydHkgYXMgUHJvcGVydHlQYXRoKS4kdGFyZ2V0ID09PSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdDtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmIChjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gYWxsb3dlZEV4cHJlc3Npb24uaW5kZXhPZihjdXJyZW50T2JqZWN0UmVzdHJpY3Rpb24/LkFsbG93ZWRFeHByZXNzaW9ucz8udG9TdHJpbmcoKSkgIT09IC0xO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja09uUGF0aCA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRjaGVja0Z1bmN0aW9uOiBGdW5jdGlvbixcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRiVGFibGVDYXNlPzogYm9vbGVhblxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdGlmICghZGF0YU1vZGVsT2JqZWN0UGF0aCB8fCAhZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldCkge1xuXHRcdHJldHVybiBjb25zdGFudCh0cnVlKTtcblx0fVxuXHRkYXRhTW9kZWxPYmplY3RQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGgoZGF0YU1vZGVsT2JqZWN0UGF0aCwgcHJvcGVydHlQYXRoKTtcblxuXHRsZXQgY3VycmVudEVudGl0eVNldDogRW50aXR5U2V0IHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQ7XG5cdGxldCBwYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBudWxsO1xuXHRsZXQgdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWU6IHN0cmluZ1tdID0gW107XG5cdGNvbnN0IGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGxldCB0YXJnZXRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRjb25zdCB0YXJnZXRFbnRpdHlUeXBlOiBFbnRpdHlUeXBlIHwgbnVsbCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZTtcblx0bGV0IHJlc2V0VmlzaXRlZE5hdlByb3BzID0gZmFsc2U7XG5cblx0ZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSkgPT4ge1xuXHRcdGlmIChyZXNldFZpc2l0ZWROYXZQcm9wcykge1xuXHRcdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUgPSBbXTtcblx0XHR9XG5cdFx0dmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkubmFtZSk7XG5cdFx0YWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5wdXNoKG5hdmlnYXRpb25Qcm9wZXJ0eSk7XG5cdFx0aWYgKCFuYXZpZ2F0aW9uUHJvcGVydHkuY29udGFpbnNUYXJnZXQpIHtcblx0XHRcdC8vIFdlIHNob3VsZCBoYXZlIGEgbmF2aWdhdGlvblByb3BlcnR5QmluZGluZyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhdGggc28gZmFyIHdoaWNoIGNhbiBjb25zaXN0IG9mIChbQ29udGFpbm1lbnROYXZQcm9wXS8pKltOYXZQcm9wXVxuXHRcdFx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdFx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkoZnVsbE5hdmlnYXRpb25QYXRoKSkge1xuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nW2Z1bGxOYXZpZ2F0aW9uUGF0aF07XG5cdFx0XHRcdHRhcmdldEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdC8vIElmIHdlIHJlYWNoZWQgYSBuYXZpZ2F0aW9uIHByb3BlcnR5IHdpdGggYSBuYXZpZ2F0aW9ucHJvcGVydHliaW5kaW5nLCB3ZSBuZWVkIHRvIHJlc2V0IHRoZSB2aXNpdGVkIHBhdGggb24gdGhlIG5leHQgaXRlcmF0aW9uIChpZiB0aGVyZSBpcyBvbmUpXG5cdFx0XHRcdHJlc2V0VmlzaXRlZE5hdlByb3BzID0gdHJ1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdC8vIFdlIHJlYWxseSBzaG91bGQgbm90IGVuZCB1cCBoZXJlIGJ1dCBhdCBsZWFzdCBsZXQncyB0cnkgdG8gYXZvaWQgaW5jb3JyZWN0IGJlaGF2aW9yXG5cdFx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhcmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQ7XG5cdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBudWxsO1xuXHRcdH1cblx0fSk7XG5cblx0Ly8gQXQgdGhpcyBwb2ludCB3ZSBoYXZlIG5hdmlnYXRlZCBkb3duIGFsbCB0aGUgbmF2IHByb3AgYW5kIHdlIHNob3VsZCBoYXZlXG5cdC8vIFRoZSB0YXJnZXQgZW50aXR5c2V0IHBvaW50aW5nIHRvIGVpdGhlciBudWxsIChpbiBjYXNlIG9mIGNvbnRhaW5tZW50IG5hdnByb3AgYSBsYXN0IHBhcnQpLCBvciB0aGUgYWN0dWFsIHRhcmdldCAobm9uIGNvbnRhaW5tZW50IGFzIHRhcmdldClcblx0Ly8gVGhlIHBhcmVudCBlbnRpdHlTZXQgcG9pbnRpbmcgdG8gdGhlIHByZXZpb3VzIGVudGl0eXNldCB1c2VkIGluIHRoZSBwYXRoXG5cdC8vIFZpc2l0ZWROYXZpZ2F0aW9uUGF0aCBzaG91bGQgY29udGFpbiB0aGUgcGF0aCB1cCB0byB0aGlzIHByb3BlcnR5XG5cblx0Ly8gUmVzdHJpY3Rpb25zIHNob3VsZCB0aGVuIGJlIGV2YWx1YXRlZCBhcyBQYXJlbnRFbnRpdHlTZXQuTmF2UmVzdHJpY3Rpb25zW05hdnByb3BlcnR5UGF0aF0gfHwgVGFyZ2V0RW50aXR5U2V0LlJlc3RyaWN0aW9uc1xuXHRjb25zdCBmdWxsTmF2aWdhdGlvblBhdGggPSB2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZS5qb2luKFwiL1wiKTtcblx0bGV0IHJlc3RyaWN0aW9ucywgdmlzaXRlZE5hdlByb3BzO1xuXHRpZiAocGFyZW50RW50aXR5U2V0ICE9PSBudWxsKSB7XG5cdFx0Y29uc3QgX3BhcmVudEVudGl0eVNldDogRW50aXR5U2V0ID0gcGFyZW50RW50aXR5U2V0O1xuXHRcdF9wYXJlbnRFbnRpdHlTZXQuYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcz8uTmF2aWdhdGlvblJlc3RyaWN0aW9ucz8uUmVzdHJpY3RlZFByb3BlcnRpZXMuZm9yRWFjaChcblx0XHRcdChyZXN0cmljdGVkTmF2UHJvcDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcykgPT4ge1xuXHRcdFx0XHRpZiAocmVzdHJpY3RlZE5hdlByb3AuTmF2aWdhdGlvblByb3BlcnR5Py50eXBlID09PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVBhdGhcIikge1xuXHRcdFx0XHRcdGNvbnN0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24ocmVzdHJpY3RlZE5hdlByb3ApO1xuXHRcdFx0XHRcdGlmIChmdWxsTmF2aWdhdGlvblBhdGggPT09IHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eS52YWx1ZSAmJiByZXN0cmljdGlvbkRlZmluaXRpb24gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0Y29uc3QgX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMgPSBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLnNsaWNlKDAsIC0xKTtcblx0XHRcdFx0XHRcdGlmICh0YXJnZXRFbnRpdHlTZXQgIT09IG51bGwpIHtcblx0XHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRpZiAoX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR2aXNpdGVkTmF2UHJvcHMgPSBfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmVzdHJpY3Rpb25zID0gZXF1YWwoXG5cdFx0XHRcdFx0XHRcdGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHRcdFx0XHRcdHJlc3RyaWN0aW9uRGVmaW5pdGlvbixcblx0XHRcdFx0XHRcdFx0XHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoPy5jb250ZXh0TG9jYXRpb24sIHZpc2l0ZWROYXZQcm9wcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXHRsZXQgdGFyZ2V0UmVzdHJpY3Rpb25zO1xuXHRsZXQgcmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXMpO1xuXHRpZiAodGFyZ2V0RW50aXR5U2V0ID09PSBudWxsICYmIHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0cmVzdHJpY3Rpb25EZWZpbml0aW9uID0gY2hlY2tGdW5jdGlvbih0YXJnZXRFbnRpdHlUeXBlPy5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0fVxuXHRpZiAocmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHR0YXJnZXRSZXN0cmljdGlvbnMgPSBlcXVhbChcblx0XHRcdGFubm90YXRpb25FeHByZXNzaW9uKFxuXHRcdFx0XHRyZXN0cmljdGlvbkRlZmluaXRpb24sXG5cdFx0XHRcdGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzKS5tYXAobnAgPT4gbnAubmFtZSlcblx0XHRcdCksXG5cdFx0XHR0cnVlXG5cdFx0KTtcblx0fVxuXHQvL29iamVjdCBwYWdlIHRhYmxlIGNhc2UgaW4gcGF0aCBiYXNlZCBzY2VuYXJpbydzIGZhbGxiYWNrIHRvIGV4aXNpdGluZyBhcHByb2FjaFxuXHRpZiAoYlRhYmxlQ2FzZSAmJiAhcmVzdHJpY3Rpb25zICYmIHJlc3RyaWN0aW9uRGVmaW5pdGlvbj8ucGF0aCkge1xuXHRcdGNvbnN0IG9SZXN1bHQ6IGFueSA9IHtcblx0XHRcdFwiY3VycmVudEVudGl0eVJlc3RyaWN0aW9uXCI6IHRhcmdldFJlc3RyaWN0aW9uc1xuXHRcdH07XG5cdFx0cmV0dXJuIG9SZXN1bHQ7XG5cdH1cblx0cmV0dXJuIHJlc3RyaWN0aW9ucyB8fCB0YXJnZXRSZXN0cmljdGlvbnMgfHwgY29uc3RhbnQodHJ1ZSk7XG59O1xuIl19
453
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFNb2RlbFBhdGhIZWxwZXIudHMiXSwibmFtZXMiOlsiZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24iLCJjb250ZXh0UGF0aCIsInZpc2l0ZWROYXZQcm9wcyIsImxlbmd0aCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwicmVtYWluaW5nTmF2UHJvcHMiLCJmb3JFYWNoIiwibmF2UHJvcCIsIm5hdkluZGV4IiwicHVzaCIsImNvbmNhdCIsInNsaWNlIiwiY3VycmVudElkeCIsImN1cnJlbnROYXYiLCJuZXh0TmF2UHJvcCIsInBhcnRuZXIiLCJuYW1lIiwic3BsaWNlIiwiZXh0cmFOYXZQcm9wIiwibWFwIiwidGFyZ2V0VHlwZSIsImZpbmQiLCJucCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZGF0YU1vZGVsT2JqZWN0UGF0aCIsInByb3BlcnR5UGF0aCIsInNQcm9wZXJ0eVBhdGgiLCJpc1BhdGhFeHByZXNzaW9uIiwiaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24iLCJwYXRoIiwib1RhcmdldCIsIiR0YXJnZXQiLCJ0YXJnZXRFbnRpdHlUeXBlIiwicmVzb2x2ZVBhdGgiLCJ0YXJnZXRPYmplY3QiLCJhUGF0aFNwbGl0Iiwic3BsaXQiLCJjdXJyZW50RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5U2V0IiwiY3VycmVudEVudGl0eVR5cGUiLCJyZWR1Y2UiLCJyZWR1Y2VkRW50aXR5VHlwZSIsInBhdGhQYXJ0IiwidW5kZWZpbmVkIiwicG90ZW50aWFsTmF2UHJvcCIsIm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmciLCJoYXNPd25Qcm9wZXJ0eSIsInN0YXJ0aW5nRW50aXR5U2V0IiwiY29udGV4dExvY2F0aW9uIiwiZ2V0VGFyZ2V0RW50aXR5U2V0UGF0aCIsImJSZWxhdGl2ZSIsInRhcmdldEVudGl0eVNldFBhdGgiLCJuYXZpZ2F0ZWRQYXRocyIsInNvbWUiLCJjb250ZXh0TmF2UHJvcCIsImZ1bGx5UXVhbGlmaWVkTmFtZSIsImpvaW4iLCJnZXRUYXJnZXRFbnRpdHlTZXROYXZpZ2F0aW9uIiwidmlzaXRlZE5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsIl90eXBlIiwiZW5kc1dpdGgiLCJ0ZXJtIiwiZ2V0Q29udGV4dFJlbGF0aXZlVGFyZ2V0T2JqZWN0UGF0aCIsImZvckJpbmRpbmdFeHByZXNzaW9uIiwibmF2UHJvcGVydGllcyIsImlzQ29sbGVjdGlvbiIsInR5cGUiLCJ2YWx1ZSIsInF1YWxpZmllciIsImlzUGF0aFVwZGF0YWJsZSIsImJUYWJsZUNhc2UiLCJjaGVja09uUGF0aCIsImFubm90YXRpb25PYmplY3QiLCJVcGRhdGVSZXN0cmljdGlvbnMiLCJVcGRhdGFibGUiLCJpc1BhdGhTZWFyY2hhYmxlIiwiU2VhcmNoUmVzdHJpY3Rpb25zIiwiU2VhcmNoYWJsZSIsImlzUGF0aERlbGV0YWJsZSIsIkRlbGV0ZVJlc3RyaWN0aW9ucyIsIkRlbGV0YWJsZSIsImlzUGF0aEluc2VydGFibGUiLCJJbnNlcnRSZXN0cmljdGlvbnMiLCJJbnNlcnRhYmxlIiwiY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiYWxsb3dlZEV4cHJlc3Npb24iLCJmaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIiwiRmlsdGVyUmVzdHJpY3Rpb25zIiwiRmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucyIsImN1cnJlbnRPYmplY3RSZXN0cmljdGlvbiIsInJlc3RyaWN0aW9uIiwiUHJvcGVydHkiLCJpbmRleE9mIiwiQWxsb3dlZEV4cHJlc3Npb25zIiwidG9TdHJpbmciLCJjaGVja0Z1bmN0aW9uIiwiY29uc3RhbnQiLCJwYXJlbnRFbnRpdHlTZXQiLCJ2aXNpdGVkTmF2aWdhdGlvblByb3BzTmFtZSIsImFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMiLCJyZXNldFZpc2l0ZWROYXZQcm9wcyIsIm5hdmlnYXRpb25Qcm9wZXJ0eSIsImNvbnRhaW5zVGFyZ2V0IiwiZnVsbE5hdmlnYXRpb25QYXRoIiwicmVzdHJpY3Rpb25zIiwiX3BhcmVudEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ2FwYWJpbGl0aWVzIiwiTmF2aWdhdGlvblJlc3RyaWN0aW9ucyIsIlJlc3RyaWN0ZWRQcm9wZXJ0aWVzIiwicmVzdHJpY3RlZE5hdlByb3AiLCJOYXZpZ2F0aW9uUHJvcGVydHkiLCJyZXN0cmljdGlvbkRlZmluaXRpb24iLCJfYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcyIsImVxdWFsIiwiYW5ub3RhdGlvbkV4cHJlc3Npb24iLCJ0YXJnZXRSZXN0cmljdGlvbnMiLCJvUmVzdWx0Il0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQXNCTyxNQUFNQSx1QkFBdUIsR0FBRyxVQUN0Q0MsV0FEc0MsRUFHZjtBQUFBLFFBRHZCQyxlQUN1Qix1RUFEaUIsRUFDakI7O0FBQ3ZCLFFBQUksQ0FBQ0QsV0FBTCxFQUFrQjtBQUNqQixhQUFPQyxlQUFQO0FBQ0EsS0FGRCxNQUVPO0FBQ04sVUFBSUEsZUFBZSxDQUFDQyxNQUFoQixJQUEwQkYsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0QsTUFBL0QsRUFBdUU7QUFDdEUsWUFBSUUsaUJBQXVDLEdBQUcsRUFBOUM7QUFDQUosUUFBQUEsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0UsT0FBakMsQ0FBeUMsVUFBQ0MsT0FBRCxFQUFVQyxRQUFWLEVBQXVCO0FBQy9ELGNBQUlOLGVBQWUsQ0FBQ00sUUFBRCxDQUFmLEtBQThCRCxPQUFsQyxFQUEyQztBQUMxQ0YsWUFBQUEsaUJBQWlCLENBQUNJLElBQWxCLENBQXVCUCxlQUFlLENBQUNNLFFBQUQsQ0FBdEM7QUFDQTtBQUNELFNBSkQ7QUFLQUgsUUFBQUEsaUJBQWlCLEdBQUdBLGlCQUFpQixDQUFDSyxNQUFsQixDQUF5QlIsZUFBZSxDQUFDUyxLQUFoQixDQUFzQlYsV0FBVyxDQUFDRyxvQkFBWixDQUFpQ0QsTUFBdkQsQ0FBekIsQ0FBcEIsQ0FQc0UsQ0FRdEU7O0FBQ0EsWUFBSVMsVUFBVSxHQUFHLENBQWpCOztBQUNB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OztBQUNELFdBQU9iLFlBQVksSUFBSVksa0JBQWhCLElBQXNDcEIsUUFBUSxDQUFDLElBQUQsQ0FBckQ7QUFDQSxHQXpHTSIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U2V0LCBFbnRpdHlUeXBlLCBOYXZpZ2F0aW9uUHJvcGVydHksIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvYW5ub3RhdGlvbi1jb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGFubm90YXRpb25FeHByZXNzaW9uLCBjb25zdGFudCwgZXF1YWwsIEV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9CaW5kaW5nRXhwcmVzc2lvblwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb25UeXBlcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy9kaXN0L2dlbmVyYXRlZC9DYXBhYmlsaXRpZXNcIjtcbmltcG9ydCB7IFByb3BlcnR5T3JQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvVUlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgeyBpc0Fubm90YXRpb25QYXRoRXhwcmVzc2lvbiwgaXNQYXRoRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQge1xuXHRGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25UeXBlVHlwZXMsXG5cdE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uXG59IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy90eXBlcy9nZW5lcmF0ZWQvQ2FwYWJpbGl0aWVzXCI7XG5pbXBvcnQge1xuXHRFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMsXG5cdEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXNcbn0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL2Rpc3QvZ2VuZXJhdGVkL0NhcGFiaWxpdGllc19FZG1cIjtcbmltcG9ydCB7IFByb3BlcnR5UGF0aCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBEYXRhTW9kZWxPYmplY3RQYXRoID0ge1xuXHRzdGFydGluZ0VudGl0eVNldDogRW50aXR5U2V0O1xuXHRjb250ZXh0TG9jYXRpb24/OiBEYXRhTW9kZWxPYmplY3RQYXRoO1xuXHRuYXZpZ2F0aW9uUHJvcGVydGllczogTmF2aWdhdGlvblByb3BlcnR5W107XG5cdHRhcmdldEVudGl0eVNldD86IEVudGl0eVNldDtcblx0dGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZTtcblx0dGFyZ2V0T2JqZWN0OiBhbnk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGF0aFJlbGF0aXZlTG9jYXRpb24gPSBmdW5jdGlvbihcblx0Y29udGV4dFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHR2aXNpdGVkTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW11cbik6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdIHtcblx0aWYgKCFjb250ZXh0UGF0aCkge1xuXHRcdHJldHVybiB2aXNpdGVkTmF2UHJvcHM7XG5cdH0gZWxzZSB7XG5cdFx0aWYgKHZpc2l0ZWROYXZQcm9wcy5sZW5ndGggPj0gY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMubGVuZ3RoKSB7XG5cdFx0XHRsZXQgcmVtYWluaW5nTmF2UHJvcHM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdFx0XHRjb250ZXh0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5mb3JFYWNoKChuYXZQcm9wLCBuYXZJbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAodmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRcdHJlbWFpbmluZ05hdlByb3BzLnB1c2godmlzaXRlZE5hdlByb3BzW25hdkluZGV4XSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0cmVtYWluaW5nTmF2UHJvcHMgPSByZW1haW5pbmdOYXZQcm9wcy5jb25jYXQodmlzaXRlZE5hdlByb3BzLnNsaWNlKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmxlbmd0aCkpO1xuXHRcdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdFx0d2hpbGUgKHJlbWFpbmluZ05hdlByb3BzLmxlbmd0aCA+IDEgJiYgY3VycmVudElkeCAhPSByZW1haW5pbmdOYXZQcm9wcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnROYXYgPSByZW1haW5pbmdOYXZQcm9wc1tjdXJyZW50SWR4XTtcblx0XHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSByZW1haW5pbmdOYXZQcm9wc1tjdXJyZW50SWR4ICsgMV07XG5cdFx0XHRcdGlmIChjdXJyZW50TmF2LnBhcnRuZXIgPT09IG5leHROYXZQcm9wLm5hbWUpIHtcblx0XHRcdFx0XHRyZW1haW5pbmdOYXZQcm9wcy5zcGxpY2UoMCwgMik7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y3VycmVudElkeCsrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gcmVtYWluaW5nTmF2UHJvcHM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBleHRyYU5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdFx0XHR2aXNpdGVkTmF2UHJvcHMuZm9yRWFjaCgobmF2UHJvcCwgbmF2SW5kZXgpID0+IHtcblx0XHRcdFx0aWYgKGNvbnRleHRQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzW25hdkluZGV4XSAhPT0gbmF2UHJvcCkge1xuXHRcdFx0XHRcdGV4dHJhTmF2UHJvcC5wdXNoKHZpc2l0ZWROYXZQcm9wc1tuYXZJbmRleF0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGV4dHJhTmF2UHJvcCA9IGV4dHJhTmF2UHJvcC5jb25jYXQoY29udGV4dFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuc2xpY2UodmlzaXRlZE5hdlByb3BzLmxlbmd0aCkpO1xuXHRcdFx0Ly8gQ2xlYW4gdXAgTmF2UHJvcCAtPiBPd25lclxuXHRcdFx0bGV0IGN1cnJlbnRJZHggPSAwO1xuXHRcdFx0d2hpbGUgKGV4dHJhTmF2UHJvcC5sZW5ndGggPiAxICYmIGN1cnJlbnRJZHggIT0gZXh0cmFOYXZQcm9wLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0Y29uc3QgY3VycmVudE5hdiA9IGV4dHJhTmF2UHJvcFtjdXJyZW50SWR4XTtcblx0XHRcdFx0Y29uc3QgbmV4dE5hdlByb3AgPSBleHRyYU5hdlByb3BbY3VycmVudElkeCArIDFdO1xuXHRcdFx0XHRpZiAoY3VycmVudE5hdi5wYXJ0bmVyID09PSBuZXh0TmF2UHJvcC5uYW1lKSB7XG5cdFx0XHRcdFx0ZXh0cmFOYXZQcm9wLnNwbGljZSgwLCAyKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjdXJyZW50SWR4Kys7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGV4dHJhTmF2UHJvcCA9IGV4dHJhTmF2UHJvcC5tYXAobmF2UHJvcCA9PiB7XG5cdFx0XHRcdHJldHVybiBuYXZQcm9wLnRhcmdldFR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZChucCA9PiBucC5uYW1lID09PSBuYXZQcm9wLnBhcnRuZXIpIGFzIE5hdmlnYXRpb25Qcm9wZXJ0eTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGV4dHJhTmF2UHJvcDtcblx0XHR9XG5cdH1cbn07XG5cbmV4cG9ydCBjb25zdCBlbmhhbmNlRGF0YU1vZGVsUGF0aCA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT5cbik6IERhdGFNb2RlbE9iamVjdFBhdGgge1xuXHRsZXQgc1Byb3BlcnR5UGF0aDogc3RyaW5nID0gXCJcIjtcblx0aWYgKChpc1BhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkgfHwgaXNBbm5vdGF0aW9uUGF0aEV4cHJlc3Npb24ocHJvcGVydHlQYXRoKSkgJiYgcHJvcGVydHlQYXRoLnBhdGgpIHtcblx0XHRzUHJvcGVydHlQYXRoID0gcHJvcGVydHlQYXRoLnBhdGg7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHByb3BlcnR5UGF0aCA9PT0gXCJzdHJpbmdcIikge1xuXHRcdHNQcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGggYXMgc3RyaW5nO1xuXHR9XG5cdGxldCBvVGFyZ2V0O1xuXHRpZiAoaXNQYXRoRXhwcmVzc2lvbihwcm9wZXJ0eVBhdGgpIHx8IGlzQW5ub3RhdGlvblBhdGhFeHByZXNzaW9uKHByb3BlcnR5UGF0aCkpIHtcblx0XHRvVGFyZ2V0ID0gcHJvcGVydHlQYXRoLiR0YXJnZXQ7XG5cdH0gZWxzZSBpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRFbnRpdHlUeXBlKSB7XG5cdFx0b1RhcmdldCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5VHlwZS5yZXNvbHZlUGF0aChzUHJvcGVydHlQYXRoKTtcblx0fSBlbHNlIHtcblx0XHRvVGFyZ2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdH1cblx0Y29uc3QgYVBhdGhTcGxpdCA9IHNQcm9wZXJ0eVBhdGguc3BsaXQoXCIvXCIpO1xuXHRsZXQgY3VycmVudEVudGl0eVNldCA9IGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0RW50aXR5U2V0O1xuXHRsZXQgY3VycmVudEVudGl0eVR5cGUgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGNvbnN0IG5hdmlnYXRpb25Qcm9wZXJ0aWVzID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5jb25jYXQoKTtcblx0Ly8gUHJvY2VzcyBvbmx5IGlmIHdlIGhhdmUgdG8gZ28gdGhyb3VnaCBuYXZpZ2F0aW9uIHByb3BlcnRpZXNcblxuXHRhUGF0aFNwbGl0LnJlZHVjZSgocmVkdWNlZEVudGl0eVR5cGU6IEVudGl0eVR5cGUgfCB1bmRlZmluZWQsIHBhdGhQYXJ0OiBzdHJpbmcpID0+IHtcblx0XHRpZiAoIXJlZHVjZWRFbnRpdHlUeXBlKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0XHRjb25zdCBwb3RlbnRpYWxOYXZQcm9wID0gcmVkdWNlZEVudGl0eVR5cGUubmF2aWdhdGlvblByb3BlcnRpZXMuZmluZChuYXZQcm9wID0+IG5hdlByb3AubmFtZSA9PT0gcGF0aFBhcnQpO1xuXHRcdGlmIChwb3RlbnRpYWxOYXZQcm9wKSB7XG5cdFx0XHRuYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKHBvdGVudGlhbE5hdlByb3ApO1xuXHRcdFx0Y3VycmVudEVudGl0eVR5cGUgPSBwb3RlbnRpYWxOYXZQcm9wLnRhcmdldFR5cGU7XG5cdFx0XHRpZiAoY3VycmVudEVudGl0eVNldCAmJiBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcuaGFzT3duUHJvcGVydHkocGF0aFBhcnQpKSB7XG5cdFx0XHRcdGN1cnJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0Lm5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmdbcGF0aFBhcnRdO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGN1cnJlbnRFbnRpdHlUeXBlO1xuXHRcdH1cblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9LCBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGUpO1xuXG5cdHJldHVybiB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQsXG5cdFx0bmF2aWdhdGlvblByb3BlcnRpZXM6IG5hdmlnYXRpb25Qcm9wZXJ0aWVzLFxuXHRcdGNvbnRleHRMb2NhdGlvbjogZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24sXG5cdFx0dGFyZ2V0RW50aXR5U2V0OiBjdXJyZW50RW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGN1cnJlbnRFbnRpdHlUeXBlLFxuXHRcdHRhcmdldE9iamVjdDogb1RhcmdldFxuXHR9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldEVudGl0eVNldFBhdGggPSBmdW5jdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoLCBiUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG5cdGxldCB0YXJnZXRFbnRpdHlTZXRQYXRoOiBzdHJpbmcgPSBcIlwiO1xuXHRpZiAoIWJSZWxhdGl2ZSkge1xuXHRcdHRhcmdldEVudGl0eVNldFBhdGggKz0gYC8ke2RhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQubmFtZX1gO1xuXHR9XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID1cblx0XHRiUmVsYXRpdmUgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC5jb250ZXh0TG9jYXRpb24/LnRhcmdldEVudGl0eVNldFxuXHRcdFx0PyBkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbi50YXJnZXRFbnRpdHlTZXRcblx0XHRcdDogZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0bGV0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gobmF2UHJvcCA9PiB7XG5cdFx0aWYgKFxuXHRcdFx0IWJSZWxhdGl2ZSB8fFxuXHRcdFx0IWRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uIHx8XG5cdFx0XHRcdCFkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbj8ubmF2aWdhdGlvblByb3BlcnRpZXMuc29tZShcblx0XHRcdFx0XHRjb250ZXh0TmF2UHJvcCA9PiBjb250ZXh0TmF2UHJvcC5mdWxseVF1YWxpZmllZE5hbWUgPT09IG5hdlByb3AuZnVsbHlRdWFsaWZpZWROYW1lXG5cdFx0XHRcdClcblx0XHQpIHtcblx0XHRcdC8vIGluIGNhc2Ugb2YgcmVsYXRpdmUgZW50aXR5U2V0UGF0aCB3ZSBkb24ndCBjb25zaWRlciBuYXZpZ2F0aW9uUGF0aCB0aGF0IGFyZSBhbHJlYWR5IGluIHRoZSBjb250ZXh0XG5cdFx0XHRuYXZpZ2F0ZWRQYXRocy5wdXNoKG5hdlByb3AubmFtZSk7XG5cdFx0fVxuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdGlmIChiUmVsYXRpdmUpIHtcblx0XHRcdFx0dGFyZ2V0RW50aXR5U2V0UGF0aCArPSBgJHtuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGFyZ2V0RW50aXR5U2V0UGF0aCArPSBgLyROYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLyR7bmF2aWdhdGVkUGF0aHMuam9pbihcIi9cIil9LyRgO1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKV07XG5cdFx0XHRuYXZpZ2F0ZWRQYXRocyA9IFtdO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiB0YXJnZXRFbnRpdHlTZXRQYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRhcmdldEVudGl0eVNldE5hdmlnYXRpb24gPSBmdW5jdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoKTogTmF2aWdhdGlvblByb3BlcnR5W10ge1xuXHRjb25zdCB2aXNpdGVkTmF2aWdhdGlvblByb3BlcnRpZXM6IE5hdmlnYXRpb25Qcm9wZXJ0eVtdID0gW107XG5cdGxldCBjdXJyZW50RW50aXR5U2V0ID0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldDtcblx0bGV0IG5hdmlnYXRlZFBhdGhzOiBzdHJpbmdbXSA9IFtdO1xuXHRkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLmZvckVhY2gobmF2UHJvcCA9PiB7XG5cdFx0bmF2aWdhdGVkUGF0aHMucHVzaChuYXZQcm9wLm5hbWUpO1xuXHRcdGlmIChjdXJyZW50RW50aXR5U2V0ICYmIGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZy5oYXNPd25Qcm9wZXJ0eShuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKSkpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcGVydGllcy5wdXNoKG5hdlByb3ApO1xuXHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tuYXZpZ2F0ZWRQYXRocy5qb2luKFwiL1wiKV07XG5cdFx0XHRuYXZpZ2F0ZWRQYXRocyA9IFtdO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiB2aXNpdGVkTmF2aWdhdGlvblByb3BlcnRpZXM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGFyZ2V0T2JqZWN0UGF0aCA9IGZ1bmN0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsIGJSZWxhdGl2ZTogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcblx0bGV0IHBhdGggPSBcIlwiO1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gXCIvXCI7XG5cdH1cblx0aWYgKCFiUmVsYXRpdmUpIHtcblx0XHRwYXRoICs9IGAvJHtkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0Lm5hbWV9YDtcblx0fVxuXHRpZiAoZGF0YU1vZGVsT2JqZWN0UGF0aC5uYXZpZ2F0aW9uUHJvcGVydGllcy5sZW5ndGggPiAwKSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzLm1hcChuYXZQcm9wID0+IG5hdlByb3AubmFtZSkuam9pbihcIi9cIik7XG5cdH1cblxuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5uYW1lICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QuX3R5cGUgIT09IFwiTmF2aWdhdGlvblByb3BlcnR5XCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5fdHlwZSAhPT0gXCJFbnRpdHlUeXBlXCIgJiZcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAhPT0gZGF0YU1vZGVsT2JqZWN0UGF0aC5zdGFydGluZ0VudGl0eVNldFxuXHQpIHtcblx0XHRpZiAoIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGAke2RhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lm5hbWV9YDtcblx0fSBlbHNlIGlmIChkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdCAmJiBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5oYXNPd25Qcm9wZXJ0eShcInRlcm1cIikpIHtcblx0XHRpZiAocGF0aC5sZW5ndGggPiAwICYmICFwYXRoLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0cGF0aCArPSBcIi9cIjtcblx0XHR9XG5cdFx0cGF0aCArPSBgQCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudGVybX1gO1xuXHR9XG5cdHJldHVybiBwYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRleHRSZWxhdGl2ZVRhcmdldE9iamVjdFBhdGggPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0Zm9yQmluZGluZ0V4cHJlc3Npb246IGJvb2xlYW4gPSBmYWxzZVxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgbmF2UHJvcGVydGllcyA9IGdldFBhdGhSZWxhdGl2ZUxvY2F0aW9uKGRhdGFNb2RlbE9iamVjdFBhdGguY29udGV4dExvY2F0aW9uLCBkYXRhTW9kZWxPYmplY3RQYXRoLm5hdmlnYXRpb25Qcm9wZXJ0aWVzKTtcblx0aWYgKGZvckJpbmRpbmdFeHByZXNzaW9uKSB7XG5cdFx0aWYgKG5hdlByb3BlcnRpZXMuZmluZChucCA9PiBucC5pc0NvbGxlY3Rpb24pKSB7XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fVxuXHRsZXQgcGF0aCA9IG5hdlByb3BlcnRpZXMubWFwKG5wID0+IG5wLm5hbWUpLmpvaW4oXCIvXCIpO1xuXHRpZiAoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgJiZcblx0XHQoZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZSB8fFxuXHRcdFx0KGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCIgJiYgZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QudmFsdWUpKSAmJlxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Ll90eXBlICE9PSBcIk5hdmlnYXRpb25Qcm9wZXJ0eVwiICYmXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QgIT09IGRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXRcblx0KSB7XG5cdFx0aWYgKHBhdGgubGVuZ3RoID4gMCAmJiAhcGF0aC5lbmRzV2l0aChcIi9cIikpIHtcblx0XHRcdHBhdGggKz0gXCIvXCI7XG5cdFx0fVxuXHRcdHBhdGggKz1cblx0XHRcdGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0LnR5cGUgPT09IFwiUHJvcGVydHlQYXRoXCJcblx0XHRcdFx0PyBgJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC52YWx1ZX1gXG5cdFx0XHRcdDogYCR7ZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QubmFtZX1gO1xuXHR9IGVsc2UgaWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0ICYmIGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwidGVybVwiKSkge1xuXHRcdGlmIChwYXRoLmxlbmd0aCA+IDAgJiYgIXBhdGguZW5kc1dpdGgoXCIvXCIpKSB7XG5cdFx0XHRwYXRoICs9IFwiL1wiO1xuXHRcdH1cblx0XHRwYXRoICs9IGBAJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC50ZXJtfWA7XG5cdFx0aWYgKGRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0Lmhhc093blByb3BlcnR5KFwicXVhbGlmaWVyXCIpICYmICEhZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3QucXVhbGlmaWVyKSB7XG5cdFx0XHRwYXRoICs9IGAjJHtkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldE9iamVjdC5xdWFsaWZpZXJ9YDtcblx0XHR9XG5cdH0gZWxzZSBpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGgudGFyZ2V0T2JqZWN0KSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxuXHRyZXR1cm4gcGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhVcGRhdGFibGUgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRiVGFibGVDYXNlPzogYm9vbGVhblxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5VcGRhdGVSZXN0cmljdGlvbnM/LlVwZGF0YWJsZTtcblx0XHR9LFxuXHRcdHByb3BlcnR5UGF0aCxcblx0XHRiVGFibGVDYXNlXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoU2VhcmNoYWJsZSA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT4sXG5cdGJUYWJsZUNhc2U/OiBib29sZWFuXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uU2VhcmNoUmVzdHJpY3Rpb25zPy5TZWFyY2hhYmxlO1xuXHRcdH0sXG5cdFx0cHJvcGVydHlQYXRoLFxuXHRcdGJUYWJsZUNhc2Vcblx0KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc1BhdGhEZWxldGFibGUgPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0cHJvcGVydHlQYXRoPzogUHJvcGVydHlPclBhdGg8UHJvcGVydHk+LFxuXHRiVGFibGVDYXNlPzogYm9vbGVhblxuKTogRXhwcmVzc2lvbjxib29sZWFuPiB7XG5cdHJldHVybiBjaGVja09uUGF0aChcblx0XHRkYXRhTW9kZWxPYmplY3RQYXRoLFxuXHRcdChhbm5vdGF0aW9uT2JqZWN0OiBOYXZpZ2F0aW9uUHJvcGVydHlSZXN0cmljdGlvbiB8IEVudGl0eVNldEFubm90YXRpb25zX0NhcGFiaWxpdGllcyB8IEVudGl0eVR5cGVBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMpID0+IHtcblx0XHRcdHJldHVybiBhbm5vdGF0aW9uT2JqZWN0Py5EZWxldGVSZXN0cmljdGlvbnM/LkRlbGV0YWJsZTtcblx0XHR9LFxuXHRcdHByb3BlcnR5UGF0aCxcblx0XHRiVGFibGVDYXNlXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgaXNQYXRoSW5zZXJ0YWJsZSA9IGZ1bmN0aW9uKFxuXHRkYXRhTW9kZWxPYmplY3RQYXRoOiBEYXRhTW9kZWxPYmplY3RQYXRoIHwgdW5kZWZpbmVkLFxuXHRwcm9wZXJ0eVBhdGg/OiBQcm9wZXJ0eU9yUGF0aDxQcm9wZXJ0eT5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRyZXR1cm4gY2hlY2tPblBhdGgoXG5cdFx0ZGF0YU1vZGVsT2JqZWN0UGF0aCxcblx0XHQoYW5ub3RhdGlvbk9iamVjdDogTmF2aWdhdGlvblByb3BlcnR5UmVzdHJpY3Rpb24gfCBFbnRpdHlTZXRBbm5vdGF0aW9uc19DYXBhYmlsaXRpZXMgfCBFbnRpdHlUeXBlQW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzKSA9PiB7XG5cdFx0XHRyZXR1cm4gYW5ub3RhdGlvbk9iamVjdD8uSW5zZXJ0UmVzdHJpY3Rpb25zPy5JbnNlcnRhYmxlO1xuXHRcdH0sXG5cdFx0cHJvcGVydHlQYXRoXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tGaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zID0gZnVuY3Rpb24oXG5cdGRhdGFNb2RlbE9iamVjdFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGgsXG5cdGFsbG93ZWRFeHByZXNzaW9uOiAoc3RyaW5nIHwgdW5kZWZpbmVkKVtdXG4pOiBFeHByZXNzaW9uPGJvb2xlYW4+IHtcblx0cmV0dXJuIGNoZWNrT25QYXRoKFxuXHRcdGRhdGFNb2RlbE9iamVjdFBhdGgsXG5cdFx0KGFubm90YXRpb25PYmplY3Q6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uIHwgRW50aXR5U2V0QW5ub3RhdGlvbnNfQ2FwYWJpbGl0aWVzIHwgRW50aXR5VHlwZUFubm90YXRpb25zX0NhcGFiaWxpdGllcykgPT4ge1xuXHRcdFx0aWYgKGFubm90YXRpb25PYmplY3QgJiYgXCJGaWx0ZXJSZXN0cmljdGlvbnNcIiBpbiBhbm5vdGF0aW9uT2JqZWN0KSB7XG5cdFx0XHRcdGNvbnN0IGZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvbnM6IEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdID1cblx0XHRcdFx0XHQoYW5ub3RhdGlvbk9iamVjdD8uRmlsdGVyUmVzdHJpY3Rpb25zPy5GaWx0ZXJFeHByZXNzaW9uUmVzdHJpY3Rpb25zIGFzIEZpbHRlckV4cHJlc3Npb25SZXN0cmljdGlvblR5cGVUeXBlc1tdKSB8fCBbXTtcblx0XHRcdFx0Y29uc3QgY3VycmVudE9iamVjdFJlc3RyaWN0aW9uID0gZmlsdGVyRXhwcmVzc2lvblJlc3RyaWN0aW9ucy5maW5kKHJlc3RyaWN0aW9uID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gKHJlc3RyaWN0aW9uLlByb3BlcnR5IGFzIFByb3BlcnR5UGF0aCkuJHRhcmdldCA9PT0gZGF0YU1vZGVsT2JqZWN0UGF0aC50YXJnZXRPYmplY3Q7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRpZiAoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGFsbG93ZWRFeHByZXNzaW9uLmluZGV4T2YoY3VycmVudE9iamVjdFJlc3RyaWN0aW9uPy5BbGxvd2VkRXhwcmVzc2lvbnM/LnRvU3RyaW5nKCkpICE9PSAtMTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tPblBhdGggPSBmdW5jdGlvbihcblx0ZGF0YU1vZGVsT2JqZWN0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCB8IHVuZGVmaW5lZCxcblx0Y2hlY2tGdW5jdGlvbjogRnVuY3Rpb24sXG5cdHByb3BlcnR5UGF0aD86IFByb3BlcnR5T3JQYXRoPFByb3BlcnR5Pixcblx0YlRhYmxlQ2FzZT86IGJvb2xlYW5cbik6IEV4cHJlc3Npb248Ym9vbGVhbj4ge1xuXHRpZiAoIWRhdGFNb2RlbE9iamVjdFBhdGggfHwgIWRhdGFNb2RlbE9iamVjdFBhdGguc3RhcnRpbmdFbnRpdHlTZXQpIHtcblx0XHRyZXR1cm4gY29uc3RhbnQodHJ1ZSk7XG5cdH1cblx0ZGF0YU1vZGVsT2JqZWN0UGF0aCA9IGVuaGFuY2VEYXRhTW9kZWxQYXRoKGRhdGFNb2RlbE9iamVjdFBhdGgsIHByb3BlcnR5UGF0aCk7XG5cblx0bGV0IGN1cnJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnN0YXJ0aW5nRW50aXR5U2V0O1xuXHRsZXQgcGFyZW50RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gbnVsbDtcblx0bGV0IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lOiBzdHJpbmdbXSA9IFtdO1xuXHRjb25zdCBhbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzOiBOYXZpZ2F0aW9uUHJvcGVydHlbXSA9IFtdO1xuXHRsZXQgdGFyZ2V0RW50aXR5U2V0OiBFbnRpdHlTZXQgfCBudWxsID0gY3VycmVudEVudGl0eVNldDtcblx0Y29uc3QgdGFyZ2V0RW50aXR5VHlwZTogRW50aXR5VHlwZSB8IG51bGwgPSBkYXRhTW9kZWxPYmplY3RQYXRoLnRhcmdldEVudGl0eVR5cGU7XG5cdGxldCByZXNldFZpc2l0ZWROYXZQcm9wcyA9IGZhbHNlO1xuXG5cdGRhdGFNb2RlbE9iamVjdFBhdGgubmF2aWdhdGlvblByb3BlcnRpZXMuZm9yRWFjaCgobmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpID0+IHtcblx0XHRpZiAocmVzZXRWaXNpdGVkTmF2UHJvcHMpIHtcblx0XHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lID0gW107XG5cdFx0fVxuXHRcdHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLnB1c2gobmF2aWdhdGlvblByb3BlcnR5Lm5hbWUpO1xuXHRcdGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMucHVzaChuYXZpZ2F0aW9uUHJvcGVydHkpO1xuXHRcdGlmICghbmF2aWdhdGlvblByb3BlcnR5LmNvbnRhaW5zVGFyZ2V0KSB7XG5cdFx0XHQvLyBXZSBzaG91bGQgaGF2ZSBhIG5hdmlnYXRpb25Qcm9wZXJ0eUJpbmRpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYXRoIHNvIGZhciB3aGljaCBjYW4gY29uc2lzdCBvZiAoW0NvbnRhaW5tZW50TmF2UHJvcF0vKSpbTmF2UHJvcF1cblx0XHRcdGNvbnN0IGZ1bGxOYXZpZ2F0aW9uUGF0aCA9IHZpc2l0ZWROYXZpZ2F0aW9uUHJvcHNOYW1lLmpvaW4oXCIvXCIpO1xuXHRcdFx0aWYgKGN1cnJlbnRFbnRpdHlTZXQgJiYgY3VycmVudEVudGl0eVNldC5uYXZpZ2F0aW9uUHJvcGVydHlCaW5kaW5nLmhhc093blByb3BlcnR5KGZ1bGxOYXZpZ2F0aW9uUGF0aCkpIHtcblx0XHRcdFx0cGFyZW50RW50aXR5U2V0ID0gY3VycmVudEVudGl0eVNldDtcblx0XHRcdFx0Y3VycmVudEVudGl0eVNldCA9IGN1cnJlbnRFbnRpdHlTZXQubmF2aWdhdGlvblByb3BlcnR5QmluZGluZ1tmdWxsTmF2aWdhdGlvblBhdGhdO1xuXHRcdFx0XHR0YXJnZXRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHQvLyBJZiB3ZSByZWFjaGVkIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSB3aXRoIGEgbmF2aWdhdGlvbnByb3BlcnR5YmluZGluZywgd2UgbmVlZCB0byByZXNldCB0aGUgdmlzaXRlZCBwYXRoIG9uIHRoZSBuZXh0IGl0ZXJhdGlvbiAoaWYgdGhlcmUgaXMgb25lKVxuXHRcdFx0XHRyZXNldFZpc2l0ZWROYXZQcm9wcyA9IHRydWU7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyBXZSByZWFsbHkgc2hvdWxkIG5vdCBlbmQgdXAgaGVyZSBidXQgYXQgbGVhc3QgbGV0J3MgdHJ5IHRvIGF2b2lkIGluY29ycmVjdCBiZWhhdmlvclxuXHRcdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0XHRjdXJyZW50RW50aXR5U2V0ID0gbnVsbDtcblx0XHRcdFx0cmVzZXRWaXNpdGVkTmF2UHJvcHMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRwYXJlbnRFbnRpdHlTZXQgPSBjdXJyZW50RW50aXR5U2V0O1xuXHRcdFx0dGFyZ2V0RW50aXR5U2V0ID0gbnVsbDtcblx0XHR9XG5cdH0pO1xuXG5cdC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBuYXZpZ2F0ZWQgZG93biBhbGwgdGhlIG5hdiBwcm9wIGFuZCB3ZSBzaG91bGQgaGF2ZVxuXHQvLyBUaGUgdGFyZ2V0IGVudGl0eXNldCBwb2ludGluZyB0byBlaXRoZXIgbnVsbCAoaW4gY2FzZSBvZiBjb250YWlubWVudCBuYXZwcm9wIGEgbGFzdCBwYXJ0KSwgb3IgdGhlIGFjdHVhbCB0YXJnZXQgKG5vbiBjb250YWlubWVudCBhcyB0YXJnZXQpXG5cdC8vIFRoZSBwYXJlbnQgZW50aXR5U2V0IHBvaW50aW5nIHRvIHRoZSBwcmV2aW91cyBlbnRpdHlzZXQgdXNlZCBpbiB0aGUgcGF0aFxuXHQvLyBWaXNpdGVkTmF2aWdhdGlvblBhdGggc2hvdWxkIGNvbnRhaW4gdGhlIHBhdGggdXAgdG8gdGhpcyBwcm9wZXJ0eVxuXG5cdC8vIFJlc3RyaWN0aW9ucyBzaG91bGQgdGhlbiBiZSBldmFsdWF0ZWQgYXMgUGFyZW50RW50aXR5U2V0Lk5hdlJlc3RyaWN0aW9uc1tOYXZwcm9wZXJ0eVBhdGhdIHx8IFRhcmdldEVudGl0eVNldC5SZXN0cmljdGlvbnNcblx0Y29uc3QgZnVsbE5hdmlnYXRpb25QYXRoID0gdmlzaXRlZE5hdmlnYXRpb25Qcm9wc05hbWUuam9pbihcIi9cIik7XG5cdGxldCByZXN0cmljdGlvbnMsIHZpc2l0ZWROYXZQcm9wcztcblx0aWYgKHBhcmVudEVudGl0eVNldCAhPT0gbnVsbCkge1xuXHRcdGNvbnN0IF9wYXJlbnRFbnRpdHlTZXQ6IEVudGl0eVNldCA9IHBhcmVudEVudGl0eVNldDtcblx0XHRfcGFyZW50RW50aXR5U2V0LmFubm90YXRpb25zPy5DYXBhYmlsaXRpZXM/Lk5hdmlnYXRpb25SZXN0cmljdGlvbnM/LlJlc3RyaWN0ZWRQcm9wZXJ0aWVzLmZvckVhY2goXG5cdFx0XHQocmVzdHJpY3RlZE5hdlByb3A6IE5hdmlnYXRpb25Qcm9wZXJ0eVJlc3RyaWN0aW9uVHlwZXMpID0+IHtcblx0XHRcdFx0aWYgKHJlc3RyaWN0ZWROYXZQcm9wLk5hdmlnYXRpb25Qcm9wZXJ0eT8udHlwZSA9PT0gXCJOYXZpZ2F0aW9uUHJvcGVydHlQYXRoXCIpIHtcblx0XHRcdFx0XHRjb25zdCByZXN0cmljdGlvbkRlZmluaXRpb24gPSBjaGVja0Z1bmN0aW9uKHJlc3RyaWN0ZWROYXZQcm9wKTtcblx0XHRcdFx0XHRpZiAoZnVsbE5hdmlnYXRpb25QYXRoID09PSByZXN0cmljdGVkTmF2UHJvcC5OYXZpZ2F0aW9uUHJvcGVydHkudmFsdWUgJiYgcmVzdHJpY3Rpb25EZWZpbml0aW9uICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzID0gYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcy5zbGljZSgwLCAtMSk7XG5cdFx0XHRcdFx0XHRpZiAodGFyZ2V0RW50aXR5U2V0ICE9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdHZpc2l0ZWROYXZQcm9wcyA9IF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKF9hbGxWaXNpdGVkTmF2aWdhdGlvblByb3BzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdHZpc2l0ZWROYXZQcm9wcyA9IGFsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHMuc2xpY2UoMCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dmlzaXRlZE5hdlByb3BzID0gX2FsbFZpc2l0ZWROYXZpZ2F0aW9uUHJvcHM7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHJlc3RyaWN0aW9ucyA9IGVxdWFsKFxuXHRcdFx0XHRcdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0XHRcdFx0XHRyZXN0cmljdGlvbkRlZmluaXRpb24sXG5cdFx0XHRcdFx0XHRcdFx0Z2V0UGF0aFJlbGF0aXZlTG9jYXRpb24oZGF0YU1vZGVsT2JqZWN0UGF0aD8uY29udGV4dExvY2F0aW9uLCB2aXNpdGVkTmF2UHJvcHMpLm1hcChucCA9PiBucC5uYW1lKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdCk7XG5cdH1cblx0bGV0IHRhcmdldFJlc3RyaWN0aW9ucztcblx0bGV0IHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5U2V0Py5hbm5vdGF0aW9ucz8uQ2FwYWJpbGl0aWVzKTtcblx0aWYgKHRhcmdldEVudGl0eVNldCA9PT0gbnVsbCAmJiByZXN0cmljdGlvbkRlZmluaXRpb24gPT09IHVuZGVmaW5lZCkge1xuXHRcdHJlc3RyaWN0aW9uRGVmaW5pdGlvbiA9IGNoZWNrRnVuY3Rpb24odGFyZ2V0RW50aXR5VHlwZT8uYW5ub3RhdGlvbnM/LkNhcGFiaWxpdGllcyk7XG5cdH1cblx0aWYgKHJlc3RyaWN0aW9uRGVmaW5pdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0dGFyZ2V0UmVzdHJpY3Rpb25zID0gZXF1YWwoXG5cdFx0XHRhbm5vdGF0aW9uRXhwcmVzc2lvbihcblx0XHRcdFx0cmVzdHJpY3Rpb25EZWZpbml0aW9uLFxuXHRcdFx0XHRnZXRQYXRoUmVsYXRpdmVMb2NhdGlvbihkYXRhTW9kZWxPYmplY3RQYXRoLmNvbnRleHRMb2NhdGlvbiwgYWxsVmlzaXRlZE5hdmlnYXRpb25Qcm9wcykubWFwKG5wID0+IG5wLm5hbWUpXG5cdFx0XHQpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblx0Ly9vYmplY3QgcGFnZSB0YWJsZSBjYXNlIGluIHBhdGggYmFzZWQgc2NlbmFyaW8ncyBmYWxsYmFjayB0byBleGlzaXRpbmcgYXBwcm9hY2hcblx0aWYgKGJUYWJsZUNhc2UgJiYgIXJlc3RyaWN0aW9ucyAmJiByZXN0cmljdGlvbkRlZmluaXRpb24/LnBhdGgpIHtcblx0XHRjb25zdCBvUmVzdWx0OiBhbnkgPSB7XG5cdFx0XHRcImN1cnJlbnRFbnRpdHlSZXN0cmljdGlvblwiOiB0YXJnZXRSZXN0cmljdGlvbnNcblx0XHR9O1xuXHRcdHJldHVybiBvUmVzdWx0O1xuXHR9XG5cdHJldHVybiByZXN0cmljdGlvbnMgfHwgdGFyZ2V0UmVzdHJpY3Rpb25zIHx8IGNvbnN0YW50KHRydWUpO1xufTtcbiJdfQ==
@@ -126,19 +126,53 @@ export const enhanceDataModelPath = function(
126
126
  };
127
127
  };
128
128
 
129
- export const getTargetEntitySetPath = function(dataModelObjectPath: DataModelObjectPath): string {
130
- let targetEntitySetPath: string = `/${dataModelObjectPath.startingEntitySet.name}`;
129
+ export const getTargetEntitySetPath = function(dataModelObjectPath: DataModelObjectPath, bRelative: boolean = false): string {
130
+ let targetEntitySetPath: string = "";
131
+ if (!bRelative) {
132
+ targetEntitySetPath += `/${dataModelObjectPath.startingEntitySet.name}`;
133
+ }
134
+ let currentEntitySet =
135
+ bRelative && dataModelObjectPath.contextLocation?.targetEntitySet
136
+ ? dataModelObjectPath.contextLocation.targetEntitySet
137
+ : dataModelObjectPath.startingEntitySet;
138
+ let navigatedPaths: string[] = [];
139
+ dataModelObjectPath.navigationProperties.forEach(navProp => {
140
+ if (
141
+ !bRelative ||
142
+ !dataModelObjectPath.contextLocation ||
143
+ !dataModelObjectPath.contextLocation?.navigationProperties.some(
144
+ contextNavProp => contextNavProp.fullyQualifiedName === navProp.fullyQualifiedName
145
+ )
146
+ ) {
147
+ // in case of relative entitySetPath we don't consider navigationPath that are already in the context
148
+ navigatedPaths.push(navProp.name);
149
+ }
150
+ if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
151
+ if (bRelative) {
152
+ targetEntitySetPath += `${navigatedPaths.join("/")}`;
153
+ } else {
154
+ targetEntitySetPath += `/$NavigationPropertyBinding/${navigatedPaths.join("/")}/$`;
155
+ }
156
+ currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")];
157
+ navigatedPaths = [];
158
+ }
159
+ });
160
+ return targetEntitySetPath;
161
+ };
162
+
163
+ export const getTargetEntitySetNavigation = function(dataModelObjectPath: DataModelObjectPath): NavigationProperty[] {
164
+ const visitedNavigationProperties: NavigationProperty[] = [];
131
165
  let currentEntitySet = dataModelObjectPath.startingEntitySet;
132
166
  let navigatedPaths: string[] = [];
133
167
  dataModelObjectPath.navigationProperties.forEach(navProp => {
134
168
  navigatedPaths.push(navProp.name);
135
169
  if (currentEntitySet && currentEntitySet.navigationPropertyBinding.hasOwnProperty(navigatedPaths.join("/"))) {
136
- targetEntitySetPath += `/$NavigationPropertyBinding/${navigatedPaths.join("/")}/$`;
170
+ visitedNavigationProperties.push(navProp);
137
171
  currentEntitySet = currentEntitySet.navigationPropertyBinding[navigatedPaths.join("/")];
138
172
  navigatedPaths = [];
139
173
  }
140
174
  });
141
- return targetEntitySetPath;
175
+ return visitedNavigationProperties;
142
176
  };
143
177
 
144
178
  export const getTargetObjectPath = function(dataModelObjectPath: DataModelObjectPath, bRelative: boolean = false): string {
@@ -229,6 +263,22 @@ export const isPathUpdatable = function(
229
263
  bTableCase
230
264
  );
231
265
  };
266
+
267
+ export const isPathSearchable = function(
268
+ dataModelObjectPath: DataModelObjectPath | undefined,
269
+ propertyPath?: PropertyOrPath<Property>,
270
+ bTableCase?: boolean
271
+ ): Expression<boolean> {
272
+ return checkOnPath(
273
+ dataModelObjectPath,
274
+ (annotationObject: NavigationPropertyRestriction | EntitySetAnnotations_Capabilities) => {
275
+ return annotationObject?.SearchRestrictions?.Searchable;
276
+ },
277
+ propertyPath,
278
+ bTableCase
279
+ );
280
+ };
281
+
232
282
  export const isPathDeletable = function(
233
283
  dataModelObjectPath: DataModelObjectPath | undefined,
234
284
  propertyPath?: PropertyOrPath<Property>,