@mediusinc/mng-commons 5.0.0-rc.0-c31d5206 → 5.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1436) hide show
  1. package/README.md +1 -0
  2. package/core/README.md +8 -0
  3. package/core/action/action-data.model.d.ts +3 -0
  4. package/core/action/action-parameters.model.d.ts +17 -0
  5. package/core/components/pages/error/error.page.component.d.ts +8 -0
  6. package/core/components/pages/not-found/not-found.page.component.d.ts +8 -0
  7. package/core/data-list/data-list-params-helpers.d.ts +82 -0
  8. package/core/data-providers/base.data-provider.d.ts +32 -0
  9. package/core/data-providers/lookup.data-provider.d.ts +10 -0
  10. package/core/descriptors/action.descriptor.d.ts +12 -0
  11. package/core/descriptors/column.descriptor.d.ts +3 -0
  12. package/core/descriptors/editor.descriptor.d.ts +11 -0
  13. package/core/descriptors/enum.descriptor.d.ts +6 -0
  14. package/core/descriptors/filter.descriptor.d.ts +3 -0
  15. package/core/descriptors/lookup.descriptor.d.ts +12 -0
  16. package/core/descriptors/model.descriptor.d.ts +8 -0
  17. package/core/descriptors/table.descriptor.d.ts +9 -0
  18. package/core/descriptors/tableview.descriptor.d.ts +11 -0
  19. package/core/directives/component.directive.d.ts +20 -0
  20. package/core/directives/dialog-keydown-handler.directive.d.ts +12 -0
  21. package/core/directives/template.directive.d.ts +12 -0
  22. package/core/enum/enum-helpers.d.ts +49 -0
  23. package/core/enum/enum.model.d.ts +8 -0
  24. package/core/error/error-handler.d.ts +6 -0
  25. package/core/error/error-helpers.d.ts +114 -0
  26. package/core/error/error.model.d.ts +47 -0
  27. package/core/helpers/coercion.d.ts +9 -0
  28. package/core/helpers/date.d.ts +14 -0
  29. package/core/helpers/notification.d.ts +2 -0
  30. package/core/helpers/object.d.ts +27 -0
  31. package/core/helpers/route.d.ts +35 -0
  32. package/core/helpers/string.d.ts +7 -0
  33. package/core/helpers/templates.d.ts +3 -0
  34. package/core/helpers/type-helpers.d.ts +16 -0
  35. package/core/i18n/i18n-common.d.ts +6 -0
  36. package/core/i18n/i18n-error.d.ts +4 -0
  37. package/core/i18n/i18n-type.d.ts +20 -0
  38. package/core/index.d.ts +83 -0
  39. package/core/log/log-publisher-console.service.d.ts +4 -0
  40. package/core/log/log.model.d.ts +40 -0
  41. package/core/log/logger.service.d.ts +33 -0
  42. package/core/models/class-service.model.d.ts +7 -0
  43. package/core/models/getter.model.d.ts +2 -0
  44. package/core/models/i18n.model.d.ts +1 -0
  45. package/core/models/menu.model.d.ts +32 -0
  46. package/core/models/user.model.d.ts +8 -0
  47. package/core/pipes/boolean.pipe.d.ts +7 -0
  48. package/core/pipes/class-map.pipe.d.ts +7 -0
  49. package/core/pipes/enum.pipe.d.ts +8 -0
  50. package/core/pipes/enumerate-async.pipe.d.ts +9 -0
  51. package/core/pipes/enumerate.pipe.d.ts +16 -0
  52. package/core/pipes/getter.pipe.d.ts +8 -0
  53. package/core/pipes/i18n-property.pipe.d.ts +8 -0
  54. package/core/pipes/json-path.pipe.d.ts +13 -0
  55. package/core/pipes/parametrize.pipe.d.ts +12 -0
  56. package/core/pipes/template.pipe.d.ts +8 -0
  57. package/core/provide.d.ts +12 -0
  58. package/core/reflect/type-enum-metadata.d.ts +32 -0
  59. package/core/registry/registry.model.d.ts +8 -0
  60. package/core/registry/type-registry.d.ts +27 -0
  61. package/core/router/route-builder.d.ts +65 -0
  62. package/core/router/router.model.d.ts +13 -0
  63. package/core/router/routes-builder.d.ts +18 -0
  64. package/core/rxjs/map-data-list-result-operator.d.ts +9 -0
  65. package/core/security/permission-helpers.d.ts +3 -0
  66. package/core/security/permission.guard.d.ts +2 -0
  67. package/core/security/permission.service.d.ts +16 -0
  68. package/core/security/permissions.model.d.ts +55 -0
  69. package/core/services/commons-configuration.service.d.ts +69 -0
  70. package/core/services/commons-init.service.d.ts +30 -0
  71. package/core/services/commons-router.service.d.ts +37 -0
  72. package/core/services/commons.service.d.ts +66 -0
  73. package/core/services/local-storage-config.service.d.ts +11 -0
  74. package/core/services/providers/commons-init.provider.d.ts +4 -0
  75. package/core/services/tokens/browser-storage.token.d.ts +2 -0
  76. package/core/services/tokens/commons-init.token.d.ts +3 -0
  77. package/core/services/tokens/log-publisher.token.d.ts +3 -0
  78. package/core/services/tokens/module-config.token.d.ts +34 -0
  79. package/core/styles/style-constants.d.ts +10 -0
  80. package/core/styles/style.model.d.ts +17 -0
  81. package/dev-scripts/version-info.js +1 -1
  82. package/esm2022/core/action/action-data.model.mjs +2 -0
  83. package/esm2022/core/action/action-parameters.model.mjs +2 -0
  84. package/esm2022/core/components/notification/notification-wrapper.component.mjs +50 -0
  85. package/esm2022/core/components/pages/error/error.page.component.mjs +21 -0
  86. package/esm2022/core/components/pages/not-found/not-found.page.component.mjs +21 -0
  87. package/esm2022/core/data-list/data-list-params-helpers.mjs +415 -0
  88. package/esm2022/core/data-list/data-list.model.mjs +2 -0
  89. package/esm2022/core/data-list/filter-match.model.mjs +105 -0
  90. package/esm2022/core/data-providers/base.data-provider.mjs +48 -0
  91. package/esm2022/core/data-providers/lookup.data-provider.mjs +2 -0
  92. package/esm2022/core/descriptors/action.descriptor.mjs +2 -0
  93. package/esm2022/core/descriptors/column.descriptor.mjs +2 -0
  94. package/esm2022/core/descriptors/editor.descriptor.mjs +2 -0
  95. package/esm2022/core/descriptors/enum.descriptor.mjs +2 -0
  96. package/esm2022/core/descriptors/filter.descriptor.mjs +2 -0
  97. package/esm2022/core/descriptors/lookup.descriptor.mjs +2 -0
  98. package/esm2022/core/descriptors/model.descriptor.mjs +2 -0
  99. package/esm2022/core/descriptors/table.descriptor.mjs +2 -0
  100. package/esm2022/core/descriptors/tableview.descriptor.mjs +2 -0
  101. package/esm2022/core/directives/component.directive.mjs +72 -0
  102. package/esm2022/core/directives/dialog-keydown-handler.directive.mjs +49 -0
  103. package/esm2022/core/directives/template.directive.mjs +29 -0
  104. package/esm2022/core/enum/enum-helpers.mjs +81 -0
  105. package/esm2022/core/enum/enum.model.mjs +2 -0
  106. package/esm2022/core/error/error-handler.mjs +20 -0
  107. package/esm2022/core/error/error-helpers.mjs +247 -0
  108. package/esm2022/core/error/error.model.mjs +32 -0
  109. package/esm2022/core/helpers/coercion.mjs +52 -0
  110. package/esm2022/core/helpers/date.mjs +119 -0
  111. package/esm2022/core/helpers/notification.mjs +6 -0
  112. package/esm2022/core/helpers/object.mjs +145 -0
  113. package/esm2022/core/helpers/route.mjs +58 -0
  114. package/esm2022/core/helpers/string.mjs +57 -0
  115. package/esm2022/core/helpers/templates.mjs +4 -0
  116. package/esm2022/core/helpers/type-helpers.mjs +2 -0
  117. package/esm2022/core/i18n/i18n-common.mjs +24 -0
  118. package/esm2022/core/i18n/i18n-error.mjs +27 -0
  119. package/esm2022/core/i18n/i18n-type.mjs +79 -0
  120. package/esm2022/core/index.mjs +105 -0
  121. package/esm2022/core/log/log-publisher-console.service.mjs +40 -0
  122. package/esm2022/core/log/log.model.mjs +10 -0
  123. package/esm2022/core/log/logger.service.mjs +131 -0
  124. package/esm2022/core/mediusinc-mng-commons-core.mjs +5 -0
  125. package/esm2022/core/models/class-attribute.model.mjs +2 -0
  126. package/esm2022/core/models/class-service.model.mjs +2 -0
  127. package/esm2022/core/models/getter.model.mjs +2 -0
  128. package/esm2022/core/models/i18n.model.mjs +2 -0
  129. package/esm2022/core/models/menu.model.mjs +2 -0
  130. package/esm2022/core/models/user.model.mjs +2 -0
  131. package/esm2022/core/models/version.model.mjs +2 -0
  132. package/esm2022/core/pipes/boolean.pipe.mjs +28 -0
  133. package/esm2022/core/pipes/class-map.pipe.mjs +23 -0
  134. package/esm2022/core/pipes/enum.pipe.mjs +27 -0
  135. package/esm2022/core/pipes/enumerate-async.pipe.mjs +36 -0
  136. package/esm2022/core/pipes/enumerate.pipe.mjs +49 -0
  137. package/esm2022/core/pipes/getter.pipe.mjs +21 -0
  138. package/esm2022/core/pipes/i18n-property.pipe.mjs +19 -0
  139. package/esm2022/core/pipes/json-path.pipe.mjs +25 -0
  140. package/esm2022/core/pipes/parametrize.pipe.mjs +86 -0
  141. package/esm2022/core/pipes/template.pipe.mjs +25 -0
  142. package/esm2022/core/provide.mjs +78 -0
  143. package/esm2022/core/reflect/type-enum-decorator.mjs +12 -0
  144. package/esm2022/core/reflect/type-enum-metadata.mjs +62 -0
  145. package/esm2022/core/registry/registry.model.mjs +2 -0
  146. package/esm2022/core/registry/type-registry.mjs +106 -0
  147. package/esm2022/core/router/route-builder.mjs +320 -0
  148. package/esm2022/core/router/router.model.mjs +2 -0
  149. package/esm2022/core/router/routes-builder.mjs +54 -0
  150. package/esm2022/core/rxjs/map-data-list-result-operator.mjs +19 -0
  151. package/esm2022/core/security/permission-helpers.mjs +14 -0
  152. package/esm2022/core/security/permission.guard.mjs +15 -0
  153. package/esm2022/core/security/permission.service.mjs +49 -0
  154. package/esm2022/core/security/permissions.model.mjs +93 -0
  155. package/esm2022/core/services/commons-configuration.service.mjs +174 -0
  156. package/esm2022/core/services/commons-init.service.mjs +111 -0
  157. package/esm2022/core/services/commons-router.service.mjs +180 -0
  158. package/esm2022/core/services/commons.service.mjs +390 -0
  159. package/esm2022/core/services/local-storage-config.service.mjs +29 -0
  160. package/esm2022/core/services/providers/commons-init.provider.mjs +4 -0
  161. package/esm2022/core/services/tokens/browser-storage.token.mjs +3 -0
  162. package/esm2022/core/services/tokens/commons-init.token.mjs +3 -0
  163. package/esm2022/core/services/tokens/log-publisher.token.mjs +3 -0
  164. package/esm2022/core/services/tokens/module-config.token.mjs +3 -0
  165. package/esm2022/core/styles/style-constants.mjs +11 -0
  166. package/esm2022/core/styles/style.model.mjs +20 -0
  167. package/esm2022/filter/descriptors/filter-lookup.descriptor.mjs +185 -0
  168. package/esm2022/filter/descriptors/filter.descriptor.mjs +197 -0
  169. package/esm2022/filter/index.mjs +6 -0
  170. package/esm2022/filter/mediusinc-mng-commons-filter.mjs +5 -0
  171. package/esm2022/filter/models/filter.model.mjs +15 -0
  172. package/esm2022/form/api/data-providers/lookup.data-provider.mjs +45 -0
  173. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +68 -0
  174. package/esm2022/form/api/descriptors/button-style.builder.mjs +174 -0
  175. package/esm2022/form/api/index.mjs +8 -0
  176. package/esm2022/form/api/mediusinc-mng-commons-form-api.mjs +5 -0
  177. package/esm2022/form/api/models/trim.model.mjs +2 -0
  178. package/esm2022/form/components/autocomplete/autocomplete.component.mjs +404 -0
  179. package/esm2022/form/components/date-range/date-range.component.mjs +110 -0
  180. package/esm2022/form/components/dropdown/dropdown.component.mjs +213 -0
  181. package/esm2022/form/directives/input-trim.directive.mjs +55 -0
  182. package/esm2022/form/index.mjs +7 -0
  183. package/esm2022/form/mediusinc-mng-commons-form.mjs +5 -0
  184. package/esm2022/index.mjs +2 -74
  185. package/esm2022/model/descriptors/enum.descriptor.mjs +31 -0
  186. package/esm2022/model/descriptors/model.descriptor.mjs +78 -0
  187. package/esm2022/model/descriptors/type.descriptor.mjs +21 -0
  188. package/esm2022/model/helpers/i18n.mjs +45 -0
  189. package/esm2022/model/helpers/model.mjs +71 -0
  190. package/esm2022/model/index.mjs +8 -0
  191. package/esm2022/model/mediusinc-mng-commons-model.mjs +5 -0
  192. package/esm2022/provide.mjs +6 -0
  193. package/esm2022/table/api/data-providers/table.data-provider.mjs +63 -0
  194. package/esm2022/table/api/descriptors/column.descriptor.mjs +359 -0
  195. package/esm2022/table/api/descriptors/sort.descriptor.mjs +45 -0
  196. package/esm2022/table/api/descriptors/table.descriptor.mjs +778 -0
  197. package/esm2022/table/api/helpers/class-attribute-converter.mjs +104 -0
  198. package/esm2022/table/api/index.mjs +16 -0
  199. package/esm2022/table/api/mediusinc-mng-commons-table-api.mjs +5 -0
  200. package/esm2022/table/api/models/class-table-attribute.model.mjs +2 -0
  201. package/esm2022/table/api/models/column-value.model.mjs +2 -0
  202. package/esm2022/table/api/models/column.model.mjs +21 -0
  203. package/esm2022/table/api/models/table-columns.model.mjs +2 -0
  204. package/esm2022/table/api/models/table-event.model.mjs +2 -0
  205. package/esm2022/table/api/models/table.model.mjs +22 -0
  206. package/esm2022/table/components/column-filter-full/column-filter-full.component.mjs +594 -0
  207. package/esm2022/table/components/column-value/column-value.component.mjs +86 -0
  208. package/esm2022/table/components/table/table.component.mjs +630 -0
  209. package/esm2022/table/helpers/notification.mjs +15 -0
  210. package/esm2022/table/helpers/table-layout-prefs.mjs +10 -0
  211. package/esm2022/table/index.mjs +13 -0
  212. package/esm2022/table/mediusinc-mng-commons-table.mjs +5 -0
  213. package/esm2022/table/models/column-preferences.model.mjs +2 -0
  214. package/esm2022/table/pipes/locale-default-row-class.pipe.mjs +27 -0
  215. package/esm2022/table/pipes/table-column-filter-class.pipe.mjs +25 -0
  216. package/esm2022/table/services/data-list.service.mjs +23 -0
  217. package/esm2022/tableview/action/components/action/action.component.mjs +323 -0
  218. package/esm2022/tableview/action/components/editor/action-editor.component.mjs +97 -0
  219. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +398 -0
  220. package/esm2022/tableview/action/components/localization/data-language-dropdown.component.mjs +53 -0
  221. package/esm2022/tableview/action/components/route/action-route.component.mjs +152 -0
  222. package/esm2022/tableview/action/components/table/action-table.component.mjs +146 -0
  223. package/esm2022/tableview/action/guards/unsaved-changes.guard.mjs +4 -0
  224. package/esm2022/tableview/action/helpers/i18n.mjs +82 -0
  225. package/esm2022/tableview/action/helpers/notification.mjs +17 -0
  226. package/esm2022/tableview/action/helpers/styles.mjs +32 -0
  227. package/esm2022/tableview/action/models/action-editor-dialog-data.model.mjs +2 -0
  228. package/esm2022/tableview/action/models/can-component-deactivate.model.mjs +2 -0
  229. package/esm2022/tableview/action/models/execution/action-context.model.mjs +56 -0
  230. package/esm2022/tableview/action/models/execution/action-instance-state.model.mjs +32 -0
  231. package/esm2022/tableview/action/models/execution/action-instance.model.mjs +170 -0
  232. package/esm2022/tableview/action/services/action-error-mapper.service.mjs +20 -0
  233. package/esm2022/tableview/action/services/action-executor.service.mjs +767 -0
  234. package/esm2022/tableview/action/services/component-action-executor.service.mjs +19 -0
  235. package/esm2022/tableview/action/services/data-provider-executor.service.mjs +26 -0
  236. package/esm2022/tableview/action/services/navigation.service.mjs +52 -0
  237. package/esm2022/tableview/action/services/providers/provide-action-executor.mjs +9 -0
  238. package/esm2022/tableview/action/services/providers/provide-view-container.mjs +17 -0
  239. package/esm2022/tableview/action/services/root-action-executor.service.mjs +18 -0
  240. package/esm2022/tableview/action/services/tokens/action-editor.token.mjs +3 -0
  241. package/esm2022/tableview/action/services/view-container.service.mjs +56 -0
  242. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +76 -0
  243. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +264 -0
  244. package/esm2022/tableview/api/action/descriptors/action-link.descriptor.mjs +89 -0
  245. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +385 -0
  246. package/esm2022/tableview/api/action/helpers/data-provider-executors.mjs +80 -0
  247. package/esm2022/tableview/api/action/models/action-component.model.mjs +2 -0
  248. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +2 -0
  249. package/esm2022/tableview/api/action/models/action-editor.model.mjs +2 -0
  250. package/esm2022/tableview/api/action/models/action-error.model.mjs +14 -0
  251. package/esm2022/tableview/api/action/models/action.type.mjs +26 -0
  252. package/esm2022/tableview/api/action/models/execution/action-context-validation.model.mjs +2 -0
  253. package/esm2022/tableview/api/action/models/execution/action-context.model.mjs +2 -0
  254. package/esm2022/tableview/api/action/models/execution/action-execution-error.model.mjs +2 -0
  255. package/esm2022/tableview/api/action/models/execution/action-instance-state.model.mjs +32 -0
  256. package/esm2022/tableview/api/action/models/execution/action-instance.model.mjs +2 -0
  257. package/esm2022/tableview/api/action/models/execution/view-container.model.mjs +2 -0
  258. package/esm2022/tableview/api/action/models/tableview-action-default-categories.model.mjs +11 -0
  259. package/esm2022/tableview/api/action/services/data-provider-executor.service.mjs +28 -0
  260. package/esm2022/tableview/api/action/services/tokens/data-language-dropdown.token.mjs +3 -0
  261. package/esm2022/tableview/api/editor/data-providers/editor.data-provider.mjs +104 -0
  262. package/esm2022/tableview/api/editor/descriptors/editor.descriptor.mjs +626 -0
  263. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +49 -0
  264. package/esm2022/tableview/api/editor/descriptors/field-base.descriptor.mjs +288 -0
  265. package/esm2022/tableview/api/editor/descriptors/field-group.descriptor.mjs +97 -0
  266. package/esm2022/tableview/api/editor/descriptors/field-lookup.descriptor.mjs +213 -0
  267. package/esm2022/tableview/api/editor/descriptors/field-many.descriptor.mjs +153 -0
  268. package/esm2022/tableview/api/editor/descriptors/field-validation.descriptor.mjs +25 -0
  269. package/esm2022/tableview/api/editor/descriptors/field.descriptor.mjs +343 -0
  270. package/esm2022/tableview/api/editor/helpers/class-attribute-converter.mjs +85 -0
  271. package/esm2022/tableview/api/editor/helpers/field-validators.mjs +33 -0
  272. package/esm2022/tableview/api/editor/models/class-tableview-attribute.model.mjs +2 -0
  273. package/esm2022/tableview/api/editor/models/editor-fields.model.mjs +2 -0
  274. package/esm2022/tableview/api/editor/models/editor.model.mjs +9 -0
  275. package/esm2022/tableview/api/editor/models/field-action-context.model.mjs +2 -0
  276. package/esm2022/tableview/api/editor/models/field.model.mjs +56 -0
  277. package/esm2022/tableview/api/editor/models/form-editor.event.mjs +27 -0
  278. package/esm2022/tableview/api/editor/models/form-editor.interface.mjs +2 -0
  279. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +69 -0
  280. package/esm2022/tableview/api/editor/models/formly-field.model.mjs +2 -0
  281. package/esm2022/tableview/api/editor/models/radio.model.mjs +2 -0
  282. package/esm2022/tableview/api/index.mjs +64 -0
  283. package/esm2022/tableview/api/mediusinc-mng-commons-tableview-api.mjs +5 -0
  284. package/esm2022/tableview/api/tableview/data-providers/tableview.data-provider.mjs +105 -0
  285. package/esm2022/tableview/api/tableview/descriptors/tableview.descriptor.mjs +672 -0
  286. package/esm2022/tableview/api/tableview/helpers/class-attribute-converter.mjs +34 -0
  287. package/esm2022/tableview/api/tableview/helpers/files-export.mjs +34 -0
  288. package/esm2022/tableview/api/tableview/helpers/tableview-create.mjs +24 -0
  289. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +240 -0
  290. package/esm2022/tableview/api/tableview/helpers/tableview-input-builder.mjs +162 -0
  291. package/esm2022/tableview/api/tableview/models/class-tableview-attribute.model.mjs +2 -0
  292. package/esm2022/tableview/api/tableview/models/tableview-input.model.mjs +2 -0
  293. package/esm2022/tableview/api/tableview/models/tableview-route.model.mjs +2 -0
  294. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +285 -0
  295. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +61 -0
  296. package/esm2022/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +54 -0
  297. package/esm2022/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.mjs +39 -0
  298. package/esm2022/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +49 -0
  299. package/esm2022/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +27 -0
  300. package/esm2022/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.mjs +220 -0
  301. package/esm2022/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.mjs +24 -0
  302. package/esm2022/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +215 -0
  303. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +217 -0
  304. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +196 -0
  305. package/esm2022/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +18 -0
  306. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +33 -0
  307. package/esm2022/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +30 -0
  308. package/esm2022/tableview/editor/helpers/editor-formly.mjs +335 -0
  309. package/esm2022/tableview/editor/helpers/formly-config.mjs +260 -0
  310. package/esm2022/tableview/editor/helpers/notification.mjs +11 -0
  311. package/esm2022/tableview/editor/models/formly-config.model.mjs +2 -0
  312. package/esm2022/tableview/editor/services/formly-config.provider.mjs +31 -0
  313. package/esm2022/tableview/index.mjs +62 -0
  314. package/esm2022/tableview/mediusinc-mng-commons-tableview.mjs +5 -0
  315. package/esm2022/tableview/provide.mjs +62 -0
  316. package/esm2022/tableview/tableview/components/route/tableview-route.component.mjs +15 -0
  317. package/esm2022/tableview/tableview/components/tableview/tableview.component.mjs +75 -0
  318. package/esm2022/tableview/tableview/router/tableview-route-builder.mjs +201 -0
  319. package/esm2022/tableview/tableview/services/tableview-feature-config.token.mjs +3 -0
  320. package/fesm2022/mediusinc-mng-commons-core.mjs +3882 -0
  321. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -0
  322. package/fesm2022/mediusinc-mng-commons-filter.mjs +402 -0
  323. package/fesm2022/mediusinc-mng-commons-filter.mjs.map +1 -0
  324. package/fesm2022/mediusinc-mng-commons-form-api.mjs +294 -0
  325. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -0
  326. package/fesm2022/mediusinc-mng-commons-form.mjs +770 -0
  327. package/fesm2022/mediusinc-mng-commons-form.mjs.map +1 -0
  328. package/fesm2022/mediusinc-mng-commons-model.mjs +251 -0
  329. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -0
  330. package/fesm2022/mediusinc-mng-commons-table-api.mjs +1391 -0
  331. package/fesm2022/mediusinc-mng-commons-table-api.mjs.map +1 -0
  332. package/fesm2022/mediusinc-mng-commons-table.mjs +1376 -0
  333. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -0
  334. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +4372 -0
  335. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -0
  336. package/fesm2022/mediusinc-mng-commons-tableview.mjs +4691 -0
  337. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -0
  338. package/fesm2022/mediusinc-mng-commons.mjs +5 -18605
  339. package/fesm2022/mediusinc-mng-commons.mjs.map +1 -1
  340. package/filter/README.md +9 -0
  341. package/filter/descriptors/filter-lookup.descriptor.d.ts +67 -0
  342. package/filter/descriptors/filter.descriptor.d.ts +67 -0
  343. package/filter/index.d.ts +3 -0
  344. package/form/README.md +8 -0
  345. package/form/api/README.md +7 -0
  346. package/form/api/data-providers/lookup.data-provider.d.ts +19 -0
  347. package/form/api/descriptors/action-button.descriptor.d.ts +25 -0
  348. package/form/api/descriptors/button-style.builder.d.ts +68 -0
  349. package/form/api/index.d.ts +4 -0
  350. package/form/components/autocomplete/autocomplete.component.d.ts +82 -0
  351. package/form/components/date-range/date-range.component.d.ts +28 -0
  352. package/form/components/dropdown/dropdown.component.d.ts +55 -0
  353. package/form/directives/input-trim.directive.d.ts +14 -0
  354. package/form/index.d.ts +4 -0
  355. package/index.d.ts +1 -50
  356. package/model/README.md +7 -0
  357. package/model/descriptors/enum.descriptor.d.ts +14 -0
  358. package/model/descriptors/model.descriptor.d.ts +31 -0
  359. package/model/descriptors/type.descriptor.d.ts +10 -0
  360. package/model/helpers/i18n.d.ts +10 -0
  361. package/model/helpers/model.d.ts +5 -0
  362. package/model/index.d.ts +5 -0
  363. package/package.json +61 -25
  364. package/provide.d.ts +7 -0
  365. package/table/README.md +11 -0
  366. package/table/api/README.md +9 -0
  367. package/table/api/data-providers/table.data-provider.d.ts +38 -0
  368. package/table/api/descriptors/column.descriptor.d.ts +148 -0
  369. package/table/api/descriptors/table.descriptor.d.ts +281 -0
  370. package/table/api/helpers/class-attribute-converter.d.ts +22 -0
  371. package/table/api/index.d.ts +11 -0
  372. package/table/api/models/class-table-attribute.model.d.ts +8 -0
  373. package/table/api/models/column-value.model.d.ts +7 -0
  374. package/table/api/models/table-columns.model.d.ts +42 -0
  375. package/table/api/models/table-event.model.d.ts +17 -0
  376. package/table/api/models/table.model.d.ts +35 -0
  377. package/table/components/column-filter-full/column-filter-full.component.d.ts +100 -0
  378. package/table/components/column-value/column-value.component.d.ts +32 -0
  379. package/table/components/table/table.component.d.ts +114 -0
  380. package/table/helpers/notification.d.ts +4 -0
  381. package/table/helpers/table-layout-prefs.d.ts +7 -0
  382. package/table/index.d.ts +8 -0
  383. package/table/models/column-preferences.model.d.ts +12 -0
  384. package/table/pipes/locale-default-row-class.pipe.d.ts +10 -0
  385. package/table/pipes/table-column-filter-class.pipe.d.ts +8 -0
  386. package/table/services/data-list.service.d.ts +16 -0
  387. package/tableview/README.md +13 -0
  388. package/tableview/action/components/action/action.component.d.ts +73 -0
  389. package/tableview/action/components/editor/action-editor.component.d.ts +31 -0
  390. package/tableview/action/components/editor/injector-context/action-editor-injector-context.component.d.ts +76 -0
  391. package/tableview/action/components/localization/data-language-dropdown.component.d.ts +22 -0
  392. package/tableview/action/components/route/action-route.component.d.ts +31 -0
  393. package/tableview/action/components/table/action-table.component.d.ts +48 -0
  394. package/tableview/action/guards/unsaved-changes.guard.d.ts +3 -0
  395. package/tableview/action/helpers/i18n.d.ts +22 -0
  396. package/tableview/action/helpers/notification.d.ts +6 -0
  397. package/tableview/action/helpers/styles.d.ts +5 -0
  398. package/tableview/action/models/action-editor-dialog-data.model.d.ts +11 -0
  399. package/tableview/action/models/execution/action-context.model.d.ts +36 -0
  400. package/tableview/action/models/execution/action-instance-state.model.d.ts +30 -0
  401. package/tableview/action/models/execution/action-instance.model.d.ts +56 -0
  402. package/tableview/action/services/action-error-mapper.service.d.ts +18 -0
  403. package/tableview/action/services/action-executor.service.d.ts +175 -0
  404. package/tableview/action/services/component-action-executor.service.d.ts +9 -0
  405. package/tableview/action/services/data-provider-executor.service.d.ts +23 -0
  406. package/tableview/action/services/navigation.service.d.ts +15 -0
  407. package/tableview/action/services/root-action-executor.service.d.ts +9 -0
  408. package/tableview/action/services/tokens/action-editor.token.d.ts +2 -0
  409. package/tableview/action/services/view-container.service.d.ts +30 -0
  410. package/tableview/api/README.md +11 -0
  411. package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +36 -0
  412. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +117 -0
  413. package/tableview/api/action/descriptors/action-link.descriptor.d.ts +34 -0
  414. package/tableview/api/action/descriptors/action.descriptor.d.ts +151 -0
  415. package/tableview/api/action/helpers/data-provider-executors.d.ts +18 -0
  416. package/tableview/api/action/models/action-component.model.d.ts +12 -0
  417. package/tableview/api/action/models/action-descriptor.types.d.ts +5 -0
  418. package/tableview/api/action/models/action-editor.model.d.ts +4 -0
  419. package/tableview/api/action/models/action-error.model.d.ts +14 -0
  420. package/tableview/api/action/models/action.type.d.ts +21 -0
  421. package/tableview/api/action/models/execution/action-context-validation.model.d.ts +11 -0
  422. package/tableview/api/action/models/execution/action-context.model.d.ts +24 -0
  423. package/tableview/api/action/models/execution/action-execution-error.model.d.ts +4 -0
  424. package/tableview/api/action/models/execution/action-instance-state.model.d.ts +30 -0
  425. package/tableview/api/action/models/execution/action-instance.model.d.ts +31 -0
  426. package/tableview/api/action/models/execution/view-container.model.d.ts +38 -0
  427. package/tableview/api/action/services/data-provider-executor.service.d.ts +38 -0
  428. package/tableview/api/action/services/tokens/data-language-dropdown.token.d.ts +2 -0
  429. package/tableview/api/editor/data-providers/editor.data-provider.d.ts +87 -0
  430. package/tableview/api/editor/descriptors/editor.descriptor.d.ts +366 -0
  431. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +22 -0
  432. package/tableview/api/editor/descriptors/field-base.descriptor.d.ts +120 -0
  433. package/tableview/api/editor/descriptors/field-group.descriptor.d.ts +41 -0
  434. package/tableview/api/editor/descriptors/field-lookup.descriptor.d.ts +80 -0
  435. package/tableview/api/editor/descriptors/field-many.descriptor.d.ts +61 -0
  436. package/tableview/api/editor/descriptors/field-validation.descriptor.d.ts +19 -0
  437. package/tableview/api/editor/descriptors/field.descriptor.d.ts +168 -0
  438. package/tableview/api/editor/helpers/class-attribute-converter.d.ts +21 -0
  439. package/tableview/api/editor/helpers/field-validators.d.ts +3 -0
  440. package/tableview/api/editor/models/class-tableview-attribute.model.d.ts +7 -0
  441. package/tableview/api/editor/models/editor-fields.model.d.ts +34 -0
  442. package/tableview/api/editor/models/editor.model.d.ts +7 -0
  443. package/tableview/api/editor/models/field-action-context.model.d.ts +24 -0
  444. package/tableview/api/editor/models/field.model.d.ts +66 -0
  445. package/tableview/api/editor/models/form-editor.event.d.ts +55 -0
  446. package/tableview/api/editor/models/formly-custom-field.model.d.ts +27 -0
  447. package/tableview/api/editor/models/formly-field.model.d.ts +18 -0
  448. package/tableview/api/index.d.ts +50 -0
  449. package/tableview/api/tableview/data-providers/tableview.data-provider.d.ts +43 -0
  450. package/tableview/api/tableview/descriptors/tableview.descriptor.d.ts +296 -0
  451. package/tableview/api/tableview/helpers/class-attribute-converter.d.ts +8 -0
  452. package/tableview/api/tableview/helpers/files-export.d.ts +4 -0
  453. package/tableview/api/tableview/helpers/tableview-create.d.ts +16 -0
  454. package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +38 -0
  455. package/tableview/api/tableview/helpers/tableview-input-builder.d.ts +114 -0
  456. package/tableview/api/tableview/models/class-tableview-attribute.model.d.ts +3 -0
  457. package/tableview/api/tableview/models/tableview-input.model.d.ts +8 -0
  458. package/tableview/api/tableview/models/tableview-route.model.d.ts +20 -0
  459. package/tableview/editor/components/editor/form-editor.component.d.ts +50 -0
  460. package/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.d.ts +14 -0
  461. package/tableview/editor/components/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -0
  462. package/tableview/editor/components/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +11 -0
  463. package/tableview/editor/components/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -0
  464. package/tableview/editor/components/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +12 -0
  465. package/tableview/editor/components/formly/fields/formly-field-input/formly-field-input.component.d.ts +37 -0
  466. package/tableview/editor/components/formly/fields/formly-field-label/formly-field-label.component.d.ts +11 -0
  467. package/tableview/editor/components/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +43 -0
  468. package/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -0
  469. package/tableview/editor/components/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +41 -0
  470. package/tableview/editor/components/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +7 -0
  471. package/tableview/editor/components/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +11 -0
  472. package/tableview/editor/components/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +9 -0
  473. package/tableview/editor/helpers/editor-formly.d.ts +10 -0
  474. package/tableview/editor/helpers/formly-config.d.ts +18 -0
  475. package/tableview/editor/helpers/notification.d.ts +4 -0
  476. package/tableview/editor/models/formly-config.model.d.ts +5 -0
  477. package/tableview/editor/services/formly-config.provider.d.ts +5 -0
  478. package/tableview/index.d.ts +48 -0
  479. package/tableview/provide.d.ts +8 -0
  480. package/tableview/tableview/components/route/tableview-route.component.d.ts +7 -0
  481. package/tableview/tableview/components/tableview/tableview.component.d.ts +26 -0
  482. package/tableview/tableview/router/tableview-route-builder.d.ts +42 -0
  483. package/tableview/tableview/services/tableview-feature-config.token.d.ts +18 -0
  484. package/assets/fonts/poppins-v20-latin-500.woff +0 -0
  485. package/assets/fonts/poppins-v20-latin-500.woff2 +0 -0
  486. package/assets/fonts/poppins-v20-latin-600.woff +0 -0
  487. package/assets/fonts/poppins-v20-latin-600.woff2 +0 -0
  488. package/assets/fonts/poppins-v20-latin-700.woff +0 -0
  489. package/assets/fonts/poppins-v20-latin-700.woff2 +0 -0
  490. package/assets/fonts/poppins-v20-latin-regular.woff +0 -0
  491. package/assets/fonts/poppins-v20-latin-regular.woff2 +0 -0
  492. package/assets/images/effect-ondark.png +0 -0
  493. package/assets/images/effect-ondark.svg +0 -38
  494. package/assets/images/effect-ondark@2x.png +0 -0
  495. package/assets/images/effect-onlight.png +0 -0
  496. package/assets/images/effect-onlight.svg +0 -38
  497. package/assets/images/effect-onlight@2x.png +0 -0
  498. package/assets/images/pages/exception-ondark.png +0 -0
  499. package/assets/images/pages/exception-onlight.png +0 -0
  500. package/assets/images/pages/login-ondark.png +0 -0
  501. package/assets/images/pages/login-onlight.png +0 -0
  502. package/data-api/README.md +0 -3
  503. package/data-api/class-dto/README.md +0 -3
  504. package/data-api/class-dto/helpers/tableview-crud-create.d.ts +0 -40
  505. package/data-api/class-dto/index.d.ts +0 -7
  506. package/data-api/class-dto/models/query-result.model.d.ts +0 -13
  507. package/data-api/class-dto/obsolete/README.md +0 -3
  508. package/data-api/class-dto/obsolete/helpers/query-param-convert.d.ts +0 -23
  509. package/data-api/class-dto/obsolete/helpers/tableview-crud-create.d.ts +0 -22
  510. package/data-api/class-dto/obsolete/index.d.ts +0 -14
  511. package/data-api/class-dto/obsolete/models/builders/query-param.builder.d.ts +0 -36
  512. package/data-api/class-dto/obsolete/models/filter-match-type.model.d.ts +0 -25
  513. package/data-api/class-dto/obsolete/models/filter-param.model.d.ts +0 -23
  514. package/data-api/class-dto/obsolete/models/query-mode.model.d.ts +0 -16
  515. package/data-api/class-dto/obsolete/models/query-param.model.d.ts +0 -31
  516. package/data-api/class-dto/obsolete/models/query-result.model.d.ts +0 -24
  517. package/data-api/class-dto/obsolete/provide.d.ts +0 -9
  518. package/data-api/class-dto/obsolete/services/api.abstract.service.d.ts +0 -36
  519. package/data-api/class-dto/obsolete/services/crud-api.abstract.service.d.ts +0 -37
  520. package/data-api/class-dto/obsolete/services/get-all-api.abstract.service.d.ts +0 -30
  521. package/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.d.ts +0 -28
  522. package/data-api/class-dto/obsolete/utils/query-param-map.util.d.ts +0 -22
  523. package/data-api/class-dto/serder/object-serializer.d.ts +0 -26
  524. package/data-api/class-dto/services/api.abstract.service.d.ts +0 -22
  525. package/data-api/class-dto/services/crud-api.abstract.service.d.ts +0 -25
  526. package/data-api/class-dto/services/get-all-api.abstract.service.d.ts +0 -14
  527. package/data-api/class-dto/tableview/tableview-crud.data-provider.d.ts +0 -17
  528. package/data-api/helpers/get-all-params.d.ts +0 -69
  529. package/data-api/helpers/tableview-get-all-params-create.d.ts +0 -14
  530. package/data-api/index.d.ts +0 -5
  531. package/data-api/models/request-params.model.d.ts +0 -61
  532. package/data-api/rxjs/map-to-data-list.operator.d.ts +0 -9
  533. package/data-api/types/extract-get-all-params.type.d.ts +0 -14
  534. package/esm2022/data-api/class-dto/helpers/tableview-crud-create.mjs +0 -40
  535. package/esm2022/data-api/class-dto/index.mjs +0 -13
  536. package/esm2022/data-api/class-dto/mediusinc-mng-commons-data-api-class-dto.mjs +0 -5
  537. package/esm2022/data-api/class-dto/models/query-result.model.mjs +0 -24
  538. package/esm2022/data-api/class-dto/obsolete/helpers/query-param-convert.mjs +0 -103
  539. package/esm2022/data-api/class-dto/obsolete/helpers/tableview-crud-create.mjs +0 -21
  540. package/esm2022/data-api/class-dto/obsolete/index.mjs +0 -21
  541. package/esm2022/data-api/class-dto/obsolete/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +0 -5
  542. package/esm2022/data-api/class-dto/obsolete/models/builders/query-param.builder.mjs +0 -83
  543. package/esm2022/data-api/class-dto/obsolete/models/filter-match-type.model.mjs +0 -27
  544. package/esm2022/data-api/class-dto/obsolete/models/filter-param.model.mjs +0 -33
  545. package/esm2022/data-api/class-dto/obsolete/models/query-mode.model.mjs +0 -18
  546. package/esm2022/data-api/class-dto/obsolete/models/query-param.model.mjs +0 -68
  547. package/esm2022/data-api/class-dto/obsolete/models/query-result.model.mjs +0 -24
  548. package/esm2022/data-api/class-dto/obsolete/provide.mjs +0 -40
  549. package/esm2022/data-api/class-dto/obsolete/services/api.abstract.service.mjs +0 -70
  550. package/esm2022/data-api/class-dto/obsolete/services/crud-api.abstract.service.mjs +0 -83
  551. package/esm2022/data-api/class-dto/obsolete/services/get-all-api.abstract.service.mjs +0 -38
  552. package/esm2022/data-api/class-dto/obsolete/tableview/tableview-crud.data-provider.mjs +0 -51
  553. package/esm2022/data-api/class-dto/obsolete/utils/query-param-map.util.mjs +0 -57
  554. package/esm2022/data-api/class-dto/serder/object-serializer.mjs +0 -184
  555. package/esm2022/data-api/class-dto/services/api.abstract.service.mjs +0 -55
  556. package/esm2022/data-api/class-dto/services/crud-api.abstract.service.mjs +0 -82
  557. package/esm2022/data-api/class-dto/services/get-all-api.abstract.service.mjs +0 -49
  558. package/esm2022/data-api/class-dto/tableview/tableview-crud.data-provider.mjs +0 -49
  559. package/esm2022/data-api/helpers/get-all-params.mjs +0 -180
  560. package/esm2022/data-api/helpers/tableview-get-all-params-create.mjs +0 -18
  561. package/esm2022/data-api/index.mjs +0 -10
  562. package/esm2022/data-api/mediusinc-mng-commons-data-api.mjs +0 -5
  563. package/esm2022/data-api/models/request-params.model.mjs +0 -2
  564. package/esm2022/data-api/rxjs/map-to-data-list.operator.mjs +0 -19
  565. package/esm2022/data-api/types/extract-get-all-params.type.mjs +0 -2
  566. package/esm2022/lib/components/action/action.component.mjs +0 -314
  567. package/esm2022/lib/components/action/editor/action-editor.component.mjs +0 -98
  568. package/esm2022/lib/components/action/editor/injector-context/action-editor-injector-context.component.mjs +0 -394
  569. package/esm2022/lib/components/action/index.mjs +0 -6
  570. package/esm2022/lib/components/action/localization/data-language-dropdown.component.mjs +0 -53
  571. package/esm2022/lib/components/action/models/action-component.model.mjs +0 -2
  572. package/esm2022/lib/components/action/models/action-execution.model.mjs +0 -323
  573. package/esm2022/lib/components/action/models/index.mjs +0 -4
  574. package/esm2022/lib/components/action/models/tableview-action-default-categories.model.mjs +0 -11
  575. package/esm2022/lib/components/action/route/action-route.component.mjs +0 -141
  576. package/esm2022/lib/components/action/table/action-table.component.mjs +0 -152
  577. package/esm2022/lib/components/form/autocomplete/autocomplete.component.mjs +0 -408
  578. package/esm2022/lib/components/form/date-range/date-range.component.mjs +0 -110
  579. package/esm2022/lib/components/form/dropdown/dropdown.component.mjs +0 -210
  580. package/esm2022/lib/components/form/editor/form-editor.component.mjs +0 -281
  581. package/esm2022/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.mjs +0 -61
  582. package/esm2022/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +0 -54
  583. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.mjs +0 -69
  584. package/esm2022/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.mjs +0 -39
  585. package/esm2022/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +0 -49
  586. package/esm2022/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +0 -27
  587. package/esm2022/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +0 -220
  588. package/esm2022/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +0 -24
  589. package/esm2022/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +0 -219
  590. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +0 -221
  591. package/esm2022/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +0 -212
  592. package/esm2022/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +0 -18
  593. package/esm2022/lib/components/form/formly/fields/index.mjs +0 -13
  594. package/esm2022/lib/components/form/formly/formly.config.mjs +0 -250
  595. package/esm2022/lib/components/form/formly/index.mjs +0 -2
  596. package/esm2022/lib/components/form/formly/models/formly-config.model.mjs +0 -2
  597. package/esm2022/lib/components/form/formly/models/formly-field.model.mjs +0 -2
  598. package/esm2022/lib/components/form/formly/models/index.mjs +0 -3
  599. package/esm2022/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.mjs +0 -33
  600. package/esm2022/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +0 -31
  601. package/esm2022/lib/components/form/formly/wrappers/index.mjs +0 -3
  602. package/esm2022/lib/components/form/index.mjs +0 -5
  603. package/esm2022/lib/components/form/models/field-action-context.model.mjs +0 -2
  604. package/esm2022/lib/components/form/models/form-editor.event.mjs +0 -49
  605. package/esm2022/lib/components/form/models/form-editor.interface.mjs +0 -2
  606. package/esm2022/lib/components/form/models/index.mjs +0 -4
  607. package/esm2022/lib/components/layout/breadcrumb.component.mjs +0 -34
  608. package/esm2022/lib/components/layout/footer.component.mjs +0 -19
  609. package/esm2022/lib/components/layout/index.mjs +0 -9
  610. package/esm2022/lib/components/layout/main-layout.component.mjs +0 -53
  611. package/esm2022/lib/components/layout/menu-item.component.mjs +0 -296
  612. package/esm2022/lib/components/layout/menu.component.mjs +0 -34
  613. package/esm2022/lib/components/layout/services/index.mjs +0 -2
  614. package/esm2022/lib/components/layout/services/main-layout.component.service.mjs +0 -196
  615. package/esm2022/lib/components/layout/topbar-user.component.mjs +0 -46
  616. package/esm2022/lib/components/layout/topbar.component.mjs +0 -66
  617. package/esm2022/lib/components/layout/version.component.mjs +0 -60
  618. package/esm2022/lib/components/layoutV2/breadcrumb.component.mjs +0 -30
  619. package/esm2022/lib/components/layoutV2/footer.component.mjs +0 -29
  620. package/esm2022/lib/components/layoutV2/index.mjs +0 -8
  621. package/esm2022/lib/components/layoutV2/main-layout.component.mjs +0 -95
  622. package/esm2022/lib/components/layoutV2/menu-item.component.mjs +0 -275
  623. package/esm2022/lib/components/layoutV2/menu.component.mjs +0 -39
  624. package/esm2022/lib/components/layoutV2/model/index.mjs +0 -3
  625. package/esm2022/lib/components/layoutV2/model/layout-state.model.mjs +0 -2
  626. package/esm2022/lib/components/layoutV2/model/menu.model.mjs +0 -2
  627. package/esm2022/lib/components/layoutV2/services/index.mjs +0 -3
  628. package/esm2022/lib/components/layoutV2/services/main-layout.component.service.mjs +0 -71
  629. package/esm2022/lib/components/layoutV2/services/menu.service.mjs +0 -122
  630. package/esm2022/lib/components/layoutV2/sidebar.component.mjs +0 -62
  631. package/esm2022/lib/components/layoutV2/topbar-user.component.mjs +0 -40
  632. package/esm2022/lib/components/layoutV2/topbar.component.mjs +0 -69
  633. package/esm2022/lib/components/layoutV2/version.component.mjs +0 -63
  634. package/esm2022/lib/components/notification/notification-wrapper.component.mjs +0 -50
  635. package/esm2022/lib/components/pages/error/error.page.component.mjs +0 -21
  636. package/esm2022/lib/components/pages/index.mjs +0 -3
  637. package/esm2022/lib/components/pages/not-found/not-found.page.component.mjs +0 -21
  638. package/esm2022/lib/components/table/column-filter-full/column-filter-full.component.mjs +0 -597
  639. package/esm2022/lib/components/table/column-value/column-value.component.mjs +0 -90
  640. package/esm2022/lib/components/table/models/table.event.mjs +0 -16
  641. package/esm2022/lib/components/table/models/table.interface.mjs +0 -2
  642. package/esm2022/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.mjs +0 -25
  643. package/esm2022/lib/components/table/table.component.mjs +0 -643
  644. package/esm2022/lib/components/tableview/actions/tableview-default-actions.mjs +0 -215
  645. package/esm2022/lib/components/tableview/builders/tableview-builder.mjs +0 -162
  646. package/esm2022/lib/components/tableview/helpers/tableview-create.mjs +0 -24
  647. package/esm2022/lib/components/tableview/index.mjs +0 -7
  648. package/esm2022/lib/components/tableview/models/tableview.model.mjs +0 -2
  649. package/esm2022/lib/components/tableview/route/tableview-route.component.mjs +0 -15
  650. package/esm2022/lib/components/tableview/tableview.component.mjs +0 -82
  651. package/esm2022/lib/data-providers/base.data-provider.mjs +0 -48
  652. package/esm2022/lib/data-providers/editor.data-provider.mjs +0 -105
  653. package/esm2022/lib/data-providers/index.mjs +0 -6
  654. package/esm2022/lib/data-providers/lookup.data-provider.mjs +0 -45
  655. package/esm2022/lib/data-providers/table.data-provider.mjs +0 -64
  656. package/esm2022/lib/data-providers/tableview.data-provider.mjs +0 -105
  657. package/esm2022/lib/descriptors/action/action-button.descriptor.mjs +0 -68
  658. package/esm2022/lib/descriptors/action/action-confirmation.descriptor.mjs +0 -77
  659. package/esm2022/lib/descriptors/action/action-editor.descriptor.mjs +0 -266
  660. package/esm2022/lib/descriptors/action/action-link.descriptor.mjs +0 -89
  661. package/esm2022/lib/descriptors/action/action.descriptor.mjs +0 -383
  662. package/esm2022/lib/descriptors/action/index.mjs +0 -6
  663. package/esm2022/lib/descriptors/editor/editor.descriptor.mjs +0 -510
  664. package/esm2022/lib/descriptors/editor/field-action.descriptor.mjs +0 -50
  665. package/esm2022/lib/descriptors/editor/field-base.descriptor.mjs +0 -285
  666. package/esm2022/lib/descriptors/editor/field-group.descriptor.mjs +0 -97
  667. package/esm2022/lib/descriptors/editor/field-lookup.descriptor.mjs +0 -212
  668. package/esm2022/lib/descriptors/editor/field-many.descriptor.mjs +0 -153
  669. package/esm2022/lib/descriptors/editor/field-validation.descriptor.mjs +0 -25
  670. package/esm2022/lib/descriptors/editor/field.descriptor.mjs +0 -343
  671. package/esm2022/lib/descriptors/editor/index.mjs +0 -9
  672. package/esm2022/lib/descriptors/editor/internal/editor-fields.model.mjs +0 -2
  673. package/esm2022/lib/descriptors/editor/internal/editor.model.mjs +0 -2
  674. package/esm2022/lib/descriptors/filter/filter-lookup.descriptor.mjs +0 -186
  675. package/esm2022/lib/descriptors/filter/filter.descriptor.mjs +0 -198
  676. package/esm2022/lib/descriptors/filter/index.mjs +0 -3
  677. package/esm2022/lib/descriptors/interfaces/field-config.interface.mjs +0 -2
  678. package/esm2022/lib/descriptors/interfaces/index.mjs +0 -3
  679. package/esm2022/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +0 -2
  680. package/esm2022/lib/descriptors/model/enum.descriptor.mjs +0 -31
  681. package/esm2022/lib/descriptors/model/index.mjs +0 -4
  682. package/esm2022/lib/descriptors/model/model.descriptor.mjs +0 -79
  683. package/esm2022/lib/descriptors/model/type.descriptor.mjs +0 -11
  684. package/esm2022/lib/descriptors/table/column.descriptor.mjs +0 -359
  685. package/esm2022/lib/descriptors/table/index.mjs +0 -4
  686. package/esm2022/lib/descriptors/table/internal/table-columns.model.mjs +0 -2
  687. package/esm2022/lib/descriptors/table/internal/table.model.mjs +0 -2
  688. package/esm2022/lib/descriptors/table/sort.descriptor.mjs +0 -45
  689. package/esm2022/lib/descriptors/table/table.descriptor.mjs +0 -751
  690. package/esm2022/lib/descriptors/tableview/index.mjs +0 -2
  691. package/esm2022/lib/descriptors/tableview/internal/tableview.model.mjs +0 -2
  692. package/esm2022/lib/descriptors/tableview/tableview.descriptor.mjs +0 -558
  693. package/esm2022/lib/descriptors/types/action.type.mjs +0 -26
  694. package/esm2022/lib/descriptors/types/column.type.mjs +0 -21
  695. package/esm2022/lib/descriptors/types/editor.type.mjs +0 -8
  696. package/esm2022/lib/descriptors/types/field.type.mjs +0 -56
  697. package/esm2022/lib/descriptors/types/filter.type.mjs +0 -15
  698. package/esm2022/lib/descriptors/types/index.mjs +0 -8
  699. package/esm2022/lib/descriptors/types/table.type.mjs +0 -22
  700. package/esm2022/lib/descriptors/types/trim.type.mjs +0 -2
  701. package/esm2022/lib/directives/component.directive.mjs +0 -66
  702. package/esm2022/lib/directives/dialog-keydown-handler.directive.mjs +0 -49
  703. package/esm2022/lib/directives/index.mjs +0 -5
  704. package/esm2022/lib/directives/input-trim.directive.mjs +0 -55
  705. package/esm2022/lib/directives/template.directive.mjs +0 -29
  706. package/esm2022/lib/error/error.handler.mjs +0 -20
  707. package/esm2022/lib/error/index.mjs +0 -2
  708. package/esm2022/lib/guards/index.mjs +0 -2
  709. package/esm2022/lib/guards/unsaved-changes.guard.mjs +0 -4
  710. package/esm2022/lib/helpers/coercion.mjs +0 -52
  711. package/esm2022/lib/helpers/data-provider-executors.mjs +0 -80
  712. package/esm2022/lib/models/action-editor.model.mjs +0 -2
  713. package/esm2022/lib/models/can-component-deactivate.model.mjs +0 -2
  714. package/esm2022/lib/models/class.model.mjs +0 -2
  715. package/esm2022/lib/models/column-value.model.mjs +0 -2
  716. package/esm2022/lib/models/common-init-event-enum.model.mjs +0 -11
  717. package/esm2022/lib/models/config.model.mjs +0 -2
  718. package/esm2022/lib/models/data-list.model.mjs +0 -2
  719. package/esm2022/lib/models/enum.model.mjs +0 -2
  720. package/esm2022/lib/models/error.model.mjs +0 -44
  721. package/esm2022/lib/models/filter-match.model.mjs +0 -105
  722. package/esm2022/lib/models/index.mjs +0 -20
  723. package/esm2022/lib/models/layout-config.model.mjs +0 -2
  724. package/esm2022/lib/models/log.model.mjs +0 -10
  725. package/esm2022/lib/models/menu.model.mjs +0 -2
  726. package/esm2022/lib/models/radio.model.mjs +0 -2
  727. package/esm2022/lib/models/tableview-attr.model.mjs +0 -2
  728. package/esm2022/lib/models/type-registry.model.mjs +0 -2
  729. package/esm2022/lib/models/user.model.mjs +0 -2
  730. package/esm2022/lib/models/version.model.mjs +0 -2
  731. package/esm2022/lib/models/view-container.model.mjs +0 -2
  732. package/esm2022/lib/pipes/boolean.pipe.mjs +0 -28
  733. package/esm2022/lib/pipes/class-map.pipe.mjs +0 -23
  734. package/esm2022/lib/pipes/enum.pipe.mjs +0 -26
  735. package/esm2022/lib/pipes/enumerate-async.pipe.mjs +0 -41
  736. package/esm2022/lib/pipes/enumerate.pipe.mjs +0 -58
  737. package/esm2022/lib/pipes/getter.pipe.mjs +0 -21
  738. package/esm2022/lib/pipes/i18n-property.pipe.mjs +0 -19
  739. package/esm2022/lib/pipes/index.mjs +0 -12
  740. package/esm2022/lib/pipes/json-path.pipe.mjs +0 -25
  741. package/esm2022/lib/pipes/locale-default-row-class.pipe.mjs +0 -27
  742. package/esm2022/lib/pipes/models/internal/enumrate-pipe-i18n.model.mjs +0 -2
  743. package/esm2022/lib/pipes/models/internal/index.mjs +0 -2
  744. package/esm2022/lib/pipes/parametrize.pipe.mjs +0 -86
  745. package/esm2022/lib/pipes/template.pipe.mjs +0 -26
  746. package/esm2022/lib/provide.mjs +0 -101
  747. package/esm2022/lib/registry/type.registry.mjs +0 -106
  748. package/esm2022/lib/router/index.mjs +0 -4
  749. package/esm2022/lib/router/models/index.mjs +0 -2
  750. package/esm2022/lib/router/models/router.model.mjs +0 -2
  751. package/esm2022/lib/router/route-builder.mjs +0 -347
  752. package/esm2022/lib/router/routes-builder.mjs +0 -69
  753. package/esm2022/lib/router/tableview-route-builder.mjs +0 -201
  754. package/esm2022/lib/security/authorization.guard.mjs +0 -15
  755. package/esm2022/lib/security/authorization.service.mjs +0 -51
  756. package/esm2022/lib/security/authorization.util.mjs +0 -16
  757. package/esm2022/lib/security/index.mjs +0 -4
  758. package/esm2022/lib/security/model/authorization.type.mjs +0 -8
  759. package/esm2022/lib/security/model/index.mjs +0 -4
  760. package/esm2022/lib/security/model/permission-service.interface.mjs +0 -2
  761. package/esm2022/lib/security/model/permissions.model.mjs +0 -87
  762. package/esm2022/lib/services/action/action-executor.service.mjs +0 -747
  763. package/esm2022/lib/services/action/component-action-executor.service.mjs +0 -19
  764. package/esm2022/lib/services/action/index.mjs +0 -5
  765. package/esm2022/lib/services/action/provide-action-executor.mjs +0 -9
  766. package/esm2022/lib/services/action/root-action-executor.service.mjs +0 -18
  767. package/esm2022/lib/services/action-error-mapper.service.mjs +0 -20
  768. package/esm2022/lib/services/commons-init.service.mjs +0 -100
  769. package/esm2022/lib/services/commons.service.mjs +0 -459
  770. package/esm2022/lib/services/configuration.service.mjs +0 -174
  771. package/esm2022/lib/services/data-provider-executor.service.mjs +0 -52
  772. package/esm2022/lib/services/index.mjs +0 -12
  773. package/esm2022/lib/services/internal/commons-init.provider.mjs +0 -4
  774. package/esm2022/lib/services/internal/index.mjs +0 -2
  775. package/esm2022/lib/services/log-publisher-console.service.mjs +0 -40
  776. package/esm2022/lib/services/logger.service.mjs +0 -130
  777. package/esm2022/lib/services/mng-localstorage-config.service.mjs +0 -30
  778. package/esm2022/lib/services/navigation.service.mjs +0 -55
  779. package/esm2022/lib/services/providers/formly-config.provider.mjs +0 -31
  780. package/esm2022/lib/services/providers/index.mjs +0 -2
  781. package/esm2022/lib/services/router.service.mjs +0 -183
  782. package/esm2022/lib/services/tokens/browser-storage.token.mjs +0 -6
  783. package/esm2022/lib/services/tokens/commons-init.token.mjs +0 -3
  784. package/esm2022/lib/services/tokens/default-setting.token.mjs +0 -3
  785. package/esm2022/lib/services/tokens/index.mjs +0 -6
  786. package/esm2022/lib/services/tokens/log-publisher.token.mjs +0 -3
  787. package/esm2022/lib/services/tokens/module-config.token.mjs +0 -3
  788. package/esm2022/lib/services/version.service.mjs +0 -49
  789. package/esm2022/lib/services/view/index.mjs +0 -3
  790. package/esm2022/lib/services/view/provide-view-container.mjs +0 -17
  791. package/esm2022/lib/services/view/view-container.service.mjs +0 -59
  792. package/esm2022/lib/styles/button-style.builder.mjs +0 -174
  793. package/esm2022/lib/styles/index.mjs +0 -3
  794. package/esm2022/lib/styles/models/index.mjs +0 -3
  795. package/esm2022/lib/styles/models/style-level.enum.mjs +0 -12
  796. package/esm2022/lib/styles/models/style-size.enum.mjs +0 -9
  797. package/esm2022/lib/styles/styles.util.mjs +0 -42
  798. package/esm2022/lib/types/action-descriptor.types.mjs +0 -2
  799. package/esm2022/lib/types/data-provider.types.mjs +0 -2
  800. package/esm2022/lib/types/getter.type.mjs +0 -2
  801. package/esm2022/lib/types/i18n.type.mjs +0 -2
  802. package/esm2022/lib/types/index.mjs +0 -8
  803. package/esm2022/lib/types/localstorage-config-value.type.mjs +0 -2
  804. package/esm2022/lib/types/type.decorator.mjs +0 -12
  805. package/esm2022/lib/types/type.model.mjs +0 -2
  806. package/esm2022/lib/utils/data-list-params.util.mjs +0 -416
  807. package/esm2022/lib/utils/date.util.mjs +0 -136
  808. package/esm2022/lib/utils/decorator-metadata.util.mjs +0 -61
  809. package/esm2022/lib/utils/editor-formly.util.mjs +0 -339
  810. package/esm2022/lib/utils/enum.util.mjs +0 -83
  811. package/esm2022/lib/utils/error.util.mjs +0 -247
  812. package/esm2022/lib/utils/export.util.mjs +0 -21
  813. package/esm2022/lib/utils/file.util.mjs +0 -18
  814. package/esm2022/lib/utils/i18n.util.mjs +0 -274
  815. package/esm2022/lib/utils/index.mjs +0 -14
  816. package/esm2022/lib/utils/model.util.mjs +0 -73
  817. package/esm2022/lib/utils/notification.util.mjs +0 -45
  818. package/esm2022/lib/utils/object.util.mjs +0 -135
  819. package/esm2022/lib/utils/route.util.mjs +0 -60
  820. package/esm2022/lib/utils/string.util.mjs +0 -59
  821. package/esm2022/lib/utils/tableview.util.mjs +0 -193
  822. package/esm2022/lib/validators/field.validator.mjs +0 -33
  823. package/esm2022/lib/validators/index.mjs +0 -2
  824. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs +0 -698
  825. package/fesm2022/mediusinc-mng-commons-data-api-class-dto-obsolete.mjs.map +0 -1
  826. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs +0 -480
  827. package/fesm2022/mediusinc-mng-commons-data-api-class-dto.mjs.map +0 -1
  828. package/fesm2022/mediusinc-mng-commons-data-api.mjs +0 -224
  829. package/fesm2022/mediusinc-mng-commons-data-api.mjs.map +0 -1
  830. package/lib/components/action/action.component.d.ts +0 -76
  831. package/lib/components/action/editor/action-editor.component.d.ts +0 -33
  832. package/lib/components/action/editor/injector-context/action-editor-injector-context.component.d.ts +0 -80
  833. package/lib/components/action/index.d.ts +0 -5
  834. package/lib/components/action/localization/data-language-dropdown.component.d.ts +0 -24
  835. package/lib/components/action/models/action-component.model.d.ts +0 -13
  836. package/lib/components/action/models/action-execution.model.d.ts +0 -169
  837. package/lib/components/action/models/index.d.ts +0 -3
  838. package/lib/components/action/route/action-route.component.d.ts +0 -31
  839. package/lib/components/action/table/action-table.component.d.ts +0 -49
  840. package/lib/components/form/autocomplete/autocomplete.component.d.ts +0 -83
  841. package/lib/components/form/date-range/date-range.component.d.ts +0 -28
  842. package/lib/components/form/dropdown/dropdown.component.d.ts +0 -54
  843. package/lib/components/form/editor/form-editor.component.d.ts +0 -51
  844. package/lib/components/form/formly/fields/formly-field-action/formly-field-action.component.d.ts +0 -16
  845. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +0 -16
  846. package/lib/components/form/formly/fields/formly-field-custom/formly-custom-field-base.model.d.ts +0 -27
  847. package/lib/components/form/formly/fields/formly-field-custom/formly-field-custom.component.d.ts +0 -12
  848. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +0 -15
  849. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +0 -14
  850. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +0 -39
  851. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +0 -11
  852. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +0 -45
  853. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +0 -25
  854. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +0 -42
  855. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +0 -7
  856. package/lib/components/form/formly/fields/index.d.ts +0 -12
  857. package/lib/components/form/formly/formly.config.d.ts +0 -17
  858. package/lib/components/form/formly/index.d.ts +0 -1
  859. package/lib/components/form/formly/models/formly-config.model.d.ts +0 -11
  860. package/lib/components/form/formly/models/formly-field.model.d.ts +0 -17
  861. package/lib/components/form/formly/models/index.d.ts +0 -2
  862. package/lib/components/form/formly/wrappers/formly-field-no-label-wrapper/formly-field-no-label-wrapper.component.d.ts +0 -11
  863. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +0 -11
  864. package/lib/components/form/formly/wrappers/index.d.ts +0 -2
  865. package/lib/components/form/index.d.ts +0 -4
  866. package/lib/components/form/models/field-action-context.model.d.ts +0 -24
  867. package/lib/components/form/models/form-editor.event.d.ts +0 -58
  868. package/lib/components/form/models/index.d.ts +0 -3
  869. package/lib/components/layout/breadcrumb.component.d.ts +0 -13
  870. package/lib/components/layout/footer.component.d.ts +0 -9
  871. package/lib/components/layout/index.d.ts +0 -8
  872. package/lib/components/layout/main-layout.component.d.ts +0 -19
  873. package/lib/components/layout/menu-item.component.d.ts +0 -55
  874. package/lib/components/layout/menu.component.d.ts +0 -16
  875. package/lib/components/layout/services/index.d.ts +0 -1
  876. package/lib/components/layout/services/main-layout.component.service.d.ts +0 -65
  877. package/lib/components/layout/topbar-user.component.d.ts +0 -22
  878. package/lib/components/layout/topbar.component.d.ts +0 -26
  879. package/lib/components/layout/version.component.d.ts +0 -19
  880. package/lib/components/layoutV2/breadcrumb.component.d.ts +0 -10
  881. package/lib/components/layoutV2/footer.component.d.ts +0 -12
  882. package/lib/components/layoutV2/index.d.ts +0 -7
  883. package/lib/components/layoutV2/main-layout.component.d.ts +0 -24
  884. package/lib/components/layoutV2/menu-item.component.d.ts +0 -42
  885. package/lib/components/layoutV2/menu.component.d.ts +0 -14
  886. package/lib/components/layoutV2/model/index.d.ts +0 -2
  887. package/lib/components/layoutV2/model/layout-state.model.d.ts +0 -10
  888. package/lib/components/layoutV2/model/menu.model.d.ts +0 -4
  889. package/lib/components/layoutV2/services/index.d.ts +0 -2
  890. package/lib/components/layoutV2/services/main-layout.component.service.d.ts +0 -17
  891. package/lib/components/layoutV2/services/menu.service.d.ts +0 -22
  892. package/lib/components/layoutV2/sidebar.component.d.ts +0 -19
  893. package/lib/components/layoutV2/topbar-user.component.d.ts +0 -16
  894. package/lib/components/layoutV2/topbar.component.d.ts +0 -22
  895. package/lib/components/layoutV2/version.component.d.ts +0 -19
  896. package/lib/components/pages/error/error.page.component.d.ts +0 -8
  897. package/lib/components/pages/index.d.ts +0 -2
  898. package/lib/components/pages/not-found/not-found.page.component.d.ts +0 -8
  899. package/lib/components/table/column-filter-full/column-filter-full.component.d.ts +0 -101
  900. package/lib/components/table/column-value/column-value.component.d.ts +0 -35
  901. package/lib/components/table/models/table.event.d.ts +0 -17
  902. package/lib/components/table/models/table.interface.d.ts +0 -17
  903. package/lib/components/table/table-column-filter-class/table-column-filter-class.pipe.d.ts +0 -8
  904. package/lib/components/table/table.component.d.ts +0 -123
  905. package/lib/components/tableview/actions/tableview-default-actions.d.ts +0 -36
  906. package/lib/components/tableview/builders/tableview-builder.d.ts +0 -115
  907. package/lib/components/tableview/helpers/tableview-create.d.ts +0 -16
  908. package/lib/components/tableview/index.d.ts +0 -6
  909. package/lib/components/tableview/models/tableview.model.d.ts +0 -8
  910. package/lib/components/tableview/route/tableview-route.component.d.ts +0 -7
  911. package/lib/components/tableview/tableview.component.d.ts +0 -29
  912. package/lib/data-providers/base.data-provider.d.ts +0 -32
  913. package/lib/data-providers/editor.data-provider.d.ts +0 -88
  914. package/lib/data-providers/index.d.ts +0 -5
  915. package/lib/data-providers/lookup.data-provider.d.ts +0 -27
  916. package/lib/data-providers/table.data-provider.d.ts +0 -40
  917. package/lib/data-providers/tableview.data-provider.d.ts +0 -45
  918. package/lib/descriptors/action/action-button.descriptor.d.ts +0 -25
  919. package/lib/descriptors/action/action-confirmation.descriptor.d.ts +0 -36
  920. package/lib/descriptors/action/action-editor.descriptor.d.ts +0 -118
  921. package/lib/descriptors/action/action-link.descriptor.d.ts +0 -34
  922. package/lib/descriptors/action/action.descriptor.d.ts +0 -149
  923. package/lib/descriptors/action/index.d.ts +0 -5
  924. package/lib/descriptors/editor/editor.descriptor.d.ts +0 -270
  925. package/lib/descriptors/editor/field-action.descriptor.d.ts +0 -23
  926. package/lib/descriptors/editor/field-base.descriptor.d.ts +0 -122
  927. package/lib/descriptors/editor/field-group.descriptor.d.ts +0 -42
  928. package/lib/descriptors/editor/field-lookup.descriptor.d.ts +0 -83
  929. package/lib/descriptors/editor/field-many.descriptor.d.ts +0 -63
  930. package/lib/descriptors/editor/field-validation.descriptor.d.ts +0 -19
  931. package/lib/descriptors/editor/field.descriptor.d.ts +0 -167
  932. package/lib/descriptors/editor/index.d.ts +0 -8
  933. package/lib/descriptors/editor/internal/editor-fields.model.d.ts +0 -33
  934. package/lib/descriptors/editor/internal/editor.model.d.ts +0 -15
  935. package/lib/descriptors/filter/filter-lookup.descriptor.d.ts +0 -70
  936. package/lib/descriptors/filter/filter.descriptor.d.ts +0 -66
  937. package/lib/descriptors/filter/index.d.ts +0 -2
  938. package/lib/descriptors/interfaces/field-config.interface.d.ts +0 -9
  939. package/lib/descriptors/interfaces/index.d.ts +0 -2
  940. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +0 -12
  941. package/lib/descriptors/model/enum.descriptor.d.ts +0 -14
  942. package/lib/descriptors/model/index.d.ts +0 -3
  943. package/lib/descriptors/model/model.descriptor.d.ts +0 -31
  944. package/lib/descriptors/model/type.descriptor.d.ts +0 -5
  945. package/lib/descriptors/table/column.descriptor.d.ts +0 -148
  946. package/lib/descriptors/table/index.d.ts +0 -3
  947. package/lib/descriptors/table/internal/table-columns.model.d.ts +0 -42
  948. package/lib/descriptors/table/internal/table.model.d.ts +0 -12
  949. package/lib/descriptors/table/table.descriptor.d.ts +0 -272
  950. package/lib/descriptors/tableview/index.d.ts +0 -1
  951. package/lib/descriptors/tableview/internal/tableview.model.d.ts +0 -11
  952. package/lib/descriptors/tableview/tableview.descriptor.d.ts +0 -193
  953. package/lib/descriptors/types/action.type.d.ts +0 -21
  954. package/lib/descriptors/types/editor.type.d.ts +0 -6
  955. package/lib/descriptors/types/field.type.d.ts +0 -47
  956. package/lib/descriptors/types/index.d.ts +0 -7
  957. package/lib/descriptors/types/table.type.d.ts +0 -18
  958. package/lib/directives/component.directive.d.ts +0 -20
  959. package/lib/directives/dialog-keydown-handler.directive.d.ts +0 -12
  960. package/lib/directives/index.d.ts +0 -4
  961. package/lib/directives/input-trim.directive.d.ts +0 -14
  962. package/lib/directives/template.directive.d.ts +0 -12
  963. package/lib/error/error.handler.d.ts +0 -6
  964. package/lib/error/index.d.ts +0 -1
  965. package/lib/guards/index.d.ts +0 -1
  966. package/lib/guards/unsaved-changes.guard.d.ts +0 -3
  967. package/lib/helpers/coercion.d.ts +0 -9
  968. package/lib/helpers/data-provider-executors.d.ts +0 -19
  969. package/lib/models/action-editor.model.d.ts +0 -15
  970. package/lib/models/column-value.model.d.ts +0 -4
  971. package/lib/models/common-init-event-enum.model.d.ts +0 -9
  972. package/lib/models/config.model.d.ts +0 -53
  973. package/lib/models/enum.model.d.ts +0 -7
  974. package/lib/models/error.model.d.ts +0 -50
  975. package/lib/models/index.d.ts +0 -19
  976. package/lib/models/layout-config.model.d.ts +0 -34
  977. package/lib/models/log.model.d.ts +0 -40
  978. package/lib/models/menu.model.d.ts +0 -32
  979. package/lib/models/tableview-attr.model.d.ts +0 -10
  980. package/lib/models/type-registry.model.d.ts +0 -7
  981. package/lib/models/user.model.d.ts +0 -8
  982. package/lib/models/view-container.model.d.ts +0 -24
  983. package/lib/pipes/boolean.pipe.d.ts +0 -7
  984. package/lib/pipes/class-map.pipe.d.ts +0 -7
  985. package/lib/pipes/enum.pipe.d.ts +0 -8
  986. package/lib/pipes/enumerate-async.pipe.d.ts +0 -14
  987. package/lib/pipes/enumerate.pipe.d.ts +0 -21
  988. package/lib/pipes/getter.pipe.d.ts +0 -8
  989. package/lib/pipes/i18n-property.pipe.d.ts +0 -8
  990. package/lib/pipes/index.d.ts +0 -11
  991. package/lib/pipes/json-path.pipe.d.ts +0 -13
  992. package/lib/pipes/locale-default-row-class.pipe.d.ts +0 -10
  993. package/lib/pipes/models/internal/enumrate-pipe-i18n.model.d.ts +0 -5
  994. package/lib/pipes/models/internal/index.d.ts +0 -1
  995. package/lib/pipes/parametrize.pipe.d.ts +0 -13
  996. package/lib/pipes/template.pipe.d.ts +0 -10
  997. package/lib/provide.d.ts +0 -10
  998. package/lib/registry/type.registry.d.ts +0 -25
  999. package/lib/router/index.d.ts +0 -3
  1000. package/lib/router/models/index.d.ts +0 -1
  1001. package/lib/router/models/router.model.d.ts +0 -31
  1002. package/lib/router/route-builder.d.ts +0 -75
  1003. package/lib/router/routes-builder.d.ts +0 -28
  1004. package/lib/router/tableview-route-builder.d.ts +0 -44
  1005. package/lib/security/authorization.guard.d.ts +0 -2
  1006. package/lib/security/authorization.service.d.ts +0 -17
  1007. package/lib/security/authorization.util.d.ts +0 -5
  1008. package/lib/security/index.d.ts +0 -3
  1009. package/lib/security/model/authorization.type.d.ts +0 -6
  1010. package/lib/security/model/index.d.ts +0 -3
  1011. package/lib/security/model/permission-service.interface.d.ts +0 -6
  1012. package/lib/security/model/permissions.model.d.ts +0 -37
  1013. package/lib/services/action/action-executor.service.d.ts +0 -177
  1014. package/lib/services/action/component-action-executor.service.d.ts +0 -9
  1015. package/lib/services/action/index.d.ts +0 -4
  1016. package/lib/services/action/root-action-executor.service.d.ts +0 -9
  1017. package/lib/services/action-error-mapper.service.d.ts +0 -18
  1018. package/lib/services/commons-init.service.d.ts +0 -22
  1019. package/lib/services/commons.service.d.ts +0 -90
  1020. package/lib/services/configuration.service.d.ts +0 -68
  1021. package/lib/services/data-provider-executor.service.d.ts +0 -60
  1022. package/lib/services/index.d.ts +0 -11
  1023. package/lib/services/internal/commons-init.provider.d.ts +0 -4
  1024. package/lib/services/internal/index.d.ts +0 -1
  1025. package/lib/services/log-publisher-console.service.d.ts +0 -4
  1026. package/lib/services/logger.service.d.ts +0 -33
  1027. package/lib/services/mng-localstorage-config.service.d.ts +0 -11
  1028. package/lib/services/navigation.service.d.ts +0 -15
  1029. package/lib/services/providers/formly-config.provider.d.ts +0 -5
  1030. package/lib/services/providers/index.d.ts +0 -1
  1031. package/lib/services/router.service.d.ts +0 -37
  1032. package/lib/services/tokens/browser-storage.token.d.ts +0 -2
  1033. package/lib/services/tokens/commons-init.token.d.ts +0 -3
  1034. package/lib/services/tokens/default-setting.token.d.ts +0 -2
  1035. package/lib/services/tokens/index.d.ts +0 -5
  1036. package/lib/services/tokens/log-publisher.token.d.ts +0 -3
  1037. package/lib/services/tokens/module-config.token.d.ts +0 -3
  1038. package/lib/services/version.service.d.ts +0 -14
  1039. package/lib/services/view/index.d.ts +0 -2
  1040. package/lib/services/view/view-container.service.d.ts +0 -32
  1041. package/lib/styles/button-style.builder.d.ts +0 -68
  1042. package/lib/styles/index.d.ts +0 -2
  1043. package/lib/styles/models/index.d.ts +0 -2
  1044. package/lib/styles/models/style-level.enum.d.ts +0 -10
  1045. package/lib/styles/models/style-size.enum.d.ts +0 -7
  1046. package/lib/styles/styles.util.d.ts +0 -15
  1047. package/lib/types/action-descriptor.types.d.ts +0 -4
  1048. package/lib/types/data-provider.types.d.ts +0 -3
  1049. package/lib/types/getter.type.d.ts +0 -2
  1050. package/lib/types/i18n.type.d.ts +0 -1
  1051. package/lib/types/index.d.ts +0 -7
  1052. package/lib/types/localstorage-config-value.type.d.ts +0 -1
  1053. package/lib/types/type.model.d.ts +0 -31
  1054. package/lib/utils/data-list-params.util.d.ts +0 -84
  1055. package/lib/utils/date.util.d.ts +0 -20
  1056. package/lib/utils/decorator-metadata.util.d.ts +0 -33
  1057. package/lib/utils/editor-formly.util.d.ts +0 -13
  1058. package/lib/utils/enum.util.d.ts +0 -51
  1059. package/lib/utils/error.util.d.ts +0 -116
  1060. package/lib/utils/export.util.d.ts +0 -5
  1061. package/lib/utils/file.util.d.ts +0 -3
  1062. package/lib/utils/i18n.util.d.ts +0 -85
  1063. package/lib/utils/index.d.ts +0 -13
  1064. package/lib/utils/model.util.d.ts +0 -10
  1065. package/lib/utils/notification.util.d.ts +0 -13
  1066. package/lib/utils/object.util.d.ts +0 -30
  1067. package/lib/utils/route.util.d.ts +0 -37
  1068. package/lib/utils/string.util.d.ts +0 -9
  1069. package/lib/utils/tableview.util.d.ts +0 -53
  1070. package/lib/validators/field.validator.d.ts +0 -3
  1071. package/lib/validators/index.d.ts +0 -1
  1072. package/openapi/angular/README.mustache +0 -226
  1073. package/openapi/angular/api.module.mustache +0 -39
  1074. package/openapi/angular/api.service.mustache +0 -253
  1075. package/openapi/angular/apiInterface.mustache +0 -47
  1076. package/openapi/angular/apis.mustache +0 -12
  1077. package/openapi/angular/config.yaml +0 -23
  1078. package/openapi/angular/configuration.mustache +0 -128
  1079. package/openapi/angular/custom/base-api.service.mustache +0 -14
  1080. package/openapi/angular/custom/helpers.mustache +0 -71
  1081. package/openapi/angular/custom/modelSchema.mustache +0 -46
  1082. package/openapi/angular/custom/schema.mustache +0 -18
  1083. package/openapi/angular/encoder.mustache +0 -20
  1084. package/openapi/angular/git_push.sh.mustache +0 -57
  1085. package/openapi/angular/index.mustache +0 -0
  1086. package/openapi/angular/licenseInfo.mustache +0 -11
  1087. package/openapi/angular/model.mustache +0 -16
  1088. package/openapi/angular/modelAlias.mustache +0 -1
  1089. package/openapi/angular/modelEnum.mustache +0 -21
  1090. package/openapi/angular/modelGeneric.mustache +0 -14
  1091. package/openapi/angular/modelGenericAdditionalProperties.mustache +0 -5
  1092. package/openapi/angular/modelGenericEnums.mustache +0 -30
  1093. package/openapi/angular/modelOneOf.mustache +0 -14
  1094. package/openapi/angular/modelTaggedUnion.mustache +0 -21
  1095. package/openapi/angular/models.mustache +0 -5
  1096. package/openapi/angular/ng-package.mustache +0 -6
  1097. package/openapi/angular/package.mustache +0 -39
  1098. package/openapi/angular/param.mustache +0 -69
  1099. package/openapi/angular/tsconfig.mustache +0 -28
  1100. package/openapi/angular/variables.mustache +0 -9
  1101. package/openapi/node/model.mustache +0 -83
  1102. package/openapi/node/models.mustache +0 -6
  1103. package/scss/common/layout/_breadcrumb.scss +0 -99
  1104. package/scss/common/layout/_config.scss +0 -100
  1105. package/scss/common/layout/_dashboard.scss +0 -16
  1106. package/scss/common/layout/_exception.scss +0 -133
  1107. package/scss/common/layout/_footer.scss +0 -29
  1108. package/scss/common/layout/_help.scss +0 -156
  1109. package/scss/common/layout/_inlinemenu.scss +0 -68
  1110. package/scss/common/layout/_invoice.scss +0 -176
  1111. package/scss/common/layout/_landing.scss +0 -636
  1112. package/scss/common/layout/_layout_dark.scss +0 -23
  1113. package/scss/common/layout/_layout_light.scss +0 -23
  1114. package/scss/common/layout/_loader.scss +0 -17
  1115. package/scss/common/layout/_login.scss +0 -106
  1116. package/scss/common/layout/_main.scss +0 -45
  1117. package/scss/common/layout/_mixins.scss +0 -222
  1118. package/scss/common/layout/_rightmenu.scss +0 -130
  1119. package/scss/common/layout/_topbar.scss +0 -191
  1120. package/scss/common/layout/_typography.scss +0 -68
  1121. package/scss/common/layout/_utils.scss +0 -96
  1122. package/scss/common/layout/_widgets.scss +0 -392
  1123. package/scss/common/layout/menu/_menu.scss +0 -7
  1124. package/scss/common/layout/menu/_menu_common.scss +0 -183
  1125. package/scss/common/layout/menu/_menu_overlay.scss +0 -52
  1126. package/scss/common/layout/menu/_menu_sidebar.scss +0 -233
  1127. package/scss/common/layout/menu/_menu_slim.scss +0 -137
  1128. package/scss/common/layout/menu/_menu_static.scss +0 -70
  1129. package/scss/common/layout/menu/_menu_theme.scss +0 -364
  1130. package/scss/common/theme/_theme_dark.scss +0 -5
  1131. package/scss/common/theme/_theme_light.scss +0 -5
  1132. package/scss/common/theme/designer/_colors.scss +0 -17
  1133. package/scss/common/theme/designer/_common.scss +0 -41
  1134. package/scss/common/theme/designer/_components.scss +0 -102
  1135. package/scss/common/theme/designer/_mixins.scss +0 -203
  1136. package/scss/common/theme/designer/components/button/_button.scss +0 -572
  1137. package/scss/common/theme/designer/components/button/_speeddial.scss +0 -81
  1138. package/scss/common/theme/designer/components/button/_splitbutton.scss +0 -2
  1139. package/scss/common/theme/designer/components/data/_carousel.scss +0 -37
  1140. package/scss/common/theme/designer/components/data/_datatable.scss +0 -266
  1141. package/scss/common/theme/designer/components/data/_dataview.scss +0 -55
  1142. package/scss/common/theme/designer/components/data/_filter.scss +0 -137
  1143. package/scss/common/theme/designer/components/data/_fullcalendar.scss +0 -324
  1144. package/scss/common/theme/designer/components/data/_orderlist.scss +0 -91
  1145. package/scss/common/theme/designer/components/data/_organizationchart.scss +0 -50
  1146. package/scss/common/theme/designer/components/data/_paginator.scss +0 -83
  1147. package/scss/common/theme/designer/components/data/_picklist.scss +0 -91
  1148. package/scss/common/theme/designer/components/data/_timeline.scss +0 -35
  1149. package/scss/common/theme/designer/components/data/_tree.scss +0 -144
  1150. package/scss/common/theme/designer/components/data/_treetable.scss +0 -241
  1151. package/scss/common/theme/designer/components/data/_virtualscroller.scss +0 -28
  1152. package/scss/common/theme/designer/components/file/_fileupload.scss +0 -58
  1153. package/scss/common/theme/designer/components/input/_autocomplete.scss +0 -105
  1154. package/scss/common/theme/designer/components/input/_calendar.scss +0 -212
  1155. package/scss/common/theme/designer/components/input/_cascadeselect.scss +0 -98
  1156. package/scss/common/theme/designer/components/input/_checkbox.scss +0 -85
  1157. package/scss/common/theme/designer/components/input/_chips.scss +0 -43
  1158. package/scss/common/theme/designer/components/input/_colorpicker.scss +0 -19
  1159. package/scss/common/theme/designer/components/input/_dropdown.scss +0 -136
  1160. package/scss/common/theme/designer/components/input/_editor.scss +0 -122
  1161. package/scss/common/theme/designer/components/input/_inputgroup.scss +0 -69
  1162. package/scss/common/theme/designer/components/input/_inputmask.scss +0 -3
  1163. package/scss/common/theme/designer/components/input/_inputnumber.scss +0 -3
  1164. package/scss/common/theme/designer/components/input/_inputswitch.scss +0 -60
  1165. package/scss/common/theme/designer/components/input/_inputtext.scss +0 -97
  1166. package/scss/common/theme/designer/components/input/_listbox.scss +0 -82
  1167. package/scss/common/theme/designer/components/input/_multiselect.scss +0 -165
  1168. package/scss/common/theme/designer/components/input/_password.scss +0 -33
  1169. package/scss/common/theme/designer/components/input/_radiobutton.scss +0 -78
  1170. package/scss/common/theme/designer/components/input/_rating.scss +0 -48
  1171. package/scss/common/theme/designer/components/input/_selectbutton.scss +0 -50
  1172. package/scss/common/theme/designer/components/input/_slider.scss +0 -71
  1173. package/scss/common/theme/designer/components/input/_togglebutton.scss +0 -48
  1174. package/scss/common/theme/designer/components/input/_treeselect.scss +0 -91
  1175. package/scss/common/theme/designer/components/menu/_breadcrumb.scss +0 -42
  1176. package/scss/common/theme/designer/components/menu/_contextmenu.scss +0 -51
  1177. package/scss/common/theme/designer/components/menu/_dock.scss +0 -51
  1178. package/scss/common/theme/designer/components/menu/_megamenu.scss +0 -103
  1179. package/scss/common/theme/designer/components/menu/_menu.scss +0 -41
  1180. package/scss/common/theme/designer/components/menu/_menubar.scss +0 -180
  1181. package/scss/common/theme/designer/components/menu/_panelmenu.scss +0 -136
  1182. package/scss/common/theme/designer/components/menu/_slidemenu.scss +0 -56
  1183. package/scss/common/theme/designer/components/menu/_steps.scss +0 -56
  1184. package/scss/common/theme/designer/components/menu/_tabmenu.scss +0 -49
  1185. package/scss/common/theme/designer/components/menu/_tieredmenu.scss +0 -57
  1186. package/scss/common/theme/designer/components/messages/_inlinemessage.scss +0 -64
  1187. package/scss/common/theme/designer/components/messages/_message.scss +0 -102
  1188. package/scss/common/theme/designer/components/messages/_toast.scss +0 -94
  1189. package/scss/common/theme/designer/components/misc/_avatar.scss +0 -30
  1190. package/scss/common/theme/designer/components/misc/_badge.scss +0 -48
  1191. package/scss/common/theme/designer/components/misc/_blockui.scss +0 -3
  1192. package/scss/common/theme/designer/components/misc/_chip.scss +0 -38
  1193. package/scss/common/theme/designer/components/misc/_inplace.scss +0 -16
  1194. package/scss/common/theme/designer/components/misc/_progressbar.scss +0 -17
  1195. package/scss/common/theme/designer/components/misc/_scrolltop.scss +0 -20
  1196. package/scss/common/theme/designer/components/misc/_skeleton.scss +0 -8
  1197. package/scss/common/theme/designer/components/misc/_tag.scss +0 -35
  1198. package/scss/common/theme/designer/components/misc/_terminal.scss +0 -11
  1199. package/scss/common/theme/designer/components/multimedia/_galleria.scss +0 -141
  1200. package/scss/common/theme/designer/components/multimedia/_image.scss +0 -44
  1201. package/scss/common/theme/designer/components/overlay/_confirmpopup.scss +0 -65
  1202. package/scss/common/theme/designer/components/overlay/_dialog.scss +0 -63
  1203. package/scss/common/theme/designer/components/overlay/_overlaypanel.scss +0 -62
  1204. package/scss/common/theme/designer/components/overlay/_sidebar.scss +0 -27
  1205. package/scss/common/theme/designer/components/overlay/_tooltip.scss +0 -33
  1206. package/scss/common/theme/designer/components/panel/_accordion.scss +0 -119
  1207. package/scss/common/theme/designer/components/panel/_card.scss +0 -30
  1208. package/scss/common/theme/designer/components/panel/_divider.scss +0 -31
  1209. package/scss/common/theme/designer/components/panel/_fieldset.scss +0 -47
  1210. package/scss/common/theme/designer/components/panel/_panel.scss +0 -42
  1211. package/scss/common/theme/designer/components/panel/_scrollpanel.scss +0 -6
  1212. package/scss/common/theme/designer/components/panel/_splitter.scss +0 -19
  1213. package/scss/common/theme/designer/components/panel/_tabview.scss +0 -66
  1214. package/scss/common/theme/designer/components/panel/_toolbar.scss +0 -10
  1215. package/scss/common/theme/extensions/_button.scss +0 -111
  1216. package/scss/common/theme/extensions/_calendar.scss +0 -18
  1217. package/scss/common/theme/extensions/_card.scss +0 -6
  1218. package/scss/common/theme/extensions/_carousel.scss +0 -13
  1219. package/scss/common/theme/extensions/_checkbox.scss +0 -10
  1220. package/scss/common/theme/extensions/_contextmenu.scss +0 -16
  1221. package/scss/common/theme/extensions/_datatable.scss +0 -83
  1222. package/scss/common/theme/extensions/_dialog.scss +0 -14
  1223. package/scss/common/theme/extensions/_fieldset.scss +0 -6
  1224. package/scss/common/theme/extensions/_galleria.scss +0 -25
  1225. package/scss/common/theme/extensions/_megamenu.scss +0 -18
  1226. package/scss/common/theme/extensions/_menu.scss +0 -14
  1227. package/scss/common/theme/extensions/_menubar.scss +0 -14
  1228. package/scss/common/theme/extensions/_orderlist.scss +0 -37
  1229. package/scss/common/theme/extensions/_paginator.scss +0 -19
  1230. package/scss/common/theme/extensions/_panelmenu.scss +0 -20
  1231. package/scss/common/theme/extensions/_password.scss +0 -5
  1232. package/scss/common/theme/extensions/_picklist.scss +0 -37
  1233. package/scss/common/theme/extensions/_radiobutton.scss +0 -8
  1234. package/scss/common/theme/extensions/_sidebar.scss +0 -19
  1235. package/scss/common/theme/extensions/_slidemenu.scss +0 -10
  1236. package/scss/common/theme/extensions/_slider.scss +0 -6
  1237. package/scss/common/theme/extensions/_steps.scss +0 -50
  1238. package/scss/common/theme/extensions/_tieredmenu.scss +0 -14
  1239. package/scss/common/theme/extensions/_toast.scss +0 -6
  1240. package/scss/common/theme/extensions/_tree.scss +0 -35
  1241. package/scss/common/theme/extensions/_treetable.scss +0 -35
  1242. package/scss/common/theme/extensions/_vendor_extensions.scss +0 -27
  1243. package/scss/common/variables/layout/_common.scss +0 -12
  1244. package/scss/common/variables/layout/_layout_dark.scss +0 -70
  1245. package/scss/common/variables/layout/_layout_light.scss +0 -70
  1246. package/scss/common/variables/theme/_theme_dark.scss +0 -937
  1247. package/scss/common/variables/theme/_theme_light.scss +0 -936
  1248. package/scss/layout/default/_mng-variables-layout-dark.scss +0 -2
  1249. package/scss/layout/default/_mng-variables-layout-light.scss +0 -2
  1250. package/scss/layout/default/layout-dark.scss +0 -2
  1251. package/scss/layout/default/layout-light.scss +0 -2
  1252. package/scss/mng-commons-dark-v2.scss +0 -9
  1253. package/scss/mng-commons-dark.scss +0 -5
  1254. package/scss/mng-commons-light-v2.scss +0 -9
  1255. package/scss/mng-commons-light.scss +0 -8
  1256. package/scss/mng-overrides/_layout_action.scss +0 -10
  1257. package/scss/mng-overrides/_layout_dialog.scss +0 -91
  1258. package/scss/mng-overrides/_layout_forms.scss +0 -38
  1259. package/scss/mng-overrides/_layout_menu.scss +0 -10
  1260. package/scss/mng-overrides/_layout_radio.scss +0 -3
  1261. package/scss/mng-overrides/_layout_styles.scss +0 -35
  1262. package/scss/mng-overrides/_layout_topbar.scss +0 -21
  1263. package/scss/mng-overrides/_mixins.scss +0 -69
  1264. package/scss/mng-overrides/_theme_autocomplete.scss +0 -29
  1265. package/scss/mng-overrides/_theme_button.scss +0 -61
  1266. package/scss/mng-overrides/_theme_datatable.scss +0 -160
  1267. package/scss/mng-overrides/_theme_datepicker.scss +0 -21
  1268. package/scss/mng-overrides/_theme_dialog.scss +0 -108
  1269. package/scss/mng-overrides/_theme_dropdown.scss +0 -22
  1270. package/scss/mng-overrides/_theme_fileupload.scss +0 -24
  1271. package/scss/mng-overrides/_theme_forms.scss +0 -29
  1272. package/scss/mng-overrides/_theme_image.scss +0 -27
  1273. package/scss/mng-overrides/_theme_input.scss +0 -27
  1274. package/scss/mng-overrides/_theme_menu.scss +0 -5
  1275. package/scss/mng-overrides/_theme_multiselect.scss +0 -20
  1276. package/scss/mng-overrides/_theme_styles.scss +0 -17
  1277. package/scss/mng-overrides/_theme_tableview.scss +0 -79
  1278. package/scss/mng-overrides/_theme_tabview.scss +0 -11
  1279. package/scss/mng-overrides/_theme_toast.scss +0 -3
  1280. package/scss/mng-overrides/_theme_toolbar.scss +0 -5
  1281. package/scss/mng-overrides/_variables.scss +0 -15
  1282. package/scss/theme/default/_mng-variables-theme-dark.scss +0 -11
  1283. package/scss/theme/default/_mng-variables-theme-light.scss +0 -13
  1284. package/scss/theme/default/theme-dark.scss +0 -2
  1285. package/scss/theme/default/theme-light.scss +0 -2
  1286. package/scss/v2/layout/_animation.scss +0 -53
  1287. package/scss/v2/layout/_breadcrumb.scss +0 -97
  1288. package/scss/v2/layout/_config.scss +0 -42
  1289. package/scss/v2/layout/_content.scss +0 -3
  1290. package/scss/v2/layout/_fonts.scss +0 -32
  1291. package/scss/v2/layout/_layout_dark.scss +0 -12
  1292. package/scss/v2/layout/_layout_light.scss +0 -12
  1293. package/scss/v2/layout/_main.scss +0 -54
  1294. package/scss/v2/layout/_profile.scss +0 -10
  1295. package/scss/v2/layout/_responsive.scss +0 -131
  1296. package/scss/v2/layout/_sidebar_drawer.scss +0 -283
  1297. package/scss/v2/layout/_sidebar_horizontal.scss +0 -168
  1298. package/scss/v2/layout/_sidebar_reveal.scss +0 -201
  1299. package/scss/v2/layout/_sidebar_slim.scss +0 -157
  1300. package/scss/v2/layout/_sidebar_slim_plus.scss +0 -167
  1301. package/scss/v2/layout/_sidebar_vertical.scss +0 -176
  1302. package/scss/v2/layout/_topbar.scss +0 -174
  1303. package/scss/v2/layout/_typography.scss +0 -62
  1304. package/scss/v2/layout/_utils.scss +0 -33
  1305. package/scss/v2/layout/layout.scss +0 -24
  1306. package/scss/v2/layout/mng/_mng_layout_footer.scss +0 -39
  1307. package/scss/v2/layout/mng/_mng_layout_menu.scss +0 -10
  1308. package/scss/v2/layout/mng/_mng_layout_styles.scss +0 -3
  1309. package/scss/v2/layout/mng/_mng_layout_topbar.scss +0 -18
  1310. package/scss/v2/layout/preloading.scss +0 -84
  1311. package/scss/v2/theme/extensions/_fullcalendar.scss +0 -328
  1312. package/scss/v2/theme/theme-base/_colors.scss +0 -17
  1313. package/scss/v2/theme/theme-base/_common.scss +0 -76
  1314. package/scss/v2/theme/theme-base/_components.scss +0 -110
  1315. package/scss/v2/theme/theme-base/_mixins.scss +0 -337
  1316. package/scss/v2/theme/theme-base/components/button/_button.scss +0 -576
  1317. package/scss/v2/theme/theme-base/components/button/_speeddial.scss +0 -96
  1318. package/scss/v2/theme/theme-base/components/button/_splitbutton.scss +0 -348
  1319. package/scss/v2/theme/theme-base/components/data/_carousel.scss +0 -37
  1320. package/scss/v2/theme/theme-base/components/data/_datatable.scss +0 -338
  1321. package/scss/v2/theme/theme-base/components/data/_dataview.scss +0 -46
  1322. package/scss/v2/theme/theme-base/components/data/_filter.scss +0 -137
  1323. package/scss/v2/theme/theme-base/components/data/_orderlist.scss +0 -114
  1324. package/scss/v2/theme/theme-base/components/data/_organizationchart.scss +0 -50
  1325. package/scss/v2/theme/theme-base/components/data/_paginator.scss +0 -92
  1326. package/scss/v2/theme/theme-base/components/data/_picklist.scss +0 -114
  1327. package/scss/v2/theme/theme-base/components/data/_timeline.scss +0 -35
  1328. package/scss/v2/theme/theme-base/components/data/_tree.scss +0 -150
  1329. package/scss/v2/theme/theme-base/components/data/_treetable.scss +0 -255
  1330. package/scss/v2/theme/theme-base/components/data/_virtualscroller.scss +0 -28
  1331. package/scss/v2/theme/theme-base/components/file/_fileupload.scss +0 -64
  1332. package/scss/v2/theme/theme-base/components/input/_autocomplete.scss +0 -136
  1333. package/scss/v2/theme/theme-base/components/input/_calendar.scss +0 -267
  1334. package/scss/v2/theme/theme-base/components/input/_cascadeselect.scss +0 -135
  1335. package/scss/v2/theme/theme-base/components/input/_checkbox.scss +0 -94
  1336. package/scss/v2/theme/theme-base/components/input/_chips.scss +0 -65
  1337. package/scss/v2/theme/theme-base/components/input/_colorpicker.scss +0 -19
  1338. package/scss/v2/theme/theme-base/components/input/_dropdown.scss +0 -151
  1339. package/scss/v2/theme/theme-base/components/input/_editor.scss +0 -122
  1340. package/scss/v2/theme/theme-base/components/input/_inputgroup.scss +0 -74
  1341. package/scss/v2/theme/theme-base/components/input/_inputmask.scss +0 -16
  1342. package/scss/v2/theme/theme-base/components/input/_inputnumber.scss +0 -28
  1343. package/scss/v2/theme/theme-base/components/input/_inputswitch.scss +0 -60
  1344. package/scss/v2/theme/theme-base/components/input/_inputtext.scss +0 -100
  1345. package/scss/v2/theme/theme-base/components/input/_listbox.scss +0 -97
  1346. package/scss/v2/theme/theme-base/components/input/_multiselect.scss +0 -177
  1347. package/scss/v2/theme/theme-base/components/input/_password.scss +0 -52
  1348. package/scss/v2/theme/theme-base/components/input/_radiobutton.scss +0 -78
  1349. package/scss/v2/theme/theme-base/components/input/_rating.scss +0 -60
  1350. package/scss/v2/theme/theme-base/components/input/_selectbutton.scss +0 -50
  1351. package/scss/v2/theme/theme-base/components/input/_slider.scss +0 -71
  1352. package/scss/v2/theme/theme-base/components/input/_togglebutton.scss +0 -48
  1353. package/scss/v2/theme/theme-base/components/input/_treeselect.scss +0 -139
  1354. package/scss/v2/theme/theme-base/components/menu/_breadcrumb.scss +0 -42
  1355. package/scss/v2/theme/theme-base/components/menu/_contextmenu.scss +0 -39
  1356. package/scss/v2/theme/theme-base/components/menu/_dock.scss +0 -95
  1357. package/scss/v2/theme/theme-base/components/menu/_megamenu.scss +0 -55
  1358. package/scss/v2/theme/theme-base/components/menu/_menu.scss +0 -37
  1359. package/scss/v2/theme/theme-base/components/menu/_menubar.scss +0 -140
  1360. package/scss/v2/theme/theme-base/components/menu/_panelmenu.scss +0 -153
  1361. package/scss/v2/theme/theme-base/components/menu/_slidemenu.scss +0 -59
  1362. package/scss/v2/theme/theme-base/components/menu/_steps.scss +0 -56
  1363. package/scss/v2/theme/theme-base/components/menu/_tabmenu.scss +0 -73
  1364. package/scss/v2/theme/theme-base/components/menu/_tieredmenu.scss +0 -43
  1365. package/scss/v2/theme/theme-base/components/messages/_inlinemessage.scss +0 -69
  1366. package/scss/v2/theme/theme-base/components/messages/_message.scss +0 -107
  1367. package/scss/v2/theme/theme-base/components/messages/_toast.scss +0 -99
  1368. package/scss/v2/theme/theme-base/components/misc/_avatar.scss +0 -30
  1369. package/scss/v2/theme/theme-base/components/misc/_badge.scss +0 -48
  1370. package/scss/v2/theme/theme-base/components/misc/_blockui.scss +0 -0
  1371. package/scss/v2/theme/theme-base/components/misc/_chip.scss +0 -42
  1372. package/scss/v2/theme/theme-base/components/misc/_inplace.scss +0 -16
  1373. package/scss/v2/theme/theme-base/components/misc/_progressbar.scss +0 -17
  1374. package/scss/v2/theme/theme-base/components/misc/_scrolltop.scss +0 -25
  1375. package/scss/v2/theme/theme-base/components/misc/_skeleton.scss +0 -8
  1376. package/scss/v2/theme/theme-base/components/misc/_tag.scss +0 -40
  1377. package/scss/v2/theme/theme-base/components/misc/_terminal.scss +0 -12
  1378. package/scss/v2/theme/theme-base/components/multimedia/_galleria.scss +0 -155
  1379. package/scss/v2/theme/theme-base/components/multimedia/_image.scss +0 -49
  1380. package/scss/v2/theme/theme-base/components/overlay/_confirmpopup.scss +0 -70
  1381. package/scss/v2/theme/theme-base/components/overlay/_dialog.scss +0 -69
  1382. package/scss/v2/theme/theme-base/components/overlay/_overlaypanel.scss +0 -64
  1383. package/scss/v2/theme/theme-base/components/overlay/_sidebar.scss +0 -27
  1384. package/scss/v2/theme/theme-base/components/overlay/_tooltip.scss +0 -33
  1385. package/scss/v2/theme/theme-base/components/panel/_accordion.scss +0 -119
  1386. package/scss/v2/theme/theme-base/components/panel/_card.scss +0 -30
  1387. package/scss/v2/theme/theme-base/components/panel/_divider.scss +0 -31
  1388. package/scss/v2/theme/theme-base/components/panel/_fieldset.scss +0 -47
  1389. package/scss/v2/theme/theme-base/components/panel/_panel.scss +0 -63
  1390. package/scss/v2/theme/theme-base/components/panel/_scrollpanel.scss +0 -6
  1391. package/scss/v2/theme/theme-base/components/panel/_splitter.scss +0 -19
  1392. package/scss/v2/theme/theme-base/components/panel/_tabview.scss +0 -82
  1393. package/scss/v2/theme/theme-base/components/panel/_toolbar.scss +0 -11
  1394. package/scss/v2/theme/theme-base/mng/_mng_mixins.scss +0 -69
  1395. package/scss/v2/theme/theme-base/mng/_mng_theme_autocomplete.scss +0 -34
  1396. package/scss/v2/theme/theme-base/mng/_mng_theme_button.scss +0 -68
  1397. package/scss/v2/theme/theme-base/mng/_mng_theme_datatable.scss +0 -153
  1398. package/scss/v2/theme/theme-base/mng/_mng_theme_datepicker.scss +0 -21
  1399. package/scss/v2/theme/theme-base/mng/_mng_theme_dialog.scss +0 -206
  1400. package/scss/v2/theme/theme-base/mng/_mng_theme_dropdown.scss +0 -32
  1401. package/scss/v2/theme/theme-base/mng/_mng_theme_fileupload.scss +0 -24
  1402. package/scss/v2/theme/theme-base/mng/_mng_theme_forms.scss +0 -66
  1403. package/scss/v2/theme/theme-base/mng/_mng_theme_image.scss +0 -27
  1404. package/scss/v2/theme/theme-base/mng/_mng_theme_input.scss +0 -31
  1405. package/scss/v2/theme/theme-base/mng/_mng_theme_menu.scss +0 -5
  1406. package/scss/v2/theme/theme-base/mng/_mng_theme_multiselect.scss +0 -20
  1407. package/scss/v2/theme/theme-base/mng/_mng_theme_styles.scss +0 -17
  1408. package/scss/v2/theme/theme-base/mng/_mng_theme_tableview.scss +0 -97
  1409. package/scss/v2/theme/theme-base/mng/_mng_theme_tabview.scss +0 -11
  1410. package/scss/v2/theme/theme-base/mng/_mng_theme_toast.scss +0 -3
  1411. package/scss/v2/theme/theme-base/mng/_mng_theme_toolbar.scss +0 -5
  1412. package/scss/v2/theme/theme-base/mng/_mng_variables.scss +0 -15
  1413. package/scss/v2/theme/theme-dark/_extensions.scss +0 -100
  1414. package/scss/v2/theme/theme-dark/_variables.scss +0 -940
  1415. package/scss/v2/theme/theme-dark/blue/theme.scss +0 -14
  1416. package/scss/v2/theme/theme-light/_extensions.scss +0 -100
  1417. package/scss/v2/theme/theme-light/_variables.scss +0 -936
  1418. package/scss/v2/theme/theme-light/blue/theme.scss +0 -14
  1419. /package/{lib → core}/components/notification/notification-wrapper.component.d.ts +0 -0
  1420. /package/{lib/models → core/data-list}/data-list.model.d.ts +0 -0
  1421. /package/{lib/models → core/data-list}/filter-match.model.d.ts +0 -0
  1422. /package/{lib/models/class.model.d.ts → core/models/class-attribute.model.d.ts} +0 -0
  1423. /package/{lib → core}/models/version.model.d.ts +0 -0
  1424. /package/{lib/types/type.decorator.d.ts → core/reflect/type-enum-decorator.d.ts} +0 -0
  1425. /package/{lib/descriptors/types/filter.type.d.ts → filter/models/filter.model.d.ts} +0 -0
  1426. /package/{lib/descriptors/types/trim.type.d.ts → form/api/models/trim.model.d.ts} +0 -0
  1427. /package/{assets/i18n → i18n}/en.json +0 -0
  1428. /package/{assets/i18n → i18n}/sl.json +0 -0
  1429. /package/{lib/descriptors/table → table/api/descriptors}/sort.descriptor.d.ts +0 -0
  1430. /package/{lib/descriptors/types/column.type.d.ts → table/api/models/column.model.d.ts} +0 -0
  1431. /package/{lib → tableview/action}/models/can-component-deactivate.model.d.ts +0 -0
  1432. /package/{lib/services/action → tableview/action/services/providers}/provide-action-executor.d.ts +0 -0
  1433. /package/{lib/services/view → tableview/action/services/providers}/provide-view-container.d.ts +0 -0
  1434. /package/{lib/components → tableview/api}/action/models/tableview-action-default-categories.model.d.ts +0 -0
  1435. /package/{lib/components/form → tableview/api/editor}/models/form-editor.interface.d.ts +0 -0
  1436. /package/{lib → tableview/api/editor}/models/radio.model.d.ts +0 -0
