@smartbit4all/ng-client 2.2.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/esm2020/lib/component-factory-service/component-factory-service.module.mjs +17 -0
  2. package/esm2020/lib/component-factory-service/component-factory-service.service.mjs +35 -0
  3. package/esm2020/lib/component-factory-service/projects.mjs +6 -0
  4. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.component.mjs +1 -1
  5. package/esm2020/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.mjs +5 -5
  6. package/esm2020/lib/session/dev-tool/smart-dev-tool-floating-button/smart-dev-tool-floating-button.component.mjs +1 -1
  7. package/esm2020/lib/session/dev-tool/smart-dev-tool.service.mjs +2 -2
  8. package/esm2020/lib/session/smart-session.module.mjs +18 -18
  9. package/esm2020/lib/session/smart-session.service.mjs +2 -2
  10. package/esm2020/lib/session/smart-timer/smart-session-timer.service.mjs +2 -2
  11. package/esm2020/lib/smart-client/smart-authentication.service.mjs +2 -2
  12. package/esm2020/lib/smart-client/smart-component-api-client.mjs +2 -3
  13. package/esm2020/lib/smart-client/smart-file-uploader/smart-file-uploader.component.mjs +2 -2
  14. package/esm2020/lib/smart-component-layout/api/api/api.mjs +4 -0
  15. package/esm2020/lib/smart-component-layout/api/api/default.service.mjs +133 -0
  16. package/esm2020/lib/smart-component-layout/api/api.module.mjs +40 -0
  17. package/esm2020/lib/smart-component-layout/api/configuration.mjs +91 -0
  18. package/esm2020/lib/smart-component-layout/api/encoder.mjs +19 -0
  19. package/esm2020/lib/smart-component-layout/api/index.mjs +7 -0
  20. package/esm2020/lib/smart-component-layout/api/model/componentType.mjs +17 -0
  21. package/esm2020/lib/smart-component-layout/api/model/componentWidgetType.mjs +17 -0
  22. package/esm2020/lib/smart-component-layout/api/model/layoutDirection.mjs +16 -0
  23. package/esm2020/lib/smart-component-layout/api/model/models.mjs +6 -0
  24. package/esm2020/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +2 -0
  25. package/esm2020/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.mjs +2 -0
  26. package/esm2020/lib/smart-component-layout/api/param.mjs +2 -0
  27. package/esm2020/lib/smart-component-layout/api/variables.mjs +9 -0
  28. package/esm2020/lib/smart-component-layout/projects.mjs +8 -0
  29. package/esm2020/lib/smart-component-layout/smart-component-layout-utility.mjs +7 -0
  30. package/esm2020/lib/smart-component-layout/smart-component-layout.component.mjs +123 -0
  31. package/esm2020/lib/smart-component-layout/smart-component-layout.module.mjs +43 -0
  32. package/esm2020/lib/smart-dialog/projects.mjs +8 -0
  33. package/esm2020/lib/smart-dialog/smartdialog.component.mjs +54 -0
  34. package/esm2020/lib/smart-dialog/smartdialog.model.mjs +16 -0
  35. package/esm2020/lib/smart-dialog/smartdialog.module.mjs +49 -0
  36. package/esm2020/lib/smart-dialog/smartdialog.service.mjs +60 -0
  37. package/esm2020/lib/smart-expandable-section/expandable-section.component.mjs +82 -0
  38. package/esm2020/lib/smart-expandable-section/expandable-section.model.mjs +12 -0
  39. package/esm2020/lib/smart-expandable-section/projects.mjs +8 -0
  40. package/esm2020/lib/smart-expandable-section/smart-expandable-section.module.mjs +51 -0
  41. package/esm2020/lib/smart-expandable-section/smart-expandable-section.service.mjs +14 -0
  42. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.mjs +16 -0
  43. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderField.mjs +2 -0
  44. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.mjs +9 -0
  45. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.mjs +2 -0
  46. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionData.mjs +2 -0
  47. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionDataType.mjs +19 -0
  48. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionField.mjs +2 -0
  49. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldList.mjs +2 -0
  50. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.mjs +25 -0
  51. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionList.mjs +2 -0
  52. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperandData.mjs +2 -0
  53. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOperation.mjs +31 -0
  54. package/esm2020/lib/smart-filter/api/filter/model/filterExpressionOrderBy.mjs +19 -0
  55. package/esm2020/lib/smart-filter/api/filter/model/model.mjs +16 -0
  56. package/esm2020/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.mjs +2 -0
  57. package/esm2020/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.mjs +13 -0
  58. package/esm2020/lib/smart-filter/api/value/model/value.mjs +13 -0
  59. package/esm2020/lib/smart-filter/projects.mjs +9 -0
  60. package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.mjs +14 -0
  61. package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.mjs +159 -0
  62. package/esm2020/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.mjs +45 -0
  63. package/esm2020/lib/smart-filter/smart-filter/smart-filter.component.mjs +36 -0
  64. package/esm2020/lib/smart-filter/smart-filter/smart-filter.service.mjs +31 -0
  65. package/esm2020/lib/smart-filter/smart-filter.model.mjs +13 -0
  66. package/esm2020/lib/smart-filter/smart-filter.module.mjs +33 -0
  67. package/esm2020/lib/smart-form/api/api/api.mjs +4 -0
  68. package/esm2020/lib/smart-form/api/api/default.service.mjs +133 -0
  69. package/esm2020/lib/smart-form/api/api.module.mjs +40 -0
  70. package/esm2020/lib/smart-form/api/configuration.mjs +91 -0
  71. package/esm2020/lib/smart-form/api/encoder.mjs +19 -0
  72. package/esm2020/lib/smart-form/api/index.mjs +7 -0
  73. package/esm2020/lib/smart-form/api/model/models.mjs +8 -0
  74. package/esm2020/lib/smart-form/api/model/propertyMapping.mjs +13 -0
  75. package/esm2020/lib/smart-form/api/model/selectionDefinition.mjs +8 -0
  76. package/esm2020/lib/smart-form/api/model/smartFormWidgetDirection.mjs +16 -0
  77. package/esm2020/lib/smart-form/api/model/smartFormWidgetType.mjs +44 -0
  78. package/esm2020/lib/smart-form/api/model/smartLayoutDefinition.mjs +2 -0
  79. package/esm2020/lib/smart-form/api/model/smartMatrixModel.mjs +2 -0
  80. package/esm2020/lib/smart-form/api/model/smartWidgetDefinition.mjs +2 -0
  81. package/esm2020/lib/smart-form/api/param.mjs +2 -0
  82. package/esm2020/lib/smart-form/api/variables.mjs +9 -0
  83. package/esm2020/lib/smart-form/projects.mjs +13 -0
  84. package/esm2020/lib/smart-form/services/smartform.layout-definition.service.mjs +397 -0
  85. package/esm2020/lib/smart-form/services/smartform.service.mjs +483 -0
  86. package/esm2020/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.mjs +14 -0
  87. package/esm2020/lib/smart-form/smartfileuploader/smartfileuploader.component.mjs +78 -0
  88. package/esm2020/lib/smart-form/smartfileuploader/smartfileuploader.model.mjs +2 -0
  89. package/esm2020/lib/smart-form/smartform.component.mjs +117 -0
  90. package/esm2020/lib/smart-form/smartform.form-model.mjs +2 -0
  91. package/esm2020/lib/smart-form/smartform.model.mjs +38 -0
  92. package/esm2020/lib/smart-form/smartform.module.mjs +146 -0
  93. package/esm2020/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.mjs +76 -0
  94. package/esm2020/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +589 -0
  95. package/esm2020/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.mjs +59 -0
  96. package/esm2020/lib/smart-form/widgets/smartformwidget/trackCaps.directive.mjs +31 -0
  97. package/esm2020/lib/smart-grid/api/grid-api/api/api.mjs +4 -0
  98. package/esm2020/lib/smart-grid/api/grid-api/api/grid.service.mjs +372 -0
  99. package/esm2020/lib/smart-grid/api/grid-api/api.module.mjs +40 -0
  100. package/esm2020/lib/smart-grid/api/grid-api/configuration.mjs +72 -0
  101. package/esm2020/lib/smart-grid/api/grid-api/encoder.mjs +19 -0
  102. package/esm2020/lib/smart-grid/api/grid-api/index.mjs +6 -0
  103. package/esm2020/lib/smart-grid/api/grid-api/model/gridColumnMeta.mjs +13 -0
  104. package/esm2020/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.mjs +21 -0
  105. package/esm2020/lib/smart-grid/api/grid-api/model/gridModel.mjs +2 -0
  106. package/esm2020/lib/smart-grid/api/grid-api/model/gridPage.mjs +2 -0
  107. package/esm2020/lib/smart-grid/api/grid-api/model/gridRow.mjs +2 -0
  108. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionMode.mjs +17 -0
  109. package/esm2020/lib/smart-grid/api/grid-api/model/gridSelectionType.mjs +16 -0
  110. package/esm2020/lib/smart-grid/api/grid-api/model/gridServerModel.mjs +2 -0
  111. package/esm2020/lib/smart-grid/api/grid-api/model/gridUpdateData.mjs +2 -0
  112. package/esm2020/lib/smart-grid/api/grid-api/model/gridView.mjs +2 -0
  113. package/esm2020/lib/smart-grid/api/grid-api/model/gridViewDescriptor.mjs +8 -0
  114. package/esm2020/lib/smart-grid/api/grid-api/model/models.mjs +12 -0
  115. package/esm2020/lib/smart-grid/api/grid-api/variables.mjs +9 -0
  116. package/esm2020/lib/smart-grid/components/expandable-grid/expandable-grid.component.mjs +20 -0
  117. package/esm2020/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.mjs +56 -0
  118. package/esm2020/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.mjs +166 -0
  119. package/esm2020/lib/smart-grid/models/model.mjs +28 -0
  120. package/esm2020/lib/smart-grid/projects.mjs +9 -0
  121. package/esm2020/lib/smart-grid/smart-grid.component.mjs +452 -0
  122. package/esm2020/lib/smart-grid/smart-grid.module.mjs +69 -0
  123. package/esm2020/lib/smart-grid/smart-grid.service.mjs +71 -0
  124. package/esm2020/lib/smart-icon/projects.mjs +7 -0
  125. package/esm2020/lib/smart-icon/smart-icon/smart-icon.component.mjs +48 -0
  126. package/esm2020/lib/smart-icon/smart-icon.module.mjs +22 -0
  127. package/esm2020/lib/smart-icon/smart-icon.service.mjs +45 -0
  128. package/esm2020/lib/smart-navbar/projects.mjs +8 -0
  129. package/esm2020/lib/smart-navbar/smart-navbar.component.mjs +61 -0
  130. package/esm2020/lib/smart-navbar/smart-navbar.model.mjs +6 -0
  131. package/esm2020/lib/smart-navbar/smart-navbar.module.mjs +65 -0
  132. package/esm2020/lib/smart-navbar/smart-navbar.service.mjs +14 -0
  133. package/esm2020/lib/smart-navigation/projects.mjs +6 -0
  134. package/esm2020/lib/smart-navigation/smart-navigation.interface.mjs +2 -0
  135. package/esm2020/lib/smart-navigation/smart-navigation.module.mjs +18 -0
  136. package/esm2020/lib/smart-navigation/smart-navigation.service.mjs +56 -0
  137. package/esm2020/lib/smart-ng-client.module.mjs +16 -4
  138. package/esm2020/lib/smart-subject/projects.mjs +5 -0
  139. package/esm2020/lib/smart-subject/smart-subject.mjs +21 -0
  140. package/esm2020/lib/smart-tab-group/projects.mjs +8 -0
  141. package/esm2020/lib/smart-tab-group/smart-tab-group.component.mjs +43 -0
  142. package/esm2020/lib/smart-tab-group/smart-tab-group.module.mjs +25 -0
  143. package/esm2020/lib/smart-tab-group/smart-tab-group.service.mjs +14 -0
  144. package/esm2020/lib/smart-tab-group/tab-content/tab-content.component.mjs +31 -0
  145. package/esm2020/lib/smart-tab-group/tab-group-simplified/tab-group.component.mjs +66 -0
  146. package/esm2020/lib/smart-tab-group/tabTile.model.mjs +2 -0
  147. package/esm2020/lib/smart-table/components/loading/loading.component.mjs +15 -0
  148. package/esm2020/lib/smart-table/projects.mjs +9 -0
  149. package/esm2020/lib/smart-table/smarttable.component.mjs +98 -0
  150. package/esm2020/lib/smart-table/smarttable.date-pipe.mjs +43 -0
  151. package/esm2020/lib/smart-table/smarttable.model.mjs +167 -0
  152. package/esm2020/lib/smart-table/smarttable.module.mjs +89 -0
  153. package/esm2020/lib/smart-table/smarttable.service.mjs +14 -0
  154. package/esm2020/lib/smart-table/tables/material-table/material-table.component.mjs +36 -0
  155. package/esm2020/lib/smart-table/tables/mobile-table/mobile-table.component.mjs +22 -0
  156. package/esm2020/lib/smart-table/tables/table.mjs +411 -0
  157. package/esm2020/lib/smart-tree/smarttree.component.mjs +2 -2
  158. package/esm2020/lib/smart-tree/smarttree.model.mjs +1 -1
  159. package/esm2020/lib/smart-tree/smarttree.module.mjs +2 -2
  160. package/esm2020/lib/smart-tree/smarttree.service.interface.mjs +1 -1
  161. package/esm2020/lib/smart-tree/smarttree.service.mjs +1 -1
  162. package/esm2020/lib/view-context/api/api/api.mjs +1 -1
  163. package/esm2020/lib/view-context/api/api/view.service.mjs +1 -1
  164. package/esm2020/lib/view-context/api/api.module.mjs +1 -1
  165. package/esm2020/lib/view-context/api/configuration.mjs +1 -1
  166. package/esm2020/lib/view-context/api/encoder.mjs +1 -1
  167. package/esm2020/lib/view-context/api/index.mjs +1 -1
  168. package/esm2020/lib/view-context/api/model/closeResult.mjs +1 -1
  169. package/esm2020/lib/view-context/api/model/componentConstraint.mjs +1 -1
  170. package/esm2020/lib/view-context/api/model/componentModel.mjs +1 -1
  171. package/esm2020/lib/view-context/api/model/componentModelChange.mjs +1 -1
  172. package/esm2020/lib/view-context/api/model/dataChange.mjs +1 -1
  173. package/esm2020/lib/view-context/api/model/dataChangeEvent.mjs +1 -1
  174. package/esm2020/lib/view-context/api/model/dataChangeKind.mjs +1 -1
  175. package/esm2020/lib/view-context/api/model/messageData.mjs +1 -1
  176. package/esm2020/lib/view-context/api/model/messageOption.mjs +1 -1
  177. package/esm2020/lib/view-context/api/model/messageOptionType.mjs +1 -1
  178. package/esm2020/lib/view-context/api/model/messageResult.mjs +1 -1
  179. package/esm2020/lib/view-context/api/model/messageType.mjs +1 -1
  180. package/esm2020/lib/view-context/api/model/models.mjs +1 -1
  181. package/esm2020/lib/view-context/api/model/openPendingData.mjs +1 -1
  182. package/esm2020/lib/view-context/api/model/smartLinkData.mjs +1 -1
  183. package/esm2020/lib/view-context/api/model/uiAction.mjs +1 -1
  184. package/esm2020/lib/view-context/api/model/uiActionButtonDescriptor.mjs +1 -1
  185. package/esm2020/lib/view-context/api/model/uiActionButtonIconPos.mjs +1 -1
  186. package/esm2020/lib/view-context/api/model/uiActionButtonType.mjs +1 -1
  187. package/esm2020/lib/view-context/api/model/uiActionConstraint.mjs +1 -1
  188. package/esm2020/lib/view-context/api/model/uiActionDescriptor.mjs +1 -1
  189. package/esm2020/lib/view-context/api/model/uiActionDialogDescriptor.mjs +1 -1
  190. package/esm2020/lib/view-context/api/model/uiActionFeedbackType.mjs +1 -1
  191. package/esm2020/lib/view-context/api/model/uiActionInputType.mjs +1 -1
  192. package/esm2020/lib/view-context/api/model/uiActionRequest.mjs +1 -1
  193. package/esm2020/lib/view-context/api/model/uiActionUploadDescriptor.mjs +1 -1
  194. package/esm2020/lib/view-context/api/model/valueSet.mjs +1 -1
  195. package/esm2020/lib/view-context/api/model/view.mjs +1 -1
  196. package/esm2020/lib/view-context/api/model/viewApiError.mjs +1 -1
  197. package/esm2020/lib/view-context/api/model/viewConstraint.mjs +1 -1
  198. package/esm2020/lib/view-context/api/model/viewContext.mjs +1 -1
  199. package/esm2020/lib/view-context/api/model/viewContextChange.mjs +1 -1
  200. package/esm2020/lib/view-context/api/model/viewContextData.mjs +1 -1
  201. package/esm2020/lib/view-context/api/model/viewContextUpdate.mjs +1 -1
  202. package/esm2020/lib/view-context/api/model/viewData.mjs +1 -1
  203. package/esm2020/lib/view-context/api/model/viewState.mjs +1 -1
  204. package/esm2020/lib/view-context/api/model/viewStateUpdate.mjs +1 -1
  205. package/esm2020/lib/view-context/api/model/viewType.mjs +1 -1
  206. package/esm2020/lib/view-context/api/param.mjs +1 -1
  207. package/esm2020/lib/view-context/api/variables.mjs +1 -1
  208. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.component.mjs +1 -1
  209. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.mjs +3 -3
  210. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.mjs +3 -3
  211. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.mjs +3 -3
  212. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.mjs +8 -7
  213. package/esm2020/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.mjs +3 -3
  214. package/esm2020/lib/view-context/smart-ui-action/ui-action-toolbar.component.mjs +4 -3
  215. package/esm2020/lib/view-context/smart-ui-action/ui-action.descriptor.service.mjs +2 -2
  216. package/esm2020/lib/view-context/smart-ui-action/ui-action.model.mjs +1 -1
  217. package/esm2020/lib/view-context/smart-ui-action/ui-action.service.mjs +2 -2
  218. package/esm2020/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.mjs +2 -2
  219. package/esm2020/lib/view-context/smart-view-context.module.mjs +3 -3
  220. package/esm2020/lib/view-context/smart-view-context.service.mjs +4 -4
  221. package/esm2020/lib/view-context/smart-view-redirect/smart-view-redirect.mjs +9 -9
  222. package/esm2020/lib/view-context/value-api/model/valueSetData.mjs +1 -1
  223. package/esm2020/projects.mjs +15 -3
  224. package/fesm2015/smartbit4all-ng-client.mjs +9465 -3578
  225. package/fesm2015/smartbit4all-ng-client.mjs.map +1 -1
  226. package/fesm2020/smartbit4all-ng-client.mjs +9275 -3460
  227. package/fesm2020/smartbit4all-ng-client.mjs.map +1 -1
  228. package/lib/component-factory-service/component-factory-service.module.d.ts +6 -0
  229. package/lib/component-factory-service/component-factory-service.service.d.ts +13 -0
  230. package/lib/component-factory-service/projects.d.ts +2 -0
  231. package/lib/session/dev-tool/smart-dev-tool-dialog/smart-dev-tool-dialog.service.d.ts +1 -1
  232. package/lib/session/smart-session.module.d.ts +1 -1
  233. package/lib/smart-client/smart-component-api-client.d.ts +3 -4
  234. package/lib/smart-client/smart-file-uploader/smart-file-uploader.component.d.ts +3 -3
  235. package/lib/smart-component-layout/api/api/api.d.ts +3 -0
  236. package/lib/smart-component-layout/api/api/default.service.d.ts +33 -0
  237. package/lib/smart-component-layout/api/api.module.d.ts +11 -0
  238. package/lib/smart-component-layout/api/configuration.d.ts +104 -0
  239. package/lib/smart-component-layout/api/encoder.d.ts +11 -0
  240. package/lib/smart-component-layout/api/index.d.ts +6 -0
  241. package/lib/smart-component-layout/api/model/componentType.d.ts +17 -0
  242. package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +17 -0
  243. package/lib/smart-component-layout/api/model/layoutDirection.d.ts +16 -0
  244. package/lib/smart-component-layout/api/model/models.d.ts +5 -0
  245. package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +29 -0
  246. package/lib/smart-component-layout/api/model/smartComponentWidgetDefinition.d.ts +21 -0
  247. package/lib/smart-component-layout/api/param.d.ts +37 -0
  248. package/lib/smart-component-layout/api/variables.d.ts +8 -0
  249. package/lib/smart-component-layout/projects.d.ts +4 -0
  250. package/lib/smart-component-layout/smart-component-layout-utility.d.ts +4 -0
  251. package/lib/smart-component-layout/smart-component-layout.component.d.ts +35 -0
  252. package/lib/smart-component-layout/smart-component-layout.module.d.ts +13 -0
  253. package/lib/smart-dialog/projects.d.ts +4 -0
  254. package/lib/smart-dialog/smartdialog.component.d.ts +19 -0
  255. package/lib/smart-dialog/smartdialog.model.d.ts +67 -0
  256. package/lib/smart-dialog/smartdialog.module.d.ts +14 -0
  257. package/lib/smart-dialog/smartdialog.service.d.ts +20 -0
  258. package/lib/smart-expandable-section/expandable-section.component.d.ts +25 -0
  259. package/lib/smart-expandable-section/expandable-section.model.d.ts +40 -0
  260. package/lib/smart-expandable-section/projects.d.ts +4 -0
  261. package/lib/smart-expandable-section/smart-expandable-section.module.d.ts +15 -0
  262. package/lib/smart-expandable-section/smart-expandable-section.service.d.ts +6 -0
  263. package/lib/smart-filter/api/filter/model/filterExpressionBoolOperator.d.ts +16 -0
  264. package/lib/smart-filter/api/filter/model/filterExpressionBuilderField.d.ts +27 -0
  265. package/lib/smart-filter/api/filter/model/filterExpressionBuilderGroup.d.ts +39 -0
  266. package/lib/smart-filter/api/filter/model/filterExpressionBuilderModel.d.ts +21 -0
  267. package/lib/smart-filter/api/filter/model/filterExpressionData.d.ts +27 -0
  268. package/lib/smart-filter/api/filter/model/filterExpressionDataType.d.ts +19 -0
  269. package/lib/smart-filter/api/filter/model/filterExpressionField.d.ts +37 -0
  270. package/lib/smart-filter/api/filter/model/filterExpressionFieldList.d.ts +21 -0
  271. package/lib/smart-filter/api/filter/model/filterExpressionFieldWidgetType.d.ts +25 -0
  272. package/lib/smart-filter/api/filter/model/filterExpressionList.d.ts +18 -0
  273. package/lib/smart-filter/api/filter/model/filterExpressionOperandData.d.ts +24 -0
  274. package/lib/smart-filter/api/filter/model/filterExpressionOperation.d.ts +31 -0
  275. package/lib/smart-filter/api/filter/model/filterExpressionOrderBy.d.ts +28 -0
  276. package/lib/smart-filter/api/filter/model/model.d.ts +15 -0
  277. package/lib/smart-filter/api/filter/model/searchIndexObjectDefinitionData.d.ts +19 -0
  278. package/lib/smart-filter/api/filter/model/searchIndexPropertyDefinitionData.d.ts +18 -0
  279. package/lib/smart-filter/api/value/model/value.d.ts +29 -0
  280. package/lib/smart-filter/projects.d.ts +5 -0
  281. package/lib/smart-filter/smart-filter/components/smart-filter-expression-field/smart-filter-expression-field.component.d.ts +8 -0
  282. package/lib/smart-filter/smart-filter/components/smart-filter-simple/components/smart-filter-simple-field/smart-filter-simple-field.component.d.ts +31 -0
  283. package/lib/smart-filter/smart-filter/components/smart-filter-simple/smart-filter-simple.component.d.ts +18 -0
  284. package/lib/smart-filter/smart-filter/smart-filter.component.d.ts +15 -0
  285. package/lib/smart-filter/smart-filter/smart-filter.service.d.ts +16 -0
  286. package/lib/smart-filter/smart-filter.model.d.ts +25 -0
  287. package/lib/smart-filter/smart-filter.module.d.ts +15 -0
  288. package/lib/smart-form/api/api/api.d.ts +3 -0
  289. package/lib/smart-form/api/api/default.service.d.ts +33 -0
  290. package/lib/smart-form/api/api.module.d.ts +11 -0
  291. package/lib/smart-form/api/configuration.d.ts +104 -0
  292. package/lib/smart-form/api/encoder.d.ts +11 -0
  293. package/lib/smart-form/api/index.d.ts +6 -0
  294. package/lib/smart-form/api/model/models.d.ts +7 -0
  295. package/lib/smart-form/api/model/propertyMapping.d.ts +24 -0
  296. package/lib/smart-form/api/model/selectionDefinition.d.ts +40 -0
  297. package/lib/smart-form/api/model/smartFormWidgetDirection.d.ts +16 -0
  298. package/lib/smart-form/api/model/smartFormWidgetType.d.ts +42 -0
  299. package/lib/smart-form/api/model/smartLayoutDefinition.d.ts +15 -0
  300. package/lib/smart-form/api/model/smartMatrixModel.d.ts +28 -0
  301. package/lib/smart-form/api/model/smartWidgetDefinition.d.ts +77 -0
  302. package/lib/smart-form/api/param.d.ts +37 -0
  303. package/lib/smart-form/api/variables.d.ts +8 -0
  304. package/lib/smart-form/projects.d.ts +9 -0
  305. package/lib/smart-form/services/smartform.layout-definition.service.d.ts +40 -0
  306. package/lib/smart-form/services/smartform.service.d.ts +29 -0
  307. package/lib/smart-form/smartfileuploader/large-file-snack-bar/large-file-snack-bar.component.d.ts +8 -0
  308. package/lib/smart-form/smartfileuploader/smartfileuploader.component.d.ts +22 -0
  309. package/lib/smart-form/smartfileuploader/smartfileuploader.model.d.ts +7 -0
  310. package/lib/smart-form/smartform.component.d.ts +33 -0
  311. package/lib/smart-form/smartform.form-model.d.ts +521 -0
  312. package/lib/smart-form/smartform.model.d.ts +120 -0
  313. package/lib/smart-form/smartform.module.d.ts +34 -0
  314. package/lib/smart-form/widgets/components/smart-month-picker/smart-month-picker.component.d.ts +29 -0
  315. package/lib/smart-form/widgets/smartformwidget/smartformwidget.component.d.ts +84 -0
  316. package/lib/smart-form/widgets/smartformwidget/sortable-widget/sortable-widget.component.d.ts +20 -0
  317. package/lib/smart-form/widgets/smartformwidget/trackCaps.directive.d.ts +9 -0
  318. package/lib/smart-grid/api/grid-api/api/api.d.ts +3 -0
  319. package/lib/smart-grid/api/grid-api/api/grid.service.d.ts +140 -0
  320. package/lib/smart-grid/api/grid-api/api.module.d.ts +11 -0
  321. package/lib/smart-grid/api/grid-api/configuration.d.ts +80 -0
  322. package/lib/smart-grid/api/grid-api/encoder.d.ts +11 -0
  323. package/lib/smart-grid/api/grid-api/index.d.ts +5 -0
  324. package/lib/smart-grid/api/grid-api/model/gridColumnMeta.d.ts +18 -0
  325. package/lib/smart-grid/api/grid-api/model/gridDataAccessConfig.d.ts +35 -0
  326. package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +30 -0
  327. package/lib/smart-grid/api/grid-api/model/gridPage.d.ts +26 -0
  328. package/lib/smart-grid/api/grid-api/model/gridRow.d.ts +22 -0
  329. package/lib/smart-grid/api/grid-api/model/gridSelectionMode.d.ts +17 -0
  330. package/lib/smart-grid/api/grid-api/model/gridSelectionType.d.ts +16 -0
  331. package/lib/smart-grid/api/grid-api/model/gridServerModel.d.ts +20 -0
  332. package/lib/smart-grid/api/grid-api/model/gridUpdateData.d.ts +19 -0
  333. package/lib/smart-grid/api/grid-api/model/gridView.d.ts +21 -0
  334. package/lib/smart-grid/api/grid-api/model/gridViewDescriptor.d.ts +33 -0
  335. package/lib/smart-grid/api/grid-api/model/models.d.ts +11 -0
  336. package/lib/smart-grid/api/grid-api/variables.d.ts +8 -0
  337. package/lib/smart-grid/components/expandable-grid/expandable-grid.component.d.ts +10 -0
  338. package/lib/smart-grid/components/smart-grid-card/smart-grid-card.component.d.ts +21 -0
  339. package/lib/smart-grid/components/table-layout-definer/table-layout-definer.component.d.ts +40 -0
  340. package/lib/smart-grid/models/model.d.ts +70 -0
  341. package/lib/smart-grid/projects.d.ts +5 -0
  342. package/lib/smart-grid/smart-grid.component.d.ts +67 -0
  343. package/lib/smart-grid/smart-grid.module.d.ts +20 -0
  344. package/lib/smart-grid/smart-grid.service.d.ts +26 -0
  345. package/lib/smart-icon/projects.d.ts +3 -0
  346. package/lib/smart-icon/smart-icon/smart-icon.component.d.ts +17 -0
  347. package/lib/smart-icon/smart-icon.module.d.ts +10 -0
  348. package/lib/smart-icon/smart-icon.service.d.ts +21 -0
  349. package/lib/smart-navbar/projects.d.ts +4 -0
  350. package/lib/smart-navbar/smart-navbar.component.d.ts +20 -0
  351. package/lib/smart-navbar/smart-navbar.model.d.ts +48 -0
  352. package/lib/smart-navbar/smart-navbar.module.d.ts +18 -0
  353. package/lib/smart-navbar/smart-navbar.service.d.ts +6 -0
  354. package/lib/smart-navigation/projects.d.ts +2 -0
  355. package/lib/smart-navigation/smart-navigation.interface.d.ts +11 -0
  356. package/lib/smart-navigation/smart-navigation.module.d.ts +6 -0
  357. package/lib/smart-navigation/smart-navigation.service.d.ts +18 -0
  358. package/lib/smart-ng-client.module.d.ts +9 -6
  359. package/lib/smart-subject/projects.d.ts +1 -0
  360. package/lib/smart-subject/smart-subject.d.ts +6 -0
  361. package/lib/smart-tab-group/projects.d.ts +4 -0
  362. package/lib/smart-tab-group/smart-tab-group.component.d.ts +21 -0
  363. package/lib/smart-tab-group/smart-tab-group.module.d.ts +13 -0
  364. package/lib/smart-tab-group/smart-tab-group.service.d.ts +6 -0
  365. package/lib/smart-tab-group/tab-content/tab-content.component.d.ts +14 -0
  366. package/lib/smart-tab-group/tab-group-simplified/tab-group.component.d.ts +29 -0
  367. package/lib/smart-tab-group/tabTile.model.d.ts +8 -0
  368. package/lib/smart-table/components/loading/loading.component.d.ts +8 -0
  369. package/lib/smart-table/projects.d.ts +5 -0
  370. package/lib/smart-table/smarttable.component.d.ts +34 -0
  371. package/lib/smart-table/smarttable.date-pipe.d.ts +18 -0
  372. package/lib/smart-table/smarttable.model.d.ts +183 -0
  373. package/lib/smart-table/smarttable.module.d.ts +23 -0
  374. package/lib/smart-table/smarttable.service.d.ts +6 -0
  375. package/lib/smart-table/tables/material-table/material-table.component.d.ts +8 -0
  376. package/lib/smart-table/tables/mobile-table/mobile-table.component.d.ts +8 -0
  377. package/lib/smart-table/tables/table.d.ts +59 -0
  378. package/lib/smart-tree/smarttree.component.d.ts +1 -1
  379. package/lib/smart-tree/smarttree.model.d.ts +1 -1
  380. package/lib/smart-tree/smarttree.module.d.ts +1 -1
  381. package/lib/smart-tree/smarttree.service.d.ts +1 -1
  382. package/lib/smart-tree/smarttree.service.interface.d.ts +1 -1
  383. package/lib/view-context/api/model/componentModel.d.ts +3 -2
  384. package/lib/view-context/api/model/view.d.ts +1 -1
  385. package/lib/view-context/smart-ui-action/dialogs/ui-action-confirm-dialog/ui-action-confirm-dialog.service.d.ts +1 -1
  386. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.component.d.ts +1 -1
  387. package/lib/view-context/smart-ui-action/dialogs/ui-action-file-upload-dialog/ui-action-file-upload-dialog.service.d.ts +1 -1
  388. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.component.d.ts +1 -1
  389. package/lib/view-context/smart-ui-action/dialogs/ui-action-input-dialog/ui-action-input-dialog.service.d.ts +1 -1
  390. package/lib/view-context/smart-ui-action/ui-action-toolbar.component.d.ts +1 -1
  391. package/lib/view-context/smart-ui-action/ui-action.model.d.ts +3 -1
  392. package/lib/view-context/smart-view-context-error-dialog/smart-view-context-error-dialog.service.d.ts +1 -1
  393. package/lib/view-context/smart-view-context.module.d.ts +2 -2
  394. package/lib/view-context/smart-view-context.service.d.ts +3 -3
  395. package/lib/view-context/smart-view-redirect/smart-view-redirect.d.ts +3 -3
  396. package/lib/view-context/value-api/model/valueSetData.d.ts +1 -1
  397. package/package.json +1 -4
  398. package/projects.d.ts +14 -2
  399. package/smartbit4all-ng-client-3.0.0.tgz +0 -0
  400. package/src/lib/component-factory-service/README.md +99 -0
  401. package/src/lib/smart-component-layout/README.md +31 -0
  402. package/src/lib/smart-component-layout/api/README.md +226 -0
  403. package/src/lib/smart-dialog/README.md +197 -0
  404. package/src/lib/smart-expandable-section/README.md +249 -0
  405. package/src/lib/smart-filter/README.md +101 -0
  406. package/src/lib/smart-form/README.md +1178 -0
  407. package/src/lib/smart-form/api/README.md +226 -0
  408. package/src/lib/smart-grid/README.md +24 -0
  409. package/src/lib/smart-grid/api/grid-api/README.md +203 -0
  410. package/src/lib/smart-icon/README.md +116 -0
  411. package/src/lib/smart-navbar/README.md +119 -0
  412. package/src/lib/smart-navigation/README.md +141 -0
  413. package/src/lib/smart-tab-group/README.md +155 -0
  414. package/src/lib/smart-table/README.md +667 -0
  415. package/src/lib/view-context/api/README.md +226 -226
  416. package/esm2020/lib/smart-client/projects.mjs +0 -5
  417. package/esm2020/lib/smart-client/smart.component.mjs +0 -30
  418. package/esm2020/lib/smart-client/smart.service.mjs +0 -30
  419. package/lib/smart-client/projects.d.ts +0 -4
  420. package/lib/smart-client/smart.component.d.ts +0 -11
  421. package/lib/smart-client/smart.service.d.ts +0 -11
  422. package/smartbit4all-ng-client-2.2.2.tgz +0 -0
