@fundamental-ngx/platform 0.47.4 → 0.48.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/README.md +0 -28
  2. package/esm2022/approval-flow/approval-flow-add-node/approval-flow-add-node.component.mjs +6 -11
  3. package/esm2022/approval-flow/approval-flow-approver-details/approval-flow-approver-details.component.mjs +6 -8
  4. package/esm2022/approval-flow/approval-flow-messages/approval-flow-messages.component.mjs +5 -6
  5. package/esm2022/approval-flow/approval-flow-node/approval-flow-drop-zone.directive.mjs +5 -5
  6. package/esm2022/approval-flow/approval-flow-node/approval-flow-node.component.mjs +8 -11
  7. package/esm2022/approval-flow/approval-flow-select-type/approval-flow-select-type.component.mjs +6 -8
  8. package/esm2022/approval-flow/approval-flow-team-list/approval-flow-team-list.component.mjs +5 -7
  9. package/esm2022/approval-flow/approval-flow-toolbar-actions/approval-flow-toolbar-actions.component.mjs +5 -6
  10. package/esm2022/approval-flow/approval-flow-user-details/approval-flow-user-details.component.mjs +6 -6
  11. package/esm2022/approval-flow/approval-flow-user-list/approval-flow-user-list.component.mjs +6 -7
  12. package/esm2022/approval-flow/approval-flow.component.mjs +8 -10
  13. package/esm2022/approval-flow/approval-flow.module.mjs +4 -4
  14. package/esm2022/approval-flow/services/approval-flow-add-node-view.service.mjs +3 -3
  15. package/esm2022/button/button.component.mjs +5 -5
  16. package/esm2022/button/button.module.mjs +4 -4
  17. package/esm2022/dynamic-page/directives/dynamic-page-header-subtitle.directive.mjs +3 -3
  18. package/esm2022/dynamic-page/directives/dynamic-page-header-title.directive.mjs +3 -3
  19. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content-host.component.mjs +5 -5
  20. package/esm2022/dynamic-page/dynamic-page-content/dynamic-page-content.component.mjs +5 -5
  21. package/esm2022/dynamic-page/dynamic-page-footer/dynamic-page-footer.component.mjs +3 -3
  22. package/esm2022/dynamic-page/dynamic-page-header/actions/global-actions/dynamic-page-global-actions.component.mjs +3 -3
  23. package/esm2022/dynamic-page/dynamic-page-header/actions/layout-actions/dynamic-page-layout-actions.component.mjs +3 -3
  24. package/esm2022/dynamic-page/dynamic-page-header/header/dynamic-page-header.component.mjs +4 -4
  25. package/esm2022/dynamic-page/dynamic-page-header/key-info/dynamic-page-key-info.component.mjs +3 -3
  26. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title-image.component.mjs +3 -3
  27. package/esm2022/dynamic-page/dynamic-page-header/title/dynamic-page-title.component.mjs +3 -3
  28. package/esm2022/dynamic-page/dynamic-page.component.mjs +8 -10
  29. package/esm2022/dynamic-page/dynamic-page.config.mjs +4 -4
  30. package/esm2022/dynamic-page/dynamic-page.module.mjs +4 -4
  31. package/esm2022/dynamic-page/dynamic-page.service.mjs +3 -3
  32. package/esm2022/feed-input/feed-input.component.mjs +6 -7
  33. package/esm2022/feed-input/feed-input.module.mjs +4 -4
  34. package/esm2022/form/auto-complete/auto-complete.directive.mjs +5 -5
  35. package/esm2022/form/auto-complete/auto-complete.module.mjs +4 -4
  36. package/esm2022/form/checkbox/checkbox.component.mjs +6 -6
  37. package/esm2022/form/checkbox/checkbox.module.mjs +4 -4
  38. package/esm2022/form/checkbox-group/checkbox-group.component.mjs +8 -8
  39. package/esm2022/form/checkbox-group/checkbox-group.module.mjs +4 -4
  40. package/esm2022/form/combobox/combobox/combobox.component.mjs +9 -11
  41. package/esm2022/form/combobox/combobox-mobile/combobox/combobox-mobile.component.mjs +13 -15
  42. package/esm2022/form/combobox/combobox-mobile/combobox-mobile.module.mjs +4 -4
  43. package/esm2022/form/combobox/combobox.config.mjs +4 -4
  44. package/esm2022/form/combobox/combobox.module.mjs +4 -4
  45. package/esm2022/form/combobox/commons/base-combobox.mjs +8 -6
  46. package/esm2022/form/combobox/directives/combobox-item.directive.mjs +15 -15
  47. package/esm2022/form/date-picker/date-picker.component.mjs +6 -6
  48. package/esm2022/form/date-picker/date-picker.module.mjs +4 -4
  49. package/esm2022/form/datetime-picker/datetime-picker.component.mjs +6 -6
  50. package/esm2022/form/datetime-picker/datetime-picker.module.mjs +4 -4
  51. package/esm2022/form/form-generator/base-dynamic-form-generator-control.mjs +3 -3
  52. package/esm2022/form/form-generator/controls/dynamic-form-generator-checkbox/dynamic-form-generator-checkbox.component.mjs +4 -4
  53. package/esm2022/form/form-generator/controls/dynamic-form-generator-datepicker/dynamic-form-generator-datepicker.component.mjs +4 -4
  54. package/esm2022/form/form-generator/controls/dynamic-form-generator-editor/dynamic-form-generator-editor.component.mjs +4 -4
  55. package/esm2022/form/form-generator/controls/dynamic-form-generator-input/dynamic-form-generator-input.component.mjs +6 -7
  56. package/esm2022/form/form-generator/controls/dynamic-form-generator-multi-input/dynamic-form-generator-multi-input.component.mjs +4 -4
  57. package/esm2022/form/form-generator/controls/dynamic-form-generator-object-status/dynamic-form-generator-object-status.component.mjs +3 -3
  58. package/esm2022/form/form-generator/controls/dynamic-form-generator-radio/dynamic-form-generator-radio.component.mjs +4 -4
  59. package/esm2022/form/form-generator/controls/dynamic-form-generator-select/dynamic-form-generator-select.component.mjs +4 -4
  60. package/esm2022/form/form-generator/controls/dynamic-form-generator-switch/dynamic-form-generator-switch.component.mjs +4 -4
  61. package/esm2022/form/form-generator/dynamic-form-control-field.directive.mjs +5 -5
  62. package/esm2022/form/form-generator/dynamic-form-control.directive.mjs +6 -6
  63. package/esm2022/form/form-generator/fdp-form-generator.module.mjs +4 -4
  64. package/esm2022/form/form-generator/form-generator/form-generator.component.mjs +9 -11
  65. package/esm2022/form/form-generator/form-generator-components-accessor.service.mjs +3 -3
  66. package/esm2022/form/form-generator/form-generator-field/form-generator-field.component.mjs +7 -8
  67. package/esm2022/form/form-generator/form-generator.service.mjs +5 -5
  68. package/esm2022/form/form-generator/pipes/get-hint-options.pipe.mjs +5 -5
  69. package/esm2022/form/form-generator/pipes/get-ordered-form-controls.pipe.mjs +3 -3
  70. package/esm2022/form/form-group/fdp-form.module.mjs +4 -4
  71. package/esm2022/form/form-group/form-field/form-field.component.mjs +10 -10
  72. package/esm2022/form/form-group/form-field-error/form-field-error-description.directive.mjs +6 -6
  73. package/esm2022/form/form-group/form-field-error/form-field-error-heading.directive.mjs +6 -6
  74. package/esm2022/form/form-group/form-field-error/form-field-error.directive.mjs +5 -5
  75. package/esm2022/form/form-group/form-field-extras/form-field-extras.component.mjs +3 -3
  76. package/esm2022/form/form-group/form-field-group/form-field-group.component.mjs +6 -6
  77. package/esm2022/form/form-group/form-group-header/form-group-header.component.mjs +6 -6
  78. package/esm2022/form/form-group/form-group.component.mjs +8 -10
  79. package/esm2022/form/form-group/pipes/field-group-row-value.pipe.mjs +3 -3
  80. package/esm2022/form/form-group/services/form-field-layout.service.mjs +5 -5
  81. package/esm2022/form/index.mjs +1 -3
  82. package/esm2022/form/input/fdp-input.module.mjs +4 -4
  83. package/esm2022/form/input/input.component.mjs +6 -6
  84. package/esm2022/form/input-group/addon-body.component.mjs +5 -5
  85. package/esm2022/form/input-group/addon.component.mjs +5 -5
  86. package/esm2022/form/input-group/input-group.component.mjs +12 -12
  87. package/esm2022/form/input-group/input-group.config.mjs +4 -4
  88. package/esm2022/form/input-group/input-group.module.mjs +4 -4
  89. package/esm2022/form/input-group/input.component.mjs +3 -3
  90. package/esm2022/form/input-message-group-with-template/input-message-group-with-template.component.mjs +7 -7
  91. package/esm2022/form/multi-combobox/commons/base-multi-combobox.mjs +6 -6
  92. package/esm2022/form/multi-combobox/multi-combobox/multi-combobox.component.mjs +10 -12
  93. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox/multi-combobox-mobile.component.mjs +8 -9
  94. package/esm2022/form/multi-combobox/multi-combobox-mobile/multi-combobox-mobile.module.mjs +4 -4
  95. package/esm2022/form/multi-combobox/multi-combobox.config.mjs +4 -4
  96. package/esm2022/form/multi-combobox/multi-combobox.module.mjs +4 -4
  97. package/esm2022/form/multi-input/base-multi-input.mjs +6 -6
  98. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.component.mjs +12 -12
  99. package/esm2022/form/multi-input/multi-input-mobile/multi-input-mobile.module.mjs +4 -4
  100. package/esm2022/form/multi-input/multi-input.component.mjs +9 -11
  101. package/esm2022/form/multi-input/multi-input.config.mjs +4 -4
  102. package/esm2022/form/multi-input/multi-input.module.mjs +4 -4
  103. package/esm2022/form/radio-group/radio/radio.component.mjs +8 -8
  104. package/esm2022/form/radio-group/radio-group.component.mjs +8 -8
  105. package/esm2022/form/radio-group/radio-group.module.mjs +4 -4
  106. package/esm2022/form/select/commons/base-select.mjs +6 -6
  107. package/esm2022/form/select/select/select.component.mjs +8 -8
  108. package/esm2022/form/select/select.config.mjs +4 -4
  109. package/esm2022/form/select/select.module.mjs +4 -4
  110. package/esm2022/form/step-input/base.step-input.mjs +5 -5
  111. package/esm2022/form/step-input/number/number-step-input.component.mjs +9 -10
  112. package/esm2022/form/step-input/step-input-action-button.mjs +3 -3
  113. package/esm2022/form/step-input/step-input-control.directive.mjs +6 -6
  114. package/esm2022/form/step-input/step-input-decrement.directive.mjs +5 -5
  115. package/esm2022/form/step-input/step-input-increment.directive.mjs +5 -5
  116. package/esm2022/form/step-input/step-input.config.mjs +3 -3
  117. package/esm2022/form/step-input/step-input.module.mjs +4 -4
  118. package/esm2022/form/switch/switch/switch.component.mjs +6 -6
  119. package/esm2022/form/switch/switch/switch.config.mjs +3 -3
  120. package/esm2022/form/switch/switch.module.mjs +4 -4
  121. package/esm2022/form/text-area/text-area.component.mjs +8 -9
  122. package/esm2022/form/text-area/text-area.config.mjs +3 -3
  123. package/esm2022/form/text-area/text-area.module.mjs +4 -4
  124. package/esm2022/form/time-picker/time-picker.component.mjs +6 -6
  125. package/esm2022/form/time-picker/time-picker.module.mjs +4 -4
  126. package/esm2022/fundamental-ngx.module.mjs +14 -33
  127. package/esm2022/icon-tab-bar/components/closable-icon-tab-bar.class.mjs +3 -3
  128. package/esm2022/icon-tab-bar/components/icon-tab-bar-base.class.mjs +5 -9
  129. package/esm2022/icon-tab-bar/components/icon-tab-bar-filter-type/icon-tab-bar-filter-type.component.mjs +6 -8
  130. package/esm2022/icon-tab-bar/components/icon-tab-bar-icon-type/icon-tab-bar-icon-type.component.mjs +6 -8
  131. package/esm2022/icon-tab-bar/components/icon-tab-bar-process-type/icon-tab-bar-process-type.component.mjs +5 -8
  132. package/esm2022/icon-tab-bar/components/icon-tab-bar-text-type/icon-tab-bar-text-type.component.mjs +7 -9
  133. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover/icon-tab-bar-popover.component.mjs +6 -15
  134. package/esm2022/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.mjs +5 -9
  135. package/esm2022/icon-tab-bar/components/popovers/text-type-popover/text-type-popover.component.mjs +6 -8
  136. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-container.directive.mjs +5 -5
  137. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-item.directive.mjs +5 -5
  138. package/esm2022/icon-tab-bar/directives/dnd/icon-bar-dnd-list.directive.mjs +5 -5
  139. package/esm2022/icon-tab-bar/icon-tab-bar.component.mjs +8 -9
  140. package/esm2022/icon-tab-bar/icon-tab-bar.module.mjs +4 -4
  141. package/esm2022/index.mjs +8 -12
  142. package/esm2022/info-label/info-label.component.mjs +5 -5
  143. package/esm2022/info-label/info-label.module.mjs +4 -4
  144. package/esm2022/link/link.component.mjs +5 -5
  145. package/esm2022/link/link.module.mjs +4 -4
  146. package/esm2022/list/action-list-item/action-list-item.component.mjs +3 -3
  147. package/esm2022/list/action-list-item/action-list-item.module.mjs +4 -4
  148. package/esm2022/list/base-list-item.mjs +11 -11
  149. package/esm2022/list/display-list-item/display-list-item.component.mjs +6 -7
  150. package/esm2022/list/display-list-item/display-list-item.module.mjs +4 -4
  151. package/esm2022/list/free-content-list-item/free-content-list-item.component.mjs +4 -4
  152. package/esm2022/list/list-group-footer.component.mjs +3 -3
  153. package/esm2022/list/list-group-header.component.mjs +3 -3
  154. package/esm2022/list/list.component.mjs +9 -11
  155. package/esm2022/list/list.config.mjs +3 -3
  156. package/esm2022/list/list.module.mjs +4 -4
  157. package/esm2022/list/load-more-content.directive.mjs +4 -4
  158. package/esm2022/list/object-list-item/object-list-item-row.component.mjs +4 -4
  159. package/esm2022/list/object-list-item/object-list-item.component.mjs +6 -7
  160. package/esm2022/list/object-list-item/object-list-item.module.mjs +4 -4
  161. package/esm2022/list/standard-list-item/standard-list-item.component.mjs +6 -7
  162. package/esm2022/list/standard-list-item/standard-list-item.module.mjs +4 -4
  163. package/esm2022/menu/menu-item.component.mjs +7 -7
  164. package/esm2022/menu/menu-trigger.directive.mjs +6 -6
  165. package/esm2022/menu/menu.component.mjs +6 -6
  166. package/esm2022/menu/menu.module.mjs +4 -4
  167. package/esm2022/menu-button/menu-button.component.mjs +5 -5
  168. package/esm2022/menu-button/menu-button.module.mjs +4 -4
  169. package/esm2022/message-popover/components/message-popover-form-wrapper/message-popover-form-wrapper.component.mjs +6 -6
  170. package/esm2022/message-popover/components/message-view/message-view.component.mjs +8 -10
  171. package/esm2022/message-popover/directives/message-popover-form-item.directive.mjs +6 -6
  172. package/esm2022/message-popover/message-popover.component.mjs +7 -9
  173. package/esm2022/message-popover/platform-message-popover.module.mjs +4 -4
  174. package/esm2022/object-marker/object-marker.component.mjs +6 -7
  175. package/esm2022/object-marker/object-marker.module.mjs +4 -4
  176. package/esm2022/object-status/object-status.component.mjs +8 -8
  177. package/esm2022/object-status/object-status.module.mjs +4 -4
  178. package/esm2022/page-footer/page-footer.component.mjs +6 -6
  179. package/esm2022/page-footer/page-footer.module.mjs +4 -4
  180. package/esm2022/panel/panel-actions.component.mjs +3 -3
  181. package/esm2022/panel/panel-content/panel-content.component.mjs +4 -4
  182. package/esm2022/panel/panel.component.mjs +5 -5
  183. package/esm2022/panel/panel.config.mjs +4 -4
  184. package/esm2022/panel/panel.module.mjs +4 -4
  185. package/esm2022/search-field/search-field-mobile/search-field/search-field-mobile.component.mjs +8 -9
  186. package/esm2022/search-field/search-field-mobile/search-field-mobile.module.mjs +4 -4
  187. package/esm2022/search-field/search-field.component.mjs +16 -18
  188. package/esm2022/search-field/search-field.module.mjs +4 -4
  189. package/esm2022/settings-generator/controls/theme-selector-list/theme-selector-list.component.mjs +9 -16
  190. package/esm2022/settings-generator/layouts/base-settings-generator-layout.mjs +3 -3
  191. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-icon/settings-generator-sidebar-icon.component.mjs +5 -6
  192. package/esm2022/settings-generator/layouts/settings-generator-sidebar-layout/settings-generator-sidebar-layout.component.mjs +6 -9
  193. package/esm2022/settings-generator/settings-generator-content/settings-generator-content.component.mjs +6 -8
  194. package/esm2022/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.mjs +7 -7
  195. package/esm2022/settings-generator/settings-generator-layout-accessor.service.mjs +3 -3
  196. package/esm2022/settings-generator/settings-generator.component.mjs +9 -9
  197. package/esm2022/settings-generator/settings-generator.module.mjs +4 -4
  198. package/esm2022/settings-generator/settings-generator.service.mjs +4 -4
  199. package/esm2022/shared/base.mjs +5 -5
  200. package/esm2022/shared/form/base.input.mjs +6 -6
  201. package/esm2022/shared/form/collection-base.input.mjs +6 -6
  202. package/esm2022/shared/form/inline-layout-collection-base.input.mjs +13 -13
  203. package/esm2022/shared/pipes/convert-bytes/convert-bytes.pipe.mjs +3 -3
  204. package/esm2022/shared/pipes/pipe.module.mjs +4 -4
  205. package/esm2022/shared/platform.config.mjs +3 -3
  206. package/esm2022/slider/slider.component.mjs +6 -6
  207. package/esm2022/slider/slider.module.mjs +4 -4
  208. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/base-smart-filter-bar-condition-field.mjs +4 -4
  209. package/esm2022/smart-filter-bar/components/smart-filter-bar-condition-field/smart-filter-bar-condition-field.component.mjs +4 -4
  210. package/esm2022/smart-filter-bar/components/smart-filter-bar-conditions-dialog/smart-filter-bar-conditions-dialog.component.mjs +6 -9
  211. package/esm2022/smart-filter-bar/components/smart-filter-bar-settings-dialog/smart-filter-bar-settings-dialog.component.mjs +7 -9
  212. package/esm2022/smart-filter-bar/directives/smart-filter-bar-field-definition.directive.mjs +3 -3
  213. package/esm2022/smart-filter-bar/directives/smart-filter-bar-subject.directive.mjs +5 -5
  214. package/esm2022/smart-filter-bar/directives/smart-filter-bar-toolbar-item.directive.mjs +4 -4
  215. package/esm2022/smart-filter-bar/smart-filter-bar.class.mjs +3 -3
  216. package/esm2022/smart-filter-bar/smart-filter-bar.component.mjs +8 -10
  217. package/esm2022/smart-filter-bar/smart-filter-bar.module.mjs +4 -4
  218. package/esm2022/smart-filter-bar/smart-filter-bar.service.mjs +4 -4
  219. package/esm2022/split-menu-button/split-menu-button.component.mjs +6 -6
  220. package/esm2022/split-menu-button/split-menu-button.module.mjs +4 -4
  221. package/esm2022/table/components/no-data-wrapper/no-data-wrapper.component.mjs +3 -3
  222. package/esm2022/table/components/reset-button/reset-button.component.mjs +5 -5
  223. package/esm2022/table/components/table-cell-header-popover/table-cell-header-popover.component.mjs +6 -8
  224. package/esm2022/table/components/table-column/table-column.component.mjs +6 -6
  225. package/esm2022/table/components/table-column-resizer/table-column-resizer.component.mjs +6 -6
  226. package/esm2022/table/components/table-editable-cell/table-editable-cell.component.mjs +5 -15
  227. package/esm2022/table/components/table-group-row/table-group-row.component.mjs +7 -7
  228. package/esm2022/table/components/table-header-cell-content/table-header-cell-content.component.mjs +6 -6
  229. package/esm2022/table/components/table-header-row/table-header-row.component.mjs +11 -13
  230. package/esm2022/table/components/table-p13-dialog/columns/columns.component.mjs +7 -9
  231. package/esm2022/table/components/table-p13-dialog/filtering/filter-rule.component.mjs +9 -11
  232. package/esm2022/table/components/table-p13-dialog/filtering/filtering.component.mjs +6 -9
  233. package/esm2022/table/components/table-p13-dialog/grouping/grouping.component.mjs +6 -8
  234. package/esm2022/table/components/table-p13-dialog/sorting/sorting.component.mjs +9 -11
  235. package/esm2022/table/components/table-p13-dialog/table-p13-columns.component.mjs +3 -3
  236. package/esm2022/table/components/table-p13-dialog/table-p13-dialog.component.mjs +5 -5
  237. package/esm2022/table/components/table-p13-dialog/table-p13-filter.component.mjs +3 -3
  238. package/esm2022/table/components/table-p13-dialog/table-p13-group.component.mjs +3 -3
  239. package/esm2022/table/components/table-p13-dialog/table-p13-sort.component.mjs +3 -3
  240. package/esm2022/table/components/table-popping-row/table-popping-row.component.mjs +7 -9
  241. package/esm2022/table/components/table-row/table-row.component.mjs +8 -12
  242. package/esm2022/table/components/table-toolbar/table-toolbar-actions.component.mjs +3 -3
  243. package/esm2022/table/components/table-toolbar/table-toolbar-left-actions.component.mjs +3 -3
  244. package/esm2022/table/components/table-toolbar/table-toolbar.component.mjs +7 -8
  245. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-custom.component.mjs +6 -6
  246. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-multi-select.component.mjs +5 -6
  247. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-single-select.component.mjs +5 -14
  248. package/esm2022/table/components/table-view-settings-dialog/filtering/filter-step.component.mjs +5 -8
  249. package/esm2022/table/components/table-view-settings-dialog/filtering/filters-list-step.component.mjs +5 -7
  250. package/esm2022/table/components/table-view-settings-dialog/filtering/filters.component.mjs +7 -10
  251. package/esm2022/table/components/table-view-settings-dialog/grouping/grouping.component.mjs +6 -8
  252. package/esm2022/table/components/table-view-settings-dialog/sorting/sorting.component.mjs +6 -9
  253. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-dialog.component.mjs +5 -5
  254. package/esm2022/table/components/table-view-settings-dialog/table-view-settings-filter.component.mjs +3 -3
  255. package/esm2022/table/table.component.mjs +9 -14
  256. package/esm2022/table/table.module.mjs +4 -4
  257. package/esm2022/table-helpers/directives/platform-table-column-responsive.directive.mjs +6 -6
  258. package/esm2022/table-helpers/directives/table-cell-header-popover.directive.mjs +4 -4
  259. package/esm2022/table-helpers/directives/table-cell-resizable.directive.mjs +5 -5
  260. package/esm2022/table-helpers/directives/table-cell-selectable.directive.mjs +3 -3
  261. package/esm2022/table-helpers/directives/table-cell.directive.mjs +16 -16
  262. package/esm2022/table-helpers/directives/table-data-source.directive.mjs +3 -3
  263. package/esm2022/table-helpers/directives/table-draggable.directive.mjs +3 -3
  264. package/esm2022/table-helpers/directives/table-header-resizer.directive.mjs +3 -3
  265. package/esm2022/table-helpers/directives/table-header.directive.mjs +7 -7
  266. package/esm2022/table-helpers/directives/table-initial-state.directive.mjs +3 -3
  267. package/esm2022/table-helpers/directives/table-scrollable.directive.mjs +4 -4
  268. package/esm2022/table-helpers/directives/table-view-settings-filter-custom.directive.mjs +4 -4
  269. package/esm2022/table-helpers/directives/table-virtual-scroll.directive.mjs +3 -3
  270. package/esm2022/table-helpers/enums/collection-filter.enum.mjs +16 -1
  271. package/esm2022/table-helpers/pipes/cell-styles.pipe.mjs +3 -3
  272. package/esm2022/table-helpers/pipes/column-resizable-side.pipe.mjs +3 -3
  273. package/esm2022/table-helpers/pipes/column-sorting-direction.pipe.mjs +3 -3
  274. package/esm2022/table-helpers/pipes/row-classes.pipe.mjs +3 -3
  275. package/esm2022/table-helpers/pipes/selection-cell-styles.pipe.mjs +3 -3
  276. package/esm2022/table-helpers/services/table-column-resize.service.mjs +5 -5
  277. package/esm2022/table-helpers/services/table-responsive.service.mjs +5 -5
  278. package/esm2022/table-helpers/services/table-row.service.mjs +3 -3
  279. package/esm2022/table-helpers/services/table-scroll-dispatcher.service.mjs +3 -3
  280. package/esm2022/table-helpers/services/table.service.mjs +3 -3
  281. package/esm2022/table-helpers/table-helpers.module.mjs +4 -4
  282. package/esm2022/value-help-dialog/components/base-tab/vhd-base-tab.component.mjs +5 -5
  283. package/esm2022/value-help-dialog/components/define-tab/define-tab.component.mjs +6 -10
  284. package/esm2022/value-help-dialog/components/select-tab/select-tab.component.mjs +13 -15
  285. package/esm2022/value-help-dialog/components/value-help-dialog-filter/value-help-dialog-filter.component.mjs +3 -3
  286. package/esm2022/value-help-dialog/directives/condition-count-message.directive.mjs +5 -5
  287. package/esm2022/value-help-dialog/value-help-dialog/value-help-dialog.component.mjs +12 -17
  288. package/esm2022/value-help-dialog/value-help-dialog.module.mjs +4 -4
  289. package/esm2022/variant-management/components/manage-variant-item/manage-variant-item.component.mjs +5 -5
  290. package/esm2022/variant-management/components/manage-variants-dialog/manage-variants-dialog.component.mjs +6 -8
  291. package/esm2022/variant-management/components/variant-management-wrapper/variant-management-wrapper.component.mjs +3 -3
  292. package/esm2022/variant-management/directives/variant-management-dirty-label.directive.mjs +4 -4
  293. package/esm2022/variant-management/variant-management.component.mjs +8 -10
  294. package/esm2022/variant-management/variant-management.module.mjs +4 -4
  295. package/esm2022/wizard-generator/base-wizard-generator.mjs +5 -5
  296. package/esm2022/wizard-generator/components/dialog-wizard-generator/dialog-wizard-generator.component.mjs +7 -8
  297. package/esm2022/wizard-generator/components/wizard-body/wizard-body.component.mjs +7 -9
  298. package/esm2022/wizard-generator/components/wizard-generator/wizard-generator.component.mjs +6 -7
  299. package/esm2022/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.mjs +6 -7
  300. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-section/wizard-summary-section.component.mjs +5 -6
  301. package/esm2022/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.mjs +7 -7
  302. package/esm2022/wizard-generator/directives/wizard-generator-finish-button.directive.mjs +3 -3
  303. package/esm2022/wizard-generator/directives/wizard-generator-go-next-button.directive.mjs +3 -3
  304. package/esm2022/wizard-generator/directives/wizard-generator-review-button.directive.mjs +3 -3
  305. package/esm2022/wizard-generator/directives/wizard-generator-summary-step.directive.mjs +3 -3
  306. package/esm2022/wizard-generator/wizard-dialog-generator.service.mjs +4 -4
  307. package/esm2022/wizard-generator/wizard-generator.module.mjs +4 -4
  308. package/esm2022/wizard-generator/wizard-generator.service.mjs +4 -4
  309. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs +62 -74
  310. package/fesm2022/fundamental-ngx-platform-approval-flow.mjs.map +1 -1
  311. package/fesm2022/fundamental-ngx-platform-button.mjs +8 -8
  312. package/fesm2022/fundamental-ngx-platform-button.mjs.map +1 -1
  313. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs +54 -56
  314. package/fesm2022/fundamental-ngx-platform-dynamic-page.mjs.map +1 -1
  315. package/fesm2022/fundamental-ngx-platform-feed-input.mjs +9 -10
  316. package/fesm2022/fundamental-ngx-platform-feed-input.mjs.map +1 -1
  317. package/fesm2022/fundamental-ngx-platform-form.mjs +444 -602
  318. package/fesm2022/fundamental-ngx-platform-form.mjs.map +1 -1
  319. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs +59 -87
  320. package/fesm2022/fundamental-ngx-platform-icon-tab-bar.mjs.map +1 -1
  321. package/fesm2022/fundamental-ngx-platform-info-label.mjs +8 -8
  322. package/fesm2022/fundamental-ngx-platform-info-label.mjs.map +1 -1
  323. package/fesm2022/fundamental-ngx-platform-link.mjs +8 -8
  324. package/fesm2022/fundamental-ngx-platform-link.mjs.map +1 -1
  325. package/fesm2022/fundamental-ngx-platform-list.mjs +73 -78
  326. package/fesm2022/fundamental-ngx-platform-list.mjs.map +1 -1
  327. package/fesm2022/fundamental-ngx-platform-menu-button.mjs +8 -8
  328. package/fesm2022/fundamental-ngx-platform-menu-button.mjs.map +1 -1
  329. package/fesm2022/fundamental-ngx-platform-menu.mjs +20 -20
  330. package/fesm2022/fundamental-ngx-platform-menu.mjs.map +1 -1
  331. package/fesm2022/fundamental-ngx-platform-message-popover.mjs +29 -33
  332. package/fesm2022/fundamental-ngx-platform-message-popover.mjs.map +1 -1
  333. package/fesm2022/fundamental-ngx-platform-object-marker.mjs +9 -10
  334. package/fesm2022/fundamental-ngx-platform-object-marker.mjs.map +1 -1
  335. package/fesm2022/fundamental-ngx-platform-object-status.mjs +12 -12
  336. package/fesm2022/fundamental-ngx-platform-object-status.mjs.map +1 -1
  337. package/fesm2022/fundamental-ngx-platform-page-footer.mjs +9 -9
  338. package/fesm2022/fundamental-ngx-platform-page-footer.mjs.map +1 -1
  339. package/fesm2022/fundamental-ngx-platform-panel.mjs +19 -19
  340. package/fesm2022/fundamental-ngx-platform-panel.mjs.map +1 -1
  341. package/fesm2022/fundamental-ngx-platform-search-field.mjs +29 -32
  342. package/fesm2022/fundamental-ngx-platform-search-field.mjs.map +1 -1
  343. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs +45 -56
  344. package/fesm2022/fundamental-ngx-platform-settings-generator.mjs.map +1 -1
  345. package/fesm2022/fundamental-ngx-platform-shared.mjs +36 -36
  346. package/fesm2022/fundamental-ngx-platform-shared.mjs.map +1 -1
  347. package/fesm2022/fundamental-ngx-platform-slider.mjs +9 -9
  348. package/fesm2022/fundamental-ngx-platform-slider.mjs.map +1 -1
  349. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs +48 -53
  350. package/fesm2022/fundamental-ngx-platform-smart-filter-bar.mjs.map +1 -1
  351. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs +9 -9
  352. package/fesm2022/fundamental-ngx-platform-split-menu-button.mjs.map +1 -1
  353. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs +115 -100
  354. package/fesm2022/fundamental-ngx-platform-table-helpers.mjs.map +1 -1
  355. package/fesm2022/fundamental-ngx-platform-table.mjs +168 -218
  356. package/fesm2022/fundamental-ngx-platform-table.mjs.map +1 -1
  357. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs +41 -52
  358. package/fesm2022/fundamental-ngx-platform-value-help-dialog.mjs.map +1 -1
  359. package/fesm2022/fundamental-ngx-platform-variant-management.mjs +28 -31
  360. package/fesm2022/fundamental-ngx-platform-variant-management.mjs.map +1 -1
  361. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs +58 -61
  362. package/fesm2022/fundamental-ngx-platform-wizard-generator.mjs.map +1 -1
  363. package/fesm2022/fundamental-ngx-platform.mjs +19 -42
  364. package/fesm2022/fundamental-ngx-platform.mjs.map +1 -1
  365. package/form/combobox/combobox-mobile/combobox/combobox-mobile.component.d.ts +2 -2
  366. package/form/form-group/form-group.component.d.ts +1 -1
  367. package/form/index.d.ts +0 -2
  368. package/form/input-group/input-group.component.d.ts +2 -2
  369. package/form/multi-combobox/multi-combobox/multi-combobox.component.d.ts +1 -1
  370. package/form/multi-input/multi-input-mobile/multi-input-mobile.component.d.ts +2 -2
  371. package/fundamental-ngx-platform-v0.48.0-rc.1.tgz +0 -0
  372. package/fundamental-ngx.module.d.ts +27 -31
  373. package/icon-tab-bar/components/icon-tab-bar-base.class.d.ts +0 -2
  374. package/icon-tab-bar/components/popovers/icon-tab-bar-popover-base.class.d.ts +0 -2
  375. package/index.d.ts +7 -11
  376. package/list/list.component.d.ts +1 -1
  377. package/package.json +4 -28
  378. package/page-footer/page-footer.component.d.ts +1 -1
  379. package/schematics/ng-add/index.js +1 -1
  380. package/settings-generator/settings-generator-content/settings-generator-section/settings-generator-section.component.d.ts +1 -1
  381. package/settings-generator/settings-generator.component.d.ts +2 -2
  382. package/table/components/table-p13-dialog/filtering/filter-rule.component.d.ts +2 -0
  383. package/table/table.component.d.ts +1 -1
  384. package/table-helpers/enums/collection-filter.enum.d.ts +2 -0
  385. package/value-help-dialog/components/select-tab/select-tab.component.d.ts +1 -1
  386. package/value-help-dialog/value-help-dialog/value-help-dialog.component.d.ts +1 -1
  387. package/wizard-generator/components/wizard-generator-step/wizard-generator-step.component.d.ts +2 -2
  388. package/wizard-generator/components/wizard-summary-step/wizard-summary-step.component.d.ts +2 -2
  389. package/action-bar/README.md +0 -25
  390. package/action-bar/action-bar.component.d.ts +0 -36
  391. package/action-bar/action-bar.module.d.ts +0 -8
  392. package/action-bar/index.d.ts +0 -2
  393. package/action-button-group/README.md +0 -25
  394. package/action-button-group/action-button-group.component.d.ts +0 -11
  395. package/action-button-group/action-button-group.module.d.ts +0 -7
  396. package/action-button-group/index.d.ts +0 -2
  397. package/esm2022/action-bar/action-bar.component.mjs +0 -64
  398. package/esm2022/action-bar/action-bar.module.mjs +0 -17
  399. package/esm2022/action-bar/fundamental-ngx-platform-action-bar.mjs +0 -5
  400. package/esm2022/action-bar/index.mjs +0 -3
  401. package/esm2022/action-button-group/action-button-group.component.mjs +0 -21
  402. package/esm2022/action-button-group/action-button-group.module.mjs +0 -16
  403. package/esm2022/action-button-group/fundamental-ngx-platform-action-button-group.mjs +0 -5
  404. package/esm2022/action-button-group/index.mjs +0 -3
  405. package/esm2022/form/platform-file-uploader/platform-file-uploader.component.mjs +0 -143
  406. package/esm2022/form/platform-file-uploader/platform-file-uploader.module.mjs +0 -16
  407. package/esm2022/thumbnail/fundamental-ngx-platform-thumbnail.mjs +0 -5
  408. package/esm2022/thumbnail/index.mjs +0 -6
  409. package/esm2022/thumbnail/thumbnail-details/thumbnail-details.component.mjs +0 -166
  410. package/esm2022/thumbnail/thumbnail-image/thumbnail-image.component.mjs +0 -100
  411. package/esm2022/thumbnail/thumbnail.component.mjs +0 -148
  412. package/esm2022/thumbnail/thumbnail.interfaces.mjs +0 -2
  413. package/esm2022/thumbnail/thumbnail.module.mjs +0 -19
  414. package/esm2022/upload-collection/dialogs/move-to/move-to.component.mjs +0 -148
  415. package/esm2022/upload-collection/dialogs/new-folder/new-folder.component.mjs +0 -69
  416. package/esm2022/upload-collection/directives/upload-collection-dragndrop.directive.mjs +0 -138
  417. package/esm2022/upload-collection/domain/upload-collection-data-provider.mjs +0 -106
  418. package/esm2022/upload-collection/domain/upload-collection-data-source.mjs +0 -95
  419. package/esm2022/upload-collection/fundamental-ngx-platform-upload-collection.mjs +0 -5
  420. package/esm2022/upload-collection/helpers/generate-message-stripe-data.mjs +0 -20
  421. package/esm2022/upload-collection/index.mjs +0 -12
  422. package/esm2022/upload-collection/models/upload-collection.models.mjs +0 -58
  423. package/esm2022/upload-collection/services/files-validator.service.mjs +0 -68
  424. package/esm2022/upload-collection/upload-collection/upload-collection-data-provider-test.mjs +0 -280
  425. package/esm2022/upload-collection/upload-collection/upload-collection.component.mjs +0 -926
  426. package/esm2022/upload-collection/upload-collection.module.mjs +0 -33
  427. package/fesm2022/fundamental-ngx-platform-action-bar.mjs +0 -85
  428. package/fesm2022/fundamental-ngx-platform-action-bar.mjs.map +0 -1
  429. package/fesm2022/fundamental-ngx-platform-action-button-group.mjs +0 -41
  430. package/fesm2022/fundamental-ngx-platform-action-button-group.mjs.map +0 -1
  431. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs +0 -418
  432. package/fesm2022/fundamental-ngx-platform-thumbnail.mjs.map +0 -1
  433. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs +0 -1893
  434. package/fesm2022/fundamental-ngx-platform-upload-collection.mjs.map +0 -1
  435. package/form/platform-file-uploader/platform-file-uploader.component.d.ts +0 -69
  436. package/form/platform-file-uploader/platform-file-uploader.module.d.ts +0 -7
  437. package/fundamental-ngx-platform-v0.47.4.tgz +0 -0
  438. package/thumbnail/README.md +0 -25
  439. package/thumbnail/index.d.ts +0 -5
  440. package/thumbnail/thumbnail-details/thumbnail-details.component.d.ts +0 -57
  441. package/thumbnail/thumbnail-image/thumbnail-image.component.d.ts +0 -48
  442. package/thumbnail/thumbnail.component.d.ts +0 -73
  443. package/thumbnail/thumbnail.interfaces.d.ts +0 -12
  444. package/thumbnail/thumbnail.module.d.ts +0 -9
  445. package/upload-collection/README.md +0 -25
  446. package/upload-collection/dialogs/move-to/move-to.component.d.ts +0 -57
  447. package/upload-collection/dialogs/new-folder/new-folder.component.d.ts +0 -26
  448. package/upload-collection/directives/upload-collection-dragndrop.directive.d.ts +0 -64
  449. package/upload-collection/domain/upload-collection-data-provider.d.ts +0 -46
  450. package/upload-collection/domain/upload-collection-data-source.d.ts +0 -49
  451. package/upload-collection/helpers/generate-message-stripe-data.d.ts +0 -3
  452. package/upload-collection/index.d.ts +0 -11
  453. package/upload-collection/models/upload-collection.models.d.ts +0 -225
  454. package/upload-collection/services/files-validator.service.d.ts +0 -18
  455. package/upload-collection/upload-collection/upload-collection-data-provider-test.d.ts +0 -36
  456. package/upload-collection/upload-collection/upload-collection.component.d.ts +0 -259
  457. package/upload-collection/upload-collection.module.d.ts +0 -11