@@ -0,0 +1,778 @@
1
+ import { CommonsInternalError, TypeRegistry, angularDateFormatHasSeconds, angularDateFormatHasTime, flattenObjectKeys, fromAngularDateFormatToPrime } from '@mediusinc/mng-commons/core';
2
+ import { FilterDescriptor, FilterLookupDescriptor, FilterLookupEnumDescriptor, FilterTypeEnum } from '@mediusinc/mng-commons/filter';
3
+ import { ModelDescriptor, enumModelGeneric, findClassTitleAttribute } from '@mediusinc/mng-commons/model';
4
+ import { columnToDateNumberOrBoolean, getTableClassAttributeDef } from '../helpers/class-attribute-converter';
5
+ import { ColumnTypeEnum } from '../models/column.model';
6
+ import { TableDynamicColumnsModeEnum, TableSizeEnum } from '../models/table.model';
7
+ import { ColumnDescriptor, ColumnDynamicDescriptor } from './column.descriptor';
8
+ import { SortDescriptor } from './sort.descriptor';
9
+ export class TableDescriptorInst {
10
+ constructor(model, autoGenerated = false) {
11
+ this._columns = [];
12
+ this._hideHeader = false;
13
+ this._loadingIcon = 'pi pi-spinner';
14
+ // extra
15
+ this._hasHover = true;
16
+ this._hasGridlines = false;
17
+ this._hasResizableColumns = false;
18
+ // styling
19
+ this._size = TableSizeEnum.Large;
20
+ this._className = '';
21
+ // filters&sorts
22
+ this._filters = [];
23
+ this._sorts = [];
24
+ // localization
25
+ this._isLocalized = false;
26
+ // row expand
27
+ this._rowExpandable = false;
28
+ this._rowExpandableColSpan = 100;
29
+ this._model = model;
30
+ this._trackProperty = this._model.idProperty;
31
+ this._autoGenerated = autoGenerated;
32
+ }
33
+ get identifier() {
34
+ return this._identifier;
35
+ }
36
+ get trackProperty() {
37
+ return this._trackProperty;
38
+ }
39
+ get paginationMode() {
40
+ return this._paginationMode;
41
+ }
42
+ get rowsPerPageOptions() {
43
+ return this._rowsPerPageOptions;
44
+ }
45
+ get defaultNumRows() {
46
+ return this._defaultNumRows;
47
+ }
48
+ get columns() {
49
+ return this._columns;
50
+ }
51
+ get title() {
52
+ return this._title;
53
+ }
54
+ get hideHeader() {
55
+ return this._hideHeader;
56
+ }
57
+ get loadingText() {
58
+ return this._loadingText;
59
+ }
60
+ get loadingIcon() {
61
+ return this._loadingIcon;
62
+ }
63
+ get filters() {
64
+ return this._filters;
65
+ }
66
+ get sorts() {
67
+ return this._sorts;
68
+ }
69
+ get model() {
70
+ return this._model;
71
+ }
72
+ get className() {
73
+ return this._className;
74
+ }
75
+ get size() {
76
+ return this._size;
77
+ }
78
+ get tableFullHeightOffset() {
79
+ return this._tableFullHeightOffset;
80
+ }
81
+ get rowHeight() {
82
+ return this._rowHeight;
83
+ }
84
+ get hasHover() {
85
+ return this._hasHover;
86
+ }
87
+ get hasGridlines() {
88
+ return this._hasGridlines;
89
+ }
90
+ get hasResizableColumns() {
91
+ return this._hasResizableColumns;
92
+ }
93
+ get columnResizeMode() {
94
+ return this._columnResizeMode;
95
+ }
96
+ get rowClassName() {
97
+ return this._rowClassName;
98
+ }
99
+ get rowClassNameMapFn() {
100
+ return this._rowClassNameMapFn;
101
+ }
102
+ get selectionColumnFrozen() {
103
+ return this._selectionColumnFrozen;
104
+ }
105
+ get actionColumnFrozen() {
106
+ return this._actionColumnFrozen;
107
+ }
108
+ get headerClassName() {
109
+ return this._headerClassName;
110
+ }
111
+ get isLocalized() {
112
+ return this._isLocalized;
113
+ }
114
+ get localizationLocaleProperty() {
115
+ return this._localizationLocaleProperty;
116
+ }
117
+ get rowExpandable() {
118
+ return this._rowExpandable;
119
+ }
120
+ get rowExpandableColSpan() {
121
+ return this._rowExpandableColSpan;
122
+ }
123
+ /**
124
+ * This table model property tells us if the specific row should be expandable or not based on row item value
125
+ */
126
+ get rowExpandableProperty() {
127
+ return this._rowExpandableProperty;
128
+ }
129
+ /**
130
+ * Track property is used for the purpose of combined saving user preferences in localstorage if 2 tables have the same track properties they will share the same localstorage entry.
131
+ * Similarly, this property can also be used to differentiate two tables of the same model on the same url (so that they have separate entries in localstorage).
132
+ * @param identifier
133
+ */
134
+ withIdentifier(identifier) {
135
+ this._identifier = identifier;
136
+ return this;
137
+ }
138
+ withTrackProperty(property) {
139
+ return this.withTrackPropertyUnsafe(property);
140
+ }
141
+ withTrackPropertyUnsafe(property) {
142
+ this._trackProperty = property;
143
+ return this;
144
+ }
145
+ getColumn(property) {
146
+ return this.getColumnUnsafe(property);
147
+ }
148
+ getColumnUnsafe(property) {
149
+ return this._columns.find(col => col.property === property) ?? null;
150
+ }
151
+ removeColumn(property) {
152
+ this.removeColumnUnsafe(property);
153
+ }
154
+ removeColumnUnsafe(property) {
155
+ const columnIdx = this._columns.findIndex(c => c.property === property);
156
+ this._columns.splice(columnIdx, 1);
157
+ }
158
+ withColumn(column) {
159
+ this._columns.push(column);
160
+ return this;
161
+ }
162
+ addColumn(property) {
163
+ const column = new ColumnDescriptor(this, property);
164
+ this._columns.push(column);
165
+ return column;
166
+ }
167
+ addColumnEnum(property, enumDesc) {
168
+ const column = new ColumnDescriptor(this, property);
169
+ column.asEnumUnsafe(enumDesc);
170
+ this._columns.push(column);
171
+ return column;
172
+ }
173
+ addColumnUnsafe(property) {
174
+ const column = new ColumnDescriptor(this, property);
175
+ this._columns.push(column);
176
+ return column;
177
+ }
178
+ withColumns(...properties) {
179
+ properties.forEach(p => this.addColumn(p));
180
+ return this;
181
+ }
182
+ withPaginationMode(paginationMode) {
183
+ this._paginationMode = paginationMode;
184
+ return this;
185
+ }
186
+ withRowsPerPage(rows, options) {
187
+ this._defaultNumRows = rows;
188
+ this._rowsPerPageOptions = options;
189
+ return this;
190
+ }
191
+ withTitle(title) {
192
+ this._title = title;
193
+ return this;
194
+ }
195
+ withHideHeader(hideHeader = true) {
196
+ this._hideHeader = hideHeader;
197
+ return this;
198
+ }
199
+ withLoading(text, icon) {
200
+ this._loadingText = text;
201
+ this._loadingIcon = icon === undefined ? 'pi pi-spinner' : icon;
202
+ return this;
203
+ }
204
+ /**
205
+ * Helper method that enables/disables reorderable property on all columns currently in the descriptor.
206
+ * @param columnsReorderable
207
+ */
208
+ withCurrentColumnsReorderable(columnsReorderable = true) {
209
+ for (const col of this.columns) {
210
+ col.withReorderable(columnsReorderable);
211
+ }
212
+ return this;
213
+ }
214
+ /**
215
+ * Helper method that enables/disables toggleable property on all columns currently in the descriptor.
216
+ * @param columnsToggleable
217
+ */
218
+ withCurrentColumnsToggleable(columnsToggleable = true) {
219
+ for (const col of this.columns) {
220
+ col.withToggleable(columnsToggleable);
221
+ }
222
+ return this;
223
+ }
224
+ getSort(property) {
225
+ return this.getSortUnsafe(property);
226
+ }
227
+ getSortUnsafe(property) {
228
+ return this._sorts.find(s => s.property === property) ?? null;
229
+ }
230
+ removeSort(property) {
231
+ return this.removeSortUnsafe(property);
232
+ }
233
+ removeSortUnsafe(property) {
234
+ const sortIdx = this._sorts.findIndex(c => c.property === property);
235
+ this._sorts.splice(sortIdx, 1);
236
+ }
237
+ addSort(property, isDefault = false, ascending) {
238
+ return this.addSortUnsafe(property, isDefault, ascending);
239
+ }
240
+ addSortUnsafe(property, isDefault = false, ascending) {
241
+ const sort = new SortDescriptor(property);
242
+ if (isDefault) {
243
+ const defaultOrderMax = this._sorts
244
+ .filter(s => s.defaultIsEnabled)
245
+ .reduce((acc, s) => (s.defaultOrder !== undefined && s.defaultOrder > acc ? s.defaultOrder : acc), -1);
246
+ sort.withDefaultSort(true, ascending, defaultOrderMax + 1);
247
+ }
248
+ this._sorts.push(sort);
249
+ return sort;
250
+ }
251
+ withSort(property, isDefault = false, ascending) {
252
+ return this.withSortUnsafe(property, isDefault, ascending);
253
+ }
254
+ withSortUnsafe(property, isDefault = false, ascending) {
255
+ this.addSortUnsafe(property, isDefault, ascending);
256
+ return this;
257
+ }
258
+ withDefaultSort(property, ascending, order, enabled) {
259
+ return this.withDefaultSortUnsafe(property, ascending, order, enabled);
260
+ }
261
+ withDefaultSortUnsafe(property, ascending, order, enabled) {
262
+ let sort = this._sorts.find(s => s.property === property);
263
+ if (!sort) {
264
+ sort = new SortDescriptor(property);
265
+ this._sorts.push(sort);
266
+ }
267
+ sort.withDefaultSort(enabled ?? true, ascending, order);
268
+ return this;
269
+ }
270
+ withSorts(...properties) {
271
+ return this.withSortsUnsafe(...properties);
272
+ }
273
+ withSortsUnsafe(...properties) {
274
+ properties.forEach(p => {
275
+ this._sorts.push(new SortDescriptor(p));
276
+ });
277
+ return this;
278
+ }
279
+ getFilter(property) {
280
+ return this.getFilterUnsafe(property);
281
+ }
282
+ getFilterUnsafe(property) {
283
+ return this._filters.find(s => s.property === property) ?? null;
284
+ }
285
+ removeFilter(property) {
286
+ return this.removeFilterUnsafe(property);
287
+ }
288
+ removeFilterUnsafe(property) {
289
+ const filterIdx = this._filters.findIndex(c => c.property === property);
290
+ this._filters.splice(filterIdx, 1);
291
+ }
292
+ addFilter(property) {
293
+ return this.addFilterUnsafe(property);
294
+ }
295
+ addFilterUnsafe(property) {
296
+ const filter = new FilterDescriptor(property);
297
+ this._filters.push(filter);
298
+ return filter;
299
+ }
300
+ addFilterLookup(property, provider, optionsValueProperty) {
301
+ return this.addFilterLookupUnsafe(property, provider, optionsValueProperty);
302
+ }
303
+ addFilterLookupUnsafe(property, provider, optionsValueProperty) {
304
+ const filter = new FilterLookupDescriptor(property, {
305
+ dataProvider: provider,
306
+ optionsValueProperty: optionsValueProperty
307
+ });
308
+ this._filters.push(filter);
309
+ return filter;
310
+ }
311
+ addFilterLookupEnum(property, enumDesc, options) {
312
+ return this.addFilterLookupEnumUnsafe(property, enumDesc, options);
313
+ }
314
+ addFilterLookupEnumUnsafe(property, enumDesc, options) {
315
+ const filter = new FilterLookupEnumDescriptor(property, enumDesc, options);
316
+ this._filters.push(filter);
317
+ return filter;
318
+ }
319
+ addFilterFromColumn(property, forceSimple = false) {
320
+ return this.addFilterFromColumnUnsafe(property, forceSimple);
321
+ }
322
+ withFiltersFromColumns(...properties) {
323
+ return this.withFiltersFromColumnsUnsafe(...properties);
324
+ }
325
+ withFiltersFromColumnsUnsafe(...properties) {
326
+ properties.forEach(p => {
327
+ this.addFilterFromColumnUnsafe(p);
328
+ });
329
+ return this;
330
+ }
331
+ addFilterFromColumnUnsafe(property, forceSimple = false) {
332
+ const column = this.getColumnUnsafe(property);
333
+ if (!column) {
334
+ throw new CommonsInternalError(`No column found for filter property "${property}"`);
335
+ }
336
+ return this.addFilterFromColumnDescriptorUnsafe(column, forceSimple);
337
+ }
338
+ addFilterFromColumnDescriptorUnsafe(column, forceSimple) {
339
+ let filterDescriptor = new FilterDescriptor(column.property);
340
+ let filterType;
341
+ switch (column.columnType) {
342
+ case ColumnTypeEnum.Number:
343
+ filterType = FilterTypeEnum.Number;
344
+ break;
345
+ case ColumnTypeEnum.Boolean:
346
+ filterType = FilterTypeEnum.Boolean;
347
+ break;
348
+ case ColumnTypeEnum.Date:
349
+ filterType = FilterTypeEnum.Date;
350
+ break;
351
+ case ColumnTypeEnum.Enum:
352
+ if (!forceSimple && column.enum) {
353
+ filterDescriptor = new FilterLookupEnumDescriptor(column.property, column.enum);
354
+ filterType = FilterTypeEnum.LookupEnum;
355
+ }
356
+ else {
357
+ filterType = FilterTypeEnum.String;
358
+ }
359
+ break;
360
+ case ColumnTypeEnum.String:
361
+ case ColumnTypeEnum.Custom:
362
+ default:
363
+ filterType = FilterTypeEnum.String;
364
+ break;
365
+ }
366
+ filterDescriptor.asFilterType(filterType);
367
+ if (filterType === FilterTypeEnum.Number) {
368
+ const displayFormatFractions = column.displayFormat?.split('.')?.[1]?.split('-');
369
+ if (displayFormatFractions && displayFormatFractions.length > 2) {
370
+ filterDescriptor.withNumberFractions(parseInt(displayFormatFractions[0]), parseInt(displayFormatFractions[1]));
371
+ }
372
+ }
373
+ else if (filterType === FilterTypeEnum.Date) {
374
+ const displayFormat = column.displayFormat;
375
+ if (displayFormat) {
376
+ const filterDisplayFormat = fromAngularDateFormatToPrime(displayFormat);
377
+ const hasTime = angularDateFormatHasTime(displayFormat);
378
+ const hasSeconds = angularDateFormatHasSeconds(displayFormat);
379
+ filterDescriptor.withDateFormat(filterDisplayFormat, hasTime, hasSeconds);
380
+ }
381
+ }
382
+ this._filters.push(filterDescriptor);
383
+ return filterDescriptor;
384
+ }
385
+ withFilter(property, filter) {
386
+ if (filter.property !== property) {
387
+ throw new CommonsInternalError(`Filter property "${property}" and Filter descriptor property "${filter.property}" do not match.`);
388
+ }
389
+ return this.withFilterUnsafe(filter);
390
+ }
391
+ withFilterUnsafe(filter) {
392
+ this._filters.push(filter);
393
+ return this;
394
+ }
395
+ withClassName(className) {
396
+ this._className = className;
397
+ return this;
398
+ }
399
+ withSize(size = TableSizeEnum.Normal) {
400
+ this._size = size;
401
+ return this;
402
+ }
403
+ withTableFullHeightOffset(tableFullHeightOffset) {
404
+ this._tableFullHeightOffset = tableFullHeightOffset;
405
+ return this;
406
+ }
407
+ withRowHeight(rowHeight) {
408
+ this._rowHeight = rowHeight;
409
+ return this;
410
+ }
411
+ withHover(hover) {
412
+ this._hasHover = hover;
413
+ return this;
414
+ }
415
+ withGridlines(gridlines) {
416
+ this._hasGridlines = gridlines;
417
+ return this;
418
+ }
419
+ /**
420
+ * Method that enables/disabled column resize feature with columnResizeMode on all columns.
421
+ * @param resizableColumns True if enabled
422
+ * @param columnResizeMode 'fit' or 'expand' mode
423
+ */
424
+ withColumnsResizable(resizableColumns = true, columnResizeMode = 'fit') {
425
+ this._hasResizableColumns = resizableColumns;
426
+ this._columnResizeMode = columnResizeMode;
427
+ return this;
428
+ }
429
+ /**
430
+ * Sets column to (un)frozen.
431
+ * @param selectionColumnFrozen True to freeze selection column, false to unfreeze it.
432
+ * @param actionColumnFrozen True to freeze action column, false to unfreeze it.
433
+ */
434
+ withColumnFrozen(selectionColumnFrozen, actionColumnFrozen) {
435
+ this._selectionColumnFrozen = selectionColumnFrozen;
436
+ this._actionColumnFrozen = actionColumnFrozen;
437
+ return this;
438
+ }
439
+ withRowClassName(rowClassName, classNameMapFn) {
440
+ this._rowClassName = rowClassName;
441
+ this._rowClassNameMapFn = classNameMapFn;
442
+ return this;
443
+ }
444
+ withHeaderClassName(headerClassName) {
445
+ this._headerClassName = headerClassName;
446
+ return this;
447
+ }
448
+ withLocalized() {
449
+ this._isLocalized = true;
450
+ return this;
451
+ }
452
+ withLocalizationLocaleProperty(localizationLocaleProperty) {
453
+ this._isLocalized = true;
454
+ this._localizationLocaleProperty = localizationLocaleProperty;
455
+ return this;
456
+ }
457
+ withRowExpandable(property, colSpan) {
458
+ this._rowExpandable = true;
459
+ if (property) {
460
+ this._rowExpandableProperty = property;
461
+ }
462
+ if (colSpan) {
463
+ this._rowExpandableColSpan = colSpan;
464
+ }
465
+ return this;
466
+ }
467
+ copyFieldsTo(obj) {
468
+ obj._title = this._title;
469
+ obj._hideHeader = this._hideHeader;
470
+ obj._trackProperty = this._trackProperty;
471
+ obj._filters = this._filters.map(f => f.copy());
472
+ obj._sorts = this._sorts.map(s => s.copy());
473
+ obj._className = this._className;
474
+ obj._size = this._size;
475
+ obj._tableFullHeightOffset = this._tableFullHeightOffset;
476
+ obj._rowHeight = this._rowHeight;
477
+ obj._hasHover = this._hasHover;
478
+ obj._hasGridlines = this._hasGridlines;
479
+ obj._hasResizableColumns = this._hasResizableColumns;
480
+ obj._columnResizeMode = this._columnResizeMode;
481
+ obj._actionColumnFrozen = this._actionColumnFrozen;
482
+ obj._selectionColumnFrozen = this._selectionColumnFrozen;
483
+ obj._isLocalized = this._isLocalized;
484
+ obj._localizationLocaleProperty = this._localizationLocaleProperty;
485
+ obj._paginationMode = this._paginationMode;
486
+ obj._rowsPerPageOptions = this._rowsPerPageOptions;
487
+ obj._rowExpandable = this._rowExpandable;
488
+ obj._rowExpandableColSpan = this._rowExpandableColSpan;
489
+ obj._rowExpandableProperty = this._rowExpandableProperty;
490
+ }
491
+ copy() {
492
+ const descriptor = new TableDescriptorInst(this.model.copy());
493
+ this.copyFieldsTo(descriptor);
494
+ descriptor._columns = this.columns.map(c => c.copy());
495
+ return descriptor;
496
+ }
497
+ /**
498
+ * defines modified type of column
499
+ * DO NOT USE with enum (use withCustomEnumType)
500
+ * @param property column name
501
+ * @param columnType modified type
502
+ * @param args additional attributes
503
+ * @param columnDisplayType
504
+ */
505
+ withColumnModifiedType(property, columnType, columnDisplayType, ...args) {
506
+ return this.withColumnModifiedTypeUnsafe(property, columnType, columnDisplayType, ...args);
507
+ }
508
+ withColumnModifiedTypeUnsafe(property, columnType, columnDisplayType, ...args) {
509
+ if (!this.model.type) {
510
+ throw new CommonsInternalError(`withColumnModifiedType cannot be executed for property ${property}: Model type is not defined.`);
511
+ }
512
+ const attributeDef = getTableClassAttributeDef(this.model.type).find(attr => attr.name === property);
513
+ if (attributeDef != null) {
514
+ attributeDef.columnType = columnType ?? attributeDef.columnType;
515
+ attributeDef.columnDisplayType = columnDisplayType ?? attributeDef.columnDisplayType;
516
+ TableDescriptorInst.upsertColumnFromAttributeDef(this, attributeDef, this.columns.find(col => col.property === attributeDef.name), ...args);
517
+ }
518
+ return this;
519
+ }
520
+ /**
521
+ * defines custom enum type for column
522
+ * @param property column name
523
+ * @param enumDesc Enum descriptor.
524
+ */
525
+ withColumnModifiedEnum(property, enumDesc) {
526
+ return this.withColumnModifiedEnumUnsafe(property, enumDesc);
527
+ }
528
+ withColumnModifiedEnumUnsafe(property, enumDesc) {
529
+ if (!this.model.type) {
530
+ throw new CommonsInternalError(`withColumnModifiedEnum cannot be executed for property ${property}: Model type is not defined.`);
531
+ }
532
+ const attributeDef = getTableClassAttributeDef(this.model.type).find(attr => attr.name === property);
533
+ if (attributeDef != null) {
534
+ attributeDef.columnType = ColumnTypeEnum.Enum;
535
+ TableDescriptorInst.upsertColumnFromAttributeDef(this, attributeDef, this.columns.find(col => col.property === property), enumDesc ?? enumModelGeneric(TypeRegistry.get().findEnum(attributeDef.type)));
536
+ }
537
+ return this;
538
+ }
539
+ /**
540
+ * modifies column with class and lookup provider
541
+ * @param property column name
542
+ * @param lookupProvider lookupProvider for class
543
+ * @param optionsLabelProperty
544
+ * @param filterProperty
545
+ */
546
+ withModifiedLookup(property, lookupProvider, optionsLabelProperty, filterProperty) {
547
+ return this.withColumnModifiedLookupUnsafe(property, lookupProvider, optionsLabelProperty, filterProperty);
548
+ }
549
+ withColumnModifiedLookupUnsafe(property, lookupProvider, optionsLabelProperty, filterProperty) {
550
+ const column = this.columns.find(col => col.property === property);
551
+ if (column) {
552
+ const filter = this.addFilterLookupUnsafe(column.property, lookupProvider, filterProperty);
553
+ if (optionsLabelProperty) {
554
+ filter.withOptionsLabelPropertyUnsafe(optionsLabelProperty);
555
+ }
556
+ }
557
+ return this;
558
+ }
559
+ /**
560
+ * generates column based on attributes
561
+ * @param desc Table descriptor
562
+ * @param attribute attribute map
563
+ * @param column if provided, replaced by new, otherwise new is created
564
+ * @param args additional parameters
565
+ */
566
+ static upsertColumnFromAttributeDef(desc, attribute, column, ...args) {
567
+ if (column == null) {
568
+ column = desc.addColumnUnsafe(attribute.name);
569
+ }
570
+ if (attribute.columnType === ColumnTypeEnum.Enum && args.length === 0 && attribute.enumType) {
571
+ args = [enumModelGeneric(attribute.enumType)];
572
+ }
573
+ column = column.asType(attribute.columnType, attribute.columnDisplayType, ...args);
574
+ if (attribute.classType) {
575
+ const titleProperty = findClassTitleAttribute(attribute.classType) ?? undefined;
576
+ if (titleProperty) {
577
+ column.withGetter(value => value?.[titleProperty]);
578
+ }
579
+ }
580
+ else {
581
+ column.withSortUnsafe().withFilterUnsafe();
582
+ }
583
+ return column;
584
+ }
585
+ }
586
+ export class TableDescriptor extends TableDescriptorInst {
587
+ constructor() {
588
+ super(ModelDescriptor.create());
589
+ }
590
+ static create(idProperty, titleProperty, i18nBaseKey) {
591
+ return new TableDescriptorInst(ModelDescriptor.create(idProperty, titleProperty, i18nBaseKey));
592
+ }
593
+ static fromClass(type, idProperty, titleProperty, i18nBaseKey, isAutoGenerated = false) {
594
+ return new TableDescriptorInst(ModelDescriptor.fromClass(type, idProperty, titleProperty, i18nBaseKey), isAutoGenerated);
595
+ }
596
+ static fromModel(model) {
597
+ return new TableDescriptorInst(model);
598
+ }
599
+ /**
600
+ * generates descriptor based on type attribute definition
601
+ * @param type class type
602
+ * @param idProperty
603
+ * @param titleProperty
604
+ */
605
+ static fromClassWithAutoAttrsDef(type, idProperty, titleProperty) {
606
+ return TableDescriptor.fromClassWithCustomAttrsDef(type, getTableClassAttributeDef(type), idProperty, titleProperty);
607
+ }
608
+ /**
609
+ * generates descriptor base on given attribute definition
610
+ * @param type class type
611
+ * @param attributes attributes from which descriptor is generated
612
+ * @param idProperty
613
+ * @param titleProperty
614
+ */
615
+ static fromClassWithCustomAttrsDef(type, attributes, idProperty, titleProperty) {
616
+ const descriptor = TableDescriptor.fromClass(type, idProperty, titleProperty, undefined, true);
617
+ attributes.filter(attr => !attr.type.includes('Set') && !attr.type.includes('Array')).forEach(attr => TableDescriptorInst.upsertColumnFromAttributeDef(descriptor, attr));
618
+ return descriptor;
619
+ }
620
+ }
621
+ export class TableDynamicDescriptorInst extends TableDescriptorInst {
622
+ constructor(model) {
623
+ super(model);
624
+ this._excludedColumns = [];
625
+ this._filterColumns = [];
626
+ this._sortColumns = [];
627
+ this._sortColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;
628
+ this._filterColumnMode = TableDynamicColumnsModeEnum.EXCLUDE;
629
+ this._columns = [];
630
+ if (model.titleProperty) {
631
+ this.withTitle(model.titleProperty);
632
+ }
633
+ }
634
+ get columns() {
635
+ return this._columns;
636
+ }
637
+ /**
638
+ * defines excluded columns when generating descriptor
639
+ * @param excludedColumn names of excluded columns
640
+ */
641
+ withColumnsExcluded(excludedColumn) {
642
+ this._excludedColumns = excludedColumn;
643
+ return this;
644
+ }
645
+ /**
646
+ * defines column properties on which sort is defined or not depending on sortColumnMode
647
+ * @param sortOnColumns column names
648
+ * @param sortColumnMode INCLUDE_ONLY (default) only given columns will have sort, EXCLUDE given columns will NOT have sort
649
+ */
650
+ withColumnsSort(sortOnColumns, sortColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY) {
651
+ this._sortColumnMode = sortColumnMode;
652
+ this._sortColumns = sortOnColumns;
653
+ return this;
654
+ }
655
+ /**
656
+ * defines column properties on which filter is defined or not depending on filterColumnMode
657
+ * @param filterOnColumn column names
658
+ * @param filterColumnMode INCLUDE_ONLY (default) only given columns will have filter, EXCLUDE given columns will NOT have filter
659
+ */
660
+ withColumnsFilter(filterOnColumn, filterColumnMode = TableDynamicColumnsModeEnum.INCLUDE_ONLY) {
661
+ this._filterColumnMode = filterColumnMode;
662
+ this._filterColumns = filterOnColumn;
663
+ return this;
664
+ }
665
+ /**
666
+ * sets given type to column with given property and returns this table
667
+ * @param property column's property
668
+ * @param type custom type for column
669
+ * @param displayType custom column value display type
670
+ * @param args addition arguments for column
671
+ */
672
+ withColumnModifiedType(property, type, displayType, ...args) {
673
+ const column = this._columns.find(col => property === col.property) ?? this.addColumn(property).withTitle(property);
674
+ if (column) {
675
+ column.asType(type, displayType, ...args);
676
+ }
677
+ return this;
678
+ }
679
+ /**
680
+ * sets title to column with given property and returns this table
681
+ * @param property column's property
682
+ * @param title column's title
683
+ */
684
+ withColumnTitle(property, title) {
685
+ const column = this._columns.find(col => property === col.property) ?? this.addColumn(property);
686
+ column.withTitle(title, true);
687
+ return this;
688
+ }
689
+ /**
690
+ * generates columns defined on table based on data fetched from api
691
+ * @param data data from api
692
+ */
693
+ toTableDescriptorFromData(data) {
694
+ const tableDescriptor = this.toTableDescriptor();
695
+ if (data.data == null || data.data.length == 0) {
696
+ return tableDescriptor;
697
+ }
698
+ const objectModel = data.data[0];
699
+ const entries = flattenObjectKeys(objectModel)
700
+ .filter(([key]) => !this._excludedColumns.includes(key))
701
+ .filter(([, value]) => !Array.isArray(value)); //exclude arrays and sets
702
+ for (const [key, value] of entries) {
703
+ const metaColumn = this._columns.find(col => col.property === key);
704
+ let column;
705
+ if (metaColumn) {
706
+ if (!metaColumn.visibility) {
707
+ continue;
708
+ }
709
+ column = metaColumn.toColumnDescriptor(tableDescriptor);
710
+ tableDescriptor.withColumn(column);
711
+ }
712
+ else {
713
+ column = tableDescriptor.addColumn(key).withTitle(key);
714
+ columnToDateNumberOrBoolean(column, value);
715
+ }
716
+ if (this.model.i18nBaseKey && !column.property.includes('rev')) {
717
+ column.withTitle([this.model.i18nBaseKey, 'properties', column.property].join('.').replace('state.', ''));
718
+ }
719
+ const elementOfSortColumns = this._sortColumns.includes(column.property);
720
+ if ((this._sortColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfSortColumns) ||
721
+ (this._sortColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfSortColumns)) {
722
+ column.withSortUnsafe();
723
+ }
724
+ const elementOfFilterColumns = this._filterColumns.includes(column.property);
725
+ if (this._filterColumns.length > 0 &&
726
+ ((this._filterColumnMode === TableDynamicColumnsModeEnum.EXCLUDE && !elementOfFilterColumns) ||
727
+ (this._filterColumnMode === TableDynamicColumnsModeEnum.INCLUDE_ONLY && elementOfFilterColumns))) {
728
+ column.withFilterUnsafe();
729
+ }
730
+ }
731
+ return tableDescriptor;
732
+ }
733
+ /**
734
+ * adds ColumnDynamicDescriptor to this table
735
+ * @param property column's property
736
+ */
737
+ addColumn(property) {
738
+ const column = new ColumnDynamicDescriptor(this, property);
739
+ this._columns.push(column);
740
+ return column;
741
+ }
742
+ removeColumn(property) {
743
+ const column = this.columns.find(col => col.property === property) ?? this.addColumn(property);
744
+ column.withVisibility(false);
745
+ return this;
746
+ }
747
+ /**
748
+ * creates deep copy of table dynamic descriptor
749
+ */
750
+ copy() {
751
+ const descriptor = new TableDynamicDescriptorInst(this.model.copy());
752
+ this.copyFieldsTo(descriptor);
753
+ descriptor._columns = this.columns.map(c => c.copy());
754
+ descriptor._excludedColumns = [...this._excludedColumns];
755
+ descriptor._filterColumns = [...this._filterColumns];
756
+ descriptor._sortColumns = [...this._sortColumns];
757
+ descriptor._filterColumnMode = this._filterColumnMode;
758
+ descriptor._sortColumnMode = this._sortColumnMode;
759
+ return descriptor;
760
+ }
761
+ toTableDescriptor() {
762
+ const descriptor = new TableDescriptorInst(this.model);
763
+ this.copyFieldsTo(descriptor);
764
+ return descriptor;
765
+ }
766
+ }
767
+ export class TableDynamicDescriptor extends TableDynamicDescriptorInst {
768
+ constructor() {
769
+ super(ModelDescriptor.create());
770
+ }
771
+ static create(idProperty, titleProperty, i18nBaseKey) {
772
+ return new TableDynamicDescriptorInst(ModelDescriptor.create(idProperty, titleProperty, i18nBaseKey));
773
+ }
774
+ static fromModel(model) {
775
+ return new TableDynamicDescriptorInst(model);
776
+ }
777
+ }
778
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGVzY3JpcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RhYmxlL2FwaS9zcmMvZGVzY3JpcHRvcnMvdGFibGUuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsb0JBQW9CLEVBS3BCLFlBQVksRUFDWiwyQkFBMkIsRUFDM0Isd0JBQXdCLEVBQ3hCLGlCQUFpQixFQUNqQiw0QkFBNEIsRUFDL0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNyQyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLEVBQUUsMEJBQTBCLEVBQUUsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDbkksT0FBTyxFQUFpQixlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsdUJBQXVCLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUV4SCxPQUFPLEVBQUMsMkJBQTJCLEVBQUUseUJBQXlCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUU1RyxPQUFPLEVBQXdCLGNBQWMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRTdFLE9BQU8sRUFBMkIsMkJBQTJCLEVBQTJCLGFBQWEsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ3BJLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzlFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUVqRCxNQUFNLE9BQU8sbUJBQW1CO0lBaUQ1QixZQUFzQixLQUFrQyxFQUFFLGFBQWEsR0FBRyxLQUFLO1FBdENyRSxhQUFRLEdBQTZDLEVBQUUsQ0FBQztRQUUxRCxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixpQkFBWSxHQUFrQixlQUFlLENBQUM7UUFFdEQsUUFBUTtRQUNBLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsS0FBSyxD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QUFDLGNBQWMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3JELFVBQVUsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxVQUFVLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNsRCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0saUJBQWlCO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLElBQUksbUJBQW1CLENBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHNCQUF1QixTQUFRLDBCQUEwQjtJQUNsRTtRQUNJLEtBQUssQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFtQixFQUFFLGFBQXNCLEVBQUUsV0FBcUM7UUFDbkcsT0FBTyxJQUFJLDBCQUEwQixDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQU0sVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFTSxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQTJCO1FBQy9DLE9BQU8sSUFBSSwwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENsYXNzVHlwZSxcbiAgICBDb21tb25zSW50ZXJuYWxFcnJvcixcbiAgICBEYXRhTGlzdFJlc3VsdCxcbiAgICBFbnVtQ29uc3RhbnRUeXBlLFxuICAgIEVudW1UeXBlLFxuICAgIElMb29rdXBEYXRhUHJvdmlkZXIsXG4gICAgVHlwZVJlZ2lzdHJ5LFxuICAgIGFuZ3VsYXJEYXRlRm9ybWF0SGFzU2Vjb25kcyxcbiAgICBhbmd1bGFyRGF0ZUZvcm1hdEhhc1RpbWUsXG4gICAgZmxhdHRlbk9iamVjdEtleXMsXG4gICAgZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtGaWx0ZXJEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBEZXNjcmlwdG9yLCBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvciwgRmlsdGVyVHlwZUVudW19IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZmlsdGVyJztcbmltcG9ydCB7RW51bURlc2NyaXB0b3IsIE1vZGVsRGVzY3JpcHRvciwgZW51bU1vZGVsR2VuZXJpYywgZmluZENsYXNzVGl0bGVBdHRyaWJ1dGV9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge2NvbHVtblRvRGF0ZU51bWJlck9yQm9vbGVhbiwgZ2V0VGFibGVDbGFzc0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vaGVscGVycy9jbGFzcy1hdHRyaWJ1dGUtY29udmVydGVyJztcbmltcG9ydCB7VGFibGVDbGFzc0F0dHJpYnV0ZURlZn0gZnJvbSAnLi4vbW9kZWxzL2NsYXNzLXRhYmxlLWF0dHJpYnV0ZS5tb2RlbCc7XG5pbXBvcnQge0NvbHVtbkRpc3BsYXlUeXBlRW51bSwgQ29sdW1uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHtJQ29sdW1uc01hbmFnZUludGVyZmFjZX0gZnJvbSAnLi4vbW9kZWxzL3RhYmxlLWNvbHVtbnMubW9kZWwnO1xuaW1wb3J0IHtJVGFibGVEZXNjcmlwdG9ySW50ZXJuYWwsIFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bSwgVGFibGVQYWdpbmF0aW9uTW9kZUVudW0sIFRhYmxlU2l6ZUVudW19IGZyb20gJy4uL21vZGVscy90YWJsZS5tb2RlbCc7XG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3IsIENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yfSBmcm9tICcuL2NvbHVtbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7U29ydERlc2NyaXB0b3J9IGZyb20gJy4vc29ydC5kZXNjcmlwdG9yJztcblxuZXhwb3J0IGNsYXNzIFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD5cbiAgICBpbXBsZW1lbnRzIElUYWJsZURlc2NyaXB0b3JJbnRlcm5hbDxUYWJsZU1vZGVsPiwgSUNvbHVtbnNNYW5hZ2VJbnRlcmZhY2U8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+XG57XG4gICAgcHJpdmF0ZSByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2F1dG9HZW5lcmF0ZWQ7XG5cbiAgICBwcml2YXRlIF9pZGVudGlmaWVyPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3RyYWNrUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcGFnaW5hdGlvbk1vZGU/OiBUYWJsZVBhZ2luYXRpb25Nb2RlRW51bTtcbiAgICBwcml2YXRlIF9yb3dzUGVyUGFnZU9wdGlvbnM/OiBudW1iZXJbXTtcbiAgICBwcml2YXRlIF9kZWZhdWx0TnVtUm93cz86IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX2NvbHVtbnM6IEFycmF5PENvbHVtbkRlc2NyaXB0b3I8YW55LCBUYWJsZU1vZGVsPj4gPSBbXTtcbiAgICBwcml2YXRlIF90aXRsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9oaWRlSGVhZGVyID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfbG9hZGluZ1RleHQ/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbG9hZGluZ0ljb246IHN0cmluZyB8IG51bGwgPSAncGkgcGktc3Bpbm5lcic7XG5cbiAgICAvLyBleHRyYVxuICAgIHByaXZhdGUgX2hhc0hvdmVyID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9oYXNHcmlkbGluZXMgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9oYXNSZXNpemFibGVDb2x1bW5zID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfY29sdW1uUmVzaXplTW9kZT86ICdmaXQnIHwgJ2V4cGFuZCc7XG5cbiAgICAvLyBzcGVjaWFsIGNvbHVtbnNcbiAgICBwcml2YXRlIF9zZWxlY3Rpb25Db2x1bW5Gcm96ZW4/OiBib29sZWFuO1xuICAgIHByaXZhdGUgX2FjdGlvbkNvbHVtbkZyb3plbj86IGJvb2xlYW47XG5cbiAgICAvLyBzdHlsaW5nXG4gICAgcHJpdmF0ZSBfc2l6ZTogVGFibGVTaXplRW51bSA9IFRhYmxlU2l6ZUVudW0uTGFyZ2U7XG4gICAgcHJpdmF0ZSBfY2xhc3NOYW1lID0gJyc7XG4gICAgcHJpdmF0ZSBfaGVhZGVyQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3Jvd0NsYXNzTmFtZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9yb3dDbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUYWJsZU1vZGVsKSA9PiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfdGFibGVGdWxsSGVpZ2h0T2Zmc2V0PzogbnVtYmVyO1xuICAgIHByaXZhdGUgX3Jvd0hlaWdodD86IG51bWJlcjtcblxuICAgIC8vIGZpbHRlcnMmc29ydHNcbiAgICBwcml2YXRlIF9maWx0ZXJzOiBGaWx0ZXJEZXNjcmlwdG9yPGFueSwgVGFibGVNb2RlbD5bXSA9IFtdO1xuICAgIHByaXZhdGUgX3NvcnRzOiBTb3J0RGVzY3JpcHRvcjxUYWJsZU1vZGVsPltdID0gW107XG5cbiAgICAvLyBsb2NhbGl6YXRpb25cbiAgICBwcml2YXRlIF9pc0xvY2FsaXplZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgLy8gcm93IGV4cGFuZFxuICAgIHByaXZhdGUgX3Jvd0V4cGFuZGFibGUgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9yb3dFeHBhbmRhYmxlQ29sU3BhbiA9IDEwMDtcbiAgICBwcml2YXRlIF9yb3dFeHBhbmRhYmxlUHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPiwgYXV0b0dlbmVyYXRlZCA9IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX3RyYWNrUHJvcGVydHkgPSB0aGlzLl9tb2RlbC5pZFByb3BlcnR5O1xuICAgICAgICB0aGlzLl9hdXRvR2VuZXJhdGVkID0gYXV0b0dlbmVyYXRlZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlkZW50aWZpZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZGVudGlmaWVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdHJhY2tQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RyYWNrUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWdpbmF0aW9uTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhZ2luYXRpb25Nb2RlO1xuICAgIH1cblxuICAgIGdldCByb3dzUGVyUGFnZU9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dzUGVyUGFnZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IGRlZmF1bHROdW1Sb3dzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdE51bVJvd3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb2x1bW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoaWRlSGVhZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlkZUhlYWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvYWRpbmdUZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9hZGluZ1RleHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb2FkaW5nSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xvYWRpbmdJY29uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVycygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlcnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGVGdWxsSGVpZ2h0T2Zmc2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGVGdWxsSGVpZ2h0T2Zmc2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm93SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzSG92ZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNIb3ZlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0dyaWRsaW5lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0dyaWRsaW5lcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1Jlc2l6YWJsZUNvbHVtbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNSZXNpemFibGVDb2x1bW5zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY29sdW1uUmVzaXplTW9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtblJlc2l6ZU1vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dDbGFzc05hbWVNYXBGbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jvd0NsYXNzTmFtZU1hcEZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uQ29sdW1uRnJvemVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ29sdW1uRnJvemVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uQ29sdW1uRnJvemVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9uQ29sdW1uRnJvemVuO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGVhZGVyQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNMb2NhbGl6ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xvY2FsaXplZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGxvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3dFeHBhbmRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RXhwYW5kYWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvd0V4cGFuZGFibGVDb2xTcGFuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RXhwYW5kYWJsZUNvbFNwYW47XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyB0YWJsZSBtb2RlbCBwcm9wZXJ0eSB0ZWxscyB1cyBpZiB0aGUgc3BlY2lmaWMgcm93IHNob3VsZCBiZSBleHBhbmRhYmxlIG9yIG5vdCBiYXNlZCBvbiByb3cgaXRlbSB2YWx1ZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcm93RXhwYW5kYWJsZVByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm93RXhwYW5kYWJsZVByb3BlcnR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYWNrIHByb3BlcnR5IGlzIHVzZWQgZm9yIHRoZSBwdXJwb3NlIG9mIGNvbWJpbmVkIHNhdmluZyB1c2VyIHByZWZlcmVuY2VzIGluIGxvY2Fsc3RvcmFnZSBpZiAyIHRhYmxlcyBoYXZlIHRoZSBzYW1lIHRyYWNrIHByb3BlcnRpZXMgdGhleSB3aWxsIHNoYXJlIHRoZSBzYW1lIGxvY2Fsc3RvcmFnZSBlbnRyeS5cbiAgICAgKiBTaW1pbGFybHksIHRoaXMgcHJvcGVydHkgY2FuIGFsc28gYmUgdXNlZCB0byBkaWZmZXJlbnRpYXRlIHR3byB0YWJsZXMgb2YgdGhlIHNhbWUgbW9kZWwgb24gdGhlIHNhbWUgdXJsIChzbyB0aGF0IHRoZXkgaGF2ZSBzZXBhcmF0ZSBlbnRyaWVzIGluIGxvY2Fsc3RvcmFnZSkuXG4gICAgICogQHBhcmFtIGlkZW50aWZpZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aElkZW50aWZpZXIoaWRlbnRpZmllcjogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRyYWNrUHJvcGVydHkocHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhUcmFja1Byb3BlcnR5VW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUcmFja1Byb3BlcnR5VW5zYWZlKHByb3BlcnR5Pzogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RyYWNrUHJvcGVydHkgPSBwcm9wZXJ0eTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbHVtbihwcm9wZXJ0eToga2V5b2YgVGFibGVNb2RlbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5VbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29sdW1uVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ29sdW1uVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUNvbHVtblVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNvbHVtbklkeCA9IHRoaXMuX2NvbHVtbnMuZmluZEluZGV4KGMgPT4gYy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnNwbGljZShjb2x1bW5JZHgsIDEpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1uPENvbHVtbk1vZGVsLCBDb2x1bW5WYWx1ZSA9IENvbHVtbk1vZGVsPihjb2x1bW46IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWwsIENvbHVtblZhbHVlPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtbjxQcm9wZXJ0eUtleSBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWw+KHByb3BlcnR5OiBQcm9wZXJ0eUtleSkge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBuZXcgQ29sdW1uRGVzY3JpcHRvcjxOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5S2V5XT4sIFRhYmxlTW9kZWwsIFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPih0aGlzLCBwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkQ29sdW1uRW51bTxQcm9wZXJ0eUtleSBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5S2V5XT4+KHByb3BlcnR5OiBQcm9wZXJ0eUtleSwgZW51bURlc2M6IEVudW1EZXNjcmlwdG9yPEVudW0+KSB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPEVudW0sIFRhYmxlTW9kZWwsIFRhYmxlTW9kZWxbUHJvcGVydHlLZXldPih0aGlzLCBwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgICAgICBjb2x1bW4uYXNFbnVtVW5zYWZlKGVudW1EZXNjKTtcbiAgICAgICAgdGhpcy5fY29sdW1ucy5wdXNoKGNvbHVtbik7XG4gICAgICAgIHJldHVybiBjb2x1bW47XG4gICAgfVxuXG4gICAgcHVibGljIGFkZENvbHVtblVuc2FmZTxDb2x1bW5Nb2RlbCA9IHVua25vd24+KHByb3BlcnR5OiBzdHJpbmcpOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsPih0aGlzLCBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2NvbHVtbnMucHVzaChjb2x1bW4pO1xuICAgICAgICByZXR1cm4gY29sdW1uO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiAoa2V5b2YgVGFibGVNb2RlbClbXSk6IHRoaXMge1xuICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2gocCA9PiB0aGlzLmFkZENvbHVtbihwKSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGFnaW5hdGlvbk1vZGUocGFnaW5hdGlvbk1vZGU6IFRhYmxlUGFnaW5hdGlvbk1vZGVFbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3BhZ2luYXRpb25Nb2RlID0gcGFnaW5hdGlvbk1vZGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93c1BlclBhZ2Uocm93czogbnVtYmVyLCBvcHRpb25zPzogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9kZWZhdWx0TnVtUm93cyA9IHJvd3M7XG4gICAgICAgIHRoaXMuX3Jvd3NQZXJQYWdlT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGl0bGUodGl0bGU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlO1xuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSGlkZUhlYWRlcihoaWRlSGVhZGVyID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9oaWRlSGVhZGVyID0gaGlkZUhlYWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb2FkaW5nKHRleHQ/OiBzdHJpbmcsIGljb24/OiBzdHJpbmcgfCBudWxsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvYWRpbmdUZXh0ID0gdGV4dDtcbiAgICAgICAgdGhpcy5fbG9hZGluZ0ljb24gPSBpY29uID09PSB1bmRlZmluZWQgPyAncGkgcGktc3Bpbm5lcicgOiBpY29uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIZWxwZXIgbWV0aG9kIHRoYXQgZW5hYmxlcy9kaXNhYmxlcyByZW9yZGVyYWJsZSBwcm9wZXJ0eSBvbiBhbGwgY29sdW1ucyBjdXJyZW50bHkgaW4gdGhlIGRlc2NyaXB0b3IuXG4gICAgICogQHBhcmFtIGNvbHVtbnNSZW9yZGVyYWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VycmVudENvbHVtbnNSZW9yZGVyYWJsZShjb2x1bW5zUmVvcmRlcmFibGUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIGZvciAoY29uc3QgY29sIG9mIHRoaXMuY29sdW1ucykge1xuICAgICAgICAgICAgY29sLndpdGhSZW9yZGVyYWJsZShjb2x1bW5zUmVvcmRlcmFibGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlbHBlciBtZXRob2QgdGhhdCBlbmFibGVzL2Rpc2FibGVzIHRvZ2dsZWFibGUgcHJvcGVydHkgb24gYWxsIGNvbHVtbnMgY3VycmVudGx5IGluIHRoZSBkZXNjcmlwdG9yLlxuICAgICAqIEBwYXJhbSBjb2x1bW5zVG9nZ2xlYWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ3VycmVudENvbHVtbnNUb2dnbGVhYmxlKGNvbHVtbnNUb2dnbGVhYmxlID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICBmb3IgKGNvbnN0IGNvbCBvZiB0aGlzLmNvbHVtbnMpIHtcbiAgICAgICAgICAgIGNvbC53aXRoVG9nZ2xlYWJsZShjb2x1bW5zVG9nZ2xlYWJsZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNvcnRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb3J0cy5maW5kKHMgPT4gcy5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpID8/IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVNvcnQocHJvcGVydHk6IFNvcnRzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbW92ZVNvcnRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHNvcnRJZHggPSB0aGlzLl9zb3J0cy5maW5kSW5kZXgoYyA9PiBjLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3NvcnRzLnNwbGljZShzb3J0SWR4LCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkU29ydChwcm9wZXJ0eTogU29ydHMsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNvcnRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBpc0RlZmF1bHQsIGFzY2VuZGluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNvcnRVbnNhZmUocHJvcGVydHk6IHN0cmluZywgaXNEZWZhdWx0ID0gZmFsc2UsIGFzY2VuZGluZz86IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3Qgc29ydCA9IG5ldyBTb3J0RGVzY3JpcHRvcjxUYWJsZU1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIGlmIChpc0RlZmF1bHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlZmF1bHRPcmRlck1heCA9IHRoaXMuX3NvcnRzXG4gICAgICAgICAgICAgICAgLmZpbHRlcihzID0+IHMuZGVmYXVsdElzRW5hYmxlZClcbiAgICAgICAgICAgICAgICAucmVkdWNlKChhY2MsIHMpID0+IChzLmRlZmF1bHRPcmRlciAhPT0gdW5kZWZpbmVkICYmIHMuZGVmYXVsdE9yZGVyID4gYWNjID8gcy5kZWZhdWx0T3JkZXIgOiBhY2MpLCAtMSk7XG4gICAgICAgICAgICBzb3J0LndpdGhEZWZhdWx0U29ydCh0cnVlLCBhc2NlbmRpbmcsIGRlZmF1bHRPcmRlck1heCArIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NvcnRzLnB1c2goc29ydCk7XG4gICAgICAgIHJldHVybiBzb3J0O1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydChwcm9wZXJ0eTogU29ydHMsIGlzRGVmYXVsdCA9IGZhbHNlLCBhc2NlbmRpbmc/OiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTb3J0VW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgaXNEZWZhdWx0LCBhc2NlbmRpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydFVuc2FmZShwcm9wZXJ0eTogc3RyaW5nLCBpc0RlZmF1bHQgPSBmYWxzZSwgYXNjZW5kaW5nPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLmFkZFNvcnRVbnNhZmUocHJvcGVydHksIGlzRGVmYXVsdCwgYXNjZW5kaW5nKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWZhdWx0U29ydChwcm9wZXJ0eTogU29ydHMsIGFzY2VuZGluZz86IGJvb2xlYW4sIG9yZGVyPzogbnVtYmVyLCBlbmFibGVkPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoRGVmYXVsdFNvcnRVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBhc2NlbmRpbmcsIG9yZGVyLCBlbmFibGVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aERlZmF1bHRTb3J0VW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGFzY2VuZGluZz86IGJvb2xlYW4sIG9yZGVyPzogbnVtYmVyLCBlbmFibGVkPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICBsZXQgc29ydCA9IHRoaXMuX3NvcnRzLmZpbmQocyA9PiBzLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIGlmICghc29ydCkge1xuICAgICAgICAgICAgc29ydCA9IG5ldyBTb3J0RGVzY3JpcHRvcihwcm9wZXJ0eSk7XG4gICAgICAgICAgICB0aGlzLl9zb3J0cy5wdXNoKHNvcnQpO1xuICAgICAgICB9XG4gICAgICAgIHNvcnQud2l0aERlZmF1bHRTb3J0KGVuYWJsZWQgPz8gdHJ1ZSwgYXNjZW5kaW5nLCBvcmRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU29ydHMoLi4ucHJvcGVydGllczogU29ydHNbXSk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU29ydHNVbnNhZmUoLi4uKHByb3BlcnRpZXMgYXMgc3RyaW5nW10pKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNvcnRzVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NvcnRzLnB1c2gobmV3IFNvcnREZXNjcmlwdG9yKHApKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWx0ZXIocHJvcGVydHk6IEZpbHRlcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmlsdGVyVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbHRlclVuc2FmZShwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJzLmZpbmQocyA9PiBzLnByb3BlcnR5ID09PSBwcm9wZXJ0eSkgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsdGVyKHByb3BlcnR5OiBGaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlbW92ZUZpbHRlclVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVGaWx0ZXJVbnNhZmUocHJvcGVydHk6IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWx0ZXJJZHggPSB0aGlzLl9maWx0ZXJzLmZpbmRJbmRleChjID0+IGMucHJvcGVydHkgPT09IHByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fZmlsdGVycy5zcGxpY2UoZmlsdGVySWR4LCAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyPEZpbHRlck1vZGVsID0gRmlsdGVycyBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwgPyBUYWJsZU1vZGVsW0ZpbHRlcnNdIDogbmV2ZXI+KHByb3BlcnR5OiBGaWx0ZXJzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4ocHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyVW5zYWZlPEZpbHRlck1vZGVsPihwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlciA9IG5ldyBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPihwcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXA8RmlsdGVyTW9kZWwgPSBGaWx0ZXJzIGV4dGVuZHMga2V5b2YgVGFibGVNb2RlbCA/IE5vbk51bGxhYmxlPFRhYmxlTW9kZWxbRmlsdGVyc10+IDogbmV2ZXIsIFNlcnZpY2UgPSB1bmRlZmluZWQ+KFxuICAgICAgICBwcm9wZXJ0eTogRmlsdGVycyxcbiAgICAgICAgcHJvdmlkZXI/OiBJTG9va3VwRGF0YVByb3ZpZGVyPEZpbHRlck1vZGVsLCBTZXJ2aWNlPixcbiAgICAgICAgb3B0aW9uc1ZhbHVlUHJvcGVydHk/OiBrZXlvZiBGaWx0ZXJNb2RlbFxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJMb29rdXBVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBwcm92aWRlciwgb3B0aW9uc1ZhbHVlUHJvcGVydHkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyTG9va3VwVW5zYWZlPEZpbHRlck1vZGVsLCBTZXJ2aWNlID0gdW5kZWZpbmVkPihwcm9wZXJ0eTogc3RyaW5nLCBwcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8RmlsdGVyTW9kZWwsIFNlcnZpY2U+LCBvcHRpb25zVmFsdWVQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyTG9va3VwRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbCwgU2VydmljZT4ocHJvcGVydHksIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogcHJvdmlkZXIsXG4gICAgICAgICAgICBvcHRpb25zVmFsdWVQcm9wZXJ0eTogb3B0aW9uc1ZhbHVlUHJvcGVydHlcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2ZpbHRlcnMucHVzaChmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gZmlsdGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBFbnVtPEVudW0+KHByb3BlcnR5OiBGaWx0ZXJzLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0+KHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJMb29rdXBFbnVtVW5zYWZlPEVudW0gPSBFbnVtQ29uc3RhbnRUeXBlPihwcm9wZXJ0eTogc3RyaW5nLCBlbnVtRGVzYzogRW51bURlc2NyaXB0b3I8RW51bT4sIG9wdGlvbnM/OiBBcnJheTxFbnVtPikge1xuICAgICAgICBjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyTG9va3VwRW51bURlc2NyaXB0b3IocHJvcGVydHksIGVudW1EZXNjLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5fZmlsdGVycy5wdXNoKGZpbHRlcik7XG4gICAgICAgIHJldHVybiBmaWx0ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZpbHRlckZyb21Db2x1bW4ocHJvcGVydHk6IEV4dHJhY3Q8RmlsdGVycywga2V5b2YgVGFibGVNb2RlbD4sIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsdGVyRnJvbUNvbHVtblVuc2FmZShwcm9wZXJ0eSBhcyBzdHJpbmcsIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcnNGcm9tQ29sdW1ucyguLi5wcm9wZXJ0aWVzOiBFeHRyYWN0PEZpbHRlcnMsIGtleW9mIFRhYmxlTW9kZWw+W10pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aEZpbHRlcnNGcm9tQ29sdW1uc1Vuc2FmZSguLi4ocHJvcGVydGllcyBhcyBzdHJpbmdbXSkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmlsdGVyc0Zyb21Db2x1bW5zVW5zYWZlKC4uLnByb3BlcnRpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHByb3BlcnRpZXMuZm9yRWFjaChwID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWRkRmlsdGVyRnJvbUNvbHVtblVuc2FmZShwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRGaWx0ZXJGcm9tQ29sdW1uVW5zYWZlKHByb3BlcnR5OiBzdHJpbmcsIGZvcmNlU2ltcGxlID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5VbnNhZmUocHJvcGVydHkpO1xuICAgICAgICBpZiAoIWNvbHVtbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBObyBjb2x1bW4gZm91bmQgZm9yIGZpbHRlciBwcm9wZXJ0eSBcIiR7cHJvcGVydHl9XCJgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hZGRGaWx0ZXJGcm9tQ29sdW1uRGVzY3JpcHRvclVuc2FmZShjb2x1bW4sIGZvcmNlU2ltcGxlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkRmlsdGVyRnJvbUNvbHVtbkRlc2NyaXB0b3JVbnNhZmU8Q29sdW1uTW9kZWwsIENvbHVtblZhbHVlPihcbiAgICAgICAgY29sdW1uOiBDb2x1bW5EZXNjcmlwdG9yPENvbHVtbk1vZGVsLCBUYWJsZU1vZGVsLCBDb2x1bW5WYWx1ZT4sXG4gICAgICAgIGZvcmNlU2ltcGxlOiBib29sZWFuXG4gICAgKTogRmlsdGVyRGVzY3JpcHRvcjxhbnksIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgbGV0IGZpbHRlckRlc2NyaXB0b3IgPSBuZXcgRmlsdGVyRGVzY3JpcHRvcjxhbnksIFRhYmxlTW9kZWw+KGNvbHVtbi5wcm9wZXJ0eSk7XG4gICAgICAgIGxldCBmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlRW51bTtcblxuICAgICAgICBzd2l0Y2ggKGNvbHVtbi5jb2x1bW5UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLk51bWJlcjpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uTnVtYmVyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5Cb29sZWFuO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5EYXRlOlxuICAgICAgICAgICAgICAgIGZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlRW51bS5EYXRlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBDb2x1bW5UeXBlRW51bS5FbnVtOlxuICAgICAgICAgICAgICAgIGlmICghZm9yY2VTaW1wbGUgJiYgY29sdW1uLmVudW0pIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyRGVzY3JpcHRvciA9IG5ldyBGaWx0ZXJMb29rdXBFbnVtRGVzY3JpcHRvcihjb2x1bW4ucHJvcGVydHksIGNvbHVtbi5lbnVtKTtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLkxvb2t1cEVudW07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyVHlwZSA9IEZpbHRlclR5cGVFbnVtLlN0cmluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIENvbHVtblR5cGVFbnVtLlN0cmluZzpcbiAgICAgICAgICAgIGNhc2UgQ29sdW1uVHlwZUVudW0uQ3VzdG9tOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBmaWx0ZXJUeXBlID0gRmlsdGVyVHlwZUVudW0uU3RyaW5nO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgZmlsdGVyRGVzY3JpcHRvci5hc0ZpbHRlclR5cGUoZmlsdGVyVHlwZSk7XG4gICAgICAgIGlmIChmaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlRW51bS5OdW1iZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMgPSBjb2x1bW4uZGlzcGxheUZvcm1hdD8uc3BsaXQoJy4nKT8uWzFdPy5zcGxpdCgnLScpO1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXRGcmFjdGlvbnMgJiYgZGlzcGxheUZvcm1hdEZyYWN0aW9ucy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyRGVzY3JpcHRvci53aXRoTnVtYmVyRnJhY3Rpb25zKHBhcnNlSW50KGRpc3BsYXlGb3JtYXRGcmFjdGlvbnNbMF0pLCBwYXJzZUludChkaXNwbGF5Rm9ybWF0RnJhY3Rpb25zWzFdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZUVudW0uRGF0ZSkge1xuICAgICAgICAgICAgY29uc3QgZGlzcGxheUZvcm1hdCA9IGNvbHVtbi5kaXNwbGF5Rm9ybWF0O1xuICAgICAgICAgICAgaWYgKGRpc3BsYXlGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJEaXNwbGF5Rm9ybWF0ID0gZnJvbUFuZ3VsYXJEYXRlRm9ybWF0VG9QcmltZShkaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNUaW1lID0gYW5ndWxhckRhdGVGb3JtYXRIYXNUaW1lKGRpc3BsYXlGb3JtYXQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc1NlY29uZHMgPSBhbmd1bGFyRGF0ZUZvcm1hdEhhc1NlY29uZHMoZGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgZmlsdGVyRGVzY3JpcHRvci53aXRoRGF0ZUZvcm1hdChmaWx0ZXJEaXNwbGF5Rm9ybWF0LCBoYXNUaW1lLCBoYXNTZWNvbmRzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2ZpbHRlcnMucHVzaChmaWx0ZXJEZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZmlsdGVyRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlcjxGaWx0ZXJNb2RlbD4ocHJvcGVydHk6IEZpbHRlcnMsIGZpbHRlcjogRmlsdGVyRGVzY3JpcHRvcjxGaWx0ZXJNb2RlbCwgVGFibGVNb2RlbD4pOiB0aGlzIHtcbiAgICAgICAgaWYgKGZpbHRlci5wcm9wZXJ0eSAhPT0gcHJvcGVydHkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgRmlsdGVyIHByb3BlcnR5IFwiJHtwcm9wZXJ0eX1cIiBhbmQgRmlsdGVyIGRlc2NyaXB0b3IgcHJvcGVydHkgXCIke2ZpbHRlci5wcm9wZXJ0eX1cIiBkbyBub3QgbWF0Y2guYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZpbHRlclVuc2FmZTxGaWx0ZXJNb2RlbD4oZmlsdGVyOiBGaWx0ZXJEZXNjcmlwdG9yPEZpbHRlck1vZGVsLCBUYWJsZU1vZGVsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJzLnB1c2goZmlsdGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNpemUoc2l6ZTogVGFibGVTaXplRW51bSA9IFRhYmxlU2l6ZUVudW0uTm9ybWFsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3NpemUgPSBzaXplO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxlRnVsbEhlaWdodE9mZnNldCh0YWJsZUZ1bGxIZWlnaHRPZmZzZXQ6IG51bWJlcik6IHRoaXMge1xuICAgICAgICB0aGlzLl90YWJsZUZ1bGxIZWlnaHRPZmZzZXQgPSB0YWJsZUZ1bGxIZWlnaHRPZmZzZXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93SGVpZ2h0KHJvd0hlaWdodDogbnVtYmVyKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Jvd0hlaWdodCA9IHJvd0hlaWdodDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIb3Zlcihob3ZlcjogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNIb3ZlciA9IGhvdmVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdyaWRsaW5lcyhncmlkbGluZXM6IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzR3JpZGxpbmVzID0gZ3JpZGxpbmVzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBNZXRob2QgdGhhdCBlbmFibGVzL2Rpc2FibGVkIGNvbHVtbiByZXNpemUgZmVhdHVyZSB3aXRoIGNvbHVtblJlc2l6ZU1vZGUgb24gYWxsIGNvbHVtbnMuXG4gICAgICogQHBhcmFtIHJlc2l6YWJsZUNvbHVtbnMgVHJ1ZSBpZiBlbmFibGVkXG4gICAgICogQHBhcmFtIGNvbHVtblJlc2l6ZU1vZGUgJ2ZpdCcgb3IgJ2V4cGFuZCcgbW9kZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoQ29sdW1uc1Jlc2l6YWJsZShyZXNpemFibGVDb2x1bW5zID0gdHJ1ZSwgY29sdW1uUmVzaXplTW9kZTogJ2ZpdCcgfCAnZXhwYW5kJyA9ICdmaXQnKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1Jlc2l6YWJsZUNvbHVtbnMgPSByZXNpemFibGVDb2x1bW5zO1xuICAgICAgICB0aGlzLl9jb2x1bW5SZXNpemVNb2RlID0gY29sdW1uUmVzaXplTW9kZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBjb2x1bW4gdG8gKHVuKWZyb3plbi5cbiAgICAgKiBAcGFyYW0gc2VsZWN0aW9uQ29sdW1uRnJvemVuIFRydWUgdG8gZnJlZXplIHNlbGVjdGlvbiBjb2x1bW4sIGZhbHNlIHRvIHVuZnJlZXplIGl0LlxuICAgICAqIEBwYXJhbSBhY3Rpb25Db2x1bW5Gcm96ZW4gVHJ1ZSB0byBmcmVlemUgYWN0aW9uIGNvbHVtbiwgZmFsc2UgdG8gdW5mcmVlemUgaXQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5Gcm96ZW4oc2VsZWN0aW9uQ29sdW1uRnJvemVuPzogYm9vbGVhbiwgYWN0aW9uQ29sdW1uRnJvemVuPzogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zZWxlY3Rpb25Db2x1bW5Gcm96ZW4gPSBzZWxlY3Rpb25Db2x1bW5Gcm96ZW47XG4gICAgICAgIHRoaXMuX2FjdGlvbkNvbHVtbkZyb3plbiA9IGFjdGlvbkNvbHVtbkZyb3plbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3dDbGFzc05hbWUocm93Q2xhc3NOYW1lPzogc3RyaW5nLCBjbGFzc05hbWVNYXBGbj86IChjbGFzc05hbWU/OiBzdHJpbmcsIGl0ZW0/OiBUYWJsZU1vZGVsKSA9PiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcm93Q2xhc3NOYW1lID0gcm93Q2xhc3NOYW1lO1xuICAgICAgICB0aGlzLl9yb3dDbGFzc05hbWVNYXBGbiA9IGNsYXNzTmFtZU1hcEZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhlYWRlckNsYXNzTmFtZShoZWFkZXJDbGFzc05hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oZWFkZXJDbGFzc05hbWUgPSBoZWFkZXJDbGFzc05hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9jYWxpemVkKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoTG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkobG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0xvY2FsaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMuX2xvY2FsaXphdGlvbkxvY2FsZVByb3BlcnR5ID0gbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm93RXhwYW5kYWJsZShwcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsIGNvbFNwYW4/OiBudW1iZXIpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcm93RXhwYW5kYWJsZSA9IHRydWU7XG4gICAgICAgIGlmIChwcm9wZXJ0eSkge1xuICAgICAgICAgICAgdGhpcy5fcm93RXhwYW5kYWJsZVByb3BlcnR5ID0gcHJvcGVydHkgYXMgc3RyaW5nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb2xTcGFuKSB7XG4gICAgICAgICAgICB0aGlzLl9yb3dFeHBhbmRhYmxlQ29sU3BhbiA9IGNvbFNwYW47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvcHlGaWVsZHNUbyhvYmo6IFRhYmxlRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIGFueT4pIHtcbiAgICAgICAgb2JqLl90aXRsZSA9IHRoaXMuX3RpdGxlO1xuICAgICAgICBvYmouX2hpZGVIZWFkZXIgPSB0aGlzLl9oaWRlSGVhZGVyO1xuICAgICAgICBvYmouX3RyYWNrUHJvcGVydHkgPSB0aGlzLl90cmFja1Byb3BlcnR5O1xuICAgICAgICBvYmouX2ZpbHRlcnMgPSB0aGlzLl9maWx0ZXJzLm1hcChmID0+IGYuY29weSgpKTtcbiAgICAgICAgb2JqLl9zb3J0cyA9IHRoaXMuX3NvcnRzLm1hcChzID0+IHMuY29weSgpKTtcbiAgICAgICAgb2JqLl9jbGFzc05hbWUgPSB0aGlzLl9jbGFzc05hbWU7XG4gICAgICAgIG9iai5fc2l6ZSA9IHRoaXMuX3NpemU7XG4gICAgICAgIG9iai5fdGFibGVGdWxsSGVpZ2h0T2Zmc2V0ID0gdGhpcy5fdGFibGVGdWxsSGVpZ2h0T2Zmc2V0O1xuICAgICAgICBvYmouX3Jvd0hlaWdodCA9IHRoaXMuX3Jvd0hlaWdodDtcbiAgICAgICAgb2JqLl9oYXNIb3ZlciA9IHRoaXMuX2hhc0hvdmVyO1xuICAgICAgICBvYmouX2hhc0dyaWRsaW5lcyA9IHRoaXMuX2hhc0dyaWRsaW5lcztcbiAgICAgICAgb2JqLl9oYXNSZXNpemFibGVDb2x1bW5zID0gdGhpcy5faGFzUmVzaXphYmxlQ29sdW1ucztcbiAgICAgICAgb2JqLl9jb2x1bW5SZXNpemVNb2RlID0gdGhpcy5fY29sdW1uUmVzaXplTW9kZTtcbiAgICAgICAgb2JqLl9hY3Rpb25Db2x1bW5Gcm96ZW4gPSB0aGlzLl9hY3Rpb25Db2x1bW5Gcm96ZW47XG4gICAgICAgIG9iai5fc2VsZWN0aW9uQ29sdW1uRnJvemVuID0gdGhpcy5fc2VsZWN0aW9uQ29sdW1uRnJvemVuO1xuICAgICAgICBvYmouX2lzTG9jYWxpemVkID0gdGhpcy5faXNMb2NhbGl6ZWQ7XG4gICAgICAgIG9iai5fbG9jYWxpemF0aW9uTG9jYWxlUHJvcGVydHkgPSB0aGlzLl9sb2NhbGl6YXRpb25Mb2NhbGVQcm9wZXJ0eTtcbiAgICAgICAgb2JqLl9wYWdpbmF0aW9uTW9kZSA9IHRoaXMuX3BhZ2luYXRpb25Nb2RlO1xuICAgICAgICBvYmouX3Jvd3NQZXJQYWdlT3B0aW9ucyA9IHRoaXMuX3Jvd3NQZXJQYWdlT3B0aW9ucztcbiAgICAgICAgb2JqLl9yb3dFeHBhbmRhYmxlID0gdGhpcy5fcm93RXhwYW5kYWJsZTtcbiAgICAgICAgb2JqLl9yb3dFeHBhbmRhYmxlQ29sU3BhbiA9IHRoaXMuX3Jvd0V4cGFuZGFibGVDb2xTcGFuO1xuICAgICAgICBvYmouX3Jvd0V4cGFuZGFibGVQcm9wZXJ0eSA9IHRoaXMuX3Jvd0V4cGFuZGFibGVQcm9wZXJ0eTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4odGhpcy5tb2RlbC5jb3B5KCkpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fY29sdW1ucyA9IHRoaXMuY29sdW1ucy5tYXAoYyA9PiBjLmNvcHkoKSk7XG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgbW9kaWZpZWQgdHlwZSBvZiBjb2x1bW5cbiAgICAgKiBETyBOT1QgVVNFIHdpdGggZW51bSAodXNlIHdpdGhDdXN0b21FbnVtVHlwZSlcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uIG5hbWVcbiAgICAgKiBAcGFyYW0gY29sdW1uVHlwZSBtb2RpZmllZCB0eXBlXG4gICAgICogQHBhcmFtIGFyZ3MgYWRkaXRpb25hbCBhdHRyaWJ1dGVzXG4gICAgICogQHBhcmFtIGNvbHVtbkRpc3BsYXlUeXBlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5Nb2RpZmllZFR5cGUocHJvcGVydHk6IGtleW9mIFRhYmxlTW9kZWwsIGNvbHVtblR5cGU/OiBDb2x1bW5UeXBlRW51bSwgY29sdW1uRGlzcGxheVR5cGU/OiBDb2x1bW5EaXNwbGF5VHlwZUVudW0sIC4uLmFyZ3M6IGFueVtdKTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhDb2x1bW5Nb2RpZmllZFR5cGVVbnNhZmUocHJvcGVydHkgYXMgc3RyaW5nLCBjb2x1bW5UeXBlLCBjb2x1bW5EaXNwbGF5VHlwZSwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5Nb2RpZmllZFR5cGVVbnNhZmUocHJvcGVydHk6IHN0cmluZywgY29sdW1uVHlwZT86IENvbHVtblR5cGVFbnVtLCBjb2x1bW5EaXNwbGF5VHlwZT86IENvbHVtbkRpc3BsYXlUeXBlRW51bSwgLi4uYXJnczogYW55W10pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLnR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgd2l0aENvbHVtbk1vZGlmaWVkVHlwZSBjYW5ub3QgYmUgZXhlY3V0ZWQgZm9yIHByb3BlcnR5ICR7cHJvcGVydHl9OiBNb2RlbCB0eXBlIGlzIG5vdCBkZWZpbmVkLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gZ2V0VGFibGVDbGFzc0F0dHJpYnV0ZURlZih0aGlzLm1vZGVsLnR5cGUpLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlID0gY29sdW1uVHlwZSA/PyBhdHRyaWJ1dGVEZWYuY29sdW1uVHlwZTtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5EaXNwbGF5VHlwZSA9IGNvbHVtbkRpc3BsYXlUeXBlID8/IGF0dHJpYnV0ZURlZi5jb2x1bW5EaXNwbGF5VHlwZTtcbiAgICAgICAgICAgIFRhYmxlRGVzY3JpcHRvckluc3QudXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURlZixcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBhdHRyaWJ1dGVEZWYubmFtZSksXG4gICAgICAgICAgICAgICAgLi4uYXJnc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgY3VzdG9tIGVudW0gdHlwZSBmb3IgY29sdW1uXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbiBuYW1lXG4gICAgICogQHBhcmFtIGVudW1EZXNjIEVudW0gZGVzY3JpcHRvci5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbk1vZGlmaWVkRW51bTxQcm9wZXJ0eSBleHRlbmRzIGtleW9mIFRhYmxlTW9kZWwsIEVudW0gZXh0ZW5kcyBOb25OdWxsYWJsZTxUYWJsZU1vZGVsW1Byb3BlcnR5XT4+KFxuICAgICAgICBwcm9wZXJ0eToga2V5b2YgVGFibGVNb2RlbCxcbiAgICAgICAgZW51bURlc2M/OiBFbnVtRGVzY3JpcHRvcjxFbnVtPlxuICAgICk6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoQ29sdW1uTW9kaWZpZWRFbnVtVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgZW51bURlc2MpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQ29sdW1uTW9kaWZpZWRFbnVtVW5zYWZlPEVudW0gPSBhbnk+KHByb3BlcnR5OiBzdHJpbmcsIGVudW1EZXNjPzogRW51bURlc2NyaXB0b3I8RW51bT4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLnR5cGUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgd2l0aENvbHVtbk1vZGlmaWVkRW51bSBjYW5ub3QgYmUgZXhlY3V0ZWQgZm9yIHByb3BlcnR5ICR7cHJvcGVydHl9OiBNb2RlbCB0eXBlIGlzIG5vdCBkZWZpbmVkLmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXR0cmlidXRlRGVmID0gZ2V0VGFibGVDbGFzc0F0dHJpYnV0ZURlZih0aGlzLm1vZGVsLnR5cGUpLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IHByb3BlcnR5KTtcblxuICAgICAgICBpZiAoYXR0cmlidXRlRGVmICE9IG51bGwpIHtcbiAgICAgICAgICAgIGF0dHJpYnV0ZURlZi5jb2x1bW5UeXBlID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICAgICAgICAgIFRhYmxlRGVzY3JpcHRvckluc3QudXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZURlZixcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSksXG4gICAgICAgICAgICAgICAgZW51bURlc2MgPz8gZW51bU1vZGVsR2VuZXJpYyhUeXBlUmVnaXN0cnkuZ2V0KCkuZmluZEVudW0oYXR0cmlidXRlRGVmLnR5cGUpIGFzIEVudW1UeXBlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIG1vZGlmaWVzIGNvbHVtbiB3aXRoIGNsYXNzIGFuZCBsb29rdXAgcHJvdmlkZXJcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uIG5hbWVcbiAgICAgKiBAcGFyYW0gbG9va3VwUHJvdmlkZXIgbG9va3VwUHJvdmlkZXIgZm9yIGNsYXNzXG4gICAgICogQHBhcmFtIG9wdGlvbnNMYWJlbFByb3BlcnR5XG4gICAgICogQHBhcmFtIGZpbHRlclByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIHdpdGhNb2RpZmllZExvb2t1cDxDb2x1bW5Mb29rdXBNb2RlbD4oXG4gICAgICAgIHByb3BlcnR5OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICBsb29rdXBQcm92aWRlcj86IElMb29rdXBEYXRhUHJvdmlkZXI8Q29sdW1uTG9va3VwTW9kZWw+LFxuICAgICAgICBvcHRpb25zTGFiZWxQcm9wZXJ0eT86IHN0cmluZyxcbiAgICAgICAgZmlsdGVyUHJvcGVydHk/OiBzdHJpbmdcbiAgICApOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aENvbHVtbk1vZGlmaWVkTG9va3VwVW5zYWZlKHByb3BlcnR5IGFzIHN0cmluZywgbG9va3VwUHJvdmlkZXIsIG9wdGlvbnNMYWJlbFByb3BlcnR5LCBmaWx0ZXJQcm9wZXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb2x1bW5Nb2RpZmllZExvb2t1cFVuc2FmZTxDb2x1bW5Mb29rdXBNb2RlbD4oXG4gICAgICAgIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgICAgIGxvb2t1cFByb3ZpZGVyPzogSUxvb2t1cERhdGFQcm92aWRlcjxDb2x1bW5Mb29rdXBNb2RlbD4sXG4gICAgICAgIG9wdGlvbnNMYWJlbFByb3BlcnR5Pzogc3RyaW5nLFxuICAgICAgICBmaWx0ZXJQcm9wZXJ0eT86IHN0cmluZ1xuICAgICk6IHRoaXMge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBwcm9wZXJ0eSk7XG4gICAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuYWRkRmlsdGVyTG9va3VwVW5zYWZlKGNvbHVtbi5wcm9wZXJ0eSwgbG9va3VwUHJvdmlkZXIsIGZpbHRlclByb3BlcnR5KTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zTGFiZWxQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGZpbHRlci53aXRoT3B0aW9uc0xhYmVsUHJvcGVydHlVbnNhZmUob3B0aW9uc0xhYmVsUHJvcGVydHkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdlbmVyYXRlcyBjb2x1bW4gYmFzZWQgb24gYXR0cmlidXRlc1xuICAgICAqIEBwYXJhbSBkZXNjIFRhYmxlIGRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gYXR0cmlidXRlIGF0dHJpYnV0ZSBtYXBcbiAgICAgKiBAcGFyYW0gY29sdW1uIGlmIHByb3ZpZGVkLCByZXBsYWNlZCBieSBuZXcsIG90aGVyd2lzZSBuZXcgaXMgY3JlYXRlZFxuICAgICAqIEBwYXJhbSBhcmdzIGFkZGl0aW9uYWwgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdGF0aWMgdXBzZXJ0Q29sdW1uRnJvbUF0dHJpYnV0ZURlZjxDb2x1bW5Nb2RlbCwgVGFibGVNb2RlbD4oXG4gICAgICAgIGRlc2M6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgYW55LCBhbnk+LFxuICAgICAgICBhdHRyaWJ1dGU6IFRhYmxlQ2xhc3NBdHRyaWJ1dGVEZWYsXG4gICAgICAgIGNvbHVtbj86IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWw+LFxuICAgICAgICAuLi5hcmdzOiBhbnlbXVxuICAgICk6IENvbHVtbkRlc2NyaXB0b3I8Q29sdW1uTW9kZWwsIFRhYmxlTW9kZWw+IHtcbiAgICAgICAgaWYgKGNvbHVtbiA9PSBudWxsKSB7XG4gICAgICAgICAgICBjb2x1bW4gPSBkZXNjLmFkZENvbHVtblVuc2FmZShhdHRyaWJ1dGUubmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlLmNvbHVtblR5cGUgPT09IENvbHVtblR5cGVFbnVtLkVudW0gJiYgYXJncy5sZW5ndGggPT09IDAgJiYgYXR0cmlidXRlLmVudW1UeXBlKSB7XG4gICAgICAgICAgICBhcmdzID0gW2VudW1Nb2RlbEdlbmVyaWMoYXR0cmlidXRlLmVudW1UeXBlKV07XG4gICAgICAgIH1cblxuICAgICAgICBjb2x1bW4gPSBjb2x1bW4uYXNUeXBlKGF0dHJpYnV0ZS5jb2x1bW5UeXBlLCBhdHRyaWJ1dGUuY29sdW1uRGlzcGxheVR5cGUsIC4uLmFyZ3MpO1xuICAgICAgICBpZiAoYXR0cmlidXRlLmNsYXNzVHlwZSkge1xuICAgICAgICAgICAgY29uc3QgdGl0bGVQcm9wZXJ0eSA9IGZpbmRDbGFzc1RpdGxlQXR0cmlidXRlKGF0dHJpYnV0ZS5jbGFzc1R5cGUpID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICh0aXRsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhHZXR0ZXIodmFsdWUgPT4gdmFsdWU/Llt0aXRsZVByb3BlcnR5IGFzIGtleW9mIG9iamVjdF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uLndpdGhTb3J0VW5zYWZlKCkud2l0aEZpbHRlclVuc2FmZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZURlc2NyaXB0b3IgZXh0ZW5kcyBUYWJsZURlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoTW9kZWxEZXNjcmlwdG9yLmNyZWF0ZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGNyZWF0ZTxUYWJsZU1vZGVsLCBTb3J0cyA9IGtleW9mIFRhYmxlTW9kZWwsIEZpbHRlcnMgPSBrZXlvZiBUYWJsZU1vZGVsPihcbiAgICAgICAgaWRQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsXG4gICAgICAgIHRpdGxlUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICBpMThuQmFzZUtleT86IHN0cmluZyB8IENsYXNzVHlwZTx1bmtub3duPlxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihNb2RlbERlc2NyaXB0b3IuY3JlYXRlPFRhYmxlTW9kZWw+KGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIGkxOG5CYXNlS2V5KSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3M8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4oXG4gICAgICAgIHR5cGU6IENsYXNzVHlwZTxUYWJsZU1vZGVsPixcbiAgICAgICAgaWRQcm9wZXJ0eT86IGtleW9mIFRhYmxlTW9kZWwsXG4gICAgICAgIHRpdGxlUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICBpMThuQmFzZUtleT86IENsYXNzVHlwZTx1bmtub3duPiB8IHN0cmluZyxcbiAgICAgICAgaXNBdXRvR2VuZXJhdGVkID0gZmFsc2VcbiAgICApOiBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPiB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxUYWJsZU1vZGVsLCBTb3J0cywgRmlsdGVycz4oTW9kZWxEZXNjcmlwdG9yLmZyb21DbGFzcyh0eXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCBpMThuQmFzZUtleSksIGlzQXV0b0dlbmVyYXRlZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tTW9kZWw8VGFibGVNb2RlbCwgU29ydHMgPSBrZXlvZiBUYWJsZU1vZGVsLCBGaWx0ZXJzID0ga2V5b2YgVGFibGVNb2RlbD4obW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUYWJsZU1vZGVsPik6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbCwgU29ydHMsIEZpbHRlcnM+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZURlc2NyaXB0b3JJbnN0PFRhYmxlTW9kZWwsIFNvcnRzLCBGaWx0ZXJzPihtb2RlbCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGRlc2NyaXB0b3IgYmFzZWQgb24gdHlwZSBhdHRyaWJ1dGUgZGVmaW5pdGlvblxuICAgICAqIEBwYXJhbSB0eXBlIGNsYXNzIHR5cGVcbiAgICAgKiBAcGFyYW0gaWRQcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0aXRsZVByb3BlcnR5XG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tQ2xhc3NXaXRoQXV0b0F0dHJzRGVmPFRhYmxlTW9kZWw+KFxuICAgICAgICB0eXBlOiBDbGFzc1R5cGU8VGFibGVNb2RlbD4sXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbFxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbD4ge1xuICAgICAgICByZXR1cm4gVGFibGVEZXNjcmlwdG9yLmZyb21DbGFzc1dpdGhDdXN0b21BdHRyc0RlZih0eXBlLCBnZXRUYWJsZUNsYXNzQXR0cmlidXRlRGVmKHR5cGUpLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZW5lcmF0ZXMgZGVzY3JpcHRvciBiYXNlIG9uIGdpdmVuIGF0dHJpYnV0ZSBkZWZpbml0aW9uXG4gICAgICogQHBhcmFtIHR5cGUgY2xhc3MgdHlwZVxuICAgICAqIEBwYXJhbSBhdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgZnJvbSB3aGljaCBkZXNjcmlwdG9yIGlzIGdlbmVyYXRlZFxuICAgICAqIEBwYXJhbSBpZFByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlUHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGZyb21DbGFzc1dpdGhDdXN0b21BdHRyc0RlZjxUYWJsZU1vZGVsPihcbiAgICAgICAgdHlwZTogQ2xhc3NUeXBlPFRhYmxlTW9kZWw+LFxuICAgICAgICBhdHRyaWJ1dGVzOiBUYWJsZUNsYXNzQXR0cmlidXRlRGVmW10sXG4gICAgICAgIGlkUHJvcGVydHk/OiBrZXlvZiBUYWJsZU1vZGVsLFxuICAgICAgICB0aXRsZVByb3BlcnR5Pzoga2V5b2YgVGFibGVNb2RlbFxuICAgICk6IFRhYmxlRGVzY3JpcHRvckluc3Q8VGFibGVNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gVGFibGVEZXNjcmlwdG9yLmZyb21DbGFzcyh0eXBlLCBpZFByb3BlcnR5LCB0aXRsZVByb3BlcnR5LCB1bmRlZmluZWQsIHRydWUpO1xuICAgICAgICBhdHRyaWJ1dGVzLmZpbHRlcihhdHRyID0+ICFhdHRyLnR5cGUuaW5jbHVkZXMoJ1NldCcpICYmICFhdHRyLnR5cGUuaW5jbHVkZXMoJ0FycmF5JykpLmZvckVhY2goYXR0ciA9PiBUYWJsZURlc2NyaXB0b3JJbnN0LnVwc2VydENvbHVtbkZyb21BdHRyaWJ1dGVEZWYoZGVzY3JpcHRvciwgYXR0cikpO1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCBleHRlbmRzIFRhYmxlRGVzY3JpcHRvckluc3Q8YW55PiB7XG4gICAgcHJpdmF0ZSBfZXhjbHVkZWRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSBfZmlsdGVyQ29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgIHByaXZhdGUgX3NvcnRDb2x1bW5zOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgcHJpdmF0ZSBfc29ydENvbHVtbk1vZGUgPSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERTtcbiAgICBwcml2YXRlIF9maWx0ZXJDb2x1bW5Nb2RlID0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLkVYQ0xVREU7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2NvbHVtbnM6IENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yW10gPSBbXTtcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4pIHtcbiAgICAgICAgc3VwZXIobW9kZWwpO1xuXG4gICAgICAgIGlmIChtb2RlbC50aXRsZVByb3BlcnR5KSB7XG4gICAgICAgICAgICB0aGlzLndpdGhUaXRsZShtb2RlbC50aXRsZVByb3BlcnR5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgY29sdW1ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZGVmaW5lcyBleGNsdWRlZCBjb2x1bW5zIHdoZW4gZ2VuZXJhdGluZyBkZXNjcmlwdG9yXG4gICAgICogQHBhcmFtIGV4Y2x1ZGVkQ29sdW1uIG5hbWVzIG9mIGV4Y2x1ZGVkIGNvbHVtbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNFeGNsdWRlZChleGNsdWRlZENvbHVtbjogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZXhjbHVkZWRDb2x1bW5zID0gZXhjbHVkZWRDb2x1bW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGRlZmluZXMgY29sdW1uIHByb3BlcnRpZXMgb24gd2hpY2ggc29ydCBpcyBkZWZpbmVkIG9yIG5vdCBkZXBlbmRpbmcgb24gc29ydENvbHVtbk1vZGVcbiAgICAgKiBAcGFyYW0gc29ydE9uQ29sdW1ucyBjb2x1bW4gbmFtZXNcbiAgICAgKiBAcGFyYW0gc29ydENvbHVtbk1vZGUgSU5DTFVERV9PTkxZIChkZWZhdWx0KSBvbmx5IGdpdmVuIGNvbHVtbnMgd2lsbCBoYXZlIHNvcnQsIEVYQ0xVREUgZ2l2ZW4gY29sdW1ucyB3aWxsIE5PVCBoYXZlIHNvcnRcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNTb3J0KHNvcnRPbkNvbHVtbnM6IHN0cmluZ1tdLCBzb3J0Q29sdW1uTW9kZSA9IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5JTkNMVURFX09OTFkpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc29ydENvbHVtbk1vZGUgPSBzb3J0Q29sdW1uTW9kZTtcbiAgICAgICAgdGhpcy5fc29ydENvbHVtbnMgPSBzb3J0T25Db2x1bW5zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBkZWZpbmVzIGNvbHVtbiBwcm9wZXJ0aWVzIG9uIHdoaWNoIGZpbHRlciBpcyBkZWZpbmVkIG9yIG5vdCBkZXBlbmRpbmcgb24gZmlsdGVyQ29sdW1uTW9kZVxuICAgICAqIEBwYXJhbSBmaWx0ZXJPbkNvbHVtbiBjb2x1bW4gbmFtZXNcbiAgICAgKiBAcGFyYW0gZmlsdGVyQ29sdW1uTW9kZSBJTkNMVURFX09OTFkgKGRlZmF1bHQpIG9ubHkgZ2l2ZW4gY29sdW1ucyB3aWxsIGhhdmUgZmlsdGVyLCBFWENMVURFIGdpdmVuIGNvbHVtbnMgd2lsbCBOT1QgaGF2ZSBmaWx0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aENvbHVtbnNGaWx0ZXIoZmlsdGVyT25Db2x1bW46IHN0cmluZ1tdLCBmaWx0ZXJDb2x1bW5Nb2RlID0gVGFibGVEeW5hbWljQ29sdW1uc01vZGVFbnVtLklOQ0xVREVfT05MWSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9maWx0ZXJDb2x1bW5Nb2RlID0gZmlsdGVyQ29sdW1uTW9kZTtcbiAgICAgICAgdGhpcy5fZmlsdGVyQ29sdW1ucyA9IGZpbHRlck9uQ29sdW1uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGdpdmVuIHR5cGUgdG8gY29sdW1uIHdpdGggZ2l2ZW4gcHJvcGVydHkgYW5kIHJldHVybnMgdGhpcyB0YWJsZVxuICAgICAqIEBwYXJhbSBwcm9wZXJ0eSBjb2x1bW4ncyBwcm9wZXJ0eVxuICAgICAqIEBwYXJhbSB0eXBlIGN1c3RvbSB0eXBlIGZvciBjb2x1bW5cbiAgICAgKiBAcGFyYW0gZGlzcGxheVR5cGUgY3VzdG9tIGNvbHVtbiB2YWx1ZSBkaXNwbGF5IHR5cGVcbiAgICAgKiBAcGFyYW0gYXJncyBhZGRpdGlvbiBhcmd1bWVudHMgZm9yIGNvbHVtblxuICAgICAqL1xuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoQ29sdW1uTW9kaWZpZWRUeXBlKHByb3BlcnR5OiBzdHJpbmcsIHR5cGU6IENvbHVtblR5cGVFbnVtLCBkaXNwbGF5VHlwZT86IENvbHVtbkRpc3BsYXlUeXBlRW51bSwgLi4uYXJnczogYW55W10pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5fY29sdW1ucy5maW5kKGNvbCA9PiBwcm9wZXJ0eSA9PT0gY29sLnByb3BlcnR5KSA/PyB0aGlzLmFkZENvbHVtbihwcm9wZXJ0eSkud2l0aFRpdGxlKHByb3BlcnR5KTtcbiAgICAgICAgaWYgKGNvbHVtbikge1xuICAgICAgICAgICAgY29sdW1uLmFzVHlwZSh0eXBlLCBkaXNwbGF5VHlwZSwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogc2V0cyB0aXRsZSB0byBjb2x1bW4gd2l0aCBnaXZlbiBwcm9wZXJ0eSBhbmQgcmV0dXJucyB0aGlzIHRhYmxlXG4gICAgICogQHBhcmFtIHByb3BlcnR5IGNvbHVtbidzIHByb3BlcnR5XG4gICAgICogQHBhcmFtIHRpdGxlIGNvbHVtbidzIHRpdGxlXG4gICAgICovXG4gICAgcHVibGljIHdpdGhDb2x1bW5UaXRsZShwcm9wZXJ0eTogc3RyaW5nLCB0aXRsZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gcHJvcGVydHkgPT09IGNvbC5wcm9wZXJ0eSkgPz8gdGhpcy5hZGRDb2x1bW4ocHJvcGVydHkpO1xuICAgICAgICBjb2x1bW4ud2l0aFRpdGxlKHRpdGxlLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogZ2VuZXJhdGVzIGNvbHVtbnMgZGVmaW5lZCBvbiB0YWJsZSBiYXNlZCBvbiBkYXRhIGZldGNoZWQgZnJvbSBhcGlcbiAgICAgKiBAcGFyYW0gZGF0YSBkYXRhIGZyb20gYXBpXG4gICAgICovXG4gICAgcHVibGljIHRvVGFibGVEZXNjcmlwdG9yRnJvbURhdGEoZGF0YTogRGF0YUxpc3RSZXN1bHQpOiBUYWJsZURlc2NyaXB0b3JJbnN0PGFueT4ge1xuICAgICAgICBjb25zdCB0YWJsZURlc2NyaXB0b3IgPSB0aGlzLnRvVGFibGVEZXNjcmlwdG9yKCk7XG5cbiAgICAgICAgaWYgKGRhdGEuZGF0YSA9PSBudWxsIHx8IGRhdGEuZGF0YS5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGVzY3JpcHRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9iamVjdE1vZGVsID0gZGF0YS5kYXRhWzBdO1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZmxhdHRlbk9iamVjdEtleXMob2JqZWN0TW9kZWwpXG4gICAgICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4gIXRoaXMuX2V4Y2x1ZGVkQ29sdW1ucy5pbmNsdWRlcyhrZXkpKVxuICAgICAgICAgICAgLmZpbHRlcigoWywgdmFsdWVdKSA9PiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpOyAvL2V4Y2x1ZGUgYXJyYXlzIGFuZCBzZXRzXG5cbiAgICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgZW50cmllcykge1xuICAgICAgICAgICAgY29uc3QgbWV0YUNvbHVtbiA9IHRoaXMuX2NvbHVtbnMuZmluZChjb2wgPT4gY29sLnByb3BlcnR5ID09PSBrZXkpO1xuICAgICAgICAgICAgbGV0IGNvbHVtbjogQ29sdW1uRGVzY3JpcHRvcjxhbnksIGFueT47XG4gICAgICAgICAgICBpZiAobWV0YUNvbHVtbikge1xuICAgICAgICAgICAgICAgIGlmICghbWV0YUNvbHVtbi52aXNpYmlsaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb2x1bW4gPSBtZXRhQ29sdW1uLnRvQ29sdW1uRGVzY3JpcHRvcih0YWJsZURlc2NyaXB0b3IpO1xuICAgICAgICAgICAgICAgIHRhYmxlRGVzY3JpcHRvci53aXRoQ29sdW1uKGNvbHVtbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbHVtbiA9IHRhYmxlRGVzY3JpcHRvci5hZGRDb2x1bW4oa2V5KS53aXRoVGl0bGUoa2V5KTtcbiAgICAgICAgICAgICAgICBjb2x1bW5Ub0RhdGVOdW1iZXJPckJvb2xlYW4oY29sdW1uLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGVsLmkxOG5CYXNlS2V5ICYmICFjb2x1bW4ucHJvcGVydHkuaW5jbHVkZXMoJ3JldicpKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhUaXRsZShbdGhpcy5tb2RlbC5pMThuQmFzZUtleSwgJ3Byb3BlcnRpZXMnLCBjb2x1bW4ucHJvcGVydHldLmpvaW4oJy4nKS5yZXBsYWNlKCdzdGF0ZS4nLCAnJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T2ZTb3J0Q29sdW1ucyA9IHRoaXMuX3NvcnRDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbi5wcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHRoaXMuX3NvcnRDb2x1bW5Nb2RlID09PSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERSAmJiAhZWxlbWVudE9mU29ydENvbHVtbnMpIHx8XG4gICAgICAgICAgICAgICAgKHRoaXMuX3NvcnRDb2x1bW5Nb2RlID09PSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uSU5DTFVERV9PTkxZICYmIGVsZW1lbnRPZlNvcnRDb2x1bW5zKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uLndpdGhTb3J0VW5zYWZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRPZkZpbHRlckNvbHVtbnMgPSB0aGlzLl9maWx0ZXJDb2x1bW5zLmluY2x1ZGVzKGNvbHVtbi5wcm9wZXJ0eSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5fZmlsdGVyQ29sdW1ucy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAgICAgKCh0aGlzLl9maWx0ZXJDb2x1bW5Nb2RlID09PSBUYWJsZUR5bmFtaWNDb2x1bW5zTW9kZUVudW0uRVhDTFVERSAmJiAhZWxlbWVudE9mRmlsdGVyQ29sdW1ucykgfHxcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuX2ZpbHRlckNvbHVtbk1vZGUgPT09IFRhYmxlRHluYW1pY0NvbHVtbnNNb2RlRW51bS5JTkNMVURFX09OTFkgJiYgZWxlbWVudE9mRmlsdGVyQ29sdW1ucykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ud2l0aEZpbHRlclVuc2FmZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhYmxlRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBhZGRzIENvbHVtbkR5bmFtaWNEZXNjcmlwdG9yIHRvIHRoaXMgdGFibGVcbiAgICAgKiBAcGFyYW0gcHJvcGVydHkgY29sdW1uJ3MgcHJvcGVydHlcbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgYWRkQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBhbnkpOiBDb2x1bW5EeW5hbWljRGVzY3JpcHRvciB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IG5ldyBDb2x1bW5EeW5hbWljRGVzY3JpcHRvcih0aGlzLCBwcm9wZXJ0eSBhcyBzdHJpbmcpO1xuICAgICAgICB0aGlzLl9jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICAgICAgcmV0dXJuIGNvbHVtbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgcmVtb3ZlQ29sdW1uKHByb3BlcnR5OiBrZXlvZiBhbnkpOiB0aGlzIHtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zLmZpbmQoY29sID0+IGNvbC5wcm9wZXJ0eSA9PT0gcHJvcGVydHkpID8/IHRoaXMuYWRkQ29sdW1uKHByb3BlcnR5KTtcbiAgICAgICAgY29sdW1uLndpdGhWaXNpYmlsaXR5KGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBkZWVwIGNvcHkgb2YgdGFibGUgZHluYW1pYyBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIG92ZXJyaWRlIGNvcHkoKTogVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3Qge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0KHRoaXMubW9kZWwuY29weSgpKTtcbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbHVtbnMgPSB0aGlzLmNvbHVtbnMubWFwKGMgPT4gYy5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl9leGNsdWRlZENvbHVtbnMgPSBbLi4udGhpcy5fZXhjbHVkZWRDb2x1bW5zXTtcbiAgICAgICAgZGVzY3JpcHRvci5fZmlsdGVyQ29sdW1ucyA9IFsuLi50aGlzLl9maWx0ZXJDb2x1bW5zXTtcbiAgICAgICAgZGVzY3JpcHRvci5fc29ydENvbHVtbnMgPSBbLi4udGhpcy5fc29ydENvbHVtbnNdO1xuICAgICAgICBkZXNjcmlwdG9yLl9maWx0ZXJDb2x1bW5Nb2RlID0gdGhpcy5fZmlsdGVyQ29sdW1uTW9kZTtcbiAgICAgICAgZGVzY3JpcHRvci5fc29ydENvbHVtbk1vZGUgPSB0aGlzLl9zb3J0Q29sdW1uTW9kZTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIHRvVGFibGVEZXNjcmlwdG9yKCk6IFRhYmxlRGVzY3JpcHRvckluc3Q8YW55PiB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgVGFibGVEZXNjcmlwdG9ySW5zdDxhbnk+KHRoaXMubW9kZWwpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFibGVEeW5hbWljRGVzY3JpcHRvciBleHRlbmRzIFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0IHtcbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKE1vZGVsRGVzY3JpcHRvci5jcmVhdGUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGUoaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgaTE4bkJhc2VLZXk/OiBzdHJpbmcgfCBDbGFzc1R5cGU8YW55Pik6IFRhYmxlRHluYW1pY0Rlc2NyaXB0b3JJbnN0IHtcbiAgICAgICAgcmV0dXJuIG5ldyBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdChNb2RlbERlc2NyaXB0b3IuY3JlYXRlPGFueT4oaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2VLZXkpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Nb2RlbChtb2RlbDogTW9kZWxEZXNjcmlwdG9yPGFueT4pOiBUYWJsZUR5bmFtaWNEZXNjcmlwdG9ySW5zdCB7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEeW5hbWljRGVzY3JpcHRvckluc3QobW9kZWwpO1xuICAgIH1cbn1cbiJdfQ==