@smartbit4all/ng-client 4.2.169 → 4.2.171

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 (445) hide show
  1. package/README.md +386 -386
  2. package/esm2022/lib/component-factory-service/component-factory-service.module.mjs +1 -1
  3. package/esm2022/lib/component-factory-service/component-factory-service.service.mjs +1 -1
  4. package/esm2022/lib/component-factory-service/projects.mjs +1 -1
  5. package/esm2022/lib/session/api/api/api.mjs +1 -1
  6. package/esm2022/lib/session/api/api/session.service.mjs +1 -1
  7. package/esm2022/lib/session/api/configuration.mjs +1 -1
  8. package/esm2022/lib/session/api/encoder.mjs +1 -1
  9. package/esm2022/lib/session/api/index.mjs +1 -1
  10. package/esm2022/lib/session/api/model/accountInfo.mjs +1 -1
  11. package/esm2022/lib/session/api/model/apiError.mjs +1 -1
  12. package/esm2022/lib/session/api/model/authenticationProviderData.mjs +1 -1
  13. package/esm2022/lib/session/api/model/getAuthenticationProvidersResponse.mjs +1 -1
  14. package/esm2022/lib/session/api/model/models.mjs +1 -1
  15. package/esm2022/lib/session/api/model/refreshSessionRequest.mjs +1 -1
  16. package/esm2022/lib/session/api/model/session.mjs +1 -1
  17. package/esm2022/lib/session/api/model/sessionInfoData.mjs +1 -1
  18. package/esm2022/lib/session/api/model/userActivityLog.mjs +1 -1
  19. package/esm2022/lib/session/api/param.mjs +1 -1
  20. package/esm2022/lib/session/api/variables.mjs +1 -1
  21. package/esm2022/lib/session/cookie-service/smart-cookie.service.mjs +1 -1
  22. package/esm2022/lib/session/projects.mjs +1 -1
  23. package/esm2022/lib/session/smart-error-catching.interceptor.mjs +1 -1
  24. package/esm2022/lib/session/smart-header-maintainer.interceptor.mjs +1 -1
  25. package/esm2022/lib/session/smart-session-handler.service.mjs +1 -1
  26. package/esm2022/lib/session/smart-session.module.mjs +1 -1
  27. package/esm2022/lib/session/smart-session.service.mjs +1 -1
  28. package/esm2022/lib/session/smart-timer/smart-session-timer.component.mjs +3 -3
  29. package/esm2022/lib/session/smart-timer/smart-session-timer.service.mjs +1 -1
  30. package/esm2022/lib/shared/projects.mjs +1 -1
  31. package/esm2022/lib/shared/shared.module.mjs +1 -1
  32. package/esm2022/lib/shared/smart-tooltip.directive.mjs +1 -1
  33. package/esm2022/lib/shared/smarttable.date-pipe.mjs +1 -1
  34. package/esm2022/lib/smart-client/projects.mjs +1 -1
  35. package/esm2022/lib/smart-client/smart-authentication.service.mjs +1 -1
  36. package/esm2022/lib/smart-client/smart-component-api-client.mjs +3 -2
  37. package/esm2022/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +3 -3
  38. package/esm2022/lib/smart-client/smart.component.mjs +1 -1
  39. package/esm2022/lib/smart-client/smart.service.mjs +1 -1
  40. package/esm2022/lib/smart-component-layout/api/api/api.mjs +1 -1
  41. package/esm2022/lib/smart-component-layout/api/api/default.service.mjs +1 -1
  42. package/esm2022/lib/smart-component-layout/api/api.module.mjs +1 -1
  43. package/esm2022/lib/smart-component-layout/api/configuration.mjs +1 -1
  44. package/esm2022/lib/smart-component-layout/api/encoder.mjs +1 -1
  45. package/esm2022/lib/smart-component-layout/api/index.mjs +1 -1
  46. package/esm2022/lib/smart-component-layout/api/model/componentType.mjs +1 -1
  47. package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +1 -1
  48. package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +1 -1
  49. package/esm2022/lib/smart-component-layout/api/model/layoutDirection.mjs +1 -1
  50. package/esm2022/lib/smart-component-layout/api/model/models.mjs +1 -1
  51. package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
  52. package/esm2022/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +1 -1
  53. package/esm2022/lib/smart-component-layout/api/model/toolbarProperties.mjs +1 -1
  54. package/esm2022/lib/smart-component-layout/api/param.mjs +1 -1
  55. package/esm2022/lib/smart-component-layout/api/variables.mjs +1 -1
  56. package/esm2022/lib/smart-component-layout/projects.mjs +1 -1
  57. package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +1 -1
  58. package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +3 -3
  59. package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +1 -1
  60. package/esm2022/lib/smart-diagram/api/api/api.mjs +1 -1
  61. package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +1 -1
  62. package/esm2022/lib/smart-diagram/api/api.module.mjs +1 -1
  63. package/esm2022/lib/smart-diagram/api/configuration.mjs +1 -1
  64. package/esm2022/lib/smart-diagram/api/encoder.mjs +1 -1
  65. package/esm2022/lib/smart-diagram/api/index.mjs +1 -1
  66. package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +1 -1
  67. package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +1 -1
  68. package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +1 -1
  69. package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +1 -1
  70. package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +1 -1
  71. package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +1 -1
  72. package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +1 -1
  73. package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +1 -1
  74. package/esm2022/lib/smart-diagram/api/model/labelText.mjs +1 -1
  75. package/esm2022/lib/smart-diagram/api/model/models.mjs +1 -1
  76. package/esm2022/lib/smart-diagram/api/param.mjs +1 -1
  77. package/esm2022/lib/smart-diagram/api/variables.mjs +1 -1
  78. package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +1 -1
  79. package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +22 -22
  80. package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +1 -1
  81. package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +1 -1
  82. package/esm2022/lib/smart-diagram/projects.mjs +1 -1
  83. package/esm2022/lib/smart-dialog/projects.mjs +1 -1
  84. package/esm2022/lib/smart-dialog/smartdialog.component.mjs +3 -3
  85. package/esm2022/lib/smart-dialog/smartdialog.model.mjs +1 -1
  86. package/esm2022/lib/smart-dialog/smartdialog.module.mjs +1 -1
  87. package/esm2022/lib/smart-dialog/smartdialog.service.mjs +1 -1
  88. package/esm2022/lib/smart-expandable-section/expandable-section.component.mjs +3 -3
  89. package/esm2022/lib/smart-expandable-section/expandable-section.model.mjs +1 -1
  90. package/esm2022/lib/smart-expandable-section/projects.mjs +1 -1
  91. package/esm2022/lib/smart-expandable-section/smart-expandable-section.module.mjs +1 -1
  92. package/esm2022/lib/smart-expandable-section/smart-expandable-section.service.mjs +1 -1
  93. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +1 -1
  94. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +1 -1
  95. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +1 -1
  96. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +1 -1
  97. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionData.mjs +1 -1
  98. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +1 -1
  99. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionField.mjs +1 -1
  100. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +1 -1
  101. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +1 -1
  102. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionList.mjs +1 -1
  103. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +1 -1
  104. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +1 -1
  105. package/esm2022/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +1 -1
  106. package/esm2022/lib/smart-filter/api/filter/model/model.mjs +1 -1
  107. package/esm2022/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +1 -1
  108. package/esm2022/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +1 -1
  109. package/esm2022/lib/smart-filter/api/value/model/value.mjs +1 -1
  110. package/esm2022/lib/smart-filter/projects.mjs +1 -1
  111. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +1 -1
  112. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +3 -3
  113. package/esm2022/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +3 -3
  114. package/esm2022/lib/smart-filter/smart-filter/smart-filter.component.mjs +3 -3
  115. package/esm2022/lib/smart-filter/smart-filter/smart-filter.service.mjs +1 -1
  116. package/esm2022/lib/smart-filter/smart-filter.model.mjs +1 -1
  117. package/esm2022/lib/smart-filter/smart-filter.module.mjs +1 -1
  118. package/esm2022/lib/smart-filter-editor/api/api/filter.service.mjs +1 -1
  119. package/esm2022/lib/smart-filter-editor/api/configuration.mjs +1 -1
  120. package/esm2022/lib/smart-filter-editor/api/encoder.mjs +1 -1
  121. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBoolOperator.mjs +1 -1
  122. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderApiConfig.mjs +1 -1
  123. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderField.mjs +1 -1
  124. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderGroup.mjs +1 -1
  125. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderModel.mjs +1 -1
  126. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionBuilderUiModel.mjs +1 -1
  127. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionData.mjs +1 -1
  128. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionDataType.mjs +1 -1
  129. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionField.mjs +1 -1
  130. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldEditor.mjs +1 -1
  131. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldList.mjs +1 -1
  132. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionFieldWidgetType.mjs +1 -1
  133. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionList.mjs +1 -1
  134. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperandData.mjs +1 -1
  135. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOperation.mjs +1 -1
  136. package/esm2022/lib/smart-filter-editor/api/model/filterExpressionOrderBy.mjs +1 -1
  137. package/esm2022/lib/smart-filter-editor/api/model/smartFilterType.mjs +1 -1
  138. package/esm2022/lib/smart-filter-editor/api/param.mjs +1 -1
  139. package/esm2022/lib/smart-filter-editor/api/variables.mjs +1 -1
  140. package/esm2022/lib/smart-filter-editor/filterExpressionBuilderApiActions.mjs +1 -1
  141. package/esm2022/lib/smart-filter-editor/project.mjs +1 -1
  142. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-item/smart-filter-expression-item.component.mjs +3 -3
  143. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/components/smart-filter-expression-items/smart-filter-expression-items.component.mjs +3 -3
  144. package/esm2022/lib/smart-filter-editor/smart-filter-editor-content/smart-filter-editor-content.component.mjs +3 -3
  145. package/esm2022/lib/smart-filter-editor/smart-filter-editor.model.mjs +1 -1
  146. package/esm2022/lib/smart-filter-editor/smart-filter-editor.module.mjs +1 -1
  147. package/esm2022/lib/smart-filter-editor/smart-filter-editor.service.mjs +1 -1
  148. package/esm2022/lib/smart-filter-editor/smart-filter-params/components/smart-filter-param/smart-filter-param.component.mjs +3 -3
  149. package/esm2022/lib/smart-filter-editor/smart-filter-params/smart-filter-params.component.mjs +3 -3
  150. package/esm2022/lib/smart-form/api/model/dateFieldProperties.mjs +1 -1
  151. package/esm2022/lib/smart-form/api/model/models.mjs +2 -1
  152. package/esm2022/lib/smart-form/api/model/multiFileUploaderProperties.mjs +2 -0
  153. package/esm2022/lib/smart-form/api/model/selectionDefinition.mjs +7 -1
  154. package/esm2022/lib/smart-form/api/model/smartFormWidgetType.mjs +2 -1
  155. package/esm2022/lib/smart-form/api/model/smartWidgetDefinition.mjs +1 -1
  156. package/esm2022/lib/smart-form/api/model/valueChangeMode.mjs +1 -1
  157. package/esm2022/lib/smart-form/highlightMacthingString-pipe.mjs +1 -1
  158. package/esm2022/lib/smart-form/projects.mjs +2 -1
  159. package/esm2022/lib/smart-form/services/smartform.layout-definition.service.mjs +22 -2
  160. package/esm2022/lib/smart-form/services/smartform.service.mjs +1 -1
  161. package/esm2022/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +3 -3
  162. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +3 -3
  163. package/esm2022/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +1 -1
  164. package/esm2022/lib/smart-form/smartform.component.mjs +5 -3
  165. package/esm2022/lib/smart-form/smartform.form-model.mjs +1 -1
  166. package/esm2022/lib/smart-form/smartform.model.mjs +1 -1
  167. package/esm2022/lib/smart-form/widgets/components/smart-file-editor/smart-file-editor.component.mjs +3 -3
  168. package/esm2022/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +3 -3
  169. package/esm2022/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.mjs +168 -0
  170. package/esm2022/lib/smart-form/widgets/directives/comparable-dropdown.directive.mjs +1 -1
  171. package/esm2022/lib/smart-form/widgets/directives/comparable-multiselect.directive.mjs +1 -1
  172. package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +27 -15
  173. package/esm2022/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +3 -3
  174. package/esm2022/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +1 -1
  175. package/esm2022/lib/smart-grid/api/grid-api/api/api.mjs +1 -1
  176. package/esm2022/lib/smart-grid/api/grid-api/api/grid.service.mjs +1 -1
  177. package/esm2022/lib/smart-grid/api/grid-api/api.module.mjs +1 -1
  178. package/esm2022/lib/smart-grid/api/grid-api/configuration.mjs +1 -1
  179. package/esm2022/lib/smart-grid/api/grid-api/encoder.mjs +1 -1
  180. package/esm2022/lib/smart-grid/api/grid-api/index.mjs +1 -1
  181. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnContentType.mjs +1 -1
  182. package/esm2022/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +1 -1
  183. package/esm2022/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +1 -1
  184. package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -1
  185. package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
  186. package/esm2022/lib/smart-grid/api/grid-api/model/gridPage.mjs +1 -1
  187. package/esm2022/lib/smart-grid/api/grid-api/model/gridRow.mjs +1 -1
  188. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionChange.mjs +1 -1
  189. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +1 -1
  190. package/esm2022/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +1 -1
  191. package/esm2022/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +1 -1
  192. package/esm2022/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +1 -1
  193. package/esm2022/lib/smart-grid/api/grid-api/model/gridView.mjs +1 -1
  194. package/esm2022/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +1 -1
  195. package/esm2022/lib/smart-grid/api/grid-api/model/models.mjs +1 -1
  196. package/esm2022/lib/smart-grid/api/grid-api/param.mjs +1 -1
  197. package/esm2022/lib/smart-grid/api/grid-api/variables.mjs +1 -1
  198. package/esm2022/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +3 -3
  199. package/esm2022/lib/smart-grid/components/generic-component/expanded-row-renderer.component.mjs +3 -3
  200. package/esm2022/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +3 -3
  201. package/esm2022/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +3 -3
  202. package/esm2022/lib/smart-grid/models/model.mjs +1 -1
  203. package/esm2022/lib/smart-grid/projects.mjs +1 -1
  204. package/esm2022/lib/smart-grid/smart-grid-toolbar-util.mjs +1 -1
  205. package/esm2022/lib/smart-grid/smart-grid.component.mjs +5 -3
  206. package/esm2022/lib/smart-grid/smart-grid.module.mjs +1 -1
  207. package/esm2022/lib/smart-grid/smart-grid.service.mjs +1 -1
  208. package/esm2022/lib/smart-icon/projects.mjs +1 -1
  209. package/esm2022/lib/smart-icon/smart-icon/smart-icon.component.mjs +3 -3
  210. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.component.mjs +3 -3
  211. package/esm2022/lib/smart-icon/smart-icon/ui-badge/ui-badge.directive.mjs +1 -1
  212. package/esm2022/lib/smart-icon/smart-icon.module.mjs +1 -1
  213. package/esm2022/lib/smart-icon/smart-icon.service.mjs +1 -1
  214. package/esm2022/lib/smart-map/abstract-map.mjs +1 -1
  215. package/esm2022/lib/smart-map/api/api/api.mjs +1 -1
  216. package/esm2022/lib/smart-map/api/api/geoMap.service.mjs +1 -1
  217. package/esm2022/lib/smart-map/api/api.module.mjs +1 -1
  218. package/esm2022/lib/smart-map/api/configuration.mjs +1 -1
  219. package/esm2022/lib/smart-map/api/encoder.mjs +1 -1
  220. package/esm2022/lib/smart-map/api/index.mjs +1 -1
  221. package/esm2022/lib/smart-map/api/model/gPSPosition.mjs +1 -1
  222. package/esm2022/lib/smart-map/api/model/gPSRoute.mjs +1 -1
  223. package/esm2022/lib/smart-map/api/model/geoMapChange.mjs +1 -1
  224. package/esm2022/lib/smart-map/api/model/geoMapDataLoadingMode.mjs +1 -1
  225. package/esm2022/lib/smart-map/api/model/geoMapDataSourceDescriptor.mjs +1 -1
  226. package/esm2022/lib/smart-map/api/model/geoMapDataSourceType.mjs +1 -1
  227. package/esm2022/lib/smart-map/api/model/geoMapEditingSession.mjs +1 -1
  228. package/esm2022/lib/smart-map/api/model/geoMapInteraction.mjs +1 -1
  229. package/esm2022/lib/smart-map/api/model/geoMapItem.mjs +1 -1
  230. package/esm2022/lib/smart-map/api/model/geoMapItemKind.mjs +1 -1
  231. package/esm2022/lib/smart-map/api/model/geoMapLayer.mjs +1 -1
  232. package/esm2022/lib/smart-map/api/model/geoMapLayerChange.mjs +1 -1
  233. package/esm2022/lib/smart-map/api/model/geoMapLayerDescriptor.mjs +1 -1
  234. package/esm2022/lib/smart-map/api/model/geoMapModel.mjs +1 -1
  235. package/esm2022/lib/smart-map/api/model/geoMapOperationMode.mjs +1 -1
  236. package/esm2022/lib/smart-map/api/model/geoMapSelectionMode.mjs +1 -1
  237. package/esm2022/lib/smart-map/api/model/geoMapServerModel.mjs +1 -1
  238. package/esm2022/lib/smart-map/api/model/geoMapTextType.mjs +1 -1
  239. package/esm2022/lib/smart-map/api/model/geoMapViewState.mjs +1 -1
  240. package/esm2022/lib/smart-map/api/model/geoMapViewport.mjs +1 -1
  241. package/esm2022/lib/smart-map/api/model/models.mjs +1 -1
  242. package/esm2022/lib/smart-map/api/param.mjs +1 -1
  243. package/esm2022/lib/smart-map/api/variables.mjs +1 -1
  244. package/esm2022/lib/smart-map/api-default/api-default.mjs +1 -1
  245. package/esm2022/lib/smart-map/impl/google-map.mjs +1 -1
  246. package/esm2022/lib/smart-map/impl/leaflet-map.mjs +1 -1
  247. package/esm2022/lib/smart-map/projects.mjs +1 -1
  248. package/esm2022/lib/smart-map/smart-map.component.mjs +3 -3
  249. package/esm2022/lib/smart-map/smart-map.module.mjs +1 -1
  250. package/esm2022/lib/smart-map/smart-map.types.mjs +1 -1
  251. package/esm2022/lib/smart-navbar/projects.mjs +1 -1
  252. package/esm2022/lib/smart-navbar/smart-navbar.component.mjs +3 -3
  253. package/esm2022/lib/smart-navbar/smart-navbar.model.mjs +1 -1
  254. package/esm2022/lib/smart-navbar/smart-navbar.module.mjs +1 -1
  255. package/esm2022/lib/smart-navbar/smart-navbar.service.mjs +1 -1
  256. package/esm2022/lib/smart-navigation/projects.mjs +1 -1
  257. package/esm2022/lib/smart-navigation/smart-navigation.interface.mjs +1 -1
  258. package/esm2022/lib/smart-navigation/smart-navigation.module.mjs +1 -1
  259. package/esm2022/lib/smart-navigation/smart-navigation.service.mjs +1 -1
  260. package/esm2022/lib/smart-ng-client.module.mjs +1 -1
  261. package/esm2022/lib/smart-ng-client.service.mjs +1 -1
  262. package/esm2022/lib/smart-subject/projects.mjs +1 -1
  263. package/esm2022/lib/smart-subject/smart-subject.mjs +1 -1
  264. package/esm2022/lib/smart-tab-group/projects.mjs +1 -1
  265. package/esm2022/lib/smart-tab-group/smart-tab-group.component.mjs +3 -3
  266. package/esm2022/lib/smart-tab-group/smart-tab-group.module.mjs +1 -1
  267. package/esm2022/lib/smart-tab-group/smart-tab-group.service.mjs +1 -1
  268. package/esm2022/lib/smart-tab-group/tab-content/tab-content.component.mjs +3 -3
  269. package/esm2022/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +3 -3
  270. package/esm2022/lib/smart-tab-group/tabTile.model.mjs +1 -1
  271. package/esm2022/lib/smart-table/components/default-actions-popup/default-actions-popup.component.mjs +3 -3
  272. package/esm2022/lib/smart-table/components/loading/loading.component.mjs +3 -3
  273. package/esm2022/lib/smart-table/directives/mat-context-menu-trigger-for.directive.mjs +1 -1
  274. package/esm2022/lib/smart-table/projects.mjs +1 -1
  275. package/esm2022/lib/smart-table/smarttable.component.mjs +3 -3
  276. package/esm2022/lib/smart-table/smarttable.model.mjs +1 -1
  277. package/esm2022/lib/smart-table/smarttable.module.mjs +1 -1
  278. package/esm2022/lib/smart-table/smarttable.service.mjs +1 -1
  279. package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
  280. package/esm2022/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +3 -3
  281. package/esm2022/lib/smart-table/tables/table.mjs +1 -1
  282. package/esm2022/lib/smart-tree/projects.mjs +1 -1
  283. package/esm2022/lib/smart-tree/smarttree-generic.service.mjs +1 -1
  284. package/esm2022/lib/smart-tree/smarttree.component.mjs +5 -3
  285. package/esm2022/lib/smart-tree/smarttree.model.mjs +1 -1
  286. package/esm2022/lib/smart-tree/smarttree.module.mjs +1 -1
  287. package/esm2022/lib/smart-tree/smarttree.node.model.mjs +1 -1
  288. package/esm2022/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  289. package/esm2022/lib/smart-tree/smarttree.service.mjs +1 -1
  290. package/esm2022/lib/smart-tree/tree-api/api/tree.service.mjs +1 -1
  291. package/esm2022/lib/smart-tree/tree-api/configuration.mjs +1 -1
  292. package/esm2022/lib/smart-tree/tree-api/encoder.mjs +1 -1
  293. package/esm2022/lib/smart-tree/tree-api/param.mjs +1 -1
  294. package/esm2022/lib/smart-tree/tree-api/variables.mjs +1 -1
  295. package/esm2022/lib/smart-validation/named-validator.service.mjs +1 -1
  296. package/esm2022/lib/smart-validation/projects.mjs +1 -1
  297. package/esm2022/lib/smart-validation/smart-validation.module.mjs +1 -1
  298. package/esm2022/lib/smart-validation/smart-validation.types.mjs +1 -1
  299. package/esm2022/lib/view-context/api/api/api.mjs +1 -1
  300. package/esm2022/lib/view-context/api/api/view.service.mjs +1 -1
  301. package/esm2022/lib/view-context/api/api-default/binaryData.mjs +1 -1
  302. package/esm2022/lib/view-context/api/api-default/invocationError.mjs +1 -1
  303. package/esm2022/lib/view-context/api/api-default/invocationRequest.mjs +1 -1
  304. package/esm2022/lib/view-context/api/api.module.mjs +1 -1
  305. package/esm2022/lib/view-context/api/configuration.mjs +1 -1
  306. package/esm2022/lib/view-context/api/encoder.mjs +1 -1
  307. package/esm2022/lib/view-context/api/index.mjs +1 -1
  308. package/esm2022/lib/view-context/api/model/backgroundProcessInfo.mjs +1 -1
  309. package/esm2022/lib/view-context/api/model/badgeDescriptor.mjs +1 -1
  310. package/esm2022/lib/view-context/api/model/clipboardData.mjs +1 -1
  311. package/esm2022/lib/view-context/api/model/closeResult.mjs +1 -1
  312. package/esm2022/lib/view-context/api/model/componentConstraint.mjs +1 -1
  313. package/esm2022/lib/view-context/api/model/componentModel.mjs +1 -1
  314. package/esm2022/lib/view-context/api/model/componentModelChange.mjs +1 -1
  315. package/esm2022/lib/view-context/api/model/dataChange.mjs +1 -1
  316. package/esm2022/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  317. package/esm2022/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  318. package/esm2022/lib/view-context/api/model/deviceInfo.mjs +1 -1
  319. package/esm2022/lib/view-context/api/model/downloadedFile.mjs +1 -1
  320. package/esm2022/lib/view-context/api/model/iconPosition.mjs +1 -1
  321. package/esm2022/lib/view-context/api/model/imageResource.mjs +1 -1
  322. package/esm2022/lib/view-context/api/model/link.mjs +1 -1
  323. package/esm2022/lib/view-context/api/model/messageData.mjs +1 -1
  324. package/esm2022/lib/view-context/api/model/messageOption.mjs +1 -1
  325. package/esm2022/lib/view-context/api/model/messageOptionType.mjs +1 -1
  326. package/esm2022/lib/view-context/api/model/messageResult.mjs +1 -1
  327. package/esm2022/lib/view-context/api/model/messageTextType.mjs +1 -1
  328. package/esm2022/lib/view-context/api/model/messageType.mjs +1 -1
  329. package/esm2022/lib/view-context/api/model/models.mjs +1 -1
  330. package/esm2022/lib/view-context/api/model/multiComboBoxElement.mjs +1 -1
  331. package/esm2022/lib/view-context/api/model/multiComboBoxModel.mjs +1 -1
  332. package/esm2022/lib/view-context/api/model/namedValidator.mjs +1 -1
  333. package/esm2022/lib/view-context/api/model/openPendingData.mjs +1 -1
  334. package/esm2022/lib/view-context/api/model/serverRequestExecutionStat.mjs +1 -1
  335. package/esm2022/lib/view-context/api/model/serverRequestTrack.mjs +1 -1
  336. package/esm2022/lib/view-context/api/model/serverRequestType.mjs +1 -1
  337. package/esm2022/lib/view-context/api/model/smartLinkData.mjs +1 -1
  338. package/esm2022/lib/view-context/api/model/smartLinkMigrationStatus.mjs +1 -1
  339. package/esm2022/lib/view-context/api/model/statisticRecord.mjs +1 -1
  340. package/esm2022/lib/view-context/api/model/style.mjs +1 -1
  341. package/esm2022/lib/view-context/api/model/uiAction.mjs +1 -1
  342. package/esm2022/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
  343. package/esm2022/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  344. package/esm2022/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  345. package/esm2022/lib/view-context/api/model/uiActionDefinition.mjs +1 -1
  346. package/esm2022/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  347. package/esm2022/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  348. package/esm2022/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  349. package/esm2022/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  350. package/esm2022/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  351. package/esm2022/lib/view-context/api/model/uiActionSchedule.mjs +1 -1
  352. package/esm2022/lib/view-context/api/model/uiActionTooltip.mjs +1 -1
  353. package/esm2022/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  354. package/esm2022/lib/view-context/api/model/uploadWidgetType.mjs +1 -1
  355. package/esm2022/lib/view-context/api/model/uploadedFile.mjs +1 -1
  356. package/esm2022/lib/view-context/api/model/valueSet.mjs +1 -1
  357. package/esm2022/lib/view-context/api/model/view.mjs +1 -1
  358. package/esm2022/lib/view-context/api/model/viewApiError.mjs +1 -1
  359. package/esm2022/lib/view-context/api/model/viewConstraint.mjs +1 -1
  360. package/esm2022/lib/view-context/api/model/viewContext.mjs +1 -1
  361. package/esm2022/lib/view-context/api/model/viewContextChange.mjs +1 -1
  362. package/esm2022/lib/view-context/api/model/viewContextData.mjs +1 -1
  363. package/esm2022/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
  364. package/esm2022/lib/view-context/api/model/viewData.mjs +1 -1
  365. package/esm2022/lib/view-context/api/model/viewEventHandler.mjs +1 -1
  366. package/esm2022/lib/view-context/api/model/viewPlaceholder.mjs +1 -1
  367. package/esm2022/lib/view-context/api/model/viewState.mjs +1 -1
  368. package/esm2022/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  369. package/esm2022/lib/view-context/api/model/viewType.mjs +1 -1
  370. package/esm2022/lib/view-context/api/param.mjs +1 -1
  371. package/esm2022/lib/view-context/api/variables.mjs +1 -1
  372. package/esm2022/lib/view-context/invalid-fields-snack-bar/invalid-fields-snack-bar.component.mjs +3 -3
  373. package/esm2022/lib/view-context/message-dialog/message-dialog.component.mjs +3 -3
  374. package/esm2022/lib/view-context/projects.mjs +1 -1
  375. package/esm2022/lib/view-context/property-definition-data.mjs +1 -1
  376. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.component.mjs +3 -3
  377. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.constants.mjs +1 -1
  378. package/esm2022/lib/view-context/smart-ui-action/components/menu/menu.service.mjs +1 -1
  379. package/esm2022/lib/view-context/smart-ui-action/components/success-snack-bar/success-snack-bar.component.mjs +3 -3
  380. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/photo-capture-widget/photo-capture-widget.component.mjs +3 -3
  381. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/prime-file-uploader/prime-file-uploader.component.mjs +3 -3
  382. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.component.mjs +3 -3
  383. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/upload-widget.utils.mjs +1 -1
  384. package/esm2022/lib/view-context/smart-ui-action/components/upload-widget/voice-record-widget/voice-record-widget.component.mjs +3 -3
  385. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +3 -3
  386. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +1 -1
  387. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-dialog-button/ui-action-dialog-button.component.mjs +3 -3
  388. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  389. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +1 -1
  390. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +3 -3
  391. package/esm2022/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +1 -1
  392. package/esm2022/lib/view-context/smart-ui-action/ui-action-button/ui-action-button.component.mjs +3 -3
  393. package/esm2022/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +3 -3
  394. package/esm2022/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +1 -1
  395. package/esm2022/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  396. package/esm2022/lib/view-context/smart-ui-action/ui-action.service.mjs +2 -1
  397. package/esm2022/lib/view-context/smart-view-context-dialog.service.mjs +1 -1
  398. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.component.mjs +3 -3
  399. package/esm2022/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +1 -1
  400. package/esm2022/lib/view-context/smart-view-context.interceptor.mjs +1 -1
  401. package/esm2022/lib/view-context/smart-view-context.model.mjs +1 -1
  402. package/esm2022/lib/view-context/smart-view-context.module.mjs +7 -2
  403. package/esm2022/lib/view-context/smart-view-context.service.mjs +1 -1
  404. package/esm2022/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +1 -1
  405. package/esm2022/lib/view-context/utility/componentLibrary.mjs +1 -1
  406. package/esm2022/lib/view-context/utility/smart-object-utility.mjs +1 -1
  407. package/esm2022/lib/view-context/utility/smart-style-utility.mjs +1 -1
  408. package/esm2022/lib/view-context/value-api/api/api.mjs +1 -1
  409. package/esm2022/lib/view-context/value-api/api/value.service.mjs +1 -1
  410. package/esm2022/lib/view-context/value-api/api.module.mjs +1 -1
  411. package/esm2022/lib/view-context/value-api/configuration.mjs +1 -1
  412. package/esm2022/lib/view-context/value-api/encoder.mjs +1 -1
  413. package/esm2022/lib/view-context/value-api/index.mjs +1 -1
  414. package/esm2022/lib/view-context/value-api/model/genericValue.mjs +1 -1
  415. package/esm2022/lib/view-context/value-api/model/models.mjs +1 -1
  416. package/esm2022/lib/view-context/value-api/model/value.mjs +1 -1
  417. package/esm2022/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  418. package/esm2022/lib/view-context/value-api/model/valueSetDefinition.mjs +1 -1
  419. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionData.mjs +1 -1
  420. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionIdentifier.mjs +1 -1
  421. package/esm2022/lib/view-context/value-api/model/valueSetDefinitionKind.mjs +1 -1
  422. package/esm2022/lib/view-context/value-api/model/valueSetExpression.mjs +1 -1
  423. package/esm2022/lib/view-context/value-api/model/valueSetOperand.mjs +1 -1
  424. package/esm2022/lib/view-context/value-api/model/valueSetOperation.mjs +1 -1
  425. package/esm2022/lib/view-context/value-api/param.mjs +1 -1
  426. package/esm2022/lib/view-context/value-api/variables.mjs +1 -1
  427. package/esm2022/projects.mjs +1 -1
  428. package/fesm2022/smartbit4all-ng-client.mjs +346 -138
  429. package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
  430. package/lib/smart-form/api/model/models.d.ts +1 -0
  431. package/lib/smart-form/api/model/multiFileUploaderProperties.d.ts +19 -0
  432. package/lib/smart-form/api/model/selectionDefinition.d.ts +8 -0
  433. package/lib/smart-form/api/model/smartFormWidgetType.d.ts +1 -0
  434. package/lib/smart-form/projects.d.ts +1 -0
  435. package/lib/smart-form/services/smartform.layout-definition.service.d.ts +1 -0
  436. package/lib/smart-form/smartform.component.d.ts +2 -1
  437. package/lib/smart-form/smartform.form-model.d.ts +25 -2
  438. package/lib/smart-form/widgets/components/smart-multi-file-editor/smart-multi-file-editor.component.d.ts +57 -0
  439. package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +2 -1
  440. package/lib/smart-grid/smart-grid.component.d.ts +2 -1
  441. package/lib/smart-tree/smarttree.component.d.ts +2 -1
  442. package/lib/view-context/smart-view-context.module.d.ts +53 -52
  443. package/package.json +1 -1
  444. package/smartbit4all-ng-client-4.2.171.tgz +0 -0
  445. package/smartbit4all-ng-client-4.2.169.tgz +0 -0
