@coolon/angular-ui-powerups 12.4.9 → 13.0.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 (317) hide show
  1. package/assets/activities/activities.scss +1 -1
  2. package/assets/cards.scss +1 -1
  3. package/assets/form.scss +1 -1
  4. package/assets/interaction/editor/inline-string-editor.scss +1 -1
  5. package/assets/interaction.scss +1 -1
  6. package/assets/mixins.scss +2 -2
  7. package/assets/pills.scss +1 -1
  8. package/assets/styles.scss +1 -1
  9. package/{esm2015/lib/angular-ui-powerups.module.js → esm2020/lib/angular-ui-powerups.module.mjs} +5 -5
  10. package/esm2020/lib/components/busy-overlay/busy-overlay.component.mjs +32 -0
  11. package/{esm2015/lib/components/cards/abstract-card-container.component.js → esm2020/lib/components/cards/abstract-card-container.component.mjs} +4 -4
  12. package/esm2020/lib/components/cards/card-container/card-container.component.mjs +129 -0
  13. package/esm2020/lib/components/cards/card-stack/card-stack.component.mjs +81 -0
  14. package/esm2020/lib/components/commands/command/command.component.mjs +96 -0
  15. package/{esm2015/lib/components/commands/command-face/command-face.component.js → esm2020/lib/components/commands/command-face/command-face.component.mjs} +5 -10
  16. package/esm2020/lib/components/commands/command-face.mjs +112 -0
  17. package/{esm2015/lib/components/commands/flex.component.js → esm2020/lib/components/commands/flex.component.mjs} +4 -4
  18. package/esm2020/lib/components/commands/group/popup-menu/abstract-popup-menu.component.mjs +84 -0
  19. package/esm2020/lib/components/commands/group/popup-menu/more-menu.component.mjs +57 -0
  20. package/esm2020/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.mjs +101 -0
  21. package/esm2020/lib/components/commands/group/popup-menu/popup-menu.component.mjs +53 -0
  22. package/esm2020/lib/components/commands/group/tool-bar/tool-bar.component.mjs +31 -0
  23. package/{esm2015/lib/components/commands/separator.component.js → esm2020/lib/components/commands/separator.component.mjs} +5 -5
  24. package/{esm2015/lib/components/components.module.js → esm2020/lib/components/components.module.mjs} +6 -6
  25. package/{esm2015/lib/components/disposable-component.js → esm2020/lib/components/disposable-component.mjs} +4 -4
  26. package/{esm2015/lib/components/empty-state/empty-state.component.js → esm2020/lib/components/empty-state/empty-state.component.mjs} +6 -10
  27. package/{esm2015/lib/components/focus-container/focus-container.component.js → esm2020/lib/components/focus-container/focus-container.component.mjs} +6 -11
  28. package/{esm2015/lib/components/focusable.component.js → esm2020/lib/components/focusable.component.mjs} +6 -8
  29. package/{esm2015/lib/components/forms/abstract-input.component.js → esm2020/lib/components/forms/abstract-input.component.mjs} +4 -4
  30. package/{esm2015/lib/components/forms/abstract-list-input.component.js → esm2020/lib/components/forms/abstract-list-input.component.mjs} +4 -4
  31. package/{esm2015/lib/components/forms/abstract-value-input.component.js → esm2020/lib/components/forms/abstract-value-input.component.mjs} +4 -4
  32. package/esm2020/lib/components/forms/autocomplete-input/autocomplete-input.component.mjs +72 -0
  33. package/esm2020/lib/components/forms/checkbox-input/checkbox-input.component.mjs +29 -0
  34. package/esm2020/lib/components/forms/multiple-select-input/multiple-select-input.component.mjs +52 -0
  35. package/esm2020/lib/components/forms/number-input/number-input.component.mjs +33 -0
  36. package/esm2020/lib/components/forms/password-input/password-input.component.mjs +24 -0
  37. package/esm2020/lib/components/forms/select-input/select-input.component.mjs +57 -0
  38. package/esm2020/lib/components/forms/string-input/string-input.component.mjs +48 -0
  39. package/esm2020/lib/components/forms/text-input/text-input.component.mjs +30 -0
  40. package/esm2020/lib/components/icon/icon.component.mjs +52 -0
  41. package/esm2020/lib/components/labelled-value/labelled-value.component.mjs +20 -0
  42. package/esm2020/lib/components/loading-container/loading-container.component.mjs +50 -0
  43. package/esm2020/lib/components/noop/noop.component.mjs +13 -0
  44. package/{esm2015/lib/components/resize-aware.component.js → esm2020/lib/components/resize-aware.component.mjs} +4 -4
  45. package/esm2020/lib/components/scroll-container/scroll-container.component.mjs +15 -0
  46. package/esm2020/lib/components/section-header/section-header.component.mjs +36 -0
  47. package/{esm2015/lib/components/switch-case/switch-case.component.js → esm2020/lib/components/switch-case/switch-case.component.mjs} +11 -15
  48. package/esm2020/lib/components/tables/abstract-table-model.mjs +185 -0
  49. package/esm2020/lib/components/tables/abstract-table.component.mjs +168 -0
  50. package/{esm2015/lib/components/tables/table/cell-portal-ref.js → esm2020/lib/components/tables/table/cell-portal-ref.mjs} +2 -2
  51. package/esm2020/lib/components/tables/table/column-model.mjs +392 -0
  52. package/esm2020/lib/components/tables/table/column-template/column-template.directive.mjs +35 -0
  53. package/esm2020/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.mjs +22 -0
  54. package/esm2020/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.mjs +15 -0
  55. package/esm2020/lib/components/tables/table/edit-row-controls/edit-row-controls.component.mjs +55 -0
  56. package/esm2020/lib/components/tables/table/paginator/paginator.component.mjs +40 -0
  57. package/esm2020/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.mjs +26 -0
  58. package/esm2020/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.mjs +31 -0
  59. package/esm2020/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.mjs +93 -0
  60. package/esm2020/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.mjs +32 -0
  61. package/{esm2015/lib/components/tables/table/table-row-menu/table-row-menu.component.js → esm2020/lib/components/tables/table/table-row-menu/table-row-menu.component.mjs} +5 -5
  62. package/esm2020/lib/components/tables/table/table.component.mjs +95 -0
  63. package/esm2020/lib/components/tables/tree-table/decorated-tree-node.mjs +171 -0
  64. package/esm2020/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.mjs +72 -0
  65. package/esm2020/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.mjs +91 -0
  66. package/esm2020/lib/components/tables/tree-table/tree-table-component.mjs +95 -0
  67. package/{esm2015/lib/components/text/markdown/markdown.component.js → esm2020/lib/components/text/markdown/markdown.component.mjs} +5 -9
  68. package/{esm2015/lib/components/vertical-focus-container/vertical-focus-container.component.js → esm2020/lib/components/vertical-focus-container/vertical-focus-container.component.mjs} +6 -11
  69. package/{esm2015/lib/directives/command.directive.js → esm2020/lib/directives/command.directive.mjs} +4 -4
  70. package/{esm2015/lib/directives/directives.module.js → esm2020/lib/directives/directives.module.mjs} +5 -5
  71. package/{esm2015/lib/directives/focus-binding-factory.js → esm2020/lib/directives/focus-binding-factory.mjs} +4 -4
  72. package/{esm2015/lib/directives/focus-binding.directive.js → esm2020/lib/directives/focus-binding.directive.mjs} +4 -4
  73. package/{esm2015/lib/directives/highlight-text-model.directive.js → esm2020/lib/directives/highlight-text-model.directive.mjs} +4 -4
  74. package/{esm2015/lib/directives/highlight.pipe.js → esm2020/lib/directives/highlight.pipe.mjs} +6 -7
  75. package/esm2020/lib/interaction/activity.mjs +87 -0
  76. package/{esm2015/lib/interaction/components/abstract-confirm-dialog.component.js → esm2020/lib/interaction/components/abstract-confirm-dialog.component.mjs} +4 -4
  77. package/{esm2015/lib/interaction/components/abstract-dialog.component.js → esm2020/lib/interaction/components/abstract-dialog.component.mjs} +4 -4
  78. package/esm2020/lib/interaction/components/activity-actions/activity-actions.component.mjs +109 -0
  79. package/esm2020/lib/interaction/components/activity-body/activity-body.component.mjs +23 -0
  80. package/esm2020/lib/interaction/components/activity-container/activity-container.component.mjs +205 -0
  81. package/{esm2015/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.js → esm2020/lib/interaction/components/activity-container/activity-outlet/activity-outlet.component.mjs} +5 -9
  82. package/esm2020/lib/interaction/components/activity-title/activity-title.component.mjs +41 -0
  83. package/{esm2015/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.js → esm2020/lib/interaction/components/activity-triggers/abstract-activity-trigger.component.mjs} +5 -6
  84. package/esm2020/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.mjs +24 -0
  85. package/esm2020/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.mjs +22 -0
  86. package/esm2020/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.mjs +30 -0
  87. package/esm2020/lib/interaction/components/add-card-activity/add-card-activity.component.mjs +91 -0
  88. package/esm2020/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.mjs +73 -0
  89. package/esm2020/lib/interaction/components/alert-dialog/alert-dialog.component.mjs +30 -0
  90. package/esm2020/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.mjs +30 -0
  91. package/esm2020/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.mjs +34 -0
  92. package/esm2020/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.mjs +29 -0
  93. package/esm2020/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.mjs +173 -0
  94. package/esm2020/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.mjs +91 -0
  95. package/esm2020/lib/interaction/components/input-activities/input-activity.mjs +103 -0
  96. package/{esm2015/lib/interaction/components/input-activities/select-input-activity.js → esm2020/lib/interaction/components/input-activities/select-input-activity.mjs} +6 -8
  97. package/{esm2015/lib/interaction/components/input-activities/string-input-activity.js → esm2020/lib/interaction/components/input-activities/string-input-activity.mjs} +4 -4
  98. package/{esm2015/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.js → esm2020/lib/interaction/components/popup-interaction-context/popup-interaction-context.component.mjs} +5 -9
  99. package/{esm2015/lib/interaction/directives/interaction-context-trigger-for.directive.js → esm2020/lib/interaction/directives/interaction-context-trigger-for.directive.mjs} +4 -4
  100. package/{esm2015/lib/interaction/interaction.module.js → esm2020/lib/interaction/interaction.module.mjs} +5 -11
  101. package/{esm2015/lib/interaction/services/interaction.service.js → esm2020/lib/interaction/services/interaction.service.mjs} +4 -4
  102. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.mjs +47 -0
  103. package/esm2020/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.mjs +61 -0
  104. package/{esm2015/lib/place/components/abstract-place-navigation.component.js → esm2020/lib/place/components/abstract-place-navigation.component.mjs} +4 -4
  105. package/esm2020/lib/place/components/list-place-nav/list-place-nav.component.mjs +23 -0
  106. package/esm2020/lib/place/components/not-authorised-notice/not-authorised-notice.component.mjs +13 -0
  107. package/esm2020/lib/place/components/place-outlet/place-outlet.component.mjs +256 -0
  108. package/esm2020/lib/place/components/side-place-navigation/side-place-navigation.component.mjs +93 -0
  109. package/esm2020/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.mjs +22 -0
  110. package/esm2020/lib/place/guards/noop-auth-guard.service.mjs +18 -0
  111. package/esm2020/lib/place/guards/place.guard.mjs +109 -0
  112. package/esm2020/lib/place/navigation/place-component-deactivation-handler.mjs +83 -0
  113. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.mjs +43 -0
  114. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.mjs +152 -0
  115. package/esm2020/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.mjs +62 -0
  116. package/esm2020/lib/place/navigation/session/navigation-session.mjs +157 -0
  117. package/esm2020/lib/place/place-component.mjs +198 -0
  118. package/esm2020/lib/place/place-history.mjs +138 -0
  119. package/esm2020/lib/place/place-router.mjs +331 -0
  120. package/esm2020/lib/place/place.decorator.mjs +18 -0
  121. package/{esm2015/lib/place/place.module.js → esm2020/lib/place/place.module.mjs} +5 -6
  122. package/esm2020/lib/place/route/parameter-definition.mjs +123 -0
  123. package/esm2020/lib/place/route/visit-sanitiser.mjs +41 -0
  124. package/{esm2015/lib/place/url-service.js → esm2020/lib/place/url-service.mjs} +4 -4
  125. package/esm2020/lib/place/visit.mjs +69 -0
  126. package/{esm2015/lib/services/markdown/markdown.service.js → esm2020/lib/services/markdown/markdown.service.mjs} +5 -5
  127. package/esm2020/lib/services/markdown/pill-plugin.mjs +37 -0
  128. package/esm2020/lib/services/visibility-service.mjs +79 -0
  129. package/fesm2015/{coolon-angular-ui-powerups.js → coolon-angular-ui-powerups.mjs} +1220 -1430
  130. package/fesm2015/coolon-angular-ui-powerups.mjs.map +1 -0
  131. package/fesm2020/coolon-angular-ui-powerups.mjs +9895 -0
  132. package/fesm2020/coolon-angular-ui-powerups.mjs.map +1 -0
  133. package/lib/services/visibility-service.d.ts +5 -1
  134. package/package.json +37 -25
  135. package/schematics/activity/index.js +3 -3
  136. package/schematics/activity/index.js.map +1 -1
  137. package/schematics/aup-i18n/index.js +7 -7
  138. package/schematics/aup-i18n/index.js.map +1 -1
  139. package/schematics/bootstrap-app/index.js +9 -9
  140. package/schematics/bootstrap-app/index.js.map +1 -1
  141. package/schematics/bootstrap-app/templates/src/styles.scss.template +2 -2
  142. package/schematics/component/index.js +3 -3
  143. package/schematics/component/index.js.map +1 -1
  144. package/schematics/ng-add/index.js +2 -2
  145. package/schematics/ng-add/index.js.map +1 -1
  146. package/schematics/place-add/index.js +3 -3
  147. package/schematics/place-add/index.js.map +1 -1
  148. package/schematics/place-bootstrap/index.js +1 -1
  149. package/schematics/place-bootstrap/index.js.map +1 -1
  150. package/schematics/place-routes/place-builder.js +6 -6
  151. package/schematics/place-routes/place-builder.js.map +1 -1
  152. package/schematics/place-routes/place-class-scanner.js +3 -3
  153. package/schematics/place-routes/place-class-scanner.js.map +1 -1
  154. package/schematics/place-routes/place-def.js +4 -4
  155. package/schematics/place-routes/place-def.js.map +1 -1
  156. package/schematics/utils/decorators/decorated-class.js +1 -1
  157. package/schematics/utils/decorators/decorated-class.js.map +1 -1
  158. package/schematics/utils/import-def.js +3 -3
  159. package/schematics/utils/import-def.js.map +1 -1
  160. package/schematics/utils/method-scanner.js +4 -4
  161. package/schematics/utils/method-scanner.js.map +1 -1
  162. package/schematics/utils/path-helper.js +3 -3
  163. package/schematics/utils/path-helper.js.map +1 -1
  164. package/schematics/utils/source-file-scanner.js +5 -5
  165. package/schematics/utils/source-file-scanner.js.map +1 -1
  166. package/schematics/utils/source-file-utilities.js +1 -1
  167. package/schematics/utils/source-file-utilities.js.map +1 -1
  168. package/schematics/utils/template-utilities.js +4 -4
  169. package/schematics/utils/template-utilities.js.map +1 -1
  170. package/bundles/coolon-angular-ui-powerups.umd.js +0 -11847
  171. package/bundles/coolon-angular-ui-powerups.umd.js.map +0 -1
  172. package/esm2015/lib/components/busy-overlay/busy-overlay.component.js +0 -36
  173. package/esm2015/lib/components/cards/card-container/card-container.component.js +0 -133
  174. package/esm2015/lib/components/cards/card-stack/card-stack.component.js +0 -85
  175. package/esm2015/lib/components/commands/command/command.component.js +0 -100
  176. package/esm2015/lib/components/commands/command-face.js +0 -112
  177. package/esm2015/lib/components/commands/group/popup-menu/abstract-popup-menu.component.js +0 -89
  178. package/esm2015/lib/components/commands/group/popup-menu/more-menu.component.js +0 -61
  179. package/esm2015/lib/components/commands/group/popup-menu/popup-menu-renderer/popup-menu-renderer.component.js +0 -104
  180. package/esm2015/lib/components/commands/group/popup-menu/popup-menu.component.js +0 -58
  181. package/esm2015/lib/components/commands/group/tool-bar/tool-bar.component.js +0 -36
  182. package/esm2015/lib/components/forms/autocomplete-input/autocomplete-input.component.js +0 -76
  183. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +0 -33
  184. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +0 -56
  185. package/esm2015/lib/components/forms/number-input/number-input.component.js +0 -37
  186. package/esm2015/lib/components/forms/password-input/password-input.component.js +0 -28
  187. package/esm2015/lib/components/forms/select-input/select-input.component.js +0 -61
  188. package/esm2015/lib/components/forms/string-input/string-input.component.js +0 -52
  189. package/esm2015/lib/components/forms/text-input/text-input.component.js +0 -34
  190. package/esm2015/lib/components/icon/icon.component.js +0 -56
  191. package/esm2015/lib/components/labelled-value/labelled-value.component.js +0 -24
  192. package/esm2015/lib/components/loading-container/loading-container.component.js +0 -54
  193. package/esm2015/lib/components/noop/noop.component.js +0 -17
  194. package/esm2015/lib/components/scroll-container/scroll-container.component.js +0 -19
  195. package/esm2015/lib/components/section-header/section-header.component.js +0 -40
  196. package/esm2015/lib/components/tables/abstract-table-model.js +0 -188
  197. package/esm2015/lib/components/tables/abstract-table.component.js +0 -170
  198. package/esm2015/lib/components/tables/table/column-model.js +0 -389
  199. package/esm2015/lib/components/tables/table/column-template/column-template.directive.js +0 -36
  200. package/esm2015/lib/components/tables/table/default-cell-renderer/default-cell-renderer.component.js +0 -26
  201. package/esm2015/lib/components/tables/table/default-header-cell-renderer/default-header-cell-renderer.component.js +0 -19
  202. package/esm2015/lib/components/tables/table/edit-row-controls/edit-row-controls.component.js +0 -60
  203. package/esm2015/lib/components/tables/table/paginator/paginator.component.js +0 -44
  204. package/esm2015/lib/components/tables/table/select-cell-renderer/select-cell-renderer.component.js +0 -32
  205. package/esm2015/lib/components/tables/table/select-header-cell-renderer/select-header-cell-renderer.component.js +0 -37
  206. package/esm2015/lib/components/tables/table/table-cell-renderer/table-cell-renderer.component.js +0 -98
  207. package/esm2015/lib/components/tables/table/table-header-cell-renderer/table-header-cell-renderer.component.js +0 -36
  208. package/esm2015/lib/components/tables/table/table.component.js +0 -100
  209. package/esm2015/lib/components/tables/tree-table/decorated-tree-node.js +0 -171
  210. package/esm2015/lib/components/tables/tree-table/tree-inheritance-icon/tree-inheritance-icon.component.js +0 -76
  211. package/esm2015/lib/components/tables/tree-table/tree-label-cell-renderer/tree-label-cell-renderer.component.js +0 -96
  212. package/esm2015/lib/components/tables/tree-table/tree-table-component.js +0 -100
  213. package/esm2015/lib/interaction/activity.js +0 -88
  214. package/esm2015/lib/interaction/components/activity-actions/activity-actions.component.js +0 -113
  215. package/esm2015/lib/interaction/components/activity-body/activity-body.component.js +0 -27
  216. package/esm2015/lib/interaction/components/activity-container/activity-container.component.js +0 -214
  217. package/esm2015/lib/interaction/components/activity-title/activity-title.component.js +0 -45
  218. package/esm2015/lib/interaction/components/activity-triggers/inline-activity-trigger/inline-activity-trigger.component.js +0 -28
  219. package/esm2015/lib/interaction/components/activity-triggers/modal-activity-trigger/modal-activity-trigger.component.js +0 -26
  220. package/esm2015/lib/interaction/components/activity-triggers/popup-activity-trigger/popup-activity-trigger.component.js +0 -34
  221. package/esm2015/lib/interaction/components/add-card-activity/add-card-activity.component.js +0 -95
  222. package/esm2015/lib/interaction/components/add-item-interaction-context/add-item-interaction-context.component.js +0 -77
  223. package/esm2015/lib/interaction/components/alert-dialog/alert-dialog.component.js +0 -34
  224. package/esm2015/lib/interaction/components/confirm-then-dialog/confirm-then-dialog.component.js +0 -34
  225. package/esm2015/lib/interaction/components/confirm-then-execute-dialog/confirm-then-execute-dialog.component.js +0 -39
  226. package/esm2015/lib/interaction/components/confirmation-dialog/confirmation-dialog.component.js +0 -33
  227. package/esm2015/lib/interaction/components/editors/inline-string-editor/inline-string-editor.component.js +0 -176
  228. package/esm2015/lib/interaction/components/inplace-interaction-context/in-place-interaction-context.component.js +0 -96
  229. package/esm2015/lib/interaction/components/input-activities/input-activity.js +0 -107
  230. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context-factory.js +0 -41
  231. package/esm2015/lib/interaction/services/mat-dialog-interaction/dialog-interaction-context.js +0 -58
  232. package/esm2015/lib/place/components/list-place-nav/list-place-nav.component.js +0 -27
  233. package/esm2015/lib/place/components/not-authorised-notice/not-authorised-notice.component.js +0 -17
  234. package/esm2015/lib/place/components/place-outlet/place-outlet.component.js +0 -263
  235. package/esm2015/lib/place/components/side-place-navigation/side-place-navigation.component.js +0 -97
  236. package/esm2015/lib/place/components/tabbed-place-navigation/tabbed-place-navigation.component.js +0 -26
  237. package/esm2015/lib/place/guards/noop-auth-guard.service.js +0 -21
  238. package/esm2015/lib/place/guards/place.guard.js +0 -116
  239. package/esm2015/lib/place/navigation/place-component-deactivation-handler.js +0 -88
  240. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-leaving-interaction-transition-cancelled.js +0 -46
  241. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-link-triggered-navigation-interaction-cancelation-type-determined.js +0 -159
  242. package/esm2015/lib/place/navigation/session/event-cleanup/wait-until-popstate-during-can-deactivate-transition-finishes.js +0 -65
  243. package/esm2015/lib/place/navigation/session/navigation-session.js +0 -160
  244. package/esm2015/lib/place/place-component.js +0 -204
  245. package/esm2015/lib/place/place-history.js +0 -139
  246. package/esm2015/lib/place/place-router.js +0 -336
  247. package/esm2015/lib/place/place.decorator.js +0 -19
  248. package/esm2015/lib/place/route/parameter-definition.js +0 -128
  249. package/esm2015/lib/place/route/visit-sanitiser.js +0 -44
  250. package/esm2015/lib/place/visit.js +0 -69
  251. package/esm2015/lib/services/markdown/pill-plugin.js +0 -38
  252. package/esm2015/lib/services/visibility-service.js +0 -75
  253. package/fesm2015/coolon-angular-ui-powerups.js.map +0 -1
  254. /package/{esm2015/coolon-angular-ui-powerups.js → esm2020/coolon-angular-ui-powerups.mjs} +0 -0
  255. /package/{esm2015/index.js → esm2020/index.mjs} +0 -0
  256. /package/{esm2015/lib/animations/exports.js → esm2020/lib/animations/exports.mjs} +0 -0
  257. /package/{esm2015/lib/animations/slide-animations.js → esm2020/lib/animations/slide-animations.mjs} +0 -0
  258. /package/{esm2015/lib/components/alignment.js → esm2020/lib/components/alignment.mjs} +0 -0
  259. /package/{esm2015/lib/components/commands/group/command-container.js → esm2020/lib/components/commands/group/command-container.mjs} +0 -0
  260. /package/{esm2015/lib/components/commands/group/popup-aware.component.js → esm2020/lib/components/commands/group/popup-aware.component.mjs} +0 -0
  261. /package/{esm2015/lib/components/commands/group/popup-container.js → esm2020/lib/components/commands/group/popup-container.mjs} +0 -0
  262. /package/{esm2015/lib/components/exports.js → esm2020/lib/components/exports.mjs} +0 -0
  263. /package/{esm2015/lib/components/tables/column-list-model.js → esm2020/lib/components/tables/column-list-model.mjs} +0 -0
  264. /package/{esm2015/lib/components/tables/edit-session.js → esm2020/lib/components/tables/edit-session.mjs} +0 -0
  265. /package/{esm2015/lib/components/tables/table/cell-editors.js → esm2020/lib/components/tables/table/cell-editors.mjs} +0 -0
  266. /package/{esm2015/lib/components/tables/table/cell-renderer.js → esm2020/lib/components/tables/table/cell-renderer.mjs} +0 -0
  267. /package/{esm2015/lib/components/tables/table/column-text-properties.js → esm2020/lib/components/tables/table/column-text-properties.mjs} +0 -0
  268. /package/{esm2015/lib/components/tables/table/mutable-cell-renderer.js → esm2020/lib/components/tables/table/mutable-cell-renderer.mjs} +0 -0
  269. /package/{esm2015/lib/components/tables/table/table-def.js → esm2020/lib/components/tables/table/table-def.mjs} +0 -0
  270. /package/{esm2015/lib/components/tables/table/table-model.js → esm2020/lib/components/tables/table/table-model.mjs} +0 -0
  271. /package/{esm2015/lib/components/tables/table/text-search-predicate.js → esm2020/lib/components/tables/table/text-search-predicate.mjs} +0 -0
  272. /package/{esm2015/lib/components/tables/tree-table/flattened-tree-list-model.js → esm2020/lib/components/tables/tree-table/flattened-tree-list-model.mjs} +0 -0
  273. /package/{esm2015/lib/components/tables/tree-table/tree-expansion-model.js → esm2020/lib/components/tables/tree-table/tree-expansion-model.mjs} +0 -0
  274. /package/{esm2015/lib/components/tables/tree-table/tree-label-column-model.js → esm2020/lib/components/tables/tree-table/tree-label-column-model.mjs} +0 -0
  275. /package/{esm2015/lib/components/tables/tree-table/tree-table-model.js → esm2020/lib/components/tables/tree-table/tree-table-model.mjs} +0 -0
  276. /package/{esm2015/lib/components/track-by.js → esm2020/lib/components/track-by.mjs} +0 -0
  277. /package/{esm2015/lib/components/types/bounds.class.js → esm2020/lib/components/types/bounds.class.mjs} +0 -0
  278. /package/{esm2015/lib/components/types/dimension.class.js → esm2020/lib/components/types/dimension.class.mjs} +0 -0
  279. /package/{esm2015/lib/components/types/point.class.js → esm2020/lib/components/types/point.class.mjs} +0 -0
  280. /package/{esm2015/lib/directives/exports.js → esm2020/lib/directives/exports.mjs} +0 -0
  281. /package/{esm2015/lib/directives/focus-binding.js → esm2020/lib/directives/focus-binding.mjs} +0 -0
  282. /package/{esm2015/lib/interaction/abstract-interaction-context.js → esm2020/lib/interaction/abstract-interaction-context.mjs} +0 -0
  283. /package/{esm2015/lib/interaction/activity-ref.js → esm2020/lib/interaction/activity-ref.mjs} +0 -0
  284. /package/{esm2015/lib/interaction/alert.js → esm2020/lib/interaction/alert.mjs} +0 -0
  285. /package/{esm2015/lib/interaction/components/editors/edit-context.js → esm2020/lib/interaction/components/editors/edit-context.mjs} +0 -0
  286. /package/{esm2015/lib/interaction/components/editors/inline-string-editor/inline-editor-model.js → esm2020/lib/interaction/components/editors/inline-string-editor/inline-editor-model.mjs} +0 -0
  287. /package/{esm2015/lib/interaction/confirm.js → esm2020/lib/interaction/confirm.mjs} +0 -0
  288. /package/{esm2015/lib/interaction/exports.js → esm2020/lib/interaction/exports.mjs} +0 -0
  289. /package/{esm2015/lib/interaction/in-place-interaction-context.js → esm2020/lib/interaction/in-place-interaction-context.mjs} +0 -0
  290. /package/{esm2015/lib/interaction/interaction-context.js → esm2020/lib/interaction/interaction-context.mjs} +0 -0
  291. /package/{esm2015/lib/interaction/route-synchronisation-adapter.js → esm2020/lib/interaction/route-synchronisation-adapter.mjs} +0 -0
  292. /package/{esm2015/lib/interaction/services/interaction-service-routing-adapter.js → esm2020/lib/interaction/services/interaction-service-routing-adapter.mjs} +0 -0
  293. /package/{esm2015/lib/interaction/services/modal-interaction-context.factory.js → esm2020/lib/interaction/services/modal-interaction-context.factory.mjs} +0 -0
  294. /package/{esm2015/lib/place/components/place-outlet/route-animations.js → esm2020/lib/place/components/place-outlet/route-animations.mjs} +0 -0
  295. /package/{esm2015/lib/place/exports.js → esm2020/lib/place/exports.mjs} +0 -0
  296. /package/{esm2015/lib/place/guards/consolidated-param-map.js → esm2020/lib/place/guards/consolidated-param-map.mjs} +0 -0
  297. /package/{esm2015/lib/place/nav-item.js → esm2020/lib/place/nav-item.mjs} +0 -0
  298. /package/{esm2015/lib/place/navigation/session/abstract-pop-state-navigation.js → esm2020/lib/place/navigation/session/abstract-pop-state-navigation.mjs} +0 -0
  299. /package/{esm2015/lib/place/navigation/session/event-cleanup/event-clean-up-session.js → esm2020/lib/place/navigation/session/event-cleanup/event-clean-up-session.mjs} +0 -0
  300. /package/{esm2015/lib/place/navigation/session/interactions/navigating-during-interaction.js → esm2020/lib/place/navigation/session/interactions/navigating-during-interaction.mjs} +0 -0
  301. /package/{esm2015/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.js → esm2020/lib/place/navigation/session/interactions/pop-state-during-interaction-navigation.mjs} +0 -0
  302. /package/{esm2015/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.js → esm2020/lib/place/navigation/session/interactions/remove-last-interaction-from-url-navigation-session.mjs} +0 -0
  303. /package/{esm2015/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.js → esm2020/lib/place/navigation/session/interactions/synchronise-interaction-context-ids-with-route.mjs} +0 -0
  304. /package/{esm2015/lib/place/navigation/session/navigating.js → esm2020/lib/place/navigation/session/navigating.mjs} +0 -0
  305. /package/{esm2015/lib/place/navigation/session/navigation-context.js → esm2020/lib/place/navigation/session/navigation-context.mjs} +0 -0
  306. /package/{esm2015/lib/place/navigation/session/pop-state-navigation.js → esm2020/lib/place/navigation/session/pop-state-navigation.mjs} +0 -0
  307. /package/{esm2015/lib/place/place-access-guard.js → esm2020/lib/place/place-access-guard.mjs} +0 -0
  308. /package/{esm2015/lib/place/place-config.js → esm2020/lib/place/place-config.mjs} +0 -0
  309. /package/{esm2015/lib/place/place-definition.js → esm2020/lib/place/place-definition.mjs} +0 -0
  310. /package/{esm2015/lib/place/route/formatter.js → esm2020/lib/place/route/formatter.mjs} +0 -0
  311. /package/{esm2015/lib/place/route/json-types.js → esm2020/lib/place/route/json-types.mjs} +0 -0
  312. /package/{esm2015/lib/place/route/parameter-decorators.js → esm2020/lib/place/route/parameter-decorators.mjs} +0 -0
  313. /package/{esm2015/lib/place/route/parameter-sanitiser.js → esm2020/lib/place/route/parameter-sanitiser.mjs} +0 -0
  314. /package/{esm2015/lib/place/route/parameter-snapshot.js → esm2020/lib/place/route/parameter-snapshot.mjs} +0 -0
  315. /package/{esm2015/lib/place/url-snapshot.js → esm2020/lib/place/url-snapshot.mjs} +0 -0
  316. /package/{esm2015/lib/services/exports.js → esm2020/lib/services/exports.mjs} +0 -0
  317. /package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
