@hmcts/ccd-case-ui-toolkit 7.1.35-qm-callbackerror → 7.1.35-ungrey-back-button

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 (114) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +110 -33
  2. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +70 -43
  3. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +7 -4
  4. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +3 -1
  5. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +14 -4
  6. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +96 -0
  7. package/esm2022/lib/shared/components/palette/base-field/abstract-journey.component.mjs +82 -0
  8. package/esm2022/lib/shared/components/palette/base-field/index.mjs +3 -1
  9. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +21 -21
  10. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +3 -3
  11. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +25 -22
  12. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +82 -35
  13. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +32 -29
  14. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +33 -28
  15. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +174 -71
  16. 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
  17. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +124 -105
  18. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +31 -4
  19. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +139 -33
  20. package/esm2022/lib/shared/components/palette/history/event-log/event-log.component.mjs +9 -9
  21. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +39 -22
  22. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +19 -7
  23. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +91 -61
  24. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +13 -9
  25. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +85 -48
  26. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +22 -2
  27. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +126 -30
  28. package/esm2022/lib/shared/components/palette/palette.module.mjs +4 -3
  29. package/esm2022/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.mjs +12 -10
  30. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +50 -29
  31. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +158 -104
  32. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.mjs +104 -41
  33. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +4 -21
  34. package/esm2022/lib/shared/domain/index.mjs +2 -1
  35. package/esm2022/lib/shared/domain/journey/index.mjs +3 -0
  36. package/esm2022/lib/shared/domain/journey/journey-instigator.model.mjs +2 -0
  37. package/esm2022/lib/shared/domain/journey/journey.model.mjs +2 -0
  38. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +2 -2
  39. package/esm2022/lib/shared/services/index.mjs +2 -1
  40. package/esm2022/lib/shared/services/journey/index.mjs +2 -0
  41. package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +117 -0
  42. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +2035 -1028
  43. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  44. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +17 -3
  45. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  46. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +10 -2
  47. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  48. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  49. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +1 -0
  50. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -1
  51. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +2 -1
  52. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  53. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts +30 -0
  54. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts.map +1 -0
  55. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts +27 -0
  56. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts.map +1 -0
  57. package/lib/shared/components/palette/base-field/index.d.ts +2 -0
  58. package/lib/shared/components/palette/base-field/index.d.ts.map +1 -1
  59. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +4 -2
  60. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  61. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +4 -2
  62. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -1
  63. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +13 -4
  64. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  65. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +6 -3
  66. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  67. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +5 -2
  68. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  69. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +21 -6
  70. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  71. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag-add-translation-form/update-flag-add-translation-form.component.d.ts +4 -2
  72. 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
  73. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +7 -3
  74. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  75. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +1 -0
  76. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  77. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +16 -6
  78. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  79. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +6 -4
  80. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  81. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +6 -2
  82. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -1
  83. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +7 -3
  84. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  85. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +5 -2
  86. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
  87. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +9 -3
  88. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  89. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +7 -0
  90. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  91. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +10 -3
  92. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  93. package/lib/shared/components/palette/query-management/components/qualifying-questions/qualifying-question-detail/qualifying-question-detail.component.d.ts.map +1 -1
  94. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts +5 -1
  95. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  96. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +17 -5
  97. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  98. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts +17 -5
  99. package/lib/shared/components/palette/query-management/components/query-write/query-write-respond-to-query/query-write-respond-to-query.component.d.ts.map +1 -1
  100. package/lib/shared/domain/index.d.ts +1 -0
  101. package/lib/shared/domain/index.d.ts.map +1 -1
  102. package/lib/shared/domain/journey/index.d.ts +3 -0
  103. package/lib/shared/domain/journey/index.d.ts.map +1 -0
  104. package/lib/shared/domain/journey/journey-instigator.model.d.ts +5 -0
  105. package/lib/shared/domain/journey/journey-instigator.model.d.ts.map +1 -0
  106. package/lib/shared/domain/journey/journey.model.d.ts +19 -0
  107. package/lib/shared/domain/journey/journey.model.d.ts.map +1 -0
  108. package/lib/shared/services/index.d.ts +1 -0
  109. package/lib/shared/services/index.d.ts.map +1 -1
  110. package/lib/shared/services/journey/index.d.ts +2 -0
  111. package/lib/shared/services/journey/index.d.ts.map +1 -0
  112. package/lib/shared/services/journey/multipage-component-state.service.d.ts +26 -0
  113. package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +1 -0
  114. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MultipageComponentStateService {
4
+ //is journey at start will help keep track of the progress through the journey.
5
+ isJourneyAtStart = false;
6
+ //journey collection references an upto date list of all the journey components currently rendered!!!!
7
+ journeyCollection = new Array();
8
+ //the instigator references the case-edit-page component that will invoke the next and previous methods
9
+ instigator = null;
10
+ //each journey will store its state here. this could include form data if needed
11
+ journeyState = new Map();
12
+ //setJourneyComponent will be called by the app component to update the journey collection
13
+ setJourneyCollection(journeyCollection) {
14
+ this.journeyCollection = journeyCollection;
15
+ }
16
+ //getJourneyCollection will be called by the app component to get the journey collection
17
+ getJourneyCollection() {
18
+ return this.journeyCollection;
19
+ }
20
+ //addToJourneyCollection will be called from the journey
21
+ addTojourneyCollection(journey) {
22
+ this.journeyCollection.push(journey);
23
+ }
24
+ //resetJourneyCollection will be called
25
+ resetJourneyCollection() {
26
+ this.journeyCollection = [];
27
+ }
28
+ //setInstigator will be called by the app component to update the instigator
29
+ setInstigator(instigator) {
30
+ this.instigator = instigator;
31
+ }
32
+ //getInstigator will be called by the app component to get the instigator
33
+ getInstigator() {
34
+ return this.instigator;
35
+ }
36
+ //setJourneyState will be called by the journey component to update the journey state
37
+ setJourneyState(journey) {
38
+ this.journeyState.set(journey.journeyId, journey);
39
+ }
40
+ //getJourneyState will be called by the journey component to get the journey state
41
+ getJourneyState(journey) {
42
+ return this.journeyState.get(journey.journeyId) || null;
43
+ }
44
+ //resetJourneyState will be called by the journey component to reset the journey state
45
+ resetJourneyState() {
46
+ this.journeyState.clear();
47
+ }
48
+ getJourneyCollectionMainObject() {
49
+ return this.journeyCollection[0];
50
+ }
51
+ //reset will be called to ensure that the entire state is reset
52
+ reset() {
53
+ this.isJourneyAtStart = false;
54
+ this.journeyState.clear();
55
+ this.instigator = null;
56
+ this.journeyCollection = [];
57
+ }
58
+ //next will be called by the instigator that will invoke the next method of the journey component that will invoke the next method of the childpage component
59
+ next() {
60
+ if (this.journeyCollection.length <= 0) {
61
+ this.instigator?.onFinalNext();
62
+ return;
63
+ }
64
+ const isAnyObjectNotFinished = this.journeyCollection.some((journey) => !journey.isFinished());
65
+ if (!isAnyObjectNotFinished) {
66
+ this.instigator?.onFinalNext();
67
+ return;
68
+ }
69
+ for (const journey of this.journeyCollection) {
70
+ if (!journey) {
71
+ continue;
72
+ }
73
+ if (!journey?.isFinished()) {
74
+ journey?.next();
75
+ break;
76
+ }
77
+ }
78
+ }
79
+ //previous will be called by the instigator that will invoke the previous method of the journey component that will invoke the previous method of the childpage component
80
+ previous() {
81
+ if (this.journeyCollection.length <= 0) {
82
+ this.instigator?.onFinalPrevious();
83
+ return;
84
+ }
85
+ const isAnyObjectNotAtStart = this.journeyCollection.some((journey) => !journey.isStart());
86
+ if (!isAnyObjectNotAtStart) {
87
+ this.instigator?.onFinalPrevious();
88
+ return;
89
+ }
90
+ for (const journey of this.journeyCollection.slice().reverse()) {
91
+ if (!journey) {
92
+ continue;
93
+ }
94
+ if (!journey?.isStart()) {
95
+ journey?.previous();
96
+ break;
97
+ }
98
+ }
99
+ }
100
+ //isAtStart can be used to inform the instigator if we're at the start.
101
+ get isAtStart() {
102
+ return this.isJourneyAtStart;
103
+ }
104
+ //isAtStart can be used to update the value from a journey object, so the instigator knows.
105
+ set isAtStart(isAtStart) {
106
+ this.isJourneyAtStart = isAtStart;
107
+ }
108
+ static ɵfac = function MultipageComponentStateService_Factory(t) { return new (t || MultipageComponentStateService)(); };
109
+ static ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: MultipageComponentStateService, factory: MultipageComponentStateService.ɵfac, providedIn: 'root' });
110
+ }
111
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MultipageComponentStateService, [{
112
+ type: Injectable,
113
+ args: [{
114
+ providedIn: 'root'
115
+ }]
116
+ }], null, null); })();
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlwYWdlLWNvbXBvbmVudC1zdGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9qb3VybmV5L211bHRpcGFnZS1jb21wb25lbnQtc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sOEJBQThCO0lBQ3pDLCtFQUErRTtJQUN2RSxnQkFBZ0IsR0FBWSxLQUFLLENBQUM7SUFDMUMsc0dBQXNHO0lBQzlGLGlCQUFpQixHQUFjLElBQUksS0FBSyxFQUFXLENBQUM7SUFDNUQsdUdBQXVHO0lBQy9GLFVBQVUsR0FBNkIsSUFBSSxDQUFDO0lBQ3BELGdGQUFnRjtJQUN4RSxZQUFZLEdBQXlCLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRXhFLDBGQUEwRjtJQUMxRixvQkFBb0IsQ0FBQyxpQkFBNEI7UUFDL0MsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGlCQUFpQixDQUFDO0lBQzdDLENBQUM7SUFFRCx3RkFBd0Y7SUFDeEYsb0JBQW9CO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsc0JBQXNCLENBQUMsT0FBZ0I7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLHNCQUFzQjtRQUNwQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsYUFBYSxDQUFDLFVBQTZCO1FBQ3pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx5RUFB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QUM7SUFFRCx1RUFBdUU7SUFDdkUsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCwyRkFBMkY7SUFDM0YsSUFBVyxTQUFTLENBQUMsU0FBa0I7UUFDckMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztJQUNwQyxDQUFDO3dGQTdIVSw4QkFBOEI7Z0VBQTlCLDhCQUE4QixXQUE5Qiw4QkFBOEIsbUJBRjdCLE1BQU07O2lGQUVQLDhCQUE4QjtjQUgxQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKb3VybmV5LCBKb3VybmV5SW5zdGlnYXRvciB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpcGFnZUNvbXBvbmVudFN0YXRlU2VydmljZSB7XG4gIC8vaXMgam91cm5leSBhdCBzdGFydCB3aWxsIGhlbHAga2VlcCB0cmFjayBvZiB0aGUgcHJvZ3Jlc3MgdGhyb3VnaCB0aGUgam91cm5leS5cbiAgcHJpdmF0ZSBpc0pvdXJuZXlBdFN0YXJ0OiBib29sZWFuID0gZmFsc2U7XG4gIC8vam91cm5leSBjb2xsZWN0aW9uIHJlZmVyZW5jZXMgYW4gdXB0byBkYXRlIGxpc3Qgb2YgYWxsIHRoZSBqb3VybmV5IGNvbXBvbmVudHMgY3VycmVudGx5IHJlbmRlcmVkISEhIVxuICBwcml2YXRlIGpvdXJuZXlDb2xsZWN0aW9uOiBKb3VybmV5W10gPSBuZXcgQXJyYXk8Sm91cm5leT4oKTtcbiAgLy90aGUgaW5zdGlnYXRvciByZWZlcmVuY2VzIHRoZSBjYXNlLWVkaXQtcGFnZSBjb21wb25lbnQgdGhhdCB3aWxsIGludm9rZSB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbWV0aG9kc1xuICBwcml2YXRlIGluc3RpZ2F0b3I6IEpvdXJuZXlJbnN0aWdhdG9yIHwgbnVsbCA9IG51bGw7XG4gIC8vZWFjaCBqb3VybmV5IHdpbGwgc3RvcmUgaXRzIHN0YXRlIGhlcmUuIHRoaXMgY291bGQgaW5jbHVkZSBmb3JtIGRhdGEgaWYgbmVlZGVkXG4gIHByaXZhdGUgam91cm5leVN0YXRlOiBNYXA8c3RyaW5nLCBKb3VybmV5PiA9IG5ldyBNYXA8c3RyaW5nLCBKb3VybmV5PigpO1xuXG4gIC8vc2V0Sm91cm5leUNvbXBvbmVudCB3aWxsIGJlIGNhbGxlZCBieSB0aGUgYXBwIGNvbXBvbmVudCB0byB1cGRhdGUgdGhlIGpvdXJuZXkgY29sbGVjdGlvblxuICBzZXRKb3VybmV5Q29sbGVjdGlvbihqb3VybmV5Q29sbGVjdGlvbjogSm91cm5leVtdKTogdm9pZCB7XG4gICAgdGhpcy5qb3VybmV5Q29sbGVjdGlvbiA9IGpvdXJuZXlDb2xsZWN0aW9uO1xuICB9XG5cbiAgLy9nZXRKb3VybmV5Q29sbGVjdGlvbiB3aWxsIGJlIGNhbGxlZCBieSB0aGUgYXBwIGNvbXBvbmVudCB0byBnZXQgdGhlIGpvdXJuZXkgY29sbGVjdGlvblxuICBnZXRKb3VybmV5Q29sbGVjdGlvbigpOiBKb3VybmV5W10ge1xuICAgIHJldHVybiB0aGlzLmpvdXJuZXlDb2xsZWN0aW9uO1xuICB9XG5cbiAgLy9hZGRUb0pvdXJuZXlDb2xsZWN0aW9uIHdpbGwgYmUgY2FsbGVkIGZyb20gdGhlIGpvdXJuZXlcbiAgYWRkVG9qb3VybmV5Q29sbGVjdGlvbihqb3VybmV5OiBKb3VybmV5KTogdm9pZCB7XG4gICAgdGhpcy5qb3VybmV5Q29sbGVjdGlvbi5wdXNoKGpvdXJuZXkpO1xuICB9XG5cbiAgLy9yZXNldEpvdXJuZXlDb2xsZWN0aW9uIHdpbGwgYmUgY2FsbGVkXG4gIHJlc2V0Sm91cm5leUNvbGxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5qb3VybmV5Q29sbGVjdGlvbiA9IFtdO1xuICB9XG5cbiAgLy9zZXRJbnN0aWdhdG9yIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBhcHAgY29tcG9uZW50IHRvIHVwZGF0ZSB0aGUgaW5zdGlnYXRvclxuICBzZXRJbnN0aWdhdG9yKGluc3RpZ2F0b3I6IEpvdXJuZXlJbnN0aWdhdG9yKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0aWdhdG9yID0gaW5zdGlnYXRvcjtcbiAgfVxuXG4gIC8vZ2V0SW5zdGlnYXRvciB3aWxsIGJlIGNhbGxlZCBieSB0aGUgYXBwIGNvbXBvbmVudCB0byBnZXQgdGhlIGluc3RpZ2F0b3JcbiAgZ2V0SW5zdGlnYXRvcigpOiBKb3VybmV5SW5zdGlnYXRvciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLmluc3RpZ2F0b3I7XG4gIH1cblxuICAvL3NldEpvdXJuZXlTdGF0ZSB3aWxsIGJlIGNhbGxlZCBieSB0aGUgam91cm5leSBjb21wb25lbnQgdG8gdXBkYXRlIHRoZSBqb3VybmV5IHN0YXRlXG4gIHNldEpvdXJuZXlTdGF0ZShqb3VybmV5OiBKb3VybmV5KTogdm9pZCB7XG4gICAgdGhpcy5qb3VybmV5U3RhdGUuc2V0KGpvdXJuZXkuam91cm5leUlkLCBqb3VybmV5KTtcbiAgfVxuXG4gIC8vZ2V0Sm91cm5leVN0YXRlIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBqb3VybmV5IGNvbXBvbmVudCB0byBnZXQgdGhlIGpvdXJuZXkgc3RhdGVcbiAgZ2V0Sm91cm5leVN0YXRlKGpvdXJuZXk6IEpvdXJuZXkpOiBKb3VybmV5IHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuam91cm5leVN0YXRlLmdldChqb3VybmV5LmpvdXJuZXlJZCkgfHwgbnVsbDtcbiAgfVxuXG4gIC8vcmVzZXRKb3VybmV5U3RhdGUgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIGpvdXJuZXkgY29tcG9uZW50IHRvIHJlc2V0IHRoZSBqb3VybmV5IHN0YXRlXG4gIHJlc2V0Sm91cm5leVN0YXRlKCk6IHZvaWQge1xuICAgIHRoaXMuam91cm5leVN0YXRlLmNsZWFyKCk7XG4gIH1cblxuICBnZXRKb3VybmV5Q29sbGVjdGlvbk1haW5PYmplY3QoKTogSm91cm5leSB7XG4gICAgcmV0dXJuIHRoaXMuam91cm5leUNvbGxlY3Rpb25bMF07XG4gIH1cblxuICAvL3Jlc2V0IHdpbGwgYmUgY2FsbGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBlbnRpcmUgc3RhdGUgaXMgcmVzZXRcbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5pc0pvdXJuZXlBdFN0YXJ0ID0gZmFsc2U7XG4gICAgdGhpcy5qb3VybmV5U3RhdGUuY2xlYXIoKTtcbiAgICB0aGlzLmluc3RpZ2F0b3IgPSBudWxsO1xuICAgIHRoaXMuam91cm5leUNvbGxlY3Rpb24gPSBbXTtcbiAgfVxuXG4gIC8vbmV4dCB3aWxsIGJlIGNhbGxlZCBieSB0aGUgaW5zdGlnYXRvciB0aGF0IHdpbGwgaW52b2tlIHRoZSBuZXh0IG1ldGhvZCBvZiB0aGUgam91cm5leSBjb21wb25lbnQgdGhhdCB3aWxsIGludm9rZSB0aGUgbmV4dCBtZXRob2Qgb2YgdGhlIGNoaWxkcGFnZSBjb21wb25lbnRcbiAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuam91cm5leUNvbGxlY3Rpb24ubGVuZ3RoIDw9IDApIHtcbiAgICAgIHRoaXMuaW5zdGlnYXRvcj8ub25GaW5hbE5leHQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0FueU9iamVjdE5vdEZpbmlzaGVkOiBib29sZWFuID0gdGhpcy5qb3VybmV5Q29sbGVjdGlvbi5zb21lKChqb3VybmV5KSA9PiAham91cm5leS5pc0ZpbmlzaGVkKCkpO1xuXG4gICAgaWYgKCFpc0FueU9iamVjdE5vdEZpbmlzaGVkKSB7XG4gICAgICB0aGlzLmluc3RpZ2F0b3I/Lm9uRmluYWxOZXh0KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBqb3VybmV5IG9mIHRoaXMuam91cm5leUNvbGxlY3Rpb24pIHtcbiAgICAgIGlmICgham91cm5leSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFqb3VybmV5Py5pc0ZpbmlzaGVkKCkpIHtcbiAgICAgICAgam91cm5leT8ubmV4dCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvL3ByZXZpb3VzIHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBpbnN0aWdhdG9yIHRoYXQgd2lsbCBpbnZva2UgdGhlIHByZXZpb3VzIG1ldGhvZCBvZiB0aGUgam91cm5leSBjb21wb25lbnQgdGhhdCB3aWxsIGludm9rZSB0aGUgcHJldmlvdXMgbWV0aG9kIG9mIHRoZSBjaGlsZHBhZ2UgY29tcG9uZW50XG4gIHB1YmxpYyBwcmV2aW91cygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5qb3VybmV5Q29sbGVjdGlvbi5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy5pbnN0aWdhdG9yPy5vbkZpbmFsUHJldmlvdXMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0FueU9iamVjdE5vdEF0U3RhcnQ6IGJvb2xlYW4gPSB0aGlzLmpvdXJuZXlDb2xsZWN0aW9uLnNvbWUoKGpvdXJuZXkpID0+ICFqb3VybmV5LmlzU3RhcnQoKSk7XG4gICAgaWYgKCFpc0FueU9iamVjdE5vdEF0U3RhcnQpIHtcbiAgICAgIHRoaXMuaW5zdGlnYXRvcj8ub25GaW5hbFByZXZpb3VzKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBqb3VybmV5IG9mIHRoaXMuam91cm5leUNvbGxlY3Rpb24uc2xpY2UoKS5yZXZlcnNlKCkpIHtcbiAgICAgIGlmICgham91cm5leSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgham91cm5leT8uaXNTdGFydCgpKSB7XG4gICAgICAgIGpvdXJuZXk/LnByZXZpb3VzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vaXNBdFN0YXJ0IGNhbiBiZSB1c2VkIHRvIGluZm9ybSB0aGUgaW5zdGlnYXRvciBpZiB3ZSdyZSBhdCB0aGUgc3RhcnQuXG4gIHB1YmxpYyBnZXQgaXNBdFN0YXJ0KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSm91cm5leUF0U3RhcnQ7XG4gIH1cblxuICAvL2lzQXRTdGFydCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHZhbHVlIGZyb20gYSBqb3VybmV5IG9iamVjdCwgc28gdGhlIGluc3RpZ2F0b3Iga25vd3MuXG4gIHB1YmxpYyBzZXQgaXNBdFN0YXJ0KGlzQXRTdGFydDogYm9vbGVhbikge1xuICAgIHRoaXMuaXNKb3VybmV5QXRTdGFydCA9IGlzQXRTdGFydDtcbiAgfVxufVxuIl19