@@ -13,4 +13,5 @@ export * from './highlightMacthingString-pipe';
13
13
  export * from './widgets/directives/comparable-dropdown.directive';
14
14
  export * from './widgets/directives/comparable-multiselect.directive';
15
15
  export * from './widgets/components/smart-file-editor/smart-file-editor.component';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsb0VBQW9FLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc21hcnRmb3JtXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydGZvcm0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL3NtYXJ0Zm9ybXdpZGdldC9zbWFydGZvcm13aWRnZXQuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydGZpbGV1cGxvYWRlci9zbWFydGZpbGV1cGxvYWRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9zbWFydGZvcm0ubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zbWFydGZvcm0ubGF5b3V0LWRlZmluaXRpb24uc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYXBpL21vZGVsL21vZGVscyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaGlnaGxpZ2h0TWFjdGhpbmdTdHJpbmctcGlwZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9kaXJlY3RpdmVzL2NvbXBhcmFibGUtZHJvcGRvd24uZGlyZWN0aXZlJztcclxuZXhwb3J0ICogZnJvbSAnLi93aWRnZXRzL2RpcmVjdGl2ZXMvY29tcGFyYWJsZS1tdWx0aXNlbGVjdC5kaXJlY3RpdmUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tcG9uZW50cy9zbWFydC1maWxlLWVkaXRvci9zbWFydC1maWxlLWVkaXRvci5jb21wb25lbnQnO1xyXG4iXX0=
