@provoly/dashboard 1.4.13 → 1.4.15

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 (226) hide show
  1. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +7 -7
  2. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules.component.mjs +3 -3
  3. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +7 -7
  4. package/esm2022/admin/components/admin-abac-rules/components/composed-condition/composed-condition.component.mjs +10 -10
  5. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +6 -6
  6. package/esm2022/admin/components/admin-abac-rules/components/select-attribute/select-attribute.component.mjs +3 -3
  7. package/esm2022/admin/components/admin-abac-rules/components/select-metadata/select-metadata.component.mjs +3 -3
  8. package/esm2022/admin/components/admin-classes/admin-classes-customize/admin-classes-customize.component.mjs +10 -10
  9. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +10 -15
  10. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +8 -8
  11. package/esm2022/admin/components/admin-classes/admin-classes-edit/admin-classes-edit.component.mjs +5 -5
  12. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +5 -5
  13. package/esm2022/admin/components/admin-classes/admin-classes-select/admin-classes-select.component.mjs +6 -6
  14. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-edit/admin-attributes-edit.component.mjs +5 -5
  15. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +3 -3
  16. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-new/admin-attributes-new.component.mjs +5 -5
  17. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-select/admin-attributes-select.component.mjs +6 -6
  18. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-classes-view.component.mjs +3 -3
  19. package/esm2022/admin/components/admin-classes/admin-classes.component.mjs +5 -5
  20. package/esm2022/admin/components/admin-dataset/admin-dataset.component.mjs +6 -6
  21. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +7 -7
  22. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +3 -3
  23. package/esm2022/admin/components/admin-environment/admin-environment-select/admin-environment-select.component.mjs +5 -5
  24. package/esm2022/admin/components/admin-environment/admin-environment-update/admin-environment-update.component.mjs +5 -5
  25. package/esm2022/admin/components/admin-environment/admin-environment.component.mjs +5 -5
  26. package/esm2022/admin/components/admin-fields/admin-fields-edit/admin-fields-edit.component.mjs +5 -5
  27. package/esm2022/admin/components/admin-fields/admin-fields-select/admin-fields-select.component.mjs +3 -3
  28. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +3 -3
  29. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +5 -5
  30. package/esm2022/admin/components/admin-links/admin-links.component.mjs +5 -5
  31. package/esm2022/admin/components/admin-menu/admin-menu.component.mjs +5 -5
  32. package/esm2022/admin/components/admin-metadata/admin-edit-metadata/admin-edit-metadata.component.mjs +5 -5
  33. package/esm2022/admin/components/admin-metadata/admin-select-metadata/admin-select-metadata.component.mjs +5 -5
  34. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +4 -5
  35. package/esm2022/admin/components/admin-metadata/shared/list-metadata/pry-list-metadata.component.mjs +5 -6
  36. package/esm2022/admin/components/admin-metadata-rules/admin-metadata-rules.component.mjs +5 -5
  37. package/esm2022/admin/components/admin-metadata-rules/admin-select-metadata-rules/admin-select-metadata-rules.component.mjs +5 -5
  38. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +4 -5
  39. package/esm2022/admin/components/admin-metadata-user/admin-user-edit-metadata/admin-user-edit-metadata.component.mjs +5 -5
  40. package/esm2022/admin/components/admin-metadata-user/admin-user-select-metadata/admin-user-select-metadata.component.mjs +5 -5
  41. package/esm2022/admin/components/admin-predicates/admin-predicates-form/admin-predicates-form.component.mjs +5 -5
  42. package/esm2022/admin/components/admin-predicates/admin-predicates-select/admin-predicates-select.component.mjs +5 -5
  43. package/esm2022/admin/components/admin-predicates/admin-predicates-update/admin-predicates-update.component.mjs +5 -5
  44. package/esm2022/admin/components/admin-predicates/admin-predicates.component.mjs +5 -5
  45. package/esm2022/admin/components/admin-relation-types/admin-relation-types-modal/admin-relation-types-modal.component.mjs +4 -5
  46. package/esm2022/admin/components/admin-relation-types/admin-relation-types-select/admin-relation-types-select.component.mjs +5 -5
  47. package/esm2022/admin/components/admin-relation-types/admin-relation-types.component.mjs +6 -6
  48. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +6 -6
  49. package/esm2022/admin/components/admin-user/admin-user.component.mjs +5 -5
  50. package/esm2022/admin/components/association/association.component.mjs +4 -5
  51. package/esm2022/components/card/card.component.mjs +5 -6
  52. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +6 -6
  53. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +7 -7
  54. package/esm2022/components/stepper/stepper.component.mjs +3 -4
  55. package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +5 -5
  56. package/esm2022/dataset/components/dataset-version-form/dataset-version-form.component.mjs +6 -7
  57. package/esm2022/filters/date/date-filter.component.mjs +5 -6
  58. package/esm2022/filters/list/list-filter.component.mjs +6 -7
  59. package/esm2022/filters/number/number-filter.component.mjs +5 -6
  60. package/esm2022/filters/text/text-filter.component.mjs +5 -6
  61. package/esm2022/lib/core/components/about/about.component.mjs +3 -3
  62. package/esm2022/lib/core/components/accordion/accordion-item/accordion-item.component.mjs +7 -7
  63. package/esm2022/lib/core/components/base-menu/base-menu.component.mjs +6 -6
  64. package/esm2022/lib/core/components/base-toolbox/base-toolbox.component.mjs +6 -6
  65. package/esm2022/lib/core/components/base-toolbox-action/base-toolbox-action.component.mjs +6 -7
  66. package/esm2022/lib/core/components/date-picker/date-picker.component.mjs +4 -4
  67. package/esm2022/lib/core/components/date-picker/time-picker/loop-scroll-column/loop-scroll-column.component.mjs +3 -4
  68. package/esm2022/lib/core/components/date-picker/time-picker/time-picker.component.mjs +6 -6
  69. package/esm2022/lib/core/components/edit-input/edit-input.component.mjs +7 -8
  70. package/esm2022/lib/core/components/icon/icon.component.mjs +3 -3
  71. package/esm2022/lib/core/components/modal/modal.component.mjs +5 -6
  72. package/esm2022/lib/core/components/nq-color-selector/nq-color-selector.component.mjs +5 -5
  73. package/esm2022/lib/core/components/overlay/dialog-confirm.component.mjs +3 -3
  74. package/esm2022/lib/core/components/range/range.component.mjs +5 -6
  75. package/esm2022/lib/core/components/select/select.component.mjs +3 -3
  76. package/esm2022/lib/core/components/select-image/select-image.component.mjs +5 -5
  77. package/esm2022/lib/core/components/share/group-share/group-share.component.mjs +6 -6
  78. package/esm2022/lib/core/components/snackbar/snackbar/snackbar.component.mjs +3 -3
  79. package/esm2022/lib/core/components/status-modal/status-modal.component.mjs +5 -5
  80. package/esm2022/lib/core/components/tabs/tab-group.component.mjs +3 -3
  81. package/esm2022/lib/core/components/toggle/toggle.component.mjs +4 -4
  82. package/esm2022/lib/core/model/result-set.interface.mjs +1 -1
  83. package/esm2022/lib/core/model/search-mono-class.model.mjs +1 -1
  84. package/esm2022/lib/core/store/data-source/data-source.effects.mjs +9 -9
  85. package/esm2022/lib/core/store/relation-types/relation-types.actions.mjs +2 -1
  86. package/esm2022/lib/core/store/relation-types/relation-types.effects.mjs +2 -1
  87. package/esm2022/lib/core/store/relation-types/relation-types.service.mjs +5 -1
  88. package/esm2022/lib/core/store/search/search.actions.mjs +1 -1
  89. package/esm2022/lib/core/store/search/search.effects.mjs +5 -3
  90. package/esm2022/lib/core/store/search/search.service.mjs +19 -13
  91. package/esm2022/lib/core/toolbox/toolbox-manifest.service.mjs +3 -3
  92. package/esm2022/lib/dashboard/action-bus/service/bus.service.mjs +2 -2
  93. package/esm2022/lib/dashboard/components/context-menu/context-menu.component.mjs +8 -8
  94. package/esm2022/lib/dashboard/components/dashboard.component.mjs +12 -12
  95. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +5 -5
  96. package/esm2022/lib/dashboard/components/metadata/metadata.component.mjs +5 -6
  97. package/esm2022/lib/dashboard/components/vizualize-raw/vizualize-raw.component.mjs +3 -3
  98. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-selector.component.mjs +6 -6
  99. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +10 -10
  100. package/esm2022/lib/dashboard/components/widgets/widget-filler/widget-filler.component.mjs +2 -2
  101. package/esm2022/lib/dashboard/components/widgets/widget-placement/widget-placement.utils.mjs +2 -2
  102. package/esm2022/lib/dashboard/filter/components/filter-group/filter-group.component.mjs +7 -7
  103. package/esm2022/lib/dashboard/resultset-utils.mjs +7 -8
  104. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -1
  105. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +3 -3
  106. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +31 -23
  107. package/esm2022/lib/dashboard/tooltip/components/default/default.tooltip.component.mjs +3 -3
  108. package/esm2022/notification/components/notification/content/notification-content.component.mjs +3 -3
  109. package/esm2022/notification/components/notification/notification.component.mjs +5 -5
  110. package/esm2022/pipeline/components/pipeline-details/pipeline-details.component.mjs +7 -7
  111. package/esm2022/pipeline/components/pipeline-editor/graph-serializer.utils.mjs +2 -2
  112. package/esm2022/pipeline/components/pipeline-editor/pipeline-editor.component.mjs +5 -5
  113. package/esm2022/pipeline/components/pipeline-list/pipeline-list.component.mjs +9 -9
  114. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +6 -6
  115. package/esm2022/presentation/components/presentation.component.mjs +6 -6
  116. package/esm2022/presentation/components/title-presentation/title-presentation.component.mjs +5 -5
  117. package/esm2022/restitution/components/restitution/restitution.component.mjs +3 -3
  118. package/esm2022/restitution/components/restitution-catalog/restitution-catalog.component.mjs +9 -9
  119. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +3 -3
  120. package/esm2022/search/components/choose-widget/choose-widget.component.mjs +5 -5
  121. package/esm2022/search/components/edit-named-query/edit-named-query.component.mjs +9 -9
  122. package/esm2022/search/search-fulltext/search-fulltext/search-fulltext.component.mjs +3 -3
  123. package/esm2022/search/search-home/search-home.component.mjs +3 -3
  124. package/esm2022/search/search-mono-class/components/search-composed/search-composed.component.mjs +3 -3
  125. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +3 -3
  126. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +8 -8
  127. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +6 -6
  128. package/esm2022/search/search-mono-class/components/search-select-attribute/search-select-attribute.component.mjs +3 -3
  129. package/esm2022/search/search-mono-class/store/search-mono-class.service.mjs +4 -4
  130. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +7 -7
  131. package/esm2022/search/search-multi-class/components/multi-class-field-selection/multi-class-field-selection.component.mjs +6 -6
  132. package/esm2022/search/search-multi-class/components/search-multi-class/search-multi-class.component.mjs +7 -7
  133. package/esm2022/search/search-tools/search-tools.component.mjs +13 -13
  134. package/esm2022/toolbox/components/named-query/named-query.component.mjs +5 -5
  135. package/esm2022/toolbox/components/save-view/save-view.component.mjs +10 -10
  136. package/esm2022/toolbox/components/select-grid-layout/select-grid-layout.component.mjs +8 -8
  137. package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +9 -6
  138. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +3 -3
  139. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +4 -4
  140. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +2 -2
  141. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +12 -12
  142. package/esm2022/widgets/widget-detail/component/widget-detail.component.mjs +13 -7
  143. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +7 -7
  144. package/esm2022/widgets/widget-iframe/component/widget-iframe.component.mjs +7 -7
  145. package/esm2022/widgets/widget-iframe/messaging/iframe-messaging.service.mjs +2 -2
  146. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +10 -10
  147. package/esm2022/widgets/widget-map/utils/widget-map.utils.mjs +2 -2
  148. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +2 -2
  149. package/esm2022/widgets/widget-table/expand-value/expand-value.component.mjs +4 -5
  150. package/esm2022/widgets/widget-template/component/widget-template.component.mjs +7 -7
  151. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +10 -10
  152. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +9 -9
  153. package/fesm2022/provoly-dashboard-admin.mjs +171 -175
  154. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  155. package/fesm2022/provoly-dashboard-components-card.mjs +4 -5
  156. package/fesm2022/provoly-dashboard-components-card.mjs.map +1 -1
  157. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +4 -4
  158. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  159. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +6 -6
  160. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  161. package/fesm2022/provoly-dashboard-components-stepper.mjs +2 -3
  162. package/fesm2022/provoly-dashboard-components-stepper.mjs.map +1 -1
  163. package/fesm2022/provoly-dashboard-dataset.mjs +14 -14
  164. package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
  165. package/fesm2022/provoly-dashboard-filters-date.mjs +4 -5
  166. package/fesm2022/provoly-dashboard-filters-date.mjs.map +1 -1
  167. package/fesm2022/provoly-dashboard-filters-list.mjs +4 -5
  168. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  169. package/fesm2022/provoly-dashboard-filters-number.mjs +4 -5
  170. package/fesm2022/provoly-dashboard-filters-number.mjs.map +1 -1
  171. package/fesm2022/provoly-dashboard-filters-text.mjs +4 -5
  172. package/fesm2022/provoly-dashboard-filters-text.mjs.map +1 -1
  173. package/fesm2022/provoly-dashboard-notification.mjs +4 -4
  174. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  175. package/fesm2022/provoly-dashboard-pipeline.mjs +21 -21
  176. package/fesm2022/provoly-dashboard-pipeline.mjs.map +1 -1
  177. package/fesm2022/provoly-dashboard-presentation.mjs +14 -14
  178. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  179. package/fesm2022/provoly-dashboard-restitution.mjs +6 -6
  180. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  181. package/fesm2022/provoly-dashboard-search.mjs +38 -38
  182. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  183. package/fesm2022/provoly-dashboard-toolbox.mjs +29 -25
  184. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  185. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +2 -2
  186. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  187. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +3 -3
  188. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  189. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
  190. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  191. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +10 -10
  192. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  193. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs +11 -5
  194. package/fesm2022/provoly-dashboard-widgets-widget-detail.mjs.map +1 -1
  195. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +5 -5
  196. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  197. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs +8 -8
  198. package/fesm2022/provoly-dashboard-widgets-widget-iframe.mjs.map +1 -1
  199. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +9 -9
  200. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  201. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +6 -6
  202. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  203. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs +7 -7
  204. package/fesm2022/provoly-dashboard-widgets-widget-template.mjs.map +1 -1
  205. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +11 -11
  206. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  207. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +7 -7
  208. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  209. package/fesm2022/provoly-dashboard.mjs +245 -224
  210. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  211. package/lib/core/model/result-set.interface.d.ts +6 -0
  212. package/lib/core/model/search-mono-class.model.d.ts +9 -2
  213. package/lib/core/store/relation-types/relation-types.actions.d.ts +9 -0
  214. package/lib/core/store/relation-types/relation-types.effects.d.ts +5 -0
  215. package/lib/core/store/relation-types/relation-types.service.d.ts +1 -0
  216. package/lib/core/store/search/search.actions.d.ts +4 -0
  217. package/lib/core/store/search/search.effects.d.ts +1 -0
  218. package/lib/core/store/search/search.service.d.ts +2 -2
  219. package/lib/dashboard/store/dashboard.actions.d.ts +5 -0
  220. package/lib/dashboard/store/dashboard.effects.d.ts +2 -0
  221. package/package.json +37 -37
  222. package/search/search-fulltext/store/search-fulltext.effects.d.ts +1 -0
  223. package/search/search-mono-class/store/search-mono-class.effects.d.ts +1 -0
  224. package/search/search-mono-class/store/search-mono-class.service.d.ts +1 -1
  225. package/search/search-multi-class/store/search-multi-class.effects.d.ts +1 -0
  226. package/toolbox/shared/presentation-form/presentation-form.component.d.ts +1 -0
@@ -7,8 +7,8 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "@provoly/dashboard";
8
8
  import * as i2 from "@angular/cdk/overlay";
9
9
  import * as i3 from "@ngrx/store";
10
- import * as i4 from "@angular/common";
11
- import * as i5 from "../../style/css.component";
10
+ import * as i4 from "../../style/css.component";
11
+ import * as i5 from "@angular/common";
12
12
  export class PryNotificationComponent extends SubscriptionnerDirective {
13
13
  constructor(dialog, overlay, store) {
14
14
  super();
@@ -48,13 +48,13 @@ export class PryNotificationComponent extends SubscriptionnerDirective {
48
48
  }));
49
49
  }