@@ -0,0 +1,397 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { SmartFormWidgetDirection, SmartFormWidgetType, } from "../api";
3
+ import * as i0 from "@angular/core";
4
+ export class SmartformLayoutDefinitionService {
5
+ constructor() { }
6
+ render(config) {
7
+ let widgets = [];
8
+ config.layoutDefinitions?.forEach((layoutDefinition) => {
9
+ let widget = this.createWidget({
10
+ ...config,
11
+ layoutDefinition,
12
+ });
13
+ if (widget) {
14
+ widgets.push(widget);
15
+ }
16
+ });
17
+ return widgets;
18
+ }
19
+ createWidget(config) {
20
+ switch (config.layoutDefinition?.type) {
21
+ case SmartFormWidgetType.CONTAINER:
22
+ return this.createContainer(config, config.layoutDefinition);
23
+ case SmartFormWidgetType.LABEL:
24
+ return this.createLabel(config.layoutDefinition);
25
+ case SmartFormWidgetType.TEXT_FIELD:
26
+ return this.createTextField(config.layoutDefinition);
27
+ case SmartFormWidgetType.TEXT_FIELD_CHIPS:
28
+ return this.createTextFieldChips(config.layoutDefinition);
29
+ case SmartFormWidgetType.TEXT_FIELD_NUMBER:
30
+ return this.createTextFieldNumber(config.layoutDefinition);
31
+ case SmartFormWidgetType.TEXT_FIELD:
32
+ return this.createTextField(config.layoutDefinition);
33
+ case SmartFormWidgetType.TEXT_BOX:
34
+ return this.createTextBox(config.layoutDefinition);
35
+ case SmartFormWidgetType.TOGGLE:
36
+ return this.createToggle(config.layoutDefinition);
37
+ case SmartFormWidgetType.RADIO_BUTTON:
38
+ return this.createRadioButton(config.layoutDefinition);
39
+ case SmartFormWidgetType.CHECK_BOX:
40
+ return this.createCheckBox(config.layoutDefinition);
41
+ case SmartFormWidgetType.SELECT:
42
+ return this.createSelect(config.layoutDefinition, config.model);
43
+ case SmartFormWidgetType.SELECT_MULTIPLE:
44
+ return this.createSelectMultiple(config.layoutDefinition);
45
+ case SmartFormWidgetType.DATE_PICKER:
46
+ return this.createDatePicker(config.layoutDefinition);
47
+ case SmartFormWidgetType.DATE_TIME_PICKER:
48
+ return this.createDateTimePicker(config.layoutDefinition);
49
+ case SmartFormWidgetType.IMAGE:
50
+ return this.createImage(config.layoutDefinition);
51
+ case SmartFormWidgetType.BUTTON:
52
+ return this.createButton(config);
53
+ case SmartFormWidgetType.DIVIDER:
54
+ return this.createDivider(config.layoutDefinition);
55
+ case SmartFormWidgetType.RICH_TEXT:
56
+ return this.createRichText(config.layoutDefinition);
57
+ case SmartFormWidgetType.FILE_UPLOADER:
58
+ if (!config.uploadCallback) {
59
+ throw Error("No upload function injected.");
60
+ }
61
+ return this.createFileUploader(config.layoutDefinition, config.uploadCallback);
62
+ case SmartFormWidgetType.MATRIX:
63
+ return this.createMatrix(config.layoutDefinition);
64
+ case SmartFormWidgetType.SORTABLE:
65
+ return this.createSortable(config.layoutDefinition);
66
+ case SmartFormWidgetType.MONTH_PICKER:
67
+ return this.createMonthPicker(config.layoutDefinition);
68
+ }
69
+ return;
70
+ }
71
+ createMonthPicker(layoutDefinition) {
72
+ let widget = {
73
+ key: layoutDefinition.key,
74
+ type: SmartFormWidgetType.MONTH_PICKER,
75
+ label: layoutDefinition.label,
76
+ showLabel: layoutDefinition.showLabel,
77
+ };
78
+ return widget;
79
+ }
80
+ createMatrix(layoutDefinition) {
81
+ let widget = {
82
+ type: SmartFormWidgetType.MATRIX,
83
+ label: layoutDefinition.label,
84
+ key: layoutDefinition.key,
85
+ showLabel: layoutDefinition.showLabel,
86
+ //TODO set isMultiple variable from layoutDefinition
87
+ isMultiple: false,
88
+ value: layoutDefinition.matrix,
89
+ };
90
+ return widget;
91
+ }
92
+ createSortable(layoutDefinition) {
93
+ let widget = {
94
+ key: layoutDefinition.key,
95
+ label: layoutDefinition.label,
96
+ showLabel: layoutDefinition.showLabel,
97
+ type: SmartFormWidgetType.SORTABLE,
98
+ };
99
+ return widget;
100
+ }
101
+ createLabel(layoutDefinition) {
102
+ let widget = {
103
+ type: SmartFormWidgetType.LABEL,
104
+ label: layoutDefinition.label,
105
+ };
106
+ return widget;
107
+ }
108
+ createContainer(config, layoutDefinition) {
109
+ let valueList = [];
110
+ layoutDefinition.childrenComponents?.forEach((layoutDefinition) => {
111
+ let widget = this.createWidget({
112
+ ...config,
113
+ layoutDefinition,
114
+ });
115
+ if (widget) {
116
+ valueList.push(widget);
117
+ }
118
+ });
119
+ let widget = {
120
+ key: layoutDefinition.key,
121
+ type: SmartFormWidgetType.CONTAINER,
122
+ cssClass: layoutDefinition.cssClass,
123
+ direction: layoutDefinition.direction ?? SmartFormWidgetDirection.COL,
124
+ valueList,
125
+ };
126
+ return widget;
127
+ }
128
+ createTextField(layoutDefinition) {
129
+ let widget = {
130
+ type: SmartFormWidgetType.TEXT_FIELD,
131
+ key: layoutDefinition.key,
132
+ label: layoutDefinition.label,
133
+ placeholder: layoutDefinition.placeholder,
134
+ prefix: layoutDefinition.prefix,
135
+ suffix: layoutDefinition.suffix,
136
+ mask: layoutDefinition.mask,
137
+ icon: layoutDefinition.icon,
138
+ iconColor: layoutDefinition.iconColor,
139
+ showLabel: layoutDefinition.showLabel,
140
+ cssClass: layoutDefinition.cssClass,
141
+ cssLabelClass: layoutDefinition.cssLabelClass,
142
+ isPassword: layoutDefinition.isPassword,
143
+ selection: layoutDefinition.selection,
144
+ };
145
+ return widget;
146
+ }
147
+ createTextFieldChips(layoutDefinition) {
148
+ let widget = {
149
+ type: SmartFormWidgetType.TEXT_FIELD_CHIPS,
150
+ key: layoutDefinition.key,
151
+ label: layoutDefinition.label,
152
+ placeholder: layoutDefinition.placeholder,
153
+ showLabel: layoutDefinition.showLabel,
154
+ cssClass: layoutDefinition.cssClass,
155
+ cssLabelClass: layoutDefinition.cssLabelClass,
156
+ valueList: [],
157
+ };
158
+ if (layoutDefinition.values) {
159
+ widget.valueList = layoutDefinition.values.map((value) => {
160
+ return {
161
+ key: value.code,
162
+ label: value.displayValue,
163
+ type: SmartFormWidgetType.ITEM,
164
+ value: value.code,
165
+ };
166
+ });
167
+ }
168
+ return widget;
169
+ }
170
+ createTextFieldNumber(layoutDefinition) {
171
+ let widget = {
172
+ type: SmartFormWidgetType.TEXT_FIELD_NUMBER,
173
+ key: layoutDefinition.key,
174
+ label: layoutDefinition.label,
175
+ placeholder: layoutDefinition.placeholder,
176
+ prefix: layoutDefinition.prefix,
177
+ suffix: layoutDefinition.suffix,
178
+ icon: layoutDefinition.icon,
179
+ iconColor: layoutDefinition.iconColor,
180
+ showLabel: layoutDefinition.showLabel,
181
+ cssClass: layoutDefinition.cssClass,
182
+ cssLabelClass: layoutDefinition.cssLabelClass,
183
+ };
184
+ return widget;
185
+ }
186
+ createTextBox(layoutDefinition) {
187
+ let widget = {
188
+ type: SmartFormWidgetType.TEXT_BOX,
189
+ key: layoutDefinition.key,
190
+ label: layoutDefinition.label,
191
+ placeholder: layoutDefinition.placeholder,
192
+ showLabel: layoutDefinition.showLabel,
193
+ cssClass: layoutDefinition.cssClass,
194
+ cssLabelClass: layoutDefinition.cssLabelClass,
195
+ };
196
+ return widget;
197
+ }
198
+ createRichText(layoutDefinition) {
199
+ let widget = {
200
+ type: SmartFormWidgetType.RICH_TEXT,
201
+ key: layoutDefinition.key,
202
+ label: layoutDefinition.label,
203
+ placeholder: layoutDefinition.placeholder,
204
+ showLabel: layoutDefinition.showLabel,
205
+ cssClass: layoutDefinition.cssClass,
206
+ cssLabelClass: layoutDefinition.cssLabelClass,
207
+ quillModules: {
208
+ toolbar: {
209
+ container: [
210
+ ["bold", "italic", "underline", "strike"],
211
+ ["code-block"],
212
+ [{ header: 1 }, { header: 2 }],
213
+ [{ list: "ordered" }, { list: "bullet" }],
214
+ ["clean"],
215
+ ],
216
+ },
217
+ },
218
+ };
219
+ return widget;
220
+ }
221
+ createToggle(layoutDefinition) {
222
+ let widget = {
223
+ type: SmartFormWidgetType.TOGGLE,
224
+ key: layoutDefinition.key,
225
+ label: layoutDefinition.label,
226
+ showLabel: layoutDefinition.showLabel,
227
+ cssClass: layoutDefinition.cssClass,
228
+ cssLabelClass: layoutDefinition.cssLabelClass,
229
+ };
230
+ return widget;
231
+ }
232
+ createRadioButton(layoutDefinition) {
233
+ let widget = {
234
+ type: SmartFormWidgetType.RADIO_BUTTON,
235
+ key: layoutDefinition.key,
236
+ label: layoutDefinition.label,
237
+ showLabel: layoutDefinition.showLabel,
238
+ cssClass: layoutDefinition.cssClass,
239
+ cssLabelClass: layoutDefinition.cssLabelClass,
240
+ valueList: [],
241
+ };
242
+ if (layoutDefinition.values) {
243
+ widget.valueList = layoutDefinition.values.map((value) => {
244
+ return {
245
+ key: value.code,
246
+ label: value.displayValue,
247
+ type: SmartFormWidgetType.ITEM,
248
+ value: value.code,
249
+ };
250
+ });
251
+ }
252
+ return widget;
253
+ }
254
+ createCheckBox(layoutDefinition) {
255
+ let widget = {
256
+ type: SmartFormWidgetType.CHECK_BOX_2,
257
+ key: layoutDefinition.key,
258
+ label: layoutDefinition.label,
259
+ showLabel: layoutDefinition.showLabel,
260
+ cssClass: layoutDefinition.cssClass,
261
+ cssLabelClass: layoutDefinition.cssLabelClass,
262
+ valueList: [],
263
+ };
264
+ if (layoutDefinition.values) {
265
+ widget.valueList = layoutDefinition.values.map((value) => {
266
+ return {
267
+ key: value.code,
268
+ label: value.displayValue,
269
+ type: SmartFormWidgetType.ITEM,
270
+ value: false,
271
+ };
272
+ });
273
+ }
274
+ return widget;
275
+ }
276
+ createSelect(layoutDefinition, model) {
277
+ let widget = {
278
+ type: SmartFormWidgetType.SELECT,
279
+ key: layoutDefinition.key,
280
+ label: layoutDefinition.label,
281
+ showLabel: layoutDefinition.showLabel,
282
+ cssClass: layoutDefinition.cssClass,
283
+ cssLabelClass: layoutDefinition.cssLabelClass,
284
+ valueList: [],
285
+ selection: layoutDefinition.selection,
286
+ };
287
+ if (layoutDefinition.values) {
288
+ widget.valueList = layoutDefinition.values.map((value) => {
289
+ return {
290
+ key: value.code,
291
+ label: value.displayValue,
292
+ type: SmartFormWidgetType.ITEM,
293
+ value: value.code,
294
+ };
295
+ });
296
+ }
297
+ return widget;
298
+ }
299
+ createSelectMultiple(layoutDefinition) {
300
+ let widget = {
301
+ type: SmartFormWidgetType.SELECT_MULTIPLE,
302
+ key: layoutDefinition.key,
303
+ label: layoutDefinition.label,
304
+ showLabel: layoutDefinition.showLabel,
305
+ cssClass: layoutDefinition.cssClass,
306
+ cssLabelClass: layoutDefinition.cssLabelClass,
307
+ valueList: [],
308
+ };
309
+ if (layoutDefinition.values) {
310
+ widget.valueList = layoutDefinition.values.map((value) => {
311
+ return {
312
+ key: value.code,
313
+ label: value.displayValue,
314
+ type: SmartFormWidgetType.ITEM,
315
+ value: value.code,
316
+ };
317
+ });
318
+ }
319
+ return widget;
320
+ }
321
+ createDatePicker(layoutDefinition) {
322
+ let widget = {
323
+ type: SmartFormWidgetType.DATE_PICKER,
324
+ key: layoutDefinition.key,
325
+ label: layoutDefinition.label,
326
+ showLabel: layoutDefinition.showLabel,
327
+ cssClass: layoutDefinition.cssClass,
328
+ cssLabelClass: layoutDefinition.cssLabelClass,
329
+ };
330
+ return widget;
331
+ }
332
+ createDateTimePicker(layoutDefinition) {
333
+ let widget = {
334
+ type: SmartFormWidgetType.DATE_TIME_PICKER,
335
+ key: layoutDefinition.key,
336
+ label: layoutDefinition.label,
337
+ showLabel: layoutDefinition.showLabel,
338
+ cssClass: layoutDefinition.cssClass,
339
+ cssLabelClass: layoutDefinition.cssLabelClass,
340
+ };
341
+ return widget;
342
+ }
343
+ createImage(layoutDefinition) {
344
+ let widget = {
345
+ type: SmartFormWidgetType.IMAGE,
346
+ key: layoutDefinition.key,
347
+ label: layoutDefinition.label,
348
+ showLabel: layoutDefinition.showLabel,
349
+ cssClass: layoutDefinition.cssClass,
350
+ };
351
+ return widget;
352
+ }
353
+ createButton(config) {
354
+ let uiAction = config.uiActions?.find((uiAction) => uiAction.code === config.layoutDefinition?.key);
355
+ let widget = {
356
+ type: SmartFormWidgetType.BUTTON,
357
+ key: config.layoutDefinition?.key,
358
+ label: config.layoutDefinition?.label,
359
+ showLabel: config.layoutDefinition?.showLabel,
360
+ cssClass: config.layoutDefinition?.cssClass,
361
+ callback: config.buttonCallback,
362
+ uiAction,
363
+ uiActionDescriptor: config.uiActionDescriptors(uiAction),
364
+ };
365
+ return widget;
366
+ }
367
+ createDivider(layoutDefinition) {
368
+ let widget = {
369
+ type: SmartFormWidgetType.DIVIDER,
370
+ key: layoutDefinition.key,
371
+ label: layoutDefinition.label,
372
+ showLabel: layoutDefinition.showLabel,
373
+ cssClass: layoutDefinition.cssClass,
374
+ };
375
+ return widget;
376
+ }
377
+ createFileUploader(layoutDefinition, uploadCallback) {
378
+ let widget = {
379
+ type: SmartFormWidgetType.FILE_UPLOADER,
380
+ key: layoutDefinition.key,
381
+ label: layoutDefinition.label,
382
+ showLabel: layoutDefinition.showLabel,
383
+ cssClass: layoutDefinition.cssClass,
384
+ uploadCallback,
385
+ };
386
+ return widget;
387
+ }
388
+ }
389
+ SmartformLayoutDefinitionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartformLayoutDefinitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
390
+ SmartformLayoutDefinitionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartformLayoutDefinitionService, providedIn: "root" });
391
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: SmartformLayoutDefinitionService, decorators: [{
392
+ type: Injectable,
393
+ args: [{
394
+ providedIn: "root",
395
+ }]
396
+ }], ctorParameters: function () { return []; } });
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRmb3JtLmxheW91dC1kZWZpbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1mb3JtL3NlcnZpY2VzL3NtYXJ0Zm9ybS5sYXlvdXQtZGVmaW5pdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixtQkFBbUIsR0FFcEIsTUFBTSxRQUFRLENBQUM7O0FBaUJoQixNQUFNLE9BQU8sZ0NBQWdDO0lBQzNDLGdCQUFlLENBQUM7SUFFVCxNQUFNLENBQ1gsTUFBeUM7UUFFekMsSUFBSSxPQUFPLEdBQTJCLEVBQUUsQ0FBQztRQUV6QyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUMvQixDQUFDLGdCQUF1QyxFQUFFLEVBQUU7WUFDMUMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDN0IsR0FBRyxNQUFNO2dCQUNULGdCQUFnQjthQUNqQixDQUFDLENBQUM7WUFDSCxJQUFJLE1BQU0sRUFBRTtnQkFDVixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3RCO1FBQ0gsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sWUFBWSxDQUNsQixNQUF5QztRQUV6QyxRQUFRLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUU7WUFDckMsS0FBSyxtQkFBbUIsQ0FBQyxTQUFTO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQy9ELEtBQUssbUJBQW1CLENBQUMsS0FBSztnQkFDNUIsT0FBTyxJQUFJLENBQUMsV0FBVyxD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LENBQUM7U0FDMUQsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDTyxhQUFhLENBQ25CLGdCQUF1QztRQUV2QyxJQUFJLE1BQU0sR0FBeUI7WUFDakMsSUFBSSxFQUFFLG1CQUFtQixDQUFDLE9BQU87WUFDakMsR0FBRyxFQUFFLGdCQUFnQixDQUFDLEdBQUc7WUFDekIsS0FBSyxFQUFFLGdCQUFnQixDQUFDLEtBQUs7WUFDN0IsU0FBUyxFQUFFLGdCQUFnQixDQUFDLFNBQVM7WUFDckMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFFBQVE7U0FDcEMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDTyxrQkFBa0IsQ0FDeEIsZ0JBQXVDLEVBQ3ZDLGNBQW1EO1FBRW5ELElBQUksTUFBTSxHQUF5QjtZQUNqQyxJQUFJLEVBQUUsbUJBQW1CLENBQUMsYUFBYTtZQUN2QyxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsR0FBRztZQUN6QixLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSztZQUM3QixTQUFTLEVBQUUsZ0JBQWdCLENBQUMsU0FBUztZQUNyQyxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsUUFBUTtZQUNuQyxjQUFjO1NBQ2YsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7OzZIQXRjVSxnQ0FBZ0M7aUlBQWhDLGdDQUFnQyxjQUYvQixNQUFNOzJGQUVQLGdDQUFnQztrQkFINUMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtcclxuICBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24sXHJcbiAgU21hcnRGb3JtV2lkZ2V0VHlwZSxcclxuICBTbWFydFdpZGdldERlZmluaXRpb24sXHJcbn0gZnJvbSBcIi4uL2FwaVwiO1xyXG5pbXBvcnQgeyBTbWFydEZvcm1XaWRnZXQgfSBmcm9tIFwiLi4vc21hcnRmb3JtLmZvcm0tbW9kZWxcIjtcclxuaW1wb3J0IHsgVmFsdWUgfSBmcm9tIFwiLi4vc21hcnRmb3JtLm1vZGVsXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZyB7XHJcbiAgbGF5b3V0RGVmaW5pdGlvbnM/OiBTbWFydFdpZGdldERlZmluaXRpb25bXTtcclxuICBsYXlvdXREZWZpbml0aW9uPzogU21hcnRXaWRnZXREZWZpbml0aW9uO1xyXG4gIHVwbG9hZENhbGxiYWNrPzogKGtleTogc3RyaW5nLCBmaWxlczogYW55W10pID0+IHZvaWQ7XHJcbiAgYnV0dG9uQ2FsbGJhY2s/OiAoKHVpQWN0aW9uOiBhbnkpID0+IHZvaWQpIHwgKChrZXk6IHN0cmluZykgPT4gdm9pZCk7XHJcbiAgdWlBY3Rpb25zPzogYW55W107XHJcbiAgdWlBY3Rpb25EZXNjcmlwdG9ycz86ICh1aUFjdGlvbjogYW55KSA9PiBhbnk7XHJcbiAgbW9kZWw/OiBhbnk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFNtYXJ0Zm9ybUxheW91dERlZmluaXRpb25TZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIHB1YmxpYyByZW5kZXIoXHJcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZ1xyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10ge1xyXG4gICAgbGV0IHdpZGdldHM6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+W10gPSBbXTtcclxuXHJcbiAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbnM/LmZvckVhY2goXHJcbiAgICAgIChsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24pID0+IHtcclxuICAgICAgICBsZXQgd2lkZ2V0ID0gdGhpcy5jcmVhdGVXaWRnZXQoe1xyXG4gICAgICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAgICAgbGF5b3V0RGVmaW5pdGlvbixcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAod2lkZ2V0KSB7XHJcbiAgICAgICAgICB3aWRnZXRzLnB1c2god2lkZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHdpZGdldHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVdpZGdldChcclxuICAgIGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4gfCB1bmRlZmluZWQge1xyXG4gICAgc3dpdGNoIChjb25maWcubGF5b3V0RGVmaW5pdGlvbj8udHlwZSkge1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNvbnRhaW5lcihjb25maWcsIGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkxBQkVMOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUxhYmVsKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTERfQ0hJUFM6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkQ2hpcHMoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkTnVtYmVyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlVGV4dEZpZWxkKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRleHRCb3goY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVRvZ2dsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SQURJT19CVVRUT046XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmFkaW9CdXR0b24oY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ0hFQ0tfQk9YOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoZWNrQm94KGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVDpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTZWxlY3QoY29uZmlnLmxheW91dERlZmluaXRpb24sIGNvbmZpZy5tb2RlbCk7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEU6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlU2VsZWN0TXVsdGlwbGUoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGF0ZVBpY2tlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5EQVRFX1RJTUVfUElDS0VSOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURhdGVUaW1lUGlja2VyKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUltYWdlKGNvbmZpZy5sYXlvdXREZWZpbml0aW9uKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkJVVFRPTjpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVCdXR0b24oY29uZmlnKTtcclxuICAgICAgY2FzZSBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlRGl2aWRlcihjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5SSUNIX1RFWFQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlUmljaFRleHQoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuRklMRV9VUExPQURFUjpcclxuICAgICAgICBpZiAoIWNvbmZpZy51cGxvYWRDYWxsYmFjaykge1xyXG4gICAgICAgICAgdGhyb3cgRXJyb3IoXCJObyB1cGxvYWQgZnVuY3Rpb24gaW5qZWN0ZWQuXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVGaWxlVXBsb2FkZXIoXHJcbiAgICAgICAgICBjb25maWcubGF5b3V0RGVmaW5pdGlvbixcclxuICAgICAgICAgIGNvbmZpZy51cGxvYWRDYWxsYmFjayFcclxuICAgICAgICApO1xyXG4gICAgICBjYXNlIFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYOlxyXG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZU1hdHJpeChjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5TT1JUQUJMRTpcclxuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVTb3J0YWJsZShjb25maWcubGF5b3V0RGVmaW5pdGlvbik7XHJcbiAgICAgIGNhc2UgU21hcnRGb3JtV2lkZ2V0VHlwZS5NT05USF9QSUNLRVI6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlTW9udGhQaWNrZXIoY29uZmlnLmxheW91dERlZmluaXRpb24pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVNb250aFBpY2tlcihcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLk1PTlRIX1BJQ0tFUixcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlTWF0cml4KFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTUFUUklYLFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgLy9UT0RPIHNldCBpc011bHRpcGxlIHZhcmlhYmxlIGZyb20gbGF5b3V0RGVmaW5pdGlvblxyXG4gICAgICBpc011bHRpcGxlOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IGxheW91dERlZmluaXRpb24ubWF0cml4LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVNvcnRhYmxlKGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbikge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNPUlRBQkxFLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUxhYmVsKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuTEFCRUwsXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUNvbnRhaW5lcihcclxuICAgIGNvbmZpZzogU21hcnRmb3JtTGF5b3V0Q3JlYXRlV2lkZ2V0Q29uZmlnLFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHZhbHVlTGlzdDogU21hcnRGb3JtV2lkZ2V0PGFueT5bXSA9IFtdO1xyXG5cclxuICAgIGxheW91dERlZmluaXRpb24uY2hpbGRyZW5Db21wb25lbnRzPy5mb3JFYWNoKFxyXG4gICAgICAobGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uKSA9PiB7XHJcbiAgICAgICAgbGV0IHdpZGdldCA9IHRoaXMuY3JlYXRlV2lkZ2V0KHtcclxuICAgICAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgICAgIGxheW91dERlZmluaXRpb24sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKHdpZGdldCkge1xyXG4gICAgICAgICAgdmFsdWVMaXN0LnB1c2god2lkZ2V0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuQ09OVEFJTkVSLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgZGlyZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLmRpcmVjdGlvbiA/PyBTbWFydEZvcm1XaWRnZXREaXJlY3Rpb24uQ09MLFxyXG4gICAgICB2YWx1ZUxpc3QsXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZChcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfRklFTEQsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcclxuICAgICAgc3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnN1ZmZpeCxcclxuICAgICAgbWFzazogbGF5b3V0RGVmaW5pdGlvbi5tYXNrLFxyXG4gICAgICBpY29uOiBsYXlvdXREZWZpbml0aW9uLmljb24sXHJcbiAgICAgIGljb25Db2xvcjogbGF5b3V0RGVmaW5pdGlvbi5pY29uQ29sb3IsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIGlzUGFzc3dvcmQ6IGxheW91dERlZmluaXRpb24uaXNQYXNzd29yZCxcclxuICAgICAgc2VsZWN0aW9uOiBsYXlvdXREZWZpbml0aW9uLnNlbGVjdGlvbixcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVRleHRGaWVsZENoaXBzKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9DSElQUyxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEZpZWxkTnVtYmVyKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVEVYVF9GSUVMRF9OVU1CRVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBwbGFjZWhvbGRlcjogbGF5b3V0RGVmaW5pdGlvbi5wbGFjZWhvbGRlcixcclxuICAgICAgcHJlZml4OiBsYXlvdXREZWZpbml0aW9uLnByZWZpeCxcclxuICAgICAgc3VmZml4OiBsYXlvdXREZWZpbml0aW9uLnN1ZmZpeCxcclxuICAgICAgaWNvbjogbGF5b3V0RGVmaW5pdGlvbi5pY29uLFxyXG4gICAgICBpY29uQ29sb3I6IGxheW91dERlZmluaXRpb24uaWNvbkNvbG9yLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVGV4dEJveChcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlRFWFRfQk9YLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgcGxhY2Vob2xkZXI6IGxheW91dERlZmluaXRpb24ucGxhY2Vob2xkZXIsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVSaWNoVGV4dChcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlJJQ0hfVEVYVCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHBsYWNlaG9sZGVyOiBsYXlvdXREZWZpbml0aW9uLnBsYWNlaG9sZGVyLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICBxdWlsbE1vZHVsZXM6IHtcclxuICAgICAgICB0b29sYmFyOiB7XHJcbiAgICAgICAgICBjb250YWluZXI6IFtcclxuICAgICAgICAgICAgW1wiYm9sZFwiLCBcIml0YWxpY1wiLCBcInVuZGVybGluZVwiLCBcInN0cmlrZVwiXSxcclxuICAgICAgICAgICAgW1wiY29kZS1ibG9ja1wiXSxcclxuICAgICAgICAgICAgW3sgaGVhZGVyOiAxIH0sIHsgaGVhZGVyOiAyIH1dLFxyXG4gICAgICAgICAgICBbeyBsaXN0OiBcIm9yZGVyZWRcIiB9LCB7IGxpc3Q6IFwiYnVsbGV0XCIgfV0sXHJcbiAgICAgICAgICAgIFtcImNsZWFuXCJdLFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlVG9nZ2xlKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuVE9HR0xFLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZVJhZGlvQnV0dG9uKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuUkFESU9fQlVUVE9OLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGxheW91dERlZmluaXRpb24udmFsdWVzKSB7XHJcbiAgICAgIHdpZGdldC52YWx1ZUxpc3QgPSBsYXlvdXREZWZpbml0aW9uLnZhbHVlcy5tYXAoKHZhbHVlOiBWYWx1ZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBrZXk6IHZhbHVlLmNvZGUhLFxyXG4gICAgICAgICAgbGFiZWw6IHZhbHVlLmRpc3BsYXlWYWx1ZSxcclxuICAgICAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuSVRFTSxcclxuICAgICAgICAgIHZhbHVlOiB2YWx1ZS5jb2RlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVDaGVja0JveChcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkNIRUNLX0JPWF8yLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgICAgdmFsdWVMaXN0OiBbXSxcclxuICAgIH07XHJcbiAgICBpZiAobGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMpIHtcclxuICAgICAgd2lkZ2V0LnZhbHVlTGlzdCA9IGxheW91dERlZmluaXRpb24udmFsdWVzLm1hcCgodmFsdWU6IFZhbHVlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogdmFsdWUuY29kZSEsXHJcbiAgICAgICAgICBsYWJlbDogdmFsdWUuZGlzcGxheVZhbHVlLFxyXG4gICAgICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5JVEVNLFxyXG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVTZWxlY3QoXHJcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb24sXHJcbiAgICBtb2RlbD86IGFueVxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLlNFTEVDVCxcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICAgIHZhbHVlTGlzdDogW10sXHJcbiAgICAgIHNlbGVjdGlvbjogbGF5b3V0RGVmaW5pdGlvbi5zZWxlY3Rpb24sXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlU2VsZWN0TXVsdGlwbGUoXHJcbiAgICBsYXlvdXREZWZpbml0aW9uOiBTbWFydFdpZGdldERlZmluaXRpb25cclxuICApOiBTbWFydEZvcm1XaWRnZXQ8YW55PiB7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5TRUxFQ1RfTVVMVElQTEUsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgY3NzTGFiZWxDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NMYWJlbENsYXNzLFxyXG4gICAgICB2YWx1ZUxpc3Q6IFtdLFxyXG4gICAgfTtcclxuICAgIGlmIChsYXlvdXREZWZpbml0aW9uLnZhbHVlcykge1xyXG4gICAgICB3aWRnZXQudmFsdWVMaXN0ID0gbGF5b3V0RGVmaW5pdGlvbi52YWx1ZXMubWFwKCh2YWx1ZTogVmFsdWUpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiB2YWx1ZS5jb2RlISxcclxuICAgICAgICAgIGxhYmVsOiB2YWx1ZS5kaXNwbGF5VmFsdWUsXHJcbiAgICAgICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklURU0sXHJcbiAgICAgICAgICB2YWx1ZTogdmFsdWUuY29kZSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGF0ZVBpY2tlcihcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRBVEVfUElDS0VSLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICAgIGNzc0xhYmVsQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzTGFiZWxDbGFzcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZURhdGVUaW1lUGlja2VyKFxyXG4gICAgbGF5b3V0RGVmaW5pdGlvbjogU21hcnRXaWRnZXREZWZpbml0aW9uXHJcbiAgKTogU21hcnRGb3JtV2lkZ2V0PGFueT4ge1xyXG4gICAgbGV0IHdpZGdldDogU21hcnRGb3JtV2lkZ2V0PGFueT4gPSB7XHJcbiAgICAgIHR5cGU6IFNtYXJ0Rm9ybVdpZGdldFR5cGUuREFURV9USU1FX1BJQ0tFUixcclxuICAgICAga2V5OiBsYXlvdXREZWZpbml0aW9uLmtleSxcclxuICAgICAgbGFiZWw6IGxheW91dERlZmluaXRpb24ubGFiZWwsXHJcbiAgICAgIHNob3dMYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0NsYXNzLFxyXG4gICAgICBjc3NMYWJlbENsYXNzOiBsYXlvdXREZWZpbml0aW9uLmNzc0xhYmVsQ2xhc3MsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVJbWFnZShcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLklNQUdFLFxyXG4gICAgICBrZXk6IGxheW91dERlZmluaXRpb24ua2V5LFxyXG4gICAgICBsYWJlbDogbGF5b3V0RGVmaW5pdGlvbi5sYWJlbCxcclxuICAgICAgc2hvd0xhYmVsOiBsYXlvdXREZWZpbml0aW9uLnNob3dMYWJlbCxcclxuICAgICAgY3NzQ2xhc3M6IGxheW91dERlZmluaXRpb24uY3NzQ2xhc3MsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b24oXHJcbiAgICBjb25maWc6IFNtYXJ0Zm9ybUxheW91dENyZWF0ZVdpZGdldENvbmZpZ1xyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB1aUFjdGlvbjogYW55ID0gY29uZmlnLnVpQWN0aW9ucz8uZmluZChcclxuICAgICAgKHVpQWN0aW9uOiBhbnkpID0+IHVpQWN0aW9uLmNvZGUgPT09IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5rZXlcclxuICAgICk7XHJcbiAgICBsZXQgd2lkZ2V0OiBTbWFydEZvcm1XaWRnZXQ8YW55PiA9IHtcclxuICAgICAgdHlwZTogU21hcnRGb3JtV2lkZ2V0VHlwZS5CVVRUT04sXHJcbiAgICAgIGtleTogY29uZmlnLmxheW91dERlZmluaXRpb24/LmtleSEsXHJcbiAgICAgIGxhYmVsOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8ubGFiZWwhLFxyXG4gICAgICBzaG93TGFiZWw6IGNvbmZpZy5sYXlvdXREZWZpbml0aW9uPy5zaG93TGFiZWwsXHJcbiAgICAgIGNzc0NsYXNzOiBjb25maWcubGF5b3V0RGVmaW5pdGlvbj8uY3NzQ2xhc3MsXHJcbiAgICAgIGNhbGxiYWNrOiBjb25maWcuYnV0dG9uQ2FsbGJhY2shLFxyXG4gICAgICB1aUFjdGlvbixcclxuICAgICAgdWlBY3Rpb25EZXNjcmlwdG9yOiBjb25maWcudWlBY3Rpb25EZXNjcmlwdG9ycyEodWlBY3Rpb24pLFxyXG4gICAgfTtcclxuICAgIHJldHVybiB3aWRnZXQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgY3JlYXRlRGl2aWRlcihcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvblxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkRJVklERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2lkZ2V0O1xyXG4gIH1cclxuICBwcml2YXRlIGNyZWF0ZUZpbGVVcGxvYWRlcihcclxuICAgIGxheW91dERlZmluaXRpb246IFNtYXJ0V2lkZ2V0RGVmaW5pdGlvbixcclxuICAgIHVwbG9hZENhbGxiYWNrOiAoa2V5OiBzdHJpbmcsIGZpbGVzOiBhbnlbXSkgPT4gdm9pZFxyXG4gICk6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+IHtcclxuICAgIGxldCB3aWRnZXQ6IFNtYXJ0Rm9ybVdpZGdldDxhbnk+ID0ge1xyXG4gICAgICB0eXBlOiBTbWFydEZvcm1XaWRnZXRUeXBlLkZJTEVfVVBMT0FERVIsXHJcbiAgICAgIGtleTogbGF5b3V0RGVmaW5pdGlvbi5rZXksXHJcbiAgICAgIGxhYmVsOiBsYXlvdXREZWZpbml0aW9uLmxhYmVsLFxyXG4gICAgICBzaG93TGFiZWw6IGxheW91dERlZmluaXRpb24uc2hvd0xhYmVsLFxyXG4gICAgICBjc3NDbGFzczogbGF5b3V0RGVmaW5pdGlvbi5jc3NDbGFzcyxcclxuICAgICAgdXBsb2FkQ2FsbGJhY2ssXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIHdpZGdldDtcclxuICB9XHJcbn1cclxuIl19