@fundamental-ngx/platform 0.48.0-rc.8 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (510) hide show
  1. package/approval-flow/approval-flow-node/approval-flow-node.component.d.ts +0 -2
  2. package/button/button.component.d.ts +7 -8
  3. package/dynamic-page/dynamic-page.component.d.ts +24 -15
  4. package/dynamic-page/dynamic-page.tokens.d.ts +3 -0
  5. package/dynamic-page/index.d.ts +2 -1
  6. package/dynamic-page/platform-dynamic-page.interface.d.ts +22 -0
  7. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +4 -4
  8. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +4 -4
  9. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +3 -3
  10. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +3 -3
  11. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +5 -7
  12. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +3 -3
  13. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +3 -3
  14. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +3 -3
  15. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +3 -3
  16. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +3 -3
  17. package/esm2022/approval-flow/approval-flow.component.mjs +5 -5
  18. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  19. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  20. package/esm2022/button/button.component.mjs +14 -15
  21. package/esm2022/button/button.module.mjs +4 -4
  22. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  23. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  24. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +3 -3
  25. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  28. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  29. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +3 -3
  30. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  31. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  32. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  33. package/esm2022/dynamic-page/dynamic-page.component.mjs +48 -35
  34. package/esm2022/dynamic-page/dynamic-page.config.mjs +3 -3
  35. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  36. package/esm2022/dynamic-page/dynamic-page.tokens.mjs +3 -0
  37. package/esm2022/dynamic-page/index.mjs +3 -2
  38. package/esm2022/dynamic-page/platform-dynamic-page.interface.mjs +2 -0
  39. package/esm2022/feed-input/feed-input.component.mjs +6 -6
  40. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  41. package/esm2022/form/auto-complete/auto-complete.directive.mjs +3 -3
  42. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  43. package/esm2022/form/checkbox/checkbox.component.mjs +11 -43
  44. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  45. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +21 -63
  46. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  47. package/esm2022/form/combobox/combobox/combobox.component.mjs +33 -63
  48. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +15 -22
  49. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  50. package/esm2022/form/combobox/combobox.config.mjs +3 -3
  51. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  52. package/esm2022/form/combobox/commons/base-combobox.mjs +24 -58
  53. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  54. package/esm2022/form/date-picker/date-picker.component.mjs +21 -57
  55. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  56. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +22 -60
  57. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  58. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +5 -9
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +5 -9
  61. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +5 -9
  62. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +5 -9
  63. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +5 -9
  64. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +4 -4
  65. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +5 -9
  66. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +5 -9
  67. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +5 -9
  68. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +3 -3
  69. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +3 -3
  70. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  71. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +27 -13
  72. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  73. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +3 -3
  74. package/esm2022/form/form-generator/form-generator.service.mjs +11 -16
  75. package/esm2022/form/form-generator/interfaces/dynamic-form-item.mjs +1 -1
  76. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +3 -3
  77. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  78. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  79. package/esm2022/form/form-group/form-field/form-field.component.mjs +40 -47
  80. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +3 -3
  81. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +3 -3
  82. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +3 -3
  83. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  84. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +4 -4
  85. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +3 -3
  86. package/esm2022/form/form-group/form-group.component.mjs +40 -50
  87. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  88. package/esm2022/form/form-group/services/form-field-layout.service.mjs +3 -3
  89. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  90. package/esm2022/form/input/input.component.mjs +16 -48
  91. package/esm2022/form/input-group/addon-body.component.mjs +4 -5
  92. package/esm2022/form/input-group/addon.component.mjs +3 -3
  93. package/esm2022/form/input-group/input-group.component.mjs +13 -46
  94. package/esm2022/form/input-group/input-group.config.mjs +3 -3
  95. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  96. package/esm2022/form/input-group/input.component.mjs +3 -3
  97. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +3 -3
  98. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +64 -102
  99. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +25 -71
  100. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +18 -26
  101. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  102. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +3 -3
  103. package/esm2022/form/multi-combobox/multi-combobox.interface.mjs +1 -1
  104. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  105. package/esm2022/form/multi-input/base-multi-input.mjs +43 -83
  106. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +13 -21
  107. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  108. package/esm2022/form/multi-input/multi-input.component.mjs +32 -91
  109. package/esm2022/form/multi-input/multi-input.config.mjs +3 -3
  110. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  111. package/esm2022/form/radio-group/radio/radio.component.mjs +12 -44
  112. package/esm2022/form/radio-group/radio-group.component.mjs +32 -74
  113. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  114. package/esm2022/form/select/commons/base-select.mjs +59 -101
  115. package/esm2022/form/select/select/select.component.mjs +17 -60
  116. package/esm2022/form/select/select.config.mjs +3 -3
  117. package/esm2022/form/select/select.module.mjs +4 -4
  118. package/esm2022/form/step-input/base.step-input.mjs +72 -85
  119. package/esm2022/form/step-input/number/number-step-input.component.mjs +14 -53
  120. package/esm2022/form/step-input/step-input-action-button.mjs +9 -13
  121. package/esm2022/form/step-input/step-input-control.directive.mjs +3 -3
  122. package/esm2022/form/step-input/step-input-decrement.directive.mjs +9 -13
  123. package/esm2022/form/step-input/step-input-increment.directive.mjs +9 -13
  124. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  125. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  126. package/esm2022/form/switch/switch/switch.component.mjs +12 -49
  127. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  128. package/esm2022/form/switch/switch.module.mjs +4 -4
  129. package/esm2022/form/text-area/text-area.component.mjs +14 -45
  130. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  131. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  132. package/esm2022/form/time-picker/time-picker.component.mjs +11 -42
  133. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  134. package/esm2022/fundamental-ngx.module.mjs +4 -4
  135. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +6 -6
  136. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +85 -90
  137. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +21 -9
  138. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +26 -9
  139. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +40 -26
  140. package/esm2022/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.mjs +76 -0
  141. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +28 -16
  142. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +14 -5
  143. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +3 -3
  144. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +5 -5
  145. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +12 -21
  146. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +10 -12
  147. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +10 -11
  148. package/esm2022/icon-tab-bar/directives/icon-tab-bar-free-content.directive.mjs +14 -0
  149. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +208 -27
  150. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +19 -9
  151. package/esm2022/icon-tab-bar/index.mjs +3 -1
  152. package/esm2022/icon-tab-bar/interfaces/tab-config.interface.mjs +1 -1
  153. package/esm2022/info-label/info-label.component.mjs +6 -4
  154. package/esm2022/info-label/info-label.module.mjs +4 -4
  155. package/esm2022/link/link.component.mjs +15 -23
  156. package/esm2022/link/link.module.mjs +4 -4
  157. package/esm2022/list/action-list-item/action-list-item.component.mjs +5 -5
  158. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  159. package/esm2022/list/base-list-item.mjs +20 -22
  160. package/esm2022/list/display-list-item/display-list-item.component.mjs +5 -5
  161. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  162. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +5 -5
  163. package/esm2022/list/list-group-footer.component.mjs +5 -5
  164. package/esm2022/list/list-group-header.component.mjs +7 -7
  165. package/esm2022/list/list.component.mjs +25 -66
  166. package/esm2022/list/list.config.mjs +3 -3
  167. package/esm2022/list/list.module.mjs +4 -4
  168. package/esm2022/list/load-more-content.directive.mjs +3 -3
  169. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +6 -6
  170. package/esm2022/list/object-list-item/object-list-item.component.mjs +5 -5
  171. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  172. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +5 -5
  173. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  174. package/esm2022/menu/menu-item.component.mjs +5 -5
  175. package/esm2022/menu/menu-trigger.directive.mjs +3 -3
  176. package/esm2022/menu/menu.component.mjs +5 -6
  177. package/esm2022/menu/menu.module.mjs +4 -4
  178. package/esm2022/menu-button/menu-button.component.mjs +14 -9
  179. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  180. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +11 -14
  181. package/esm2022/message-popover/components/message-view/message-view.component.mjs +4 -4
  182. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +3 -3
  183. package/esm2022/message-popover/message-popover.component.mjs +53 -54
  184. package/esm2022/message-popover/models/message-popover-wrapper.interface.mjs +1 -1
  185. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  186. package/esm2022/object-marker/object-marker.component.mjs +10 -5
  187. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  188. package/esm2022/object-status/object-status.component.mjs +13 -8
  189. package/esm2022/object-status/object-status.module.mjs +4 -4
  190. package/esm2022/page-footer/page-footer.component.mjs +8 -10
  191. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  192. package/esm2022/panel/panel-actions.component.mjs +3 -3
  193. package/esm2022/panel/panel-content/panel-content.component.mjs +3 -3
  194. package/esm2022/panel/panel.component.mjs +8 -9
  195. package/esm2022/panel/panel.config.mjs +3 -3
  196. package/esm2022/panel/panel.module.mjs +4 -4
  197. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +12 -22
  198. package/esm2022/search-field/search-field.component.mjs +36 -42
  199. package/esm2022/search-field/search-field.module.mjs +4 -4
  200. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +6 -6
  201. package/esm2022/settings-generator/default-config.mjs +2 -2
  202. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  203. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +3 -3
  204. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +3 -3
  205. package/esm2022/settings-generator/models/settings.model.mjs +1 -1
  206. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +34 -28
  207. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +4 -5
  208. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  209. package/esm2022/settings-generator/settings-generator.component.mjs +6 -6
  210. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  211. package/esm2022/settings-generator/settings-generator.service.mjs +12 -13
  212. package/esm2022/shared/base.mjs +30 -18
  213. package/esm2022/shared/form/base.input.mjs +70 -69
  214. package/esm2022/shared/form/collection-base.input.mjs +7 -49
  215. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +25 -66
  216. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  217. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  218. package/esm2022/shared/platform.config.mjs +3 -3
  219. package/esm2022/slider/slider.component.mjs +11 -43
  220. package/esm2022/slider/slider.module.mjs +4 -4
  221. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +11 -14
  222. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +8 -16
  223. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -6
  224. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +13 -18
  225. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +22 -47
  226. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +12 -10
  227. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +3 -3
  228. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  229. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +73 -57
  230. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  231. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +3 -3
  232. package/esm2022/split-menu-button/split-menu-button.component.mjs +17 -24
  233. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  234. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  235. package/esm2022/table/components/reset-button/reset-button.component.mjs +8 -9
  236. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +10 -9
  237. package/esm2022/table/components/table-column/table-column.component.mjs +3 -3
  238. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +11 -14
  239. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +4 -4
  240. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +6 -10
  241. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +31 -15
  242. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +19 -24
  243. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +9 -11
  244. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +4 -4
  245. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +8 -11
  246. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +8 -11
  247. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +11 -14
  248. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  249. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +3 -3
  250. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  251. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  252. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  253. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -8
  254. package/esm2022/table/components/table-row/table-row.component.mjs +12 -17
  255. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  256. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  257. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +38 -23
  258. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +3 -3
  259. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +3 -3
  260. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +3 -3
  261. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +4 -4
  262. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +4 -4
  263. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +8 -11
  264. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +9 -12
  265. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +9 -12
  266. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +3 -3
  267. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  268. package/esm2022/table/table.component.mjs +138 -62
  269. package/esm2022/table/table.module.mjs +4 -4
  270. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +3 -3
  271. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
  272. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +20 -23
  273. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  274. package/esm2022/table-helpers/directives/table-cell.directive.mjs +12 -12
  275. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +10 -9
  276. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  277. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  278. package/esm2022/table-helpers/directives/table-header.directive.mjs +6 -6
  279. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +5 -5
  280. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +3 -3
  281. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +3 -3
  282. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  283. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  284. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  285. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  286. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  287. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  288. package/esm2022/table-helpers/services/table-column-resize.service.mjs +22 -20
  289. package/esm2022/table-helpers/services/table-responsive.service.mjs +9 -14
  290. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  291. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  292. package/esm2022/table-helpers/services/table.service.mjs +23 -21
  293. package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
  294. package/esm2022/table-helpers/table.mjs +1 -1
  295. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +3 -3
  296. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +4 -4
  297. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +28 -8
  298. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +9 -5
  299. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +3 -3
  300. package/esm2022/value-help-dialog/directives/value-help-column-def.directive.mjs +24 -0
  301. package/esm2022/value-help-dialog/directives/value-help-filter-def.directive.mjs +22 -0
  302. package/esm2022/value-help-dialog/index.mjs +3 -1
  303. package/esm2022/value-help-dialog/models/vhd-component.model.mjs +3 -0
  304. package/esm2022/value-help-dialog/models/vhd-filter.model.mjs +1 -1
  305. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +59 -32
  306. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  307. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +4 -4
  308. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -6
  309. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  310. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +3 -3
  311. package/esm2022/variant-management/variant-management.component.mjs +47 -13
  312. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  313. package/esm2022/wizard-generator/base-wizard-generator.mjs +21 -28
  314. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +19 -19
  315. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +12 -18
  316. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +7 -12
  317. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +11 -10
  318. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +4 -4
  319. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +3 -3
  320. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  321. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  322. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  323. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  324. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +3 -3
  325. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  326. package/esm2022/wizard-generator/wizard-generator.service.mjs +3 -3
  327. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +42 -44
  328. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-button.mjs +16 -17
  330. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +88 -130
  332. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  333. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -9
  334. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  335. package/fesm2022/fundamental-ngx-platform-form.mjs +853 -1636
  336. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  337. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +532 -220
  338. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-info-label.mjs +9 -7
  340. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-link.mjs +18 -26
  342. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  343. package/fesm2022/fundamental-ngx-platform-list.mjs +104 -143
  344. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +16 -11
  346. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-menu.mjs +16 -16
  348. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +71 -74
  350. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +13 -8
  352. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-object-status.mjs +16 -11
  354. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  355. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +10 -12
  356. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  357. package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -20
  358. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-search-field.mjs +49 -77
  360. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +75 -72
  362. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform-shared.mjs +162 -218
  364. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  365. package/fesm2022/fundamental-ngx-platform-slider.mjs +12 -44
  366. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  367. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +144 -162
  368. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  369. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +20 -27
  370. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  371. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +143 -148
  372. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  373. package/fesm2022/fundamental-ngx-platform-table.mjs +366 -291
  374. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  375. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +144 -53
  376. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  377. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +63 -30
  378. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  379. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +82 -98
  380. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  381. package/fesm2022/fundamental-ngx-platform.mjs +4 -4
  382. package/form/checkbox/checkbox.component.d.ts +4 -6
  383. package/form/checkbox-group/checkbox-group.component.d.ts +3 -8
  384. package/form/combobox/combobox/combobox.component.d.ts +4 -12
  385. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +5 -8
  386. package/form/combobox/commons/base-combobox.d.ts +4 -9
  387. package/form/date-picker/date-picker.component.d.ts +8 -11
  388. package/form/datetime-picker/datetime-picker.component.d.ts +9 -11
  389. package/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.d.ts +0 -2
  390. package/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.d.ts +0 -2
  391. package/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.d.ts +0 -2
  392. package/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.d.ts +0 -2
  393. package/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.d.ts +0 -2
  394. package/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.d.ts +0 -2
  395. package/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.d.ts +0 -2
  396. package/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.d.ts +0 -2
  397. package/form/form-generator/form-generator/form-generator.component.d.ts +3 -1
  398. package/form/form-generator/form-generator.service.d.ts +3 -7
  399. package/form/form-generator/interfaces/dynamic-form-item.d.ts +5 -5
  400. package/form/form-group/form-field/form-field.component.d.ts +16 -20
  401. package/form/form-group/form-group.component.d.ts +36 -35
  402. package/form/input/input.component.d.ts +3 -6
  403. package/form/input-group/addon-body.component.d.ts +0 -1
  404. package/form/input-group/input-group.component.d.ts +4 -5
  405. package/form/multi-combobox/commons/base-multi-combobox.d.ts +13 -16
  406. package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +4 -12
  407. package/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.d.ts +6 -9
  408. package/form/multi-combobox/multi-combobox.interface.d.ts +3 -3
  409. package/form/multi-input/base-multi-input.d.ts +10 -15
  410. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +5 -8
  411. package/form/multi-input/multi-input.component.d.ts +7 -37
  412. package/form/radio-group/radio/radio.component.d.ts +4 -5
  413. package/form/radio-group/radio-group.component.d.ts +7 -11
  414. package/form/select/commons/base-select.d.ts +11 -18
  415. package/form/select/select/select.component.d.ts +2 -15
  416. package/form/step-input/base.step-input.d.ts +13 -14
  417. package/form/step-input/number/number-step-input.component.d.ts +2 -7
  418. package/form/step-input/step-input-action-button.d.ts +4 -7
  419. package/form/step-input/step-input-decrement.directive.d.ts +2 -5
  420. package/form/step-input/step-input-increment.directive.d.ts +2 -5
  421. package/form/switch/switch/switch.component.d.ts +5 -8
  422. package/form/text-area/text-area.component.d.ts +4 -5
  423. package/form/time-picker/time-picker.component.d.ts +4 -5
  424. package/fundamental-ngx-platform-v0.48.0.tgz +0 -0
  425. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +19 -20
  426. package/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.d.ts +2 -0
  427. package/icon-tab-bar/components/icon-tab-bar-tab/icon-tab-bar-tab.component.d.ts +45 -0
  428. package/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.d.ts +1 -3
  429. package/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.d.ts +5 -8
  430. package/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.d.ts +1 -1
  431. package/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.d.ts +1 -1
  432. package/icon-tab-bar/directives/icon-tab-bar-free-content.directive.d.ts +5 -0
  433. package/icon-tab-bar/icon-tab-bar.component.d.ts +82 -8
  434. package/icon-tab-bar/icon-tab-bar.module.d.ts +7 -1
  435. package/icon-tab-bar/index.d.ts +2 -0
  436. package/icon-tab-bar/interfaces/tab-config.interface.d.ts +13 -5
  437. package/info-label/info-label.component.d.ts +2 -2
  438. package/link/link.component.d.ts +4 -7
  439. package/list/base-list-item.d.ts +4 -6
  440. package/list/list.component.d.ts +6 -15
  441. package/menu-button/menu-button.component.d.ts +7 -4
  442. package/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.d.ts +2 -4
  443. package/message-popover/message-popover.component.d.ts +13 -20
  444. package/message-popover/models/message-popover-wrapper.interface.d.ts +2 -2
  445. package/object-marker/object-marker.component.d.ts +4 -1
  446. package/object-status/object-status.component.d.ts +4 -1
  447. package/package.json +4 -4
  448. package/page-footer/page-footer.component.d.ts +2 -4
  449. package/panel/panel.component.d.ts +2 -3
  450. package/search-field/search-field-mobile/search-field/search-field-mobile.component.d.ts +7 -10
  451. package/search-field/search-field.component.d.ts +10 -19
  452. package/settings-generator/models/settings.model.d.ts +7 -6
  453. package/settings-generator/settings-generator-content/settings-generator-content.component.d.ts +31 -12
  454. package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +0 -2
  455. package/settings-generator/settings-generator.component.d.ts +3 -3
  456. package/settings-generator/settings-generator.service.d.ts +1 -1
  457. package/shared/base.d.ts +11 -4
  458. package/shared/form/base.input.d.ts +24 -16
  459. package/shared/form/collection-base.input.d.ts +1 -9
  460. package/shared/form/inline-layout-collection-base.input.d.ts +5 -12
  461. package/slider/slider.component.d.ts +3 -6
  462. package/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.d.ts +3 -5
  463. package/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.d.ts +0 -5
  464. package/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.d.ts +4 -8
  465. package/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.d.ts +8 -17
  466. package/smart-filter-bar/directives/smart-filter-bar-subject.directive.d.ts +2 -0
  467. package/smart-filter-bar/smart-filter-bar.component.d.ts +28 -22
  468. package/split-menu-button/split-menu-button.component.d.ts +11 -14
  469. package/table/components/reset-button/reset-button.component.d.ts +2 -3
  470. package/table/components/table-cell-header-popover/table-cell-header-popover.component.d.ts +4 -3
  471. package/table/components/table-column-resizer/table-column-resizer.component.d.ts +4 -5
  472. package/table/components/table-group-row/table-group-row.component.d.ts +2 -5
  473. package/table/components/table-header-cell-content/table-header-cell-content.component.d.ts +11 -6
  474. package/table/components/table-header-row/table-header-row.component.d.ts +1 -3
  475. package/table/components/table-p13-dialog/columns/columns.component.d.ts +2 -4
  476. package/table/components/table-p13-dialog/filtering/filtering.component.d.ts +1 -4
  477. package/table/components/table-p13-dialog/grouping/grouping.component.d.ts +1 -4
  478. package/table/components/table-p13-dialog/sorting/sorting.component.d.ts +1 -4
  479. package/table/components/table-row/table-row.component.d.ts +2 -2
  480. package/table/components/table-toolbar/table-toolbar.component.d.ts +24 -8
  481. package/table/components/table-view-settings-dialog/filtering/filters.component.d.ts +1 -4
  482. package/table/components/table-view-settings-dialog/grouping/grouping.component.d.ts +1 -4
  483. package/table/components/table-view-settings-dialog/sorting/sorting.component.d.ts +1 -4
  484. package/table/table.component.d.ts +29 -19
  485. package/table-helpers/directives/table-cell-header-popover.directive.d.ts +2 -3
  486. package/table-helpers/directives/table-cell-resizable.directive.d.ts +1 -3
  487. package/table-helpers/directives/table-data-source.directive.d.ts +1 -1
  488. package/table-helpers/services/table-column-resize.service.d.ts +4 -2
  489. package/table-helpers/services/table-responsive.service.d.ts +3 -5
  490. package/table-helpers/services/table.service.d.ts +12 -10
  491. package/table-helpers/table.d.ts +1 -0
  492. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +9 -2
  493. package/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.d.ts +5 -1
  494. package/value-help-dialog/directives/value-help-column-def.directive.d.ts +17 -0
  495. package/value-help-dialog/directives/value-help-filter-def.directive.d.ts +15 -0
  496. package/value-help-dialog/index.d.ts +2 -0
  497. package/value-help-dialog/models/vhd-component.model.d.ts +5 -0
  498. package/value-help-dialog/models/vhd-filter.model.d.ts +3 -0
  499. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +14 -7
  500. package/variant-management/variant-management.component.d.ts +19 -6
  501. package/wizard-generator/base-wizard-generator.d.ts +9 -12
  502. package/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.d.ts +2 -3
  503. package/wizard-generator/components/wizard-body/wizard-body.component.d.ts +3 -7
  504. package/wizard-generator/components/wizard-generator/wizard-generator.component.d.ts +1 -4
  505. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +1 -1
  506. package/dynamic-page/dynamic-page.service.d.ts +0 -35
  507. package/esm2022/dynamic-page/dynamic-page.service.mjs +0 -58
  508. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +0 -16
  509. package/fundamental-ngx-platform-v0.48.0-rc.8.tgz +0 -0
  510. package/search-field/search-field-mobile/search-field-mobile.module.d.ts +0 -7