@@ -0,0 +1,185 @@
1
+ import { assert, DelegatingListModel, DirtyTrackingForm, Dsl, EventListenerList, GarbageCollector, lang, MutableListModel, TrackExternal, ValueModel } from '@coolon/pectin';
2
+ import { isFunction, isNil } from 'lodash';
3
+ import { ColumnListModel } from './column-list-model';
4
+ import { EditSession } from './edit-session';
5
+ import { CustomTemplateColumnModel, CustomValueColumnModel, EditorControlColumnModel, ListPropertyColumnModel, PropertyColumnModel, SelectionColumnModel } from './table/column-model';
6
+ // export type StringPropertiesOf<T> = { [K in keyof T]: T[K] extends string ? K : never }[keyof T];
7
+ // export type NumberPropertiesOf<T> = { [K in keyof T]: T[K] extends number ? K : never }[keyof T];
8
+ class RowClass {
9
+ constructor(className, matches) {
10
+ this.className = className;
11
+ this.matches = matches;
12
+ }
13
+ }
14
+ export class AbstractTableModel extends GarbageCollector {
15
+ constructor() {
16
+ super();
17
+ this._dataSource = this.registerDisposable(new DelegatingListModel());
18
+ this._columnList = this.registerDisposable(new ColumnListModel());
19
+ this._editorSessions = new MutableListModel();
20
+ this.rowClassNamePredicates = [];
21
+ this.rowClickListeners = new EventListenerList();
22
+ this._createForm = (row) => new DirtyTrackingForm();
23
+ this.trackBy = (index, item) => {
24
+ return this.identityOf ? this.identityOf(item) : index;
25
+ };
26
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
27
+ this._rowsBeingEdited = new MutableListModel([], {
28
+ identifiedWith: row => this.identityOf(row)
29
+ });
30
+ this._editorSessionByRowId = chain(this._editorSessions).indexBy('rowId');
31
+ this.editing = chain(this._editorSessions).count().isGreaterThan(0);
32
+ this.dataSource = chain(this._dataSource).replaceAll(this.rowsBeingEdited);
33
+ this.firstEditableColumn = chain(this.columns).select(c => c.hasEditorPortal()).first();
34
+ this.firstVisibleColumn = chain(this._columnList).first();
35
+ this.lastVisibleColumn = chain(this._columnList).last();
36
+ this.rowSelectionDisabledOnAllColumns = chain(this._columnList).select(column => column.isRowSelectionEnabled()).count().equals(0);
37
+ }
38
+ findMatchingColumns(row, regex) {
39
+ return this.columns.value.filter(c => c.isTextMatch(row, regex));
40
+ }
41
+ hasMatchingColumn(row, regex) {
42
+ return !!this.columns.value.find(c => c.isTextMatch(row, regex));
43
+ }
44
+ setDataSource(sourceOfTruth) {
45
+ this._dataSource.setDelegate(sourceOfTruth);
46
+ }
47
+ identityOf(row) {
48
+ return this._dataSource.identityOf(row);
49
+ }
50
+ get rowsBeingEdited() {
51
+ return this._rowsBeingEdited.readonly;
52
+ }
53
+ get columns() {
54
+ return this._columnList.allColumns;
55
+ }
56
+ get visibleColumns() {
57
+ return this._columnList.readonly;
58
+ }
59
+ pluck(property, options) {
60
+ const columnId = options?.columnId || property.toString();
61
+ return this.addColumn(new PropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
62
+ }
63
+ pluckList(property, options) {
64
+ const columnId = options?.columnId || property.toString();
65
+ return this.addColumn(new ListPropertyColumnModel(columnId, property, () => this.getColumnTextProperties(columnId)));
66
+ }
67
+ _addSelectionColumn(selectionModel, visible) {
68
+ assert.isNil(this.selectionColumnModel);
69
+ const columnId = 'selection-column';
70
+ this.selectionColumnModel = new SelectionColumnModel(columnId, () => this.getColumnTextProperties(columnId), selectionModel);
71
+ this.addRowClass('aup-row-selected', row => this.selectionColumnModel.isSelected(row));
72
+ const selectionColumnModel = this.addColumn(this.selectionColumnModel, 0);
73
+ if (!isNil(visible)) {
74
+ selectionColumnModel.visibleWhile(visible instanceof ValueModel ? visible : ValueModel.constant(visible));
75
+ }
76
+ return selectionColumnModel;
77
+ }
78
+ addEditControls(saveCommandFactory, formFactory) {
79
+ this.saveCommandFactory = saveCommandFactory;
80
+ if (isFunction(formFactory)) {
81
+ this._createForm = formFactory;
82
+ }
83
+ const columnId = 'editControls';
84
+ return this.addColumn(new EditorControlColumnModel(columnId, saveCommandFactory, () => this.getColumnTextProperties(columnId)));
85
+ }
86
+ addCustomColumn(columnId, dataAccessor) {
87
+ return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), dataAccessor));
88
+ }
89
+ addComponentColumn(columnId, component, onComponentInitOrOptions) {
90
+ return this.addColumn(new CustomValueColumnModel(columnId, () => this.getColumnTextProperties(columnId), row => row)).cellRenderer(component, onComponentInitOrOptions);
91
+ }
92
+ addTemplateColumn(columnId) {
93
+ return this.addColumn(new CustomTemplateColumnModel(columnId, () => this.getColumnTextProperties(columnId)));
94
+ }
95
+ addRowClass(className, predicate) {
96
+ this.rowClassNamePredicates.push(new RowClass(className, predicate));
97
+ }
98
+ getRowClasses(row) {
99
+ const classNames = [];
100
+ this.rowClassNamePredicates.forEach(i => {
101
+ if (i.matches(row)) {
102
+ classNames.push(i.className);
103
+ }
104
+ });
105
+ return classNames;
106
+ }
107
+ useFormFactory(factory) {
108
+ this._createForm = factory;
109
+ return this;
110
+ }
111
+ addColumn(column, index) {
112
+ return this._columnList.addColumn(column, index);
113
+ }
114
+ // removeColumn(column: ColumnModel<Row>) {
115
+ //
116
+ // }
117
+ columnTextProperties(columnTextProperties) {
118
+ this._columnTextPropertiesLookup = columnTextProperties;
119
+ }
120
+ getColumnTextProperties(columnId) {
121
+ return this._columnTextPropertiesLookup ? this._columnTextPropertiesLookup[columnId] : undefined;
122
+ }
123
+ startEditSession(row) {
124
+ const rowId = this.identityOf(row);
125
+ if (this._rowsBeingEdited.query().indexOf(row) > -1) {
126
+ return lang.illegalState(`Row with id=${rowId} already being edited`);
127
+ }
128
+ // todo: pass the factories to the edit session so we can make the whole lot pluggable?
129
+ const form = this._createForm(row);
130
+ const saveCommand = this.saveCommandFactory.create(form);
131
+ const editSession = new EditSession(rowId, row, form, saveCommand);
132
+ const { when } = Dsl.disposeWith(editSession);
133
+ when(editSession.liveRowValue).changes((editedValue) => {
134
+ this._rowsBeingEdited.replaceOrPush(editedValue);
135
+ }, { initialValue: 'triggerChangeUnlessNil' });
136
+ this._editorSessions.push(editSession);
137
+ editSession.onDispose(() => {
138
+ this._rowsBeingEdited.remove(editSession.liveRowValue.value);
139
+ this._editorSessions.remove(editSession);
140
+ });
141
+ return editSession;
142
+ }
143
+ getEditSessionFor(row) {
144
+ return this._editorSessionByRowId.get(this.identityOf(row));
145
+ }
146
+ cancelAllEditorSessions() {
147
+ this._editorSessions.runInTransaction((draft) => {
148
+ this._rowsBeingEdited.runInTransaction(() => {
149
+ draft.value.forEach(session => session.dispose());
150
+ });
151
+ });
152
+ }
153
+ isRowSelectionEnabledFor(column) {
154
+ return this.isRowSelectionEnabled() && column.isRowSelectionEnabled();
155
+ }
156
+ isRowSelectionEnabled() {
157
+ return this.hasUserSelectionModel() && !this.rowSelectionDisabledOnAllColumns.value;
158
+ }
159
+ hasUserSelectionModel() {
160
+ return !!this.selectionColumnModel?.selectionModel.getDelegate();
161
+ }
162
+ getSelectionModel() {
163
+ return this.selectionColumnModel?.selectionModel;
164
+ }
165
+ isHoverEnabled() {
166
+ return this.isRowSelectionEnabled() || this.rowClickListeners.listenerCount > 0;
167
+ }
168
+ isCursorEnabled(column) {
169
+ return this.isRowSelectionEnabledFor(column) || this.rowClickListeners.listenerCount > 0;
170
+ }
171
+ selectRow(row) {
172
+ this.selectionColumnModel?.selectRow(row);
173
+ }
174
+ onRowClicked(callback) {
175
+ return this.rowClickListeners.add(callback);
176
+ }
177
+ _notifyCellClicked(columnModel, row) {
178
+ if (this.isRowSelectionEnabledFor(columnModel)) {
179
+ this.selectRow(row);
180
+ }
181
+ this.rowClickListeners.fire(l => l(row));
182
+ }
183
+ }
184
+ TrackExternal.oneTimeBinding(AbstractTableModel);
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXItdWktcG93ZXJ1cHMvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlcy9hYnN0cmFjdC10YWJsZS1tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsTUFBTSxFQUdOLG1CQUFtQixFQUNuQixpQkFBaUIsRUFFakIsR0FBRyxFQUNILGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsSUFBSSxFQUlKLGdCQUFnQixFQUVoQixhQUFhLEVBRWIsVUFBVSxFQUVYLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBR0wseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBRXZCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDckIsTUFBTSxzQkFBc0IsQ0FBQztBQUc5QixvR0FBb0c7QUFDcEcsb0dBQW9HO0FBRXBHLE1BQU0sUUFBUTtJQUNaLFlBQXFCLFNBQWlCLEVBQ2pCLE9BQThCO1FBRDlCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7SUFDbkQsQ0FBQztDQUNGO0FBR0QsTUFBTSxPQUFPLGtCQUF3QixTQUFRLGdCQUFnQjtJQTBCM0Q7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXpCTyxnQkFBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLG1CQUFtQixFQUFPLENBQUMsQ0FBQztRQUd0RSxnQkFBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJ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SUFDM0MsQ0FBQztDQUNGO0FBR0QsYUFBYSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7XG4gIGFzc2VydCxcbiAgQm9vbGVhblZhbHVlTW9kZWxDaGFpbiwgQ29tbWFuZCxcbiAgQ29tbWFuZEZhY3RvcnksXG4gIERlbGVnYXRpbmdMaXN0TW9kZWwsXG4gIERpcnR5VHJhY2tpbmdGb3JtLFxuICBEaXNwb3NhYmxlLFxuICBEc2wsXG4gIEV2ZW50TGlzdGVuZXJMaXN0LFxuICBHYXJiYWdlQ29sbGVjdG9yLFxuICBsYW5nLFxuICBMaXN0TW9kZWwsXG4gIExpc3RNb2RlbENoYWluLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlTGlzdE1vZGVsLFxuICBTZWxlY3Rpb25Nb2RlbCxcbiAgVHJhY2tFeHRlcm5hbCxcbiAgVHlwZXMsXG4gIFZhbHVlTW9kZWwsXG4gIFZhbHVlTW9kZWxDaGFpblxufSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5cbmltcG9ydCB7IGlzRnVuY3Rpb24sIGlzTmlsIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IENvbHVtbkxpc3RNb2RlbCB9IGZyb20gJy4vY29sdW1uLWxpc3QtbW9kZWwnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuL2VkaXQtc2Vzc2lvbic7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXIgfSBmcm9tICcuL3RhYmxlL2NlbGwtcmVuZGVyZXInO1xuaW1wb3J0IHtcbiAgQ2VsbFJlbmRlcmVyT3B0aW9ucyxcbiAgQ29sdW1uTW9kZWwsXG4gIEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWwsXG4gIEN1c3RvbVZhbHVlQ29sdW1uTW9kZWwsXG4gIEVkaXRvckNvbnRyb2xDb2x1bW5Nb2RlbCxcbiAgTGlzdFByb3BlcnR5Q29sdW1uTW9kZWwsXG4gIE9uQ29tcG9uZW50SW5pdCxcbiAgUHJvcGVydHlDb2x1bW5Nb2RlbCxcbiAgU2VsZWN0aW9uQ29sdW1uTW9kZWxcbn0gZnJvbSAnLi90YWJsZS9jb2x1bW4tbW9kZWwnO1xuaW1wb3J0IHsgQ29sdW1uVGV4dFByb3BlcnRpZXMgfSBmcm9tICcuL3RhYmxlL2NvbHVtbi10ZXh0LXByb3BlcnRpZXMnO1xuXG4vLyBleHBvcnQgdHlwZSBTdHJpbmdQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG4vLyBleHBvcnQgdHlwZSBOdW1iZXJQcm9wZXJ0aWVzT2Y8VD4gPSB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgbnVtYmVyID8gSyA6IG5ldmVyIH1ba2V5b2YgVF07XG5cbmNsYXNzIFJvd0NsYXNzPFJvdz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjbGFzc05hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgbWF0Y2hlczogKHJvdzogUm93KSA9PiBib29sZWFuKSB7XG4gIH1cbn1cblxuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RUYWJsZU1vZGVsPFJvdz4gZXh0ZW5kcyBHYXJiYWdlQ29sbGVjdG9yIHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU291cmNlID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IERlbGVnYXRpbmdMaXN0TW9kZWw8Um93PigpKTtcbiAgcmVhZG9ubHkgZGF0YVNvdXJjZTogTGlzdE1vZGVsQ2hhaW48Um93PjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb2x1bW5MaXN0ID0gdGhpcy5yZWdpc3RlckRpc3Bvc2FibGUobmV3IENvbHVtbkxpc3RNb2RlbDxSb3c+KCkpO1xuXG4gIHByaXZhdGUgX2VkaXRvclNlc3Npb25zID0gbmV3IE11dGFibGVMaXN0TW9kZWw8RWRpdFNlc3Npb248Um93Pj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcm93c0JlaW5nRWRpdGVkOiBNdXRhYmxlTGlzdE1vZGVsPFJvdz47XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93Q2xhc3NOYW1lUHJlZGljYXRlczogUm93Q2xhc3M8Um93PltdID0gW107XG5cbiAgcHJpdmF0ZSBfY29sdW1uVGV4dFByb3BlcnRpZXNMb29rdXA6IHsgW2NvbHVtbk5hbWU6IHN0cmluZ106IENvbHVtblRleHRQcm9wZXJ0aWVzIH07XG5cbiAgcHJpdmF0ZSBzYXZlQ29tbWFuZEZhY3Rvcnk6IENvbW1hbmQuRmFjdG9yeTxEaXJ0eVRyYWNraW5nRm9ybTxSb3c+LCBib29sZWFuIHwgUHJvbWlzZTxib29sZWFuPj47XG4gIHByaXZhdGUgX2VkaXRvclNlc3Npb25CeVJvd0lkOiBNYXBNb2RlbENoYWluPGFueSwgRWRpdFNlc3Npb248Um93Pj47XG5cbiAgcmVhZG9ubHkgZWRpdGluZzogQm9vbGVhblZhbHVlTW9kZWxDaGFpbjtcbiAgcmVhZG9ubHkgZmlyc3RFZGl0YWJsZUNvbHVtbjogVmFsdWVNb2RlbENoYWluPENvbHVtbk1vZGVsPFJvdz4+O1xuICBwcml2YXRlIHNlbGVjdGlvbkNvbHVtbk1vZGVsOiBTZWxlY3Rpb25Db2x1bW5Nb2RlbDxSb3c+O1xuICBwcml2YXRlIHJvd1NlbGVjdGlvbkRpc2FibGVkT25BbGxDb2x1bW5zOiBCb29sZWFuVmFsdWVNb2RlbENoYWluO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvd0NsaWNrTGlzdGVuZXJzID0gbmV3IEV2ZW50TGlzdGVuZXJMaXN0PChyb3c6IFJvdykgPT4gdm9pZD4oKTtcbiAgcmVhZG9ubHkgZmlyc3RWaXNpYmxlQ29sdW1uOiBWYWx1ZU1vZGVsPENvbHVtbk1vZGVsPFJvdz4+O1xuICByZWFkb25seSBsYXN0VmlzaWJsZUNvbHVtbjogVmFsdWVNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PjtcblxuICBwcml2YXRlIF9jcmVhdGVGb3JtOiAocm93OiBSb3cpID0+IERpcnR5VHJhY2tpbmdGb3JtPFJvdz4gPSAocm93KSA9PiBuZXcgRGlydHlUcmFja2luZ0Zvcm08Um93PigpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHZhbHVlT2YsIGJlZm9yZSwgd2hlbiwgYWZ0ZXIsIG9ic2VydmUsIHN3aXRjaE9uIH0gPSBEc2wuZGlzcG9zZVdpdGgodGhpcyk7XG4gICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkID0gbmV3IE11dGFibGVMaXN0TW9kZWw8Um93PihbXSwge1xuICAgICAgaWRlbnRpZmllZFdpdGg6IHJvdyA9PiB0aGlzLmlkZW50aXR5T2Yocm93KVxuICAgIH0pO1xuICAgIHRoaXMuX2VkaXRvclNlc3Npb25CeVJvd0lkID0gY2hhaW4odGhpcy5fZWRpdG9yU2Vzc2lvbnMpLmluZGV4QnkoJ3Jvd0lkJyk7XG4gICAgdGhpcy5lZGl0aW5nID0gY2hhaW4odGhpcy5fZWRpdG9yU2Vzc2lvbnMpLmNvdW50KCkuaXNHcmVhdGVyVGhhbigwKTtcbiAgICB0aGlzLmRhdGFTb3VyY2UgPSBjaGFpbih0aGlzLl9kYXRhU291cmNlKS5yZXBsYWNlQWxsKHRoaXMucm93c0JlaW5nRWRpdGVkKTtcblxuICAgIHRoaXMuZmlyc3RFZGl0YWJsZUNvbHVtbiA9IGNoYWluKHRoaXMuY29sdW1ucykuc2VsZWN0KGMgPT4gYy5oYXNFZGl0b3JQb3J0YWwoKSkuZmlyc3QoKTtcbiAgICB0aGlzLmZpcnN0VmlzaWJsZUNvbHVtbiA9IGNoYWluKHRoaXMuX2NvbHVtbkxpc3QpLmZpcnN0KCk7XG4gICAgdGhpcy5sYXN0VmlzaWJsZUNvbHVtbiA9IGNoYWluKHRoaXMuX2NvbHVtbkxpc3QpLmxhc3QoKTtcblxuICAgIHRoaXMucm93U2VsZWN0aW9uRGlzYWJsZWRPbkFsbENvbHVtbnMgPSBjaGFpbih0aGlzLl9jb2x1bW5MaXN0KS5zZWxlY3QoY29sdW1uID0+IGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKSkuY291bnQoKS5lcXVhbHMoMCk7XG4gIH1cblxuICBmaW5kTWF0Y2hpbmdDb2x1bW5zKHJvdzogUm93LCByZWdleDogUmVnRXhwKTogQ29sdW1uTW9kZWw8Um93PltdIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLnZhbHVlLmZpbHRlcihjID0+IGMuaXNUZXh0TWF0Y2gocm93LCByZWdleCkpO1xuICB9XG5cbiAgaGFzTWF0Y2hpbmdDb2x1bW4ocm93OiBSb3csIHJlZ2V4OiBSZWdFeHApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmNvbHVtbnMudmFsdWUuZmluZChjID0+IGMuaXNUZXh0TWF0Y2gocm93LCByZWdleCkpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldERhdGFTb3VyY2Uoc291cmNlT2ZUcnV0aDogTGlzdE1vZGVsPFJvdz4pIHtcbiAgICB0aGlzLl9kYXRhU291cmNlLnNldERlbGVnYXRlKHNvdXJjZU9mVHJ1dGgpO1xuICB9XG5cbiAgaWRlbnRpdHlPZihyb3c6IFJvdyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2UuaWRlbnRpdHlPZihyb3cpO1xuICB9XG5cbiAgZ2V0IHJvd3NCZWluZ0VkaXRlZCgpOiBMaXN0TW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZC5yZWFkb25seTtcbiAgfVxuXG4gIHJlYWRvbmx5IHRyYWNrQnkgPSAoaW5kZXg6IG51bWJlciwgaXRlbTogUm93KSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlPZiA/IHRoaXMuaWRlbnRpdHlPZihpdGVtKSA6IGluZGV4O1xuICB9O1xuXG4gIGdldCBjb2x1bW5zKCk6IExpc3RNb2RlbDxDb2x1bW5Nb2RlbDxSb3c+PiB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbkxpc3QuYWxsQ29sdW1ucztcbiAgfVxuXG4gIGdldCB2aXNpYmxlQ29sdW1ucygpOiBMaXN0TW9kZWw8Q29sdW1uTW9kZWw8Um93Pj4ge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5MaXN0LnJlYWRvbmx5O1xuICB9XG5cbiAgcGx1Y2s8UCBleHRlbmRzIFR5cGVzLlZhbHVlUHJvcGVydGllc09mPFJvdz4+KHByb3BlcnR5OiBQLCBvcHRpb25zPzogeyBjb2x1bW5JZDogc3RyaW5nIH0pOiBQcm9wZXJ0eUNvbHVtbk1vZGVsPFJvdywgUD4ge1xuICAgIGNvbnN0IGNvbHVtbklkID0gb3B0aW9ucz8uY29sdW1uSWQgfHwgcHJvcGVydHkudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gdGhpcy5hZGRDb2x1bW4obmV3IFByb3BlcnR5Q29sdW1uTW9kZWw8Um93LCBQPihjb2x1bW5JZCwgcHJvcGVydHksICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBwbHVja0xpc3Q8UCBleHRlbmRzIFR5cGVzLkFycmF5UHJvcGVydGllc09mPFJvdz4+KHByb3BlcnR5OiBQLCBvcHRpb25zPzogeyBjb2x1bW5JZDogc3RyaW5nIH0pOiBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+IHtcbiAgICBjb25zdCBjb2x1bW5JZCA9IG9wdGlvbnM/LmNvbHVtbklkIHx8IHByb3BlcnR5LnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBMaXN0UHJvcGVydHlDb2x1bW5Nb2RlbDxSb3csIFA+KGNvbHVtbklkLCBwcm9wZXJ0eSwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCkpKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBfYWRkU2VsZWN0aW9uQ29sdW1uKHNlbGVjdGlvbk1vZGVsPzogU2VsZWN0aW9uTW9kZWw8Um93PiwgdmlzaWJsZT86IFZhbHVlTW9kZWw8Ym9vbGVhbj4gfCBib29sZWFuKTogU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93PiB7XG4gICAgYXNzZXJ0LmlzTmlsKHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwpO1xuICAgIGNvbnN0IGNvbHVtbklkID0gJ3NlbGVjdGlvbi1jb2x1bW4nO1xuICAgIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwgPSBuZXcgU2VsZWN0aW9uQ29sdW1uTW9kZWw8Um93Pihjb2x1bW5JZCwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIHNlbGVjdGlvbk1vZGVsKTtcbiAgICB0aGlzLmFkZFJvd0NsYXNzKCdhdXAtcm93LXNlbGVjdGVkJywgcm93ID0+IHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwuaXNTZWxlY3RlZChyb3cpKTtcbiAgICBjb25zdCBzZWxlY3Rpb25Db2x1bW5Nb2RlbCA9IHRoaXMuYWRkQ29sdW1uKHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWwsIDApO1xuICAgIGlmICghaXNOaWwodmlzaWJsZSkpIHtcbiAgICAgIHNlbGVjdGlvbkNvbHVtbk1vZGVsLnZpc2libGVXaGlsZSh2aXNpYmxlIGluc3RhbmNlb2YgVmFsdWVNb2RlbCA/IHZpc2libGUgOiBWYWx1ZU1vZGVsLmNvbnN0YW50KHZpc2libGUpKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlbGVjdGlvbkNvbHVtbk1vZGVsO1xuICB9XG5cbiAgYWRkRWRpdENvbnRyb2xzKHNhdmVDb21tYW5kRmFjdG9yeTogQ29tbWFuZC5GYWN0b3J5PERpcnR5VHJhY2tpbmdGb3JtPFJvdz4sIGJvb2xlYW58UHJvbWlzZTxib29sZWFuPj4sIGZvcm1GYWN0b3J5PzogKHJvdzogUm93KSA9PiBEaXJ0eVRyYWNraW5nRm9ybTxSb3c+KTogRWRpdG9yQ29udHJvbENvbHVtbk1vZGVsPFJvdz4ge1xuICAgIHRoaXMuc2F2ZUNvbW1hbmRGYWN0b3J5ID0gc2F2ZUNvbW1hbmRGYWN0b3J5O1xuICAgIGlmIChpc0Z1bmN0aW9uKGZvcm1GYWN0b3J5KSkge1xuICAgICAgdGhpcy5fY3JlYXRlRm9ybSA9IGZvcm1GYWN0b3J5O1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW5JZCA9ICdlZGl0Q29udHJvbHMnO1xuICAgIHJldHVybiB0aGlzLmFkZENvbHVtbihuZXcgRWRpdG9yQ29udHJvbENvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsIHNhdmVDb21tYW5kRmFjdG9yeSwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCkpKTtcbiAgfVxuXG4gIGFkZEN1c3RvbUNvbHVtbjxWPihjb2x1bW5JZDogc3RyaW5nLCBkYXRhQWNjZXNzb3I6IChyb3c6IFJvdykgPT4gVik6IEN1c3RvbVZhbHVlQ29sdW1uTW9kZWw8Um93LCBWPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgVj4oY29sdW1uSWQsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpLCBkYXRhQWNjZXNzb3IpKTtcbiAgfVxuXG4gIGFkZENvbXBvbmVudENvbHVtbjxDIGV4dGVuZHMgQ2VsbFJlbmRlcmVyPFBhcnRpYWw8Um93Pj4+KGNvbHVtbklkOiBzdHJpbmcsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxDPiwgb25Jbml0PzogT25Db21wb25lbnRJbml0PEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz5cbiAgYWRkQ29tcG9uZW50Q29sdW1uPEMgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8UGFydGlhbDxSb3c+Pj4oY29sdW1uSWQ6IHN0cmluZywgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBvcHRpb25zPzogQ2VsbFJlbmRlcmVyT3B0aW9uczxSb3csIEM+KTogQ3VzdG9tVmFsdWVDb2x1bW5Nb2RlbDxSb3csIFJvdz5cbiAgYWRkQ29tcG9uZW50Q29sdW1uPEMgZXh0ZW5kcyBDZWxsUmVuZGVyZXI8UGFydGlhbDxSb3c+Pj4oY29sdW1uSWQ6IHN0cmluZywgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPEM+LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnM/OiBPbkNvbXBvbmVudEluaXQ8Qz4gfCBDZWxsUmVuZGVyZXJPcHRpb25zPFJvdywgQz4pOiBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93PiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBDdXN0b21WYWx1ZUNvbHVtbk1vZGVsPFJvdywgUm93Pihjb2x1bW5JZCwgKCkgPT4gdGhpcy5nZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZCksIHJvdyA9PiByb3cpKS5jZWxsUmVuZGVyZXIoY29tcG9uZW50LCBvbkNvbXBvbmVudEluaXRPck9wdGlvbnMpO1xuICB9XG5cbiAgYWRkVGVtcGxhdGVDb2x1bW48Vj4oY29sdW1uSWQ6IHN0cmluZyk6IEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkQ29sdW1uKG5ldyBDdXN0b21UZW1wbGF0ZUNvbHVtbk1vZGVsPFJvdz4oY29sdW1uSWQsICgpID0+IHRoaXMuZ2V0Q29sdW1uVGV4dFByb3BlcnRpZXMoY29sdW1uSWQpKSk7XG4gIH1cblxuICBhZGRSb3dDbGFzcyhjbGFzc05hbWU6IHN0cmluZywgcHJlZGljYXRlOiAocm93OiBSb3cpID0+IGJvb2xlYW4pIHtcbiAgICB0aGlzLnJvd0NsYXNzTmFtZVByZWRpY2F0ZXMucHVzaChuZXcgUm93Q2xhc3M8Um93PihjbGFzc05hbWUsIHByZWRpY2F0ZSkpO1xuICB9XG5cbiAgZ2V0Um93Q2xhc3Nlcyhyb3c6IFJvdyk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBjbGFzc05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMucm93Q2xhc3NOYW1lUHJlZGljYXRlcy5mb3JFYWNoKGkgPT4ge1xuICAgICAgaWYgKGkubWF0Y2hlcyhyb3cpKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChpLmNsYXNzTmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNsYXNzTmFtZXM7XG4gIH1cblxuICB1c2VGb3JtRmFjdG9yeShmYWN0b3J5OiAocm93OiBSb3cpID0+IERpcnR5VHJhY2tpbmdGb3JtPFJvdz4pOiB0aGlzIHtcbiAgICB0aGlzLl9jcmVhdGVGb3JtID0gZmFjdG9yeTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHByb3RlY3RlZCBhZGRDb2x1bW48QyBleHRlbmRzIENvbHVtbk1vZGVsPFJvdz4+KGNvbHVtbjogQywgaW5kZXg/OiBudW1iZXIpOiBDIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uTGlzdC5hZGRDb2x1bW4oY29sdW1uLCBpbmRleCk7XG4gIH1cblxuICAvLyByZW1vdmVDb2x1bW4oY29sdW1uOiBDb2x1bW5Nb2RlbDxSb3c+KSB7XG4gIC8vXG4gIC8vIH1cblxuICBjb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5UZXh0UHJvcGVydGllczogeyBbY29sdW1uTmFtZTogc3RyaW5nXTogQ29sdW1uVGV4dFByb3BlcnRpZXMgfSkge1xuICAgIHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwID0gY29sdW1uVGV4dFByb3BlcnRpZXM7XG4gIH1cblxuICBnZXRDb2x1bW5UZXh0UHJvcGVydGllcyhjb2x1bW5JZDogc3RyaW5nKTogQ29sdW1uVGV4dFByb3BlcnRpZXMge1xuICAgIHJldHVybiB0aGlzLl9jb2x1bW5UZXh0UHJvcGVydGllc0xvb2t1cCA/IHRoaXMuX2NvbHVtblRleHRQcm9wZXJ0aWVzTG9va3VwW2NvbHVtbklkXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHN0YXJ0RWRpdFNlc3Npb24ocm93OiBSb3cpOiBFZGl0U2Vzc2lvbjxSb3c+IHtcbiAgICBjb25zdCByb3dJZCA9IHRoaXMuaWRlbnRpdHlPZihyb3cpO1xuICAgIGlmICh0aGlzLl9yb3dzQmVpbmdFZGl0ZWQucXVlcnkoKS5pbmRleE9mKHJvdykgPiAtMSkge1xuICAgICAgcmV0dXJuIGxhbmcuaWxsZWdhbFN0YXRlKGBSb3cgd2l0aCBpZD0ke3Jvd0lkfSBhbHJlYWR5IGJlaW5nIGVkaXRlZGApO1xuICAgIH1cblxuICAgIC8vIHRvZG86IHBhc3MgdGhlIGZhY3RvcmllcyB0byB0aGUgZWRpdCBzZXNzaW9uIHNvIHdlIGNhbiBtYWtlIHRoZSB3aG9sZSBsb3QgcGx1Z2dhYmxlP1xuICAgIGNvbnN0IGZvcm0gPSB0aGlzLl9jcmVhdGVGb3JtKHJvdyk7XG4gICAgY29uc3Qgc2F2ZUNvbW1hbmQgPSB0aGlzLnNhdmVDb21tYW5kRmFjdG9yeS5jcmVhdGUoZm9ybSk7XG4gICAgY29uc3QgZWRpdFNlc3Npb24gPSBuZXcgRWRpdFNlc3Npb248Um93Pihyb3dJZCwgcm93LCBmb3JtLCBzYXZlQ29tbWFuZCk7XG4gICAgY29uc3QgeyB3aGVuIH0gPSBEc2wuZGlzcG9zZVdpdGgoZWRpdFNlc3Npb24pO1xuICAgIHdoZW4oZWRpdFNlc3Npb24ubGl2ZVJvd1ZhbHVlKS5jaGFuZ2VzKChlZGl0ZWRWYWx1ZSkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkLnJlcGxhY2VPclB1c2goZWRpdGVkVmFsdWUpO1xuICAgIH0sIHsgaW5pdGlhbFZhbHVlOiAndHJpZ2dlckNoYW5nZVVubGVzc05pbCcgfSk7XG5cbiAgICB0aGlzLl9lZGl0b3JTZXNzaW9ucy5wdXNoKGVkaXRTZXNzaW9uKTtcbiAgICBlZGl0U2Vzc2lvbi5vbkRpc3Bvc2UoKCkgPT4ge1xuICAgICAgdGhpcy5fcm93c0JlaW5nRWRpdGVkLnJlbW92ZShlZGl0U2Vzc2lvbi5saXZlUm93VmFsdWUudmFsdWUpO1xuICAgICAgdGhpcy5fZWRpdG9yU2Vzc2lvbnMucmVtb3ZlKGVkaXRTZXNzaW9uKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZWRpdFNlc3Npb247XG4gIH1cblxuICBnZXRFZGl0U2Vzc2lvbkZvcihyb3c6IFJvdyk6IEVkaXRTZXNzaW9uPFJvdz4ge1xuICAgIHJldHVybiB0aGlzLl9lZGl0b3JTZXNzaW9uQnlSb3dJZC5nZXQodGhpcy5pZGVudGl0eU9mKHJvdykpO1xuICB9XG5cbiAgY2FuY2VsQWxsRWRpdG9yU2Vzc2lvbnMoKSB7XG4gICAgdGhpcy5fZWRpdG9yU2Vzc2lvbnMucnVuSW5UcmFuc2FjdGlvbigoZHJhZnQpID0+IHtcbiAgICAgIHRoaXMuX3Jvd3NCZWluZ0VkaXRlZC5ydW5JblRyYW5zYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZHJhZnQudmFsdWUuZm9yRWFjaChzZXNzaW9uID0+IHNlc3Npb24uZGlzcG9zZSgpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbjogQ29sdW1uTW9kZWw8Um93Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUm93U2VsZWN0aW9uRW5hYmxlZCgpICYmIGNvbHVtbi5pc1Jvd1NlbGVjdGlvbkVuYWJsZWQoKTtcbiAgfVxuXG4gIGlzUm93U2VsZWN0aW9uRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oYXNVc2VyU2VsZWN0aW9uTW9kZWwoKSAmJiAhdGhpcy5yb3dTZWxlY3Rpb25EaXNhYmxlZE9uQWxsQ29sdW1ucy52YWx1ZTtcbiAgfVxuXG4gIGhhc1VzZXJTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICByZXR1cm4gISF0aGlzLnNlbGVjdGlvbkNvbHVtbk1vZGVsPy5zZWxlY3Rpb25Nb2RlbC5nZXREZWxlZ2F0ZSgpO1xuICB9XG5cbiAgZ2V0U2VsZWN0aW9uTW9kZWwoKTogU2VsZWN0aW9uTW9kZWw8Um93PiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uQ29sdW1uTW9kZWw/LnNlbGVjdGlvbk1vZGVsO1xuICB9XG5cbiAgaXNIb3ZlckVuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkKCkgfHwgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5saXN0ZW5lckNvdW50ID4gMDtcbiAgfVxuXG4gIGlzQ3Vyc29yRW5hYmxlZChjb2x1bW46IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICByZXR1cm4gdGhpcy5pc1Jvd1NlbGVjdGlvbkVuYWJsZWRGb3IoY29sdW1uKSB8fCB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmxpc3RlbmVyQ291bnQgPiAwO1xuICB9XG5cbiAgc2VsZWN0Um93KHJvdzogUm93KSB7XG4gICAgdGhpcy5zZWxlY3Rpb25Db2x1bW5Nb2RlbD8uc2VsZWN0Um93KHJvdyk7XG4gIH1cblxuICBvblJvd0NsaWNrZWQoY2FsbGJhY2s6IChyb3c6IFJvdykgPT4gdm9pZCk6IERpc3Bvc2FibGUge1xuICAgIHJldHVybiB0aGlzLnJvd0NsaWNrTGlzdGVuZXJzLmFkZChjYWxsYmFjayk7XG4gIH1cblxuICBfbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgaWYgKHRoaXMuaXNSb3dTZWxlY3Rpb25FbmFibGVkRm9yKGNvbHVtbk1vZGVsKSkge1xuICAgICAgdGhpcy5zZWxlY3RSb3cocm93KTtcbiAgICB9XG4gICAgdGhpcy5yb3dDbGlja0xpc3RlbmVycy5maXJlKGwgPT4gbChyb3cpKTtcbiAgfVxufVxuXG5cblRyYWNrRXh0ZXJuYWwub25lVGltZUJpbmRpbmcoQWJzdHJhY3RUYWJsZU1vZGVsKTtcbiJdfQ==
@@ -0,0 +1,168 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { Component, ElementRef, HostBinding, Input, NgZone } from '@angular/core';
3
+ import { Dsl, MutableValueModel, StoreInValueModel, TrackExternal, ValueModel } from '@coolon/pectin';
4
+ import { lang } from '@coolon/typescript-utilities';
5
+ import { ResizeAwareComponent } from '../resize-aware.component';
6
+ import { CustomTemplateColumnModel } from './table/column-model';
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Create your model:
10
+ * @example
11
+ * this.heroTableModel = TableModel.fromList(heroList, table => {
12
+ * table.pluck("firstName");
13
+ * table.pluck("lastName");
14
+ * table.addCustomColumn("fullName", hero => `${hero.firstName} ${hero.lastName}`);
15
+ * });
16
+ *
17
+ * Create your table
18
+ * @example
19
+ * <aup-table [tableModel]="heroTableModel"></aup-table>
20
+ *
21
+ * Column templates
22
+ * @example
23
+ * this.heroTableModel = TableModel.fromList(heroList, table => {
24
+ * table.pluck("firstName");
25
+ * table.pluck("lastName");
26
+ * table.addTemplateColumn("specialColumn");
27
+ * });
28
+ * <aup-table [tableModel]="heroTableModel">
29
+ * <div *aupColumnTemplate="let hero; columnId: 'specialColumn'; fillCell: true; padChild:false">
30
+ * {{hero.name}}
31
+ * </div>
32
+ * </aup-table>
33
+ *
34
+ * Styling
35
+ * @example
36
+ * // global settings
37
+ * :root {
38
+ * --aup-table-column-gap: 10px; // defaults to 24px
39
+ * --aup-table-row-hover-background-color, rgba(0, 0, 0, 0.05)
40
+ * --aup-table-row-selected-background-color: rebeccapurple; // defaults to transparent
41
+ * --aup-table-first-column-padding-left: 18px // defaults to --column-gap
42
+ * --aup-table-last-column-padding-right: 18px // defaults to --column-gap
43
+ * }
44
+ *
45
+ * // per table settings.
46
+ * aup-table {
47
+ * --column-gap: 10px; // defaults to 24px
48
+ * --row-hover-background-color, rgba(0, 0, 0, 0.05)
49
+ * --row-selected-background-color: rebeccapurple; // defaults to transparent
50
+ * --first-column-padding-left: 18px // defaults to --column-gap
51
+ * --last-column-padding-right: 18px // defaults to --column-gap
52
+ *
53
+ * aup-table-header-cell-renderer,
54
+ * aup-table-cell-renderer {
55
+ * &.aup-col-my-dasherised-column-id {
56
+ * // do stuff
57
+ * }
58
+ * &.first-visible-column {
59
+ * // do stuff
60
+ * }
61
+ * &.last-visible-column {
62
+ * // do stuff
63
+ * }
64
+ * }
65
+ * }
66
+ */
67
+ export class AbstractTableComponent extends ResizeAwareComponent {
68
+ constructor(elementRef, ngZone) {
69
+ super(elementRef, ngZone);
70
+ /**
71
+ * Set to true to enable scrolling. Once enabled the table will have 0 implicit height. You will either
72
+ * need to set it explicitly e.g. height: 400px; or by using flex or grid layout to make it fill it's
73
+ * containment area.
74
+ */
75
+ this.enableScrolling = false;
76
+ // TODO: support user defined header and row heights via css vars.
77
+ this.headerHeight = new MutableValueModel(56);
78
+ this.rowHeight = new MutableValueModel(48);
79
+ this.baseCssClass = 'aup-table-component';
80
+ const { chain, when } = Dsl.disposeWith(this);
81
+ const actualHeaderHeight = chain(this.showHeaderModel).map(show => {
82
+ return show ? this.headerHeight.value : 0;
83
+ }, { dependsOn: this.headerHeight });
84
+ this.visibleRowCount = chain(this.boundsModel).map(bounds => {
85
+ // TODO: this doesn't take into account any css styling adjustments etc. Will investigate if it's an issue.
86
+ const rawRowCount = (bounds.height - actualHeaderHeight.value) / this.rowHeight.value;
87
+ return rawRowCount < 1 ? 0 : Math.floor(rawRowCount);
88
+ }, {
89
+ dependsOn: [actualHeaderHeight, this.rowHeight],
90
+ postponeWhile: chain(this.boundsModel).pluckNumeric('height').isLessThan(1)
91
+ });
92
+ }
93
+ get hideHeader() {
94
+ return !this.showHeader;
95
+ }
96
+ getModel() {
97
+ return lang.abstractMethod(this.constructor);
98
+ }
99
+ ngOnInit() {
100
+ const { chain, valueOf, before, when, after, observe, switchOn } = Dsl.disposeWith(this);
101
+ this.columns = chain(this.getModel().columns);
102
+ this.columnIds = chain(this.columns).pluck('columnId');
103
+ this.columnsById = chain(this.columns).indexBy('columnId');
104
+ }
105
+ isEditing(row) {
106
+ return !!this.getModel().getEditSessionFor(row);
107
+ }
108
+ registerColumnTemplate(columnId, templateRef, viewContainer, fillCell, padChild) {
109
+ const column = this.columnsById.get(columnId);
110
+ if (column instanceof CustomTemplateColumnModel) {
111
+ column.setTemplate(templateRef, viewContainer, fillCell, padChild);
112
+ }
113
+ }
114
+ notifyCellClicked(columnModel, row) {
115
+ this.getModel()._notifyCellClicked(columnModel, row);
116
+ }
117
+ // @Trace()
118
+ isFirstVisibleColumn(columnId) {
119
+ return this.getModel().firstVisibleColumn.query().value?.columnId === columnId;
120
+ }
121
+ // @Trace()
122
+ isLastVisibleColumn(columnId) {
123
+ return this.getModel().lastVisibleColumn.query().value?.columnId === columnId;
124
+ }
125
+ getColumnClasses(columnId) {
126
+ const classes = [`aup-col-${this.columnsById.get(columnId).dasherisedColumnId}`];
127
+ if (this.isFirstVisibleColumn(columnId)) {
128
+ classes.push('first-visible-column');
129
+ }
130
+ if (this.isLastVisibleColumn(columnId)) {
131
+ classes.push('last-visible-column');
132
+ }
133
+ return classes;
134
+ }
135
+ }
136
+ AbstractTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
137
+ AbstractTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: AbstractTableComponent, selector: "aup-abstract-table", inputs: { showHeaderModel: "showHeaderModel", showHeader: "showHeader", enableScrolling: "enableScrolling" }, host: { properties: { "class.enable-scrolling": "this.enableScrolling", "class": "this.baseCssClass", "class.hide-header": "this.hideHeader" } }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
138
+ __decorate([
139
+ TrackExternal({ defaultValue: true }),
140
+ __metadata("design:type", ValueModel)
141
+ ], AbstractTableComponent.prototype, "showHeaderModel", void 0);
142
+ __decorate([
143
+ StoreInValueModel('showHeaderModel'),
144
+ __metadata("design:type", Boolean)
145
+ ], AbstractTableComponent.prototype, "showHeader", void 0);
146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: AbstractTableComponent, decorators: [{
147
+ type: Component,
148
+ args: [{
149
+ selector: 'aup-abstract-table',
150
+ template: ''
151
+ }]
152
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { showHeaderModel: [{
153
+ type: Input
154
+ }], showHeader: [{
155
+ type: Input
156
+ }], enableScrolling: [{
157
+ type: Input
158
+ }, {
159
+ type: HostBinding,
160
+ args: ['class.enable-scrolling']
161
+ }], baseCssClass: [{
162
+ type: HostBinding,
163
+ args: ['class']
164
+ }], hideHeader: [{
165
+ type: HostBinding,
166
+ args: ['class.hide-header']
167
+ }] } });
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtdGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvYWJzdHJhY3QtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsR0FBRyxFQUdILGlCQUFpQixFQUNqQixpQkFBaUIsRUFDakIsYUFBYSxFQUNiLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVqRSxPQUFPLEVBQWUseUJBQXlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFOUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwREc7QUFLSCxNQUFNLE9BQU8sc0JBQTRCLFNBQVEsb0JBQW9CO0lBaUNuRSxZQUFZLFVBQXNCLEVBQUUsTUFBYztRQUNoRCxLQUFLLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBeEI1Qjs7OztXQUlHO1FBR0gsb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFTeEIsa0VBQWtFO1FBQ2pELGlCQUFZLEdBQUcsSUFBSSxpQkFBaUIsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxpQkFBaUIsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUcvRCxpQkFBWSxHQUFHLHFCQUFxQixDQUFDO1FBSW5DLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcs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QUFZO3NCQURYLFdBQVc7dUJBQUMsT0FBTztnQkF1QmhCLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgRHNsLCBMaXN0TW9kZWwsXG4gIExpc3RNb2RlbENoYWluLFxuICBNYXBNb2RlbENoYWluLFxuICBNdXRhYmxlVmFsdWVNb2RlbCxcbiAgU3RvcmVJblZhbHVlTW9kZWwsXG4gIFRyYWNrRXh0ZXJuYWwsXG4gIFZhbHVlTW9kZWxcbn0gZnJvbSAnQGNvb2xvbi9wZWN0aW4nO1xuaW1wb3J0IHsgbGFuZyB9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgUmVzaXplQXdhcmVDb21wb25lbnQgfSBmcm9tICcuLi9yZXNpemUtYXdhcmUuY29tcG9uZW50JztcbmltcG9ydCB7IEFic3RyYWN0VGFibGVNb2RlbCB9IGZyb20gJy4vYWJzdHJhY3QtdGFibGUtbW9kZWwnO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwsIEN1c3RvbVRlbXBsYXRlQ29sdW1uTW9kZWwgfSBmcm9tICcuL3RhYmxlL2NvbHVtbi1tb2RlbCc7XG5cbi8qKlxuICogQ3JlYXRlIHlvdXIgbW9kZWw6XG4gKiBAZXhhbXBsZVxuICogdGhpcy5oZXJvVGFibGVNb2RlbCA9IFRhYmxlTW9kZWwuZnJvbUxpc3QoaGVyb0xpc3QsIHRhYmxlID0+IHtcbiAqICAgdGFibGUucGx1Y2soXCJmaXJzdE5hbWVcIik7XG4gKiAgIHRhYmxlLnBsdWNrKFwibGFzdE5hbWVcIik7XG4gKiAgIHRhYmxlLmFkZEN1c3RvbUNvbHVtbihcImZ1bGxOYW1lXCIsIGhlcm8gPT4gYCR7aGVyby5maXJzdE5hbWV9ICR7aGVyby5sYXN0TmFtZX1gKTtcbiAqIH0pO1xuICpcbiAqIENyZWF0ZSB5b3VyIHRhYmxlXG4gKiBAZXhhbXBsZVxuICogPGF1cC10YWJsZSBbdGFibGVNb2RlbF09XCJoZXJvVGFibGVNb2RlbFwiPjwvYXVwLXRhYmxlPlxuICpcbiAqIENvbHVtbiB0ZW1wbGF0ZXNcbiAqIEBleGFtcGxlXG4gKiB0aGlzLmhlcm9UYWJsZU1vZGVsID0gVGFibGVNb2RlbC5mcm9tTGlzdChoZXJvTGlzdCwgdGFibGUgPT4ge1xuICogICB0YWJsZS5wbHVjayhcImZpcnN0TmFtZVwiKTtcbiAqICAgdGFibGUucGx1Y2soXCJsYXN0TmFtZVwiKTtcbiAqICAgdGFibGUuYWRkVGVtcGxhdGVDb2x1bW4oXCJzcGVjaWFsQ29sdW1uXCIpO1xuICogfSk7XG4gKiA8YXVwLXRhYmxlIFt0YWJsZU1vZGVsXT1cImhlcm9UYWJsZU1vZGVsXCI+XG4gKiAgIDxkaXYgKmF1cENvbHVtblRlbXBsYXRlPVwibGV0IGhlcm87IGNvbHVtbklkOiAnc3BlY2lhbENvbHVtbic7IGZpbGxDZWxsOiB0cnVlOyBwYWRDaGlsZDpmYWxzZVwiPlxuICogICAgIHt7aGVyby5uYW1lfX1cbiAqICAgPC9kaXY+XG4gKiA8L2F1cC10YWJsZT5cbiAqXG4gKiBTdHlsaW5nXG4gKiBAZXhhbXBsZVxuICogIC8vIGdsb2JhbCBzZXR0aW5nc1xuICogOnJvb3Qge1xuICogICAtLWF1cC10YWJsZS1jb2x1bW4tZ2FwOiAxMHB4OyAvLyBkZWZhdWx0cyB0byAyNHB4XG4gKiAgIC0tYXVwLXRhYmxlLXJvdy1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDUpXG4gKiAgIC0tYXVwLXRhYmxlLXJvdy1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yOiByZWJlY2NhcHVycGxlOyAvLyBkZWZhdWx0cyB0byB0cmFuc3BhcmVudFxuICogICAtLWF1cC10YWJsZS1maXJzdC1jb2x1bW4tcGFkZGluZy1sZWZ0OiAxOHB4IC8vIGRlZmF1bHRzIHRvIC0tY29sdW1uLWdhcFxuICogICAtLWF1cC10YWJsZS1sYXN0LWNvbHVtbi1wYWRkaW5nLXJpZ2h0OiAxOHB4IC8vIGRlZmF1bHRzIHRvIC0tY29sdW1uLWdhcFxuICogfVxuICpcbiAqIC8vIHBlciB0YWJsZSBzZXR0aW5ncy5cbiAqIGF1cC10YWJsZSB7XG4gKiAgIC0tY29sdW1uLWdhcDogMTBweDsgLy8gZGVmYXVsdHMgdG8gMjRweFxuICogICAtLXJvdy1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yLCByZ2JhKDAsIDAsIDAsIDAuMDUpXG4gKiAgIC0tcm93LXNlbGVjdGVkLWJhY2tncm91bmQtY29sb3I6IHJlYmVjY2FwdXJwbGU7IC8vIGRlZmF1bHRzIHRvIHRyYW5zcGFyZW50XG4gKiAgIC0tZmlyc3QtY29sdW1uLXBhZGRpbmctbGVmdDogMThweCAvLyBkZWZhdWx0cyB0byAtLWNvbHVtbi1nYXBcbiAqICAgLS1sYXN0LWNvbHVtbi1wYWRkaW5nLXJpZ2h0OiAxOHB4IC8vIGRlZmF1bHRzIHRvIC0tY29sdW1uLWdhcFxuICpcbiAqICAgYXVwLXRhYmxlLWhlYWRlci1jZWxsLXJlbmRlcmVyLFxuICogICBhdXAtdGFibGUtY2VsbC1yZW5kZXJlciB7XG4gKiAgICAgJi5hdXAtY29sLW15LWRhc2hlcmlzZWQtY29sdW1uLWlkIHtcbiAqICAgICAgIC8vIGRvIHN0dWZmXG4gKiAgICAgfVxuICogICAgICYuZmlyc3QtdmlzaWJsZS1jb2x1bW4ge1xuICogICAgICAgLy8gZG8gc3R1ZmZcbiAqICAgICB9XG4gKiAgICAgJi5sYXN0LXZpc2libGUtY29sdW1uIHtcbiAqICAgICAgIC8vIGRvIHN0dWZmXG4gKiAgICAgfVxuICogICB9XG4gKiB9XG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1cC1hYnN0cmFjdC10YWJsZScsXG4gIHRlbXBsYXRlOiAnJ1xufSlcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFRhYmxlQ29tcG9uZW50PFJvdz4gZXh0ZW5kcyBSZXNpemVBd2FyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KClcbiAgQFRyYWNrRXh0ZXJuYWwoeyBkZWZhdWx0VmFsdWU6IHRydWUgfSlcbiAgc2hvd0hlYWRlck1vZGVsOiBWYWx1ZU1vZGVsPGJvb2xlYW4+O1xuXG4gIEBJbnB1dCgpXG4gIEBTdG9yZUluVmFsdWVNb2RlbCgnc2hvd0hlYWRlck1vZGVsJylcbiAgc2hvd0hlYWRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZW5hYmxlIHNjcm9sbGluZy4gIE9uY2UgZW5hYmxlZCB0aGUgdGFibGUgd2lsbCBoYXZlIDAgaW1wbGljaXQgaGVpZ2h0LiAgWW91IHdpbGwgZWl0aGVyXG4gICAqIG5lZWQgdG8gc2V0IGl0IGV4cGxpY2l0bHkgZS5nLiBoZWlnaHQ6IDQwMHB4OyBvciBieSB1c2luZyBmbGV4IG9yIGdyaWQgbGF5b3V0IHRvIG1ha2UgaXQgZmlsbCBpdCdzXG4gICAqIGNvbnRhaW5tZW50IGFyZWEuXG4gICAqL1xuICBASW5wdXQoKVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmVuYWJsZS1zY3JvbGxpbmcnKVxuICBlbmFibGVTY3JvbGxpbmcgPSBmYWxzZTtcblxuICBjb2x1bW5zOiBMaXN0TW9kZWxDaGFpbjxDb2x1bW5Nb2RlbDxSb3c+PjtcbiAgY29sdW1uSWRzOiBMaXN0TW9kZWxDaGFpbjxzdHJpbmc+O1xuICBwcml2YXRlIGNvbHVtbnNCeUlkOiBNYXBNb2RlbENoYWluPHN0cmluZywgQ29sdW1uTW9kZWw8Um93Pj47XG5cbiAgcmVhZG9ubHkgdmlzaWJsZVJvd0NvdW50OiBWYWx1ZU1vZGVsPG51bWJlcj47XG5cblxuICAvLyBUT0RPOiBzdXBwb3J0IHVzZXIgZGVmaW5lZCBoZWFkZXIgYW5kIHJvdyBoZWlnaHRzIHZpYSBjc3MgdmFycy5cbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJIZWlnaHQgPSBuZXcgTXV0YWJsZVZhbHVlTW9kZWw8bnVtYmVyPig1Nik7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm93SGVpZ2h0ID0gbmV3IE11dGFibGVWYWx1ZU1vZGVsPG51bWJlcj4oNDgpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBiYXNlQ3NzQ2xhc3MgPSAnYXVwLXRhYmxlLWNvbXBvbmVudCc7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZiwgbmdab25lOiBOZ1pvbmUpIHtcbiAgICBzdXBlcihlbGVtZW50UmVmLCBuZ1pvbmUpO1xuICAgIGNvbnN0IHsgY2hhaW4sIHdoZW4gfSA9IERzbC5kaXNwb3NlV2l0aCh0aGlzKTtcblxuICAgIGNvbnN0IGFjdHVhbEhlYWRlckhlaWdodCA9IGNoYWluKHRoaXMuc2hvd0hlYWRlck1vZGVsKS5tYXAoc2hvdyA9PiB7XG4gICAgICByZXR1cm4gc2hvdyA/IHRoaXMuaGVhZGVySGVpZ2h0LnZhbHVlIDogMDtcbiAgICB9LCB7IGRlcGVuZHNPbjogdGhpcy5oZWFkZXJIZWlnaHQgfSk7XG5cbiAgICB0aGlzLnZpc2libGVSb3dDb3VudCA9IGNoYWluKHRoaXMuYm91bmRzTW9kZWwpLm1hcChib3VuZHMgPT4ge1xuICAgICAgLy8gVE9ETzogdGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IGFueSBjc3Mgc3R5bGluZyBhZGp1c3RtZW50cyBldGMuICBXaWxsIGludmVzdGlnYXRlIGlmIGl0J3MgYW4gaXNzdWUuXG4gICAgICBjb25zdCByYXdSb3dDb3VudCA9IChib3VuZHMuaGVpZ2h0IC0gYWN0dWFsSGVhZGVySGVpZ2h0LnZhbHVlKSAvIHRoaXMucm93SGVpZ2h0LnZhbHVlO1xuICAgICAgcmV0dXJuIHJhd1Jvd0NvdW50IDwgMSA/IDAgOiBNYXRoLmZsb29yKHJhd1Jvd0NvdW50KTtcbiAgICB9LCB7XG4gICAgICBkZXBlbmRzT246IFthY3R1YWxIZWFkZXJIZWlnaHQsIHRoaXMucm93SGVpZ2h0XSxcbiAgICAgIHBvc3Rwb25lV2hpbGU6IGNoYWluKHRoaXMuYm91bmRzTW9kZWwpLnBsdWNrTnVtZXJpYygnaGVpZ2h0JykuaXNMZXNzVGhhbigxKVxuICAgIH0pO1xuXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmhpZGUtaGVhZGVyJylcbiAgZ2V0IGhpZGVIZWFkZXIoKSB7XG4gICAgcmV0dXJuICF0aGlzLnNob3dIZWFkZXI7XG4gIH1cblxuICBnZXRNb2RlbCgpOiBBYnN0cmFjdFRhYmxlTW9kZWw8Um93PiB7XG4gICAgcmV0dXJuIGxhbmcuYWJzdHJhY3RNZXRob2QodGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBjb25zdCB7IGNoYWluLCB2YWx1ZU9mLCBiZWZvcmUsIHdoZW4sIGFmdGVyLCBvYnNlcnZlLCBzd2l0Y2hPbiB9ID0gRHNsLmRpc3Bvc2VXaXRoKHRoaXMpO1xuICAgIHRoaXMuY29sdW1ucyA9IGNoYWluKHRoaXMuZ2V0TW9kZWwoKS5jb2x1bW5zKTtcbiAgICB0aGlzLmNvbHVtbklkcyA9IGNoYWluKHRoaXMuY29sdW1ucykucGx1Y2soJ2NvbHVtbklkJyk7XG4gICAgdGhpcy5jb2x1bW5zQnlJZCA9IGNoYWluKHRoaXMuY29sdW1ucykuaW5kZXhCeSgnY29sdW1uSWQnKTtcbiAgfVxuXG4gIGlzRWRpdGluZyhyb3c6IFJvdyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZ2V0TW9kZWwoKS5nZXRFZGl0U2Vzc2lvbkZvcihyb3cpO1xuICB9XG5cbiAgcmVnaXN0ZXJDb2x1bW5UZW1wbGF0ZShjb2x1bW5JZDogc3RyaW5nLCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZiwgZmlsbENlbGw6IGJvb2xlYW4sIHBhZENoaWxkOiBib29sZWFuKSB7XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5jb2x1bW5zQnlJZC5nZXQoY29sdW1uSWQpO1xuICAgIGlmIChjb2x1bW4gaW5zdGFuY2VvZiBDdXN0b21UZW1wbGF0ZUNvbHVtbk1vZGVsKSB7XG4gICAgICBjb2x1bW4uc2V0VGVtcGxhdGUodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXIsIGZpbGxDZWxsLCBwYWRDaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgbm90aWZ5Q2VsbENsaWNrZWQoY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4sIHJvdzogUm93KSB7XG4gICAgdGhpcy5nZXRNb2RlbCgpLl9ub3RpZnlDZWxsQ2xpY2tlZChjb2x1bW5Nb2RlbCwgcm93KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIGlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmZpcnN0VmlzaWJsZUNvbHVtbi5xdWVyeSgpLnZhbHVlPy5jb2x1bW5JZCA9PT0gY29sdW1uSWQ7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBpc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRNb2RlbCgpLmxhc3RWaXNpYmxlQ29sdW1uLnF1ZXJ5KCkudmFsdWU/LmNvbHVtbklkID09PSBjb2x1bW5JZDtcbiAgfVxuXG4gIGdldENvbHVtbkNsYXNzZXMoY29sdW1uSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBbYGF1cC1jb2wtJHt0aGlzLmNvbHVtbnNCeUlkLmdldChjb2x1bW5JZCkuZGFzaGVyaXNlZENvbHVtbklkfWBdO1xuICAgIGlmICh0aGlzLmlzRmlyc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdmaXJzdC12aXNpYmxlLWNvbHVtbicpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0xhc3RWaXNpYmxlQ29sdW1uKGNvbHVtbklkKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKCdsYXN0LXZpc2libGUtY29sdW1uJyk7XG4gICAgfVxuICAgIHJldHVybiBjbGFzc2VzO1xuICB9XG59XG4iXX0=
@@ -87,7 +87,7 @@ export class TemplateCellRendererPortalRef extends CellRendererPortalRef {
87
87
  host.padChild = this.padChild;
88
88
  }