16
+ export * from './widgets/components/smart-multi-file-editor/smart-multi-file-editor.component';
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFEQUFxRCxDQUFDO0FBQ3BFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvREFBb0QsQ0FBQztBQUNuRSxjQUFjLHVEQUF1RCxDQUFDO0FBQ3RFLGNBQWMsb0VBQW9FLENBQUM7QUFDbkYsY0FBYyxnRkFBZ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygc21hcnRmb3JtXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9zbWFydGZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9zbWFydGZvcm13aWRnZXQvc21hcnRmb3Jtd2lkZ2V0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3NtYXJ0ZmlsZXVwbG9hZGVyL3NtYXJ0ZmlsZXVwbG9hZGVyLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRmb3JtLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnRmb3JtLmZvcm0tbW9kZWwnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zbWFydGZvcm0ubGF5b3V0LWRlZmluaXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2FwaS9tb2RlbC9tb2RlbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9oaWdobGlnaHRNYWN0aGluZ1N0cmluZy1waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9kaXJlY3RpdmVzL2NvbXBhcmFibGUtZHJvcGRvd24uZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9kaXJlY3RpdmVzL2NvbXBhcmFibGUtbXVsdGlzZWxlY3QuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vd2lkZ2V0cy9jb21wb25lbnRzL3NtYXJ0LWZpbGUtZWRpdG9yL3NtYXJ0LWZpbGUtZWRpdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL3dpZGdldHMvY29tcG9uZW50cy9zbWFydC1tdWx0aS1maWxlLWVkaXRvci9zbWFydC1tdWx0aS1maWxlLWVkaXRvci5jb21wb25lbnQnO1xuIl19
@@ -1,5 +1,5 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { SmartFormWidgetDirection, SmartFormWidgetType, } from '../api';
2
+ import { SmartFormWidgetDirection, SmartFormWidgetType } from '../api';
3
3
  import * as i0 from "@angular/core";