@@ -1,10 +1,9 @@
1
- import { ChangeDetectorRef, Directive, EventEmitter, Input, Output } from '@angular/core';
2
- import { Subject } from 'rxjs';
3
- import { debounceTime, finalize, takeUntil } from 'rxjs/operators';
1
+ import { ChangeDetectorRef, DestroyRef, Directive, EventEmitter, Input, Output, inject } from '@angular/core';
2
+ import { debounceTime, finalize } from 'rxjs/operators';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { ContentDensityMode } from '@fundamental-ngx/core/content-density';
5
5
  import { WizardGeneratorService } from './wizard-generator.service';
6
6
  import * as i0 from "@angular/core";
7
- import * as i1 from "./wizard-generator.service";
8
7
  /**
9
8
  * @description Default button labels.
10
9
  */
@@ -126,9 +125,7 @@ export class BaseWizardGenerator {
126
125
  return this._visibleItems[currentIndex]?.completed === true;
127
126
  }
128
127
  /** @hidden */
129
- constructor(_wizardGeneratorService, _cd) {
130
- this._wizardGeneratorService = _wizardGeneratorService;
131
- this._cd = _cd;
128
+ constructor() {
132
129
  /**
133
130
  * @description Whether or not apply responsive paddings styling.
134
131
  */
@@ -167,23 +164,26 @@ export class BaseWizardGenerator {
167
164
  this._formPending = false;
168
165
  /**
169
166
  * @hidden
170
- * An RxJS Subject that will kill the data stream upon component’s destruction (for unsubscribing)
171
167
  */
172
- this._onDestroy$ = new Subject();
168
+ this._destroyRef = inject(DestroyRef);
169
+ /** @hidden */
170
+ this._wizardGeneratorService = inject(WizardGeneratorService);
171
+ /** @hidden */
172
+ this._cd = inject(ChangeDetectorRef);
173
173
  /**
174
174
  * @hidden
175
175
  */
176
176
  this._navigationButtonLabels = DEFAULT_WIZARD_NAVIGATION_BUTTONS;
177
177
  this._wizardGeneratorService
178
178
  .getVisibleSteps()
179
- .pipe(debounceTime(10), takeUntil(this._onDestroy$))
179
+ .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))
180
180
  .subscribe((visibleSteps) => {
181
181
  this.visibleItems = visibleSteps;
182
182
  this._cd.detectChanges();
183
183
  });
184
184
  this._wizardGeneratorService
185
185
  .trackStepsComponents()
186
- .pipe(debounceTime(10), takeUntil(this._onDestroy$))
186
+ .pipe(debounceTime(10), takeUntilDestroyed(this._destroyRef))
187
187
  .subscribe(async (stepsComponents) => {
188
188
  if (stepsComponents.size === this.items?.length) {
189
189
  await this._setVisibleSteps();
@@ -191,31 +191,24 @@ export class BaseWizardGenerator {
191
191
  });
192
192
  this._wizardGeneratorService
193
193
  .trackAppendToWizardState()
194
- .pipe(takeUntil(this._onDestroy$))
194
+ .pipe(takeUntilDestroyed(this._destroyRef))
195
195
  .subscribe((value) => {
196
196
  this._appendToWizard = value;
197
197
  });
198
198
  this._wizardGeneratorService
199
199
  .trackStepsOrder()
200
- .pipe(takeUntil(this._onDestroy$))
200
+ .pipe(takeUntilDestroyed(this._destroyRef))
201
201
  .subscribe((newNextStep) => {
202
202
  this._nextStepIndex = newNextStep;
203
203
  this._stepsOrderChanged = true;
204
204
  });
205
205
  this._wizardGeneratorService
206
206
  .trackNextStepIndex()
207
- .pipe(takeUntil(this._onDestroy$))
207
+ .pipe(takeUntilDestroyed(this._destroyRef))
208
208
  .subscribe((index) => {
209
209
  this._nextStepIndex = index;
210
210
  });
211
211
  }
212
- /**
213
- * @hidden
214
- */
215
- ngOnDestroy() {
216
- this._onDestroy$.next();
217
- this._onDestroy$.complete();
218
- }
219
212
  /**
220
213
  * @description Reverts Wizard progress one step back.
221
214
  */
@@ -243,7 +236,7 @@ export class BaseWizardGenerator {
243
236
  const nextStepIndex = this._nextStepIndex;
244
237
  this._wizardGeneratorService
245
238
  .validateStepForms()
246
- .pipe(takeUntil(this._onDestroy$))
239
+ .pipe(takeUntilDestroyed(this._destroyRef))
247
240
  .subscribe(async (result) => {
248
241
  if (!result) {
249
242
  return;
@@ -284,7 +277,7 @@ export class BaseWizardGenerator {
284
277
  }
285
278
  this._wizardGeneratorService
286
279
  .validateStepForms()
287
- .pipe(takeUntil(this._onDestroy$))
280
+ .pipe(takeUntilDestroyed(this._destroyRef))
288
281
  .subscribe(async (result) => {
289
282
  if (!result) {
290
283
  return;
@@ -311,12 +304,12 @@ export class BaseWizardGenerator {
311
304
  this.wizardCreated = true;
312
305
  this._cd.detectChanges();
313
306
  }
314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseWizardGenerator, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
315
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.4", type: BaseWizardGenerator, inputs: { responsivePaddings: "responsivePaddings", navigationButtonLabels: "navigationButtonLabels", items: "items", appendToWizard: "appendToWizard", navigationButtons: "navigationButtons", contentHeight: "contentHeight", displaySummaryStep: "displaySummaryStep", unifiedLayout: "unifiedLayout" }, outputs: { wizardFinished: "wizardFinished" }, ngImport: i0 }); }
307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BaseWizardGenerator, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
308
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.0.8", type: BaseWizardGenerator, inputs: { responsivePaddings: "responsivePaddings", navigationButtonLabels: "navigationButtonLabels", items: "items", appendToWizard: "appendToWizard", navigationButtons: "navigationButtons", contentHeight: "contentHeight", displaySummaryStep: "displaySummaryStep", unifiedLayout: "unifiedLayout" }, outputs: { wizardFinished: "wizardFinished" }, ngImport: i0 }); }
316
309
  }
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: BaseWizardGenerator, decorators: [{
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: BaseWizardGenerator, decorators: [{
318
311
  type: Directive
319
- }], ctorParameters: () => [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }], propDecorators: { responsivePaddings: [{
312
+ }], ctorParameters: () => [], propDecorators: { responsivePaddings: [{
320
313
  type: Input
321
314
  }], navigationButtonLabels: [{
322
315
  type: Input
@@ -335,4 +328,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
335
328
  }], wizardFinished: [{
336
329
  type: Output
337
330
  }] } });
338
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aXphcmQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2Jhc2Utd2l6YXJkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JHLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFLM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUVwRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFzQztJQUNoRixNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsZUFBZTtRQUN0QixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsT0FBTztLQUNoQjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxXQUFXO1FBQ2xCLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLFFBQVE7UUFDZixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsT0FBTztLQUNoQjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxRQUFRO1FBQ2YsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsSUFBSSxFQUFFLFlBQVk7S0FDckI7SUFDRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVB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LEdBQUcsTUFBTSxDQUFDO1FBRTlDLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLGdCQUFnQjtRQUMxQixNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTNELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBRTFCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0FuV1EsbUJBQW1CO2tHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7MkhBTU4sa0JBQWtCO3NCQURqQixLQUFLO2dCQU9GLHNCQUFzQjtzQkFEekIsS0FBSztnQkFZRixLQUFLO3NCQURSLEtBQUs7Z0JBeUJGLGNBQWM7c0JBRGpCLEtBQUs7Z0JBV04saUJBQWlCO3NCQURoQixLQUFLO2dCQVFOLGFBQWE7c0JBRFosS0FBSztnQkFPTixrQkFBa0I7c0JBRGpCLEtBQUs7Z0JBS04sYUFBYTtzQkFEWixLQUFLO2dCQU9OLGNBQWM7c0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbmFsaXplLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE51bGxhYmxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHlNb2RlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBXaXphcmRTdGVwU3RhdHVzIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3dpemFyZCc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JGb3Jtc1ZhbHVlLCBXaXphcmRTdGVwU3VibWl0dGVkRm9ybXMgfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1mb3Jtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtLCBXaXphcmRHZW5lcmF0b3JJdGVtIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3dpemFyZC1nZW5lcmF0b3ItaXRlbS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnMgfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9ucy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4vd2l6YXJkLWdlbmVyYXRvci5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVmYXVsdCBidXR0b24gbGFiZWxzLlxuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9XSVpBUkRfTkFWSUdBVElPTl9CVVRUT05TOiBSZXF1aXJlZDxXaXphcmROYXZpZ2F0aW9uQnV0dG9ucz4gPSB7XG4gICAgZ29CYWNrOiB7XG4gICAgICAgIGxhYmVsOiAnUHJldmlvdXMgU3RlcCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2dob3N0J1xuICAgIH0sXG4gICAgZ29OZXh0OiB7XG4gICAgICAgIGxhYmVsOiAnTmV4dCBTdGVwJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZW1waGFzaXplZCdcbiAgICB9LFxuICAgIGNhbmNlbDoge1xuICAgICAgICBsYWJlbDogJ0NhbmNlbCcsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2dob3N0J1xuICAgIH0sXG4gICAgZmluaXNoOiB7XG4gICAgICAgIGxhYmVsOiAnRmluaXNoJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZW1waGFzaXplZCdcbiAgICB9LFxuICAgIHJldmlldzoge1xuICAgICAgICBsYWJlbDogJ1JldmlldycsXG4gICAgICAgIGNvbnRlbnREZW5zaXR5OiBDb250ZW50RGVuc2l0eU1vZGUuQ09NUEFDVCxcbiAgICAgICAgdHlwZTogJ2VtcGhhc2l6ZWQnXG4gICAgfVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBXaXphcmQgR2VuZXJhdG9yIGNvbXBvbmVudCB3aXRoIG5lY2Vzc2FyeSBpbnB1dHMgYW5kIG1ldGhvZHMuXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VXaXphcmRHZW5lcmF0b3IgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICByZXNwb25zaXZlUGFkZGluZ3MgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJ1dHRvbiBsYWJlbHMgdG8gYmUgdXNlZCBpbiBXaXphcmQgbmF2aWdhdGlvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IG5hdmlnYXRpb25CdXR0b25MYWJlbHModmFsdWU6IFdpemFyZE5hdmlnYXRpb25CdXR0b25zKSB7XG4gICAgICAgIHRoaXMuX25hdmlnYXRpb25CdXR0b25MYWJlbHMgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX1dJWkFSRF9OQVZJR0FUSU9OX0JVVFRPTlMsIHZhbHVlKTtcbiAgICB9XG4gICAgZ2V0IG5hdmlnYXRpb25CdXR0b25MYWJlbHMoKTogV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJ1dHRvbkxhYmVscztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgV2l6YXJkIFN0ZXBzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGl0ZW1zKGl0ZW1zOiBXaXphcmRHZW5lcmF0b3JJdGVtW10pIHtcbiAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuY2xlYXJXaXphcmRTdGVwQ29tcG9uZW50cygpO1xuXG4gICAgICAgIGlmICghaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UucHJlcGFyZVdpemFyZEl0ZW1zKGl0ZW1zKS50aGVuKChuZXdJdGVtcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5faXRlbXMgPSBuZXdJdGVtcztcbiAgICAgICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IG5ld0l0ZW1zO1xuICAgICAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGdldCBpdGVtcygpOiBXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBhcHBlbmQgdGhlIHN0ZXAgdG8gdGhlIHdpemFyZC4gSWYgZmFsc2UsIGVhY2ggc3RlcCB3aWxsIGJlIGRpc3BsYXllZCBvbiBhIGRpZmZlcmVudCBwYWdlLlxuICAgICAqIERlZmF1bHQgaXMgdHJ1ZS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCBhcHBlbmRUb1dpemFyZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE9yaWdpbmFsQXBwZW5kVG9XaXphcmRTdGF0ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGFwcGVuZFRvV2l6YXJkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwZW5kVG9XaXphcmQ7XG4gICAgfVxuXG4gICAgLyoqIElmIG5hdmlnYXRpb24gYnV0dG9ucyBzaG91bGQgYmUgdmlzaWJsZS4gKi9cbiAgICBASW5wdXQoKVxuICAgIG5hdmlnYXRpb25CdXR0b25zID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBoZWlnaHQgdG8gdXNlIGZvciB0aGUgd2l6YXJkJ3MgY29udGVudCBwYW5lLiBCeSBkZWZhdWx0LCB0aGlzIHZhbHVlIGlzIGNhbGMoMTAwdmggLSAxNDRweCksIHdoZXJlIDE0NHB4XG4gICAgICogaXMgdGhlIGNvbWJpbmVkIGhlaWdodCBvZiB0aGUgc2hlbGxiYXIsIHdpemFyZCBoZWFkZXIgYW5kIHdpemFyZCBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBjb250ZW50SGVpZ2h0OiBOdWxsYWJsZTxzdHJpbmc+O1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEJvb2xlYW4gZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gZGlzcGxheSBTdW1tYXJ5IHN0ZXAgaW4gV2l6YXJkIHByb2dyZXNzIGJhci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqIFdoZXRoZXIgYWxsIGZvcm0gaXRlbXMgc2hvdWxkIGhhdmUgaWRlbnRpY2FsIGxheW91dCBwcm92aWRlZCBmb3IgZm9ybSBncm91cC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHVuaWZpZWRMYXlvdXQgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVtaXRzIHdpemFyZCB2YWx1ZSB3aGVuIGl0J3MgY29tcGxldGVkLlxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHdpemFyZEZpbmlzaGVkOiBFdmVudEVtaXR0ZXI8V2l6YXJkR2VuZXJhdG9yRm9ybXNWYWx1ZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICAvKipcbiAgICAgKiBGbGFnIGluZGljYXRpbmcgdGhhdCB3aXphcmQgaXMgcmVhZHkgdG8gYmUgc2hvd25cbiAgICAgKi9cbiAgICB3aXphcmRDcmVhdGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSXMgY3VycmVudCBzdGVwIGlzIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBnZXQgaXNTdW1tYXJ5U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zW2N1cnJlbnRJbmRleF0/LnN1bW1hcnkgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEFycmF5IG9mIHZpc2libGUgV2l6YXJkIFN0ZXBzLlxuICAgICAqL1xuICAgIHNldCB2aXNpYmxlSXRlbXMoaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdKSB7XG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtcyA9IGl0ZW1zO1xuICAgIH1cbiAgICBnZXQgdmlzaWJsZUl0ZW1zKCk6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtcyB8fCB0aGlzLl9pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgZmlyc3Qgc3RlcFxuICAgICAqL1xuICAgIGdldCBpc0ZpcnN0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlzaWJsZUl0ZW1zWzBdPy5zdGF0dXMgPT09ICdjdXJyZW50JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2hldGhlciBvciBub3QgV2l6YXJkIGlzIGN1cnJlbnRseSBvbiB0aGUgbGFzdCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGlzTGFzdFN0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGxhc3RTdGVwID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy52aXNpYmxlSXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiBsYXN0U3RlcD8uc3RhdHVzID09PSAnY3VycmVudCcgJiYgIWxhc3RTdGVwLmJyYW5jaGluZztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIGN1cnJlbnQgc3RlcCBpcyBhIGJyYW5jaGluZyBzdGVwLlxuICAgICAqL1xuICAgIGdldCBpc0JyYW5jaGluZ1N0ZXAoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlSXRlbXNbY3VycmVudEluZGV4XT8uYnJhbmNoaW5nID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdGhlIG5leHQgc3RlcCBpcyBhIFN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBnZXQgaXNOZXh0U3RlcFN1bW1hcnkoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG5leHRTdGVwID0gdGhpcy52aXNpYmxlSXRlbXNbdGhpcy5fbmV4dFN0ZXBJbmRleF07XG4gICAgICAgIHJldHVybiBuZXh0U3RlcD8uc3VtbWFyeSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogV2hldGhlciB0aGUgY3VycmVudCBzdGVwIGlzIGNvbXBsZXRlZCAqL1xuICAgIGdldCBpc0N1cnJlbnRTdGVwQ29tcGxldGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtc1tjdXJyZW50SW5kZXhdPy5jb21wbGV0ZWQgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF92aXNpYmxlSXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9uZXh0U3RlcEluZGV4OiBudW1iZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2l0ZW1zOiBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9hcHBlbmRUb1dpemFyZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX2Zvcm1QZW5kaW5nID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQW4gUnhKUyBTdWJqZWN0IHRoYXQgd2lsbCBraWxsIHRoZSBkYXRhIHN0cmVhbSB1cG9uIGNvbXBvbmVudOKAmXMgZGVzdHJ1Y3Rpb24gKGZvciB1bnN1YnNjcmliaW5nKVxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfb25EZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX25hdmlnYXRpb25CdXR0b25MYWJlbHM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPiA9IERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBfd2l6YXJkR2VuZXJhdG9yU2VydmljZTogV2l6YXJkR2VuZXJhdG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlU3RlcHMoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmlzaWJsZVN0ZXBzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNDb21wb25lbnRzKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHN0ZXBzQ29tcG9uZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc0NvbXBvbmVudHMuc2l6ZSA9PT0gdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC50cmFja0FwcGVuZFRvV2l6YXJkU3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1dpemFyZCA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNPcmRlcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuZXdOZXh0U3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwSW5kZXggPSBuZXdOZXh0U3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudHJhY2tOZXh0U3RlcEluZGV4KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fb25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXZlcnRzIFdpemFyZCBwcm9ncmVzcyBvbmUgc3RlcCBiYWNrLlxuICAgICAqL1xuICAgIGdvQmFjaygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICBjb25zdCBwcmV2aW91c1N0ZXBJbmRleCA9IGN1cnJlbnRTdGVwSW5kZXggLSAxO1xuXG4gICAgICAgIGlmICh0aGlzLnZpc2libGVJdGVtc1twcmV2aW91c1N0ZXBJbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnZpc2libGVJdGVtc1tjdXJyZW50U3RlcEluZGV4XS5zdGF0dXMgPSAndXBjb21pbmcnO1xuICAgICAgICB0aGlzLnZpc2libGVJdGVtc1twcmV2aW91c1N0ZXBJbmRleF0uc3RhdHVzID0gJ2N1cnJlbnQnO1xuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldFZpc2libGVTdGVwcyh0aGlzLnZpc2libGVJdGVtcyk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KGN1cnJlbnRTdGVwSW5kZXgpO1xuXG4gICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvZ3Jlc3NlcyB0aGUgV2l6YXJkIG9uZSBzdGVwIGZ1cnRoZXIuXG4gICAgICovXG4gICAgYXN5bmMgZ29OZXh0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5fZm9ybVBlbmRpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcbiAgICAgICAgY29uc3QgbmV4dFN0ZXBJbmRleCA9IHRoaXMuX25leHRTdGVwSW5kZXg7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnZhbGlkYXRlU3RlcEZvcm1zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9zZXRWaXNpYmxlU3RlcHMoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy52aXNpYmxlSXRlbXM7XG5cbiAgICAgICAgICAgICAgICBpZiAoc3RlcHNbbmV4dFN0ZXBJbmRleF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RlcHNPcmRlckNoYW5nZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdLnN0YXR1cyA9ICdjb21wbGV0ZWQnO1xuICAgICAgICAgICAgICAgIHN0ZXBzW2N1cnJlbnRTdGVwSW5kZXhdLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgc3RlcHNbbmV4dFN0ZXBJbmRleF0uc3RhdHVzID0gJ2N1cnJlbnQnO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXRWaXNpYmxlU3RlcHMoc3RlcHMpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5zZXROZXh0U3RlcEluZGV4KG5leHRTdGVwSW5kZXggKyAxKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX2NkLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBTdWJtaXRzIHN0ZXAgZm9ybXMuXG4gICAgICogQHBhcmFtIGN1cnJlbnRTdGVwSW5kZXggY3VycmVudCBzdGVwIGluZGV4LlxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyB8IG51bGw+fSBPYnNlcnZhYmxlIHdpdGggZm9ybSB2YWx1ZXMuXG4gICAgICovXG4gICAgc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSW5kZXg/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyB8IG51bGw+IHtcbiAgICAgICAgdGhpcy5fZm9ybVBlbmRpbmcgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnN1Ym1pdFN0ZXBGb3JtcyhjdXJyZW50U3RlcEluZGV4KS5waXBlKFxuICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2Zvcm1QZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb21wbGV0ZXMgdGhlIHdpemFyZCBhbmQgZW1pdHMgaXQncyBmb3JtYXR0ZWQgdmFsdWUuXG4gICAgICovXG4gICAgYXN5bmMgZmluaXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMud2l6YXJkRmluaXNoZWQuZW1pdCh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnZhbGlkYXRlU3RlcEZvcm1zKClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcblxuICAgICAgICAgICAgICAgIHRoaXMud2l6YXJkRmluaXNoZWQuZW1pdCh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhbGxiYWNrIGZ1bmN0aW9uIHRvIHVwZGF0ZSBzdGVwcyBzdGF0dXMuXG4gICAgICogQHBhcmFtIHN0ZXBOdW1iZXIgU3RlcCBJRCB0byBiZSB1cGRhdGVkLlxuICAgICAqIEBwYXJhbSBzdGF0dXMgTmV3IHN0ZXAgc3RhdHVzLlxuICAgICAqL1xuICAgIGFzeW5jIHN0ZXBTdGF0dXNDaGFuZ2VkKHN0ZXBJZDogc3RyaW5nLCBzdGF0dXM6IFdpemFyZFN0ZXBTdGF0dXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qgc3RlcEluZGV4ID0gdGhpcy5fdmlzaWJsZUl0ZW1zLmZpbmRJbmRleCgocykgPT4gcy5pZCA9PT0gc3RlcElkKTtcblxuICAgICAgICB0aGlzLl92aXNpYmxlSXRlbXNbc3RlcEluZGV4XS5zdGF0dXMgPSBzdGF0dXM7XG5cbiAgICAgICAgYXdhaXQgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5yZWZyZXNoU3RlcFZpc2liaWxpdHkoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhc3luYyBfc2V0VmlzaWJsZVN0ZXBzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnJlZnJlc2hTdGVwVmlzaWJpbGl0eSgpO1xuXG4gICAgICAgIHRoaXMud2l6YXJkQ3JlYXRlZCA9IHRydWU7XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiJdfQ==
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS13aXphcmQtZ2VuZXJhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2Jhc2Utd2l6YXJkLWdlbmVyYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUcsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUszRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFFcEU7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQ0FBaUMsR0FBc0M7SUFDaEYsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLGVBQWU7UUFDdEIsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsSUFBSSxFQUFFLE9BQU87S0FDaEI7SUFDRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsV0FBVztRQUNsQixjQUFjLEVBQUUsa0JBQWtCLENBQUMsT0FBTztRQUMxQyxJQUFJLEVBQUUsWUFBWTtLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNKLEtBQUssRUFBRSxRQUFRO1FBQ2YsY0FBYyxFQUFFLGtCQUFrQixDQUFDLE9BQU87UUFDMUMsSUFBSSxFQUFFLE9BQU87S0FDaEI7SUFDRCxNQUFNLEVBQUU7UUFDSixLQUFLLEVBQUUsUUFBUTtRQUNmLGNBQWMsRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO1FBQzFDLElBQUksRUFBRSxZQUFZO0tBQ3JCO0lBQ0QsTUFBTSxFQUFF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RSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxnQkFBZ0I7UUFDMUIsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUUzRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUUxQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7OEdBN1ZRLG1CQUFtQjtrR0FBbkIsbUJBQW1COzsyRkFBbkIsbUJBQW1CO2tCQUQvQixTQUFTO3dEQU1OLGtCQUFrQjtzQkFEakIsS0FBSztnQkFPRixzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLO2dCQXlCRixjQUFjO3NCQURqQixLQUFLO2dCQVdOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFRTixhQUFhO3NCQURaLEtBQUs7Z0JBT04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLGFBQWE7c0JBRFosS0FBSztnQkFPTixjQUFjO3NCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGVzdHJveVJlZiwgRGlyZWN0aXZlLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgTnVsbGFibGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eU1vZGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvY29udGVudC1kZW5zaXR5JztcbmltcG9ydCB7IFdpemFyZFN0ZXBTdGF0dXMgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvd2l6YXJkJztcbmltcG9ydCB7IFdpemFyZEdlbmVyYXRvckZvcm1zVmFsdWUsIFdpemFyZFN0ZXBTdWJtaXR0ZWRGb3JtcyB9IGZyb20gJy4vaW50ZXJmYWNlcy93aXphcmQtZ2VuZXJhdG9yLWZvcm1zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQcmVwYXJlZFdpemFyZEdlbmVyYXRvckl0ZW0sIFdpemFyZEdlbmVyYXRvckl0ZW0gfSBmcm9tICcuL2ludGVyZmFjZXMvd2l6YXJkLWdlbmVyYXRvci1pdGVtLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucyB9IGZyb20gJy4vaW50ZXJmYWNlcy93aXphcmQtbmF2aWdhdGlvbi1idXR0b25zLmludGVyZmFjZSc7XG5pbXBvcnQgeyBXaXphcmRHZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQtZ2VuZXJhdG9yLnNlcnZpY2UnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWZhdWx0IGJ1dHRvbiBsYWJlbHMuXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1dJWkFSRF9OQVZJR0FUSU9OX0JVVFRPTlM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPiA9IHtcbiAgICBnb0JhY2s6IHtcbiAgICAgICAgbGFiZWw6ICdQcmV2aW91cyBTdGVwJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZ2hvc3QnXG4gICAgfSxcbiAgICBnb05leHQ6IHtcbiAgICAgICAgbGFiZWw6ICdOZXh0IFN0ZXAnLFxuICAgICAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgIHR5cGU6ICdlbXBoYXNpemVkJ1xuICAgIH0sXG4gICAgY2FuY2VsOiB7XG4gICAgICAgIGxhYmVsOiAnQ2FuY2VsJyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZ2hvc3QnXG4gICAgfSxcbiAgICBmaW5pc2g6IHtcbiAgICAgICAgbGFiZWw6ICdGaW5pc2gnLFxuICAgICAgICBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHlNb2RlLkNPTVBBQ1QsXG4gICAgICAgIHR5cGU6ICdlbXBoYXNpemVkJ1xuICAgIH0sXG4gICAgcmV2aWV3OiB7XG4gICAgICAgIGxhYmVsOiAnUmV2aWV3JyxcbiAgICAgICAgY29udGVudERlbnNpdHk6IENvbnRlbnREZW5zaXR5TW9kZS5DT01QQUNULFxuICAgICAgICB0eXBlOiAnZW1waGFzaXplZCdcbiAgICB9XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIFdpemFyZCBHZW5lcmF0b3IgY29tcG9uZW50IHdpdGggbmVjZXNzYXJ5IGlucHV0cyBhbmQgbWV0aG9kcy5cbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZVdpemFyZEdlbmVyYXRvciB7XG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFdoZXRoZXIgb3Igbm90IGFwcGx5IHJlc3BvbnNpdmUgcGFkZGluZ3Mgc3R5bGluZy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHJlc3BvbnNpdmVQYWRkaW5ncyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQnV0dG9uIGxhYmVscyB0byBiZSB1c2VkIGluIFdpemFyZCBuYXZpZ2F0aW9uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgbmF2aWdhdGlvbkJ1dHRvbkxhYmVscyh2YWx1ZTogV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbnMpIHtcbiAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJ1dHRvbkxhYmVscyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUywgdmFsdWUpO1xuICAgIH1cbiAgICBnZXQgbmF2aWdhdGlvbkJ1dHRvbkxhYmVscygpOiBXaXphcmROYXZpZ2F0aW9uQnV0dG9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBBcnJheSBvZiBXaXphcmQgU3RlcHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgaXRlbXMoaXRlbXM6IFdpemFyZEdlbmVyYXRvckl0ZW1bXSkge1xuICAgICAgICB0aGlzLndpemFyZENyZWF0ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5jbGVhcldpemFyZFN0ZXBDb21wb25lbnRzKCk7XG5cbiAgICAgICAgaWYgKCFpdGVtcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5wcmVwYXJlV2l6YXJkSXRlbXMoaXRlbXMpLnRoZW4oKG5ld0l0ZW1zKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9pdGVtcyA9IG5ld0l0ZW1zO1xuICAgICAgICAgICAgdGhpcy5fdmlzaWJsZUl0ZW1zID0gbmV3SXRlbXM7XG4gICAgICAgICAgICB0aGlzLndpemFyZENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgZ2V0IGl0ZW1zKCk6IFdpemFyZEdlbmVyYXRvckl0ZW1bXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIGFwcGVuZCB0aGUgc3RlcCB0byB0aGUgd2l6YXJkLiBJZiBmYWxzZSwgZWFjaCBzdGVwIHdpbGwgYmUgZGlzcGxheWVkIG9uIGEgZGlmZmVyZW50IHBhZ2UuXG4gICAgICogRGVmYXVsdCBpcyB0cnVlLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IGFwcGVuZFRvV2l6YXJkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc2V0T3JpZ2luYWxBcHBlbmRUb1dpemFyZFN0YXRlKHZhbHVlKTtcbiAgICB9XG5cbiAgICBnZXQgYXBwZW5kVG9XaXphcmQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hcHBlbmRUb1dpemFyZDtcbiAgICB9XG5cbiAgICAvKiogSWYgbmF2aWdhdGlvbiBidXR0b25zIHNob3VsZCBiZSB2aXNpYmxlLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgbmF2aWdhdGlvbkJ1dHRvbnMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGhlaWdodCB0byB1c2UgZm9yIHRoZSB3aXphcmQncyBjb250ZW50IHBhbmUuIEJ5IGRlZmF1bHQsIHRoaXMgdmFsdWUgaXMgY2FsYygxMDB2aCAtIDE0NHB4KSwgd2hlcmUgMTQ0cHhcbiAgICAgKiBpcyB0aGUgY29tYmluZWQgaGVpZ2h0IG9mIHRoZSBzaGVsbGJhciwgd2l6YXJkIGhlYWRlciBhbmQgd2l6YXJkIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGNvbnRlbnRIZWlnaHQ6IE51bGxhYmxlPHN0cmluZz47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQm9vbGVhbiBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0byBkaXNwbGF5IFN1bW1hcnkgc3RlcCBpbiBXaXphcmQgcHJvZ3Jlc3MgYmFyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheVN1bW1hcnlTdGVwID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciBhbGwgZm9ybSBpdGVtcyBzaG91bGQgaGF2ZSBpZGVudGljYWwgbGF5b3V0IHByb3ZpZGVkIGZvciBmb3JtIGdyb3VwLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgdW5pZmllZExheW91dCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gRW1pdHMgd2l6YXJkIHZhbHVlIHdoZW4gaXQncyBjb21wbGV0ZWQuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgd2l6YXJkRmluaXNoZWQ6IEV2ZW50RW1pdHRlcjxXaXphcmRHZW5lcmF0b3JGb3Jtc1ZhbHVlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIC8qKlxuICAgICAqIEZsYWcgaW5kaWNhdGluZyB0aGF0IHdpemFyZCBpcyByZWFkeSB0byBiZSBzaG93blxuICAgICAqL1xuICAgIHdpemFyZENyZWF0ZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBJcyBjdXJyZW50IHN0ZXAgaXMgc3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIGdldCBpc1N1bW1hcnlTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlSXRlbXNbY3VycmVudEluZGV4XT8uc3VtbWFyeSA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQXJyYXkgb2YgdmlzaWJsZSBXaXphcmQgU3RlcHMuXG4gICAgICovXG4gICAgc2V0IHZpc2libGVJdGVtcyhpdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10pIHtcbiAgICAgICAgdGhpcy5fdmlzaWJsZUl0ZW1zID0gaXRlbXM7XG4gICAgfVxuICAgIGdldCB2aXNpYmxlSXRlbXMoKTogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUl0ZW1zIHx8IHRoaXMuX2l0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBXaXphcmQgaXMgY3VycmVudGx5IG9uIHRoZSBmaXJzdCBzdGVwXG4gICAgICovXG4gICAgZ2V0IGlzRmlyc3RTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52aXNpYmxlSXRlbXNbMF0/LnN0YXR1cyA9PT0gJ2N1cnJlbnQnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBXaGV0aGVyIG9yIG5vdCBXaXphcmQgaXMgY3VycmVudGx5IG9uIHRoZSBsYXN0IHN0ZXBcbiAgICAgKi9cbiAgICBnZXQgaXNMYXN0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbGFzdFN0ZXAgPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLnZpc2libGVJdGVtcy5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIGxhc3RTdGVwPy5zdGF0dXMgPT09ICdjdXJyZW50JyAmJiAhbGFzdFN0ZXAuYnJhbmNoaW5nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgY3VycmVudCBzdGVwIGlzIGEgYnJhbmNoaW5nIHN0ZXAuXG4gICAgICovXG4gICAgZ2V0IGlzQnJhbmNoaW5nU3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVJdGVtc1tjdXJyZW50SW5kZXhdPy5icmFuY2hpbmcgPT09IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgbmV4dCBzdGVwIGlzIGEgU3VtbWFyeSBzdGVwLlxuICAgICAqL1xuICAgIGdldCBpc05leHRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbmV4dFN0ZXAgPSB0aGlzLnZpc2libGVJdGVtc1t0aGlzLl9uZXh0U3RlcEluZGV4XTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGVwPy5zdW1tYXJ5ID09PSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBXaGV0aGVyIHRoZSBjdXJyZW50IHN0ZXAgaXMgY29tcGxldGVkICovXG4gICAgZ2V0IGlzQ3VycmVudFN0ZXBDb21wbGV0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZUl0ZW1zW2N1cnJlbnRJbmRleF0/LmNvbXBsZXRlZCA9PT0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX3Zpc2libGVJdGVtczogUHJlcGFyZWRXaXphcmRHZW5lcmF0b3JJdGVtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25leHRTdGVwSW5kZXg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3N0ZXBzT3JkZXJDaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfaXRlbXM6IFByZXBhcmVkV2l6YXJkR2VuZXJhdG9ySXRlbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2FwcGVuZFRvV2l6YXJkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfZm9ybVBlbmRpbmcgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2Rlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfd2l6YXJkR2VuZXJhdG9yU2VydmljZSA9IGluamVjdChXaXphcmRHZW5lcmF0b3JTZXJ2aWNlKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX25hdmlnYXRpb25CdXR0b25MYWJlbHM6IFJlcXVpcmVkPFdpemFyZE5hdmlnYXRpb25CdXR0b25zPiA9IERFRkFVTFRfV0laQVJEX05BVklHQVRJT05fQlVUVE9OUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRWaXNpYmxlU3RlcHMoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwKSwgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmlzaWJsZVN0ZXBzKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlSXRlbXMgPSB2aXNpYmxlU3RlcHM7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNDb21wb25lbnRzKClcbiAgICAgICAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMCksIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoYXN5bmMgKHN0ZXBzQ29tcG9uZW50cykgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwc0NvbXBvbmVudHMuc2l6ZSA9PT0gdGhpcy5pdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2VcbiAgICAgICAgICAgIC50cmFja0FwcGVuZFRvV2l6YXJkU3RhdGUoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hcHBlbmRUb1dpemFyZCA9IHZhbHVlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZVxuICAgICAgICAgICAgLnRyYWNrU3RlcHNPcmRlcigpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5fZGVzdHJveVJlZikpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChuZXdOZXh0U3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX25leHRTdGVwSW5kZXggPSBuZXdOZXh0U3RlcDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IHRydWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudHJhY2tOZXh0U3RlcEluZGV4KClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLl9kZXN0cm95UmVmKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbmV4dFN0ZXBJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldmVydHMgV2l6YXJkIHByb2dyZXNzIG9uZSBzdGVwIGJhY2suXG4gICAgICovXG4gICAgZ29CYWNrKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzU3RlcEluZGV4ID0gY3VycmVudFN0ZXBJbmRleCAtIDE7XG5cbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZUl0ZW1zW3ByZXZpb3VzU3RlcEluZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zW2N1cnJlbnRTdGVwSW5kZXhdLnN0YXR1cyA9ICd1cGNvbWluZyc7XG4gICAgICAgIHRoaXMudmlzaWJsZUl0ZW1zW3ByZXZpb3VzU3RlcEluZGV4XS5zdGF0dXMgPSAnY3VycmVudCc7XG4gICAgICAgIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc2V0VmlzaWJsZVN0ZXBzKHRoaXMudmlzaWJsZUl0ZW1zKTtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE5leHRTdGVwSW5kZXgoY3VycmVudFN0ZXBJbmRleCk7XG5cbiAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBQcm9ncmVzc2VzIHRoZSBXaXphcmQgb25lIHN0ZXAgZnVydGhlci5cbiAgICAgKi9cbiAgICBhc3luYyBnb05leHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLl9mb3JtUGVuZGluZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuICAgICAgICBjb25zdCBuZXh0U3RlcEluZGV4ID0gdGhpcy5fbmV4dFN0ZXBJbmRleDtcblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudmFsaWRhdGVTdGVwRm9ybXMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX3NldFZpc2libGVTdGVwcygpO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHMgPSB0aGlzLnZpc2libGVJdGVtcztcblxuICAgICAgICAgICAgICAgIGlmIChzdGVwc1tuZXh0U3RlcEluZGV4XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zdGVwc09yZGVyQ2hhbmdlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0uc3RhdHVzID0gJ2NvbXBsZXRlZCc7XG4gICAgICAgICAgICAgICAgc3RlcHNbY3VycmVudFN0ZXBJbmRleF0uY29tcGxldGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBzdGVwc1tuZXh0U3RlcEluZGV4XS5zdGF0dXMgPSAnY3VycmVudCc7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldFZpc2libGVTdGVwcyhzdGVwcyk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnNldE5leHRTdGVwSW5kZXgobmV4dFN0ZXBJbmRleCArIDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFN1Ym1pdHMgc3RlcCBmb3Jtcy5cbiAgICAgKiBAcGFyYW0gY3VycmVudFN0ZXBJbmRleCBjdXJyZW50IHN0ZXAgaW5kZXguXG4gICAgICogQHJldHVybnMge09ic2VydmFibGU8V2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIHwgbnVsbD59IE9ic2VydmFibGUgd2l0aCBmb3JtIHZhbHVlcy5cbiAgICAgKi9cbiAgICBzdWJtaXRTdGVwRm9ybXMoY3VycmVudFN0ZXBJbmRleD86IHN0cmluZyk6IE9ic2VydmFibGU8V2l6YXJkU3RlcFN1Ym1pdHRlZEZvcm1zIHwgbnVsbD4ge1xuICAgICAgICB0aGlzLl9mb3JtUGVuZGluZyA9IHRydWU7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2Uuc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSW5kZXgpLnBpcGUoXG4gICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZm9ybVBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlcyB0aGUgd2l6YXJkIGFuZCBlbWl0cyBpdCdzIGZvcm1hdHRlZCB2YWx1ZS5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy53aXphcmRGaW5pc2hlZC5lbWl0KHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlXG4gICAgICAgICAgICAudmFsaWRhdGVTdGVwRm9ybXMoKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy53aXphcmRGaW5pc2hlZC5lbWl0KHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FsbGJhY2sgZnVuY3Rpb24gdG8gdXBkYXRlIHN0ZXBzIHN0YXR1cy5cbiAgICAgKiBAcGFyYW0gc3RlcE51bWJlciBTdGVwIElEIHRvIGJlIHVwZGF0ZWQuXG4gICAgICogQHBhcmFtIHN0YXR1cyBOZXcgc3RlcCBzdGF0dXMuXG4gICAgICovXG4gICAgYXN5bmMgc3RlcFN0YXR1c0NoYW5nZWQoc3RlcElkOiBzdHJpbmcsIHN0YXR1czogV2l6YXJkU3RlcFN0YXR1cyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBzdGVwSW5kZXggPSB0aGlzLl92aXNpYmxlSXRlbXMuZmluZEluZGV4KChzKSA9PiBzLmlkID09PSBzdGVwSWQpO1xuXG4gICAgICAgIHRoaXMuX3Zpc2libGVJdGVtc1tzdGVwSW5kZXhdLnN0YXR1cyA9IHN0YXR1cztcblxuICAgICAgICBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLnJlZnJlc2hTdGVwVmlzaWJpbGl0eSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGFzeW5jIF9zZXRWaXNpYmxlU3RlcHMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UucmVmcmVzaFN0ZXBWaXNpYmlsaXR5KCk7XG5cbiAgICAgICAgdGhpcy53aXphcmRDcmVhdGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLl9jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxufVxuIl19
@@ -1,30 +1,30 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';
1
+ import { ChangeDetectionStrategy, Component, TemplateRef, ViewChild, ViewEncapsulation, inject } from '@angular/core';
2
2
  import { FormGeneratorService } from '@fundamental-ngx/platform/form';
3
- import { filter, takeUntil } from 'rxjs/operators';
3
+ import { filter } from 'rxjs/operators';
4
4
  import { CdkScrollable } from '@angular/cdk/overlay';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
7
  import { InitialFocusDirective } from '@fundamental-ngx/cdk/utils';
7
8
  import { BarModule } from '@fundamental-ngx/core/bar';
9
+ import { ButtonComponent } from '@fundamental-ngx/core/button';
8
10
  import { ContentDensityDirective } from '@fundamental-ngx/core/content-density';
9
11
  import { DialogModule, DialogRef } from '@fundamental-ngx/core/dialog';
10
12
  import { MessageBoxModule, MessageBoxService } from '@fundamental-ngx/core/message-box';
11
13
  import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
12
14
  import { TitleComponent } from '@fundamental-ngx/core/title';
13
- import { ButtonComponent } from '@fundamental-ngx/platform/button';
14
15
  import { BaseWizardGenerator } from '../../base-wizard-generator';
15
16
  import { WizardGeneratorService } from '../../wizard-generator.service';
16
17
  import { WizardBodyComponent } from '../wizard-body/wizard-body.component';
17
18
  import * as i0 from "@angular/core";
18
- import * as i1 from "../../wizard-generator.service";
19
- import * as i2 from "@fundamental-ngx/core/dialog";
20
- import * as i3 from "@fundamental-ngx/core/bar";
21
- import * as i4 from "@fundamental-ngx/core/title";
22
- import * as i5 from "@fundamental-ngx/core/message-box";
23
- import * as i6 from "@fundamental-ngx/cdk/utils";
19
+ import * as i1 from "@fundamental-ngx/core/dialog";
20
+ import * as i2 from "@fundamental-ngx/core/bar";
21
+ import * as i3 from "@fundamental-ngx/core/title";
22
+ import * as i4 from "@fundamental-ngx/core/message-box";
23
+ import * as i5 from "@fundamental-ngx/cdk/utils";
24
24
  export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
25
25
  /** @hidden */
26
- constructor(_wizardGeneratorService, _cd, _dialogRef) {
27
- super(_wizardGeneratorService, _cd);
26
+ constructor(_dialogRef) {
27
+ super();
28
28
  this._dialogRef = _dialogRef;
29
29
  /**
30
30
  * @description Confirmation message when wizard dialog close button has been clicked.
@@ -97,7 +97,7 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
97
97
  const template = this.confirmationDialogTemplate || this.defaultConfirmationDialogTemplate;
98
98
  const messageBoxRef = this._messageBoxService.open(template, { responsivePadding: true });
99
99
  messageBoxRef.afterClosed
100
- .pipe(filter((result) => result), takeUntil(this._onDestroy$))
100
+ .pipe(filter((result) => result), takeUntilDestroyed(this._destroyRef))
101
101
  .subscribe(() => {
102
102
  this._dialogRef.dismiss();
103
103
  });
@@ -113,7 +113,7 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
113
113
  }
114
114
  const currentStepId = this._wizardGeneratorService.getCurrentStepId();
115
115
  this.submitStepForms(currentStepId)
116
- .pipe(takeUntil(this._onDestroy$))
116
+ .pipe(takeUntilDestroyed(this._destroyRef))
117
117
  .subscribe(async (result) => {
118
118
  if (result && Object.values(result).some((r) => !r.success)) {
119
119
  return;
@@ -122,10 +122,10 @@ export class DialogWizardGeneratorComponent extends BaseWizardGenerator {
122
122
  this._dialogRef.close(wizardResult);
123
123
  });
124
124
  }
125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogWizardGeneratorComponent, deps: [{ token: i1.WizardGeneratorService }, { token: i0.ChangeDetectorRef }, { token: i2.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: DialogWizardGeneratorComponent, isStandalone: true, selector: "fdp-dialog-wizard-generator", providers: [WizardGeneratorService, FormGeneratorService], viewQueries: [{ propertyName: "defaultConfirmationDialogTemplate", first: true, predicate: ["defaultConfirmationDialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i2.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i2.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i2.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i3.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i3.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i3.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i4.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: WizardBodyComponent, selector: "fdp-wizard-body", inputs: ["responsivePaddings", "navigationButtonLabels", "appendToWizard", "contentHeight", "isFirstStep", "isLastStep", "isNextStepSummary", "displaySummaryStep", "goNextButtonTemplate", "finishButtonTemplate", "customSummaryStepTemplate", "reviewButtonTemplate", "isSummaryStep", "navigationButtons", "unifiedLayout", "isBranchingStep", "isCurrentStepCompleted", "stepsOrderChanged"], outputs: ["statusChange", "goNext", "finish"] }, { kind: "ngmodule", type: BarModule }, { kind: "component", type: ButtonComponent, selector: "fdp-button", inputs: ["glyphPosition", "label", "glyph", "buttonType", "toggled", "title", "ariaSelected", "ariaDisabled", "ariaExpanded", "ariaControlsId", "ariaPressed", "name", "type", "value"], outputs: ["buttonClicked"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MessageBoxModule }, { kind: "component", type: i5.MessageBoxFooterComponent, selector: "fd-message-box-footer" }, { kind: "component", type: i5.MessageBoxBodyComponent, selector: "fd-message-box-body" }, { kind: "component", type: i5.MessageBoxComponent, selector: "fd-message-box", inputs: ["class", "messageBoxRef", "messageBoxConfig"] }, { kind: "directive", type: i5.MessageBoxTemplateDirective, selector: "[fdMessageBoxTemplate]", inputs: ["fdMessageBoxTemplateConfig"] }, { kind: "directive", type: i6.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
125
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogWizardGeneratorComponent, deps: [{ token: i1.DialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
126
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.8", type: DialogWizardGeneratorComponent, isStandalone: true, selector: "fdp-dialog-wizard-generator", providers: [WizardGeneratorService, FormGeneratorService], viewQueries: [{ propertyName: "defaultConfirmationDialogTemplate", first: true, predicate: ["defaultConfirmationDialogTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [fdType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [fdType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [fdType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [fdType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [fdType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "component", type: i1.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i1.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i1.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i2.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i3.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title], span[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: WizardBodyComponent, selector: "fdp-wizard-body", inputs: ["responsivePaddings", "navigationButtonLabels", "appendToWizard", "contentHeight", "isFirstStep", "isLastStep", "isNextStepSummary", "displaySummaryStep", "goNextButtonTemplate", "finishButtonTemplate", "customSummaryStepTemplate", "reviewButtonTemplate", "isSummaryStep", "navigationButtons", "unifiedLayout", "isBranchingStep", "isCurrentStepCompleted", "stepsOrderChanged"], outputs: ["statusChange", "goNext", "finish"] }, { kind: "ngmodule", type: BarModule }, { kind: "component", type: ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "directive", type: ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: MessageBoxModule }, { kind: "component", type: i4.MessageBoxFooterComponent, selector: "fd-message-box-footer" }, { kind: "component", type: i4.MessageBoxBodyComponent, selector: "fd-message-box-body" }, { kind: "component", type: i4.MessageBoxComponent, selector: "fd-message-box", inputs: ["class", "messageBoxRef", "messageBoxConfig"] }, { kind: "directive", type: i4.MessageBoxTemplateDirective, selector: "[fdMessageBoxTemplate]", inputs: ["fdMessageBoxTemplateConfig"] }, { kind: "directive", type: i5.InitialFocusDirective, selector: "[fdkInitialFocus]", inputs: ["fdkInitialFocus", "enabled", "focusLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
127
127
  }
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: DialogWizardGeneratorComponent, decorators: [{
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: DialogWizardGeneratorComponent, decorators: [{
129
129
  type: Component,
130
130
  args: [{ selector: 'fdp-dialog-wizard-generator', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [WizardGeneratorService, FormGeneratorService], standalone: true, imports: [
131
131
  DialogModule,
@@ -139,9 +139,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImpor
139
139
  NgTemplateOutlet,
140
140
  MessageBoxModule,
141
141
  InitialFocusDirective
142
- ], template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></fdp-button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <fdp-button\n class=\"fd-bar__element\"\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [buttonType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></fdp-button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n" }]
143
- }], ctorParameters: () => [{ type: i1.WizardGeneratorService }, { type: i0.ChangeDetectorRef }, { type: i2.DialogRef }], propDecorators: { defaultConfirmationDialogTemplate: [{
142
+ ], template: "<fd-dialog>\n <fd-dialog-header>\n <h2 fd-title [headerSize]=\"title.size\">{{ title.text }}</h2>\n </fd-dialog-header>\n <fd-dialog-body>\n <fdp-wizard-body\n [navigationButtons]=\"false\"\n [displaySummaryStep]=\"displaySummaryStep\"\n [responsivePaddings]=\"responsivePaddings\"\n [navigationButtonLabels]=\"_navigationButtonLabels\"\n [customSummaryStepTemplate]=\"summaryStepTemplate\"\n [reviewButtonTemplate]=\"reviewButtonTemplate\"\n [hidden]=\"!wizardCreated\"\n [appendToWizard]=\"appendToWizard\"\n [unifiedLayout]=\"unifiedLayout\"\n [contentHeight]=\"contentHeight\"\n (statusChange)=\"stepStatusChanged($event.id, $event.status)\"\n ></fdp-wizard-body>\n @if (wizardCreated) {\n <div fd-bar barDesign=\"floating-footer\" [class.fd-bar--responsive-paddings]=\"responsivePaddings\">\n <div fd-bar-right>\n @if (!isFirstStep) {\n <ng-template #defaultGoBackButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.goBack.contentDensity\"\n [fdType]=\"_navigationButtonLabels.goBack.type\"\n [label]=\"_navigationButtonLabels.goBack.label\"\n (click)=\"goBack()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"goBackButtonTemplate || defaultGoBackButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goBack: _goBackFn }\"\n ></ng-template>\n }\n @if (!isLastStep) {\n <ng-template #defaultGoNextButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.goNext.contentDensity\"\n [fdType]=\"_navigationButtonLabels.goNext.type\"\n [label]=\"_navigationButtonLabels.goNext.label\"\n (click)=\"goNext()\"\n ></button>\n </ng-template>\n <ng-template #defaultReviewButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.review.contentDensity\"\n [fdType]=\"_navigationButtonLabels.review.type\"\n [label]=\"_navigationButtonLabels.review.label\"\n (click)=\"goNext()\"\n ></button>\n </ng-template>\n @if (\n (isBranchingStep && (!isCurrentStepCompleted || _stepsOrderChanged)) || !isNextStepSummary\n ) {\n <ng-template\n [ngTemplateOutlet]=\"goNextButtonTemplate || defaultGoNextButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n } @else {\n <ng-template\n [ngTemplateOutlet]=\"reviewButtonTemplate || defaultReviewButtonTemplate\"\n [ngTemplateOutletContext]=\"{ goNext: _goNextFn }\"\n ></ng-template>\n }\n }\n @if (isLastStep) {\n <ng-template #defaultFinishButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.finish.contentDensity\"\n [fdType]=\"_navigationButtonLabels.finish.type\"\n [label]=\"_navigationButtonLabels.finish.label\"\n (click)=\"finish()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"finishButtonTemplate || defaultFinishButtonTemplate\"\n [ngTemplateOutletContext]=\"{ finish: _finishFn }\"\n ></ng-template>\n }\n <ng-template #defaultCancelButtonTemplate>\n <button\n fd-button\n [fdContentDensity]=\"_navigationButtonLabels.cancel.contentDensity\"\n [fdType]=\"_navigationButtonLabels.cancel.type\"\n [label]=\"_navigationButtonLabels.cancel.label\"\n (click)=\"cancel()\"\n ></button>\n </ng-template>\n <ng-template\n [ngTemplateOutlet]=\"cancelButtonTemplate || defaultCancelButtonTemplate\"\n [ngTemplateOutletContext]=\"{ cancel: _cancelFn }\"\n ></ng-template>\n </div>\n </div>\n }\n </fd-dialog-body>\n</fd-dialog>\n<ng-template\n [fdMessageBoxTemplate]\n let-messageBox\n let-messageBoxConfig=\"messageBoxConfig\"\n #defaultConfirmationDialogTemplate\n>\n <fd-message-box [messageBoxConfig]=\"messageBoxConfig\" [messageBoxRef]=\"messageBox\">\n <fd-message-box-body>\n {{ confirmationDialogText }}\n </fd-message-box-body>\n <fd-message-box-footer>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"confirmationDialogCloseText\"\n type=\"submit\"\n (click)=\"messageBox.close(true)\"\n >\n </fd-button-bar>\n <fd-button-bar fdkInitialFocus [label]=\"confirmationDialogCancelText\" (click)=\"messageBox.dismiss()\">\n </fd-button-bar>\n </fd-message-box-footer>\n </fd-message-box>\n</ng-template>\n" }]
143
+ }], ctorParameters: () => [{ type: i1.DialogRef }], propDecorators: { defaultConfirmationDialogTemplate: [{
144
144
  type: ViewChild,
145
145
  args: ['defaultConfirmationDialogTemplate']
146
146
  }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FB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QUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQzs4R0FuSlEsOEJBQThCO2tHQUE5Qiw4QkFBOEIsMEVBaEI1QixDQUFDLHNCQUFzQixFQUFFLG9CQUFvQixDQUFDLHlNQ2pDN0QseTZNQTZIQSwyQ0R6RlEsWUFBWSxzM0JBSVosbUJBQW1CLDZlQUNuQixTQUFTLCtCQUNULGVBQWUsNFFBQ2YsdUJBQXVCLG9kQUN2QixnQkFBZ0IsbUpBQ2hCLGdCQUFnQjs7MkZBSVgsOEJBQThCO2tCQXJCMUMsU0FBUzsrQkFDSSw2QkFBNkIsaUJBRXhCLGlCQUFpQixDQUFDLElBQUksbUJBQ3BCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEMsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyxjQUM3QyxJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixjQUFjO3dCQUNkLGFBQWE7d0JBQ2Isa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLFNBQVM7d0JBQ1QsZUFBZTt3QkFDZix1QkFBdUI7d0JBQ3ZCLGdCQUFnQjt3QkFDaEIsZ0JBQWdCO3dCQUNoQixxQkFBcUI7cUJBQ3hCO21KQUkrQyxpQ0FBaUM7c0JBQWhGLFNBQVM7dUJBQUMsbUNBQW1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIGluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbml0aWFsRm9jdXNEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2Nkay91dGlscyc7XG5pbXBvcnQgeyBCYXJNb2R1bGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYmFyJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUsIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTWVzc2FnZUJveE1vZHVsZSwgTWVzc2FnZUJveFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1ib3gnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL2J1dHRvbic7XG5pbXBvcnQgeyBCYXNlV2l6YXJkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vYmFzZS13aXphcmQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFdpemFyZERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkVGl0bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC10aXRsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtZGlhbG9nLXdpemFyZC1nZW5lcmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBGb3JtR2VuZXJhdG9yU2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgV2l6YXJkQm9keUNvbXBvbmVudCxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNZXNzYWdlQm94TW9kdWxlLFxuICAgICAgICBJbml0aWFsRm9jdXNEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1dpemFyZEdlbmVyYXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VXaXphcmRHZW5lcmF0b3Ige1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlJykgZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2l6YXJkcyBkaWFsb2cgdGl0bGUgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICB0aXRsZTogV2l6YXJkVGl0bGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIG1lc3NhZ2Ugd2hlbiB3aXphcmQgZGlhbG9nIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBwcm9ncmVzcz8nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9ICdDb25maXJtJztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSAnQ2FuY2VsJztcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvTmV4dEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkdvIEJhY2tcIiBidXR0b24uXG4gICAgICovXG4gICAgZ29CYWNrQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGZpbmlzaEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgY2FuY2VsbGF0aW9uIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAgICovXG4gICAgY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBzdW1tYXJ5U3RlcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJSZXZpZXdcIiBidXR0b24gKi9cbiAgICByZXZpZXdCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJveFNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZUJveFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgX3dpemFyZEdlbmVyYXRvclNlcnZpY2U6IFdpemFyZEdlbmVyYXRvclNlcnZpY2UsXG4gICAgICAgIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgX2RpYWxvZ1JlZjogRGlhbG9nUmVmPFdpemFyZERpYWxvZ0RhdGE+XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKF93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBfY2QpO1xuXG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5pdGVtcztcbiAgICAgICAgdGhpcy50aXRsZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnRpdGxlO1xuICAgICAgICB0aGlzLmFwcGVuZFRvV2l6YXJkID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuYXBwZW5kVG9XaXphcmQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbkxhYmVscyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPz8ge307XG4gICAgICAgIHRoaXMuY29udGVudEhlaWdodCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbnRlbnRIZWlnaHQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2l2ZVBhZGRpbmdzID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmVzcG9uc2l2ZVBhZGRpbmdzO1xuICAgICAgICB0aGlzLmdvTmV4dEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29OZXh0QnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZ29CYWNrQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5nb0JhY2tCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5maW5pc2hCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmZpbmlzaEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNhbmNlbEJ1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY2FuY2VsQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXAgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5kaXNwbGF5U3VtbWFyeVN0ZXAgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuc3VtbWFyeVN0ZXBUZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnN1bW1hcnlTdGVwVGVtcGxhdGU7XG4gICAgICAgIHRoaXMucmV2aWV3QnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5yZXZpZXdCdXR0b25UZW1wbGF0ZTtcblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVuaWZpZWRMYXlvdXQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS51bmlmaWVkTGF5b3V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLm5hdmlnYXRpb25CdXR0b25zICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkJ1dHRvbnMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uRGlhbG9nQ2FuY2VsVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nQ2xvc2VUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDYW5jZWxzIFdpemFyZCBwcm9ncmVzcyBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgY2FuY2VsKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5pc1N0ZXBzVW50b3VjaGVkKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRlbXBsYXRlID0gdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZTtcblxuICAgICAgICBjb25zdCBtZXNzYWdlQm94UmVmID0gdGhpcy5fbWVzc2FnZUJveFNlcnZpY2Uub3Blbih0ZW1wbGF0ZSwgeyByZXNwb25zaXZlUGFkZGluZzogdHJ1ZSB9KTtcblxuICAgICAgICBtZXNzYWdlQm94UmVmLmFmdGVyQ2xvc2VkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKHJlc3VsdCkgPT4gcmVzdWx0KSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5kaXNtaXNzKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29tcGxldGVzIFdpemFyZCBwcm9jZXNzLCBlbWl0cyBXaXphcmQgcmVzdWx0IGFuZCBjbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBhc3luYyBmaW5pc2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjdXJyZW50U3RlcElkID0gdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRDdXJyZW50U3RlcElkKCk7XG4gICAgICAgIHRoaXMuc3VibWl0U3RlcEZvcm1zKGN1cnJlbnRTdGVwSWQpXG4gICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fb25EZXN0cm95JCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGFzeW5jIChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICYmIE9iamVjdC52YWx1ZXMocmVzdWx0KS5zb21lKChyKSA9PiAhci5zdWNjZXNzKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgd2l6YXJkUmVzdWx0ID0gYXdhaXQgdGhpcy5fd2l6YXJkR2VuZXJhdG9yU2VydmljZS5nZXRXaXphcmRGb3JtVmFsdWUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHdpemFyZFJlc3VsdCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvQmFja0ZuOiAoKSA9PiB2b2lkID0gKCkgPT4gdGhpcy5nb0JhY2soKTtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2dvTmV4dEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5nb05leHQoKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfZmluaXNoRm46ICgpID0+IFByb21pc2U8dm9pZD4gPSAoKSA9PiB0aGlzLmZpbmlzaCgpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9jYW5jZWxGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuY2FuY2VsKCk7XG59XG4iLCI8ZmQtZGlhbG9nPlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8aDIgZmQtdGl0bGUgW2hlYWRlclNpemVdPVwidGl0bGUuc2l6ZVwiPnt7IHRpdGxlLnRleHQgfX08L2gyPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cbiAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgIDxmZHAtd2l6YXJkLWJvZHlcbiAgICAgICAgICAgIFtuYXZpZ2F0aW9uQnV0dG9uc109XCJmYWxzZVwiXG4gICAgICAgICAgICBbZGlzcGxheVN1bW1hcnlTdGVwXT1cImRpc3BsYXlTdW1tYXJ5U3RlcFwiXG4gICAgICAgICAgICBbcmVzcG9uc2l2ZVBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiXG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc109XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVsc1wiXG4gICAgICAgICAgICBbY3VzdG9tU3VtbWFyeVN0ZXBUZW1wbGF0ZV09XCJzdW1tYXJ5U3RlcFRlbXBsYXRlXCJcbiAgICAgICAgICAgIFtyZXZpZXdCdXR0b25UZW1wbGF0ZV09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICBbaGlkZGVuXT1cIiF3aXphcmRDcmVhdGVkXCJcbiAgICAgICAgICAgIFthcHBlbmRUb1dpemFyZF09XCJhcHBlbmRUb1dpemFyZFwiXG4gICAgICAgICAgICBbdW5pZmllZExheW91dF09XCJ1bmlmaWVkTGF5b3V0XCJcbiAgICAgICAgICAgIFtjb250ZW50SGVpZ2h0XT1cImNvbnRlbnRIZWlnaHRcIlxuICAgICAgICAgICAgKHN0YXR1c0NoYW5nZSk9XCJzdGVwU3RhdHVzQ2hhbmdlZCgkZXZlbnQuaWQsICRldmVudC5zdGF0dXMpXCJcbiAgICAgICAgPjwvZmRwLXdpemFyZC1ib2R5PlxuICAgICAgICBAaWYgKHdpemFyZENyZWF0ZWQpIHtcbiAgICAgICAgICAgIDxkaXYgZmQtYmFyIGJhckRlc2lnbj1cImZsb2F0aW5nLWZvb3RlclwiIFtjbGFzcy5mZC1iYXItLXJlc3BvbnNpdmUtcGFkZGluZ3NdPVwicmVzcG9uc2l2ZVBhZGRpbmdzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1iYXItcmlnaHQ+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoIWlzRmlyc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRHb0JhY2tCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmRwLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZkLWJhcl9fZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtidXR0b25UeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmdvQmFjay5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb0JhY2soKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb0JhY2tCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvQmFjazogX2dvQmFja0ZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghaXNMYXN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkcC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYnV0dG9uVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2ZkcC1idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNCcmFuY2hpbmdTdGVwICYmICghaXNDdXJyZW50U3RlcENvbXBsZXRlZCB8fCBfc3RlcHNPcmRlckNoYW5nZWQpKSB8fCAhaXNOZXh0U3RlcFN1bW1hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb05leHRCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJyZXZpZXdCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0UmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBnb05leHQ6IF9nb05leHRGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTGFzdFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpbmlzaEJ1dHRvblRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmQtYmFyX19lbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZmluaXNoLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZpbmlzaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmluaXNoOiBfZmluaXNoRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYW5jZWxCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZHAtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmZC1iYXJfX2VsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmNhbmNlbC5jb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2J1dHRvblR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNhbmNlbEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRDYW5jZWxCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBjYW5jZWw6IF9jYW5jZWxGbiB9XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG48L2ZkLWRpYWxvZz5cbjxuZy10ZW1wbGF0ZVxuICAgIFtmZE1lc3NhZ2VCb3hUZW1wbGF0ZV1cbiAgICBsZXQtbWVzc2FnZUJveFxuICAgIGxldC1tZXNzYWdlQm94Q29uZmlnPVwibWVzc2FnZUJveENvbmZpZ1wiXG4gICAgI2RlZmF1bHRDb25maXJtYXRpb25EaWFsb2dUZW1wbGF0ZVxuPlxuICAgIDxmZC1tZXNzYWdlLWJveCBbbWVzc2FnZUJveENvbmZpZ109XCJtZXNzYWdlQm94Q29uZmlnXCIgW21lc3NhZ2VCb3hSZWZdPVwibWVzc2FnZUJveFwiPlxuICAgICAgICA8ZmQtbWVzc2FnZS1ib3gtYm9keT5cbiAgICAgICAgICAgIHt7IGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgfX1cbiAgICAgICAgPC9mZC1tZXNzYWdlLWJveC1ib2R5PlxuICAgICAgICA8ZmQtbWVzc2FnZS1ib3gtZm9vdGVyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICBbbGFiZWxdPVwiY29uZmlybWF0aW9uRGlhbG9nQ2xvc2VUZXh0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwibWVzc2FnZUJveC5jbG9zZSh0cnVlKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhciBmZGtJbml0aWFsRm9jdXMgW2xhYmVsXT1cImNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHRcIiAoY2xpY2spPVwibWVzc2FnZUJveC5kaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgPC9mZC1tZXNzYWdlLWJveC1mb290ZXI+XG4gICAgPC9mZC1tZXNzYWdlLWJveD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS93aXphcmQtZ2VuZXJhdG9yL2NvbXBvbmVudHMvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IvZGlhbG9nLXdpemFyZC1nZW5lcmF0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0SCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFB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Q0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNYLENBQUM7OEdBOUlRLDhCQUE4QjtrR0FBOUIsOEJBQThCLDBFQWhCNUIsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsQ0FBQyx5TUMxQjdELDZ4TUE2SEEsMkNEaEdRLFlBQVksczRCQUlaLG1CQUFtQiw2ZUFDbkIsU0FBUywrQkFDVCxlQUFlLHdIQUNmLHVCQUF1QixvZEFDdkIsZ0JBQWdCLG1KQUNoQixnQkFBZ0I7OzJGQUlYLDhCQUE4QjtrQkFyQjFDLFNBQVM7K0JBQ0ksNkJBQTZCLGlCQUV4QixpQkFBaUIsQ0FBQyxJQUFJLG1CQUNwQix1QkFBdUIsQ0FBQyxNQUFNLGFBQ3BDLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsY0FDN0MsSUFBSSxXQUNQO3dCQUNMLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGtCQUFrQjt3QkFDbEIsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULGVBQWU7d0JBQ2YsdUJBQXVCO3dCQUN2QixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIscUJBQXFCO3FCQUN4Qjs4RUFJK0MsaUNBQWlDO3NCQUFoRixTQUFTO3VCQUFDLG1DQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1HZW5lcmF0b3JTZXJ2aWNlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9wbGF0Zm9ybS9mb3JtJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSW5pdGlhbEZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQmFyTW9kdWxlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvYnV0dG9uJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEaWFsb2dNb2R1bGUsIERpYWxvZ1JlZiB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgTWVzc2FnZUJveE1vZHVsZSwgTWVzc2FnZUJveFNlcnZpY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvbWVzc2FnZS1ib3gnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS90aXRsZSc7XG5pbXBvcnQgeyBCYXNlV2l6YXJkR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vYmFzZS13aXphcmQtZ2VuZXJhdG9yJztcbmltcG9ydCB7IFdpemFyZERpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC1kaWFsb2ctZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkVGl0bGUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3dpemFyZC10aXRsZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgV2l6YXJkR2VuZXJhdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3dpemFyZC1nZW5lcmF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBXaXphcmRCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi4vd2l6YXJkLWJvZHkvd2l6YXJkLWJvZHkuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZHAtZGlhbG9nLXdpemFyZC1nZW5lcmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2ctd2l6YXJkLWdlbmVyYXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBwcm92aWRlcnM6IFtXaXphcmRHZW5lcmF0b3JTZXJ2aWNlLCBGb3JtR2VuZXJhdG9yU2VydmljZV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERpYWxvZ01vZHVsZSxcbiAgICAgICAgVGl0bGVDb21wb25lbnQsXG4gICAgICAgIENka1Njcm9sbGFibGUsXG4gICAgICAgIFNjcm9sbGJhckRpcmVjdGl2ZSxcbiAgICAgICAgV2l6YXJkQm9keUNvbXBvbmVudCxcbiAgICAgICAgQmFyTW9kdWxlLFxuICAgICAgICBCdXR0b25Db21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBOZ1RlbXBsYXRlT3V0bGV0LFxuICAgICAgICBNZXNzYWdlQm94TW9kdWxlLFxuICAgICAgICBJbml0aWFsRm9jdXNEaXJlY3RpdmVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIERpYWxvZ1dpemFyZEdlbmVyYXRvckNvbXBvbmVudCBleHRlbmRzIEJhc2VXaXphcmRHZW5lcmF0b3Ige1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlJykgZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gV2l6YXJkcyBkaWFsb2cgdGl0bGUgY29uZmlndXJhdGlvbi5cbiAgICAgKi9cbiAgICB0aXRsZTogV2l6YXJkVGl0bGU7XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ29uZmlybWF0aW9uIG1lc3NhZ2Ugd2hlbiB3aXphcmQgZGlhbG9nIGNsb3NlIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ1RleHQgPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRpc2NhcmQgeW91ciBwcm9ncmVzcz8nO1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBDb25maXJtIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCA9ICdDb25maXJtJztcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VsIGJ1dHRvbiB0ZXh0IGZvciBjbG9zZSBjb25maXJtYXRpb24gZGlhbG9nLlxuICAgICAqL1xuICAgIGNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSAnQ2FuY2VsJztcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJHbyBOZXh0XCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGdvTmV4dEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkdvIEJhY2tcIiBidXR0b24uXG4gICAgICovXG4gICAgZ29CYWNrQnV0dG9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIFwiRmluaXNoXCIgYnV0dG9uLlxuICAgICAqL1xuICAgIGZpbmlzaEJ1dHRvblRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICogVXNlci1kZWZpbmVkIHRlbXBsYXRlIGZvciBcIkNhbmNlbFwiIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKlxuICAgICAqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgY2FuY2VsbGF0aW9uIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAgICovXG4gICAgY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiBVc2VyLWRlZmluZWQgdGVtcGxhdGUgZm9yIHN1bW1hcnkgc3RlcC5cbiAgICAgKi9cbiAgICBzdW1tYXJ5U3RlcFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIFVzZXItZGVmaW5lZCB0ZW1wbGF0ZSBmb3IgXCJSZXZpZXdcIiBidXR0b24gKi9cbiAgICByZXZpZXdCdXR0b25UZW1wbGF0ZT86IFRlbXBsYXRlUmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfbWVzc2FnZUJveFNlcnZpY2UgPSBpbmplY3QoTWVzc2FnZUJveFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWFsb2dSZWY6IERpYWxvZ1JlZjxXaXphcmREaWFsb2dEYXRhPikge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuaXRlbXM7XG4gICAgICAgIHRoaXMudGl0bGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS50aXRsZTtcbiAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmFwcGVuZFRvV2l6YXJkO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25MYWJlbHMgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzID8/IHt9O1xuICAgICAgICB0aGlzLmNvbnRlbnRIZWlnaHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb250ZW50SGVpZ2h0O1xuICAgICAgICB0aGlzLnJlc3BvbnNpdmVQYWRkaW5ncyA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnJlc3BvbnNpdmVQYWRkaW5ncztcbiAgICAgICAgdGhpcy5nb05leHRCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmdvTmV4dEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmdvQmFja0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZ29CYWNrQnV0dG9uVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZmluaXNoQnV0dG9uVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5maW5pc2hCdXR0b25UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jYW5jZWxCdXR0b25UZW1wbGF0ZSA9IHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNhbmNlbEJ1dHRvblRlbXBsYXRlO1xuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG4gICAgICAgIHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuZGlzcGxheVN1bW1hcnlTdGVwIHx8IGZhbHNlO1xuICAgICAgICB0aGlzLnN1bW1hcnlTdGVwVGVtcGxhdGUgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5zdW1tYXJ5U3RlcFRlbXBsYXRlO1xuICAgICAgICB0aGlzLnJldmlld0J1dHRvblRlbXBsYXRlID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEucmV2aWV3QnV0dG9uVGVtcGxhdGU7XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLnVuaWZpZWRMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy51bmlmaWVkTGF5b3V0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEudW5pZmllZExheW91dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5uYXZpZ2F0aW9uQnV0dG9ucyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb25CdXR0b25zID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEubmF2aWdhdGlvbkJ1dHRvbnM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dUZXh0ID0gdGhpcy5fZGlhbG9nUmVmLmRhdGEuY29uZmlybWF0aW9uRGlhbG9nVGV4dDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbkRpYWxvZ0NhbmNlbFRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDYW5jZWxUZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ1JlZi5kYXRhLmNvbmZpcm1hdGlvbkRpYWxvZ0Nsb3NlVGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQgPSB0aGlzLl9kaWFsb2dSZWYuZGF0YS5jb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FuY2VscyBXaXphcmQgcHJvZ3Jlc3MgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuaXNTdGVwc1VudG91Y2hlZCgpKSB7XG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuY29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0Q29uZmlybWF0aW9uRGlhbG9nVGVtcGxhdGU7XG5cbiAgICAgICAgY29uc3QgbWVzc2FnZUJveFJlZiA9IHRoaXMuX21lc3NhZ2VCb3hTZXJ2aWNlLm9wZW4odGVtcGxhdGUsIHsgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUgfSk7XG5cbiAgICAgICAgbWVzc2FnZUJveFJlZi5hZnRlckNsb3NlZFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChyZXN1bHQpID0+IHJlc3VsdCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGlzbWlzcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENvbXBsZXRlcyBXaXphcmQgcHJvY2VzcywgZW1pdHMgV2l6YXJkIHJlc3VsdCBhbmQgY2xvc2VzIHRoZSBkaWFsb2cuXG4gICAgICovXG4gICAgYXN5bmMgZmluaXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAodGhpcy5pc1N1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBjb25zdCB3aXphcmRSZXN1bHQgPSBhd2FpdCB0aGlzLl93aXphcmRHZW5lcmF0b3JTZXJ2aWNlLmdldFdpemFyZEZvcm1WYWx1ZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJZCA9IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0Q3VycmVudFN0ZXBJZCgpO1xuICAgICAgICB0aGlzLnN1Ym1pdFN0ZXBGb3JtcyhjdXJyZW50U3RlcElkKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuX2Rlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgLnN1YnNjcmliZShhc3luYyAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAmJiBPYmplY3QudmFsdWVzKHJlc3VsdCkuc29tZSgocikgPT4gIXIuc3VjY2VzcykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZFJlc3VsdCA9IGF3YWl0IHRoaXMuX3dpemFyZEdlbmVyYXRvclNlcnZpY2UuZ2V0V2l6YXJkRm9ybVZhbHVlKHRydWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh3aXphcmRSZXN1bHQpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb0JhY2tGbjogKCkgPT4gdm9pZCA9ICgpID0+IHRoaXMuZ29CYWNrKCk7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIF9nb05leHRGbjogKCkgPT4gUHJvbWlzZTx2b2lkPiA9ICgpID0+IHRoaXMuZ29OZXh0KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgX2ZpbmlzaEZuOiAoKSA9PiBQcm9taXNlPHZvaWQ+ID0gKCkgPT4gdGhpcy5maW5pc2goKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBfY2FuY2VsRm46ICgpID0+IHZvaWQgPSAoKSA9PiB0aGlzLmNhbmNlbCgpO1xufVxuIiwiPGZkLWRpYWxvZz5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgPGgyIGZkLXRpdGxlIFtoZWFkZXJTaXplXT1cInRpdGxlLnNpemVcIj57eyB0aXRsZS50ZXh0IH19PC9oMj5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5PlxuICAgICAgICA8ZmRwLXdpemFyZC1ib2R5XG4gICAgICAgICAgICBbbmF2aWdhdGlvbkJ1dHRvbnNdPVwiZmFsc2VcIlxuICAgICAgICAgICAgW2Rpc3BsYXlTdW1tYXJ5U3RlcF09XCJkaXNwbGF5U3VtbWFyeVN0ZXBcIlxuICAgICAgICAgICAgW3Jlc3BvbnNpdmVQYWRkaW5nc109XCJyZXNwb25zaXZlUGFkZGluZ3NcIlxuICAgICAgICAgICAgW25hdmlnYXRpb25CdXR0b25MYWJlbHNdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHNcIlxuICAgICAgICAgICAgW2N1c3RvbVN1bW1hcnlTdGVwVGVtcGxhdGVdPVwic3VtbWFyeVN0ZXBUZW1wbGF0ZVwiXG4gICAgICAgICAgICBbcmV2aWV3QnV0dG9uVGVtcGxhdGVdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgW2hpZGRlbl09XCIhd2l6YXJkQ3JlYXRlZFwiXG4gICAgICAgICAgICBbYXBwZW5kVG9XaXphcmRdPVwiYXBwZW5kVG9XaXphcmRcIlxuICAgICAgICAgICAgW3VuaWZpZWRMYXlvdXRdPVwidW5pZmllZExheW91dFwiXG4gICAgICAgICAgICBbY29udGVudEhlaWdodF09XCJjb250ZW50SGVpZ2h0XCJcbiAgICAgICAgICAgIChzdGF0dXNDaGFuZ2UpPVwic3RlcFN0YXR1c0NoYW5nZWQoJGV2ZW50LmlkLCAkZXZlbnQuc3RhdHVzKVwiXG4gICAgICAgID48L2ZkcC13aXphcmQtYm9keT5cbiAgICAgICAgQGlmICh3aXphcmRDcmVhdGVkKSB7XG4gICAgICAgICAgICA8ZGl2IGZkLWJhciBiYXJEZXNpZ249XCJmbG9hdGluZy1mb290ZXJcIiBbY2xhc3MuZmQtYmFyLS1yZXNwb25zaXZlLXBhZGRpbmdzXT1cInJlc3BvbnNpdmVQYWRkaW5nc1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLXJpZ2h0PlxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpc0ZpcnN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29CYWNrLmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2sudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb0JhY2subGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29CYWNrKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnb0JhY2tCdXR0b25UZW1wbGF0ZSB8fCBkZWZhdWx0R29CYWNrQnV0dG9uVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGdvQmFjazogX2dvQmFja0ZuIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmICghaXNMYXN0U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0R29OZXh0QnV0dG9uVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuZ29OZXh0LmNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZkVHlwZV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5nb05leHQubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ29OZXh0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRSZXZpZXdCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5yZXZpZXcuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLnJldmlldy50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLnJldmlldy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJnb05leHQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzQnJhbmNoaW5nU3RlcCAmJiAoIWlzQ3VycmVudFN0ZXBDb21wbGV0ZWQgfHwgX3N0ZXBzT3JkZXJDaGFuZ2VkKSkgfHwgIWlzTmV4dFN0ZXBTdW1tYXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ29OZXh0QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdEdvTmV4dEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwicmV2aWV3QnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdFJldmlld0J1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZ29OZXh0OiBfZ29OZXh0Rm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xhc3RTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5maW5pc2guY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRUeXBlXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC50eXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIl9uYXZpZ2F0aW9uQnV0dG9uTGFiZWxzLmZpbmlzaC5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmaW5pc2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImZpbmlzaEJ1dHRvblRlbXBsYXRlIHx8IGRlZmF1bHRGaW5pc2hCdXR0b25UZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmluaXNoOiBfZmluaXNoRm4gfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYW5jZWxCdXR0b25UZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwuY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiX25hdmlnYXRpb25CdXR0b25MYWJlbHMuY2FuY2VsLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJfbmF2aWdhdGlvbkJ1dHRvbkxhYmVscy5jYW5jZWwubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY2FuY2VsQnV0dG9uVGVtcGxhdGUgfHwgZGVmYXVsdENhbmNlbEJ1dHRvblRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGNhbmNlbDogX2NhbmNlbEZuIH1cIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9mZC1kaWFsb2ctYm9keT5cbjwvZmQtZGlhbG9nPlxuPG5nLXRlbXBsYXRlXG4gICAgW2ZkTWVzc2FnZUJveFRlbXBsYXRlXVxuICAgIGxldC1tZXNzYWdlQm94XG4gICAgbGV0LW1lc3NhZ2VCb3hDb25maWc9XCJtZXNzYWdlQm94Q29uZmlnXCJcbiAgICAjZGVmYXVsdENvbmZpcm1hdGlvbkRpYWxvZ1RlbXBsYXRlXG4+XG4gICAgPGZkLW1lc3NhZ2UtYm94IFttZXNzYWdlQm94Q29uZmlnXT1cIm1lc3NhZ2VCb3hDb25maWdcIiBbbWVzc2FnZUJveFJlZl09XCJtZXNzYWdlQm94XCI+XG4gICAgICAgIDxmZC1tZXNzYWdlLWJveC1ib2R5PlxuICAgICAgICAgICAge3sgY29uZmlybWF0aW9uRGlhbG9nVGV4dCB9fVxuICAgICAgICA8L2ZkLW1lc3NhZ2UtYm94LWJvZHk+XG4gICAgICAgIDxmZC1tZXNzYWdlLWJveC1mb290ZXI+XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJjb25maXJtYXRpb25EaWFsb2dDbG9zZVRleHRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJtZXNzYWdlQm94LmNsb3NlKHRydWUpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyIGZka0luaXRpYWxGb2N1cyBbbGFiZWxdPVwiY29uZmlybWF0aW9uRGlhbG9nQ2FuY2VsVGV4dFwiIChjbGljayk9XCJtZXNzYWdlQm94LmRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L2ZkLW1lc3NhZ2UtYm94LWZvb3Rlcj5cbiAgICA8L2ZkLW1lc3NhZ2UtYm94PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==