89
89
  createPortal(data) {
90
- return new TemplatePortal(this.templateRef, this.viewContainer, Object.assign(Object.assign({}, (data)), { $implicit: data.row }));
90
+ return new TemplatePortal(this.templateRef, this.viewContainer, { ...(data), $implicit: data.row });
91
91
  }
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1wb3J0YWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvY2VsbC1wb3J0YWwtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTXRELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBR2xGLE1BQU0sT0FBZ0IsYUFBYTtJQUNqQztJQUNBLENBQUM7Q0FLRjtBQUVELE1BQU0sT0FBTyxtQkFBNEIsU0FBUSxhQUF1RDtJQUN0RyxZQUFxQixhQUErQixFQUFXLGdCQUF1RTtRQUNwSSxLQUFLLEVBQUUsQ0FBQztRQURXLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUQ7SUFFdEksQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFzQyxFQUFFLFdBQTZCO1FBQ2xGLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsSUFBSSxlQUFl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LENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFrQjtRQUNyQyxPQUFPLElBQUksY0FBYyxDQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsa0NBQU8sQ0FBQyxJQUFJLENBQUMsS0FBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBRyxDQUFDO0lBQzNHLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQgeyBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhY2UgfSBmcm9tICdAY29vbG9uL3BlY3Rpbic7XG5pbXBvcnQgeyBhc3NlcnQgfSBmcm9tICdAY29vbG9uL3R5cGVzY3JpcHQtdXRpbGl0aWVzJztcbmltcG9ydCB7IENvbHVtbk1vZGVsLCBSb3dEYXRhIH0gZnJvbSAnLi9jb2x1bW4tbW9kZWwnO1xuaW1wb3J0IHsgRWRpdFNlc3Npb24gfSBmcm9tICcuLi9lZGl0LXNlc3Npb24nO1xuaW1wb3J0IHsgVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWNlbGwtcmVuZGVyZXIvdGFibGUtY2VsbC1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGFibGVIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlLWhlYWRlci1jZWxsLXJlbmRlcmVyL3RhYmxlLWhlYWRlci1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBIRUFERVJfQ0VMTF9SRU5ERVJFUl9QT1JUQUwgPSBTeW1ib2woJ2F1cC1jZWxsLWhlYWRlci1yZW5kZXJlci1jb21wb25lbnQtcmVmJyk7XG5leHBvcnQgY29uc3QgQ0VMTF9SRU5ERVJFUl9QT1JUQUwgPSBTeW1ib2woJ2F1cC1jZWxsLXJlbmRlcmVyLWNvbXBvbmVudC1yZWYnKTtcbmV4cG9ydCBjb25zdCBDRUxMX0VESVRPUl9QT1JUQUwgPSBTeW1ib2woJ2F1cC1jZWxsLWVkaXRvci1jb21wb25lbnQtcmVmJyk7XG5leHBvcnQgY29uc3QgUE9SVEFMX1JFTkRFUkVSX0NPTVBPTkVOVCA9IFN5bWJvbCgnYXVwLWNlbGwtcmVuZGVyZXItcG9ydGFsLWNvbXBvbmVudCcpO1xuZXhwb3J0IGNvbnN0IFBPUlRBTF9FRElUT1JfQ09NUE9ORU5UID0gU3ltYm9sKCdhdXAtY2VsbC1lZGl0b3ItcG9ydGFsLWNvbXBvbmVudCcpO1xuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDZWxsUG9ydGFsUmVmPFJvdywgSG9zdCwgUG9ydGFsPiB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICB9XG5cbiAgYWJzdHJhY3QgaW5pdGlhbGlzZUhvc3QoaG9zdDogSG9zdCwgY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4pXG5cbiAgYWJzdHJhY3Qgb25Qb3J0YWxBdHRhY2hlZChob3N0OiBIb3N0LCBwb3J0YWxDb21wb25lbnQ6IFBvcnRhbCk7XG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsSGVhZGVyUG9ydGFsUmVmPFJvdywgQz4gZXh0ZW5kcyBDZWxsUG9ydGFsUmVmPFJvdywgVGFibGVIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQsIEM+IHtcbiAgY29uc3RydWN0b3IocmVhZG9ubHkgY29tcG9uZW50VHlwZTogQ29tcG9uZW50VHlwZTxDPiwgcmVhZG9ubHkgaW5pdGlhbGlzZUhlYWRlcjogKGNvbXBvbmVudDogQywgY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4pID0+IHZvaWQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgaW5pdGlhbGlzZUhvc3QoaG9zdDogVGFibGVIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQsIGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+KSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KGhvc3QpO1xuICAgIGhvc3RbSEVBREVSX0NFTExfUkVOREVSRVJfUE9SVEFMXSA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5jb21wb25lbnRUeXBlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9ydGFsQXR0YWNoZWQoaG9zdDogVGFibGVIZWFkZXJDZWxsUmVuZGVyZXJDb21wb25lbnQsIHBvcnRhbENvbXBvbmVudDogQykge1xuICAgIHRoaXMuaW5pdGlhbGlzZUhlYWRlcihwb3J0YWxDb21wb25lbnQsIGhvc3QuY29sdW1uKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBQb3J0YWw+IGV4dGVuZHMgQ2VsbFBvcnRhbFJlZjxSb3csIFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIFBvcnRhbD4ge1xuICBhYnN0cmFjdCBwdXNoU3RhdGUoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93Pik6IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wb25lbnRDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBQb3J0YWw+IGV4dGVuZHMgQ2VsbFJlbmRlcmVyUG9ydGFsUmVmPFJvdywgUG9ydGFsPiB7XG5cblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPFBvcnRhbD4sIHJlYWRvbmx5IHVwZGF0ZUNvbXBvbmVudDogKGNvbXBvbmVudDogUG9ydGFsLCByb3dEYXRhOiBSb3dEYXRhPFJvdz4sIGZpcnN0VGltZTogYm9vbGVhbikgPT4gdm9pZCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBpbml0aWFsaXNlSG9zdChob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+LCBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93Pikge1xuICAgIGhvc3RbQ0VMTF9SRU5ERVJFUl9QT1JUQUxdID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmNvbXBvbmVudFR5cGUpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3J0YWxBdHRhY2hlZChob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+LCBwb3J0YWxDb21wb25lbnQ6IFBvcnRhbCkge1xuICAgIGhvc3RbUE9SVEFMX1JFTkRFUkVSX0NPTVBPTkVOVF0gPSBwb3J0YWxDb21wb25lbnQ7XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQocG9ydGFsQ29tcG9uZW50LCBob3N0LmdldFJvd0RhdGEoKSwgdHJ1ZSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBwdXNoU3RhdGUoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93Pik6IHZvaWQge1xuICAgIGlmIChob3N0W1BPUlRBTF9SRU5ERVJFUl9DT01QT05FTlRdKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudChob3N0W1BPUlRBTF9SRU5ERVJFUl9DT01QT05FTlRdLCBob3N0LmdldFJvd0RhdGEoKSwgZmFsc2UpO1xuICAgIH1cbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBDZWxsRWRpdG9yUG9ydGFsUmVmPFJvdywgUG9ydGFsPiBleHRlbmRzIENlbGxQb3J0YWxSZWY8Um93LCBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+LCBQb3J0YWw+IHtcblxuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPFBvcnRhbD4sIHJlYWRvbmx5IGluaXRpYWxpc2VFZGl0b3JTZXNzaW9uOiAoY29tcG9uZW50OiBQb3J0YWwsIGVkaXRTZXNzaW9uOiBFZGl0U2Vzc2lvbjxSb3c+KSA9PiB2b2lkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGluaXRpYWxpc2VIb3N0KGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+KSB7XG4gICAgYXNzZXJ0LmlzVHJ1dGh5KGhvc3QpO1xuICAgIGhvc3RbQ0VMTF9FRElUT1JfUE9SVEFMXSA9IG5ldyBDb21wb25lbnRQb3J0YWwodGhpcy5jb21wb25lbnRUeXBlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9ydGFsQXR0YWNoZWQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgcG9ydGFsQ29tcG9uZW50OiBQb3J0YWwpIHtcbiAgICBob3N0W1BPUlRBTF9FRElUT1JfQ09NUE9ORU5UXSA9IHBvcnRhbENvbXBvbmVudDtcbiAgICB0aGlzLmluaXRpYWxpc2VFZGl0b3JTZXNzaW9uKHBvcnRhbENvbXBvbmVudCwgaG9zdC5lZGl0U2Vzc2lvbik7XG4gIH1cblxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93PiBleHRlbmRzIENlbGxSZW5kZXJlclBvcnRhbFJlZjxSb3csIHVuZGVmaW5lZD4ge1xuXG4gIHByaXZhdGUgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcbiAgcHJpdmF0ZSBmaWxsQ2VsbDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBwYWRDaGlsZDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyUG9ydGFsKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBmaWxsQ2VsbDogYm9vbGVhbiwgcGFkQ2hpbGQ6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnRlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gICAgdGhpcy52aWV3Q29udGFpbmVyID0gdmlld0NvbnRhaW5lcjtcbiAgICB0aGlzLmZpbGxDZWxsID0gZmlsbENlbGw7XG4gICAgdGhpcy5wYWRDaGlsZCA9IHBhZENoaWxkO1xuICB9XG5cbiAgaW5pdGlhbGlzZUhvc3QoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoaG9zdCk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcnRhbEF0dGFjaGVkKGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIHBvcnRhbENvbXBvbmVudDogdW5kZWZpbmVkKSB7XG4gICAgLy8gIGRvbid0IGNhcmVcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHB1c2hTdGF0ZShob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+KTogdm9pZCB7XG4gICAgaG9zdFtDRUxMX1JFTkRFUkVSX1BPUlRBTF0gPSB0aGlzLmNyZWF0ZVBvcnRhbChob3N0LmdldFJvd0RhdGEoKSk7XG4gICAgaG9zdC5maWxsQ2VsbCA9IHRoaXMuZmlsbENlbGw7XG4gICAgaG9zdC5wYWRDaGlsZCA9IHRoaXMucGFkQ2hpbGQ7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBvcnRhbChkYXRhOiBSb3dEYXRhPFJvdz4pIHtcbiAgICByZXR1cm4gbmV3IFRlbXBsYXRlUG9ydGFsPGFueT4odGhpcy50ZW1wbGF0ZVJlZiwgdGhpcy52aWV3Q29udGFpbmVyLCB7IC4uLihkYXRhKSwgJGltcGxpY2l0OiBkYXRhLnJvdyB9KTtcbiAgfVxufVxuIl19
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbC1wb3J0YWwtcmVmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyLXVpLXBvd2VydXBzL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXMvdGFibGUvY2VsbC1wb3J0YWwtcmVmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTXRELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLE1BQU0sQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLE1BQU0sQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0FBQ3RGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLE1BQU0sQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO0FBR2xGLE1BQU0sT0FBZ0IsYUFBYTtJQUNqQztJQUNBLENBQUM7Q0FLRjtBQUVELE1BQU0sT0FBTyxtQkFBNEIsU0FBUSxhQUF1RDtJQUN0RyxZQUFxQixhQUErQixFQUFXLGdCQUF1RTtRQUNwSSxLQUFLLEVBQUUsQ0FBQztRQURXLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUFXLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBdUQ7SUFFdEksQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFzQyxFQUFFLFdBQTZCO1FBQ2xGLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsSUFBSSxlQUFl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LENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFrQjtRQUNyQyxPQUFPLElBQUksY0FBYyxDQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDM0csQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50VHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCwgVGVtcGxhdGVQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFjZSB9IGZyb20gJ0Bjb29sb24vcGVjdGluJztcbmltcG9ydCB7IGFzc2VydCB9IGZyb20gJ0Bjb29sb24vdHlwZXNjcmlwdC11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ29sdW1uTW9kZWwsIFJvd0RhdGEgfSBmcm9tICcuL2NvbHVtbi1tb2RlbCc7XG5pbXBvcnQgeyBFZGl0U2Vzc2lvbiB9IGZyb20gJy4uL2VkaXQtc2Vzc2lvbic7XG5pbXBvcnQgeyBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtY2VsbC1yZW5kZXJlci90YWJsZS1jZWxsLXJlbmRlcmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCB9IGZyb20gJy4vdGFibGUtaGVhZGVyLWNlbGwtcmVuZGVyZXIvdGFibGUtaGVhZGVyLWNlbGwtcmVuZGVyZXIuY29tcG9uZW50JztcblxuZXhwb3J0IGNvbnN0IEhFQURFUl9DRUxMX1JFTkRFUkVSX1BPUlRBTCA9IFN5bWJvbCgnYXVwLWNlbGwtaGVhZGVyLXJlbmRlcmVyLWNvbXBvbmVudC1yZWYnKTtcbmV4cG9ydCBjb25zdCBDRUxMX1JFTkRFUkVSX1BPUlRBTCA9IFN5bWJvbCgnYXVwLWNlbGwtcmVuZGVyZXItY29tcG9uZW50LXJlZicpO1xuZXhwb3J0IGNvbnN0IENFTExfRURJVE9SX1BPUlRBTCA9IFN5bWJvbCgnYXVwLWNlbGwtZWRpdG9yLWNvbXBvbmVudC1yZWYnKTtcbmV4cG9ydCBjb25zdCBQT1JUQUxfUkVOREVSRVJfQ09NUE9ORU5UID0gU3ltYm9sKCdhdXAtY2VsbC1yZW5kZXJlci1wb3J0YWwtY29tcG9uZW50Jyk7XG5leHBvcnQgY29uc3QgUE9SVEFMX0VESVRPUl9DT01QT05FTlQgPSBTeW1ib2woJ2F1cC1jZWxsLWVkaXRvci1wb3J0YWwtY29tcG9uZW50Jyk7XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENlbGxQb3J0YWxSZWY8Um93LCBIb3N0LCBQb3J0YWw+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBhYnN0cmFjdCBpbml0aWFsaXNlSG9zdChob3N0OiBIb3N0LCBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93PilcblxuICBhYnN0cmFjdCBvblBvcnRhbEF0dGFjaGVkKGhvc3Q6IEhvc3QsIHBvcnRhbENvbXBvbmVudDogUG9ydGFsKTtcbn1cblxuZXhwb3J0IGNsYXNzIENlbGxIZWFkZXJQb3J0YWxSZWY8Um93LCBDPiBleHRlbmRzIENlbGxQb3J0YWxSZWY8Um93LCBUYWJsZUhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCwgQz4ge1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBjb21wb25lbnRUeXBlOiBDb21wb25lbnRUeXBlPEM+LCByZWFkb25seSBpbml0aWFsaXNlSGVhZGVyOiAoY29tcG9uZW50OiBDLCBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93PikgPT4gdm9pZCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBpbml0aWFsaXNlSG9zdChob3N0OiBUYWJsZUhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCwgY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoaG9zdCk7XG4gICAgaG9zdFtIRUFERVJfQ0VMTF9SRU5ERVJFUl9QT1JUQUxdID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmNvbXBvbmVudFR5cGUpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3J0YWxBdHRhY2hlZChob3N0OiBUYWJsZUhlYWRlckNlbGxSZW5kZXJlckNvbXBvbmVudCwgcG9ydGFsQ29tcG9uZW50OiBDKSB7XG4gICAgdGhpcy5pbml0aWFsaXNlSGVhZGVyKHBvcnRhbENvbXBvbmVudCwgaG9zdC5jb2x1bW4pO1xuICB9XG5cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIENlbGxSZW5kZXJlclBvcnRhbFJlZjxSb3csIFBvcnRhbD4gZXh0ZW5kcyBDZWxsUG9ydGFsUmVmPFJvdywgVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgUG9ydGFsPiB7XG4gIGFic3RyYWN0IHB1c2hTdGF0ZShob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+KTogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIENvbXBvbmVudENlbGxSZW5kZXJlclBvcnRhbFJlZjxSb3csIFBvcnRhbD4gZXh0ZW5kcyBDZWxsUmVuZGVyZXJQb3J0YWxSZWY8Um93LCBQb3J0YWw+IHtcblxuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8UG9ydGFsPiwgcmVhZG9ubHkgdXBkYXRlQ29tcG9uZW50OiAoY29tcG9uZW50OiBQb3J0YWwsIHJvd0RhdGE6IFJvd0RhdGE8Um93PiwgZmlyc3RUaW1lOiBib29sZWFuKSA9PiB2b2lkKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIGluaXRpYWxpc2VIb3N0KGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIGNvbHVtbk1vZGVsOiBDb2x1bW5Nb2RlbDxSb3c+KSB7XG4gICAgaG9zdFtDRUxMX1JFTkRFUkVSX1BPUlRBTF0gPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuY29tcG9uZW50VHlwZSk7XG4gIH1cblxuICAvLyBAVHJhY2UoKVxuICBvblBvcnRhbEF0dGFjaGVkKGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIHBvcnRhbENvbXBvbmVudDogUG9ydGFsKSB7XG4gICAgaG9zdFtQT1JUQUxfUkVOREVSRVJfQ09NUE9ORU5UXSA9IHBvcnRhbENvbXBvbmVudDtcbiAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudChwb3J0YWxDb21wb25lbnQsIGhvc3QuZ2V0Um93RGF0YSgpLCB0cnVlKTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIHB1c2hTdGF0ZShob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+KTogdm9pZCB7XG4gICAgaWYgKGhvc3RbUE9SVEFMX1JFTkRFUkVSX0NPTVBPTkVOVF0pIHtcbiAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KGhvc3RbUE9SVEFMX1JFTkRFUkVSX0NPTVBPTkVOVF0sIGhvc3QuZ2V0Um93RGF0YSgpLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbn1cblxuZXhwb3J0IGNsYXNzIENlbGxFZGl0b3JQb3J0YWxSZWY8Um93LCBQb3J0YWw+IGV4dGVuZHMgQ2VsbFBvcnRhbFJlZjxSb3csIFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4sIFBvcnRhbD4ge1xuXG4gIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGNvbXBvbmVudFR5cGU6IENvbXBvbmVudFR5cGU8UG9ydGFsPiwgcmVhZG9ubHkgaW5pdGlhbGlzZUVkaXRvclNlc3Npb246IChjb21wb25lbnQ6IFBvcnRhbCwgZWRpdFNlc3Npb246IEVkaXRTZXNzaW9uPFJvdz4pID0+IHZvaWQpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgaW5pdGlhbGlzZUhvc3QoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgY29sdW1uTW9kZWw6IENvbHVtbk1vZGVsPFJvdz4pIHtcbiAgICBhc3NlcnQuaXNUcnV0aHkoaG9zdCk7XG4gICAgaG9zdFtDRUxMX0VESVRPUl9QT1JUQUxdID0gbmV3IENvbXBvbmVudFBvcnRhbCh0aGlzLmNvbXBvbmVudFR5cGUpO1xuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgb25Qb3J0YWxBdHRhY2hlZChob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+LCBwb3J0YWxDb21wb25lbnQ6IFBvcnRhbCkge1xuICAgIGhvc3RbUE9SVEFMX0VESVRPUl9DT01QT05FTlRdID0gcG9ydGFsQ29tcG9uZW50O1xuICAgIHRoaXMuaW5pdGlhbGlzZUVkaXRvclNlc3Npb24ocG9ydGFsQ29tcG9uZW50LCBob3N0LmVkaXRTZXNzaW9uKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjbGFzcyBUZW1wbGF0ZUNlbGxSZW5kZXJlclBvcnRhbFJlZjxSb3c+IGV4dGVuZHMgQ2VsbFJlbmRlcmVyUG9ydGFsUmVmPFJvdywgdW5kZWZpbmVkPiB7XG5cbiAgcHJpdmF0ZSB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuICBwcml2YXRlIGZpbGxDZWxsOiBib29sZWFuO1xuICBwcml2YXRlIHBhZENoaWxkOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJQb3J0YWwodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIGZpbGxDZWxsOiBib29sZWFuLCBwYWRDaGlsZDogYm9vbGVhbikge1xuICAgIHRoaXMudGVtcGxhdGVSZWYgPSB0ZW1wbGF0ZVJlZjtcbiAgICB0aGlzLnZpZXdDb250YWluZXIgPSB2aWV3Q29udGFpbmVyO1xuICAgIHRoaXMuZmlsbENlbGwgPSBmaWxsQ2VsbDtcbiAgICB0aGlzLnBhZENoaWxkID0gcGFkQ2hpbGQ7XG4gIH1cblxuICBpbml0aWFsaXNlSG9zdChob3N0OiBUYWJsZUNlbGxSZW5kZXJlckNvbXBvbmVudDxSb3c+LCBjb2x1bW5Nb2RlbDogQ29sdW1uTW9kZWw8Um93Pikge1xuICAgIGFzc2VydC5pc1RydXRoeShob3N0KTtcbiAgfVxuXG4gIC8vIEBUcmFjZSgpXG4gIG9uUG9ydGFsQXR0YWNoZWQoaG9zdDogVGFibGVDZWxsUmVuZGVyZXJDb21wb25lbnQ8Um93PiwgcG9ydGFsQ29tcG9uZW50OiB1bmRlZmluZWQpIHtcbiAgICAvLyAgZG9uJ3QgY2FyZVxuICB9XG5cbiAgLy8gQFRyYWNlKClcbiAgcHVzaFN0YXRlKGhvc3Q6IFRhYmxlQ2VsbFJlbmRlcmVyQ29tcG9uZW50PFJvdz4pOiB2b2lkIHtcbiAgICBob3N0W0NFTExfUkVOREVSRVJfUE9SVEFMXSA9IHRoaXMuY3JlYXRlUG9ydGFsKGhvc3QuZ2V0Um93RGF0YSgpKTtcbiAgICBob3N0LmZpbGxDZWxsID0gdGhpcy5maWxsQ2VsbDtcbiAgICBob3N0LnBhZENoaWxkID0gdGhpcy5wYWRDaGlsZDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUG9ydGFsKGRhdGE6IFJvd0RhdGE8Um93Pikge1xuICAgIHJldHVybiBuZXcgVGVtcGxhdGVQb3J0YWw8YW55Pih0aGlzLnRlbXBsYXRlUmVmLCB0aGlzLnZpZXdDb250YWluZXIsIHsgLi4uKGRhdGEpLCAkaW1wbGljaXQ6IGRhdGEucm93IH0pO1xuICB9XG59XG4iXX0=