50
50
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, deps: [{ token: i1.PryDialogService }, { token: i2.Overlay }, { token: i3.Store }], target: i0.ɵɵFactoryTarget.Component }); }
51
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
51
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryNotificationComponent, selector: "pry-notification", viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n", dependencies: [{ kind: "component", type: i1.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryNotificationCssComponent, selector: "pry-notification-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.LowerCasePipe, name: "lowercase" }, { kind: "pipe", type: i1.I18nPipe, name: "i18n" }] }); }
52
52
  }
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryNotificationComponent, decorators: [{
54
54
  type: Component,
55
- args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n<div\n class=\"m-notifications\"\n *ngIf=\"notifications$ | async as notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n>\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n <span *ngIf=\"notifications.length > 0\" class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n </button>\n</div>\n" }]
55
+ args: [{ selector: 'pry-notification', template: "<pry-notification-css></pry-notification-css>\n@if (notifications$ | async; as notifications) {\n <div\n class=\"m-notifications\"\n [class.has-unread]=\"notifications.length > 0\"\n >\n <button\n type=\"button\"\n class=\"a-btn a-btn--icon-only\"\n aria-controls=\"notifications_list\"\n [attr.aria-expanded]=\"isOpened\"\n aria-haspopup=\"true\"\n id=\"read_notifications\"\n #ref\n (click)=\"toggle()\"\n [title]=\"notifications.length <= 1 ? ('@pry.notif.notification' | i18n: {count : notifications.length} ) : ('@pry.notif.notifications' | i18n : {count : notifications.length})\"\n >\n <pry-icon iconSvg=\"notifications\"></pry-icon>\n @if (notifications.length > 0) {\n <span class=\"a-pastille -unread\"\n >{{ notifications.length }} <span class=\"u-visually-hidden\">{{ '@pry.notif.label' | i18n | lowercase }}</span>\n </span>\n }\n </button>\n </div>\n}\n" }]
56
56
  }], ctorParameters: () => [{ type: i1.PryDialogService }, { type: i2.Overlay }, { type: i3.Store }], propDecorators: { ref: [{
57
57
  type: ViewChild,
58
58
  args: ['ref']
59
59
  }] } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL25vdGlmaWNhdGlvbi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbm90aWZpY2F0aW9uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFtRCx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBTTNGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUFNcEUsWUFBb0IsTUFBd0IsRUFBVSxPQUFnQixFQUFZLEtBQWlCO1FBQ2pHLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUhuRyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBS3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQiwrQkFBK0IsRUFDL0I7WUFDRSxhQUFhLEVBQUUsSUFBSSxhQUFhLENBQUM7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsa0NBQWtDO2dCQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUMzQixRQUFRLEVBQUU7cUJBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDN0IsYUFBYSxDQUFDO29CQUNiO3dCQUNFLE9BQU8sRUFBRSxPQUFPO3dCQUNoQixPQUFPLEVBQUUsUUFBUTt3QkFDakIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRixDQUFDO2FBQ0wsQ0FBQztTQUNILEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQTdDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyS0NackMsNDRCQXVCQTs7MkZEWGEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjsrSEFJVixHQUFHO3NCQUFwQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nUmVmLCBQcnlEaWFsb2dTZXJ2aWNlLCBQcnlOb3RpZmljYXRpb24sIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ub3RpZmljYXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCB7IFByeU5vdGlmaWNhdGlvbkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvbm90aWZpY2F0aW9uLWNvbnRlbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LW5vdGlmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeU5vdGlmaWNhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBWaWV3Q2hpbGQoJ3JlZicpIHJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxQcnlOb3RpZmljYXRpb25bXT47XG4gIGlzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGRpYWxvZ1JlZj86IFByeURpYWxvZ1JlZjxQcnlOb3RpZmljYXRpb25Db250ZW50Q29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZSwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnNlbGVjdChOb3RpZmljYXRpb25TZWxlY3RvcnMubGlzdCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgUHJ5Tm90aWZpY2F0aW9uQ29udGVudENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgb3ZlcmxheUNvbmZpZzogbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnJlZilcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudD8uY2xvc2VkLnN1YnNjcmliZSgoaXNDbG9zZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQ2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxwcnktbm90aWZpY2F0aW9uLWNzcz48L3ByeS1ub3RpZmljYXRpb24tY3NzPlxuPGRpdlxuICBjbGFzcz1cIm0tbm90aWZpY2F0aW9uc1wiXG4gICpuZ0lmPVwibm90aWZpY2F0aW9ucyQgfCBhc3luYyBhcyBub3RpZmljYXRpb25zXCJcbiAgW2NsYXNzLmhhcy11bnJlYWRdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXCJcbj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLWljb24tb25seVwiXG4gICAgYXJpYS1jb250cm9scz1cIm5vdGlmaWNhdGlvbnNfbGlzdFwiXG4gICAgW2F0dHIuYXJpYS1leHBhbmRlZF09XCJpc09wZW5lZFwiXG4gICAgYXJpYS1oYXNwb3B1cD1cInRydWVcIlxuICAgIGlkPVwicmVhZF9ub3RpZmljYXRpb25zXCJcbiAgICAjcmVmXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBbdGl0bGVdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPD0gMSA/ICgnQHByeS5ub3RpZi5ub3RpZmljYXRpb24nIHwgaTE4bjoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9ICkgOiAoJ0Bwcnkubm90aWYubm90aWZpY2F0aW9ucycgfCBpMThuIDoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9KVwiXG4gID5cbiAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm5vdGlmaWNhdGlvbnNcIj48L3ByeS1pY29uPlxuICAgIDxzcGFuICpuZ0lmPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXCIgY2xhc3M9XCJhLXBhc3RpbGxlIC11bnJlYWRcIlxuICAgICAgPnt7IG5vdGlmaWNhdGlvbnMubGVuZ3RoIH19IDxzcGFuIGNsYXNzPVwidS12aXN1YWxseS1oaWRkZW5cIj57eyAnQHByeS5ub3RpZi5sYWJlbCcgfCBpMThuIHwgbG93ZXJjYXNlIH19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL25vdGlmaWNhdGlvbi9jb21wb25lbnRzL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJvdm9seS9kYXNoYm9hcmQvbm90aWZpY2F0aW9uL2NvbXBvbmVudHMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBYyxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFakUsT0FBTyxFQUFtRCx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRS9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDOzs7Ozs7O0FBTTNGLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFBd0I7SUFNcEUsWUFBb0IsTUFBd0IsRUFBVSxPQUFnQixFQUFZLEtBQWlCO1FBQ2pHLEtBQUssRUFBRSxDQUFDO1FBRFUsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVksVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUhuRyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBS3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUMvQiwrQkFBK0IsRUFDL0I7WUFDRSxhQUFhLEVBQUUsSUFBSSxhQUFhLENBQUM7Z0JBQy9CLFdBQVcsRUFBRSxJQUFJO2dCQUNqQixhQUFhLEVBQUUsa0NBQWtDO2dCQUNqRCxjQUFjLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3BELGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPO3FCQUMzQixRQUFRLEVBQUU7cUJBQ1YsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztxQkFDN0IsYUFBYSxDQUFDO29CQUNiO3dCQUNFLE9BQU8sRUFBRSxPQUFPO3dCQUNoQixPQUFPLEVBQUUsUUFBUTt3QkFDakIsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLFFBQVEsRUFBRSxLQUFLO3FCQUNoQjtpQkFDRixDQUFDO2FBQ0wsQ0FBQztTQUNILEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDeEIsQ0FBQyxDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZELElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzhHQTdDVSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwyS0NackMsODhCQTBCQTs7MkZEZGEsd0JBQXdCO2tCQUpwQyxTQUFTOytCQUNFLGtCQUFrQjsrSEFJVixHQUFHO3NCQUFwQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPdmVybGF5LCBPdmVybGF5Q29uZmlnIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgUHJ5RGlhbG9nUmVmLCBQcnlEaWFsb2dTZXJ2aWNlLCBQcnlOb3RpZmljYXRpb24sIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB9IGZyb20gJ0Bwcm92b2x5L2Rhc2hib2FyZCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9ub3RpZmljYXRpb24uc2VsZWN0b3JzJztcbmltcG9ydCB7IFByeU5vdGlmaWNhdGlvbkNvbnRlbnRDb21wb25lbnQgfSBmcm9tICcuL2NvbnRlbnQvbm90aWZpY2F0aW9uLWNvbnRlbnQuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncHJ5LW5vdGlmaWNhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9ub3RpZmljYXRpb24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFByeU5vdGlmaWNhdGlvbkNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSB7XG4gIEBWaWV3Q2hpbGQoJ3JlZicpIHJlZiE6IEVsZW1lbnRSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+O1xuICBub3RpZmljYXRpb25zJDogT2JzZXJ2YWJsZTxQcnlOb3RpZmljYXRpb25bXT47XG4gIGlzT3BlbmVkOiBib29sZWFuID0gZmFsc2U7XG4gIGRpYWxvZ1JlZj86IFByeURpYWxvZ1JlZjxQcnlOb3RpZmljYXRpb25Db250ZW50Q29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxvZzogUHJ5RGlhbG9nU2VydmljZSwgcHJpdmF0ZSBvdmVybGF5OiBPdmVybGF5LCBwcm90ZWN0ZWQgc3RvcmU6IFN0b3JlPGFueT4pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyQgPSB0aGlzLnN0b3JlLnNlbGVjdChOb3RpZmljYXRpb25TZWxlY3RvcnMubGlzdCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgdGhpcy5pc09wZW5lZCA9IHRydWU7XG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKFxuICAgICAgUHJ5Tm90aWZpY2F0aW9uQ29udGVudENvbXBvbmVudCxcbiAgICAgIHtcbiAgICAgICAgb3ZlcmxheUNvbmZpZzogbmV3IE92ZXJsYXlDb25maWcoe1xuICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLm5vb3AoKSxcbiAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLm92ZXJsYXlcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXG4gICAgICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLnJlZilcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3JpZ2luWTogJ2JvdHRvbScsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF0pXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLmlzT3BlbmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgdGhpcy5kaWFsb2dSZWY/LmNvbXBvbmVudD8uY2xvc2VkLnN1YnNjcmliZSgoaXNDbG9zZWQpID0+IHtcbiAgICAgICAgaWYgKGlzQ2xvc2VkKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5yZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiIsIjxwcnktbm90aWZpY2F0aW9uLWNzcz48L3ByeS1ub3RpZmljYXRpb24tY3NzPlxuQGlmIChub3RpZmljYXRpb25zJCB8IGFzeW5jOyBhcyBub3RpZmljYXRpb25zKSB7XG4gIDxkaXZcbiAgICBjbGFzcz1cIm0tbm90aWZpY2F0aW9uc1wiXG4gICAgW2NsYXNzLmhhcy11bnJlYWRdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPiAwXCJcbiAgICA+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1pY29uLW9ubHlcIlxuICAgICAgYXJpYS1jb250cm9scz1cIm5vdGlmaWNhdGlvbnNfbGlzdFwiXG4gICAgICBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzT3BlbmVkXCJcbiAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgIGlkPVwicmVhZF9ub3RpZmljYXRpb25zXCJcbiAgICAgICNyZWZcbiAgICAgIChjbGljayk9XCJ0b2dnbGUoKVwiXG4gICAgICBbdGl0bGVdPVwibm90aWZpY2F0aW9ucy5sZW5ndGggPD0gMSA/ICgnQHByeS5ub3RpZi5ub3RpZmljYXRpb24nIHwgaTE4bjoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9ICkgOiAoJ0Bwcnkubm90aWYubm90aWZpY2F0aW9ucycgfCBpMThuIDoge2NvdW50IDogbm90aWZpY2F0aW9ucy5sZW5ndGh9KVwiXG4gICAgICA+XG4gICAgICA8cHJ5LWljb24gaWNvblN2Zz1cIm5vdGlmaWNhdGlvbnNcIj48L3ByeS1pY29uPlxuICAgICAgQGlmIChub3RpZmljYXRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhLXBhc3RpbGxlIC11bnJlYWRcIlxuICAgICAgICAgID57eyBub3RpZmljYXRpb25zLmxlbmd0aCB9fSA8c3BhbiBjbGFzcz1cInUtdmlzdWFsbHktaGlkZGVuXCI+e3sgJ0Bwcnkubm90aWYubGFiZWwnIHwgaTE4biB8IGxvd2VyY2FzZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgfVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbn1cbiJdfQ==
@@ -7,10 +7,10 @@ import { PipelineActions } from '../../store/pipeline.actions';
7
7
  import { PipelineSelectors } from '../../store/pipeline.selectors';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@ngrx/store";
10
- import * as i2 from "@angular/common";
11
- import * as i3 from "@angular/forms";
12
- import * as i4 from "@provoly/dashboard";
13
- import * as i5 from "@angular/cdk/bidi";
10
+ import * as i2 from "@angular/forms";
11
+ import * as i3 from "@provoly/dashboard";
12
+ import * as i4 from "@angular/cdk/bidi";
13
+ import * as i5 from "@angular/common";
14
14
  export class PryPipelineDetailsComponent extends SubscriptionnerDirective {
15
15
  constructor(store) {
16
16
  super();
@@ -83,11 +83,11 @@ export class PryPipelineDetailsComponent extends SubscriptionnerDirective {
83
83
  };
84
84
  }
85
85
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPipelineDetailsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
86
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: { pipeline: "pipeline" }, outputs: { goToList: "goToList", goToConsult: "goToConsult", goToEditor: "goToEditor", executeConfirm: "executeConfirm" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n <div class=\"\" *ngIf=\"isSaved$ | async\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n <label\n for=\"title\"\n *ngIf=\"form.get('title')?.touched && form.get('title')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n <label for=\"title\" *ngIf=\"form.get('title')?.hasError('maxlength')\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n <label\n for=\"description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n <div *ngIf=\"pipeline.lastJobExecution\">\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.I18nPipe, name: "i18n" }, { kind: "pipe", type: i4.SinceDatePipe, name: "sinceDate" }] }); }
86
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPipelineDetailsComponent, selector: "pry-pipeline-details", inputs: { pipeline: "pipeline" }, outputs: { goToList: "goToList", goToConsult: "goToConsult", goToEditor: "goToEditor", executeConfirm: "executeConfirm" }, usesInheritance: true, ngImport: i0, template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n @if (isSaved$ | async) {\n <div class=\"\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n }\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n @if (form.get('title')?.touched && form.get('title')?.hasError('required')) {\n <label\n for=\"title\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n }\n @if (form.get('title')?.hasError('maxlength')) {\n <label for=\"title\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n }\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label\n for=\"description\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n @if (pipeline.lastJobExecution) {\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n }\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.PryToggleComponent, selector: "pry-toggle", inputs: ["alwaysActive", "disabled", "mode", "size", "dir", "leftword", "rightword"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.Dir, selector: "[dir]", inputs: ["dir"], outputs: ["dirChange"], exportAs: ["dir"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }, { kind: "pipe", type: i3.SinceDatePipe, name: "sinceDate" }] }); }
87
87
  }
88
88
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPipelineDetailsComponent, decorators: [{
89
89
  type: Component,
90
- args: [{ selector: 'pry-pipeline-details', template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n <div class=\"\" *ngIf=\"isSaved$ | async\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n <label\n for=\"title\"\n *ngIf=\"form.get('title')?.touched && form.get('title')?.hasError('required')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n <label for=\"title\" *ngIf=\"form.get('title')?.hasError('maxlength')\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n <label\n for=\"description\"\n *ngIf=\"form.get('description')?.hasError('maxlength')\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n <div *ngIf=\"pipeline.lastJobExecution\">\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n" }]
90
+ args: [{ selector: 'pry-pipeline-details', template: "<div class=\"o-pipeline-layout__toolbox\">\n <button\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n type=\"button\"\n [disabled]=\"!(isSaved$ | async) || !pipeline.active\"\n (click)=\"executeConfirm.emit()\"\n >\n {{ '@pry.pipeline.execute' | i18n }}\n </button>\n <button class=\"a-btn a-btn--secondary a-btn--icon-text\" type=\"button\" (click)=\"goToList.emit()\">\n {{ '@pry.pipeline.goBack' | i18n }}\n </button>\n @if (isSaved$ | async) {\n <div class=\"\">\n <pry-toggle [ngModel]=\"pipeline.active\" (ngModelChange)=\"toggleActivation()\" dir=\"ltr\" mode=\"action\">{{\n '@pry.pipeline.activated' | i18n\n }}</pry-toggle>\n </div>\n }\n</div>\n<div class=\"o-pipeline-layout__details\">\n <h2>{{ '@pry.pipeline.details.transformation' | i18n }} {{ pipeline.title }}</h2>\n <div class=\"row\">\n <form id=\"detailForm\" [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <label for=\"title\" class=\"a-label\">{{ '@pry.pipeline.details.title' | i18n }}</label>\n <input type=\"text\" id=\"title\" name=\"title\" class=\"a-form-field\" formControlName=\"title\" />\n @if (form.get('title')?.touched && form.get('title')?.hasError('required')) {\n <label\n for=\"title\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.required' | i18n }}\n </label>\n }\n @if (form.get('title')?.hasError('maxlength')) {\n <label for=\"title\" class=\"a-label a-label--help -error\">\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '30' } }}\n </label>\n }\n <label for=\"description\" class=\"a-label\">{{ '@pry.pipeline.details.description' | i18n }}</label>\n <textarea id=\"description\" name=\"description\" class=\"a-form-field\" formControlName=\"description\"></textarea>\n @if (form.get('description')?.hasError('maxlength')) {\n <label\n for=\"description\"\n class=\"a-label a-label--help -error\"\n >\n {{ '@pry.pipeline.details.maxLength' | i18n: { len: '200' } }}\n </label>\n }\n </form>\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.creation_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.creationDate | sinceDate }}</span>\n </h4>\n @if (pipeline.lastJobExecution) {\n <div>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.execution_status' | i18n }} :\n <span class=\"property-value\"> {{ '@pry.pipeline.status.' + pipeline.lastJobExecution.status | i18n }}</span>\n </h4>\n <h4 class=\"a-h4\">\n {{ '@pry.pipeline.details.last_execution_date' | i18n }} :\n <span class=\"property-value\"> {{ pipeline.lastJobExecution.executionDate | sinceDate }}</span>\n </h4>\n </div>\n }\n </div>\n </div>\n</div>\n<div class=\"o-pipeline-layout__toolbox\">\n <button\n type=\"submit\"\n form=\"detailForm\"\n [disabled]=\"form.invalid || (isSavingDisabled$ | async)\"\n class=\"a-btn a-btn--primary a-btn--icon-text\"\n >\n {{ '@pry.pipeline.save' | i18n }}\n </button>\n <button (click)=\"openEditor()\" [disabled]=\"form.invalid\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.editor' | i18n }}\n </button>\n</div>\n" }]
91
91
  }], ctorParameters: () => [{ type: i1.Store }], propDecorators: { pipeline: [{
92
92
  type: Input
93
93
  }], goToList: [{
@@ -99,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
99
99
  }], executeConfirm: [{
100
100
  type: Output
101
101
  }] } });
