@hmcts/ccd-case-ui-toolkit 7.1.31-ungrey-back-button → 7.1.31

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 (116) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit/case-edit.component.mjs +3 -3
  2. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +33 -107
  3. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +37 -60
  4. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +4 -7
  5. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +1 -3
  6. package/esm2022/lib/shared/components/case-editor/services/event-completion-state-machine.service.mjs +14 -2
  7. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +5 -1
  8. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +4 -14
  9. package/esm2022/lib/shared/components/palette/base-field/index.mjs +1 -3
  10. package/esm2022/lib/shared/components/palette/case-file-view/components/case-file-view-folder/case-file-view-folder.component.mjs +8 -9
  11. package/esm2022/lib/shared/components/palette/case-file-view/test-data/categories-and-documents-test-data.mjs +2 -2
  12. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +21 -21
  13. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +3 -3
  14. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +22 -25
  15. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +35 -77
  16. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +29 -32
  17. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +28 -33
  18. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +63 -159
  19. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.mjs +28 -28
  20. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +105 -124
  21. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +4 -30
  22. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +33 -139
  23. package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +17 -5
  24. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +21 -41
  25. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +7 -19
  26. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +61 -71
  27. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +9 -13
  28. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +48 -85
  29. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +2 -22
  30. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +52 -109
  31. package/esm2022/lib/shared/components/palette/palette.module.mjs +2 -2
  32. package/esm2022/lib/shared/components/palette/unsupported-field.component.mjs +4 -3
  33. package/esm2022/lib/shared/components/palette/utils/date.pipe.mjs +2 -2
  34. package/esm2022/lib/shared/components/search-result/search-result.component.mjs +39 -35
  35. package/esm2022/lib/shared/domain/index.mjs +1 -2
  36. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +2 -2
  37. package/esm2022/lib/shared/services/index.mjs +1 -2
  38. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +877 -1659
  39. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  40. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +3 -16
  41. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  42. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +2 -7
  43. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  44. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  45. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +0 -1
  46. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -1
  47. package/lib/shared/components/case-editor/services/event-completion-state-machine.service.d.ts.map +1 -1
  48. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  49. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +1 -2
  50. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  51. package/lib/shared/components/palette/base-field/index.d.ts +0 -2
  52. package/lib/shared/components/palette/base-field/index.d.ts.map +1 -1
  53. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +2 -4
  54. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  55. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +2 -4
  56. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -1
  57. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -11
  58. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  59. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +3 -6
  60. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  61. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -5
  62. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  63. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +6 -16
  64. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  65. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +2 -4
  66. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts.map +1 -1
  67. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +3 -7
  68. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  69. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +0 -1
  70. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  71. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +6 -16
  72. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  73. package/lib/shared/components/palette/document/write-document-field.component.d.ts +3 -1
  74. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  75. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +3 -6
  76. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  77. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +2 -6
  78. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -1
  79. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +3 -6
  80. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  81. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +2 -5
  82. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
  83. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +3 -9
  84. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  85. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +0 -7
  86. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  87. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +3 -10
  88. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  89. package/lib/shared/components/palette/unsupported-field.component.d.ts +1 -1
  90. package/lib/shared/components/palette/unsupported-field.component.d.ts.map +1 -1
  91. package/lib/shared/domain/index.d.ts +0 -1
  92. package/lib/shared/domain/index.d.ts.map +1 -1
  93. package/lib/shared/services/index.d.ts +0 -1
  94. package/lib/shared/services/index.d.ts.map +1 -1
  95. package/package.json +1 -1
  96. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +0 -96
  97. package/esm2022/lib/shared/components/palette/base-field/abstract-journey.component.mjs +0 -82
  98. package/esm2022/lib/shared/domain/journey/index.mjs +0 -3
  99. package/esm2022/lib/shared/domain/journey/journey-instigator.model.mjs +0 -2
  100. package/esm2022/lib/shared/domain/journey/journey.model.mjs +0 -2
  101. package/esm2022/lib/shared/services/journey/index.mjs +0 -2
  102. package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +0 -117
  103. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts +0 -30
  104. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts.map +0 -1
  105. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts +0 -27
  106. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts.map +0 -1
  107. package/lib/shared/domain/journey/index.d.ts +0 -3
  108. package/lib/shared/domain/journey/index.d.ts.map +0 -1
  109. package/lib/shared/domain/journey/journey-instigator.model.d.ts +0 -5
  110. package/lib/shared/domain/journey/journey-instigator.model.d.ts.map +0 -1
  111. package/lib/shared/domain/journey/journey.model.d.ts +0 -19
  112. package/lib/shared/domain/journey/journey.model.d.ts.map +0 -1
  113. package/lib/shared/services/journey/index.d.ts +0 -2
  114. package/lib/shared/services/journey/index.d.ts.map +0 -1
  115. package/lib/shared/services/journey/multipage-component-state.service.d.ts +0 -26
  116. package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +0 -1
@@ -1,27 +1,23 @@
1
1
  import { Component } from '@angular/core';
2
- import { FormControl, FormGroup } from '@angular/forms';
2
+ import { FormControl } from '@angular/forms';
3
3
  import { AbstractAppConfig } from '../../../../app.config';
4
4
  import { CaseEditDataService } from '../../../commons/case-edit-data';
5
5
  import { CommonDataService } from '../../../services/common-data-service/common-data-service';
6
6
  import { CasesService } from '../../case-editor/services/cases.service';
7
- import { AbstractFieldWriteJourneyComponent } from '../base-field';
7
+ import { AbstractFieldWriteComponent } from '../base-field';
8
8
  import { LinkedCasesEventTriggers, LinkedCasesPages } from './enums';
9
9
  import { LinkedCasesService } from './services';
10
10
  import { Subscription } from 'rxjs';
11
- import { MultipageComponentStateService } from '../../../services';
12
- import { Router } from '@angular/router';
13
11
  import * as i0 from "@angular/core";
14
12
  import * as i1 from "../../../../app.config";
15
13
  import * as i2 from "../../../services/common-data-service/common-data-service";
16
14
  import * as i3 from "../../case-editor/services/cases.service";
17
15
  import * as i4 from "./services";
18
16
  import * as i5 from "../../../commons/case-edit-data";
19
- import * as i6 from "@angular/router";
20
- import * as i7 from "../../../services";
21
17
  function WriteLinkedCasesFieldComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
22
18
  const _r1 = i0.ɵɵgetCurrentView();
23
19
  i0.ɵɵelementContainerStart(0);
24
- i0.ɵɵelementStart(1, "ccd-linked-cases-before-you-start", 4, 0);
20
+ i0.ɵɵelementStart(1, "ccd-linked-cases-before-you-start", 3);
25
21
  i0.ɵɵlistener("linkedCasesStateEmitter", function WriteLinkedCasesFieldComponent_ng_container_2_Template_ccd_linked_cases_before_you_start_linkedCasesStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLinkedCasesStateEmitted($event)); });
26
22
  i0.ɵɵelementEnd();
27
23
  i0.ɵɵelementContainerEnd();