4
4
  export class SmartformLayoutDefinitionService {
5
5
  static { this.DEFAULT_QUILL_MODULES = {
@@ -71,6 +71,8 @@ export class SmartformLayoutDefinitionService {
71
71
  return this.createRichText(config.layoutDefinition);
72
72
  case SmartFormWidgetType.FILE_UPLOADER:
73
73
  return this.createFileUploader(config.layoutDefinition);
74
+ case SmartFormWidgetType.MULTI_FILE_UPLOADER:
75
+ return this.createMultiFileUploader(config.layoutDefinition);
74
76
  case SmartFormWidgetType.MATRIX:
75
77
  return this.createMatrix(config.layoutDefinition);
76
78
  case SmartFormWidgetType.SORTABLE:
@@ -619,6 +621,24 @@ export class SmartformLayoutDefinitionService {
619
621
  };
620
622
  return widget;
621
623
  }
624
+ createMultiFileUploader(layoutDefinition) {
625
+ let widget = {
626
+ type: SmartFormWidgetType.MULTI_FILE_UPLOADER,
627
+ key: layoutDefinition.key,
628
+ toolbarId: layoutDefinition.toolbarId,
629
+ valueChangeMode: layoutDefinition.valueChangeMode,
630
+ label: layoutDefinition.label,
631
+ showLabel: layoutDefinition.showLabel,
632
+ cssClass: layoutDefinition.cssClass,
633
+ cssLabelClass: layoutDefinition.cssLabelClass,
634
+ labelPositionClass: layoutDefinition.labelPositionClass,
635
+ isFloatLabel: layoutDefinition.isFloatLabel,
636
+ style: layoutDefinition.style,
637
+ labelStyle: layoutDefinition.labelStyle,
638
+ multiFileUploaderProperties: layoutDefinition.properties?.['MULTI_FILE_UPLOADER_properties'],
639
+ };
640
+ return widget;
641
+ }
622
642
  createYoutubePlayer(layoutDefinition) {
623
643
  const { link, startSeconds, endSeconds } = this.extractYoutubePlayerProps(layoutDefinition);
624
644
  return {
@@ -668,4 +688,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
668
688
  providedIn: 'root',
669
689
  }]
670
690
  }], ctorParameters: () => [] });