102
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWRldGFpbHMvcGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWRldGFpbHMvcGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBT25FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUFxQnZFLFlBQW9CLEtBQVk7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFEVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBcEJ2QixhQUFRLEdBQWU7WUFDOUIsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLEVBQUU7WUFDVCxLQUFLLEVBQUUsRUFBRTtZQUNULFdBQVcsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFO1lBQ3ZDLE9BQU8sRUFBRSxFQUFFO1lBQ1gsTUFBTSxFQUFFLEtBQUs7WUFDYixnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUM7UUFDUSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM5QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBUTVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxTQUFTLENBQUM7WUFDeEIsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzdFLFdBQVcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDaEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNoRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUMxQyxpQkFBaUIsQ0FDZixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQ3pCLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ3RGLENBQ0YsRUFDRCxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRSxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsV0FBVyxDQUFDO1FBQ3BHLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDcEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkUsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHO29CQUNkLEdBQUcsSUFBSSxDQUFDLFFBQVE7b0JBQ2hCLE1BQU0sRUFBRSxLQUFLO2lCQUNkLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQ2pCLGVBQWUsQ0FBQyxLQUFLLENBQUM7WUFDcEIsS0FBSyxFQUFFO2dCQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7Z0JBQzFCLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7Z0JBQ3RDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7Z0JBQzFCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUs7YUFDM0I7WUFDRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsR0FBRyxJQUFJLENBQUMsUUFBUTtZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSztZQUM1QixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVztTQUMzQixDQUFDO0lBQ2xCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsR0FBRyxJQUFJLENBQUMsUUFBUTtZQUNoQixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07U0FDOUIsQ0FBQztJQUNKLENBQUM7OEdBMUZVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLGdQQ2R4Qyxtc0dBMkVBOzsyRkQ3RGEsMkJBQTJCO2tCQUp2QyxTQUFTOytCQUNFLHNCQUFzQjswRUFJdkIsUUFBUTtzQkFBaEIsS0FBSztnQkFXSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFBpcGVsaW5lQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3BpcGVsaW5lLmFjdGlvbnMnO1xuaW1wb3J0IHsgUGlwZWxpbmVTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9waXBlbGluZS5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgUHJ5VHJhbnNmbyB9IGZyb20gJy4uL3BpcGVsaW5lLWVkaXRvci9waXBlbGluZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcGlwZWxpbmUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9waXBlbGluZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQaXBlbGluZURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwaXBlbGluZTogUHJ5VHJhbnNmbyA9IHtcbiAgICBpZDogdjQoKSxcbiAgICBsaW5rczogW10sXG4gICAgbm9kZXM6IFtdLFxuICAgIHRpdGxlOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLFxuICAgIHZlcnNpb246ICcnLFxuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgbGFzdEpvYkV4ZWN1dGlvbjogbnVsbFxuICB9O1xuICBAT3V0cHV0KCkgZ29Ub0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBnb1RvQ29uc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGdvVG9FZGl0b3IgPSBuZXcgRXZlbnRFbWl0dGVyPFByeVRyYW5zZm8+KCk7XG4gIEBPdXRwdXQoKSBleGVjdXRlQ29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcGlwZWxpbmUkITogT2JzZXJ2YWJsZTxQcnlUcmFuc2ZvIHwgdW5kZWZpbmVkPjtcbiAgaXNTYXZlZCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc1NhdmluZ0Rpc2FibGVkJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzApXSksXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IHRpdGxlOiB0aGlzLnBpcGVsaW5lLnRpdGxlLCBkZXNjcmlwdGlvbjogdGhpcy5waXBlbGluZS5kZXNjcmlwdGlvbiB9KTtcbiAgICB0aGlzLnBpcGVsaW5lJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLnRyYW5zZm8odGhpcy5waXBlbGluZS5pZCkpO1xuICAgIHRoaXMuaXNTYXZlZCQgPSB0aGlzLnBpcGVsaW5lJC5waXBlKG1hcCgocGlwZWxpbmUpID0+ICEhcGlwZWxpbmUpKTtcbiAgICB0aGlzLmlzU2F2aW5nRGlzYWJsZWQkID0gdGhpcy5waXBlbGluZSQucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKFxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHsgdGl0bGU6IHRoaXMuZm9ybS52YWx1ZS50aXRsZSwgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKChbcGlwZWxpbmUsIGZvcm1dKSA9PiB7XG4gICAgICAgIHJldHVybiAhIXBpcGVsaW5lICYmIGZvcm0udGl0bGUgPT09IHBpcGVsaW5lPy50aXRsZSAmJiBmb3JtLmRlc2NyaXB0aW9uID09PSBwaXBlbGluZT8uZGVzY3JpcHRpb247XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLmFjdGl2ZUVycm9yKS5zdWJzY3JpYmUoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5pZCA9PT0gdGhpcy5waXBlbGluZS5pZCkge1xuICAgICAgICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnBpcGVsaW5lLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zZXRGb3JtRGF0YUluUGlwZWxpbmUoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgUGlwZWxpbmVBY3Rpb25zLmNoZWNrKHtcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICBpZDogdGhpcy5waXBlbGluZS5pZCxcbiAgICAgICAgICB0aXRsZTogdGhpcy5waXBlbGluZS50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5waXBlbGluZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBsaW5rczogdGhpcy5waXBlbGluZS5saW5rcyxcbiAgICAgICAgICBub2RlczogdGhpcy5waXBlbGluZS5ub2Rlc1xuICAgICAgICB9LFxuICAgICAgICBmZXRjaDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0Rm9ybURhdGFJblBpcGVsaW5lKCkge1xuICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAuLi50aGlzLnBpcGVsaW5lLFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybS52YWx1ZS50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb25cbiAgICB9IGFzIFByeVRyYW5zZm87XG4gIH1cblxuICBvcGVuRWRpdG9yKCkge1xuICAgIHRoaXMuc2V0Rm9ybURhdGFJblBpcGVsaW5lKCk7XG4gICAgdGhpcy5nb1RvRWRpdG9yLmVtaXQodGhpcy5waXBlbGluZSk7XG4gIH1cblxuICB0b2dnbGVBY3RpdmF0aW9uKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUGlwZWxpbmVBY3Rpb25zLnRvZ2dsZUFjdGl2YXRpb24oeyB0cmFuc2ZvOiB0aGlzLnBpcGVsaW5lIH0pKTtcbiAgICB0aGlzLnBpcGVsaW5lID0ge1xuICAgICAgLi4udGhpcy5waXBlbGluZSxcbiAgICAgIGFjdGl2ZTogIXRoaXMucGlwZWxpbmUuYWN0aXZlXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmUtbGF5b3V0X190b29sYm94XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCIhKGlzU2F2ZWQkIHwgYXN5bmMpIHx8ICFwaXBlbGluZS5hY3RpdmVcIlxuICAgIChjbGljayk9XCJleGVjdXRlQ29uZmlybS5lbWl0KClcIlxuICA+XG4gICAge3sgJ0BwcnkucGlwZWxpbmUuZXhlY3V0ZScgfCBpMThuIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeSBhLWJ0bi0taWNvbi10ZXh0XCIgdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJnb1RvTGlzdC5lbWl0KClcIj5cbiAgICB7eyAnQHByeS5waXBlbGluZS5nb0JhY2snIHwgaTE4biB9fVxuICA8L2J1dHRvbj5cbiAgPGRpdiBjbGFzcz1cIlwiICpuZ0lmPVwiaXNTYXZlZCQgfCBhc3luY1wiPlxuICAgIDxwcnktdG9nZ2xlIFtuZ01vZGVsXT1cInBpcGVsaW5lLmFjdGl2ZVwiIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZUFjdGl2YXRpb24oKVwiIGRpcj1cImx0clwiIG1vZGU9XCJhY3Rpb25cIj57e1xuICAgICAgJ0BwcnkucGlwZWxpbmUuYWN0aXZhdGVkJyB8IGkxOG5cbiAgICB9fTwvcHJ5LXRvZ2dsZT5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWxheW91dF9fZGV0YWlsc1wiPlxuICA8aDI+e3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy50cmFuc2Zvcm1hdGlvbicgfCBpMThuIH19IHt7IHBpcGVsaW5lLnRpdGxlIH19PC9oMj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxmb3JtIGlkPVwiZGV0YWlsRm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJ0aXRsZVwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMudGl0bGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInRpdGxlXCIgbmFtZT1cInRpdGxlXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIC8+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwidGl0bGVcIlxuICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KCd0aXRsZScpPy50b3VjaGVkICYmIGZvcm0uZ2V0KCd0aXRsZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiXG4gICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICA+XG4gICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMucmVxdWlyZWQnIHwgaTE4biB9fVxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxsYWJlbCBmb3I9XCJ0aXRsZVwiICpuZ0lmPVwiZm9ybS5nZXQoJ3RpdGxlJyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiPlxuICAgICAgICB7eyAnQHByeS5waXBlbGluZS5kZXRhaWxzLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzMwJyB9IH19XG4gICAgICA8L2xhYmVsPlxuICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5kZXNjcmlwdGlvbicgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBpZD1cImRlc2NyaXB0aW9uXCIgbmFtZT1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XG4gICAgICA8bGFiZWxcbiAgICAgICAgZm9yPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAqbmdJZj1cImZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy5oYXNFcnJvcignbWF4bGVuZ3RoJylcIlxuICAgICAgICBjbGFzcz1cImEtbGFiZWwgYS1sYWJlbC0taGVscCAtZXJyb3JcIlxuICAgICAgPlxuICAgICAgICB7eyAnQHByeS5waXBlbGluZS5kZXRhaWxzLm1heExlbmd0aCcgfCBpMThuOiB7IGxlbjogJzIwMCcgfSB9fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Zvcm0+XG4gICAgPGRpdj5cbiAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj5cbiAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5jcmVhdGlvbl9kYXRlJyB8IGkxOG4gfX0gOlxuICAgICAgICA8c3BhbiBjbGFzcz1cInByb3BlcnR5LXZhbHVlXCI+IHt7IHBpcGVsaW5lLmNyZWF0aW9uRGF0ZSB8IHNpbmNlRGF0ZSB9fTwvc3Bhbj5cbiAgICAgIDwvaDQ+XG4gICAgICA8ZGl2ICpuZ0lmPVwicGlwZWxpbmUubGFzdEpvYkV4ZWN1dGlvblwiPlxuICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+XG4gICAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5leGVjdXRpb25fc3RhdHVzJyB8IGkxOG4gfX0gOlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvcGVydHktdmFsdWVcIj4ge3sgJ0BwcnkucGlwZWxpbmUuc3RhdHVzLicgKyBwaXBlbGluZS5sYXN0Sm9iRXhlY3V0aW9uLnN0YXR1cyB8IGkxOG4gfX08L3NwYW4+XG4gICAgICAgIDwvaDQ+XG4gICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj5cbiAgICAgICAgICB7eyAnQHByeS5waXBlbGluZS5kZXRhaWxzLmxhc3RfZXhlY3V0aW9uX2RhdGUnIHwgaTE4biB9fSA6XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9wZXJ0eS12YWx1ZVwiPiB7eyBwaXBlbGluZS5sYXN0Sm9iRXhlY3V0aW9uLmV4ZWN1dGlvbkRhdGUgfCBzaW5jZURhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvaDQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWxheW91dF9fdG9vbGJveFwiPlxuICA8YnV0dG9uXG4gICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgZm9ybT1cImRldGFpbEZvcm1cIlxuICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgKGlzU2F2aW5nRGlzYWJsZWQkIHwgYXN5bmMpXCJcbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHRcIlxuICA+XG4gICAge3sgJ0BwcnkucGlwZWxpbmUuc2F2ZScgfCBpMThuIH19XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIChjbGljayk9XCJvcGVuRWRpdG9yKClcIiBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAge3sgJ0BwcnkucGlwZWxpbmUuZWRpdG9yJyB8IGkxOG4gfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWRldGFpbHMvcGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWRldGFpbHMvcGlwZWxpbmUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDMUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7O0FBT25FLE1BQU0sT0FBTywyQkFBNEIsU0FBUSx3QkFBd0I7SUFxQnZFLFlBQW9CLEtBQVk7UUFDOUIsS0FBSyxFQUFFLENBQUM7UUFEVSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBcEJ2QixhQUFRLEdBQWU7WUFDOUIsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxFQUFFO1lBQ1QsS0FBSyxFQUFFLEVBQUU7WUFD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QUFzQjswRUFJdkIsUUFBUTtzQkFBaEIsS0FBSztnQkFXSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3RXaXRoLCBtYXAsIE9ic2VydmFibGUsIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFBpcGVsaW5lQWN0aW9ucyB9IGZyb20gJy4uLy4uL3N0b3JlL3BpcGVsaW5lLmFjdGlvbnMnO1xuaW1wb3J0IHsgUGlwZWxpbmVTZWxlY3RvcnMgfSBmcm9tICcuLi8uLi9zdG9yZS9waXBlbGluZS5zZWxlY3RvcnMnO1xuaW1wb3J0IHsgUHJ5VHJhbnNmbyB9IGZyb20gJy4uL3BpcGVsaW5lLWVkaXRvci9waXBlbGluZS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwcnktcGlwZWxpbmUtZGV0YWlscycsXG4gIHRlbXBsYXRlVXJsOiAnLi9waXBlbGluZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQaXBlbGluZURldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBTdWJzY3JpcHRpb25uZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwaXBlbGluZTogUHJ5VHJhbnNmbyA9IHtcbiAgICBpZDogdjQoKSxcbiAgICBsaW5rczogW10sXG4gICAgbm9kZXM6IFtdLFxuICAgIHRpdGxlOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgY3JlYXRpb25EYXRlOiBuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpLFxuICAgIHZlcnNpb246ICcnLFxuICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgbGFzdEpvYkV4ZWN1dGlvbjogbnVsbFxuICB9O1xuICBAT3V0cHV0KCkgZ29Ub0xpc3QgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBnb1RvQ29uc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGdvVG9FZGl0b3IgPSBuZXcgRXZlbnRFbWl0dGVyPFByeVRyYW5zZm8+KCk7XG4gIEBPdXRwdXQoKSBleGVjdXRlQ29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcGlwZWxpbmUkITogT2JzZXJ2YWJsZTxQcnlUcmFuc2ZvIHwgdW5kZWZpbmVkPjtcbiAgaXNTYXZlZCQhOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc1NhdmluZ0Rpc2FibGVkJCE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGZvcm0hOiBGb3JtR3JvdXA7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgdGl0bGU6IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMzApXSksXG4gICAgICBkZXNjcmlwdGlvbjogbmV3IEZvcm1Db250cm9sKG51bGwsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSlcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS5zZXRWYWx1ZSh7IHRpdGxlOiB0aGlzLnBpcGVsaW5lLnRpdGxlLCBkZXNjcmlwdGlvbjogdGhpcy5waXBlbGluZS5kZXNjcmlwdGlvbiB9KTtcbiAgICB0aGlzLnBpcGVsaW5lJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLnRyYW5zZm8odGhpcy5waXBlbGluZS5pZCkpO1xuICAgIHRoaXMuaXNTYXZlZCQgPSB0aGlzLnBpcGVsaW5lJC5waXBlKG1hcCgocGlwZWxpbmUpID0+ICEhcGlwZWxpbmUpKTtcbiAgICB0aGlzLmlzU2F2aW5nRGlzYWJsZWQkID0gdGhpcy5waXBlbGluZSQucGlwZShcbiAgICAgIGNvbWJpbmVMYXRlc3RXaXRoKFxuICAgICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgc3RhcnRXaXRoKHsgdGl0bGU6IHRoaXMuZm9ybS52YWx1ZS50aXRsZSwgZGVzY3JpcHRpb246IHRoaXMuZm9ybS52YWx1ZS5kZXNjcmlwdGlvbiB9KVxuICAgICAgICApXG4gICAgICApLFxuICAgICAgbWFwKChbcGlwZWxpbmUsIGZvcm1dKSA9PiB7XG4gICAgICAgIHJldHVybiAhIXBpcGVsaW5lICYmIGZvcm0udGl0bGUgPT09IHBpcGVsaW5lPy50aXRsZSAmJiBmb3JtLmRlc2NyaXB0aW9uID09PSBwaXBlbGluZT8uZGVzY3JpcHRpb247XG4gICAgICB9KVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLmFjdGl2ZUVycm9yKS5zdWJzY3JpYmUoKGVycm9yKSA9PiB7XG4gICAgICAgIGlmIChlcnJvciAmJiBlcnJvci5pZCA9PT0gdGhpcy5waXBlbGluZS5pZCkge1xuICAgICAgICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAgICAgICAuLi50aGlzLnBpcGVsaW5lLFxuICAgICAgICAgICAgYWN0aXZlOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHNhdmUoKSB7XG4gICAgdGhpcy5zZXRGb3JtRGF0YUluUGlwZWxpbmUoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFxuICAgICAgUGlwZWxpbmVBY3Rpb25zLmNoZWNrKHtcbiAgICAgICAgZ3JhcGg6IHtcbiAgICAgICAgICBpZDogdGhpcy5waXBlbGluZS5pZCxcbiAgICAgICAgICB0aXRsZTogdGhpcy5waXBlbGluZS50aXRsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdGhpcy5waXBlbGluZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICBsaW5rczogdGhpcy5waXBlbGluZS5saW5rcyxcbiAgICAgICAgICBub2RlczogdGhpcy5waXBlbGluZS5ub2Rlc1xuICAgICAgICB9LFxuICAgICAgICBmZXRjaDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgc2V0Rm9ybURhdGFJblBpcGVsaW5lKCkge1xuICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAuLi50aGlzLnBpcGVsaW5lLFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybS52YWx1ZS50aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmZvcm0udmFsdWUuZGVzY3JpcHRpb25cbiAgICB9IGFzIFByeVRyYW5zZm87XG4gIH1cblxuICBvcGVuRWRpdG9yKCkge1xuICAgIHRoaXMuc2V0Rm9ybURhdGFJblBpcGVsaW5lKCk7XG4gICAgdGhpcy5nb1RvRWRpdG9yLmVtaXQodGhpcy5waXBlbGluZSk7XG4gIH1cblxuICB0b2dnbGVBY3RpdmF0aW9uKCkge1xuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goUGlwZWxpbmVBY3Rpb25zLnRvZ2dsZUFjdGl2YXRpb24oeyB0cmFuc2ZvOiB0aGlzLnBpcGVsaW5lIH0pKTtcbiAgICB0aGlzLnBpcGVsaW5lID0ge1xuICAgICAgLi4udGhpcy5waXBlbGluZSxcbiAgICAgIGFjdGl2ZTogIXRoaXMucGlwZWxpbmUuYWN0aXZlXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmUtbGF5b3V0X190b29sYm94XCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImEtYnRuIGEtYnRuLS1wcmltYXJ5IGEtYnRuLS1pY29uLXRleHRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIFtkaXNhYmxlZF09XCIhKGlzU2F2ZWQkIHwgYXN5bmMpIHx8ICFwaXBlbGluZS5hY3RpdmVcIlxuICAgIChjbGljayk9XCJleGVjdXRlQ29uZmlybS5lbWl0KClcIlxuICAgID5cbiAgICB7eyAnQHByeS5waXBlbGluZS5leGVjdXRlJyB8IGkxOG4gfX1cbiAgPC9idXR0b24+XG4gIDxidXR0b24gY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5IGEtYnRuLS1pY29uLXRleHRcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvVG9MaXN0LmVtaXQoKVwiPlxuICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmdvQmFjaycgfCBpMThuIH19XG4gIDwvYnV0dG9uPlxuICBAaWYgKGlzU2F2ZWQkIHwgYXN5bmMpIHtcbiAgICA8ZGl2IGNsYXNzPVwiXCI+XG4gICAgICA8cHJ5LXRvZ2dsZSBbbmdNb2RlbF09XCJwaXBlbGluZS5hY3RpdmVcIiAobmdNb2RlbENoYW5nZSk9XCJ0b2dnbGVBY3RpdmF0aW9uKClcIiBkaXI9XCJsdHJcIiBtb2RlPVwiYWN0aW9uXCI+e3tcbiAgICAgICAgJ0BwcnkucGlwZWxpbmUuYWN0aXZhdGVkJyB8IGkxOG5cbiAgICAgIH19PC9wcnktdG9nZ2xlPlxuICAgIDwvZGl2PlxuICB9XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWxheW91dF9fZGV0YWlsc1wiPlxuICA8aDI+e3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy50cmFuc2Zvcm1hdGlvbicgfCBpMThuIH19IHt7IHBpcGVsaW5lLnRpdGxlIH19PC9oMj5cbiAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgIDxmb3JtIGlkPVwiZGV0YWlsRm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlKClcIj5cbiAgICAgIDxsYWJlbCBmb3I9XCJ0aXRsZVwiIGNsYXNzPVwiYS1sYWJlbFwiPnt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMudGl0bGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBpZD1cInRpdGxlXCIgbmFtZT1cInRpdGxlXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIC8+XG4gICAgICBAaWYgKGZvcm0uZ2V0KCd0aXRsZScpPy50b3VjaGVkICYmIGZvcm0uZ2V0KCd0aXRsZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgICA8bGFiZWxcbiAgICAgICAgICBmb3I9XCJ0aXRsZVwiXG4gICAgICAgICAgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCJcbiAgICAgICAgICA+XG4gICAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5yZXF1aXJlZCcgfCBpMThuIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgICBAaWYgKGZvcm0uZ2V0KCd0aXRsZScpPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgPGxhYmVsIGZvcj1cInRpdGxlXCIgY2xhc3M9XCJhLWxhYmVsIGEtbGFiZWwtLWhlbHAgLWVycm9yXCI+XG4gICAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5tYXhMZW5ndGgnIHwgaTE4bjogeyBsZW46ICczMCcgfSB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgfVxuICAgICAgPGxhYmVsIGZvcj1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWxhYmVsXCI+e3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5kZXNjcmlwdGlvbicgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgIDx0ZXh0YXJlYSBpZD1cImRlc2NyaXB0aW9uXCIgbmFtZT1cImRlc2NyaXB0aW9uXCIgY2xhc3M9XCJhLWZvcm0tZmllbGRcIiBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiPjwvdGV4dGFyZWE+XG4gICAgICBAaWYgKGZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgPGxhYmVsXG4gICAgICAgICAgZm9yPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIGNsYXNzPVwiYS1sYWJlbCBhLWxhYmVsLS1oZWxwIC1lcnJvclwiXG4gICAgICAgICAgPlxuICAgICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMubWF4TGVuZ3RoJyB8IGkxOG46IHsgbGVuOiAnMjAwJyB9IH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICB9XG4gICAgPC9mb3JtPlxuICAgIDxkaXY+XG4gICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+XG4gICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMuY3JlYXRpb25fZGF0ZScgfCBpMThuIH19IDpcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9wZXJ0eS12YWx1ZVwiPiB7eyBwaXBlbGluZS5jcmVhdGlvbkRhdGUgfCBzaW5jZURhdGUgfX08L3NwYW4+XG4gICAgICA8L2g0PlxuICAgICAgQGlmIChwaXBlbGluZS5sYXN0Sm9iRXhlY3V0aW9uKSB7XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPlxuICAgICAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuZGV0YWlscy5leGVjdXRpb25fc3RhdHVzJyB8IGkxOG4gfX0gOlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcm9wZXJ0eS12YWx1ZVwiPiB7eyAnQHByeS5waXBlbGluZS5zdGF0dXMuJyArIHBpcGVsaW5lLmxhc3RKb2JFeGVjdXRpb24uc3RhdHVzIHwgaTE4biB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2g0PlxuICAgICAgICAgIDxoNCBjbGFzcz1cImEtaDRcIj5cbiAgICAgICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmRldGFpbHMubGFzdF9leGVjdXRpb25fZGF0ZScgfCBpMThuIH19IDpcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJvcGVydHktdmFsdWVcIj4ge3sgcGlwZWxpbmUubGFzdEpvYkV4ZWN1dGlvbi5leGVjdXRpb25EYXRlIHwgc2luY2VEYXRlIH19PC9zcGFuPlxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmUtbGF5b3V0X190b29sYm94XCI+XG4gIDxidXR0b25cbiAgICB0eXBlPVwic3VibWl0XCJcbiAgICBmb3JtPVwiZGV0YWlsRm9ybVwiXG4gICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCAoaXNTYXZpbmdEaXNhYmxlZCQgfCBhc3luYylcIlxuICAgIGNsYXNzPVwiYS1idG4gYS1idG4tLXByaW1hcnkgYS1idG4tLWljb24tdGV4dFwiXG4gICAgPlxuICAgIHt7ICdAcHJ5LnBpcGVsaW5lLnNhdmUnIHwgaTE4biB9fVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwib3BlbkVkaXRvcigpXCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmVkaXRvcicgfCBpMThuIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -7,7 +7,7 @@ export class GraphSerializerUtils {
7
7
  nodes: []
8
8
  };