@@ -29,7 +25,7 @@ function WriteLinkedCasesFieldComponent_ng_container_2_Template(rf, ctx) { if (r
29
25
  function WriteLinkedCasesFieldComponent_ng_container_3_Template(rf, ctx) { if (rf & 1) {
30
26
  const _r3 = i0.ɵɵgetCurrentView();
31
27
  i0.ɵɵelementContainerStart(0);
32
- i0.ɵɵelementStart(1, "ccd-no-linked-cases", 4, 0);
28
+ i0.ɵɵelementStart(1, "ccd-no-linked-cases", 3);
33
29
  i0.ɵɵlistener("linkedCasesStateEmitter", function WriteLinkedCasesFieldComponent_ng_container_3_Template_ccd_no_linked_cases_linkedCasesStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLinkedCasesStateEmitted($event)); });
34
30
  i0.ɵɵelementEnd();
35
31
  i0.ɵɵelementContainerEnd();
@@ -37,7 +33,7 @@ function WriteLinkedCasesFieldComponent_ng_container_3_Template(rf, ctx) { if (r
37
33
  function WriteLinkedCasesFieldComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {
38
34
  const _r4 = i0.ɵɵgetCurrentView();
39
35
  i0.ɵɵelementContainerStart(0);
40
- i0.ɵɵelementStart(1, "ccd-link-cases", 4, 0);
36
+ i0.ɵɵelementStart(1, "ccd-link-cases", 3);
41
37
  i0.ɵɵlistener("linkedCasesStateEmitter", function WriteLinkedCasesFieldComponent_ng_container_4_Template_ccd_link_cases_linkedCasesStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLinkedCasesStateEmitted($event)); });
42
38
  i0.ɵɵelementEnd();
43
39
  i0.ɵɵelementContainerEnd();
@@ -45,7 +41,7 @@ function WriteLinkedCasesFieldComponent_ng_container_4_Template(rf, ctx) { if (r
45
41
  function WriteLinkedCasesFieldComponent_ng_container_5_Template(rf, ctx) { if (rf & 1) {
46
42
  const _r5 = i0.ɵɵgetCurrentView();
47
43
  i0.ɵɵelementContainerStart(0);
48
- i0.ɵɵelementStart(1, "ccd-unlink-cases", 4, 0);
44
+ i0.ɵɵelementStart(1, "ccd-unlink-cases", 3);
49
45
  i0.ɵɵlistener("linkedCasesStateEmitter", function WriteLinkedCasesFieldComponent_ng_container_5_Template_ccd_unlink_cases_linkedCasesStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLinkedCasesStateEmitted($event)); });
50
46
  i0.ɵɵelementEnd();
51
47
  i0.ɵɵelementContainerEnd();
@@ -53,18 +49,17 @@ function WriteLinkedCasesFieldComponent_ng_container_5_Template(rf, ctx) { if (r
53
49
  function WriteLinkedCasesFieldComponent_ng_container_6_Template(rf, ctx) { if (rf & 1) {
54
50
  const _r6 = i0.ɵɵgetCurrentView();
55
51
  i0.ɵɵelementContainerStart(0);
56
- i0.ɵɵelementStart(1, "ccd-linked-cases-check-your-answers", 4, 0);
52
+ i0.ɵɵelementStart(1, "ccd-linked-cases-check-your-answers", 3);
57
53
  i0.ɵɵlistener("linkedCasesStateEmitter", function WriteLinkedCasesFieldComponent_ng_container_6_Template_ccd_linked_cases_check_your_answers_linkedCasesStateEmitter_1_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onLinkedCasesStateEmitted($event)); });
58
54
  i0.ɵɵelementEnd();
59
55
  i0.ɵɵelementContainerEnd();
60
56
  } }
61
- export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyComponent {
57
+ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteComponent {
62
58
  appConfig;
63
59
  commonDataService;
64
60
  casesService;
65
61
  linkedCasesService;
66
62
  caseEditDataService;
67
- router;
68
63
  caseEditForm;
69
64
  caseDetails;
70
65
  linkedCasesPage;
@@ -72,20 +67,15 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
72
67
  linkedCasesEventTriggers = LinkedCasesEventTriggers;
73
68
  linkedCases = [];
74
69
  subscriptions = new Subscription();
75
- constructor(appConfig, commonDataService, casesService, linkedCasesService, caseEditDataService, router, multipageComponentStateService) {
76
- super(multipageComponentStateService);
70
+ constructor(appConfig, commonDataService, casesService, linkedCasesService, caseEditDataService) {
71
+ super();
77
72
  this.appConfig = appConfig;
78
73
  this.commonDataService = commonDataService;
79
74
  this.casesService = casesService;
80
75
  this.linkedCasesService = linkedCasesService;
81
76
  this.caseEditDataService = caseEditDataService;
82
- this.router = router;
83
- this.handleBackButton = this.handleBackButton.bind(this);
84
77
  }
85
78
  ngOnInit() {
86
- const trigUrl = location.href;
87
- this.addState(null, this.router.url.split('/').splice(0, this.router.url.split('/').indexOf('trigger')).join('/'));
88
- this.addState(0, trigUrl);
89
79
  // This is required to enable Continue button validation
90
80
  // Continue button should be enabled only at check your answers page
91
81
  this.caseEditDataService.setLinkedCasesJourneyAtFinalStep(false);
@@ -94,40 +84,17 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
94
84
  // Get linked case reasons from ref data
95
85
  this.linkedCasesService.editMode = false;
96
86
  this.subscriptions.add(this.caseEditDataService.caseDetails$.subscribe({
97
- next: caseDetails => { this.initialiseCaseDetails(caseDetails); }
87
+ next: (caseDetails) => {
88
+ this.initialiseCaseDetails(caseDetails);
89
+ }
98
90
  }));
99
91
  this.getOrgService();
100
92
  this.subscriptions.add(this.caseEditDataService.caseEventTriggerName$.subscribe({
101
- next: name => this.linkedCasesService.isLinkedCasesEventTrigger = (name === LinkedCasesEventTriggers.LINK_CASES)
93
+ next: (name) => this.linkedCasesService.isLinkedCasesEventTrigger = (name === LinkedCasesEventTriggers.LINK_CASES)
102
94
  }));
103
95
  this.subscriptions.add(this.caseEditDataService.caseEditForm$.subscribe({
104
- next: editForm => this.caseEditForm = editForm
96
+ next: (editForm) => this.caseEditForm = editForm
105
97
  }));
106
- this.journeyPageNumber = this.journeyStartPageNumber = LinkedCasesPages.BEFORE_YOU_START;
107
- this.journeyEndPageNumber = LinkedCasesPages.CHECK_YOUR_ANSWERS;
108
- if (this.linkedCasesService.cameFromFinalStep) {
109
- this.linkedCasesPage = LinkedCasesPages.CHECK_YOUR_ANSWERS;
110
- this.journeyPageNumber = LinkedCasesPages.CHECK_YOUR_ANSWERS;
111
- this.caseEditDataService.setLinkedCasesJourneyAtFinalStep(true);
112
- }
113
- this.multipageComponentStateService.isAtStart = this.journeyPageNumber === this.journeyStartPageNumber;
114
- window.addEventListener('popstate', this.handleBackButton);
115
- }
116
- handleBackButton(event) {
117
- event.preventDefault();
118
- if (this.linkedCasesPage === 0) {
119
- this.router.navigate([this.router.url.split('/').splice(0, this.router.url.split('/').indexOf('trigger')).join('/')]);
120
- }
121
- else {
122
- this.previousPage();
123
- }
124
- }
125
- addState(data, url) {
126
- history.pushState(data, '', url);
127
- }
128
- onPageChange() {
129
- const isAtStart = this.journeyPageNumber === this.journeyStartPageNumber || this.linkedCasesPage === LinkedCasesPages.BEFORE_YOU_START;
130
- this.multipageComponentStateService.isAtStart = isAtStart;
131
98
  }
132
99
  initialiseCaseDetails(caseDetails) {
133
100
  if (caseDetails) {
@@ -153,11 +120,6 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
153
120
  this.caseEditDataService.clearFormValidationErrors();
154
121
  if (linkedCasesState.navigateToNextPage) {
155
122
  this.linkedCasesPage = this.getNextPage(linkedCasesState);
156
- // when the user navigates with change link the journey page number should be set to the linkedCasesPage
157
- if (this.multipageComponentStateService.getJourneyCollectionMainObject().journeyPageNumber > this.linkedCasesPage) {
158
- this.multipageComponentStateService.getJourneyCollectionMainObject().journeyPageNumber = this.linkedCasesPage;
159
- }
160
- this.addState(this.linkedCasesPage);
161
123
  this.proceedToNextPage();
162
124
  }
163
125
  else {
@@ -194,8 +156,6 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
194
156
  }
195
157
  proceedToNextPage() {
196
158
  if (this.isAtFinalPage()) {
197
- // Set the journey page to the end page.
198
- this.journeyPageNumber = this.journeyEndPageNumber;
199
159
  // Continue button event must be allowed in final page
200
160
  this.caseEditDataService.setLinkedCasesJourneyAtFinalStep(true);
201
161
  // Trigger validation to clear the "notAtFinalPage" error if now at the final state
@@ -207,17 +167,30 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
207
167
  // Continue button event must not be allowed if not in final page
208
168
  this.caseEditDataService.setLinkedCasesJourneyAtFinalStep(false);
209
169
  }
210
- this.nextPage();
211
170
  }
212
171
  submitLinkedCases() {
172
+ let caseFieldValue = [...(this.linkedCasesService.caseFieldValue || [])];
213
173
  if (!this.linkedCasesService.isLinkedCasesEventTrigger) {
214
- this.linkedCasesService.cachedFieldValues = this.linkedCasesService.caseFieldValue;
215
- const unlinkedCaseRefereneIds = this.linkedCasesService.linkedCases.filter(item => item.unlink).map(item => item.caseReference);
216
- const caseFieldValue = this.linkedCasesService.caseFieldValue;
217
- this.linkedCasesService.caseFieldValue = caseFieldValue.filter(item => unlinkedCaseRefereneIds.indexOf(item.id) === -1);
174
+ const unlinkedCaseReferenceIds = this.linkedCasesService.linkedCases
175
+ .filter((item) => item.unlink)
176
+ .map((item) => item.caseReference);
177
+ caseFieldValue = caseFieldValue.filter((item) => !unlinkedCaseReferenceIds.includes(item.id));
178
+ }
179
+ // Replace the caseLinks value in this.formGroup
180
+ this.formGroup.patchValue({
181
+ caseLinks: caseFieldValue
182
+ });
183
+ // Replace the caseLinks control in caseEditForm.controls.data
184
+ const dataFormGroup = this.caseEditForm.controls.data;
185
+ if (dataFormGroup) {
186
+ // Remove the existing caseLinks control (if it exists)
187
+ if (dataFormGroup.contains('caseLinks')) {
188
+ dataFormGroup.removeControl('caseLinks');
189
+ }
190
+ // Add the new control with the replacement value
191
+ dataFormGroup.addControl('caseLinks', new FormControl(caseFieldValue || []));
218
192
  }
219
- this.formGroup.value.caseLinks = this.linkedCasesService.caseFieldValue;
220
- this.caseEditForm.controls['data'] = new FormGroup({ caseLinks: new FormControl(this.linkedCasesService.caseFieldValue || []) });
193
+ // Set the updated form in the caseEditDataService
221
194
  this.caseEditDataService.setCaseEditForm(this.caseEditForm);
222
195
  }
223
196
  isAtFinalPage() {
@@ -234,59 +207,29 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
234
207
  }
235
208
  getLinkedCases() {
236
209
  this.casesService.getCaseViewV2(this.linkedCasesService.caseId).subscribe((caseView) => {
237
- const caseViewFiltered = caseView.tabs.filter(tab => {
210
+ const caseViewFiltered = caseView.tabs.filter((tab) => {
238
211
  return tab.fields.some(({ field_type }) => field_type && field_type.collection_field_type && field_type.collection_field_type.id === 'CaseLink');
239
212
  });
240
213
  if (caseViewFiltered) {
241
- const caseLinkFieldValue = caseViewFiltered.map(filtered => filtered.fields?.length > 0 && filtered.fields.filter(field => field.id === 'caseLinks')[0].value);
242
- if (!this.linkedCasesService.caseFieldValue.length) {
243
- this.linkedCasesService.caseFieldValue = caseLinkFieldValue.length ? caseLinkFieldValue[0] : [];
244
- this.linkedCasesService.getAllLinkedCaseInformation();
245
- }
214
+ const caseLinkFieldValue = caseViewFiltered.map((filtered) => filtered.fields?.length > 0 && filtered.fields.filter((field) => field.id === 'caseLinks')[0].value);
215
+ this.linkedCasesService.caseFieldValue = caseLinkFieldValue.length ? caseLinkFieldValue[0] : [];
216
+ this.linkedCasesService.getAllLinkedCaseInformation();
246
217
  }
247
218
  // Initialise the first page to display
248
- if (!this.linkedCasesService.cameFromFinalStep) {
249
- this.linkedCasesPage = this.linkedCasesService.isLinkedCasesEventTrigger ||
250
- (this.linkedCasesService.caseFieldValue && this.linkedCasesService.caseFieldValue.length > 0
251
- && !this.linkedCasesService.serverLinkedApiError)
252
- ? LinkedCasesPages.BEFORE_YOU_START
253
- : LinkedCasesPages.NO_LINKED_CASES;
254
- }
219
+ this.linkedCasesPage = this.linkedCasesService.isLinkedCasesEventTrigger ||
220
+ (this.linkedCasesService.caseFieldValue && this.linkedCasesService.caseFieldValue.length > 0
221
+ && !this.linkedCasesService.serverLinkedApiError)
222
+ ? LinkedCasesPages.BEFORE_YOU_START
223
+ : LinkedCasesPages.NO_LINKED_CASES;
255
224
  });
256
225
  }
257
226
  ngOnDestroy() {
258
- window.removeEventListener('popstate', this.handleBackButton);
259
227
  this.subscriptions.unsubscribe();
260
228
  }
261
- previousPage() {
262
- if (this.linkedCasesService.isLinkedCasesEventTrigger) {
263
- if (this.linkedCasesPage === LinkedCasesPages.CHECK_YOUR_ANSWERS) {
264
- this.linkedCasesPage = LinkedCasesPages.LINK_CASE;
265
- }
266
- else if (this.linkedCasesPage === LinkedCasesPages.LINK_CASE) {
267
- this.linkedCasesPage = LinkedCasesPages.BEFORE_YOU_START;
268
- }
269
- else {
270
- this.linkedCasesPage--;
271
- }
272
- }
273
- else {
274
- if (this.linkedCasesPage === LinkedCasesPages.UNLINK_CASE) {
275
- this.linkedCasesPage = this.linkedCasesPages.BEFORE_YOU_START;
276
- }
277
- else if (this.linkedCasesPage === LinkedCasesPages.CHECK_YOUR_ANSWERS) {
278
- this.linkedCasesPage = this.linkedCasesPages.UNLINK_CASE;
279
- }
280
- else {
281
- this.linkedCasesPage--;
282
- }
283
- }
284
- super.previousPage();
285
- }
286
- static ɵfac = function WriteLinkedCasesFieldComponent_Factory(t) { return new (t || WriteLinkedCasesFieldComponent)(i0.ɵɵdirectiveInject(i1.AbstractAppConfig), i0.ɵɵdirectiveInject(i2.CommonDataService), i0.ɵɵdirectiveInject(i3.CasesService), i0.ɵɵdirectiveInject(i4.LinkedCasesService), i0.ɵɵdirectiveInject(i5.CaseEditDataService), i0.ɵɵdirectiveInject(i6.Router), i0.ɵɵdirectiveInject(i7.MultipageComponentStateService)); };
287
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteLinkedCasesFieldComponent, selectors: [["ccd-write-linked-cases-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 7, consts: [["journeyChild", ""], [1, "form-group", "govuk-!-margin-bottom-2", 3, "formGroup"], [1, "govuk-form-group", 3, "ngSwitch"], [4, "ngSwitchCase"], [3, "linkedCasesStateEmitter"]], template: function WriteLinkedCasesFieldComponent_Template(rf, ctx) { if (rf & 1) {
288
- i0.ɵɵelementStart(0, "div", 1)(1, "div", 2);
289
- i0.ɵɵtemplate(2, WriteLinkedCasesFieldComponent_ng_container_2_Template, 3, 0, "ng-container", 3)(3, WriteLinkedCasesFieldComponent_ng_container_3_Template, 3, 0, "ng-container", 3)(4, WriteLinkedCasesFieldComponent_ng_container_4_Template, 3, 0, "ng-container", 3)(5, WriteLinkedCasesFieldComponent_ng_container_5_Template, 3, 0, "ng-container", 3)(6, WriteLinkedCasesFieldComponent_ng_container_6_Template, 3, 0, "ng-container", 3);
229
+ static ɵfac = function WriteLinkedCasesFieldComponent_Factory(t) { return new (t || WriteLinkedCasesFieldComponent)(i0.ɵɵdirectiveInject(i1.AbstractAppConfig), i0.ɵɵdirectiveInject(i2.CommonDataService), i0.ɵɵdirectiveInject(i3.CasesService), i0.ɵɵdirectiveInject(i4.LinkedCasesService), i0.ɵɵdirectiveInject(i5.CaseEditDataService)); };
230
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WriteLinkedCasesFieldComponent, selectors: [["ccd-write-linked-cases-field"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 7, vars: 7, consts: [[1, "form-group", "govuk-!-margin-bottom-2", 3, "formGroup"], [1, "govuk-form-group", 3, "ngSwitch"], [4, "ngSwitchCase"], [3, "linkedCasesStateEmitter"]], template: function WriteLinkedCasesFieldComponent_Template(rf, ctx) { if (rf & 1) {
231
+ i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
232
+ i0.ɵɵtemplate(2, WriteLinkedCasesFieldComponent_ng_container_2_Template, 2, 0, "ng-container", 2)(3, WriteLinkedCasesFieldComponent_ng_container_3_Template, 2, 0, "ng-container", 2)(4, WriteLinkedCasesFieldComponent_ng_container_4_Template, 2, 0, "ng-container", 2)(5, WriteLinkedCasesFieldComponent_ng_container_5_Template, 2, 0, "ng-container", 2)(6, WriteLinkedCasesFieldComponent_ng_container_6_Template, 2, 0, "ng-container", 2);
290
233
  i0.ɵɵelementEnd()();
291
234
  } if (rf & 2) {
292
235
  i0.ɵɵproperty("formGroup", ctx.formGroup);
@@ -306,7 +249,7 @@ export class WriteLinkedCasesFieldComponent extends AbstractFieldWriteJourneyCom
306
249
  }
307
250
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WriteLinkedCasesFieldComponent, [{
308
251
  type: Component,
309
- args: [{ selector: 'ccd-write-linked-cases-field', template: "<div class=\"form-group govuk-!-margin-bottom-2\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"linkedCasesPage\">\n <ng-container *ngSwitchCase=\"linkedCasesPages.BEFORE_YOU_START\">\n <ccd-linked-cases-before-you-start\n #journeyChild \n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\">\n </ccd-linked-cases-before-you-start>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.NO_LINKED_CASES\">\n <ccd-no-linked-cases\n #journeyChild \n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\">\n </ccd-no-linked-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.LINK_CASE\">\n <ccd-link-cases\n #journeyChild \n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\">\n </ccd-link-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.UNLINK_CASE\">\n <ccd-unlink-cases\n #journeyChild \n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\">\n </ccd-unlink-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.CHECK_YOUR_ANSWERS\">\n <ccd-linked-cases-check-your-answers\n #journeyChild \n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\">\n </ccd-linked-cases-check-your-answers>\n </ng-container>\n </div>\n</div>\n" }]
310
- }], () => [{ type: i1.AbstractAppConfig }, { type: i2.CommonDataService }, { type: i3.CasesService }, { type: i4.LinkedCasesService }, { type: i5.CaseEditDataService }, { type: i6.Router }, { type: i7.MultipageComponentStateService }], null); })();
311
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteLinkedCasesFieldComponent, { className: "WriteLinkedCasesFieldComponent", filePath: "lib/shared/components/palette/linked-cases/write-linked-cases-field.component.ts", lineNumber: 20 }); })();
312
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtbGlua2VkLWNhc2VzLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2xpbmtlZC1jYXNlcy93cml0ZS1saW5rZWQtY2FzZXMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL3dyaXRlLWxpbmtlZC1jYXNlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUV0RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRSxP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TixvRkFNRSxvRkFNTztZQU90RSxBQURFLGlCQUFNLEVBQ0Y7O1lBakMwQyx5Q0FBdUI7WUFDdkMsY0FBNEI7WUFBNUIsOENBQTRCO1lBQ3pDLGNBQStDO1lBQS9DLG9FQUErQztZQU0vQyxjQUE4QztZQUE5QyxtRUFBOEM7WUFNOUMsY0FBd0M7WUFBeEMsNkRBQXdDO1lBTXhDLGNBQTBDO1lBQTFDLCtEQUEwQztZQU0xQyxjQUFpRDtZQUFqRCxzRUFBaUQ7OztpRkRQdkQsOEJBQThCO2NBSjFDLFNBQVM7MkJBQ0UsOEJBQThCOztrRkFHN0IsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcnO1xuaW1wb3J0IHsgQ29tbW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb21tb24tZGF0YS1zZXJ2aWNlL2NvbW1vbi1kYXRhLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZXMuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVKb3VybmV5Q29tcG9uZW50IH0gZnJvbSAnLi4vYmFzZS1maWVsZCc7XG5pbXBvcnQgeyBDYXNlTGluaywgTGlua2VkQ2FzZXNTdGF0ZSB9IGZyb20gJy4vZG9tYWluJztcbmltcG9ydCB7IExpbmtlZENhc2VzRXZlbnRUcmlnZ2VycywgTGlua2VkQ2FzZXNQYWdlcyB9IGZyb20gJy4vZW51bXMnO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC13cml0ZS1saW5rZWQtY2FzZXMtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JpdGUtbGlua2VkLWNhc2VzLWZpZWxkLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBXcml0ZUxpbmtlZENhc2VzRmllbGRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdEZpZWxkV3JpdGVKb3VybmV5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgY2FzZUVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHB1YmxpYyBsaW5rZWRDYXNlc1BhZ2U6IG51bWJlcjtcbiAgcHVibGljIGxpbmtlZENhc2VzUGFnZXMgPSBMaW5rZWRDYXNlc1BhZ2VzO1xuICBwdWJsaWMgbGlua2VkQ2FzZXNFdmVudFRyaWdnZXJzID0gTGlua2VkQ2FzZXNFdmVudFRyaWdnZXJzO1xuICBwdWJsaWMgbGlua2VkQ2FzZXM6IENhc2VMaW5rW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnOiBBYnN0cmFjdEFwcENvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbkRhdGFTZXJ2aWNlOiBDb21tb25EYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VzU2VydmljZTogQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgbXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlOiBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UpIHtcbiAgICBzdXBlcihtdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMuaGFuZGxlQmFja0J1dHRvbiA9IHRoaXMuaGFuZGxlQmFja0J1dHRvbi5iaW5kKHRoaXMpO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IHRyaWdVcmwgPSBsb2NhdGlvbi5ocmVmO1xuICAgIHRoaXMuYWRkU3RhdGUobnVsbCwgdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJykuc3BsaWNlKDAsIHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpLmluZGV4T2YoJ3RyaWdnZXInKSkuam9pbignLycpKTtcbiAgICB0aGlzLmFkZFN0YXRlKDAsIHRyaWdVcmwpO1xuICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIENvbnRpbnVlIGJ1dHRvbiB2YWxpZGF0aW9uXG4gICAgLy8gQ29udGludWUgYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkIG9ubHkgYXQgY2hlY2sgeW91ciBhbnN3ZXJzIHBhZ2VcbiAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0TGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgIC8vIENsZWFyIHZhbGlkYXRpb24gZXJyb3JzXG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcbiAgICAvLyBHZXQgbGlua2VkIGNhc2UgcmVhc29ucyBmcm9tIHJlZiBkYXRhXG4gICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZWRpdE1vZGUgPSBmYWxzZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlRGV0YWlscyQuc3Vic2NyaWJlKFxuICAgICAge1xuICAgICAgICBuZXh0OiBjYXNlRGV0YWlscyA9PiB7IHRoaXMuaW5pdGlhbGlzZUNhc2VEZXRhaWxzKGNhc2VEZXRhaWxzKTsgfVxuICAgICAgfSkpO1xuICAgIHRoaXMuZ2V0T3JnU2VydmljZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQodGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNhc2VFdmVudFRyaWdnZXJOYW1lJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogbmFtZSA9PiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyID0gKG5hbWUgPT09IExpbmtlZENhc2VzRXZlbnRUcmlnZ2Vycy5MSU5LX0NBU0VTKVxuICAgIH0pKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jYXNlRWRpdEZvcm0kLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBlZGl0Rm9ybSA9PiB0aGlzLmNhc2VFZGl0Rm9ybSA9IGVkaXRGb3JtXG4gICAgfSkpO1xuXG4gICAgdGhpcy5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlciA9IExpbmtlZENhc2VzUGFnZXMuQkVGT1JFX1lPVV9TVEFSVDtcbiAgICB0aGlzLmpvdXJuZXlFbmRQYWdlTnVtYmVyID0gTGlua2VkQ2FzZXNQYWdlcy5DSEVDS19ZT1VSX0FOU1dFUlM7XG5cbiAgICBpZiAodGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FtZUZyb21GaW5hbFN0ZXApe1xuICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgPSBMaW5rZWRDYXNlc1BhZ2VzLkNIRUNLX1lPVVJfQU5TV0VSUztcbiAgICAgIHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPSBMaW5rZWRDYXNlc1BhZ2VzLkNIRUNLX1lPVVJfQU5TV0VSUztcbiAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCh0cnVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5pc0F0U3RhcnQgPSB0aGlzLmpvdXJuZXlQYWdlTnVtYmVyID09PSB0aGlzLmpvdXJuZXlTdGFydFBhZ2VOdW1iZXI7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3BvcHN0YXRlJywgdGhpcy5oYW5kbGVCYWNrQnV0dG9uKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVCYWNrQnV0dG9uKGV2ZW50KSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBpZiAodGhpcy5saW5rZWRDYXNlc1BhZ2UgPT09IDApe1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMucm91dGVyLnVybC5zcGxpdCgnLycpLnNwbGljZSgwLCB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKS5pbmRleE9mKCd0cmlnZ2VyJykpLmpvaW4oJy8nKV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnByZXZpb3VzUGFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhZGRTdGF0ZShkYXRhLCB1cmw/KTogdm9pZCB7XG4gICAgaGlzdG9yeS5wdXNoU3RhdGUoZGF0YSwgJycsIHVybCk7XG4gIH1cblxuICBwdWJsaWMgb25QYWdlQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlzQXRTdGFydDogYm9vbGVhbiA9IHRoaXMuam91cm5leVBhZ2VOdW1iZXIgPT09IHRoaXMuam91cm5leVN0YXJ0UGFnZU51bWJlciB8fCB0aGlzLmxpbmtlZENhc2VzUGFnZSA9PT0gTGlua2VkQ2FzZXNQYWdlcy5CRUZPUkVfWU9VX1NUQVJUO1xuICAgIHRoaXMubXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlLmlzQXRTdGFydCA9IGlzQXRTdGFydDtcbiAgfVxuXG4gIHB1YmxpYyBpbml0aWFsaXNlQ2FzZURldGFpbHMoY2FzZURldGFpbHM6IENhc2VWaWV3KTogdm9pZCB7XG4gICAgaWYgKGNhc2VEZXRhaWxzKSB7XG4gICAgICB0aGlzLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG4gICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRGV0YWlscyA9IGNhc2VEZXRhaWxzO1xuICAgICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUlkID0gY2FzZURldGFpbHMuY2FzZV9pZDtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VOYW1lID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuZ2V0Q2FzZU5hbWUoY2FzZURldGFpbHMpO1xuICAgICAgdGhpcy5nZXRMaW5rZWRDYXNlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgbGV0IGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdnb3Z1ay1oZWFkaW5nLWwnKTtcbiAgICBpZiAobGFiZWxGaWVsZCAmJiBsYWJlbEZpZWxkLmxlbmd0aCkge1xuICAgICAgbGFiZWxGaWVsZFswXS5yZXBsYWNlV2l0aCgnJyk7XG4gICAgfVxuICAgIGxhYmVsRmllbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdoZWFkaW5nLWgyJyk7XG4gICAgaWYgKGxhYmVsRmllbGQgJiYgbGFiZWxGaWVsZC5sZW5ndGgpIHtcbiAgICAgIGxhYmVsRmllbGRbMF0ucmVwbGFjZVdpdGgoJycpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKGxpbmtlZENhc2VzU3RhdGU6IExpbmtlZENhc2VzU3RhdGUpOiB2b2lkIHtcbiAgICAvLyBDbGVhciB2YWxpZGF0aW9uIGVycm9yc1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgaWYgKGxpbmtlZENhc2VzU3RhdGUubmF2aWdhdGVUb05leHRQYWdlKSB7XG4gICAgICB0aGlzLmxpbmtlZENhc2VzUGFnZSA9IHRoaXMuZ2V0TmV4dFBhZ2UobGlua2VkQ2FzZXNTdGF0ZSk7XG4gICAgICAvLyB3aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyB3aXRoIGNoYW5nZSBsaW5rIHRoZSBqb3VybmV5IHBhZ2UgbnVtYmVyIHNob3VsZCBiZSBzZXQgdG8gdGhlIGxpbmtlZENhc2VzUGFnZVxuICAgICAgaWYgKHRoaXMubXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlLmdldEpvdXJuZXlDb2xsZWN0aW9uTWFpbk9iamVjdCgpLmpvdXJuZXlQYWdlTnVtYmVyID4gdGhpcy5saW5rZWRDYXNlc1BhZ2Upe1xuICAgICAgICB0aGlzLm11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZS5nZXRKb3VybmV5Q29sbGVjdGlvbk1haW5PYmplY3QoKS5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMubGlua2VkQ2FzZXNQYWdlO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRTdGF0ZSh0aGlzLmxpbmtlZENhc2VzUGFnZSk7XG4gICAgICB0aGlzLnByb2NlZWRUb05leHRQYWdlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChsaW5rZWRDYXNlc1N0YXRlLmVycm9yTWVzc2FnZXMgJiYgbGlua2VkQ2FzZXNTdGF0ZS5lcnJvck1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgICBsaW5rZWRDYXNlc1N0YXRlLmVycm9yTWVzc2FnZXMuZm9yRWFjaCgoZXJyb3JNZXNzYWdlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5hZGRGb3JtVmFsaWRhdGlvbkVycm9yKHsgaWQ6IGVycm9yTWVzc2FnZS5maWVsZElkLCBtZXNzYWdlOiBlcnJvck1lc3NhZ2UuZGVzY3JpcHRpb24gfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRMaW5rZWRDYXNlUmVhc29ucyhzZXJ2aWNlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJlYXNvbkNvZGVBUEl1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRSRENvbW1vbkRhdGFBcGlVcmwoKX0vbG92L2NhdGVnb3JpZXMvQ2FzZUxpbmtpbmdSZWFzb25Db2RlP3NlcnZpY2VJZD0ke3NlcnZpY2VJZH1gO1xuICAgIHRoaXMuY29tbW9uRGF0YVNlcnZpY2UuZ2V0UmVmRGF0YShyZWFzb25Db2RlQVBJdXJsKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlYXNvbnMpID0+IHtcbiAgICAgICAgLy8gU29ydCBpbiBhc2NlbmRpbmcgb3JkZXJcbiAgICAgICAgY29uc3QgbGlua0Nhc2VSZWFzb25zID0gcmVhc29ucy5saXN0X29mX3ZhbHVlcy5zb3J0KChhLCBiKSA9PiAoYS52YWx1ZV9lbiA+IGIudmFsdWVfZW4pID8gMSA6IC0xKTtcbiAgICAgICAgaWYgKGxpbmtDYXNlUmVhc29ucz8uZmlsdGVyKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiAhPT0gJ090aGVyJykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtDYXNlUmVhc29ucyA9IGxpbmtDYXNlUmVhc29ucz8uZmlsdGVyKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiAhPT0gJ090aGVyJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTW92ZSBPdGhlciBvcHRpb24gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdFxuICAgICAgICBpZiAobGlua0Nhc2VSZWFzb25zPy5maW5kKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiA9PT0gJ090aGVyJykpIHtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rQ2FzZVJlYXNvbnMucHVzaChsaW5rQ2FzZVJlYXNvbnM/LmZpbmQoKHJlYXNvbikgPT4gcmVhc29uLnZhbHVlX2VuID09PSAnT3RoZXInKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGdldE9yZ1NlcnZpY2UoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VydmljZXNBcGlVcmwgPSBgcmVmZGF0YS9sb2NhdGlvbi9vcmdTZXJ2aWNlcz9jY2RDYXNlVHlwZT0ke3RoaXMuY2FzZURldGFpbHM/LmNhc2VfdHlwZT8uaWR9YDtcbiAgICB0aGlzLmNvbW1vbkRhdGFTZXJ2aWNlLmdldFNlcnZpY2VPcmdEYXRhKHNlcnZpY2VzQXBpVXJsKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xuICAgICAgcmVzdWx0LmZvckVhY2goKGlkcykgPT4ge1xuICAgICAgICB0aGlzLmdldExpbmtlZENhc2VSZWFzb25zKGlkcy5zZXJ2aWNlX2NvZGUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcHJvY2VlZFRvTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNBdEZpbmFsUGFnZSgpKSB7XG4gICAgICAvLyBTZXQgdGhlIGpvdXJuZXkgcGFnZSB0byB0aGUgZW5kIHBhZ2UuIFxuICAgICAgdGhpcy5qb3VybmV5UGFnZU51bWJlciA9IHRoaXMuam91cm5leUVuZFBhZ2VOdW1iZXI7XG4gICAgICAvLyBDb250aW51ZSBidXR0b24gZXZlbnQgbXVzdCBiZSBhbGxvd2VkIGluIGZpbmFsIHBhZ2VcbiAgICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRMaW5rZWRDYXNlc0pvdXJuZXlBdEZpbmFsU3RlcCh0cnVlKTtcbiAgICAgIC8vIFRyaWdnZXIgdmFsaWRhdGlvbiB0byBjbGVhciB0aGUgXCJub3RBdEZpbmFsUGFnZVwiIGVycm9yIGlmIG5vdyBhdCB0aGUgZmluYWwgc3RhdGVcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgIC8vIHVwZGF0ZSBmb3JtIHZhbHVlXG4gICAgICB0aGlzLnN1Ym1pdExpbmtlZENhc2VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRpbnVlIGJ1dHRvbiBldmVudCBtdXN0IG5vdCBiZSBhbGxvd2VkIGlmIG5vdCBpbiBmaW5hbCBwYWdlXG4gICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0TGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgIH1cblxuICAgIHRoaXMubmV4dFBhZ2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdWJtaXRMaW5rZWRDYXNlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmlzTGlua2VkQ2FzZXNFdmVudFRyaWdnZXIpIHtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhY2hlZEZpZWxkVmFsdWVzID0gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWU7XG4gICAgICBjb25zdCB1bmxpbmtlZENhc2VSZWZlcmVuZUlkcyA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmxpbmtlZENhc2VzLmZpbHRlcihpdGVtID0+IGl0ZW0udW5saW5rKS5tYXAoaXRlbSA9PiBpdGVtLmNhc2VSZWZlcmVuY2UpO1xuICAgICAgY29uc3QgY2FzZUZpZWxkVmFsdWUgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZTtcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlID0gY2FzZUZpZWxkVmFsdWUuZmlsdGVyKGl0ZW0gPT4gdW5saW5rZWRDYXNlUmVmZXJlbmVJZHMuaW5kZXhPZihpdGVtLmlkKSA9PT0gLTEpO1xuICAgIH1cblxuICAgIHRoaXMuZm9ybUdyb3VwLnZhbHVlLmNhc2VMaW5rcyA9IHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlO1xuICAgICh0aGlzLmNhc2VFZGl0Rm9ybS5jb250cm9sc1snZGF0YSddIGFzIGFueSkgPSBuZXcgRm9ybUdyb3VwKHsgY2FzZUxpbmtzOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUgfHwgW10pIH0pO1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRWRpdEZvcm0odGhpcy5jYXNlRWRpdEZvcm0pO1xuICB9XG5cbiAgcHVibGljIGlzQXRGaW5hbFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkQ2FzZXNQYWdlID09PSB0aGlzLmxpbmtlZENhc2VzUGFnZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHVibGljIGdldE5leHRQYWdlKGxpbmtlZENhc2VzU3RhdGU6IExpbmtlZENhc2VzU3RhdGUpOiBudW1iZXIge1xuICAgIGlmICgodGhpcy5saW5rZWRDYXNlc1BhZ2UgPT09IExpbmtlZENhc2VzUGFnZXMuQkVGT1JFX1lPVV9TVEFSVCkgfHxcbiAgICAgIChsaW5rZWRDYXNlc1N0YXRlLmN1cnJlbnRMaW5rZWRDYXNlc1BhZ2UgPT09IExpbmtlZENhc2VzUGFnZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTICYmIGxpbmtlZENhc2VzU3RhdGUubmF2aWdhdGVUb1ByZXZpb3VzUGFnZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyXG4gICAgICAgID8gTGlua2VkQ2FzZXNQYWdlcy5MSU5LX0NBU0VcbiAgICAgICAgOiBMaW5rZWRDYXNlc1BhZ2VzLlVOTElOS19DQVNFO1xuICAgIH1cbiAgICByZXR1cm4gTGlua2VkQ2FzZXNQYWdlcy5DSEVDS19ZT1VSX0FOU1dFUlM7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlua2VkQ2FzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlc1NlcnZpY2UuZ2V0Q2FzZVZpZXdWMih0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQpLnN1YnNjcmliZSgoY2FzZVZpZXc6IENhc2VWaWV3KSA9PiB7XG4gICAgICBjb25zdCBjYXNlVmlld0ZpbHRlcmVkID0gY2FzZVZpZXcudGFicy5maWx0ZXIodGFiID0+IHtcbiAgICAgICAgcmV0dXJuIHRhYi5maWVsZHMuc29tZShcbiAgICAgICAgICAoeyBmaWVsZF90eXBlIH0pID0+IGZpZWxkX3R5cGUgJiYgZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUgJiYgZmllbGRfdHlwZS5jb2xsZWN0aW9uX2ZpZWxkX3R5cGUuaWQgPT09ICdDYXNlTGluaydcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKGNhc2VWaWV3RmlsdGVyZWQpIHtcbiAgICAgICAgY29uc3QgY2FzZUxpbmtGaWVsZFZhbHVlID0gY2FzZVZpZXdGaWx0ZXJlZC5tYXAoZmlsdGVyZWQgPT5cbiAgICAgICAgICBmaWx0ZXJlZC5maWVsZHM/Lmxlbmd0aCA+IDAgJiYgZmlsdGVyZWQuZmllbGRzLmZpbHRlcihmaWVsZCA9PiBmaWVsZC5pZCA9PT0gJ2Nhc2VMaW5rcycpWzBdLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGlmICghdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZUZpZWxkVmFsdWUubGVuZ3RoKXtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSA9IGNhc2VMaW5rRmllbGRWYWx1ZS5sZW5ndGggPyBjYXNlTGlua0ZpZWxkVmFsdWVbMF0gOiBbXTtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5nZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gSW5pdGlhbGlzZSB0aGUgZmlyc3QgcGFnZSB0byBkaXNwbGF5XG4gICAgICBpZiAoIXRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhbWVGcm9tRmluYWxTdGVwKXtcbiAgICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyIHx8XG4gICAgICAgICh0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSAmJiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZS5sZW5ndGggPiAwXG4gICAgICAgICAgJiYgIXRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLnNlcnZlckxpbmtlZEFwaUVycm9yKVxuICAgICAgICAgID8gTGlua2VkQ2FzZXNQYWdlcy5CRUZPUkVfWU9VX1NUQVJUXG4gICAgICAgICAgOiBMaW5rZWRDYXNlc1BhZ2VzLk5PX0xJTktFRF9DQVNFUztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwb3BzdGF0ZScsIHRoaXMuaGFuZGxlQmFja0J1dHRvbik7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyKXtcbiAgICAgIGlmICh0aGlzLmxpbmtlZENhc2VzUGFnZSA9PT0gTGlua2VkQ2FzZXNQYWdlcy5DSEVDS19ZT1VSX0FOU1dFUlMpIHtcbiAgICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgPSBMaW5rZWRDYXNlc1BhZ2VzLkxJTktfQ0FTRTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5saW5rZWRDYXNlc1BhZ2UgPT09IExpbmtlZENhc2VzUGFnZXMuTElOS19DQVNFKSB7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNQYWdlID0gTGlua2VkQ2FzZXNQYWdlcy5CRUZPUkVfWU9VX1NUQVJUO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgLS07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLmxpbmtlZENhc2VzUGFnZSA9PT0gTGlua2VkQ2FzZXNQYWdlcy5VTkxJTktfQ0FTRSl7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNQYWdlID0gdGhpcy5saW5rZWRDYXNlc1BhZ2VzLkJFRk9SRV9ZT1VfU1RBUlQ7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGlua2VkQ2FzZXNQYWdlID09PSBMaW5rZWRDYXNlc1BhZ2VzLkNIRUNLX1lPVVJfQU5TV0VSUykge1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzUGFnZSA9IHRoaXMubGlua2VkQ2FzZXNQYWdlcy5VTkxJTktfQ0FTRTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNQYWdlIC0tO1xuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci5wcmV2aW91c1BhZ2UoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgZ292dWstIS1tYXJnaW4tYm90dG9tLTJcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstZm9ybS1ncm91cFwiIFtuZ1N3aXRjaF09XCJsaW5rZWRDYXNlc1BhZ2VcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsaW5rZWRDYXNlc1BhZ2VzLkJFRk9SRV9ZT1VfU1RBUlRcIj5cbiAgICAgIDxjY2QtbGlua2VkLWNhc2VzLWJlZm9yZS15b3Utc3RhcnRcbiAgICAgICAgI2pvdXJuZXlDaGlsZCBcbiAgICAgICAgKGxpbmtlZENhc2VzU3RhdGVFbWl0dGVyKT1cIm9uTGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9jY2QtbGlua2VkLWNhc2VzLWJlZm9yZS15b3Utc3RhcnQ+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibGlua2VkQ2FzZXNQYWdlcy5OT19MSU5LRURfQ0FTRVNcIj5cbiAgICAgIDxjY2Qtbm8tbGlua2VkLWNhc2VzXG4gICAgICAgICNqb3VybmV5Q2hpbGQgXG4gICAgICAgIChsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcik9XCJvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKCRldmVudClcIj5cbiAgICAgIDwvY2NkLW5vLWxpbmtlZC1jYXNlcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsaW5rZWRDYXNlc1BhZ2VzLkxJTktfQ0FTRVwiPlxuICAgICAgPGNjZC1saW5rLWNhc2VzXG4gICAgICAgICNqb3VybmV5Q2hpbGQgXG4gICAgICAgIChsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcik9XCJvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKCRldmVudClcIj5cbiAgICAgIDwvY2NkLWxpbmstY2FzZXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibGlua2VkQ2FzZXNQYWdlcy5VTkxJTktfQ0FTRVwiPlxuICAgICAgPGNjZC11bmxpbmstY2FzZXNcbiAgICAgICAgI2pvdXJuZXlDaGlsZCBcbiAgICAgICAgKGxpbmtlZENhc2VzU3RhdGVFbWl0dGVyKT1cIm9uTGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9jY2QtdW5saW5rLWNhc2VzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImxpbmtlZENhc2VzUGFnZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTXCI+XG4gICAgICA8Y2NkLWxpbmtlZC1jYXNlcy1jaGVjay15b3VyLWFuc3dlcnNcbiAgICAgICAgI2pvdXJuZXlDaGlsZCBcbiAgICAgICAgKGxpbmtlZENhc2VzU3RhdGVFbWl0dGVyKT1cIm9uTGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPlxuICAgICAgPC9jY2QtbGlua2VkLWNhc2VzLWNoZWNrLXlvdXItYW5zd2Vycz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
252
+ args: [{ selector: 'ccd-write-linked-cases-field', template: "<div class=\"form-group govuk-!-margin-bottom-2\" [formGroup]=\"formGroup\">\n <div class=\"govuk-form-group\" [ngSwitch]=\"linkedCasesPage\">\n <ng-container *ngSwitchCase=\"linkedCasesPages.BEFORE_YOU_START\">\n <ccd-linked-cases-before-you-start\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-linked-cases-before-you-start>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.NO_LINKED_CASES\">\n <ccd-no-linked-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-no-linked-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.LINK_CASE\">\n <ccd-link-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-link-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.UNLINK_CASE\">\n <ccd-unlink-cases\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-unlink-cases>\n </ng-container>\n <ng-container *ngSwitchCase=\"linkedCasesPages.CHECK_YOUR_ANSWERS\">\n <ccd-linked-cases-check-your-answers\n (linkedCasesStateEmitter)=\"onLinkedCasesStateEmitted($event)\"></ccd-linked-cases-check-your-answers>\n </ng-container>\n </div>\n</div>\n" }]
253
+ }], () => [{ type: i1.AbstractAppConfig }, { type: i2.CommonDataService }, { type: i3.CasesService }, { type: i4.LinkedCasesService }, { type: i5.CaseEditDataService }], null); })();
254
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WriteLinkedCasesFieldComponent, { className: "WriteLinkedCasesFieldComponent", filePath: "lib/shared/components/palette/linked-cases/write-linked-cases-field.component.ts", lineNumber: 18 }); })();
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtbGlua2VkLWNhc2VzLWZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9wYWxldHRlL2xpbmtlZC1jYXNlcy93cml0ZS1saW5rZWQtY2FzZXMtZmllbGQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvbGlua2VkLWNhc2VzL3dyaXRlLWxpbmtlZC1jYXNlcy1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzlGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7SUNUaEMsNkJBQWdFO0lBQzlELDREQUNnRTtJQUE5RCx3UUFBMkIsd0NBQWlDLEtBQUM7SUFB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QXdDO1lBSXhDLGNBQTBDO1lBQTFDLCtEQUEwQztZQUkxQyxjQUFpRDtZQUFqRCxzRUFBaUQ7OztpRkREdkQsOEJBQThCO2NBSjFDLFNBQVM7MkJBQ0UsOEJBQThCOztrRkFHN0IsOEJBQThCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBDYXNlRWRpdERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9ucy9jYXNlLWVkaXQtZGF0YSc7XG5pbXBvcnQgeyBDYXNlVmlldyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jYXNlLXZpZXcnO1xuaW1wb3J0IHsgQ29tbW9uRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb21tb24tZGF0YS1zZXJ2aWNlL2NvbW1vbi1kYXRhLXNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3Ivc2VydmljZXMvY2FzZXMuc2VydmljZSc7XG5pbXBvcnQgeyBBYnN0cmFjdEZpZWxkV3JpdGVDb21wb25lbnQgfSBmcm9tICcuLi9iYXNlLWZpZWxkJztcbmltcG9ydCB7IENhc2VMaW5rLCBMaW5rZWRDYXNlc1N0YXRlIH0gZnJvbSAnLi9kb21haW4nO1xuaW1wb3J0IHsgTGlua2VkQ2FzZXNFdmVudFRyaWdnZXJzLCBMaW5rZWRDYXNlc1BhZ2VzIH0gZnJvbSAnLi9lbnVtcyc7XG5pbXBvcnQgeyBMaW5rZWRDYXNlc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd3JpdGUtbGlua2VkLWNhc2VzLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dyaXRlLWxpbmtlZC1jYXNlcy1maWVsZC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgV3JpdGVMaW5rZWRDYXNlc0ZpZWxkQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RGaWVsZFdyaXRlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwdWJsaWMgY2FzZUVkaXRGb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBjYXNlRGV0YWlsczogQ2FzZVZpZXc7XG4gIHB1YmxpYyBsaW5rZWRDYXNlc1BhZ2U6IG51bWJlcjtcbiAgcHVibGljIGxpbmtlZENhc2VzUGFnZXMgPSBMaW5rZWRDYXNlc1BhZ2VzO1xuICBwdWJsaWMgbGlua2VkQ2FzZXNFdmVudFRyaWdnZXJzID0gTGlua2VkQ2FzZXNFdmVudFRyaWdnZXJzO1xuICBwdWJsaWMgbGlua2VkQ2FzZXM6IENhc2VMaW5rW10gPSBbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnOiBBYnN0cmFjdEFwcENvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbW1vbkRhdGFTZXJ2aWNlOiBDb21tb25EYXRhU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhc2VzU2VydmljZTogQ2FzZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGlua2VkQ2FzZXNTZXJ2aWNlOiBMaW5rZWRDYXNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjYXNlRWRpdERhdGFTZXJ2aWNlOiBDYXNlRWRpdERhdGFTZXJ2aWNlKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBDb250aW51ZSBidXR0b24gdmFsaWRhdGlvblxuICAgIC8vIENvbnRpbnVlIGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZCBvbmx5IGF0IGNoZWNrIHlvdXIgYW5zd2VycyBwYWdlXG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldExpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAvLyBDbGVhciB2YWxpZGF0aW9uIGVycm9yc1xuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5jbGVhckZvcm1WYWxpZGF0aW9uRXJyb3JzKCk7XG4gICAgLy8gR2V0IGxpbmtlZCBjYXNlIHJlYXNvbnMgZnJvbSByZWYgZGF0YVxuICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmVkaXRNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZURldGFpbHMkLnN1YnNjcmliZShcbiAgICAgIHtcbiAgICAgICAgbmV4dDogKGNhc2VEZXRhaWxzKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbml0aWFsaXNlQ2FzZURldGFpbHMoY2FzZURldGFpbHMpO1xuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgdGhpcy5nZXRPcmdTZXJ2aWNlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUV2ZW50VHJpZ2dlck5hbWUkLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAobmFtZSkgPT4gdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuaXNMaW5rZWRDYXNlc0V2ZW50VHJpZ2dlciA9IChuYW1lID09PSBMaW5rZWRDYXNlc0V2ZW50VHJpZ2dlcnMuTElOS19DQVNFUylcbiAgICB9KSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmFkZCh0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuY2FzZUVkaXRGb3JtJC5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKGVkaXRGb3JtKSA9PiB0aGlzLmNhc2VFZGl0Rm9ybSA9IGVkaXRGb3JtXG4gICAgfSkpO1xuICB9XG5cbiAgcHVibGljIGluaXRpYWxpc2VDYXNlRGV0YWlscyhjYXNlRGV0YWlsczogQ2FzZVZpZXcpOiB2b2lkIHtcbiAgICBpZiAoY2FzZURldGFpbHMpIHtcbiAgICAgIHRoaXMuY2FzZURldGFpbHMgPSBjYXNlRGV0YWlscztcbiAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VEZXRhaWxzID0gY2FzZURldGFpbHM7XG4gICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQgPSBjYXNlRGV0YWlscy5jYXNlX2lkO1xuICAgICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UuY2FzZU5hbWUgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5nZXRDYXNlTmFtZShjYXNlRGV0YWlscyk7XG4gICAgICB0aGlzLmdldExpbmtlZENhc2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBsZXQgbGFiZWxGaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dvdnVrLWhlYWRpbmctbCcpO1xuICAgIGlmIChsYWJlbEZpZWxkICYmIGxhYmVsRmllbGQubGVuZ3RoKSB7XG4gICAgICBsYWJlbEZpZWxkWzBdLnJlcGxhY2VXaXRoKCcnKTtcbiAgICB9XG4gICAgbGFiZWxGaWVsZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2hlYWRpbmctaDInKTtcbiAgICBpZiAobGFiZWxGaWVsZCAmJiBsYWJlbEZpZWxkLmxlbmd0aCkge1xuICAgICAgbGFiZWxGaWVsZFswXS5yZXBsYWNlV2l0aCgnJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uTGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZWQobGlua2VkQ2FzZXNTdGF0ZTogTGlua2VkQ2FzZXNTdGF0ZSk6IHZvaWQge1xuICAgIC8vIENsZWFyIHZhbGlkYXRpb24gZXJyb3JzXG4gICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLmNsZWFyRm9ybVZhbGlkYXRpb25FcnJvcnMoKTtcblxuICAgIGlmIChsaW5rZWRDYXNlc1N0YXRlLm5hdmlnYXRlVG9OZXh0UGFnZSkge1xuICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgPSB0aGlzLmdldE5leHRQYWdlKGxpbmtlZENhc2VzU3RhdGUpO1xuICAgICAgdGhpcy5wcm9jZWVkVG9OZXh0UGFnZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobGlua2VkQ2FzZXNTdGF0ZS5lcnJvck1lc3NhZ2VzICYmIGxpbmtlZENhc2VzU3RhdGUuZXJyb3JNZXNzYWdlcy5sZW5ndGgpIHtcbiAgICAgICAgbGlua2VkQ2FzZXNTdGF0ZS5lcnJvck1lc3NhZ2VzLmZvckVhY2goKGVycm9yTWVzc2FnZSwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2UuYWRkRm9ybVZhbGlkYXRpb25FcnJvcih7IGlkOiBlcnJvck1lc3NhZ2UuZmllbGRJZCwgbWVzc2FnZTogZXJyb3JNZXNzYWdlLmRlc2NyaXB0aW9uIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlua2VkQ2FzZVJlYXNvbnMoc2VydmljZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCByZWFzb25Db2RlQVBJdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0UkRDb21tb25EYXRhQXBpVXJsKCl9L2xvdi9jYXRlZ29yaWVzL0Nhc2VMaW5raW5nUmVhc29uQ29kZT9zZXJ2aWNlSWQ9JHtzZXJ2aWNlSWR9YDtcbiAgICB0aGlzLmNvbW1vbkRhdGFTZXJ2aWNlLmdldFJlZkRhdGEocmVhc29uQ29kZUFQSXVybCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZWFzb25zKSA9PiB7XG4gICAgICAgIC8vIFNvcnQgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAgICAgIGNvbnN0IGxpbmtDYXNlUmVhc29ucyA9IHJlYXNvbnMubGlzdF9vZl92YWx1ZXMuc29ydCgoYSwgYikgPT4gKGEudmFsdWVfZW4gPiBiLnZhbHVlX2VuKSA/IDEgOiAtMSk7XG4gICAgICAgIGlmIChsaW5rQ2FzZVJlYXNvbnM/LmZpbHRlcigocmVhc29uKSA9PiByZWFzb24udmFsdWVfZW4gIT09ICdPdGhlcicpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rQ2FzZVJlYXNvbnMgPSBsaW5rQ2FzZVJlYXNvbnM/LmZpbHRlcigocmVhc29uKSA9PiByZWFzb24udmFsdWVfZW4gIT09ICdPdGhlcicpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE1vdmUgT3RoZXIgb3B0aW9uIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3RcbiAgICAgICAgaWYgKGxpbmtDYXNlUmVhc29ucz8uZmluZCgocmVhc29uKSA9PiByZWFzb24udmFsdWVfZW4gPT09ICdPdGhlcicpKSB7XG4gICAgICAgICAgdGhpcy5saW5rZWRDYXNlc1NlcnZpY2UubGlua0Nhc2VSZWFzb25zLnB1c2gobGlua0Nhc2VSZWFzb25zPy5maW5kKChyZWFzb24pID0+IHJlYXNvbi52YWx1ZV9lbiA9PT0gJ090aGVyJykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnZXRPcmdTZXJ2aWNlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlcnZpY2VzQXBpVXJsID0gYHJlZmRhdGEvbG9jYXRpb24vb3JnU2VydmljZXM/Y2NkQ2FzZVR5cGU9JHt0aGlzLmNhc2VEZXRhaWxzPy5jYXNlX3R5cGU/LmlkfWA7XG4gICAgdGhpcy5jb21tb25EYXRhU2VydmljZS5nZXRTZXJ2aWNlT3JnRGF0YShzZXJ2aWNlc0FwaVVybCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIHJlc3VsdC5mb3JFYWNoKChpZHMpID0+IHtcbiAgICAgICAgdGhpcy5nZXRMaW5rZWRDYXNlUmVhc29ucyhpZHMuc2VydmljZV9jb2RlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHByb2NlZWRUb05leHRQYWdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzQXRGaW5hbFBhZ2UoKSkge1xuICAgICAgLy8gQ29udGludWUgYnV0dG9uIGV2ZW50IG11c3QgYmUgYWxsb3dlZCBpbiBmaW5hbCBwYWdlXG4gICAgICB0aGlzLmNhc2VFZGl0RGF0YVNlcnZpY2Uuc2V0TGlua2VkQ2FzZXNKb3VybmV5QXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAvLyBUcmlnZ2VyIHZhbGlkYXRpb24gdG8gY2xlYXIgdGhlIFwibm90QXRGaW5hbFBhZ2VcIiBlcnJvciBpZiBub3cgYXQgdGhlIGZpbmFsIHN0YXRlXG4gICAgICB0aGlzLmZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAvLyB1cGRhdGUgZm9ybSB2YWx1ZVxuICAgICAgdGhpcy5zdWJtaXRMaW5rZWRDYXNlcygpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250aW51ZSBidXR0b24gZXZlbnQgbXVzdCBub3QgYmUgYWxsb3dlZCBpZiBub3QgaW4gZmluYWwgcGFnZVxuICAgICAgdGhpcy5jYXNlRWRpdERhdGFTZXJ2aWNlLnNldExpbmtlZENhc2VzSm91cm5leUF0RmluYWxTdGVwKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3VibWl0TGlua2VkQ2FzZXMoKTogdm9pZCB7XG4gICAgbGV0IGNhc2VGaWVsZFZhbHVlID0gWy4uLih0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSB8fCBbXSldO1xuXG4gICAgaWYgKCF0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyKSB7XG4gICAgICBjb25zdCB1bmxpbmtlZENhc2VSZWZlcmVuY2VJZHMgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5saW5rZWRDYXNlc1xuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnVubGluaylcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS5jYXNlUmVmZXJlbmNlKTtcblxuICAgICAgY2FzZUZpZWxkVmFsdWUgPSBjYXNlRmllbGRWYWx1ZS5maWx0ZXIoXG4gICAgICAgIChpdGVtKSA9PiAhdW5saW5rZWRDYXNlUmVmZXJlbmNlSWRzLmluY2x1ZGVzKGl0ZW0uaWQpXG4gICAgICApO1xuICAgIH1cbiAgICAvLyBSZXBsYWNlIHRoZSBjYXNlTGlua3MgdmFsdWUgaW4gdGhpcy5mb3JtR3JvdXBcbiAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHtcbiAgICAgIGNhc2VMaW5rczogY2FzZUZpZWxkVmFsdWVcbiAgICB9KTtcblxuICAgIC8vIFJlcGxhY2UgdGhlIGNhc2VMaW5rcyBjb250cm9sIGluIGNhc2VFZGl0Rm9ybS5jb250cm9scy5kYXRhXG4gICAgY29uc3QgZGF0YUZvcm1Hcm91cCA9IHRoaXMuY2FzZUVkaXRGb3JtLmNvbnRyb2xzLmRhdGEgYXMgRm9ybUdyb3VwO1xuICAgIGlmIChkYXRhRm9ybUdyb3VwKSB7XG4gICAgICAvLyBSZW1vdmUgdGhlIGV4aXN0aW5nIGNhc2VMaW5rcyBjb250cm9sIChpZiBpdCBleGlzdHMpXG4gICAgICBpZiAoZGF0YUZvcm1Hcm91cC5jb250YWlucygnY2FzZUxpbmtzJykpIHtcbiAgICAgICAgZGF0YUZvcm1Hcm91cC5yZW1vdmVDb250cm9sKCdjYXNlTGlua3MnKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHRoZSBuZXcgY29udHJvbCB3aXRoIHRoZSByZXBsYWNlbWVudCB2YWx1ZVxuICAgICAgZGF0YUZvcm1Hcm91cC5hZGRDb250cm9sKCdjYXNlTGlua3MnLCBuZXcgRm9ybUNvbnRyb2woY2FzZUZpZWxkVmFsdWUgfHwgW10pKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgdGhlIHVwZGF0ZWQgZm9ybSBpbiB0aGUgY2FzZUVkaXREYXRhU2VydmljZVxuICAgIHRoaXMuY2FzZUVkaXREYXRhU2VydmljZS5zZXRDYXNlRWRpdEZvcm0odGhpcy5jYXNlRWRpdEZvcm0pO1xuICB9XG5cbiAgcHVibGljIGlzQXRGaW5hbFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubGlua2VkQ2FzZXNQYWdlID09PSB0aGlzLmxpbmtlZENhc2VzUGFnZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTO1xuICB9XG5cbiAgcHVibGljIGdldE5leHRQYWdlKGxpbmtlZENhc2VzU3RhdGU6IExpbmtlZENhc2VzU3RhdGUpOiBudW1iZXIge1xuICAgIGlmICgodGhpcy5saW5rZWRDYXNlc1BhZ2UgPT09IExpbmtlZENhc2VzUGFnZXMuQkVGT1JFX1lPVV9TVEFSVCkgfHxcbiAgICAgIChsaW5rZWRDYXNlc1N0YXRlLmN1cnJlbnRMaW5rZWRDYXNlc1BhZ2UgPT09IExpbmtlZENhc2VzUGFnZXMuQ0hFQ0tfWU9VUl9BTlNXRVJTICYmIGxpbmtlZENhc2VzU3RhdGUubmF2aWdhdGVUb1ByZXZpb3VzUGFnZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyXG4gICAgICAgID8gTGlua2VkQ2FzZXNQYWdlcy5MSU5LX0NBU0VcbiAgICAgICAgOiBMaW5rZWRDYXNlc1BhZ2VzLlVOTElOS19DQVNFO1xuICAgIH1cbiAgICByZXR1cm4gTGlua2VkQ2FzZXNQYWdlcy5DSEVDS19ZT1VSX0FOU1dFUlM7XG4gIH1cblxuICBwdWJsaWMgZ2V0TGlua2VkQ2FzZXMoKTogdm9pZCB7XG4gICAgdGhpcy5jYXNlc1NlcnZpY2UuZ2V0Q2FzZVZpZXdWMih0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlSWQpLnN1YnNjcmliZSgoY2FzZVZpZXc6IENhc2VWaWV3KSA9PiB7XG4gICAgICBjb25zdCBjYXNlVmlld0ZpbHRlcmVkID0gY2FzZVZpZXcudGFicy5maWx0ZXIoKHRhYikgPT4ge1xuICAgICAgICByZXR1cm4gdGFiLmZpZWxkcy5zb21lKFxuICAgICAgICAgICh7IGZpZWxkX3R5cGUgfSkgPT4gZmllbGRfdHlwZSAmJiBmaWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZSAmJiBmaWVsZF90eXBlLmNvbGxlY3Rpb25fZmllbGRfdHlwZS5pZCA9PT0gJ0Nhc2VMaW5rJ1xuICAgICAgICApO1xuICAgICAgfSk7XG4gICAgICBpZiAoY2FzZVZpZXdGaWx0ZXJlZCkge1xuICAgICAgICBjb25zdCBjYXNlTGlua0ZpZWxkVmFsdWUgPSBjYXNlVmlld0ZpbHRlcmVkLm1hcCgoZmlsdGVyZWQpID0+XG4gICAgICAgICAgZmlsdGVyZWQuZmllbGRzPy5sZW5ndGggPiAwICYmIGZpbHRlcmVkLmZpZWxkcy5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZC5pZCA9PT0gJ2Nhc2VMaW5rcycpWzBdLnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLmNhc2VGaWVsZFZhbHVlID0gY2FzZUxpbmtGaWVsZFZhbHVlLmxlbmd0aCA/IGNhc2VMaW5rRmllbGRWYWx1ZVswXSA6IFtdO1xuICAgICAgICB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5nZXRBbGxMaW5rZWRDYXNlSW5mb3JtYXRpb24oKTtcbiAgICAgIH1cbiAgICAgIC8vIEluaXRpYWxpc2UgdGhlIGZpcnN0IHBhZ2UgdG8gZGlzcGxheVxuICAgICAgdGhpcy5saW5rZWRDYXNlc1BhZ2UgPSB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5pc0xpbmtlZENhc2VzRXZlbnRUcmlnZ2VyIHx8XG4gICAgICAgICh0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZSAmJiB0aGlzLmxpbmtlZENhc2VzU2VydmljZS5jYXNlRmllbGRWYWx1ZS5sZW5ndGggPiAwXG4gICAgICAgICAgJiYgIXRoaXMubGlua2VkQ2FzZXNTZXJ2aWNlLnNlcnZlckxpbmtlZEFwaUVycm9yKVxuICAgICAgICA/IExpbmtlZENhc2VzUGFnZXMuQkVGT1JFX1lPVV9TVEFSVFxuICAgICAgICA6IExpbmtlZENhc2VzUGFnZXMuTk9fTElOS0VEX0NBU0VTO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS0yXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cbiAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdTd2l0Y2hdPVwibGlua2VkQ2FzZXNQYWdlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibGlua2VkQ2FzZXNQYWdlcy5CRUZPUkVfWU9VX1NUQVJUXCI+XG4gICAgICA8Y2NkLWxpbmtlZC1jYXNlcy1iZWZvcmUteW91LXN0YXJ0XG4gICAgICAgIChsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcik9XCJvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1saW5rZWQtY2FzZXMtYmVmb3JlLXlvdS1zdGFydD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsaW5rZWRDYXNlc1BhZ2VzLk5PX0xJTktFRF9DQVNFU1wiPlxuICAgICAgPGNjZC1uby1saW5rZWQtY2FzZXNcbiAgICAgICAgKGxpbmtlZENhc2VzU3RhdGVFbWl0dGVyKT1cIm9uTGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZWQoJGV2ZW50KVwiPjwvY2NkLW5vLWxpbmtlZC1jYXNlcz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJsaW5rZWRDYXNlc1BhZ2VzLkxJTktfQ0FTRVwiPlxuICAgICAgPGNjZC1saW5rLWNhc2VzXG4gICAgICAgIChsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcik9XCJvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC1saW5rLWNhc2VzPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImxpbmtlZENhc2VzUGFnZXMuVU5MSU5LX0NBU0VcIj5cbiAgICAgIDxjY2QtdW5saW5rLWNhc2VzXG4gICAgICAgIChsaW5rZWRDYXNlc1N0YXRlRW1pdHRlcik9XCJvbkxpbmtlZENhc2VzU3RhdGVFbWl0dGVkKCRldmVudClcIj48L2NjZC11bmxpbmstY2FzZXM+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwibGlua2VkQ2FzZXNQYWdlcy5DSEVDS19ZT1VSX0FOU1dFUlNcIj5cbiAgICAgIDxjY2QtbGlua2VkLWNhc2VzLWNoZWNrLXlvdXItYW5zd2Vyc1xuICAgICAgICAobGlua2VkQ2FzZXNTdGF0ZUVtaXR0ZXIpPVwib25MaW5rZWRDYXNlc1N0YXRlRW1pdHRlZCgkZXZlbnQpXCI+PC9jY2QtbGlua2VkLWNhc2VzLWNoZWNrLXlvdXItYW5zd2Vycz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==