671
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsR0FHcEIsTUFBTSxRQUFRLENBQUM7O0FBa0JoQixNQUFNLE9BQU8sZ0NBQWdDO2FBQ25CLDBCQUFxQixHQUFpQjtRQUM1RCxPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUU7Z0JBQ1QsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDO2dCQUNqRCxDQUFDLFlBQVksQ0FBQztnQkFDZCxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUM5QixDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDO2dCQUN6QyxDQUFDLE9BQU8sQ0FBQzthQUNWO1NBQ0Y7S0FDRixBQVY0QyxDQVUzQztJQUNGLGdCQUFlLENBQUM7SUFFVCxNQUFNLENBQUMsTUFBeUM7UUFDckQsSUFBSSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUV6QyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsZ0JBQXVDLEVBQUUsRUFBRTtZQUM1RSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO2dCQUM3QixHQUFHLE1BQU07Z0JBQ1QsZ0JBQWdCO2FBQ2pCLENBQUMsQ0FBQztZQUNILElBQUksTUFB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LHFDQUFxQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FDekYsQ0FBQztJQUNKLENBQUM7K0dBcHJCVSxnQ0FBZ0M7bUhBQWhDLGdDQUFnQyxjQUYvQixNQUFNOzs0RkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbixcclxuICBTbWFydEZvcm1XaWRnZXRUeXBlLFxyXG4gIFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbixcclxuICBUZXh0RmllbGRQcm9wZXJ0aWVzLFxyXG59IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IFNtYXJ0RmlsZVVwbG9hZGVyLCBTbWFydEZvcm1XaWRnZXQgfSBmcm9tICcuLi9zbWFydGZvcm0uZm9ybS1tb2RlbCc7XHJcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vc21hcnRmb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgUXVpbGxNb2R1bGVzIH0gZnJvbSAnbmd4LXF1aWxsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnIHtcclxuICBsYXlvdXREZWZpbml0aW9ucz86IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbltdO1xyXG4gIGxheW91dERlZmluaXRpb24/OiBTbWFydFdpZGdldERlZmluaXRpb247XHJcbiAgdXBsb2FkQ2FsbGJhY2s/OiAoa2V5OiBzdHJpbmcsIGZpbGVzOiBhbnlbXSkgPT4gdm9pZDtcclxuICBidXR0b25DYWxsYmFjaz86ICgodWlBY3Rpb246IGFueSkgPT4gdm9pZCkgfCAoKGtleTogc3RyaW5nKSA9PiB2b2lkKTtcclxuICB1aUFjdGlvbnM/OiBhbnlbXTtcclxuICB1aUFjdGlvbkRlc2NyaXB0b3JzPzogKHVpQWN0aW9uOiBhbnkpID0+IGFueTtcclxuICBtb2RlbD86IGFueTtcclxufVxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlIHtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1FVSUxMX01PRFVMRVM6IFF1aWxsTW9kdWxlcyA9IHtcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJywgJ2xpbmsnXSxcclxuICAgICAgICBbJ2NvZGUtYmxvY2snXSxcclxuICAgICAgICBbeyBoZWFkZXI6IDEgfSwgeyBoZWFkZXI6IDIgfV0sXHJcbiAgICAgICAgW3sgbGlzdDogJ29yZGVyZWQnIH0sIHsgbGlzdDogJ2J1bGxldCcgfV0sXHJcbiAgICAgICAgWydjbGVhbiddLFxyXG4gICAgICBdLFxyXG4gICAgfSxcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgcHVibGljIHJlbmRlcihjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xyXG4gICAgbGV0IHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcclxuXHJcbiAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbnM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5jcmVhdGVXaWRnZXQoe1xyXG4gICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgIHdpZGdldHMucHVzaCh3aWRnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gd2lkZ2V0cztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlV2lkZ2V0KFxyXG4gICAgY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWdcclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XHJcbiAgICBzd2l0Y2ggKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy50eXBlKSB7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29udGFpbmVyKGNvbmZpZywgY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUw6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTGFiZWwoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGQoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUzpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGRDaGlwcyhjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX05VTUJFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGROdW1iZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVA6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkTG9va3VwKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRvZ2dsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmFkaW9CdXR0b24oY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94Mihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VsZWN0KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uLCBjb25maWcubW9kZWwpO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU0VMRUNUX01VTFRJUExFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdE11bHRpcGxlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGVQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEYXRlVGltZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbWFnZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TVkc6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU3ZnKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCdXR0b24oY29uZmlnKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGl2aWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmljaFRleHQoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWxlVXBsb2FkZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1hdHJpeChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTb3J0YWJsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9udGhQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlWW91dHViZVBsYXllcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICB9XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZU1vbnRoUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUixcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVNYXRyaXgobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgaXNNdWx0aXBsZTogbGF5b3V0RGVmaW5pdGlvbi5tYXRyaXg/Lm11bHRpU2VsZWN0LFxyXG4gICAgICB2YWx1ZTogbGF5b3V0RGVmaW5pdGlvbi5tYXRyaXgsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVTb3J0YWJsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pIHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRSxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIHNvcnREZWZpbml0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNvcnREZWZpbml0aW9uID8/IHtcclxuICAgICAgICBrZXk6ICd1cmknLFxyXG4gICAgICAgIGRpc3BsYXlWYWx1ZTogJ2Rpc3BsYXlWYWx1ZScsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTGFiZWwobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICB3aWRnZXREZXNjcmlwdGlvbjogbGF5b3V0RGVmaW5pdGlvbi53aWRnZXREZXNjcmlwdGlvbixcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNvbnRhaW5lcihcclxuICAgIGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnLFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHZhbHVlTGlzdDogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IFtdO1xyXG5cclxuICAgIGxheW91dERlZmluaXRpb24uY2hpbGRyZW5Db21wb25lbnRzPy5mb3JFYWNoKChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pID0+IHtcclxuICAgICAgbGV0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0KHtcclxuICAgICAgICAuLi5jb25maWcsXHJcbiAgICAgICAgbGF5b3V0RGVmaW5pdGlvbixcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh3aWRnZXQpIHtcclxuICAgICAgICB2YWx1ZUxpc3QucHVzaCh3aWRnZXQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DT05UQUlORVIsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgZGlyZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLmRpcmVjdGlvbiA/PyBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MLFxyXG4gICAgICB2YWx1ZUxpc3QsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxELFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHByZWZpeDogbGF5b3V0RGVmaW5pdGlvbi5wcmVmaXgsXHJcbiAgICAgIHN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zdWZmaXgsXHJcbiAgICAgIG1hc2s6IGxheW91dERlZmluaXRpb24ubWFzayxcclxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxyXG4gICAgICBpY29uQ29sb3I6IGxheW91dERlZmluaXRpb24uaWNvbkNvbG9yLFxyXG4gICAgICBpY29uUG9zaXRpb246IGxheW91dERlZmluaXRpb24uaWNvblBvc2l0aW9uLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBpc1Bhc3N3b3JkOiBsYXlvdXREZWZpbml0aW9uLmlzUGFzc3dvcmQsXHJcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXHJcbiAgICAgIGZpbHRlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5maWx0ZXJFcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxyXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxyXG4gICAgICB0b29sYmFySWQ6IGxheW91dERlZmluaXRpb24udG9vbGJhcklkLFxyXG4gICAgICBpbnB1dE1vZGU6IGxheW91dERlZmluaXRpb24uaW5wdXRNb2RlLFxyXG4gICAgICB0ZXh0RmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnVEVYVF9GSUVMRF9wcm9wZXJ0aWVzJ10sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0RmllbGRDaGlwcyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZExvb2t1cChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0xPT0tVUCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB0b29sYmFySWQ6IGxheW91dERlZmluaXRpb24udG9vbGJhcklkLFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVUZXh0RmllbGROdW1iZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcclxuICAgICAgc3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnN1ZmZpeCxcclxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxyXG4gICAgICBpY29uQ29sb3I6IGxheW91dERlZmluaXRpb24uaWNvbkNvbG9yLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1gsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxyXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVSaWNoVGV4dChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgcXVpbGxNb2R1bGVzOiBRdWlsbE1vZHVsZXM7XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzICYmIGxheW91dERlZmluaXRpb24ucHJvcGVydGllc1sncXVpbGxNb2R1bGVzJ10pIHtcclxuICAgICAgcXVpbGxNb2R1bGVzID0gbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzWydxdWlsbE1vZHVsZXMnXSBhcyBRdWlsbE1vZHVsZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWlsbE1vZHVsZXMgPSBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZS5ERUZBVUxUX1FVSUxMX01PRFVMRVM7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhULFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIHF1aWxsTW9kdWxlcyxcclxuICAgICAgbWF4TGVuZ3RoOiBsYXlvdXREZWZpbml0aW9uLm1heExlbmd0aCxcclxuICAgICAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVG9nZ2xlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRSxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXHJcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXHJcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXHJcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcclxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcclxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcclxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlUmFkaW9CdXR0b24obGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlQ2hlY2tCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlQ2hlY2tCb3gyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxyXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxyXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXHJcbiAgICB9O1xyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgbW9kZWw/OiBhbnkpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5jb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVTZWxlY3RNdWx0aXBsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgIH07XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURhdGVQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgICAgZGF0ZUZpZWxkUHJvcGVydGllczogbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzPy5bJ0RBVEVfUElDS0VSX3Byb3BlcnRpZXMnXSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURhdGVUaW1lUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfVElNRV9QSUNLRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXHJcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXHJcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXHJcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcclxuICAgICAgZGF0ZUZpZWxkUHJvcGVydGllczogbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzPy5bJ0RBVEVfVElNRV9QSUNLRVJfcHJvcGVydGllcyddLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlSW1hZ2UobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSU1BR0UsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBpbWFnZVByb3BlcnRpZXM6IGxheW91dERlZmluaXRpb24ucHJvcGVydGllcz8uWydJTUFHRV9wcm9wZXJ0aWVzJ10sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVTdmcobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcclxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcclxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXHJcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b24oY29uZmlnOiBTbWFydGZvcm1MYXlvdXRDcmVhdGVXaWRnZXRDb25maWcpOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgdWlBY3Rpb246IGFueSA9IGNvbmZpZy51aUFjdGlvbnM/LmZpbmQoXHJcbiAgICAgICh1aUFjdGlvbjogYW55KSA9PiB1aUFjdGlvbi5jb2RlID09PSBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5XHJcbiAgICApO1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OLFxyXG4gICAgICBrZXk6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5rZXkhLFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWwhLFxyXG4gICAgICBzaG93TGFiZWw6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LnN0eWxlLFxyXG4gICAgICBsYWJlbFN0eWxlOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWxTdHlsZSxcclxuICAgICAgY2FsbGJhY2s6IGNvbmZpZy5idXR0b25DYWxsYmFjayEsXHJcbiAgICAgIHVpQWN0aW9uLFxyXG4gICAgICB1aUFjdGlvbkRlc2NyaXB0b3I6IGNvbmZpZy51aUFjdGlvbkRlc2NyaXB0b3JzISh1aUFjdGlvbiksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVEaXZpZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRmlsZVVwbG9hZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXHJcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBmaWxlVXBsb2FkZXJQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnRklMRV9VUExPQURFUl9wcm9wZXJ0aWVzJ10sXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVZb3V0dWJlUGxheWVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGNvbnN0IHsgbGluaywgc3RhcnRTZWNvbmRzLCBlbmRTZWNvbmRzIH0gPSB0aGlzLmV4dHJhY3RZb3V0dWJlUGxheWVyUHJvcHMobGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxyXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxyXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxyXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcclxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxyXG4gICAgICBsaW5rLFxyXG4gICAgICBzdGFydFNlY29uZHMsXHJcbiAgICAgIGVuZFNlY29uZHMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IHtcclxuICAgIGxpbms6IHN0cmluZztcclxuICAgIHN0YXJ0U2Vjb25kczogbnVtYmVyO1xyXG4gICAgZW5kU2Vjb25kcz86IG51bWJlcjtcclxuICB9IHtcclxuICAgIGNvbnN0IHByb3BzID0gbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzO1xyXG4gICAgaWYgKCFwcm9wcykge1xyXG4gICAgICB0aGlzLmxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uLCAncHJvcGVydGllcycpO1xyXG4gICAgICByZXR1cm4geyBsaW5rOiAnJywgc3RhcnRTZWNvbmRzOiAwIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbGluayA9IChwcm9wc1snbGluayddID8gKHByb3BzWydsaW5rJ10gYXMgU3RyaW5nKSA6ICcnKSBhcyBzdHJpbmc7XHJcbiAgICBpZiAoIWxpbmsgfHwgbGluay5sZW5ndGggPCAxKSB7XHJcbiAgICAgIHRoaXMubG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb24sICdsaW5rJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3RhcnRTZWNvbmRzID0gKHByb3BzWydzdGFydFNlY29uZHMnXSA/IChwcm9wc1snc3RhcnRTZWNvbmRzJ10gYXMgTnVtYmVyKSA6IDApIGFzIG51bWJlcjtcclxuICAgIGxldCBlbmRTZWNvbmRzOiBudW1iZXIgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBpZiAocHJvcHNbJ2VuZFNlY29uZHMnXSkge1xyXG4gICAgICBlbmRTZWNvbmRzID0gcHJvcHNbJ2VuZFNlY29uZHMnXSBhcyBOdW1iZXIgYXMgbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7IGxpbmssIHN0YXJ0U2Vjb25kcywgZW5kU2Vjb25kcyB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uLCBwcm9wOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgIGBQcm9wZXJ0eSA8JHtwcm9wfT4gbWlzc2luZyBmcm9tIGxheW91dCBkZWZpbml0aW9uOiAke0pTT04uc3RyaW5naWZ5KGxheW91dERlZmluaXRpb24pfWBcclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
691
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLHdCQUF3QixFQUFFLG1CQUFtQixFQUF5QixNQUFNLFFBQVEsQ0FBQzs7QUFrQjlGLE1BQU0sT0FBTyxnQ0FBZ0M7YUFDbkIsMEJBQXFCLEdBQWlCO1FBQzVELE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRTtnQkFDVCxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ2pELENBQUMsWUFBWSxDQUFDO2dCQUNkLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLENBQUMsT0FBTyxDQUFDO2FBQ1Y7U0FDRjtLQUNGLEFBVjRDLENBVTNDO0lBQ0YsZ0JBQWUsQ0FBQztJQUVULE1BQU0sQ0FBQyxNQUF5QztRQUNyRCxJQUFJLE9BQU8sR0FBMkIsRUFBRSxDQUFDO1FBRXpDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxnQkFBdUMsRUFBRSxFQUFFO1lBQzVFLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzdCLEdBQUcsTUFBTTtnQkFDVCxnQkFBZ0I7YUFDakIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxNQUFN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QVksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUN2QyxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxNQUFNLENBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFXLENBQUM7UUFDeEUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFFLEtBQUssQ0FBQyxjQUFjLENBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFXLENBQUM7UUFDL0YsSUFBSSxVQUFVLEdBQXVCLFNBQVMsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDO1lBQ3hCLFVBQVUsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFxQixDQUFDO1FBQ3ZELENBQUM7UUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRU8sa0JBQWtCLENBQUMsZ0JBQXVDLEVBQUUsSUFBWTtRQUM5RSxPQUFPLENBQUMsS0FBSyxDQUNYLGFBQWEsSUFBSSxxQ0FBcUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQ3pGLENBQUM7SUFDSixDQUFDOytHQTFzQlUsZ0NBQWdDO21IQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTs7NEZBRVAsZ0NBQWdDO2tCQUg1QyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldERpcmVjdGlvbiwgU21hcnRGb3JtV2lkZ2V0VHlwZSwgU21hcnRXaWRnZXREZWZpbml0aW9uIH0gZnJvbSAnLi4vYXBpJztcbmltcG9ydCB7IFNtYXJ0Rm9ybVdpZGdldCB9IGZyb20gJy4uL3NtYXJ0Zm9ybS5mb3JtLW1vZGVsJztcbmltcG9ydCB7IFZhbHVlIH0gZnJvbSAnLi4vc21hcnRmb3JtLm1vZGVsJztcbmltcG9ydCB7IFF1aWxsTW9kdWxlcyB9IGZyb20gJ25neC1xdWlsbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnIHtcbiAgbGF5b3V0RGVmaW5pdGlvbnM/OiBTbWFydFdpZGdldERlZmluaXRpb25bXTtcbiAgbGF5b3V0RGVmaW5pdGlvbj86IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbjtcbiAgdXBsb2FkQ2FsbGJhY2s/OiAoa2V5OiBzdHJpbmcsIGZpbGVzOiBhbnlbXSkgPT4gdm9pZDtcbiAgYnV0dG9uQ2FsbGJhY2s/OiAoKHVpQWN0aW9uOiBhbnkpID0+IHZvaWQpIHwgKChrZXk6IHN0cmluZykgPT4gdm9pZCk7XG4gIHVpQWN0aW9ucz86IGFueVtdO1xuICB1aUFjdGlvbkRlc2NyaXB0b3JzPzogKHVpQWN0aW9uOiBhbnkpID0+IGFueTtcbiAgbW9kZWw/OiBhbnk7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTbWFydGZvcm1MYXlvdXREZWZpbml0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfUVVJTExfTU9EVUxFUzogUXVpbGxNb2R1bGVzID0ge1xuICAgIHRvb2xiYXI6IHtcbiAgICAgIGNvbnRhaW5lcjogW1xuICAgICAgICBbJ2JvbGQnLCAnaXRhbGljJywgJ3VuZGVybGluZScsICdzdHJpa2UnLCAnbGluayddLFxuICAgICAgICBbJ2NvZGUtYmxvY2snXSxcbiAgICAgICAgW3sgaGVhZGVyOiAxIH0sIHsgaGVhZGVyOiAyIH1dLFxuICAgICAgICBbeyBsaXN0OiAnb3JkZXJlZCcgfSwgeyBsaXN0OiAnYnVsbGV0JyB9XSxcbiAgICAgICAgWydjbGVhbiddLFxuICAgICAgXSxcbiAgICB9LFxuICB9O1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIHJlbmRlcihjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xuICAgIGxldCB3aWRnZXRzOiBTbWFydEZvcm1XaWRnZXQ8YW55PltdID0gW107XG5cbiAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbnM/LmZvckVhY2goKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikgPT4ge1xuICAgICAgbGV0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0KHtcbiAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICBsYXlvdXREZWZpbml0aW9uLFxuICAgICAgfSk7XG4gICAgICBpZiAod2lkZ2V0KSB7XG4gICAgICAgIHdpZGdldHMucHVzaCh3aWRnZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHdpZGdldHM7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdpZGdldChcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZ1xuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB8IHVuZGVmaW5lZCB7XG4gICAgc3dpdGNoIChjb25maWcubGF5b3V0RGVmaW5pdGlvbj8udHlwZSkge1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkNPTlRBSU5FUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ29udGFpbmVyKGNvbmZpZywgY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVMYWJlbChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRDpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVUZXh0RmllbGRDaGlwcyhjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZE51bWJlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVA6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRGaWVsZExvb2t1cChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9CT1g6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRPR0dMRTpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVG9nZ2xlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJhZGlvQnV0dG9uKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1g6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hlY2tCb3gyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1Q6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdChjb25maWcubGF5b3V0RGVmaW5pdGlvbiwgY29uZmlnLm1vZGVsKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVNlbGVjdE11bHRpcGxlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVRpbWVQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVJbWFnZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuU1ZHOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTdmcoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQnV0dG9uKGNvbmZpZyk7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGl2aWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuUklDSF9URVhUOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVSaWNoVGV4dChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUjpcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRmlsZVVwbG9hZGVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NVUxUSV9GSUxFX1VQTE9BREVSOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNdWx0aUZpbGVVcGxvYWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNYXRyaXgoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTb3J0YWJsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTU9OVEhfUElDS0VSOlxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVNb250aFBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuWU9VVFVCRV9QTEFZRVI6XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVlvdXR1YmVQbGF5ZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1vbnRoUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVIsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1hdHJpeChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1BVFJJWCxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgaXNNdWx0aXBsZTogbGF5b3V0RGVmaW5pdGlvbi5tYXRyaXg/Lm11bHRpU2VsZWN0LFxuICAgICAgdmFsdWU6IGxheW91dERlZmluaXRpb24ubWF0cml4LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTb3J0YWJsZShsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pIHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRSxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxuICAgICAgc29ydERlZmluaXRpb246IGxheW91dERlZmluaXRpb24uc29ydERlZmluaXRpb24gPz8ge1xuICAgICAgICBrZXk6ICd1cmknLFxuICAgICAgICBkaXNwbGF5VmFsdWU6ICdkaXNwbGF5VmFsdWUnLFxuICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxhYmVsKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHdpZGdldERlc2NyaXB0aW9uOiBsYXlvdXREZWZpbml0aW9uLndpZGdldERlc2NyaXB0aW9uLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNvbnRhaW5lcihcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyxcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb25cbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB2YWx1ZUxpc3Q6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcblxuICAgIGxheW91dERlZmluaXRpb24uY2hpbGRyZW5Db21wb25lbnRzPy5mb3JFYWNoKChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pID0+IHtcbiAgICAgIGxldCB3aWRnZXQgPSB0aGlzLmNyZWF0ZVdpZGdldCh7XG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICAgICAgbGF5b3V0RGVmaW5pdGlvbixcbiAgICAgIH0pO1xuICAgICAgaWYgKHdpZGdldCkge1xuICAgICAgICB2YWx1ZUxpc3QucHVzaCh3aWRnZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGRpcmVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5kaXJlY3Rpb24gPz8gU21hcnRGb3JtV2lkZ2V0RGlyZWN0aW9uLkNPTCxcbiAgICAgIHZhbHVlTGlzdCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRCxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcbiAgICAgIHByZWZpeDogbGF5b3V0RGVmaW5pdGlvbi5wcmVmaXgsXG4gICAgICBzdWZmaXg6IGxheW91dERlZmluaXRpb24uc3VmZml4LFxuICAgICAgbWFzazogbGF5b3V0RGVmaW5pdGlvbi5tYXNrLFxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxuICAgICAgaWNvbkNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmljb25Db2xvcixcbiAgICAgIGljb25Qb3NpdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uUG9zaXRpb24sXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaXNQYXNzd29yZDogbGF5b3V0RGVmaW5pdGlvbi5pc1Bhc3N3b3JkLFxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcbiAgICAgIGZpbHRlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5maWx0ZXJFcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIG1heExlbmd0aDogbGF5b3V0RGVmaW5pdGlvbi5tYXhMZW5ndGgsXG4gICAgICBzaG93Q2hhcmFjdGVyTGltaXRTdWZmaXg6IGxheW91dERlZmluaXRpb24uc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4LFxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcbiAgICAgIGlucHV0TW9kZTogbGF5b3V0RGVmaW5pdGlvbi5pbnB1dE1vZGUsXG4gICAgICB0ZXh0RmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnVEVYVF9GSUVMRF9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkQ2hpcHMobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0ZJRUxEX0NISVBTLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkTG9va3VwKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9MT09LVVAsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgdG9vbGJhcklkOiBsYXlvdXREZWZpbml0aW9uLnRvb2xiYXJJZCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZE51bWJlcihsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfTlVNQkVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcbiAgICAgIHN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zdWZmaXgsXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXG4gICAgICBpY29uQ29sb3I6IGxheW91dERlZmluaXRpb24uaWNvbkNvbG9yLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVRleHRCb3gobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5URVhUX0JPWCxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXG4gICAgICBtYXhMZW5ndGg6IGxheW91dERlZmluaXRpb24ubWF4TGVuZ3RoLFxuICAgICAgc2hvd0NoYXJhY3RlckxpbWl0U3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVJpY2hUZXh0KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgcXVpbGxNb2R1bGVzOiBRdWlsbE1vZHVsZXM7XG4gICAgaWYgKGxheW91dERlZmluaXRpb24ucHJvcGVydGllcyAmJiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddKSB7XG4gICAgICBxdWlsbE1vZHVsZXMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXNbJ3F1aWxsTW9kdWxlcyddIGFzIFF1aWxsTW9kdWxlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcXVpbGxNb2R1bGVzID0gU21hcnRmb3JtTGF5b3V0RGVmaW5pdGlvblNlcnZpY2UuREVGQVVMVF9RVUlMTF9NT0RVTEVTO1xuICAgIH1cblxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgcXVpbGxNb2R1bGVzLFxuICAgICAgbWF4TGVuZ3RoOiBsYXlvdXREZWZpbml0aW9uLm1heExlbmd0aCxcbiAgICAgIHNob3dDaGFyYWN0ZXJMaW1pdFN1ZmZpeDogbGF5b3V0RGVmaW5pdGlvbi5zaG93Q2hhcmFjdGVyTGltaXRTdWZmaXgsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVUb2dnbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5UT0dHTEUsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVJhZGlvQnV0dG9uKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcbiAgICAgIGhpbnQ6IGxheW91dERlZmluaXRpb24uaGludCxcbiAgICAgIHNlcnZlckVycm9yTWVzc2FnZTogbGF5b3V0RGVmaW5pdGlvbi5lcnJvck1lc3NhZ2UsXG4gICAgICBzZXJ2ZXJFcnJvckljb246IGxheW91dERlZmluaXRpb24uZXJyb3JJY29uLFxuICAgICAgc2VydmVyRXJyb3JDb2xvcjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckNvbG9yLFxuICAgIH07XG5cbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZUNoZWNrQm94KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogbGF5b3V0RGVmaW5pdGlvbi52YWx1ZUNoYW5nZU1vZGUsXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVDaGVja0JveDIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5DSEVDS19CT1hfMixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgdmFsdWVMaXN0OiBbXSxcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXG4gICAgICBoaW50OiBsYXlvdXREZWZpbml0aW9uLmhpbnQsXG4gICAgICBzZXJ2ZXJFcnJvck1lc3NhZ2U6IGxheW91dERlZmluaXRpb24uZXJyb3JNZXNzYWdlLFxuICAgICAgc2VydmVyRXJyb3JJY29uOiBsYXlvdXREZWZpbml0aW9uLmVycm9ySWNvbixcbiAgICAgIHNlcnZlckVycm9yQ29sb3I6IGxheW91dERlZmluaXRpb24uZXJyb3JDb2xvcixcbiAgICB9O1xuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVNlbGVjdChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24sIG1vZGVsPzogYW55KTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1QsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcblxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0TXVsdGlwbGUobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUsXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxuICAgICAgbGFiZWxQb3NpdGlvbkNsYXNzOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsUG9zaXRpb25DbGFzcyxcbiAgICAgIGlzRmxvYXRMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5pc0Zsb2F0TGFiZWwsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICAgIHZhbHVlTGlzdDogW10sXG4gICAgICBzZWxlY3Rpb246IGxheW91dERlZmluaXRpb24uc2VsZWN0aW9uLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgfTtcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLmNvZGUsXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGVQaWNrZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1BJQ0tFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9QSUNLRVJfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZURhdGVUaW1lUGlja2VyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgc2VydmVyRXJyb3JNZXNzYWdlOiBsYXlvdXREZWZpbml0aW9uLmVycm9yTWVzc2FnZSxcbiAgICAgIHNlcnZlckVycm9ySWNvbjogbGF5b3V0RGVmaW5pdGlvbi5lcnJvckljb24sXG4gICAgICBzZXJ2ZXJFcnJvckNvbG9yOiBsYXlvdXREZWZpbml0aW9uLmVycm9yQ29sb3IsXG4gICAgICBkYXRlRmllbGRQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnREFURV9USU1FX1BJQ0tFUl9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG4gIHByaXZhdGUgY3JlYXRlSW1hZ2UobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JTUFHRSxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgaW1hZ2VQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnSU1BR0VfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZVN2ZyhsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNWRyxcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlQnV0dG9uKGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB1aUFjdGlvbjogYW55ID0gY29uZmlnLnVpQWN0aW9ucz8uZmluZChcbiAgICAgICh1aUFjdGlvbjogYW55KSA9PiB1aUFjdGlvbi5jb2RlID09PSBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5XG4gICAgKTtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQlVUVE9OLFxuICAgICAga2V5OiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ua2V5ISxcbiAgICAgIHZhbHVlQ2hhbmdlTW9kZTogY29uZmlnLmxheW91dERlZmluaXRpb24/LnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIGxhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWwhLFxuICAgICAgc2hvd0xhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5jc3NMYWJlbENsYXNzLFxuICAgICAgc3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5sYWJlbFN0eWxlLFxuICAgICAgY2FsbGJhY2s6IGNvbmZpZy5idXR0b25DYWxsYmFjayEsXG4gICAgICB1aUFjdGlvbixcbiAgICAgIHVpQWN0aW9uRGVzY3JpcHRvcjogY29uZmlnLnVpQWN0aW9uRGVzY3JpcHRvcnMhKHVpQWN0aW9uKSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVEaXZpZGVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuRElWSURFUixcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBzdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5zdHlsZSxcbiAgICAgIGxhYmVsU3R5bGU6IGxheW91dERlZmluaXRpb24ubGFiZWxTdHlsZSxcbiAgICB9O1xuICAgIHJldHVybiB3aWRnZXQ7XG4gIH1cbiAgcHJpdmF0ZSBjcmVhdGVGaWxlVXBsb2FkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5GSUxFX1VQTE9BREVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgZmlsZVVwbG9hZGVyUHJvcGVydGllczogbGF5b3V0RGVmaW5pdGlvbi5wcm9wZXJ0aWVzPy5bJ0ZJTEVfVVBMT0FERVJfcHJvcGVydGllcyddLFxuICAgIH07XG4gICAgcmV0dXJuIHdpZGdldDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTXVsdGlGaWxlVXBsb2FkZXIobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5NVUxUSV9GSUxFX1VQTE9BREVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIHRvb2xiYXJJZDogbGF5b3V0RGVmaW5pdGlvbi50b29sYmFySWQsXG4gICAgICB2YWx1ZUNoYW5nZU1vZGU6IGxheW91dERlZmluaXRpb24udmFsdWVDaGFuZ2VNb2RlLFxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXG4gICAgICBsYWJlbFBvc2l0aW9uQ2xhc3M6IGxheW91dERlZmluaXRpb24ubGFiZWxQb3NpdGlvbkNsYXNzLFxuICAgICAgaXNGbG9hdExhYmVsOiBsYXlvdXREZWZpbml0aW9uLmlzRmxvYXRMYWJlbCxcbiAgICAgIHN0eWxlOiBsYXlvdXREZWZpbml0aW9uLnN0eWxlLFxuICAgICAgbGFiZWxTdHlsZTogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFN0eWxlLFxuICAgICAgbXVsdGlGaWxlVXBsb2FkZXJQcm9wZXJ0aWVzOiBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM/LlsnTVVMVElfRklMRV9VUExPQURFUl9wcm9wZXJ0aWVzJ10sXG4gICAgfTtcbiAgICByZXR1cm4gd2lkZ2V0O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVZb3V0dWJlUGxheWVyKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcbiAgICBjb25zdCB7IGxpbmssIHN0YXJ0U2Vjb25kcywgZW5kU2Vjb25kcyB9ID0gdGhpcy5leHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb24pO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLllPVVRVQkVfUExBWUVSLFxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxuICAgICAgaGludDogbGF5b3V0RGVmaW5pdGlvbi5oaW50LFxuICAgICAgdmFsdWVDaGFuZ2VNb2RlOiBsYXlvdXREZWZpbml0aW9uLnZhbHVlQ2hhbmdlTW9kZSxcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcbiAgICAgIGxhYmVsUG9zaXRpb25DbGFzczogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbFBvc2l0aW9uQ2xhc3MsXG4gICAgICBpc0Zsb2F0TGFiZWw6IGxheW91dERlZmluaXRpb24uaXNGbG9hdExhYmVsLFxuICAgICAgc3R5bGU6IGxheW91dERlZmluaXRpb24uc3R5bGUsXG4gICAgICBsYWJlbFN0eWxlOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsU3R5bGUsXG4gICAgICBsaW5rLFxuICAgICAgc3RhcnRTZWNvbmRzLFxuICAgICAgZW5kU2Vjb25kcyxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBleHRyYWN0WW91dHViZVBsYXllclByb3BzKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbik6IHtcbiAgICBsaW5rOiBzdHJpbmc7XG4gICAgc3RhcnRTZWNvbmRzOiBudW1iZXI7XG4gICAgZW5kU2Vjb25kcz86IG51bWJlcjtcbiAgfSB7XG4gICAgY29uc3QgcHJvcHMgPSBsYXlvdXREZWZpbml0aW9uLnByb3BlcnRpZXM7XG4gICAgaWYgKCFwcm9wcykge1xuICAgICAgdGhpcy5sb2dNaXNzaW5nUHJvcGVydHkobGF5b3V0RGVmaW5pdGlvbiwgJ3Byb3BlcnRpZXMnKTtcbiAgICAgIHJldHVybiB7IGxpbms6ICcnLCBzdGFydFNlY29uZHM6IDAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5rID0gKHByb3BzWydsaW5rJ10gPyAocHJvcHNbJ2xpbmsnXSBhcyBTdHJpbmcpIDogJycpIGFzIHN0cmluZztcbiAgICBpZiAoIWxpbmsgfHwgbGluay5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmxvZ01pc3NpbmdQcm9wZXJ0eShsYXlvdXREZWZpbml0aW9uLCAnbGluaycpO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0U2Vjb25kcyA9IChwcm9wc1snc3RhcnRTZWNvbmRzJ10gPyAocHJvcHNbJ3N0YXJ0U2Vjb25kcyddIGFzIE51bWJlcikgOiAwKSBhcyBudW1iZXI7XG4gICAgbGV0IGVuZFNlY29uZHM6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHNbJ2VuZFNlY29uZHMnXSkge1xuICAgICAgZW5kU2Vjb25kcyA9IHByb3BzWydlbmRTZWNvbmRzJ10gYXMgTnVtYmVyIGFzIG51bWJlcjtcbiAgICB9XG5cbiAgICByZXR1cm4geyBsaW5rLCBzdGFydFNlY29uZHMsIGVuZFNlY29uZHMgfTtcbiAgfVxuXG4gIHByaXZhdGUgbG9nTWlzc2luZ1Byb3BlcnR5KGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbiwgcHJvcDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIGBQcm9wZXJ0eSA8JHtwcm9wfT4gbWlzc2luZyBmcm9tIGxheW91dCBkZWZpbml0aW9uOiAke0pTT04uc3RyaW5naWZ5KGxheW91dERlZmluaXRpb24pfWBcbiAgICApO1xuICB9XG59XG4iXX0=