9
9
  if (!!lgraph) {
10
- const baseLiteGraph = JSON.parse(JSON.stringify(lgraph.serialize()));
10
+ const baseLiteGraph = structuredClone(lgraph.serialize());
11
11
  const translated = GraphSerializerUtils.translateFromSerializedLGraphToPryModel(baseLiteGraph);
12
12
  output.nodes = translated.nodes;
13
13
  output.links = translated.links;
@@ -98,4 +98,4 @@ export class GraphSerializerUtils {
98
98
  return node_const;
99
99
  }
100
100
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtc2VyaWFsaXplci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3BpcGVsaW5lL2NvbXBvbmVudHMvcGlwZWxpbmUtZWRpdG9yL2dyYXBoLXNlcmlhbGl6ZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0QsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWMsRUFBRSxFQUFXO1FBQzFDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFO1NBQ2UsQ0FBQztRQUUzQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNiLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLHVDQUF1QyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQy9GLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUNoQyxNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsdUNBQXVDLENBQUMsS0FBVTtRQUN2RCxPQUFPO1lBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7Z0JBQ25DLE1BQU0sTUFBTSxHQUFHO29CQUNiLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElB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QVksQ0FBQyxZQUFZLENBQ3ZCLGNBQWMsQ0FBQyxRQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDdEYsQ0FBQztnQkFDSixDQUFDO2dCQUVELG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDLFFBQVMsRUFBRSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN2RixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExHcmFwaCwgTEdyYXBoTm9kZSwgTGl0ZUdyYXBoIH0gZnJvbSAnbGl0ZWdyYXBoLmpzJztcbmltcG9ydCB7IFByeVNlcmlhbGl6ZWROb2RlLCBQcnlTZXJpYWxpemVkUGlwZWxpbmUgfSBmcm9tICcuL3BpcGVsaW5lLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBHcmFwaFNlcmlhbGl6ZXJVdGlscyB7XG4gIHN0YXRpYyBzZXJpYWxpemUobGdyYXBoOiBMR3JhcGgsIGlkPzogc3RyaW5nKTogUHJ5U2VyaWFsaXplZFBpcGVsaW5lIHtcbiAgICBjb25zdCBvdXRwdXQgPSB7XG4gICAgICBpZDogaWQsXG4gICAgICBsaW5rczogW10sXG4gICAgICBub2RlczogW11cbiAgICB9IGFzIFByeVNlcmlhbGl6ZWRQaXBlbGluZTtcblxuICAgIGlmICghIWxncmFwaCkge1xuICAgICAgY29uc3QgYmFzZUxpdGVHcmFwaCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobGdyYXBoLnNlcmlhbGl6ZSgpKSk7XG4gICAgICBjb25zdCB0cmFuc2xhdGVkID0gR3JhcGhTZXJpYWxpemVyVXRpbHMudHJhbnNsYXRlRnJvbVNlcmlhbGl6ZWRMR3JhcGhUb1ByeU1vZGVsKGJhc2VMaXRlR3JhcGgpO1xuICAgICAgb3V0cHV0Lm5vZGVzID0gdHJhbnNsYXRlZC5ub2RlcztcbiAgICAgIG91dHB1dC5saW5rcyA9IHRyYW5zbGF0ZWQubGlua3M7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG4gIH1cblxuICBzdGF0aWMgdHJhbnNsYXRlRnJvbVNlcmlhbGl6ZWRMR3JhcGhUb1ByeU1vZGVsKGdyYXBoOiBhbnkpOiBQcnlTZXJpYWxpemVkUGlwZWxpbmUge1xuICAgIHJldHVybiB7XG4gICAgICBub2RlczogZ3JhcGgubm9kZXMubWFwKChub2RlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0ge1xuICAgICAgICAgIGlkOiBub2RlLnByb3BlcnRpZXNbJ2lkJ10sXG4gICAgICAgICAgdHlwZTogbm9kZS50eXBlLFxuICAgICAgICAgIHRpdGxlOiBub2RlLnRpdGxlID8/IG5vZGUudHlwZSxcbiAgICAgICAgICBzcGVjOiB7XG4gICAgICAgICAgICAuLi5ub2RlLnByb3BlcnRpZXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGd1aToge1xuICAgICAgICAgICAgcG9zOiBbbm9kZS5wb3NbMF0sIG5vZGUucG9zWzFdXSxcbiAgICAgICAgICAgIHNpemU6IFtub2RlLnNpemVbMF0sIG5vZGUuc2l6ZVsxXV1cbiAgICAgICAgICB9XG4gICAgICAgIH0gYXMgUHJ5U2VyaWFsaXplZE5vZGU7XG5cbiAgICAgICAgZGVsZXRlIG91dHB1dC5zcGVjWydzdWJncmFwaCddO1xuICAgICAgICBkZWxldGUgb3V0cHV0LnNwZWNbJ2lkJ107XG4gICAgICAgIGRlbGV0ZSBvdXRwdXQuc3BlY1sndHlwZSddO1xuICAgICAgICBkZWxldGUgb3V0cHV0LnNwZWNbJ19sYWJlbCddO1xuXG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdTdWJHcmFwaE5vZGUnKSB7XG4gICAgICAgICAgb3V0cHV0LnN1YmdyYXBoID0gR3JhcGhTZXJpYWxpemVyVXRpbHMudHJhbnNsYXRlRnJvbVNlcmlhbGl6ZWRMR3JhcGhUb1ByeU1vZGVsKG5vZGUucHJvcGVydGllc1snc3ViZ3JhcGgnXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgICAgfSksXG4gICAgICBsaW5rczogZ3JhcGgubGlua3MubWFwKChsaW5rQXJyYXk6IGFueVtdKSA9PiAoe1xuICAgICAgICBzdGFydDoge1xuICAgICAgICAgIGlkOiBncmFwaC5ub2Rlcy5maW5kKChub2RlOiBMR3JhcGhOb2RlKSA9PiBub2RlLmlkID09PSBsaW5rQXJyYXlbMV0pLnByb3BlcnRpZXNbJ2lkJ10sXG4gICAgICAgICAgc2xvdDogbGlua0FycmF5WzJdXG4gICAgICAgIH0sXG4gICAgICAgIGVuZDoge1xuICAgICAgICAgIGlkOiBncmFwaC5ub2Rlcy5maW5kKChub2RlOiBMR3JhcGhOb2RlKSA9PiBub2RlLmlkID09PSBsaW5rQXJyYXlbM10pLnByb3BlcnRpZXNbJ2lkJ10sXG4gICAgICAgICAgc2xvdDogbGlua0FycmF5WzRdXG4gICAgICAgIH1cbiAgICAgIH0pKVxuICAgIH07XG4gIH1cblxuICBzdGF0aWMgaHlkcmF0ZShzZXJpYWxpemVkR3JhcGg6IFByeVNlcmlhbGl6ZWRQaXBlbGluZSwgbGdyYXBoOiBMR3JhcGgpIHtcbiAgICBjb25zdCBoeWRyYXRlZE5vZGVzID0gc2VyaWFsaXplZEdyYXBoLm5vZGVzXG4gICAgICAubWFwKChub2RlKSA9PiBHcmFwaFNlcmlhbGl6ZXJVdGlscy5jcmVhdGVOb2RlKG5vZGUpKVxuICAgICAgLmZpbHRlcigobm9kZSkgPT4gISFub2RlKTtcbiAgICBoeWRyYXRlZE5vZGVzLmZvckVhY2goKG5vZGUpID0+IGxncmFwaC5hZGQobm9kZSkpO1xuXG4gICAgc2VyaWFsaXplZEdyYXBoLmxpbmtzLmZvckVhY2goKGxpbmspID0+IHtcbiAgICAgIGNvbnN0IHN0YXJ0Tm9kZSA9IGh5ZHJhdGVkTm9kZXMuZmluZCgoaE5vZGUpID0+IGxpbmsuc3RhcnQuaWQgPT09IGhOb2RlLnByb3BlcnRpZXNbJ2lkJ10pO1xuICAgICAgY29uc3QgZW5kTm9kZSA9IGh5ZHJhdGVkTm9kZXMuZmluZCgoaE5vZGUpID0+IGxpbmsuZW5kLmlkID09PSBoTm9kZS5wcm9wZXJ0aWVzWydpZCddKTtcbiAgICAgIGlmIChzdGFydE5vZGUgJiYgZW5kTm9kZSkge1xuICAgICAgICBzdGFydE5vZGUuY29ubmVjdChsaW5rLnN0YXJ0LnNsb3QsIGVuZE5vZGUsIGxpbmsuZW5kLnNsb3QpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCFzdGFydE5vZGUpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGBNaXNzaW5nIG5vZGUgaWQgJHtsaW5rLnN0YXJ0LmlkfSBmb3IgbGluayBoeWRyYXRhdGlvbmApO1xuICAgICAgICB9XG4gICAgICAgIGlmICghZW5kTm9kZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE1pc3Npbmcgbm9kZSBpZCAke2xpbmsuZW5kLmlkfSBmb3IgbGluayBoeWRyYXRhdGlvbmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlTm9kZShzZXJpYWxpemVkTm9kZTogUHJ5U2VyaWFsaXplZE5vZGUpOiBMR3JhcGhOb2RlIHtcbiAgICBjb25zdCBub2RlX2NvbnN0ID0gTGl0ZUdyYXBoLmNyZWF0ZU5vZGUoc2VyaWFsaXplZE5vZGUudHlwZSwgc2VyaWFsaXplZE5vZGUudGl0bGUsIHt9KTtcbiAgICBpZiAoIW5vZGVfY29uc3QpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYE5vZGUgd2l0aCB0eXBlICR7c2VyaWFsaXplZE5vZGUudHlwZX0gY291bGQgbm90IGhhdmUgYmVlbiBjcmVhdGVkIChpZCAke3NlcmlhbGl6ZWROb2RlLmlkfSkuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGVfY29uc3QudGl0bGUgPSBzZXJpYWxpemVkTm9kZS50aXRsZTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgaSsrKSB7XG4gICAgICAgIG5vZGVfY29uc3QucG9zW2ldID0gc2VyaWFsaXplZE5vZGUuZ3VpLnBvc1tpXTtcbiAgICAgICAgbm9kZV9jb25zdC5zaXplW2ldID0gc2VyaWFsaXplZE5vZGUuZ3VpLnNpemVbaV07XG4gICAgICB9XG4gICAgICBPYmplY3Qua2V5cyhzZXJpYWxpemVkTm9kZS5zcGVjKS5mb3JFYWNoKChrZXkpID0+IChub2RlX2NvbnN0LnByb3BlcnRpZXNba2V5XSA9IHNlcmlhbGl6ZWROb2RlLnNwZWNba2V5XSkpO1xuICAgICAgbm9kZV9jb25zdC5wcm9wZXJ0aWVzWydpZCddID0gc2VyaWFsaXplZE5vZGUuaWQ7XG5cbiAgICAgIGlmIChzZXJpYWxpemVkTm9kZS50eXBlID09PSAnU3ViR3JhcGhOb2RlJykge1xuICAgICAgICBjb25zdCBzdWJHcmFwaE5vZGUgPSBub2RlX2NvbnN0IGFzIGFueTsgLy8gdHlwZSBpcyBTdWJHUmFwaE5vZGUsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIGludHJvZHVjZSBhIGRlcGVuZGVuY3kgdG8gb3B0aW9uYWwgbW9kdWxlIFN1YmdyYXBoXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJHcmFwaE5vZGUucHJvcGVydGllc1snaW5wdXRzJ107IGkrKykge1xuICAgICAgICAgIHN1YkdyYXBoTm9kZS5jcmVhdGVJbnB1dChcbiAgICAgICAgICAgIHNlcmlhbGl6ZWROb2RlLnN1YmdyYXBoIS5ub2Rlcy5maWx0ZXIoKG5vZGUpID0+IG5vZGUudHlwZSA9PT0gJ1N1YkdyYXBoSW5wdXQnKVtpXS5pZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdWJHcmFwaE5vZGUucHJvcGVydGllc1snb3V0cHV0cyddOyBpKyspIHtcbiAgICAgICAgICBzdWJHcmFwaE5vZGUuY3JlYXRlT3V0cHV0KFxuICAgICAgICAgICAgc2VyaWFsaXplZE5vZGUuc3ViZ3JhcGghLm5vZGVzLmZpbHRlcigobm9kZSkgPT4gbm9kZS50eXBlID09PSAnU3ViR3JhcGhPdXRwdXQnKVtpXS5pZFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBHcmFwaFNlcmlhbGl6ZXJVdGlscy5oeWRyYXRlKHsgLi4uc2VyaWFsaXplZE5vZGUuc3ViZ3JhcGghIH0sIHN1YkdyYXBoTm9kZS5zdWJHcmFwaCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlX2NvbnN0O1xuICB9XG59XG4iXX0=
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtc2VyaWFsaXplci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3BpcGVsaW5lL2NvbXBvbmVudHMvcGlwZWxpbmUtZWRpdG9yL2dyYXBoLXNlcmlhbGl6ZXIudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFHN0QsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQWMsRUFBRSxFQUFXO1FBQzFDLE1BQU0sTUFBTSxHQUFHO1lBQ2IsRUFBRSxFQUFFLEVBQUU7WUFDTixLQUFLLEVBQUUsRUFBRTtZQUNULEtBQUssRUFBRSxFQUFFO1NBQ2UsQ0FBQztRQUUzQixJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNiLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztZQUMxRCxNQUFNLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyx1Q0FBdUMsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMvRixNQUFNLENBQUMsS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFDaEMsTUFBTSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLHVDQUF1QyxDQUFDLEtBQVU7UUFDdkQsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNuQyxNQUFNLE1BQU0sR0FBRztvQkFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMs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QUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3RGLENBQUM7Z0JBQ0osQ0FBQztnQkFFRCxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQyxRQUFTLEVBQUUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMR3JhcGgsIExHcmFwaE5vZGUsIExpdGVHcmFwaCB9IGZyb20gJ2xpdGVncmFwaC5qcyc7XG5pbXBvcnQgeyBQcnlTZXJpYWxpemVkTm9kZSwgUHJ5U2VyaWFsaXplZFBpcGVsaW5lIH0gZnJvbSAnLi9waXBlbGluZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgR3JhcGhTZXJpYWxpemVyVXRpbHMge1xuICBzdGF0aWMgc2VyaWFsaXplKGxncmFwaDogTEdyYXBoLCBpZD86IHN0cmluZyk6IFByeVNlcmlhbGl6ZWRQaXBlbGluZSB7XG4gICAgY29uc3Qgb3V0cHV0ID0ge1xuICAgICAgaWQ6IGlkLFxuICAgICAgbGlua3M6IFtdLFxuICAgICAgbm9kZXM6IFtdXG4gICAgfSBhcyBQcnlTZXJpYWxpemVkUGlwZWxpbmU7XG5cbiAgICBpZiAoISFsZ3JhcGgpIHtcbiAgICAgIGNvbnN0IGJhc2VMaXRlR3JhcGggPSBzdHJ1Y3R1cmVkQ2xvbmUobGdyYXBoLnNlcmlhbGl6ZSgpKTtcbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWQgPSBHcmFwaFNlcmlhbGl6ZXJVdGlscy50cmFuc2xhdGVGcm9tU2VyaWFsaXplZExHcmFwaFRvUHJ5TW9kZWwoYmFzZUxpdGVHcmFwaCk7XG4gICAgICBvdXRwdXQubm9kZXMgPSB0cmFuc2xhdGVkLm5vZGVzO1xuICAgICAgb3V0cHV0LmxpbmtzID0gdHJhbnNsYXRlZC5saW5rcztcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfVxuXG4gIHN0YXRpYyB0cmFuc2xhdGVGcm9tU2VyaWFsaXplZExHcmFwaFRvUHJ5TW9kZWwoZ3JhcGg6IGFueSk6IFByeVNlcmlhbGl6ZWRQaXBlbGluZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5vZGVzOiBncmFwaC5ub2Rlcy5tYXAoKG5vZGU6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBvdXRwdXQgPSB7XG4gICAgICAgICAgaWQ6IG5vZGUucHJvcGVydGllc1snaWQnXSxcbiAgICAgICAgICB0eXBlOiBub2RlLnR5cGUsXG4gICAgICAgICAgdGl0bGU6IG5vZGUudGl0bGUgPz8gbm9kZS50eXBlLFxuICAgICAgICAgIHNwZWM6IHtcbiAgICAgICAgICAgIC4uLm5vZGUucHJvcGVydGllc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3VpOiB7XG4gICAgICAgICAgICBwb3M6IFtub2RlLnBvc1swXSwgbm9kZS5wb3NbMV1dLFxuICAgICAgICAgICAgc2l6ZTogW25vZGUuc2l6ZVswXSwgbm9kZS5zaXplWzFdXVxuICAgICAgICAgIH1cbiAgICAgICAgfSBhcyBQcnlTZXJpYWxpemVkTm9kZTtcblxuICAgICAgICBkZWxldGUgb3V0cHV0LnNwZWNbJ3N1YmdyYXBoJ107XG4gICAgICAgIGRlbGV0ZSBvdXRwdXQuc3BlY1snaWQnXTtcbiAgICAgICAgZGVsZXRlIG91dHB1dC5zcGVjWyd0eXBlJ107XG4gICAgICAgIGRlbGV0ZSBvdXRwdXQuc3BlY1snX2xhYmVsJ107XG5cbiAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gJ1N1YkdyYXBoTm9kZScpIHtcbiAgICAgICAgICBvdXRwdXQuc3ViZ3JhcGggPSBHcmFwaFNlcmlhbGl6ZXJVdGlscy50cmFuc2xhdGVGcm9tU2VyaWFsaXplZExHcmFwaFRvUHJ5TW9kZWwobm9kZS5wcm9wZXJ0aWVzWydzdWJncmFwaCddKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICB9KSxcbiAgICAgIGxpbmtzOiBncmFwaC5saW5rcy5tYXAoKGxpbmtBcnJheTogYW55W10pID0+ICh7XG4gICAgICAgIHN0YXJ0OiB7XG4gICAgICAgICAgaWQ6IGdyYXBoLm5vZGVzLmZpbmQoKG5vZGU6IExHcmFwaE5vZGUpID0+IG5vZGUuaWQgPT09IGxpbmtBcnJheVsxXSkucHJvcGVydGllc1snaWQnXSxcbiAgICAgICAgICBzbG90OiBsaW5rQXJyYXlbMl1cbiAgICAgICAgfSxcbiAgICAgICAgZW5kOiB7XG4gICAgICAgICAgaWQ6IGdyYXBoLm5vZGVzLmZpbmQoKG5vZGU6IExHcmFwaE5vZGUpID0+IG5vZGUuaWQgPT09IGxpbmtBcnJheVszXSkucHJvcGVydGllc1snaWQnXSxcbiAgICAgICAgICBzbG90OiBsaW5rQXJyYXlbNF1cbiAgICAgICAgfVxuICAgICAgfSkpXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBoeWRyYXRlKHNlcmlhbGl6ZWRHcmFwaDogUHJ5U2VyaWFsaXplZFBpcGVsaW5lLCBsZ3JhcGg6IExHcmFwaCkge1xuICAgIGNvbnN0IGh5ZHJhdGVkTm9kZXMgPSBzZXJpYWxpemVkR3JhcGgubm9kZXNcbiAgICAgIC5tYXAoKG5vZGUpID0+IEdyYXBoU2VyaWFsaXplclV0aWxzLmNyZWF0ZU5vZGUobm9kZSkpXG4gICAgICAuZmlsdGVyKChub2RlKSA9PiAhIW5vZGUpO1xuICAgIGh5ZHJhdGVkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gbGdyYXBoLmFkZChub2RlKSk7XG5cbiAgICBzZXJpYWxpemVkR3JhcGgubGlua3MuZm9yRWFjaCgobGluaykgPT4ge1xuICAgICAgY29uc3Qgc3RhcnROb2RlID0gaHlkcmF0ZWROb2Rlcy5maW5kKChoTm9kZSkgPT4gbGluay5zdGFydC5pZCA9PT0gaE5vZGUucHJvcGVydGllc1snaWQnXSk7XG4gICAgICBjb25zdCBlbmROb2RlID0gaHlkcmF0ZWROb2Rlcy5maW5kKChoTm9kZSkgPT4gbGluay5lbmQuaWQgPT09IGhOb2RlLnByb3BlcnRpZXNbJ2lkJ10pO1xuICAgICAgaWYgKHN0YXJ0Tm9kZSAmJiBlbmROb2RlKSB7XG4gICAgICAgIHN0YXJ0Tm9kZS5jb25uZWN0KGxpbmsuc3RhcnQuc2xvdCwgZW5kTm9kZSwgbGluay5lbmQuc2xvdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoIXN0YXJ0Tm9kZSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYE1pc3Npbmcgbm9kZSBpZCAke2xpbmsuc3RhcnQuaWR9IGZvciBsaW5rIGh5ZHJhdGF0aW9uYCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFlbmROb2RlKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTWlzc2luZyBub2RlIGlkICR7bGluay5lbmQuaWR9IGZvciBsaW5rIGh5ZHJhdGF0aW9uYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVOb2RlKHNlcmlhbGl6ZWROb2RlOiBQcnlTZXJpYWxpemVkTm9kZSk6IExHcmFwaE5vZGUge1xuICAgIGNvbnN0IG5vZGVfY29uc3QgPSBMaXRlR3JhcGguY3JlYXRlTm9kZShzZXJpYWxpemVkTm9kZS50eXBlLCBzZXJpYWxpemVkTm9kZS50aXRsZSwge30pO1xuICAgIGlmICghbm9kZV9jb25zdCkge1xuICAgICAgY29uc29sZS5lcnJvcihgTm9kZSB3aXRoIHR5cGUgJHtzZXJpYWxpemVkTm9kZS50eXBlfSBjb3VsZCBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgKGlkICR7c2VyaWFsaXplZE5vZGUuaWR9KS5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZV9jb25zdC50aXRsZSA9IHNlcmlhbGl6ZWROb2RlLnRpdGxlO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAyOyBpKyspIHtcbiAgICAgICAgbm9kZV9jb25zdC5wb3NbaV0gPSBzZXJpYWxpemVkTm9kZS5ndWkucG9zW2ldO1xuICAgICAgICBub2RlX2NvbnN0LnNpemVbaV0gPSBzZXJpYWxpemVkTm9kZS5ndWkuc2l6ZVtpXTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5rZXlzKHNlcmlhbGl6ZWROb2RlLnNwZWMpLmZvckVhY2goKGtleSkgPT4gKG5vZGVfY29uc3QucHJvcGVydGllc1trZXldID0gc2VyaWFsaXplZE5vZGUuc3BlY1trZXldKSk7XG4gICAgICBub2RlX2NvbnN0LnByb3BlcnRpZXNbJ2lkJ10gPSBzZXJpYWxpemVkTm9kZS5pZDtcblxuICAgICAgaWYgKHNlcmlhbGl6ZWROb2RlLnR5cGUgPT09ICdTdWJHcmFwaE5vZGUnKSB7XG4gICAgICAgIGNvbnN0IHN1YkdyYXBoTm9kZSA9IG5vZGVfY29uc3QgYXMgYW55OyAvLyB0eXBlIGlzIFN1YkdSYXBoTm9kZSwgYnV0IHdlIGRvbid0IHdhbnQgdG8gaW50cm9kdWNlIGEgZGVwZW5kZW5jeSB0byBvcHRpb25hbCBtb2R1bGUgU3ViZ3JhcGhcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YkdyYXBoTm9kZS5wcm9wZXJ0aWVzWydpbnB1dHMnXTsgaSsrKSB7XG4gICAgICAgICAgc3ViR3JhcGhOb2RlLmNyZWF0ZUlucHV0KFxuICAgICAgICAgICAgc2VyaWFsaXplZE5vZGUuc3ViZ3JhcGghLm5vZGVzLmZpbHRlcigobm9kZSkgPT4gbm9kZS50eXBlID09PSAnU3ViR3JhcGhJbnB1dCcpW2ldLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN1YkdyYXBoTm9kZS5wcm9wZXJ0aWVzWydvdXRwdXRzJ107IGkrKykge1xuICAgICAgICAgIHN1YkdyYXBoTm9kZS5jcmVhdGVPdXRwdXQoXG4gICAgICAgICAgICBzZXJpYWxpemVkTm9kZS5zdWJncmFwaCEubm9kZXMuZmlsdGVyKChub2RlKSA9PiBub2RlLnR5cGUgPT09ICdTdWJHcmFwaE91dHB1dCcpW2ldLmlkXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIEdyYXBoU2VyaWFsaXplclV0aWxzLmh5ZHJhdGUoeyAuLi5zZXJpYWxpemVkTm9kZS5zdWJncmFwaCEgfSwgc3ViR3JhcGhOb2RlLnN1YkdyYXBoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVfY29uc3Q7XG4gIH1cbn1cbiJdfQ==
@@ -11,8 +11,8 @@ import * as i0 from "@angular/core";
11
11
  import * as i1 from "@ngrx/store";
12
12
  import * as i2 from "../../factory/pipeline-component-factory.service";
13
13
  import * as i3 from "@provoly/dashboard";
14
- import * as i4 from "@angular/common";
15
- import * as i5 from "../../style/css.component";
14
+ import * as i4 from "../../style/css.component";
15
+ import * as i5 from "@angular/common";
16
16
  export const MIME_TYPE_PIPELINE_COMPONENT = 'pipeline/component';
17
17
  export const MIME_TYPE_PIPELINE_PROPERTIES = 'pipeline/properties';
18
18
  export class PryPipelineEditorComponent extends SubscriptionnerDirective {
@@ -278,11 +278,11 @@ export class PryPipelineEditorComponent extends SubscriptionnerDirective {
278
278
  this.search$.next({ ...$event });
279
279
  }
280
280
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPipelineEditorComponent, deps: [{ token: i1.Store }, { token: i2.PipelineComponentFactoryService }, { token: i3.PryI18nService }], target: i0.ɵɵFactoryTarget.Component }); }
281
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: { pipeline: "pipeline" }, outputs: { goToConsult: "goToConsult" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "canvasParent", first: true, predicate: ["canvasParent"], descendants: true }, { propertyName: "componentRef", first: true, predicate: ["specific"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories$ | async; let index = index\"\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.AccordionComponent, selector: "pry-accordion" }, { kind: "component", type: i3.AccordionItemComponent, selector: "pry-accordion-item", inputs: ["item", "borderColor", "index", "translationStringBase", "length", "showSearchBar", "search$"], outputs: ["search"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
281
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: PryPipelineEditorComponent, selector: "pry-pipeline-editor", inputs: { pipeline: "pipeline" }, outputs: { goToConsult: "goToConsult" }, viewQueries: [{ propertyName: "canvas", first: true, predicate: ["canvas"], descendants: true }, { propertyName: "canvasParent", first: true, predicate: ["canvasParent"], descendants: true }, { propertyName: "componentRef", first: true, predicate: ["specific"], descendants: true, read: ViewContainerRef }], usesInheritance: true, ngImport: i0, template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n @for (category of categories$ | async; track category; let index = $index) {\n <pry-accordion-item\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n @for (type of (types$ | async)![category]; track type) {\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n }\n </ul>\n </pry-accordion-item>\n }\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n @for (action of actions; track action) {\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n }\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n @if (selectedNode$ | async; as node) {\n <div\n class=\"o-pipeline-editor__properties__node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n }\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n @if (((errors$ | async)?.length ?? 0) > 0) {\n <div class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n @for (error of errors$ | async; track error) {\n <li>\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i3.AccordionComponent, selector: "pry-accordion" }, { kind: "component", type: i3.AccordionItemComponent, selector: "pry-accordion-item", inputs: ["item", "borderColor", "index", "translationStringBase", "length", "showSearchBar", "search$"], outputs: ["search"] }, { kind: "component", type: i3.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i4.PryPipelineCssComponent, selector: "pry-pipeline-css" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.I18nPipe, name: "i18n" }] }); }
282
282
  }
283
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: PryPipelineEditorComponent, decorators: [{
284
284
  type: Component,
285
- args: [{ selector: 'pry-pipeline-editor', template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n <pry-accordion-item\n *ngFor=\"let category of categories$ | async; let index = index\"\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n <ng-container *ngFor=\"let type of (types$ | async)![category]\">\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n </ng-container>\n </ul>\n </pry-accordion-item>\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n <ng-container *ngFor=\"let action of actions\">\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n </ng-container>\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n <div\n class=\"o-pipeline-editor__properties__node\"\n *ngIf=\"selectedNode$ | async as node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n <div *ngIf=\"((errors$ | async)?.length ?? 0) > 0\" class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n <li *ngFor=\"let error of errors$ | async\">\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n </ul>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
285
+ args: [{ selector: 'pry-pipeline-editor', template: "<pry-pipeline-css></pry-pipeline-css>\n<div class=\"o-pipeline\">\n <div class=\"o-pipeline__menu\">\n <pry-accordion>\n @for (category of categories$ | async; track category; let index = $index) {\n <pry-accordion-item\n [item]=\"category\"\n [borderColor]=\"(types$ | async)![category][0].color\"\n [index]=\"index\"\n [showSearchBar]=\"true\"\n [search$]=\"search$\"\n (search)=\"search($event)\"\n translationStringBase=\"@pry.pipeline.\"\n >\n <ul class=\"o-pipeline__components\">\n @for (type of (types$ | async)![category]; track type) {\n <li [draggable]=\"!this.disableEditing\" (dragstart)=\"onDragStart($event, type)\">\n <p class=\"a-p\">{{ type.label }}</p>\n <pry-icon [width]=\"2\" [height]=\"20\" iconSvg=\"info\"></pry-icon>\n </li>\n }\n </ul>\n </pry-accordion-item>\n }\n </pry-accordion>\n </div>\n\n <div class=\"o-pipeline__workspace\">\n <div class=\"o-pipeline-layout__toolbox\">\n <button class=\"a-btn a-btn--secondary\" type=\"button\" (click)=\"goBack()\">\n {{ '@pry.pipeline.backToDescription' | i18n }}\n </button>\n @for (action of actions; track action) {\n <button type=\"button\" (click)=\"clickedAction(action)\" class=\"a-btn a-btn--secondary\">\n {{ '@pry.pipeline.' + action.type | i18n }}\n <pry-icon [iconSvg]=\"action.icon\"></pry-icon>\n </button>\n }\n </div>\n <div>\n <h1 class=\"a-h1\">{{ this.pipeline?.title }}</h1>\n </div>\n <div class=\"o-pipeline-editor\">\n <div (drop)=\"onDrop($event)\" class=\"o-pipeline-editor__grid\" #canvasParent>\n <canvas #canvas class=\"canvas\"></canvas>\n </div>\n <div class=\"o-pipeline-editor__properties\">\n @if (selectedNode$ | async; as node) {\n <div\n class=\"o-pipeline-editor__properties__node\"\n [title]=\"node.properties['id']\"\n >\n <h3 class=\"a-h3\">{{ '@pry.pipeline.selectedTask' | i18n }}</h3>\n <h4 class=\"a-h4\">{{ '@pry.pipeline.type' | i18n }}</h4>\n <p class=\"a-p a-p--type\">{{ node.type }}</p>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"{{ node.id }}\">{{ '@pry.pipeline.title' | i18n }}</label>\n <input\n class=\"a-form-field\"\n id=\"{{ node.id }}\"\n type=\"text\"\n [value]=\"node.title\"\n [disabled]=\"disableEditing\"\n (change)=\"changeTitle(node, $event)\"\n />\n </div>\n </div>\n }\n <div class=\"o-pipeline-editor__properties__detail\" [class.is-empty]=\"!selectedNode\">\n <div>\n <div #specific></div>\n </div>\n </div>\n @if (((errors$ | async)?.length ?? 0) > 0) {\n <div class=\"o-pipeline-editor__properties__errors\">\n <div class=\"o-pipeline-editor__properties__errors__title\">\n <pry-icon iconSvg=\"warning-triangle\"></pry-icon>\n <p class=\"a-p\">{{ '@pry.pipeline.errors' | i18n }}:</p>\n </div>\n <ul>\n @for (error of errors$ | async; track error) {\n <li>\n <span class=\"type\">{{\n (error?.nodeId === '-' ? '@pry.pipeline.global' : '@pry.pipeline.node') | i18n\n }}</span>\n {{ error.translated }}\n </li>\n }\n </ul>\n </div>\n }\n </div>\n </div>\n </div>\n</div>\n" }]
286
286
  }], ctorParameters: () => [{ type: i1.Store }, { type: i2.PipelineComponentFactoryService }, { type: i3.PryI18nService }], propDecorators: { pipeline: [{
287
287
  type: Input
288
288
  }], goToConsult: [{
@@ -297,4 +297,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImpor
297
297
  type: ViewChild,
298
298
  args: ['specific', { read: ViewContainerRef, static: false }]
299
299
  }] } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3BpcGVsaW5lL2NvbXBvbmVudHMvcGlwZWxpbmUtZWRpdG9yL3BpcGVsaW5lLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWVkaXRvci9waXBlbGluZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0Isd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBcUIsZUFBZSxFQUFvQixNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBR2hFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLG9CQUFvQixDQUFD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QUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQTVVVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw2WUFLTixnQkFBZ0Isb0RDdENqRCxpaUhBeUZBOzsyRkR4RGEsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHFCQUFxQjtxSkFJdEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ3lDLFlBQVk7c0JBQTdFLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2VBY3Rpb25zLCBQcnlJMThuU2VydmljZSwgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IExHcmFwaCwgTEdyYXBoQ2FudmFzLCBMR3JhcGhOb2RlLCBMaXRlR3JhcGggfSBmcm9tICdsaXRlZ3JhcGguanMnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RXaXRoLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFBpcGVsaW5lQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUGlwZWxpbmVDb21wb25lbnRGYWN0b3J5U2VydmljZVxufSBmcm9tICcuLi8uLi9mYWN0b3J5L3BpcGVsaW5lLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZU5vZGUgfSBmcm9tICcuLi8uLi9ub2RlLWNsYXNzL2Jhc2Utbm9kZS5jbGFzcyc7XG5pbXBvcnQgeyBOb2RlUGlwZWxpbmVFcnJvciwgUGlwZWxpbmVBY3Rpb25zLCBQaXBlbGluZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvcGlwZWxpbmUuYWN0aW9ucyc7XG5pbXBvcnQgeyBQaXBlbGluZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL3N0b3JlL3BpcGVsaW5lLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBHcmFwaFNlcmlhbGl6ZXJVdGlscyB9IGZyb20gJy4vZ3JhcGgtc2VyaWFsaXplci51dGlscyc7XG5pbXBvcnQgeyBQcnlTZXJpYWxpemVkUGlwZWxpbmUsIFByeVRyYW5zZm8gfSBmcm9tICcuL3BpcGVsaW5lLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5UID0gJ3BpcGVsaW5lL2NvbXBvbmVudCc7XG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1BJUEVMSU5FX1BST1BFUlRJRVMgPSAncGlwZWxpbmUvcHJvcGVydGllcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1waXBlbGluZS1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcGlwZWxpbmUtZWRpdG9yLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQaXBlbGluZUVkaXRvckNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBwaXBlbGluZT86IFByeVRyYW5zZm87XG4gIEBPdXRwdXQoKSBnb1RvQ29uc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJ5VHJhbnNmbz4oKTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc1BhcmVudCcpIGNhbnZhc1BhcmVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGVjaWZpYycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb21wb25lbnRSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBsR3JhcGhzOiBMR3JhcGhbXSA9IFtdO1xuICBwcml2YXRlIGxHcmFwaENhbnZhcyE6IExHcmFwaENhbnZhcztcbiAgdHlwZXMkOiBPYnNlcnZhYmxlPHsgW2NhdGVnb3J5OiBzdHJpbmddOiBQaXBlbGluZUNvbXBvbmVudERlZmluaXRpb25bXSB9PjtcbiAgY2F0ZWdvcmllcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBzZWxlY3RlZE5vZGUkOiBPYnNlcnZhYmxlPEJhc2VOb2RlIHwgdW5kZWZpbmVkPjtcbiAgcmVzcG9uc2UkOiBPYnNlcnZhYmxlPFBpcGVsaW5lUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuICBpbnN0YW5jaWF0ZWRDb21wb25lbnQhOiBDb21wb25lbnRSZWY8YW55PjtcbiAgc2VsZWN0ZWROb2RlPzogQmFzZU5vZGU7XG4gIGFjdGlvbnMgPSBbXSBhcyB7IHR5cGU6IHN0cmluZzsgaWNvbjogc3RyaW5nIH1bXTtcbiAgZXJyb3JzJDogT2JzZXJ2YWJsZTwoTm9kZVBpcGVsaW5lRXJyb3IgJiB7IHRyYW5zbGF0ZWQ6IHN0cmluZyB9KVtdPjtcbiAgZGlzYWJsZUVkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW1hZ2VzOiB7IHN0YXJ0OiBIVE1MSW1hZ2VFbGVtZW50OyBhZnRlcjogSFRNTEltYWdlRWxlbWVudCB9O1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2U6IFBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIEJhc2VOb2RlLnN0b3JlID0gc3RvcmU7XG4gICAgQmFzZU5vZGUuY2hlY2sgPSAoKSA9PiB0aGlzLmNoZWNrKCk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSk7XG5cbiAgICB0aGlzLnR5cGVzJCA9IGNvbWJpbmVMYXRlc3QoW3BpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UudHlwZXNCeUNhdGVnb3JpZXMkLCB0aGlzLnNlYXJjaCRdKS5waXBlKFxuICAgICAgbWFwKChbdHlwZXNCeUNhdGVnb3J5LCBzZWFyY2hdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9IGFzIHsgW2NhdGVnb3J5OiBzdHJpbmddOiBQaXBlbGluZUNvbXBvbmVudERlZmluaXRpb25bXSB9O1xuICAgICAgICBPYmplY3Qua2V5cyh0eXBlc0J5Q2F0ZWdvcnkpLmZvckVhY2goKGNhdCkgPT4ge1xuICAgICAgICAgIHJlc3VsdFtjYXRdID0gdHlwZXNCeUNhdGVnb3J5W2NhdF0uZmlsdGVyKCh0eXBlKSA9PlxuICAgICAgICAgICAgdHlwZS5sYWJlbC50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKChzZWFyY2hbY2F0XSA/PyAnJykudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNhdGVnb3JpZXMkID0gcGlwZWxpbmVDb21wb25lbnRGYWN0b3J5U2VydmljZS5jYXRlZ29yaWVzJDtcblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLnNlbGVjdGVkTm9kZUlkKS5waXBlKG1hcCgoaWQpID0+IHRoaXMuZmluZE5vZGVCeUlkKGlkKSkpO1xuXG4gICAgdGhpcy5yZXNwb25zZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChQaXBlbGluZVNlbGVjdG9ycy5jaGVja1Jlc3BvbnNlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnJlc3BvbnNlJC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsTm9kZXMuZm9yRWFjaCgoZXJyb3JOb2RlKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRlbGV0ZSBlcnJvck5vZGU/LmJnY29sb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIChyZXNwb25zZT8uc3RhdHVzLm1hcCgoc3RhdHVzKSA9PiBzdGF0dXMuZXJyb3JzKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pID8/IFtdKVxuICAgICAgICAgID8ubWFwKChlcnJvcikgPT4gdGhpcy5maW5kTm9kZUJ5SWQoZXJyb3Iubm9kZUlkKSlcbiAgICAgICAgICAuZmlsdGVyKChlcnJvck5vZGUpID0+ICEhZXJyb3JOb2RlKVxuICAgICAgICAgIC5mb3JFYWNoKChlcnJvck5vZGUpID0+IChlcnJvck5vZGUhLmJnY29sb3IgPSAnI2Q5MzUzNScpKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlJC5waXBlKGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMucmVzcG9uc2UkKSkuc3Vic2NyaWJlKChbbm9kZSwgcmVzcG9uc2VdKSA9PiB7XG4gICAgICBpZiAodGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuY2xlYXIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKCdkb3duJyk7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLnBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UuZ2V0KG5vZGU/LnR5cGUgPz8gJycpO1xuICAgICAgICBpZiAobW9kdWxlKSB7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5jcmVhdGVDb21wb25lbnQobW9kdWxlLmNvbXBvbmVudCk7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQuaW5zdGFuY2Uubm9kZSA9IG5vZGU7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQuaW5zdGFuY2UuY2hlY2tGbiA9ICgpID0+IHt9O1xuICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlRWRpdGluZztcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLmNoZWNrRm4gPSAoKSA9PiB0aGlzLmNoZWNrKCk7XG4gICAgICAgICAgfSwgMTAwKTtcblxuICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMuZmluZCgoc3RhdHVzKSA9PiBzdGF0dXMubm9kZUlkID09PSBub2RlLnByb3BlcnRpZXNbJ2lkJ10pO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nU3RhdHVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLm1vZGVsID0gbWF0Y2hpbmdTdGF0dXMub3V0TW9kZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdTdWJHcmFwaE5vZGUnKSB7XG4gICAgICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZXllLWFycm93LWRvd24nLCB0eXBlOiAnZG93bicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZGVsZXRlJywgdHlwZTogJ2RlbGV0ZScgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUFjdGlvbignZGVsZXRlJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc2VsZWN0ZWROb2RlJC5zdWJzY3JpYmUoKG5vZGUpID0+ICh0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGUpKSk7XG5cbiAgICB0aGlzLmVycm9ycyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3BvbnNlJCwgdGhpcy5zZWxlY3RlZE5vZGUkXSkucGlwZShcbiAgICAgIG1hcCgoW3Jlc3BvbnNlLCBzZWxlY3RlZE5vZGVdKSA9PiBbXG4gICAgICAgIC4uLihyZXNwb25zZT8uZXJyb3JzID8/IFtdKS5tYXAoKGVycm9yKSA9PiAoeyAuLi5lcnJvciwgbm9kZUlkOiAnLScgfSkpLFxuICAgICAgICAuLi4ocmVzcG9uc2U/LnN0YXR1cy5maW5kKChzdGF0dXMpID0+IHN0YXR1cy5ub2RlSWQgPT09IChzZWxlY3RlZE5vZGU/LnByb3BlcnRpZXNbJ2lkJ10gPz8gJy0tLS0tJykpPy5lcnJvcnMgPz9cbiAgICAgICAgICBbXSlcbiAgICAgIF0pLFxuICAgICAgbWFwKChlcnJvcnMpID0+XG4gICAgICAgIGVycm9ycy5tYXAoKGVycm9yKSA9PiAoe1xuICAgICAgICAgIC4uLmVycm9yLFxuICAgICAgICAgIHRyYW5zbGF0ZWQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnBpcGVsaW5lLmNvZGVzLicgKyBlcnJvci5jb2RlLCBlcnJvcilcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoYXVkaXRUaW1lKDEwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5pbWFnZXMgPSB7XG4gICAgICBzdGFydDogbmV3IEltYWdlKCksXG4gICAgICBhZnRlcjogbmV3IEltYWdlKClcbiAgICB9O1xuICAgIHRoaXMuaW1hZ2VzLnN0YXJ0LnNyYyA9ICcvYXNzZXRzL2JhY2tncm91bmRzL2ltZ19wcm9jZXNzdXMucG5nJztcbiAgICB0aGlzLmltYWdlcy5hZnRlci5zcmMgPSAnJztcbiAgfVxuXG4gIGdldCBjdXJyZW50R3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMubEdyYXBoc1t0aGlzLmxHcmFwaHMubGVuZ3RoIC0gMV07XG4gIH1cblxuICBnZXQgYWxsTm9kZXMoKTogQmFzZU5vZGVbXSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRHcmFwaD8uX25vZGVzID8/IFtdO1xuICB9XG5cbiAgZ2V0IGJhY2tncm91bmRJbWFnZSgpIHtcbiAgICByZXR1cm4gKHRoaXMucGlwZWxpbmU/Lm5vZGVzID8/IFtdKS5sZW5ndGggPiAwID8gdGhpcy5pbWFnZXMuYWZ0ZXIgOiB0aGlzLmltYWdlcy5zdGFydDtcbiAgfVxuXG4gIGZpbmROb2RlQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5wcm9wZXJ0aWVzWydpZCddID09PSBpZCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sR3JhcGhzLnB1c2gobmV3IExHcmFwaCgpKTtcbiAgICB0aGlzLmxHcmFwaENhbnZhcyA9IG5ldyBMR3JhcGhDYW52YXModGhpcy5jYW52YXMubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJyZW50R3JhcGgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLmFsbG93X3NlYXJjaGJveCA9IGZhbHNlO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnRpdGxlX3RleHRfZm9udCA9ICdib2xkIDE0cHggVWJ1bnR1JztcbiAgICB0aGlzLmxHcmFwaENhbnZhcy5pbm5lcl90ZXh0X2ZvbnQgPSAnbm9ybWFsIDEycHggVWJ1bnR1JztcbiAgICB0aGlzLmxHcmFwaENhbnZhcy5kZWZhdWx0X2xpbmtfY29sb3IgPSAnIzAwMDAwMCc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMubEdyYXBoQ2FudmFzLmJhY2tncm91bmRfaW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sR3JhcGhDYW52YXMub25EcmF3QmFja2dyb3VuZCA9IChjdHgsIHZlY3RvcikgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGN0eC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgaW1nU2l6ZSA9IFszMDYsIDE3MV07XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLmJhY2tncm91bmRJbWFnZSxcbiAgICAgICAgKHJlY3Qud2lkdGggLSBpbWdTaXplWzBdKSAvIDIsXG4gICAgICAgIChyZWN0LmhlaWdodCAtIGltZ1NpemVbMV0pIC8gMixcbiAgICAgICAgaW1nU2l6ZVswXSxcbiAgICAgICAgaW1nU2l6ZVsxXVxuICAgICAgKTtcbiAgICB9O1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLm9uTm9kZURlc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgIH07XG4gICAgdGhpcy5jdXJyZW50R3JhcGguc3RhcnQoKTtcbiAgICBpZiAodGhpcy5waXBlbGluZSkge1xuICAgICAgR3JhcGhTZXJpYWxpemVyVXRpbHMuaHlkcmF0ZSh0aGlzLnBpcGVsaW5lIGFzIFByeVNlcmlhbGl6ZWRQaXBlbGluZSwgdGhpcy5jdXJyZW50R3JhcGgpO1xuICAgICAgdGhpcy5kaXNhYmxlRWRpdGluZyA9IHRoaXMucGlwZWxpbmUuYWN0aXZlO1xuICAgIH1cbiAgICB0aGlzLm9uUmVzaXplKCk7XG4gIH1cblxuICBvblJlc2l6ZSgpIHtcbiAgICAvLyBNYWtlIGNhbnZhcyBzbyBsaXR0bGUgdGhhdCBpdCBkb2Vzbid0IGltcGFjdCBjc3Mgc2l6ZSBjYWxjdWxhdGlvblxuICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGggPSAxMDtcbiAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IDEwO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnJlc2l6ZSgxMCwgMTApO1xuXG4gICAgLy8gTGF0ZXIsIG1ha2UgaXQgZ3JvdyB0byBwcm9wZXIgc2l6ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY2FudmFzUGFyZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gcmVjdC53aWR0aDtcbiAgICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgICB0aGlzLmxHcmFwaENhbnZhcy5yZXNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgZGlzcGxheUdyYXBoKGdyYXBoOiBMR3JhcGgpIHtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaC5zdG9wKCk7XG4gICAgdGhpcy5sR3JhcGhzLnB1c2goZ3JhcGgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnNldEdyYXBoKGdyYXBoKTtcbiAgICBncmFwaC5zdGFydCgpO1xuICB9XG5cbiAgcG9wR3JhcGgoKSB7XG4gICAgdGhpcy5jdXJyZW50R3JhcGguc3RvcCgpO1xuICAgIHRoaXMubEdyYXBocy5sZW5ndGggPSB0aGlzLmxHcmFwaHMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaC5zdGFydCgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnNldEdyYXBoKHRoaXMuY3VycmVudEdyYXBoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLmRlc2VsZWN0QWxsTm9kZXMoKTtcbiAgICBpZiAodGhpcy5sR3JhcGhzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oJ3VwJyk7XG4gICAgfVxuICB9XG5cbiAgcHVwR3JhcGgobm9kZTogQmFzZU5vZGUpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEhbm9kZS5zdWJHcmFwaCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5kaXNwbGF5R3JhcGgobm9kZS5zdWJHcmFwaCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgICAgdGhpcy5sR3JhcGhDYW52YXMuZGVzZWxlY3RBbGxOb2RlcygpO1xuICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZXllLWFycm93LXVwJywgdHlwZTogJ3VwJyB9KTtcbiAgICB9XG4gIH1cblxuICBjaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZUVkaXRpbmcpIHtcbiAgICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAgIC4uLnRoaXMucGlwZWxpbmUsXG4gICAgICAgIC4uLkdyYXBoU2VyaWFsaXplclV0aWxzLnNlcmlhbGl6ZSh0aGlzLmxHcmFwaHNbMF0sIHRoaXMucGlwZWxpbmU/LmlkKVxuICAgICAgfSBhcyBQcnlUcmFuc2ZvO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgUGlwZWxpbmVBY3Rpb25zLmNoZWNrKHtcbiAgICAgICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBpcGVsaW5lPy5pZCxcbiAgICAgICAgICAgICAgbm9kZXM6IHRoaXMucGlwZWxpbmU/Lm5vZGVzLFxuICAgICAgICAgICAgICBsaW5rczogdGhpcy5waXBlbGluZT8ubGlua3MsXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnBpcGVsaW5lPy50aXRsZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMucGlwZWxpbmU/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaD8uY2hhbmdlKCk7XG4gIH1cblxuICBjcmVhdGVOb2RlKHR5cGU6IHN0cmluZywgcG9zaXRpb246IFtudW1iZXIsIG51bWJlcl0sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICBjb25zdCB0aXRsZSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzLl9sYWJlbCA/PyB0eXBlLnNwbGl0KCcuJylbdHlwZS5zcGxpdCgnLicpLmxlbmd0aCAtIDFdID8/ICc/JztcbiAgICBjb25zdCBub2RlX2NvbnN0ID0gTGl0ZUdyYXBoLmNyZWF0ZU5vZGUodHlwZSwgdGl0bGUsIHt9KTtcbiAgICBpZiAobm9kZV9jb25zdCAhPT0gbnVsbCkge1xuICAgICAgbm9kZV9jb25zdC50aXRsZSA9IHRpdGxlO1xuICAgICAgbm9kZV9jb25zdC5wb3MgPSBwb3NpdGlvbjtcbiAgICAgIE9iamVjdC5rZXlzKGFkZGl0aW9uYWxQcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgbm9kZV9jb25zdC5wcm9wZXJ0aWVzW2tleV0gPSBhZGRpdGlvbmFsUHJvcGVydGllc1trZXldO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudEdyYXBoLmFkZChub2RlX2NvbnN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IGNyZWF0ZSBub2RlIG9mIHR5cGUgJHt0eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0KCRldmVudDogRHJhZ0V2ZW50LCBjb21wb25lbnQ6IFBpcGVsaW5lQ29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIgJiYgISRldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1BJUEVMSU5FX0NPTVBPTkVOVCkpIHtcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdjb3B5JztcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5ULCBjb21wb25lbnQudHlwZSk7XG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoTUlNRV9UWVBFX1BJUEVMSU5FX1BST1BFUlRJRVMsIEpTT04uc3RyaW5naWZ5KHsgLi4uY29tcG9uZW50LmFkZGl0aW9uYWxQcm9wZXJ0aWVzIH0pKTtcbiAgICB9XG4gIH1cblxuICBvbkRyb3AoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBpZiAoJGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5UKSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9QSVBFTElORV9DT01QT05FTlQpO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsUHJvcGVydGllcyA9IEpTT04ucGFyc2UoJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9QSVBFTElORV9QUk9QRVJUSUVTKSk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEV2ZW50ID0gdGhpcy5sR3JhcGhDYW52YXMuY29udmVydEV2ZW50VG9DYW52YXNPZmZzZXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5jcmVhdGVOb2RlKGNvbXBvbmVudFR5cGUsIFtjb252ZXJ0ZWRFdmVudFswXSwgY29udmVydGVkRXZlbnRbMV1dLCBhZGRpdGlvbmFsUHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuY2hlY2soKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpdGxlKG5vZGU6IExHcmFwaE5vZGUsICRldmVudDogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbm9kZS50aXRsZSA9ICRldmVudC50YXJnZXQ/LnZhbHVlO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgY2xpY2tlZEFjdGlvbihhY3Rpb246IGFueSkge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgdGhpcy5wb3BHcmFwaCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICB0aGlzLnB1cEdyYXBoKHRoaXMuc2VsZWN0ZWROb2RlISk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5jdXJyZW50R3JhcGgucmVtb3ZlKHRoaXMuc2VsZWN0ZWROb2RlISk7XG4gICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKCdkZWxldGUnKTtcbiAgICAgICAgdGhpcy5jaGVjaygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChQaXBlbGluZUFjdGlvbnMuc2VsZWN0KHsgaWQ6ICcnIH0pKTtcbiAgfVxuXG4gIGFkZEFjdGlvbihhZGQ6IHsgdHlwZTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25zLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09IGFkZC50eXBlKSkge1xuICAgICAgdGhpcy5hY3Rpb25zLnB1c2goYWRkKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25zLnNvcnQoKGEsIGIpID0+IGEudHlwZS5sb2NhbGVDb21wYXJlKGIudHlwZSkpO1xuICB9XG5cbiAgcmVtb3ZlQWN0aW9uKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgIT09IHR5cGUpO1xuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIHRoaXMuZ29Ub0NvbnN1bHQuZW1pdCh0aGlzLnBpcGVsaW5lKTtcbiAgfVxuXG4gIHNlYXJjaCgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoJC5uZXh0KHsgLi4uJGV2ZW50IH0pO1xuICB9XG59XG4iLCI8cHJ5LXBpcGVsaW5lLWNzcz48L3ByeS1waXBlbGluZS1jc3M+XG48ZGl2IGNsYXNzPVwiby1waXBlbGluZVwiPlxuICA8ZGl2IGNsYXNzPVwiby1waXBlbGluZV9fbWVudVwiPlxuICAgIDxwcnktYWNjb3JkaW9uPlxuICAgICAgPHByeS1hY2NvcmRpb24taXRlbVxuICAgICAgICAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcyQgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICBbaXRlbV09XCJjYXRlZ29yeVwiXG4gICAgICAgIFtib3JkZXJDb2xvcl09XCIodHlwZXMkIHwgYXN5bmMpIVtjYXRlZ29yeV1bMF0uY29sb3JcIlxuICAgICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgICBbc2hvd1NlYXJjaEJhcl09XCJ0cnVlXCJcbiAgICAgICAgW3NlYXJjaCRdPVwic2VhcmNoJFwiXG4gICAgICAgIChzZWFyY2gpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgICB0cmFuc2xhdGlvblN0cmluZ0Jhc2U9XCJAcHJ5LnBpcGVsaW5lLlwiXG4gICAgICA+XG4gICAgICAgIDx1bCBjbGFzcz1cIm8tcGlwZWxpbmVfX2NvbXBvbmVudHNcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0eXBlIG9mICh0eXBlcyQgfCBhc3luYykhW2NhdGVnb3J5XVwiPlxuICAgICAgICAgICAgPGxpIFtkcmFnZ2FibGVdPVwiIXRoaXMuZGlzYWJsZUVkaXRpbmdcIiAoZHJhZ3N0YXJ0KT1cIm9uRHJhZ1N0YXJ0KCRldmVudCwgdHlwZSlcIj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXBcIj57eyB0eXBlLmxhYmVsIH19PC9wPlxuICAgICAgICAgICAgICA8cHJ5LWljb24gW3dpZHRoXT1cIjJcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cImluZm9cIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvcHJ5LWFjY29yZGlvbi1pdGVtPlxuICAgIDwvcHJ5LWFjY29yZGlvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmVfX3dvcmtzcGFjZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmJhY2tUb0Rlc2NyaXB0aW9uJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsaWNrZWRBY3Rpb24oYWN0aW9uKVwiIGNsYXNzPVwiYS1idG4gYS1idG4tLXNlY29uZGFyeVwiPlxuICAgICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLicgKyBhY3Rpb24udHlwZSB8IGkxOG4gfX1cbiAgICAgICAgICA8cHJ5LWljb24gW2ljb25TdmddPVwiYWN0aW9uLmljb25cIj48L3ByeS1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgdGhpcy5waXBlbGluZT8udGl0bGUgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvclwiPlxuICAgICAgPGRpdiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiIGNsYXNzPVwiby1waXBlbGluZS1lZGl0b3JfX2dyaWRcIiAjY2FudmFzUGFyZW50PlxuICAgICAgICA8Y2FudmFzICNjYW52YXMgY2xhc3M9XCJjYW52YXNcIj48L2NhbnZhcz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmUtZWRpdG9yX19wcm9wZXJ0aWVzXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cIm8tcGlwZWxpbmUtZWRpdG9yX19wcm9wZXJ0aWVzX19ub2RlXCJcbiAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkTm9kZSQgfCBhc3luYyBhcyBub2RlXCJcbiAgICAgICAgICBbdGl0bGVdPVwibm9kZS5wcm9wZXJ0aWVzWydpZCddXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImEtaDNcIj57eyAnQHByeS5waXBlbGluZS5zZWxlY3RlZFRhc2snIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgPGg0IGNsYXNzPVwiYS1oNFwiPnt7ICdAcHJ5LnBpcGVsaW5lLnR5cGUnIHwgaTE4biB9fTwvaDQ+XG4gICAgICAgICAgPHAgY2xhc3M9XCJhLXAgYS1wLS10eXBlXCI+e3sgbm9kZS50eXBlIH19PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImEtbGFiZWxcIiBmb3I9XCJ7eyBub2RlLmlkIH19XCI+e3sgJ0BwcnkucGlwZWxpbmUudGl0bGUnIHwgaTE4biB9fTwvbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICBpZD1cInt7IG5vZGUuaWQgfX1cIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJub2RlLnRpdGxlXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVFZGl0aW5nXCJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJjaGFuZ2VUaXRsZShub2RlLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiby1waXBlbGluZS1lZGl0b3JfX3Byb3BlcnRpZXNfX2RldGFpbFwiIFtjbGFzcy5pcy1lbXB0eV09XCIhc2VsZWN0ZWROb2RlXCI+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxkaXYgI3NwZWNpZmljPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIigoZXJyb3JzJCB8IGFzeW5jKT8ubGVuZ3RoID8/IDApID4gMFwiIGNsYXNzPVwiby1waXBlbGluZS1lZGl0b3JfX3Byb3BlcnRpZXNfX2Vycm9yc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvcl9fcHJvcGVydGllc19fZXJyb3JzX190aXRsZVwiPlxuICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJ3YXJuaW5nLXRyaWFuZ2xlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1wXCI+e3sgJ0BwcnkucGlwZWxpbmUuZXJyb3JzJyB8IGkxOG4gfX06PC9wPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzJCB8IGFzeW5jXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHlwZVwiPnt7XG4gICAgICAgICAgICAgICAgKGVycm9yPy5ub2RlSWQgPT09ICctJyA/ICdAcHJ5LnBpcGVsaW5lLmdsb2JhbCcgOiAnQHByeS5waXBlbGluZS5ub2RlJykgfCBpMThuXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICB7eyBlcnJvci50cmFuc2xhdGVkIH19XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
300
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUtZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Byb3ZvbHkvZGFzaGJvYXJkL3BpcGVsaW5lL2NvbXBvbmVudHMvcGlwZWxpbmUtZWRpdG9yL3BpcGVsaW5lLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcm92b2x5L2Rhc2hib2FyZC9waXBlbGluZS9jb21wb25lbnRzL3BpcGVsaW5lLWVkaXRvci9waXBlbGluZS1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFHVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0Isd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBYyxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUMzRyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLckMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBcUIsZUFBZSxFQUFvQixNQUFNLDhCQUE4QixDQUFDO0FBQ3BHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7O0FBR2hFLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLG9CQUFvQixDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLHFCQUFxQixDQUFDO0FBTW5FLE1BQU0sT0FBTywwQkFBMkIsU0FBUSx3QkFBd0I7SUFvQnRFLFlBQ1UsS0FBWSxFQUNaLCtCQUFnRSxFQUNoRSxnQkFBZ0M7UUFFeEMsS0FBSyxFQUFFLENBQUM7UUFKQSxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBQ1osb0NBQStCLEdBQS9CLCtCQUErQixDQUFpQztRQUNoRSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdCO1FBckJoQyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFjLENBQUM7UUFJdkQsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQVF2QixZQUFPLEdBQUcsRUFBc0MsQ0FBQztRQUVqRCxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUVoQyxZQUFPLEdBQUcsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFRckMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdkIsUUFBUSxDQUFDLEtBQUssR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxhQUFhLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2xHLEdBQUcsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDaEMsTUFBTSxNQUFNLEdBQUcsRUFBMkQsQ0FBQztZQUMzRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMzQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ2pELElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUNqRixDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRywrQkFBK0IsQ0FBQyxXQUFXLENBQUM7UUFFL0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVsSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBFLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7Z0JBQ2xDLGFBQWE7Z0JBQ2IsT0FBTyxTQUFTLEVBQUUsT0FBTyxDQUFDO1lBQzVCLENBQUMsQ0FBQyxDQUFDO1lBRUgsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hGLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztpQkFDaEQsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2lCQUNsQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBVSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBRTVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRTtZQUN4RixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUMxRSxJQUFJLE1BQU0sRUFBRSxDQUFDO29CQUNYLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDaEQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO29CQUN2RCxJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO29CQUNuRSxVQUFVLENBQUMsR0FBRyxFQUFFO3dCQUNkLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbkUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUVSLElBQUksUUFBUSxFQUFFLENBQUM7d0JBQ2IsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO3dCQUNqRyxJQUFJLGNBQWMsRUFBRSxDQUFDOzRCQUNuQixJQUFJLENBQUMscUJBQXFCLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsUUFBUSxDQUFDO3dCQUN0RSxDQUFDO29CQUNILENBQUM7Z0JBQ0gsQ0FBQztnQkFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQzNELENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDckQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFM0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDckUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxNQUFNO2dCQUMxRyxFQUFFLENBQUM7U0FDTixDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDYixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3JCLEdBQUcsS0FBSztZQUNSLFVBQVUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1NBQ3RGLENBQUMsQ0FBQyxDQUNKLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUNwQixTQUFTLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3BCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixLQUFLLEVBQUUsSUFBSSxLQUFLLEVBQUU7WUFDbEIsS0FBSyxFQUFFLElBQUksS0FBSyxFQUFFO1NBQ25CLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsdUNBQXVDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxZQUFZLENBQUMsRUFBVTtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxrQkFBa0IsQ0FBQztRQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsR0FBRyxvQkFBb0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNqRCxhQUFhO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNuRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBRS9ELEdBQUcsQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUU1QyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUMzQixHQUFHLENBQUMsU0FBUyxDQUNYLElBQUksQ0FBQyxlQUFlLEVBQ3BCLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQzdCLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFDVixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQ1gsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsb0JBQW9CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFpQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN4RixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVELFFBQVE7UUFDTixvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQyxxQ0FBcUM7UUFDckMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDckUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsSUFBYztRQUNyQixhQUFhO1FBQ2IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3BCLGFBQWE7WUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsUUFBUSxHQUFHO2dCQUNkLEdBQUcsSUFBSSxDQUFDLFFBQVE7Z0JBQ2hCLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUM7YUFDeEQsQ0FBQztZQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUNqQixlQUFlLENBQUMsS0FBSyxDQUFDO29CQUNwQixLQUFLLEVBQUU7d0JBQ0wsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRTt3QkFDckIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSzt3QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSzt3QkFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVztxQkFDeEM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBWSxFQUFFLFFBQTBCLEVBQUUsb0JBQXlCO1FBQzVFLE1BQU0sS0FBSyxHQUFHLG9CQUFvQixDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUNoRyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDekQsSUFBSSxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDekIsVUFBVSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNoRCxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEMsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWlCLEVBQUUsU0FBc0M7UUFDbkUsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWSxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztZQUMzRyxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7WUFDeEMsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLDRCQUE0QixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRSxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDcEgsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsTUFBaUI7UUFDdEIsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsNEJBQTRCLENBQUMsQ0FBQztnQkFDaEYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztnQkFDcEcsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQywwQkFBMEIsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztnQkFDN0YsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNiLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsSUFBZ0IsRUFBRSxNQUFhO1FBQ3pDLGFBQWE7UUFDYixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQVc7UUFDdkIsUUFBUSxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsS0FBSyxJQUFJO2dCQUNQLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDaEIsTUFBTTtZQUNSLEtBQUssTUFBTTtnQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFhLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBYSxDQUFDLENBQUM7Z0JBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxTQUFTLENBQUMsR0FBbUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBVztRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOzhHQTVVVSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw2WUFLTixnQkFBZ0Isb0RDdENqRCxnc0hBK0ZBOzsyRkQ5RGEsMEJBQTBCO2tCQUp0QyxTQUFTOytCQUNFLHFCQUFxQjtxSkFJdEIsUUFBUTtzQkFBaEIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNjLE1BQU07c0JBQTFCLFNBQVM7dUJBQUMsUUFBUTtnQkFDUSxZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ3lDLFlBQVk7c0JBQTdFLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IERhdGFTb3VyY2VBY3Rpb25zLCBQcnlJMThuU2VydmljZSwgU3Vic2NyaXB0aW9ubmVyRGlyZWN0aXZlIH0gZnJvbSAnQHByb3ZvbHkvZGFzaGJvYXJkJztcbmltcG9ydCB7IExHcmFwaCwgTEdyYXBoQ2FudmFzLCBMR3JhcGhOb2RlLCBMaXRlR3JhcGggfSBmcm9tICdsaXRlZ3JhcGguanMnO1xuaW1wb3J0IHsgYXVkaXRUaW1lLCBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGNvbWJpbmVMYXRlc3RXaXRoLCBmcm9tRXZlbnQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFBpcGVsaW5lQ29tcG9uZW50RGVmaW5pdGlvbixcbiAgUGlwZWxpbmVDb21wb25lbnRGYWN0b3J5U2VydmljZVxufSBmcm9tICcuLi8uLi9mYWN0b3J5L3BpcGVsaW5lLWNvbXBvbmVudC1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQmFzZU5vZGUgfSBmcm9tICcuLi8uLi9ub2RlLWNsYXNzL2Jhc2Utbm9kZS5jbGFzcyc7XG5pbXBvcnQgeyBOb2RlUGlwZWxpbmVFcnJvciwgUGlwZWxpbmVBY3Rpb25zLCBQaXBlbGluZVJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vc3RvcmUvcGlwZWxpbmUuYWN0aW9ucyc7XG5pbXBvcnQgeyBQaXBlbGluZVNlbGVjdG9ycyB9IGZyb20gJy4uLy4uL3N0b3JlL3BpcGVsaW5lLnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBHcmFwaFNlcmlhbGl6ZXJVdGlscyB9IGZyb20gJy4vZ3JhcGgtc2VyaWFsaXplci51dGlscyc7XG5pbXBvcnQgeyBQcnlTZXJpYWxpemVkUGlwZWxpbmUsIFByeVRyYW5zZm8gfSBmcm9tICcuL3BpcGVsaW5lLmludGVyZmFjZSc7XG5cbmV4cG9ydCBjb25zdCBNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5UID0gJ3BpcGVsaW5lL2NvbXBvbmVudCc7XG5leHBvcnQgY29uc3QgTUlNRV9UWVBFX1BJUEVMSU5FX1BST1BFUlRJRVMgPSAncGlwZWxpbmUvcHJvcGVydGllcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ByeS1waXBlbGluZS1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vcGlwZWxpbmUtZWRpdG9yLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBQcnlQaXBlbGluZUVkaXRvckNvbXBvbmVudCBleHRlbmRzIFN1YnNjcmlwdGlvbm5lckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBwaXBlbGluZT86IFByeVRyYW5zZm87XG4gIEBPdXRwdXQoKSBnb1RvQ29uc3VsdCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJ5VHJhbnNmbz4oKTtcbiAgQFZpZXdDaGlsZCgnY2FudmFzJykgY2FudmFzITogRWxlbWVudFJlZjxIVE1MQ2FudmFzRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2NhbnZhc1BhcmVudCcpIGNhbnZhc1BhcmVudCE6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xuICBAVmlld0NoaWxkKCdzcGVjaWZpYycsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiBmYWxzZSB9KSBjb21wb25lbnRSZWYhOiBWaWV3Q29udGFpbmVyUmVmO1xuICBsR3JhcGhzOiBMR3JhcGhbXSA9IFtdO1xuICBwcml2YXRlIGxHcmFwaENhbnZhcyE6IExHcmFwaENhbnZhcztcbiAgdHlwZXMkOiBPYnNlcnZhYmxlPHsgW2NhdGVnb3J5OiBzdHJpbmddOiBQaXBlbGluZUNvbXBvbmVudERlZmluaXRpb25bXSB9PjtcbiAgY2F0ZWdvcmllcyQ6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBzZWxlY3RlZE5vZGUkOiBPYnNlcnZhYmxlPEJhc2VOb2RlIHwgdW5kZWZpbmVkPjtcbiAgcmVzcG9uc2UkOiBPYnNlcnZhYmxlPFBpcGVsaW5lUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuICBpbnN0YW5jaWF0ZWRDb21wb25lbnQhOiBDb21wb25lbnRSZWY8YW55PjtcbiAgc2VsZWN0ZWROb2RlPzogQmFzZU5vZGU7XG4gIGFjdGlvbnMgPSBbXSBhcyB7IHR5cGU6IHN0cmluZzsgaWNvbjogc3RyaW5nIH1bXTtcbiAgZXJyb3JzJDogT2JzZXJ2YWJsZTwoTm9kZVBpcGVsaW5lRXJyb3IgJiB7IHRyYW5zbGF0ZWQ6IHN0cmluZyB9KVtdPjtcbiAgZGlzYWJsZUVkaXRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW1hZ2VzOiB7IHN0YXJ0OiBIVE1MSW1hZ2VFbGVtZW50OyBhZnRlcjogSFRNTEltYWdlRWxlbWVudCB9O1xuICBzZWFyY2gkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KHt9KTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZSxcbiAgICBwcml2YXRlIHBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2U6IFBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBQcnlJMThuU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIEJhc2VOb2RlLnN0b3JlID0gc3RvcmU7XG4gICAgQmFzZU5vZGUuY2hlY2sgPSAoKSA9PiB0aGlzLmNoZWNrKCk7XG5cbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLm5hbWVkUXVlcnkubG9hZCgpKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKERhdGFTb3VyY2VBY3Rpb25zLmRhdGFzZXQubG9hZERhdGFzZXQoKSk7XG5cbiAgICB0aGlzLnR5cGVzJCA9IGNvbWJpbmVMYXRlc3QoW3BpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UudHlwZXNCeUNhdGVnb3JpZXMkLCB0aGlzLnNlYXJjaCRdKS5waXBlKFxuICAgICAgbWFwKChbdHlwZXNCeUNhdGVnb3J5LCBzZWFyY2hdKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9IGFzIHsgW2NhdGVnb3J5OiBzdHJpbmddOiBQaXBlbGluZUNvbXBvbmVudERlZmluaXRpb25bXSB9O1xuICAgICAgICBPYmplY3Qua2V5cyh0eXBlc0J5Q2F0ZWdvcnkpLmZvckVhY2goKGNhdCkgPT4ge1xuICAgICAgICAgIHJlc3VsdFtjYXRdID0gdHlwZXNCeUNhdGVnb3J5W2NhdF0uZmlsdGVyKCh0eXBlKSA9PlxuICAgICAgICAgICAgdHlwZS5sYWJlbC50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKChzZWFyY2hbY2F0XSA/PyAnJykudG9Mb2NhbGVMb3dlckNhc2UoKSlcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pXG4gICAgKTtcbiAgICB0aGlzLmNhdGVnb3JpZXMkID0gcGlwZWxpbmVDb21wb25lbnRGYWN0b3J5U2VydmljZS5jYXRlZ29yaWVzJDtcblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlJCA9IHRoaXMuc3RvcmUuc2VsZWN0KFBpcGVsaW5lU2VsZWN0b3JzLnNlbGVjdGVkTm9kZUlkKS5waXBlKG1hcCgoaWQpID0+IHRoaXMuZmluZE5vZGVCeUlkKGlkKSkpO1xuXG4gICAgdGhpcy5yZXNwb25zZSQgPSB0aGlzLnN0b3JlLnNlbGVjdChQaXBlbGluZVNlbGVjdG9ycy5jaGVja1Jlc3BvbnNlKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICB0aGlzLnJlc3BvbnNlJC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsTm9kZXMuZm9yRWFjaCgoZXJyb3JOb2RlKSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGRlbGV0ZSBlcnJvck5vZGU/LmJnY29sb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIChyZXNwb25zZT8uc3RhdHVzLm1hcCgoc3RhdHVzKSA9PiBzdGF0dXMuZXJyb3JzKS5yZWR1Y2UoKHAsIGMpID0+IFsuLi5wLCAuLi5jXSwgW10pID8/IFtdKVxuICAgICAgICAgID8ubWFwKChlcnJvcikgPT4gdGhpcy5maW5kTm9kZUJ5SWQoZXJyb3Iubm9kZUlkKSlcbiAgICAgICAgICAuZmlsdGVyKChlcnJvck5vZGUpID0+ICEhZXJyb3JOb2RlKVxuICAgICAgICAgIC5mb3JFYWNoKChlcnJvck5vZGUpID0+IChlcnJvck5vZGUhLmJnY29sb3IgPSAnI2Q5MzUzNScpKTtcblxuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMuc2VsZWN0ZWROb2RlJC5waXBlKGNvbWJpbmVMYXRlc3RXaXRoKHRoaXMucmVzcG9uc2UkKSkuc3Vic2NyaWJlKChbbm9kZSwgcmVzcG9uc2VdKSA9PiB7XG4gICAgICBpZiAodGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQpIHtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuY2xlYXIoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKCdkb3duJyk7XG4gICAgICBpZiAobm9kZSkge1xuICAgICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLnBpcGVsaW5lQ29tcG9uZW50RmFjdG9yeVNlcnZpY2UuZ2V0KG5vZGU/LnR5cGUgPz8gJycpO1xuICAgICAgICBpZiAobW9kdWxlKSB7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQgPSB0aGlzLmNvbXBvbmVudFJlZi5jcmVhdGVDb21wb25lbnQobW9kdWxlLmNvbXBvbmVudCk7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQuaW5zdGFuY2Uubm9kZSA9IG5vZGU7XG4gICAgICAgICAgdGhpcy5pbnN0YW5jaWF0ZWRDb21wb25lbnQuaW5zdGFuY2UuY2hlY2tGbiA9ICgpID0+IHt9O1xuICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlRWRpdGluZztcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLmNoZWNrRm4gPSAoKSA9PiB0aGlzLmNoZWNrKCk7XG4gICAgICAgICAgfSwgMTAwKTtcblxuICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdTdGF0dXMgPSByZXNwb25zZS5zdGF0dXMuZmluZCgoc3RhdHVzKSA9PiBzdGF0dXMubm9kZUlkID09PSBub2RlLnByb3BlcnRpZXNbJ2lkJ10pO1xuICAgICAgICAgICAgaWYgKG1hdGNoaW5nU3RhdHVzKSB7XG4gICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2lhdGVkQ29tcG9uZW50Lmluc3RhbmNlLm1vZGVsID0gbWF0Y2hpbmdTdGF0dXMub3V0TW9kZWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLnR5cGUgPT09ICdTdWJHcmFwaE5vZGUnKSB7XG4gICAgICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZXllLWFycm93LWRvd24nLCB0eXBlOiAnZG93bicgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZGVsZXRlJywgdHlwZTogJ2RlbGV0ZScgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbW92ZUFjdGlvbignZGVsZXRlJyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuc2VsZWN0ZWROb2RlJC5zdWJzY3JpYmUoKG5vZGUpID0+ICh0aGlzLnNlbGVjdGVkTm9kZSA9IG5vZGUpKSk7XG5cbiAgICB0aGlzLmVycm9ycyQgPSBjb21iaW5lTGF0ZXN0KFt0aGlzLnJlc3BvbnNlJCwgdGhpcy5zZWxlY3RlZE5vZGUkXSkucGlwZShcbiAgICAgIG1hcCgoW3Jlc3BvbnNlLCBzZWxlY3RlZE5vZGVdKSA9PiBbXG4gICAgICAgIC4uLihyZXNwb25zZT8uZXJyb3JzID8/IFtdKS5tYXAoKGVycm9yKSA9PiAoeyAuLi5lcnJvciwgbm9kZUlkOiAnLScgfSkpLFxuICAgICAgICAuLi4ocmVzcG9uc2U/LnN0YXR1cy5maW5kKChzdGF0dXMpID0+IHN0YXR1cy5ub2RlSWQgPT09IChzZWxlY3RlZE5vZGU/LnByb3BlcnRpZXNbJ2lkJ10gPz8gJy0tLS0tJykpPy5lcnJvcnMgPz9cbiAgICAgICAgICBbXSlcbiAgICAgIF0pLFxuICAgICAgbWFwKChlcnJvcnMpID0+XG4gICAgICAgIGVycm9ycy5tYXAoKGVycm9yKSA9PiAoe1xuICAgICAgICAgIC4uLmVycm9yLFxuICAgICAgICAgIHRyYW5zbGF0ZWQ6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdAcHJ5LnBpcGVsaW5lLmNvZGVzLicgKyBlcnJvci5jb2RlLCBlcnJvcilcbiAgICAgICAgfSkpXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoYXVkaXRUaW1lKDEwMCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMub25SZXNpemUoKTtcbiAgICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5pbWFnZXMgPSB7XG4gICAgICBzdGFydDogbmV3IEltYWdlKCksXG4gICAgICBhZnRlcjogbmV3IEltYWdlKClcbiAgICB9O1xuICAgIHRoaXMuaW1hZ2VzLnN0YXJ0LnNyYyA9ICcvYXNzZXRzL2JhY2tncm91bmRzL2ltZ19wcm9jZXNzdXMucG5nJztcbiAgICB0aGlzLmltYWdlcy5hZnRlci5zcmMgPSAnJztcbiAgfVxuXG4gIGdldCBjdXJyZW50R3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMubEdyYXBoc1t0aGlzLmxHcmFwaHMubGVuZ3RoIC0gMV07XG4gIH1cblxuICBnZXQgYWxsTm9kZXMoKTogQmFzZU5vZGVbXSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRHcmFwaD8uX25vZGVzID8/IFtdO1xuICB9XG5cbiAgZ2V0IGJhY2tncm91bmRJbWFnZSgpIHtcbiAgICByZXR1cm4gKHRoaXMucGlwZWxpbmU/Lm5vZGVzID8/IFtdKS5sZW5ndGggPiAwID8gdGhpcy5pbWFnZXMuYWZ0ZXIgOiB0aGlzLmltYWdlcy5zdGFydDtcbiAgfVxuXG4gIGZpbmROb2RlQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsTm9kZXMuZmluZCgobm9kZSkgPT4gbm9kZS5wcm9wZXJ0aWVzWydpZCddID09PSBpZCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5sR3JhcGhzLnB1c2gobmV3IExHcmFwaCgpKTtcbiAgICB0aGlzLmxHcmFwaENhbnZhcyA9IG5ldyBMR3JhcGhDYW52YXModGhpcy5jYW52YXMubmF0aXZlRWxlbWVudCwgdGhpcy5jdXJyZW50R3JhcGgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLmFsbG93X3NlYXJjaGJveCA9IGZhbHNlO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnRpdGxlX3RleHRfZm9udCA9ICdib2xkIDE0cHggVWJ1bnR1JztcbiAgICB0aGlzLmxHcmFwaENhbnZhcy5pbm5lcl90ZXh0X2ZvbnQgPSAnbm9ybWFsIDEycHggVWJ1bnR1JztcbiAgICB0aGlzLmxHcmFwaENhbnZhcy5kZWZhdWx0X2xpbmtfY29sb3IgPSAnIzAwMDAwMCc7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHRoaXMubEdyYXBoQ2FudmFzLmJhY2tncm91bmRfaW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sR3JhcGhDYW52YXMub25EcmF3QmFja2dyb3VuZCA9IChjdHgsIHZlY3RvcikgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIGN0eC5maWxsU3R5bGUgPSAnd2hpdGUnO1xuICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0KTtcblxuICAgICAgY29uc3QgaW1nU2l6ZSA9IFszMDYsIDE3MV07XG4gICAgICBjdHguZHJhd0ltYWdlKFxuICAgICAgICB0aGlzLmJhY2tncm91bmRJbWFnZSxcbiAgICAgICAgKHJlY3Qud2lkdGggLSBpbWdTaXplWzBdKSAvIDIsXG4gICAgICAgIChyZWN0LmhlaWdodCAtIGltZ1NpemVbMV0pIC8gMixcbiAgICAgICAgaW1nU2l6ZVswXSxcbiAgICAgICAgaW1nU2l6ZVsxXVxuICAgICAgKTtcbiAgICB9O1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLm9uTm9kZURlc2VsZWN0ZWQgPSAoKSA9PiB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgIH07XG4gICAgdGhpcy5jdXJyZW50R3JhcGguc3RhcnQoKTtcbiAgICBpZiAodGhpcy5waXBlbGluZSkge1xuICAgICAgR3JhcGhTZXJpYWxpemVyVXRpbHMuaHlkcmF0ZSh0aGlzLnBpcGVsaW5lIGFzIFByeVNlcmlhbGl6ZWRQaXBlbGluZSwgdGhpcy5jdXJyZW50R3JhcGgpO1xuICAgICAgdGhpcy5kaXNhYmxlRWRpdGluZyA9IHRoaXMucGlwZWxpbmUuYWN0aXZlO1xuICAgIH1cbiAgICB0aGlzLm9uUmVzaXplKCk7XG4gIH1cblxuICBvblJlc2l6ZSgpIHtcbiAgICAvLyBNYWtlIGNhbnZhcyBzbyBsaXR0bGUgdGhhdCBpdCBkb2Vzbid0IGltcGFjdCBjc3Mgc2l6ZSBjYWxjdWxhdGlvblxuICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQud2lkdGggPSAxMDtcbiAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LmhlaWdodCA9IDEwO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnJlc2l6ZSgxMCwgMTApO1xuXG4gICAgLy8gTGF0ZXIsIG1ha2UgaXQgZ3JvdyB0byBwcm9wZXIgc2l6ZVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVjdCA9IHRoaXMuY2FudmFzUGFyZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICB0aGlzLmNhbnZhcy5uYXRpdmVFbGVtZW50LndpZHRoID0gcmVjdC53aWR0aDtcbiAgICAgIHRoaXMuY2FudmFzLm5hdGl2ZUVsZW1lbnQuaGVpZ2h0ID0gcmVjdC5oZWlnaHQ7XG4gICAgICB0aGlzLmxHcmFwaENhbnZhcy5yZXNpemUocmVjdC53aWR0aCwgcmVjdC5oZWlnaHQpO1xuICAgICAgdGhpcy5yZWZyZXNoKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgZGlzcGxheUdyYXBoKGdyYXBoOiBMR3JhcGgpIHtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaC5zdG9wKCk7XG4gICAgdGhpcy5sR3JhcGhzLnB1c2goZ3JhcGgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnNldEdyYXBoKGdyYXBoKTtcbiAgICBncmFwaC5zdGFydCgpO1xuICB9XG5cbiAgcG9wR3JhcGgoKSB7XG4gICAgdGhpcy5jdXJyZW50R3JhcGguc3RvcCgpO1xuICAgIHRoaXMubEdyYXBocy5sZW5ndGggPSB0aGlzLmxHcmFwaHMubGVuZ3RoIC0gMTtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaC5zdGFydCgpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLnNldEdyYXBoKHRoaXMuY3VycmVudEdyYXBoKTtcbiAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgIHRoaXMubEdyYXBoQ2FudmFzLmRlc2VsZWN0QWxsTm9kZXMoKTtcbiAgICBpZiAodGhpcy5sR3JhcGhzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdGhpcy5yZW1vdmVBY3Rpb24oJ3VwJyk7XG4gICAgfVxuICB9XG5cbiAgcHVwR3JhcGgobm9kZTogQmFzZU5vZGUpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCEhbm9kZS5zdWJHcmFwaCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGhpcy5kaXNwbGF5R3JhcGgobm9kZS5zdWJHcmFwaCk7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKFBpcGVsaW5lQWN0aW9ucy5zZWxlY3QoeyBpZDogJycgfSkpO1xuICAgICAgdGhpcy5sR3JhcGhDYW52YXMuZGVzZWxlY3RBbGxOb2RlcygpO1xuICAgICAgdGhpcy5hZGRBY3Rpb24oeyBpY29uOiAnZXllLWFycm93LXVwJywgdHlwZTogJ3VwJyB9KTtcbiAgICB9XG4gIH1cblxuICBjaGVjaygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZUVkaXRpbmcpIHtcbiAgICAgIHRoaXMucGlwZWxpbmUgPSB7XG4gICAgICAgIC4uLnRoaXMucGlwZWxpbmUsXG4gICAgICAgIC4uLkdyYXBoU2VyaWFsaXplclV0aWxzLnNlcmlhbGl6ZSh0aGlzLmxHcmFwaHNbMF0sIHRoaXMucGlwZWxpbmU/LmlkKVxuICAgICAgfSBhcyBQcnlUcmFuc2ZvO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgICAgUGlwZWxpbmVBY3Rpb25zLmNoZWNrKHtcbiAgICAgICAgICAgIGdyYXBoOiB7XG4gICAgICAgICAgICAgIGlkOiB0aGlzLnBpcGVsaW5lPy5pZCxcbiAgICAgICAgICAgICAgbm9kZXM6IHRoaXMucGlwZWxpbmU/Lm5vZGVzLFxuICAgICAgICAgICAgICBsaW5rczogdGhpcy5waXBlbGluZT8ubGlua3MsXG4gICAgICAgICAgICAgIHRpdGxlOiB0aGlzLnBpcGVsaW5lPy50aXRsZSxcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHRoaXMucGlwZWxpbmU/LmRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH0sIDEwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVmcmVzaCgpIHtcbiAgICB0aGlzLmN1cnJlbnRHcmFwaD8uY2hhbmdlKCk7XG4gIH1cblxuICBjcmVhdGVOb2RlKHR5cGU6IHN0cmluZywgcG9zaXRpb246IFtudW1iZXIsIG51bWJlcl0sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBhbnkpIHtcbiAgICBjb25zdCB0aXRsZSA9IGFkZGl0aW9uYWxQcm9wZXJ0aWVzLl9sYWJlbCA/PyB0eXBlLnNwbGl0KCcuJylbdHlwZS5zcGxpdCgnLicpLmxlbmd0aCAtIDFdID8/ICc/JztcbiAgICBjb25zdCBub2RlX2NvbnN0ID0gTGl0ZUdyYXBoLmNyZWF0ZU5vZGUodHlwZSwgdGl0bGUsIHt9KTtcbiAgICBpZiAobm9kZV9jb25zdCAhPT0gbnVsbCkge1xuICAgICAgbm9kZV9jb25zdC50aXRsZSA9IHRpdGxlO1xuICAgICAgbm9kZV9jb25zdC5wb3MgPSBwb3NpdGlvbjtcbiAgICAgIE9iamVjdC5rZXlzKGFkZGl0aW9uYWxQcm9wZXJ0aWVzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgbm9kZV9jb25zdC5wcm9wZXJ0aWVzW2tleV0gPSBhZGRpdGlvbmFsUHJvcGVydGllc1trZXldO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuY3VycmVudEdyYXBoLmFkZChub2RlX2NvbnN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IGNyZWF0ZSBub2RlIG9mIHR5cGUgJHt0eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0KCRldmVudDogRHJhZ0V2ZW50LCBjb21wb25lbnQ6IFBpcGVsaW5lQ29tcG9uZW50RGVmaW5pdGlvbikge1xuICAgIGlmICghISRldmVudCAmJiAhISRldmVudC5kYXRhVHJhbnNmZXIgJiYgISRldmVudC5kYXRhVHJhbnNmZXIudHlwZXMuaW5jbHVkZXMoTUlNRV9UWVBFX1BJUEVMSU5FX0NPTVBPTkVOVCkpIHtcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5JztcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdjb3B5JztcbiAgICAgICRldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5ULCBjb21wb25lbnQudHlwZSk7XG4gICAgICAkZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoTUlNRV9UWVBFX1BJUEVMSU5FX1BST1BFUlRJRVMsIEpTT04uc3RyaW5naWZ5KHsgLi4uY29tcG9uZW50LmFkZGl0aW9uYWxQcm9wZXJ0aWVzIH0pKTtcbiAgICB9XG4gIH1cblxuICBvbkRyb3AoJGV2ZW50OiBEcmFnRXZlbnQpIHtcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAoISEkZXZlbnQgJiYgISEkZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICBpZiAoJGV2ZW50LmRhdGFUcmFuc2Zlci50eXBlcy5pbmNsdWRlcyhNSU1FX1RZUEVfUElQRUxJTkVfQ09NUE9ORU5UKSkge1xuICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlID0gJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9QSVBFTElORV9DT01QT05FTlQpO1xuICAgICAgICBjb25zdCBhZGRpdGlvbmFsUHJvcGVydGllcyA9IEpTT04ucGFyc2UoJGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKE1JTUVfVFlQRV9QSVBFTElORV9QUk9QRVJUSUVTKSk7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlZEV2ZW50ID0gdGhpcy5sR3JhcGhDYW52YXMuY29udmVydEV2ZW50VG9DYW52YXNPZmZzZXQoJGV2ZW50KTtcbiAgICAgICAgdGhpcy5jcmVhdGVOb2RlKGNvbXBvbmVudFR5cGUsIFtjb252ZXJ0ZWRFdmVudFswXSwgY29udmVydGVkRXZlbnRbMV1dLCBhZGRpdGlvbmFsUHJvcGVydGllcyk7XG4gICAgICAgIHRoaXMuY2hlY2soKTtcbiAgICAgICAgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVRpdGxlKG5vZGU6IExHcmFwaE5vZGUsICRldmVudDogRXZlbnQpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbm9kZS50aXRsZSA9ICRldmVudC50YXJnZXQ/LnZhbHVlO1xuICAgIHRoaXMucmVmcmVzaCgpO1xuICB9XG5cbiAgY2xpY2tlZEFjdGlvbihhY3Rpb246IGFueSkge1xuICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgdGhpcy5wb3BHcmFwaCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICB0aGlzLnB1cEdyYXBoKHRoaXMuc2VsZWN0ZWROb2RlISk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZGVsZXRlJzpcbiAgICAgICAgdGhpcy5jdXJyZW50R3JhcGgucmVtb3ZlKHRoaXMuc2VsZWN0ZWROb2RlISk7XG4gICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKCdkZWxldGUnKTtcbiAgICAgICAgdGhpcy5jaGVjaygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgdGhpcy5zdG9yZS5kaXNwYXRjaChQaXBlbGluZUFjdGlvbnMuc2VsZWN0KHsgaWQ6ICcnIH0pKTtcbiAgfVxuXG4gIGFkZEFjdGlvbihhZGQ6IHsgdHlwZTogc3RyaW5nOyBpY29uOiBzdHJpbmcgfSkge1xuICAgIGlmICghdGhpcy5hY3Rpb25zLmZpbmQoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgPT09IGFkZC50eXBlKSkge1xuICAgICAgdGhpcy5hY3Rpb25zLnB1c2goYWRkKTtcbiAgICB9XG4gICAgdGhpcy5hY3Rpb25zLnNvcnQoKGEsIGIpID0+IGEudHlwZS5sb2NhbGVDb21wYXJlKGIudHlwZSkpO1xuICB9XG5cbiAgcmVtb3ZlQWN0aW9uKHR5cGU6IHN0cmluZykge1xuICAgIHRoaXMuYWN0aW9ucyA9IHRoaXMuYWN0aW9ucy5maWx0ZXIoKGFjdGlvbikgPT4gYWN0aW9uLnR5cGUgIT09IHR5cGUpO1xuICB9XG5cbiAgZ29CYWNrKCkge1xuICAgIHRoaXMuZ29Ub0NvbnN1bHQuZW1pdCh0aGlzLnBpcGVsaW5lKTtcbiAgfVxuXG4gIHNlYXJjaCgkZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoJC5uZXh0KHsgLi4uJGV2ZW50IH0pO1xuICB9XG59XG4iLCI8cHJ5LXBpcGVsaW5lLWNzcz48L3ByeS1waXBlbGluZS1jc3M+XG48ZGl2IGNsYXNzPVwiby1waXBlbGluZVwiPlxuICA8ZGl2IGNsYXNzPVwiby1waXBlbGluZV9fbWVudVwiPlxuICAgIDxwcnktYWNjb3JkaW9uPlxuICAgICAgQGZvciAoY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcyQgfCBhc3luYzsgdHJhY2sgY2F0ZWdvcnk7IGxldCBpbmRleCA9ICRpbmRleCkge1xuICAgICAgICA8cHJ5LWFjY29yZGlvbi1pdGVtXG4gICAgICAgICAgW2l0ZW1dPVwiY2F0ZWdvcnlcIlxuICAgICAgICAgIFtib3JkZXJDb2xvcl09XCIodHlwZXMkIHwgYXN5bmMpIVtjYXRlZ29yeV1bMF0uY29sb3JcIlxuICAgICAgICAgIFtpbmRleF09XCJpbmRleFwiXG4gICAgICAgICAgW3Nob3dTZWFyY2hCYXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW3NlYXJjaCRdPVwic2VhcmNoJFwiXG4gICAgICAgICAgKHNlYXJjaCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgdHJhbnNsYXRpb25TdHJpbmdCYXNlPVwiQHByeS5waXBlbGluZS5cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJvLXBpcGVsaW5lX19jb21wb25lbnRzXCI+XG4gICAgICAgICAgICBAZm9yICh0eXBlIG9mICh0eXBlcyQgfCBhc3luYykhW2NhdGVnb3J5XTsgdHJhY2sgdHlwZSkge1xuICAgICAgICAgICAgICA8bGkgW2RyYWdnYWJsZV09XCIhdGhpcy5kaXNhYmxlRWRpdGluZ1wiIChkcmFnc3RhcnQpPVwib25EcmFnU3RhcnQoJGV2ZW50LCB0eXBlKVwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1wXCI+e3sgdHlwZS5sYWJlbCB9fTwvcD5cbiAgICAgICAgICAgICAgICA8cHJ5LWljb24gW3dpZHRoXT1cIjJcIiBbaGVpZ2h0XT1cIjIwXCIgaWNvblN2Zz1cImluZm9cIj48L3ByeS1pY29uPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvcHJ5LWFjY29yZGlvbi1pdGVtPlxuICAgICAgfVxuICAgIDwvcHJ5LWFjY29yZGlvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmVfX3dvcmtzcGFjZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWxheW91dF9fdG9vbGJveFwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImEtYnRuIGEtYnRuLS1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImdvQmFjaygpXCI+XG4gICAgICAgIHt7ICdAcHJ5LnBpcGVsaW5lLmJhY2tUb0Rlc2NyaXB0aW9uJyB8IGkxOG4gfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnM7IHRyYWNrIGFjdGlvbikge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xpY2tlZEFjdGlvbihhY3Rpb24pXCIgY2xhc3M9XCJhLWJ0biBhLWJ0bi0tc2Vjb25kYXJ5XCI+XG4gICAgICAgICAge3sgJ0BwcnkucGlwZWxpbmUuJyArIGFjdGlvbi50eXBlIHwgaTE4biB9fVxuICAgICAgICAgIDxwcnktaWNvbiBbaWNvblN2Z109XCJhY3Rpb24uaWNvblwiPjwvcHJ5LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXY+XG4gICAgICA8aDEgY2xhc3M9XCJhLWgxXCI+e3sgdGhpcy5waXBlbGluZT8udGl0bGUgfX08L2gxPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvclwiPlxuICAgICAgPGRpdiAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiIGNsYXNzPVwiby1waXBlbGluZS1lZGl0b3JfX2dyaWRcIiAjY2FudmFzUGFyZW50PlxuICAgICAgICA8Y2FudmFzICNjYW52YXMgY2xhc3M9XCJjYW52YXNcIj48L2NhbnZhcz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm8tcGlwZWxpbmUtZWRpdG9yX19wcm9wZXJ0aWVzXCI+XG4gICAgICAgIEBpZiAoc2VsZWN0ZWROb2RlJCB8IGFzeW5jOyBhcyBub2RlKSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvcl9fcHJvcGVydGllc19fbm9kZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwibm9kZS5wcm9wZXJ0aWVzWydpZCddXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxoMyBjbGFzcz1cImEtaDNcIj57eyAnQHByeS5waXBlbGluZS5zZWxlY3RlZFRhc2snIHwgaTE4biB9fTwvaDM+XG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJhLWg0XCI+e3sgJ0BwcnkucGlwZWxpbmUudHlwZScgfCBpMThuIH19PC9oND5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYS1wIGEtcC0tdHlwZVwiPnt7IG5vZGUudHlwZSB9fTwvcD5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWZvcm0tbGFiZWwtZmllbGRcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiYS1sYWJlbFwiIGZvcj1cInt7IG5vZGUuaWQgfX1cIj57eyAnQHByeS5waXBlbGluZS50aXRsZScgfCBpMThuIH19PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhLWZvcm0tZmllbGRcIlxuICAgICAgICAgICAgICAgIGlkPVwie3sgbm9kZS5pZCB9fVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJub2RlLnRpdGxlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZUVkaXRpbmdcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiY2hhbmdlVGl0bGUobm9kZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvcl9fcHJvcGVydGllc19fZGV0YWlsXCIgW2NsYXNzLmlzLWVtcHR5XT1cIiFzZWxlY3RlZE5vZGVcIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiAjc3BlY2lmaWM+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKCgoZXJyb3JzJCB8IGFzeW5jKT8ubGVuZ3RoID8/IDApID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJvLXBpcGVsaW5lLWVkaXRvcl9fcHJvcGVydGllc19fZXJyb3JzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiby1waXBlbGluZS1lZGl0b3JfX3Byb3BlcnRpZXNfX2Vycm9yc19fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHByeS1pY29uIGljb25Tdmc9XCJ3YXJuaW5nLXRyaWFuZ2xlXCI+PC9wcnktaWNvbj5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhLXBcIj57eyAnQHByeS5waXBlbGluZS5lcnJvcnMnIHwgaTE4biB9fTo8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgQGZvciAoZXJyb3Igb2YgZXJyb3JzJCB8IGFzeW5jOyB0cmFjayBlcnJvcikge1xuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidHlwZVwiPnt7XG4gICAgICAgICAgICAgICAgICAgIChlcnJvcj8ubm9kZUlkID09PSAnLScgPyAnQHByeS5waXBlbGluZS5nbG9iYWwnIDogJ0BwcnkucGlwZWxpbmUubm9kZScpIHwgaTE4blxuICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7eyBlcnJvci50cmFuc2xhdGVkIH19XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=