package/README.md CHANGED
@@ -81,30 +81,6 @@ For an existing Angular CLI application,
81
81
 
82
82
  To include an individual Angular Fundamental component in your application, you only need to import the relevant module.
83
83
 
84
- For example, to use Switchs, add the following import to your main application module.
85
-
86
- ```typescript
87
- import { PlatformActionBarModule } from '@fundamental-ngx/platform/action-bar';
88
- ```
89
-
90
- Version 0.31.0 brings new way of importing individual modules, which is prefered way.
91
-
92
- ```typescript
93
- import { PlatformActionBarModule } from '@fundamental-ngx/platform/action-bar';
94
- ```
95
-
96
- For models prior to 0.10 use `fundamental-ngx`
97
-
98
- ```typescript
99
- import { PlatformActionBarModule } from 'fundamental-ngx';
100
-
101
- @NgModule({
102
- ...
103
- imports: [PlatformActionBarModule],
104
- })
105
- export class DemoModule { }
106
- ```
107
-
108
84
  1. **Provide the RtlService.**
109
85
  In your main application module, add `RtlService` to the list of providers. This service is needed to ensure proper right-to-left functionality for
110
86
  users with their browser set to an RTL language.
@@ -114,10 +90,6 @@ For an existing Angular CLI application,
114
90
 
115
91
  1. **Add the component to your HTML.**
116
92
 
117
- ```html
118
- <fdp-action-bar title="Fundamental Ngx Platform Action Bar"></fdp-action-bar>
119
- ```
120
-
121
93
  ## <a name="5"></a>5. Known Issues
122
94
 
123
95
  Please see [Issues](https://github.com/SAP/fundamental-ngx/issues).
@@ -3,7 +3,6 @@ import { combineLatest } from 'rxjs';
3
3
  import { FdDate } from '@fundamental-ngx/core/datetime';
4
4
  import { DialogRef } from '@fundamental-ngx/core/dialog';
5
5
  import { CdkScrollable } from '@angular/cdk/overlay';
6
- import { NgFor, NgIf, NgSwitch, NgSwitchCase } from '@angular/common';
7
6
  import { FormsModule } from '@angular/forms';
8
7
  import { TemplateDirective } from '@fundamental-ngx/cdk/utils';
9
8
  import { ButtonBarComponent } from '@fundamental-ngx/core/bar';
@@ -271,10 +270,10 @@ export class ApprovalFlowAddNodeComponent {
271
270
  this._filteredTeamMembers = [...users];
272
271
  this._cdr.detectChanges();
273
272
  }
274
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
275
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.7", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { 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: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
273
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ApprovalFlowAddNodeComponent, deps: [{ token: i1.DialogRef }, { token: i2.ApprovalFlowAddNodeViewService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
274
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.4", type: ApprovalFlowAddNodeComponent, isStandalone: true, selector: "fdp-approval-flow-add-node", host: { classAttribute: "fdp-approval-flow-dialog fdp-approval-flow-add-node" }, ngImport: i0, template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n @if (!_selectMode && !_data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n }\n @if (!_selectMode && _data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n }\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n }\n @if (viewService.isTeamMembersMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n }\n @if (viewService.isUserDetailsMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n }\n </p>\n @if (_selectMode && !_userToShowDetails) {\n <fdp-search-field\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n }\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n @if (!_selectMode) {\n @if (_data.showNodeTypeSelect) {\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_nodeType\">\n @for (option of _nodeTypesArray; track option) {\n @switch (option) {\n @case (_nodeTypes.SERIAL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n }\n @case (_nodeTypes.PARALLEL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n }\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_approverType\">\n @for (option of _approverTypesArray; track option) {\n @switch (option) {\n @case (_approverTypes.SINGLE_USER) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.ANYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.EVERYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n @if (_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n }\n @if (!_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n }\n </div>\n @if (_nodeType === _nodeTypes.PARALLEL) {\n <div fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n }\n @if (_checkDueDate) {\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n }\n }\n @if (_selectMode) {\n @if (viewService.isSelectTeamMode) {\n @if (!_data.teamDataSource.isDataLoading) {\n <fdp-approval-flow-team-list\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\n <fdp-approval-flow-user-list\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\n <fdp-approval-flow-user-details\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n }\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (!_selectMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n }\n @if (_selectMode) {\n @if (viewService.isSelectUserMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isSelectTeamMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isTeamMembersMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isUserDetailsMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n }\n }\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"], dependencies: [{ kind: "component", type: DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { 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: "component", type: DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "directive", type: TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: SearchFieldComponent, selector: "fdp-search-field", inputs: ["categoryMode", "appearance", "placeholder", "mobile", "mobileConfig", "disableRefresh", "disableSearch", "suggestions", "dataSource", "inputText", "categories", "currentCategory", "categoryLabel", "hideCategoryLabel", "isLoading", "ariaLabel", "ariaLabelledby", "forceSearchButton", "disableSuggestionsFoundAnnouncer"], outputs: ["inputChange", "searchSubmit", "cancelSearch", "isOpenChange"] }, { kind: "component", type: DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: FormItemComponent, selector: "[fd-form-item]", inputs: ["isInline", "horizontal"] }, { kind: "component", type: FormLabelComponent, selector: "[fd-form-label]", inputs: ["required", "colon", "alignLabelEnd", "inlineHelpContent", "inlineHelpGlyph", "inlineHelpTriggers", "inlineHelpBodyPlacement", "inlineHelpPlacement", "inlineHelpLabel", "id"] }, { kind: "component", type: SelectComponent, selector: "fd-select", inputs: ["extendedBodyTemplate", "scrollStrategy", "controlId", "state", "mobile", "stateMessage", "disabled", "required", "readonly", "placeholder", "value", "maxHeight", "glyph", "closeOnOutsideClick", "fillControlMode", "controlTemplate", "appendTo", "unselectMissingOption", "typeaheadDebounceInterval", "ariaLabelledBy", "ariaLabel", "mobileConfig", "inline", "selectControlClass", "selectDropdownButtonClass", "advancedStateMessage", "tabOutStrategy", "compareWith"], outputs: ["isOpenChange", "valueChange"] }, { kind: "component", type: OptionComponent, selector: "[fd-option], fd-option", inputs: ["id", "value", "disabled"], outputs: ["selectionChange"] }, { kind: "component", type: MultiInputComponent, selector: "fd-multi-input", inputs: ["placeholder", "disabled", "required", "compactCollapse", "maxHeight", "glyph", "dropdownValues", "openDropdownOnAddOnClicked", "searchTerm", "inputId", "highlight", "selected", "class", "filterFn", "valueFn", "displayFn", "newTokenParseFn", "optionItemIdentifier", "newTokenValidateFn", "ariaLabel", "ariaLabelledBy", "fillControlMode", "state", "buttonFocusable", "allowNewTokens", "mobile", "showAllButton", "bodyMaxWidth", "mobileConfig", "includes", "itemTemplate", "title", "byline", "autoComplete", "open", "displayAddonButton", "tokenHiddenId"], outputs: ["searchTermChange", "selectedChange", "openChange", "addOnButtonClicked", "allItemsSelectedChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: CheckboxComponent, selector: "fd-checkbox", inputs: ["wrapLabel", "valignLabel", "ariaLabel", "value", "ariaLabelledBy", "ariaDescribedBy", "title", "inputId", "state", "name", "label", "disabled", "tristate", "tristateSelectable", "labelClass", "required", "displayOnly", "values", "standalone"], outputs: ["focusChange"] }, { kind: "component", type: DatePickerComponent, selector: "fd-date-picker", inputs: ["type", "placeholder", "inputId", "required", "message", "messageTriggers", "selectedDate", "selectedRangeDate", "startingDayOfWeek", "rangeHoverEffect", "useValidation", "allowNull", "activeView", "placement", "appendTo", "disabled", "closeOnDateChoose", "showTodayButton", "todayButtonLabel", "previousButtonDisableFunction", "nextButtonDisableFunction", "state", "buttonFocusable", "specialDaysRules", "yearGrid", "aggregatedYearGrid", "markWeekends", "showWeekNumbers", "isOpen", "inline", "ariaLabelledBy", "processInputOnBlur", "preventScrollOnFocus", "mobile", "mobileConfig", "mobileLandscape", "mobilePortrait", "disableFunction", "disableRangeStartFunction", "disableRangeEndFunction"], outputs: ["isOpenChange", "selectedDateChange", "selectedRangeDateChange", "activeViewChange"] }, { kind: "component", type: ApprovalFlowTeamListComponent, selector: "fdp-approval-flow-team-list", inputs: ["teams", "isRtl", "selectedTeamId"], outputs: ["onTeamClick", "onTeamRadioClick"] }, { kind: "component", type: ApprovalFlowUserListComponent, selector: "fdp-approval-flow-user-list", inputs: ["users", "selectedUsers", "isSelectable"], outputs: ["onUserClick", "onSelectionChange"] }, { kind: "component", type: ApprovalFlowUserDetailsComponent, selector: "fdp-approval-flow-user-details", inputs: ["user", "details", "detailsTemplate"] }, { kind: "component", type: DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: BusyIndicatorComponent, selector: "fd-busy-indicator", inputs: ["loading", "size", "block", "ariaLabel", "title", "label", "ariaLive"] }, { kind: "pipe", type: FdTranslatePipe, name: "fdTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
276
275
  }
277
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
276
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.4", ngImport: i0, type: ApprovalFlowAddNodeComponent, decorators: [{
278
277
  type: Component,
279
278
  args: [{ selector: 'fdp-approval-flow-add-node', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
280
279
  class: 'fdp-approval-flow-dialog fdp-approval-flow-add-node'
@@ -283,7 +282,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
283
282
  ContentDensityDirective,
284
283
  DialogHeaderComponent,
285
284
  TemplateDirective,
286
- NgIf,
287
285
  IconComponent,
288
286
  SearchFieldComponent,
289
287
  CdkScrollable,
@@ -292,9 +290,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
292
290
  FormItemComponent,
293
291
  FormLabelComponent,
294
292
  SelectComponent,
295
- NgFor,
296
- NgSwitch,
297
- NgSwitchCase,
298
293
  OptionComponent,
299
294
  MultiInputComponent,
300
295
  FormsModule,
@@ -307,6 +302,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.7", ngImpor
307
302
  ButtonBarComponent,
308
303
  BusyIndicatorComponent,
309
304
  FdTranslatePipe
310
- ], template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n <ng-container *ngIf=\"!_selectMode && !_data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"!_selectMode && _data.isEdit\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isSelectTeamMode\">\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n </ng-container>\n </p>\n\n <fdp-search-field\n *ngIf=\"_selectMode && !_userToShowDetails\"\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n </ng-template>\n </fd-dialog-header>\n\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n <ng-container *ngIf=\"!_selectMode\">\n <div fd-form-item *ngIf=\"_data.showNodeTypeSelect\">\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_nodeType\">\n <ng-container *ngFor=\"let option of _nodeTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_nodeTypes.SERIAL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_nodeTypes.PARALLEL\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n\n <fd-select [(value)]=\"_approverType\">\n <ng-container *ngFor=\"let option of _approverTypesArray\">\n <ng-container [ngSwitch]=\"option\">\n <li fd-option *ngSwitchCase=\"_approverTypes.SINGLE_USER\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.ANYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n\n <li fd-option *ngSwitchCase=\"_approverTypes.EVERYONE\" [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n </ng-container>\n </ng-container>\n </fd-select>\n </div>\n\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n\n <fd-multi-input\n *ngIf=\"_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n\n <fd-multi-input\n *ngIf=\"!_isSingleUserMode\"\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n </div>\n\n <div *ngIf=\"_nodeType === _nodeTypes.PARALLEL\" fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n\n <div *ngIf=\"_checkDueDate\" fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fdp-approval-flow-team-list\n *ngIf=\"!_data.teamDataSource.isDataLoading; else loadingTpl\"\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectUserMode || viewService.isTeamMembersMode\">\n <fdp-approval-flow-user-list\n *ngIf=\"viewService.isSelectUserMode || !_data.userDataSource.isDataLoading; else loadingTpl\"\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n </ng-container>\n\n <fdp-approval-flow-user-details\n *ngIf=\"viewService.isUserDetailsMode && _userToShowDetails\"\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n </ng-container>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-container *ngIf=\"!_selectMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"_selectMode\">\n <ng-container *ngIf=\"viewService.isSelectUserMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isSelectTeamMode\">\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isTeamMembersMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n </ng-container>\n\n <ng-container *ngIf=\"viewService.isUserDetailsMode\">\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n </ng-container>\n </ng-container>\n </fd-dialog-footer>\n</fd-dialog>\n\n<ng-template #loadingTpl>\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n</ng-template>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"] }]
311
- }], ctorParameters: function () { return [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }]; } });
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQVksaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVB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aUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsNkJBQTZCO3dCQUM3Qiw2QkFBNkI7d0JBQzdCLGdDQUFnQzt3QkFDaEMscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsZUFBZTtxQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uLCBjb21iaW5lTGF0ZXN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEZkRGF0ZSB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kYXRldGltZSc7XG5pbXBvcnQgeyBEaWFsb2dSZWYgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcblxuaW1wb3J0IHsgQ2RrU2Nyb2xsYWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE5nRm9yLCBOZ0lmLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBOZ1N3aXRjaCxcbiAgICAgICAgTmdTd2l0Y2hDYXNlLFxuICAgICAgICBPcHRpb25Db21wb25lbnQsXG4gICAgICAgIE11bHRpSW5wdXRDb21wb25lbnQsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgRGF0ZVBpY2tlckNvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VGVhbUxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJMaXN0Q29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCxcbiAgICAgICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgICAgICBCdXR0b25CYXJDb21wb25lbnQsXG4gICAgICAgIEJ1c3lJbmRpY2F0b3JDb21wb25lbnQsXG4gICAgICAgIEZkVHJhbnNsYXRlUGlwZVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwcm92YWxGbG93QWRkTm9kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZSA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUy5TRVJJQUw7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXMgPSBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9ub2RlVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGUgPSBBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTLlNJTkdMRV9VU0VSO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYXBwcm92ZXJUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVM7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzQXJyYXkgPSBPYmplY3Qua2V5cyhBUFBST1ZBTF9GTE9XX0FQUFJPVkVSX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2R1ZURhdGUgPSBGZERhdGUuZ2V0Tm93KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RNb2RlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF90ZWFtczogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkQXBwcm92ZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtOiBOdWxsYWJsZTxBcHByb3ZhbFRlYW0+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRUZWFtQXJyYXk6IEFwcHJvdmFsVGVhbVtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZmlsdGVyZWRUZWFtTWVtYmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3VzZXJUb1Nob3dEZXRhaWxzPzogQXBwcm92YWxVc2VyO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHNEYXRhJD86IE9ic2VydmFibGU8YW55PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NoZWNrRHVlRGF0ZSA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZGlzcGxheVVzZXJGbiA9IGRpc3BsYXlVc2VyRm47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VGVhbUZuID0gZGlzcGxheVRlYW1GbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RyYWNrQnlGbiA9IHRyYWNrQnlGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FkZFRvTmV4dFNlcmlhbCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF92aWV3Q2hhbmdlU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2RhdGFTb3VyY2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IERpYWxvZ1JlZjxBZGROb2RlRGlhbG9nUmVmRGF0YT4sXG4gICAgICAgIHB1YmxpYyB2aWV3U2VydmljZTogQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7fVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBnZXQgX2RhdGEoKTogQWRkTm9kZURpYWxvZ1JlZkRhdGEge1xuICAgICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWYuZGF0YTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNTaW5nbGVVc2VyTW9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gdGhpcy5fYXBwcm92ZXJUeXBlcy5TSU5HTEVfVVNFUjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVycyA9IHRoaXMuX2lzU2luZ2xlVXNlck1vZGUgPyB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA6IHRoaXMuX3NlbGVjdGVkVGVhbUFycmF5O1xuXG4gICAgICAgIHJldHVybiAhYXBwcm92ZXJzLmxlbmd0aCB8fCAodGhpcy5fY2hlY2tEdWVEYXRlICYmICF0aGlzLl9kdWVEYXRlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfaGVhZGVyQXJyb3dHbHlwaCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ25hdmlnYXRpb24tJyArICh0aGlzLl9kYXRhLnJ0bCA/ICdyaWdodCcgOiAnbGVmdCcpICsgJy1hcnJvdyc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gdHJpZ2dlcmluZyBpbml0aWFsIGxvYWRpbmcgb2YgZGF0YSBpbiBkYXRhIHNvdXJjZXMuXG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UubWF0Y2goKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICBjb25zdCB0ZWFtcyQgPSB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm9wZW4oKTtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICB0aGlzLl9kYXRhU291cmNlU3ViID0gY29tYmluZUxhdGVzdChbdGVhbXMkLCBhcHByb3ZlcnMkXSkuc3Vic2NyaWJlKChbdGVhbXMsIGFwcHJvdmVyc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RlYW1zID0gdGVhbXM7XG5cbiAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVycyA9IGFwcHJvdmVycztcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGEuaXNFZGl0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tEdWVEYXRlID0gISF0aGlzLl9kYXRhLmNoZWNrRHVlRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgdGhpcy5fZGF0YS5ub2RlPy5kdWVEYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2R1ZURhdGUgPSBGZERhdGUuZ2V0RmREYXRlQnlEYXRlKG5ldyBEYXRlKHRoaXMuX2RhdGEubm9kZS5kdWVEYXRlKSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBbLi4uKHRoaXMuX2RhdGEubm9kZT8uYXBwcm92ZXJzID8/IFtdKV07XG5cbiAgICAgICAgICAgICAgICBjb25zdCB0ZWFtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCAmJlxuICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZWFtcy5maW5kKCh0KSA9PiB0LmlkID09PSB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKTtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNlbGVjdFRlYW0odGVhbSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGVhbTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGVhbV07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FwcHJvdmVyVHlwZSA9IHRoaXMuX2RhdGEubm9kZT8uaXNFdmVyeW9uZUFwcHJvdmFsTmVlZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuX2FwcHJvdmVyVHlwZXMuRVZFUllPTkVcbiAgICAgICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYXBwcm92ZXJUeXBlcy5BTllPTkU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fdmlld0NoYW5nZVN1YiA9IHRoaXMudmlld1NlcnZpY2Uub25WaWV3Q2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9vblNlYXJjaFN0cmluZ0NoYW5nZSgnJyk7XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzd2l0Y2ggKHRoaXMuX2RhdGEubm9kZVRhcmdldCkge1xuICAgICAgICAgICAgY2FzZSAnZW1wdHknOlxuICAgICAgICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5TRVJJQUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwYXJhbGxlbCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fbm9kZVR5cGUgPSB0aGlzLl9ub2RlVHlwZXMuUEFSQUxMRUw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5jbG9zZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZ29Ub1NlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcodGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IFZJRVdfTU9ERVMuU0VMRUNUX1VTRVIgOiBWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0U2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLmlzRWRpdCAmJiAhdGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZhbFRlYW1JZCkge1xuICAgICAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3NlbGVjdE1vZGUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFZpZXcoKTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZEFwcHJvdmVycyhhcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgIHRoaXMuX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnM7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzLnNvbWUoXG4gICAgICAgICAgICAodSkgPT4gdS50ZWFtSWQgIT09IHRoaXMuX2RhdGEubm9kZSEuYXBwcm92ZXJzWzBdLnRlYW1JZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID8gJycgOiB0aGlzLl9zZWxlY3RlZEFwcHJvdmVyc1swXT8uZGVzY3JpcHRpb247XG5cbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZDtcbiAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQ7XG5cbiAgICAgICAgdGhpcy5fZXhpdFNlbGVjdE1vZGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRTZWxlY3RlZFRlYW0odGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9jb25maXJtU2VsZWN0ZWRUZWFtKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMudmlld1NlcnZpY2UudGVhbSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbSA9IHRoaXMudmlld1NlcnZpY2UudGVhbTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXkgPSBbdGhpcy52aWV3U2VydmljZS50ZWFtXTtcblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUudmFyaW91c1RlYW1zID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92YWxUZWFtSWQgPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0uaWQ7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZGVzY3JpcHRpb24gPSB0aGlzLnZpZXdTZXJ2aWNlLnRlYW0ubmFtZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWQgPSB0aGlzLl9hcHByb3ZlclR5cGUgPT09IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuRVZFUllPTkU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlZVVzZXJEZXRhaWxzKHVzZXI6IEFwcHJvdmFsVXNlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVVNFUl9ERVRBSUxTKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVzZXI7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmRhdGFQcm92aWRlci5nZXRPbmUobmV3IE1hcChbWydpZCcsIHVzZXIuaWRdXSkpO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFVzZXJEZXRhaWxzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLnZpZXdTZXJ2aWNlLnRlYW0gPyBWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTIDogVklFV19NT0RFUy5TRUxFQ1RfVVNFUik7XG5cbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHMgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSQgPSB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF92aWV3VGVhbU1lbWJlcnModGVhbTogQXBwcm92YWxUZWFtKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlZJRVdfVEVBTV9NRU1CRVJTKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gdGVhbS5tZW1iZXJzO1xuXG4gICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyk7IC8vIGFwcGx5aW5nIGxvY2FsIGZpbHRlcmluZ1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRUZWFtTWVtYmVyc01vZGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5TRUxFQ1RfVEVBTSk7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2UucmVzZXRUZWFtKCk7XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycyA9IFtdO1xuXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc3VibWl0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmICF0aGlzLl9pc1NpbmdsZVVzZXJNb2RlICYmIHRoaXMuX3NlbGVjdGVkVGVhbSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmVycyA9IFsuLi50aGlzLl9zZWxlY3RlZFRlYW0ubWVtYmVyc107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fZGF0YS5ub2RlICYmIHRoaXMuX2NoZWNrRHVlRGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUgPSB0aGlzLl9kdWVEYXRlLnRvRGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgICAgICAgbm9kZTogdGhpcy5fZGF0YS5ub2RlLFxuICAgICAgICAgICAgbm9kZVR5cGU6IHRoaXMuX25vZGVUeXBlLFxuICAgICAgICAgICAgdG9OZXh0U2VyaWFsOiB0aGlzLl9hZGRUb05leHRTZXJpYWxcbiAgICAgICAgfSBhcyBBZGROb2RlRGlhbG9nRm9ybURhdGEpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX29uU2VhcmNoU3RyaW5nQ2hhbmdlKHNlYXJjaFN0cmluZyA9ICcnKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBNYXAoW1sncXVlcnknLCBzZWFyY2hTdHJpbmddXSk7XG5cbiAgICAgICAgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaChwYXJhbXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModGhpcy5fc2VsZWN0ZWRUZWFtTWVtYmVycy5maWx0ZXIoKHVzZXIpID0+IGZpbHRlckJ5TmFtZSh1c2VyLCBzZWFyY2hTdHJpbmcpKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZXRGaWx0ZXJlZFRlYW1NZW1iZXJzKHVzZXJzOiBBcHByb3ZhbFVzZXJbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9maWx0ZXJlZFRlYW1NZW1iZXJzID0gWy4uLnVzZXJzXTtcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG59XG4iLCI8ZmQtZGlhbG9nIGZkQ29tcGFjdD5cbiAgICA8ZmQtZGlhbG9nLWhlYWRlciBbY2xhc3Muc2hvdy1zZWFyY2hdPVwiX3NlbGVjdE1vZGUgJiYgIV91c2VyVG9TaG93RGV0YWlsc1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgZmRrVGVtcGxhdGU9XCJoZWFkZXJcIj5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGUgJiYgIV9kYXRhLmlzRWRpdFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVycycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFfc2VsZWN0TW9kZSAmJiBfZGF0YS5pc0VkaXRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJFZGl0QXBwcm92ZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8IHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJBZGRBcHByb3ZlclRlYW0nIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgdmlld1NlcnZpY2UudGVhbT8ubmFtZSA/PyAnJyB9fSAoe3sgdmlld1NlcnZpY2UudGVhbT8ubWVtYmVycz8ubGVuZ3RoID8/IDAgfX0pXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIl9oZWFkZXJBcnJvd0dseXBoXCIgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyRGV0YWlsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICAgIDxmZHAtc2VhcmNoLWZpZWxkXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWFyY2hQbGFjZWhvbGRlcicgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW3N1Z2dlc3Rpb25zXT1cIltdXCJcbiAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCRldmVudC50ZXh0KVwiXG4gICAgICAgICAgICA+PC9mZHAtc2VhcmNoLWZpZWxkPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZmQtZGlhbG9nLWhlYWRlcj5cblxuICAgIDxmZC1kaWFsb2ctYm9keSBbY2xhc3MuZmQtZGlhbG9nX19ib2R5LS1hdXRvLWhlaWdodF09XCJ2aWV3U2VydmljZS5pc1VzZXJEZXRhaWxzTW9kZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIV9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbSAqbmdJZj1cIl9kYXRhLnNob3dOb2RlVHlwZVNlbGVjdFwiPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX25vZGVUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBfbm9kZVR5cGVzQXJyYXlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9ub2RlVHlwZXMuU0VSSUFMXCIgW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ05vZGVUeXBlU2VyaWFsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gKm5nU3dpdGNoQ2FzZT1cIl9ub2RlVHlwZXMuUEFSQUxMRUxcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZkLWZvcm0tbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX2FwcHJvdmVyVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgX2FwcHJvdmVyVHlwZXNBcnJheVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiAqbmdTd2l0Y2hDYXNlPVwiX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVJcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVXNlcicgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5BTllPTkVcIiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVGVhbUFueW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uICpuZ1N3aXRjaENhc2U9XCJfYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVwiIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGVUZWFtRXZlcnlvbmUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nVXNlck9yVGVhbScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8ZmQtbXVsdGktaW5wdXRcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJfaXNTaW5nbGVVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZEFwcHJvdmVyc1wiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVVzZXJGblwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIl9zZXRTZWxlY3RlZEFwcHJvdmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cblxuICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFfaXNTaW5nbGVVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93QWxsQnV0dG9uXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZFRlYW1BcnJheVwiXG4gICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkVGVhbUFycmF5XCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc3BsYXlGbl09XCJfZGlzcGxheVRlYW1GblwiXG4gICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1tdWx0aS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiX25vZGVUeXBlID09PSBfbm9kZVR5cGVzLlBBUkFMTEVMXCIgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxmZC1jaGVja2JveCBbKG5nTW9kZWwpXT1cIl9hZGRUb05leHRTZXJpYWxcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBZGRUb05leHQnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJfY2hlY2tEdWVEYXRlXCIgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nRHVlRGF0ZScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG5cbiAgICAgICAgICAgICAgICA8ZmQtZGF0ZS1waWNrZXIgdHlwZT1cInNpbmdsZVwiIFtzdGF0ZV09XCIhdGhpcy5fZHVlRGF0ZSA/ICdlcnJvcicgOiBudWxsXCIgWyhuZ01vZGVsKV09XCJfZHVlRGF0ZVwiPlxuICAgICAgICAgICAgICAgIDwvZmQtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIl9zZWxlY3RNb2RlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhX2RhdGEudGVhbURhdGFTb3VyY2UuaXNEYXRhTG9hZGluZzsgZWxzZSBsb2FkaW5nVHBsXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUnRsXT1cIl9kYXRhLnJ0bFwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZWFtc109XCJfdGVhbXNcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRUZWFtSWRdPVwiX3NlbGVjdGVkVGVhbT8uaWRcIlxuICAgICAgICAgICAgICAgICAgICAob25UZWFtQ2xpY2spPVwiX3ZpZXdUZWFtTWVtYmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uVGVhbVJhZGlvQ2xpY2spPVwiX3NldFNlbGVjdGVkVGVhbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy10ZWFtLWxpc3Q+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgfHwgdmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1saXN0XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZSB8fCAhX2RhdGEudXNlckRhdGFTb3VyY2UuaXNEYXRhTG9hZGluZzsgZWxzZSBsb2FkaW5nVHBsXCJcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJzXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUgPyBfYXBwcm92ZXJzIDogX2ZpbHRlcmVkVGVhbU1lbWJlcnNcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTZWxlY3RhYmxlXT1cInZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRVc2Vyc109XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAob25Vc2VyQ2xpY2spPVwiX3NlZVVzZXJEZXRhaWxzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiX3NlbGVjdGVkQXBwcm92ZXJzID0gJGV2ZW50XCJcbiAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3Q+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgPGZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlsc1xuICAgICAgICAgICAgICAgICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUgJiYgX3VzZXJUb1Nob3dEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICBbdXNlcl09XCJfdXNlclRvU2hvd0RldGFpbHNcIlxuICAgICAgICAgICAgICAgIFtkZXRhaWxzVGVtcGxhdGVdPVwiX2RhdGEudXNlckRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2RldGFpbHNdPVwiX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSRcIlxuICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuXG4gICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQWRkQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJfaXNNYWluU3VibWl0QnV0dG9uRGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJfc3VibWl0KClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiXG4gICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiX3NlbGVjdE1vZGVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlXCI+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZVNlbGVjdEFwcHJvdmVyQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIV9zZWxlY3RlZEFwcHJvdmVycy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2NvbmZpcm1TZWxlY3RlZEFwcHJvdmVycygpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuXG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRUZWFtKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVDYW5jZWxBcHByb3ZlclNlbGVjdGlvbkFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0U2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZVwiPlxuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZka0luaXRpYWxGb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFwcHJvdmVyT3JUZWFtRGV0YWlsc0Nsb3NlQWN0aW9uQnRuTGFiZWwnIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGVcIj5cbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ1RwbD5cbiAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG48L25nLXRlbXBsYXRlPlxuIl19
305
+ ], template: "<fd-dialog fdCompact>\n <fd-dialog-header [class.show-search]=\"_selectMode && !_userToShowDetails\">\n <ng-template fdkTemplate=\"header\">\n <p>\n @if (!_selectMode && !_data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApprovers' | fdTranslate }}\n }\n @if (!_selectMode && _data.isEdit) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderEditApprover' | fdTranslate }}\n }\n @if (viewService.isSelectUserMode || viewService.isSelectTeamMode) {\n {{ 'platformApprovalFlow.addNodeDialogHeaderAddApproverTeam' | fdTranslate }}\n }\n @if (viewService.isTeamMembersMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitTeamMembersMode()\"></fd-icon>\n {{ viewService.team?.name ?? '' }} ({{ viewService.team?.members?.length ?? 0 }})\n }\n @if (viewService.isUserDetailsMode) {\n <fd-icon [glyph]=\"_headerArrowGlyph\" (click)=\"_exitUserDetailsMode()\"></fd-icon>\n {{ 'platformApprovalFlow.addNodeDialogHeaderDetail' | fdTranslate }}\n }\n </p>\n @if (_selectMode && !_userToShowDetails) {\n <fdp-search-field\n [placeholder]=\"'platformApprovalFlow.addNodeSearchPlaceholder' | fdTranslate\"\n [suggestions]=\"[]\"\n (inputChange)=\"_onSearchStringChange($event.text)\"\n ></fdp-search-field>\n }\n </ng-template>\n </fd-dialog-header>\n <fd-dialog-body [class.fd-dialog__body--auto-height]=\"viewService.isUserDetailsMode\">\n @if (!_selectMode) {\n @if (_data.showNodeTypeSelect) {\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogNodeType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_nodeType\">\n @for (option of _nodeTypesArray; track option) {\n @switch (option) {\n @case (_nodeTypes.SERIAL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeSerial' | fdTranslate }}\n </li>\n }\n @case (_nodeTypes.PARALLEL) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogNodeTypeParallel' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n }\n <div fd-form-item>\n <label fd-form-label>\n {{ 'platformApprovalFlow.addNodeDialogApproverType' | fdTranslate }}\n </label>\n <fd-select [(value)]=\"_approverType\">\n @for (option of _approverTypesArray; track option) {\n @switch (option) {\n @case (_approverTypes.SINGLE_USER) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeUser' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.ANYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamAnyone' | fdTranslate }}\n </li>\n }\n @case (_approverTypes.EVERYONE) {\n <li fd-option [value]=\"option\">\n {{ 'platformApprovalFlow.addNodeDialogApproverTypeTeamEveryone' | fdTranslate }}\n </li>\n }\n }\n }\n </fd-select>\n </div>\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogUserOrTeam' | fdTranslate }}</label>\n @if (_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedApprovers\"\n [(ngModel)]=\"_selectedApprovers\"\n [displayFn]=\"_displayUserFn\"\n (openChange)=\"_goToSelectMode()\"\n (selectedChange)=\"_setSelectedApprovers($event)\"\n ></fd-multi-input>\n }\n @if (!_isSingleUserMode) {\n <fd-multi-input\n [showAllButton]=\"false\"\n [dropdownValues]=\"_selectedTeamArray\"\n [(ngModel)]=\"_selectedTeamArray\"\n [displayFn]=\"_displayTeamFn\"\n (openChange)=\"_goToSelectMode()\"\n ></fd-multi-input>\n }\n </div>\n @if (_nodeType === _nodeTypes.PARALLEL) {\n <div fd-form-item>\n <fd-checkbox [(ngModel)]=\"_addToNextSerial\">\n {{ 'platformApprovalFlow.addNodeDialogAddToNext' | fdTranslate }}\n </fd-checkbox>\n </div>\n }\n @if (_checkDueDate) {\n <div fd-form-item>\n <label fd-form-label>{{ 'platformApprovalFlow.addNodeDialogDueDate' | fdTranslate }}</label>\n <fd-date-picker type=\"single\" [state]=\"!this._dueDate ? 'error' : null\" [(ngModel)]=\"_dueDate\">\n </fd-date-picker>\n </div>\n }\n }\n @if (_selectMode) {\n @if (viewService.isSelectTeamMode) {\n @if (!_data.teamDataSource.isDataLoading) {\n <fdp-approval-flow-team-list\n [isRtl]=\"_data.rtl\"\n [teams]=\"_teams\"\n [selectedTeamId]=\"_selectedTeam?.id\"\n (onTeamClick)=\"_viewTeamMembers($event)\"\n (onTeamRadioClick)=\"_setSelectedTeam($event)\"\n ></fdp-approval-flow-team-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isSelectUserMode || viewService.isTeamMembersMode) {\n @if (viewService.isSelectUserMode || !_data.userDataSource.isDataLoading) {\n <fdp-approval-flow-user-list\n [users]=\"viewService.isSelectUserMode ? _approvers : _filteredTeamMembers\"\n [isSelectable]=\"viewService.isSelectUserMode\"\n [selectedUsers]=\"_selectedApprovers\"\n (onUserClick)=\"_seeUserDetails($event)\"\n (onSelectionChange)=\"_selectedApprovers = $event\"\n ></fdp-approval-flow-user-list>\n } @else {\n <fd-busy-indicator [loading]=\"true\" [block]=\"true\"> </fd-busy-indicator>\n }\n }\n @if (viewService.isUserDetailsMode && _userToShowDetails) {\n <fdp-approval-flow-user-details\n [user]=\"_userToShowDetails\"\n [detailsTemplate]=\"_data.userDetailsTemplate\"\n [details]=\"_userToShowDetailsData$\"\n ></fdp-approval-flow-user-details>\n }\n }\n </fd-dialog-body>\n <fd-dialog-footer>\n @if (!_selectMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeAddActionBtnLabel' | fdTranslate\"\n [disabled]=\"_isMainSubmitButtonDisabled\"\n (click)=\"_submit()\"\n >\n </fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelActionBtnLabel' | fdTranslate\"\n (click)=\"dialogRef.close()\"\n ></fd-button-bar>\n }\n @if (_selectMode) {\n @if (viewService.isSelectUserMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedApprovers.length\"\n (click)=\"_confirmSelectedApprovers()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isSelectTeamMode) {\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'platformApprovalFlow.addNodeSelectApproverActionBtnLabel' | fdTranslate\"\n [disabled]=\"!_selectedTeam && !viewService.team\"\n (click)=\"_confirmSelectedTeam()\"\n ></fd-button-bar>\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeCancelApproverSelectionActionBtnLabel' | fdTranslate\"\n (click)=\"_exitSelectMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isTeamMembersMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitTeamMembersMode()\"\n ></fd-button-bar>\n }\n @if (viewService.isUserDetailsMode) {\n <fd-button-bar\n fdkInitialFocus\n fdType=\"transparent\"\n [label]=\"'platformApprovalFlow.addNodeApproverOrTeamDetailsCloseActionBtnLabel' | fdTranslate\"\n (click)=\"_exitUserDetailsMode()\"\n ></fd-button-bar>\n }\n }\n </fd-dialog-footer>\n</fd-dialog>\n", styles: [".fdp-approval-flow-dialog a{color:#0a6ed1;color:var(--sapLinkColor, #0a6ed1)}.fdp-approval-flow-dialog .fd-list--byline .fd-list__byline-left{width:100%}.fdp-approval-flow-dialog fd-popover{width:100%}.fdp-approval-flow-dialog fd-dialog fd-dialog-header{margin-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header .fd-bar--header{flex-direction:column;padding-bottom:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p{font-size:1rem;margin:.65rem 0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header p fd-icon{font-size:.875rem;color:#0854a0;color:var(--sapButton_IconColor, #0854a0);position:relative;cursor:pointer;margin-right:.75rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search{margin-bottom:0}.fdp-approval-flow-dialog fd-dialog fd-dialog-header.show-search .fd-bar--header{min-height:2.5rem;height:auto}.fdp-approval-flow-dialog fd-dialog fd-avatar{margin-right:.652rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body{padding:1rem}.fdp-approval-flow-dialog fd-dialog fd-dialog-body fdp-list{display:block;margin-left:-1rem;margin-right:-1rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item .fd-checkbox__label{position:relative;left:.3125rem}.fdp-approval-flow-dialog fd-dialog fdp-standard-list-item fd-avatar{margin-left:.1875rem}.fdp-approval-flow-dialog .fd-form-item{margin-bottom:1rem}[dir=rtl] .fdp-approval-flow-dialog fd-dialog-header p fd-icon,.fdp-approval-flow-dialog[dir=rtl] fd-dialog-header p fd-icon{margin-right:0;margin-left:.75rem}[dir=rtl] .fdp-approval-flow-dialog fd-avatar,.fdp-approval-flow-dialog[dir=rtl] fd-avatar{margin-right:0;margin-left:.652rem}[dir=rtl] .fdp-approval-flow-dialog fdp-standard-list-item .fd-checkbox__label,.fdp-approval-flow-dialog[dir=rtl] fdp-standard-list-item .fd-checkbox__label{left:auto;right:.3125rem}\n", ".fdp-approval-flow-add-node .fd-dialog__body{width:20rem;height:27rem}.fdp-approval-flow-add-node .fd-dialog__body--auto-height{height:auto}\n"] }]
306
+ }], ctorParameters: () => [{ type: i1.DialogRef }, { type: i2.ApprovalFlowAddNodeViewService }, { type: i0.ChangeDetectorRef }] });
307
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL3NyYy9saWIvYXBwcm92YWwtZmxvdy9hcHByb3ZhbC1mbG93LWFkZC1ub2RlL2FwcHJvdmFsLWZsb3ctYWRkLW5vZGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9zcmMvbGliL2FwcHJvdmFsLWZsb3cvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS9hcHByb3ZhbC1mbG93LWFkZC1ub2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFJVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUE0QixhQUFhLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBWSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxD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ZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBGZERhdGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGF0ZXRpbWUnO1xuaW1wb3J0IHsgRGlhbG9nUmVmIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RpYWxvZyc7XG5cbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jZGsvdXRpbHMnO1xuaW1wb3J0IHsgQnV0dG9uQmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2Jhcic7XG5pbXBvcnQgeyBCdXN5SW5kaWNhdG9yQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2J1c3ktaW5kaWNhdG9yJztcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NoZWNrYm94JztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2NvbnRlbnQtZGVuc2l0eSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2RhdGUtcGlja2VyJztcbmltcG9ydCB7XG4gICAgRGlhbG9nQm9keUNvbXBvbmVudCxcbiAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgRGlhbG9nRm9vdGVyQ29tcG9uZW50LFxuICAgIERpYWxvZ0hlYWRlckNvbXBvbmVudFxufSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1JdGVtQ29tcG9uZW50LCBGb3JtTGFiZWxDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvZm9ybSc7XG5pbXBvcnQgeyBJY29uQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL2ljb24nO1xuaW1wb3J0IHsgTXVsdGlJbnB1dENvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9tdWx0aS1pbnB1dCc7XG5pbXBvcnQgeyBTY3JvbGxiYXJEaXJlY3RpdmUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUvc2Nyb2xsYmFyJztcbmltcG9ydCB7IE9wdGlvbkNvbXBvbmVudCwgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3NlbGVjdCc7XG5pbXBvcnQgeyBGZFRyYW5zbGF0ZVBpcGUgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU2VhcmNoRmllbGRDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NlYXJjaC1maWVsZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtRGF0YVNvdXJjZSwgQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2UgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L3BsYXRmb3JtL3NoYXJlZCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0L2FwcHJvdmFsLWZsb3ctdGVhbS1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyRGV0YWlsc0NvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzL2FwcHJvdmFsLWZsb3ctdXNlci1kZXRhaWxzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHByb3ZhbEZsb3dVc2VyTGlzdENvbXBvbmVudCB9IGZyb20gJy4uL2FwcHJvdmFsLWZsb3ctdXNlci1saXN0L2FwcHJvdmFsLWZsb3ctdXNlci1saXN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBkaXNwbGF5VGVhbUZuLCBkaXNwbGF5VXNlckZuLCBmaWx0ZXJCeU5hbWUsIHRyYWNrQnlGbiB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IHsgQXBwcm92YWxOb2RlLCBBcHByb3ZhbFRlYW0sIEFwcHJvdmFsVXNlciB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQXBwcm92YWxGbG93QWRkTm9kZVZpZXdTZXJ2aWNlLCBWSUVXX01PREVTIH0gZnJvbSAnLi4vc2VydmljZXMvYXBwcm92YWwtZmxvdy1hZGQtbm9kZS12aWV3LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dSZWZEYXRhIHtcbiAgICBpc0VkaXQ/OiBib29sZWFuO1xuICAgIHNob3dOb2RlVHlwZVNlbGVjdD86IGJvb2xlYW47XG4gICAgbm9kZT86IEFwcHJvdmFsTm9kZTtcbiAgICBub2RlVGFyZ2V0PzogQXBwcm92YWxGbG93Tm9kZVRhcmdldDtcbiAgICB0ZWFtRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VGVhbURhdGFTb3VyY2U8QXBwcm92YWxUZWFtPjtcbiAgICB1c2VyRGF0YVNvdXJjZTogQXBwcm92YWxGbG93VXNlckRhdGFTb3VyY2U8QXBwcm92YWxVc2VyPjtcbiAgICB1c2VyRGV0YWlsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGNoZWNrRHVlRGF0ZT86IGJvb2xlYW47XG4gICAgcnRsOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSB7XG4gICAgbm9kZTogQXBwcm92YWxOb2RlO1xuICAgIG5vZGVUeXBlOiBBUFBST1ZBTF9GTE9XX05PREVfVFlQRVM7XG4gICAgdG9OZXh0U2VyaWFsOiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50ID0gJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlZm9yZS1hbGwnIHwgJ2FmdGVyLWFsbCc7XG5cbmV4cG9ydCB0eXBlIEFwcHJvdmFsRmxvd05vZGVUYXJnZXQgPSBBcHByb3ZhbEZsb3dOZXdOb2RlUGxhY2VtZW50IHwgJ2VtcHR5JyB8ICdwYXJhbGxlbCc7XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUyB7XG4gICAgU0VSSUFMID0gJ1NFUklBTCcsXG4gICAgUEFSQUxMRUwgPSAnUEFSQUxMRUwnXG59XG5cbmV4cG9ydCBlbnVtIEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMge1xuICAgIFNJTkdMRV9VU0VSID0gJ1NJTkdMRV9VU0VSJyxcbiAgICBBTllPTkUgPSAnQU5ZT05FJyxcbiAgICBFVkVSWU9ORSA9ICdFVkVSWU9ORSdcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZFxuICogQXBwcm92YWxGbG93QWRkTm9kZSBjb21wb25lbnQgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDAuNDAuMFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ZkcC1hcHByb3ZhbC1mbG93LWFkZC1ub2RlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4uL3N0eWxlcy9hcHByb3ZhbC1mbG93LWRpYWxvZy5zY3NzJywgJy4vYXBwcm92YWwtZmxvdy1hZGQtbm9kZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ZkcC1hcHByb3ZhbC1mbG93LWRpYWxvZyBmZHAtYXBwcm92YWwtZmxvdy1hZGQtbm9kZSdcbiAgICB9LFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEaWFsb2dDb21wb25lbnQsXG4gICAgICAgIENvbnRlbnREZW5zaXR5RGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIFRlbXBsYXRlRGlyZWN0aXZlLFxuICAgICAgICBJY29uQ29tcG9uZW50LFxuICAgICAgICBTZWFyY2hGaWVsZENvbXBvbmVudCxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgU2Nyb2xsYmFyRGlyZWN0aXZlLFxuICAgICAgICBEaWFsb2dCb2R5Q29tcG9uZW50LFxuICAgICAgICBGb3JtSXRlbUNvbXBvbmVudCxcbiAgICAgICAgRm9ybUxhYmVsQ29tcG9uZW50LFxuICAgICAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgICAgIE9wdGlvbkNvbXBvbmVudCxcbiAgICAgICAgTXVsdGlJbnB1dENvbXBvbmVudCxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgICAgICBEYXRlUGlja2VyQ29tcG9uZW50LFxuICAgICAgICBBcHByb3ZhbEZsb3dUZWFtTGlzdENvbXBvbmVudCxcbiAgICAgICAgQXBwcm92YWxGbG93VXNlckxpc3RDb21wb25lbnQsXG4gICAgICAgIEFwcHJvdmFsRmxvd1VzZXJEZXRhaWxzQ29tcG9uZW50LFxuICAgICAgICBEaWFsb2dGb290ZXJDb21wb25lbnQsXG4gICAgICAgIEJ1dHRvbkJhckNvbXBvbmVudCxcbiAgICAgICAgQnVzeUluZGljYXRvckNvbXBvbmVudCxcbiAgICAgICAgRmRUcmFuc2xhdGVQaXBlXG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBBcHByb3ZhbEZsb3dBZGROb2RlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlID0gQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTLlNFUklBTDtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlcyA9IEFQUFJPVkFMX0ZMT1dfTk9ERV9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX25vZGVUeXBlc0FycmF5ID0gT2JqZWN0LmtleXMoQVBQUk9WQUxfRkxPV19OT0RFX1RZUEVTKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZSA9IEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMuU0lOR0xFX1VTRVI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9hcHByb3ZlclR5cGVzID0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUztcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyVHlwZXNBcnJheSA9IE9iamVjdC5rZXlzKEFQUFJPVkFMX0ZMT1dfQVBQUk9WRVJfVFlQRVMpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZHVlRGF0ZSA9IEZkRGF0ZS5nZXROb3coKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdE1vZGUgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2FwcHJvdmVyczogQXBwcm92YWxVc2VyW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3RlYW1zOiBBcHByb3ZhbFRlYW1bXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VsZWN0ZWRBcHByb3ZlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW06IE51bGxhYmxlPEFwcHJvdmFsVGVhbT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zZWxlY3RlZFRlYW1BcnJheTogQXBwcm92YWxUZWFtW10gPSBbXTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NlbGVjdGVkVGVhbU1lbWJlcnM6IEFwcHJvdmFsVXNlcltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9maWx0ZXJlZFRlYW1NZW1iZXJzOiBBcHByb3ZhbFVzZXJbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdXNlclRvU2hvd0RldGFpbHM/OiBBcHByb3ZhbFVzZXI7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF91c2VyVG9TaG93RGV0YWlsc0RhdGEkPzogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY2hlY2tEdWVEYXRlID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9kaXNwbGF5VXNlckZuID0gZGlzcGxheVVzZXJGbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2Rpc3BsYXlUZWFtRm4gPSBkaXNwbGF5VGVhbUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfdHJhY2tCeUZuID0gdHJhY2tCeUZuO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfYWRkVG9OZXh0U2VyaWFsID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ZpZXdDaGFuZ2VTdWI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZGF0YVNvdXJjZVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGRpYWxvZ1JlZjogRGlhbG9nUmVmPEFkZE5vZGVEaWFsb2dSZWZEYXRhPixcbiAgICAgICAgcHVibGljIHZpZXdTZXJ2aWNlOiBBcHByb3ZhbEZsb3dBZGROb2RlVmlld1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGdldCBfZGF0YSgpOiBBZGROb2RlRGlhbG9nUmVmRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZi5kYXRhO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc1NpbmdsZVVzZXJNb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXBwcm92ZXJUeXBlID09PSB0aGlzLl9hcHByb3ZlclR5cGVzLlNJTkdMRV9VU0VSO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9pc01haW5TdWJtaXRCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gdGhpcy5faXNTaW5nbGVVc2VyTW9kZSA/IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzIDogdGhpcy5fc2VsZWN0ZWRUZWFtQXJyYXk7XG5cbiAgICAgICAgcmV0dXJuICFhcHByb3ZlcnMubGVuZ3RoIHx8ICh0aGlzLl9jaGVja0R1ZURhdGUgJiYgIXRoaXMuX2R1ZURhdGUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgZ2V0IF9oZWFkZXJBcnJvd0dseXBoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAnbmF2aWdhdGlvbi0nICsgKHRoaXMuX2RhdGEucnRsID8gJ3JpZ2h0JyA6ICdsZWZ0JykgKyAnLWFycm93JztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICAvLyB0cmlnZ2VyaW5nIGluaXRpYWwgbG9hZGluZyBvZiBkYXRhIGluIGRhdGEgc291cmNlcy5cbiAgICAgICAgdGhpcy5fZGF0YS50ZWFtRGF0YVNvdXJjZS5tYXRjaCgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKCk7XG4gICAgICAgIGNvbnN0IHRlYW1zJCA9IHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2Uub3BlbigpO1xuICAgICAgICBjb25zdCBhcHByb3ZlcnMkID0gdGhpcy5fZGF0YS51c2VyRGF0YVNvdXJjZS5vcGVuKCk7XG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VTdWIgPSBjb21iaW5lTGF0ZXN0KFt0ZWFtcyQsIGFwcHJvdmVycyRdKS5zdWJzY3JpYmUoKFt0ZWFtcywgYXBwcm92ZXJzXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdGVhbXMgPSB0ZWFtcztcblxuICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJzID0gYXBwcm92ZXJzO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YS5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGVja0R1ZURhdGUgPSAhIXRoaXMuX2RhdGEuY2hlY2tEdWVEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRHVlRGF0ZSAmJiB0aGlzLl9kYXRhLm5vZGU/LmR1ZURhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZHVlRGF0ZSA9IEZkRGF0ZS5nZXRGZERhdGVCeURhdGUobmV3IERhdGUodGhpcy5fZGF0YS5ub2RlLmR1ZURhdGUpKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycyA9IFsuLi4odGhpcy5fZGF0YS5ub2RlPy5hcHByb3ZlcnMgPz8gW10pXTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkICYmXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3RlYW1zLmZpbmQoKHQpID0+IHQuaWQgPT09IHRoaXMuX2RhdGEubm9kZT8uYXBwcm92YWxUZWFtSWQpO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2VsZWN0VGVhbSh0ZWFtKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW0gPSB0ZWFtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0ZWFtXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYXBwcm92ZXJUeXBlID0gdGhpcy5fZGF0YS5ub2RlPy5pc0V2ZXJ5b25lQXBwcm92YWxOZWVkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5fYXBwcm92ZXJUeXBlcy5FVkVSWU9ORVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLl9hcHByb3ZlclR5cGVzLkFOWU9ORTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl92aWV3Q2hhbmdlU3ViID0gdGhpcy52aWV3U2VydmljZS5vblZpZXdDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCcnKTtcbiAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHN3aXRjaCAodGhpcy5fZGF0YS5ub2RlVGFyZ2V0KSB7XG4gICAgICAgICAgICBjYXNlICdlbXB0eSc6XG4gICAgICAgICAgICBjYXNlICdiZWZvcmUnOlxuICAgICAgICAgICAgY2FzZSAnYWZ0ZXInOlxuICAgICAgICAgICAgICAgIHRoaXMuX25vZGVUeXBlID0gdGhpcy5fbm9kZVR5cGVzLlNFUklBTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3BhcmFsbGVsJzpcbiAgICAgICAgICAgICAgICB0aGlzLl9ub2RlVHlwZSA9IHRoaXMuX25vZGVUeXBlcy5QQVJBTExFTDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3ZpZXdDaGFuZ2VTdWIudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fZGF0YVNvdXJjZVN1Yi51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuX2RhdGEudGVhbURhdGFTb3VyY2UuY2xvc2UoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9nb1RvU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IHRydWU7XG5cbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50Vmlldyh0aGlzLl9pc1NpbmdsZVVzZXJNb2RlID8gVklFV19NT0RFUy5TRUxFQ1RfVVNFUiA6IFZJRVdfTU9ERVMuU0VMRUNUX1RFQU0pO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2V4aXRTZWxlY3RNb2RlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMubGVuZ3RoICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmVycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzID0gW107XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuX2RhdGEuaXNFZGl0ICYmICF0aGlzLl9kYXRhLm5vZGU/LmFwcHJvdmFsVGVhbUlkKSB7XG4gICAgICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VGVhbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fc2VsZWN0TW9kZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnJlc2V0VmlldygpO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkQXBwcm92ZXJzKGFwcHJvdmVyczogQXBwcm92YWxVc2VyW10pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRBcHByb3ZlcnMgPSBhcHByb3ZlcnM7XG5cbiAgICAgICAgdGhpcy5fY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2RhdGEubm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMgPSB0aGlzLl9zZWxlY3RlZEFwcHJvdmVycztcbiAgICAgICAgdGhpcy5fZGF0YS5ub2RlLnZhcmlvdXNUZWFtcyA9IHRoaXMuX2RhdGEubm9kZS5hcHByb3ZlcnMuc29tZShcbiAgICAgICAgICAgICh1KSA9PiB1LnRlYW1JZCAhPT0gdGhpcy5fZGF0YS5ub2RlIS5hcHByb3ZlcnNbMF0udGVhbUlkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPyAnJyA6IHRoaXMuX3NlbGVjdGVkQXBwcm92ZXJzWzBdPy5kZXNjcmlwdGlvbjtcblxuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmFwcHJvdmFsVGVhbUlkO1xuICAgICAgICBkZWxldGUgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZDtcblxuICAgICAgICB0aGlzLl9leGl0U2VsZWN0TW9kZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldFNlbGVjdGVkVGVhbSh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX2NvbmZpcm1TZWxlY3RlZFRlYW0oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy52aWV3U2VydmljZS50ZWFtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRUZWFtID0gdGhpcy52aWV3U2VydmljZS50ZWFtO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1BcnJheSA9IFt0aGlzLnZpZXdTZXJ2aWNlLnRlYW1dO1xuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS52YXJpb3VzVGVhbXMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5hcHByb3ZhbFRlYW1JZCA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5pZDtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEubm9kZS5kZXNjcmlwdGlvbiA9IHRoaXMudmlld1NlcnZpY2UudGVhbS5uYW1lO1xuICAgICAgICAgICAgdGhpcy5fZGF0YS5ub2RlLmlzRXZlcnlvbmVBcHByb3ZhbE5lZWRlZCA9IHRoaXMuX2FwcHJvdmVyVHlwZSA9PT0gQVBQUk9WQUxfRkxPV19BUFBST1ZFUl9UWVBFUy5FVkVSWU9ORTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2V4aXRTZWxlY3RNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfc2VlVXNlckRldGFpbHModXNlcjogQXBwcm92YWxVc2VyKTogdm9pZCB7XG4gICAgICAgIHRoaXMudmlld1NlcnZpY2Uuc2V0Q3VycmVudFZpZXcoVklFV19NT0RFUy5VU0VSX0RFVEFJTFMpO1xuXG4gICAgICAgIHRoaXMuX3VzZXJUb1Nob3dEZXRhaWxzID0gdXNlcjtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHRoaXMuX2RhdGEudXNlckRhdGFTb3VyY2UuZGF0YVByb3ZpZGVyLmdldE9uZShuZXcgTWFwKFtbJ2lkJywgdXNlci5pZF1dKSk7XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9leGl0VXNlckRldGFpbHNNb2RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KHRoaXMudmlld1NlcnZpY2UudGVhbSA/IFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMgOiBWSUVXX01PREVTLlNFTEVDVF9VU0VSKTtcblxuICAgICAgICB0aGlzLl91c2VyVG9TaG93RGV0YWlscyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5fdXNlclRvU2hvd0RldGFpbHNEYXRhJCA9IHVuZGVmaW5lZDtcblxuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3ZpZXdUZWFtTWVtYmVycyh0ZWFtOiBBcHByb3ZhbFRlYW0pOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZWxlY3RUZWFtKHRlYW0pO1xuICAgICAgICB0aGlzLnZpZXdTZXJ2aWNlLnNldEN1cnJlbnRWaWV3KFZJRVdfTU9ERVMuVklFV19URUFNX01FTUJFUlMpO1xuXG4gICAgICAgIHRoaXMuX3NlbGVjdGVkVGVhbU1lbWJlcnMgPSB0ZWFtLm1lbWJlcnM7XG5cbiAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzKTsgLy8gYXBwbHlpbmcgbG9jYWwgZmlsdGVyaW5nXG4gICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfZXhpdFRlYW1NZW1iZXJzTW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5zZXRDdXJyZW50VmlldyhWSUVXX01PREVTLlNFTEVDVF9URUFNKTtcbiAgICAgICAgdGhpcy52aWV3U2VydmljZS5yZXNldFRlYW0oKTtcblxuICAgICAgICB0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzID0gW107XG5cbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIF9zdWJtaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgIXRoaXMuX2lzU2luZ2xlVXNlck1vZGUgJiYgdGhpcy5fc2VsZWN0ZWRUZWFtKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuYXBwcm92ZXJzID0gWy4uLnRoaXMuX3NlbGVjdGVkVGVhbS5tZW1iZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9kYXRhLm5vZGUgJiYgdGhpcy5fY2hlY2tEdWVEYXRlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLm5vZGUuZHVlRGF0ZSA9IHRoaXMuX2R1ZURhdGUudG9EYXRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh7XG4gICAgICAgICAgICBub2RlOiB0aGlzLl9kYXRhLm5vZGUsXG4gICAgICAgICAgICBub2RlVHlwZTogdGhpcy5fbm9kZVR5cGUsXG4gICAgICAgICAgICB0b05leHRTZXJpYWw6IHRoaXMuX2FkZFRvTmV4dFNlcmlhbFxuICAgICAgICB9IGFzIEFkZE5vZGVEaWFsb2dGb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBfb25TZWFyY2hTdHJpbmdDaGFuZ2Uoc2VhcmNoU3RyaW5nID0gJycpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYW1zID0gbmV3IE1hcChbWydxdWVyeScsIHNlYXJjaFN0cmluZ11dKTtcblxuICAgICAgICBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnVzZXJEYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLnRlYW1EYXRhU291cmNlLm1hdGNoKHBhcmFtcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy52aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgdGhpcy5fc2V0RmlsdGVyZWRUZWFtTWVtYmVycyh0aGlzLl9zZWxlY3RlZFRlYW1NZW1iZXJzLmZpbHRlcigodXNlcikgPT4gZmlsdGVyQnlOYW1lKHVzZXIsIHNlYXJjaFN0cmluZykpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgX3NldEZpbHRlcmVkVGVhbU1lbWJlcnModXNlcnM6IEFwcHJvdmFsVXNlcltdKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmVkVGVhbU1lbWJlcnMgPSBbLi4udXNlcnNdO1xuICAgICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbn1cbiIsIjxmZC1kaWFsb2cgZmRDb21wYWN0PlxuICAgIDxmZC1kaWFsb2ctaGVhZGVyIFtjbGFzcy5zaG93LXNlYXJjaF09XCJfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBmZGtUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgQGlmICghX3NlbGVjdE1vZGUgJiYgIV9kYXRhLmlzRWRpdCkge1xuICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0hlYWRlckFkZEFwcHJvdmVycycgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKCFfc2VsZWN0TW9kZSAmJiBfZGF0YS5pc0VkaXQpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJFZGl0QXBwcm92ZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8IHZpZXdTZXJ2aWNlLmlzU2VsZWN0VGVhbU1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dIZWFkZXJBZGRBcHByb3ZlclRlYW0nIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1RlYW1NZW1iZXJzTW9kZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiX2hlYWRlckFycm93R2x5cGhcIiAoY2xpY2spPVwiX2V4aXRUZWFtTWVtYmVyc01vZGUoKVwiPjwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAge3sgdmlld1NlcnZpY2UudGVhbT8ubmFtZSA/PyAnJyB9fSAoe3sgdmlld1NlcnZpY2UudGVhbT8ubWVtYmVycz8ubGVuZ3RoID8/IDAgfX0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNVc2VyRGV0YWlsc01vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIl9oZWFkZXJBcnJvd0dseXBoXCIgKGNsaWNrKT1cIl9leGl0VXNlckRldGFpbHNNb2RlKClcIj48L2ZkLWljb24+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nSGVhZGVyRGV0YWlsJyB8IGZkVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgQGlmIChfc2VsZWN0TW9kZSAmJiAhX3VzZXJUb1Nob3dEZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgPGZkcC1zZWFyY2gtZmllbGRcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VhcmNoUGxhY2Vob2xkZXInIHwgZmRUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbc3VnZ2VzdGlvbnNdPVwiW11cIlxuICAgICAgICAgICAgICAgICAgICAoaW5wdXRDaGFuZ2UpPVwiX29uU2VhcmNoU3RyaW5nQ2hhbmdlKCRldmVudC50ZXh0KVwiXG4gICAgICAgICAgICAgICAgPjwvZmRwLXNlYXJjaC1maWVsZD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgPGZkLWRpYWxvZy1ib2R5IFtjbGFzcy5mZC1kaWFsb2dfX2JvZHktLWF1dG8taGVpZ2h0XT1cInZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlXCI+XG4gICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlKSB7XG4gICAgICAgICAgICBAaWYgKF9kYXRhLnNob3dOb2RlVHlwZVNlbGVjdCkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXNlbGVjdCBbKHZhbHVlKV09XCJfbm9kZVR5cGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKG9wdGlvbiBvZiBfbm9kZVR5cGVzQXJyYXk7IHRyYWNrIG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBzd2l0Y2ggKG9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX25vZGVUeXBlcy5TRVJJQUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVTZXJpYWwnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9ub2RlVHlwZXMuUEFSQUxMRUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBmZC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nTm9kZVR5cGVQYXJhbGxlbCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9mZC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAge3sgJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVEaWFsb2dBcHByb3ZlclR5cGUnIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxmZC1zZWxlY3QgWyh2YWx1ZSldPVwiX2FwcHJvdmVyVHlwZVwiPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgX2FwcHJvdmVyVHlwZXNBcnJheTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAc3dpdGNoIChvcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX2FwcHJvdmVyVHlwZXMuU0lOR0xFX1VTRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVVzZXInIHwgZmRUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNhc2UgKF9hcHByb3ZlclR5cGVzLkFOWU9ORSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZmQtb3B0aW9uIFt2YWx1ZV09XCJvcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nQXBwcm92ZXJUeXBlVGVhbUFueW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAY2FzZSAoX2FwcHJvdmVyVHlwZXMuRVZFUllPTkUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGZkLW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FwcHJvdmVyVHlwZVRlYW1FdmVyeW9uZScgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZmQtc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGZkLWZvcm0taXRlbT5cbiAgICAgICAgICAgICAgICA8bGFiZWwgZmQtZm9ybS1sYWJlbD57eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ1VzZXJPclRlYW0nIHwgZmRUcmFuc2xhdGUgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIEBpZiAoX2lzU2luZ2xlVXNlck1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGZkLW11bHRpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0FsbEJ1dHRvbl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25WYWx1ZXNdPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiX3NlbGVjdGVkQXBwcm92ZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNwbGF5Rm5dPVwiX2Rpc3BsYXlVc2VyRm5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiX2dvVG9TZWxlY3RNb2RlKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkQ2hhbmdlKT1cIl9zZXRTZWxlY3RlZEFwcHJvdmVycygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtbXVsdGktaW5wdXQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoIV9pc1NpbmdsZVVzZXJNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1tdWx0aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dBbGxCdXR0b25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duVmFsdWVzXT1cIl9zZWxlY3RlZFRlYW1BcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9zZWxlY3RlZFRlYW1BcnJheVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzcGxheUZuXT1cIl9kaXNwbGF5VGVhbUZuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvcGVuQ2hhbmdlKT1cIl9nb1RvU2VsZWN0TW9kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmQtbXVsdGktaW5wdXQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBAaWYgKF9ub2RlVHlwZSA9PT0gX25vZGVUeXBlcy5QQVJBTExFTCkge1xuICAgICAgICAgICAgICAgIDxkaXYgZmQtZm9ybS1pdGVtPlxuICAgICAgICAgICAgICAgICAgICA8ZmQtY2hlY2tib3ggWyhuZ01vZGVsKV09XCJfYWRkVG9OZXh0U2VyaWFsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyAncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZURpYWxvZ0FkZFRvTmV4dCcgfCBmZFRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2ZkLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChfY2hlY2tEdWVEYXRlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1mb3JtLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmZC1mb3JtLWxhYmVsPnt7ICdwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlRGlhbG9nRHVlRGF0ZScgfCBmZFRyYW5zbGF0ZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1kYXRlLXBpY2tlciB0eXBlPVwic2luZ2xlXCIgW3N0YXRlXT1cIiF0aGlzLl9kdWVEYXRlID8gJ2Vycm9yJyA6IG51bGxcIiBbKG5nTW9kZWwpXT1cIl9kdWVEYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGlmIChfc2VsZWN0TW9kZSkge1xuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFRlYW1Nb2RlKSB7XG4gICAgICAgICAgICAgICAgQGlmICghX2RhdGEudGVhbURhdGFTb3VyY2UuaXNEYXRhTG9hZGluZykge1xuICAgICAgICAgICAgICAgICAgICA8ZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbaXNSdGxdPVwiX2RhdGEucnRsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0ZWFtc109XCJfdGVhbXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVGVhbUlkXT1cIl9zZWxlY3RlZFRlYW0/LmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblRlYW1DbGljayk9XCJfdmlld1RlYW1NZW1iZXJzKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVGVhbVJhZGlvQ2xpY2spPVwiX3NldFNlbGVjdGVkVGVhbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmRwLWFwcHJvdmFsLWZsb3ctdGVhbS1saXN0PlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZmQtYnVzeS1pbmRpY2F0b3IgW2xvYWRpbmddPVwidHJ1ZVwiIFtibG9ja109XCJ0cnVlXCI+IDwvZmQtYnVzeS1pbmRpY2F0b3I+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8IHZpZXdTZXJ2aWNlLmlzVGVhbU1lbWJlcnNNb2RlKSB7XG4gICAgICAgICAgICAgICAgQGlmICh2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlIHx8ICFfZGF0YS51c2VyRGF0YVNvdXJjZS5pc0RhdGFMb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt1c2Vyc109XCJ2aWV3U2VydmljZS5pc1NlbGVjdFVzZXJNb2RlID8gX2FwcHJvdmVycyA6IF9maWx0ZXJlZFRlYW1NZW1iZXJzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpc1NlbGVjdGFibGVdPVwidmlld1NlcnZpY2UuaXNTZWxlY3RVc2VyTW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRVc2Vyc109XCJfc2VsZWN0ZWRBcHByb3ZlcnNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uVXNlckNsaWNrKT1cIl9zZWVVc2VyRGV0YWlscygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdGlvbkNoYW5nZSk9XCJfc2VsZWN0ZWRBcHByb3ZlcnMgPSAkZXZlbnRcIlxuICAgICAgICAgICAgICAgICAgICA+PC9mZHAtYXBwcm92YWwtZmxvdy11c2VyLWxpc3Q+XG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIDxmZC1idXN5LWluZGljYXRvciBbbG9hZGluZ109XCJ0cnVlXCIgW2Jsb2NrXT1cInRydWVcIj4gPC9mZC1idXN5LWluZGljYXRvcj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlICYmIF91c2VyVG9TaG93RGV0YWlscykge1xuICAgICAgICAgICAgICAgIDxmZHAtYXBwcm92YWwtZmxvdy11c2VyLWRldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgW3VzZXJdPVwiX3VzZXJUb1Nob3dEZXRhaWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW2RldGFpbHNUZW1wbGF0ZV09XCJfZGF0YS51c2VyRGV0YWlsc1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2RldGFpbHNdPVwiX3VzZXJUb1Nob3dEZXRhaWxzRGF0YSRcIlxuICAgICAgICAgICAgICAgID48L2ZkcC1hcHByb3ZhbC1mbG93LXVzZXItZGV0YWlscz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIDwvZmQtZGlhbG9nLWJvZHk+XG4gICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgIEBpZiAoIV9zZWxlY3RNb2RlKSB7XG4gICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUFkZEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiX2lzTWFpblN1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiX3N1Ym1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCIncGxhdGZvcm1BcHByb3ZhbEZsb3cuYWRkTm9kZUNhbmNlbEFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIlxuICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgfVxuICAgICAgICBAaWYgKF9zZWxlY3RNb2RlKSB7XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzU2VsZWN0VXNlck1vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlU2VsZWN0QXBwcm92ZXJBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhX3NlbGVjdGVkQXBwcm92ZXJzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfY29uZmlybVNlbGVjdGVkQXBwcm92ZXJzKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNTZWxlY3RUZWFtTW9kZSkge1xuICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cImVtcGhhc2l6ZWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVTZWxlY3RBcHByb3ZlckFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFfc2VsZWN0ZWRUZWFtICYmICF2aWV3U2VydmljZS50ZWFtXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9jb25maXJtU2VsZWN0ZWRUZWFtKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQ2FuY2VsQXBwcm92ZXJTZWxlY3Rpb25BY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFNlbGVjdE1vZGUoKVwiXG4gICAgICAgICAgICAgICAgPjwvZmQtYnV0dG9uLWJhcj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAodmlld1NlcnZpY2UuaXNUZWFtTWVtYmVyc01vZGUpIHtcbiAgICAgICAgICAgICAgICA8ZmQtYnV0dG9uLWJhclxuICAgICAgICAgICAgICAgICAgICBmZGtJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ3BsYXRmb3JtQXBwcm92YWxGbG93LmFkZE5vZGVBcHByb3Zlck9yVGVhbURldGFpbHNDbG9zZUFjdGlvbkJ0bkxhYmVsJyB8IGZkVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9leGl0VGVhbU1lbWJlcnNNb2RlKClcIlxuICAgICAgICAgICAgICAgID48L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKHZpZXdTZXJ2aWNlLmlzVXNlckRldGFpbHNNb2RlKSB7XG4gICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgZmRrSW5pdGlhbEZvY3VzXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidwbGF0Zm9ybUFwcHJvdmFsRmxvdy5hZGROb2RlQXBwcm92ZXJPclRlYW1EZXRhaWxzQ2xvc2VBY3Rpb25CdG5MYWJlbCcgfCBmZFRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJfZXhpdFVzZXJEZXRhaWxzTW9kZSgpXCJcbiAgICAgICAgICAgICAgICA+PC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuPC9mZC1kaWFsb2c+XG4iXX0=