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

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 (101) hide show
  1. package/esm2022/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.mjs +33 -114
  2. package/esm2022/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.mjs +43 -70
  3. package/esm2022/lib/shared/components/case-editor/case-editor.module.mjs +4 -7
  4. package/esm2022/lib/shared/components/case-editor/services/case-flag-state.service.mjs +1 -3
  5. package/esm2022/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.mjs +4 -14
  6. package/esm2022/lib/shared/components/palette/base-field/index.mjs +1 -3
  7. package/esm2022/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.mjs +21 -21
  8. package/esm2022/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.mjs +3 -3
  9. package/esm2022/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.mjs +22 -25
  10. package/esm2022/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.mjs +35 -82
  11. package/esm2022/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.mjs +29 -32
  12. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.mjs +28 -33
  13. package/esm2022/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.mjs +71 -174
  14. 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
  15. package/esm2022/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.mjs +105 -124
  16. package/esm2022/lib/shared/components/palette/case-flag/read-case-flag-field.component.mjs +4 -31
  17. package/esm2022/lib/shared/components/palette/case-flag/write-case-flag-field.component.mjs +33 -142
  18. package/esm2022/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.mjs +22 -39
  19. package/esm2022/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.mjs +7 -19
  20. package/esm2022/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.mjs +45 -75
  21. package/esm2022/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.mjs +9 -13
  22. package/esm2022/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.mjs +44 -81
  23. package/esm2022/lib/shared/components/palette/linked-cases/services/linked-cases.service.mjs +2 -22
  24. package/esm2022/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.mjs +30 -109
  25. package/esm2022/lib/shared/components/palette/palette.module.mjs +2 -2
  26. package/esm2022/lib/shared/domain/index.mjs +1 -2
  27. package/esm2022/lib/shared/pipes/complex/ccd-page-fields.pipe.mjs +2 -2
  28. package/esm2022/lib/shared/services/index.mjs +1 -2
  29. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +766 -1646
  30. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  31. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts +3 -17
  32. package/lib/shared/components/case-editor/case-edit-page/case-edit-page.component.d.ts.map +1 -1
  33. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts +2 -10
  34. package/lib/shared/components/case-editor/case-edit-submit/case-edit-submit.component.d.ts.map +1 -1
  35. package/lib/shared/components/case-editor/case-editor.module.d.ts.map +1 -1
  36. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts +0 -1
  37. package/lib/shared/components/case-editor/services/case-flag-state.service.d.ts.map +1 -1
  38. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts +1 -2
  39. package/lib/shared/components/case-viewer/case-event-trigger/case-event-trigger.component.d.ts.map +1 -1
  40. package/lib/shared/components/palette/base-field/index.d.ts +0 -2
  41. package/lib/shared/components/palette/base-field/index.d.ts.map +1 -1
  42. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts +2 -4
  43. package/lib/shared/components/palette/case-flag/components/add-comments/add-comments.component.d.ts.map +1 -1
  44. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts +2 -4
  45. package/lib/shared/components/palette/case-flag/components/confirm-flag-status/confirm-flag-status.component.d.ts.map +1 -1
  46. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts +4 -13
  47. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  48. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts +3 -6
  49. package/lib/shared/components/palette/case-flag/components/search-language-interpreter/search-language-interpreter.component.d.ts.map +1 -1
  50. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts +2 -5
  51. package/lib/shared/components/palette/case-flag/components/select-flag-location/select-flag-location.component.d.ts.map +1 -1
  52. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts +6 -21
  53. package/lib/shared/components/palette/case-flag/components/select-flag-type/select-flag-type.component.d.ts.map +1 -1
  54. 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
  55. 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
  56. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts +3 -7
  57. package/lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.d.ts.map +1 -1
  58. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts +0 -1
  59. package/lib/shared/components/palette/case-flag/read-case-flag-field.component.d.ts.map +1 -1
  60. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts +6 -16
  61. package/lib/shared/components/palette/case-flag/write-case-flag-field.component.d.ts.map +1 -1
  62. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts +4 -6
  63. package/lib/shared/components/palette/linked-cases/components/before-you-start/before-you-start.component.d.ts.map +1 -1
  64. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts +2 -6
  65. package/lib/shared/components/palette/linked-cases/components/check-your-answers/check-your-answers.component.d.ts.map +1 -1
  66. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts +3 -7
  67. package/lib/shared/components/palette/linked-cases/components/link-cases/link-cases.component.d.ts.map +1 -1
  68. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts +2 -5
  69. package/lib/shared/components/palette/linked-cases/components/no-linked-cases/no-linked-cases.component.d.ts.map +1 -1
  70. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts +3 -9
  71. package/lib/shared/components/palette/linked-cases/components/unlink-cases/unlink-cases.component.d.ts.map +1 -1
  72. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts +0 -7
  73. package/lib/shared/components/palette/linked-cases/services/linked-cases.service.d.ts.map +1 -1
  74. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts +3 -10
  75. package/lib/shared/components/palette/linked-cases/write-linked-cases-field.component.d.ts.map +1 -1
  76. package/lib/shared/domain/index.d.ts +0 -1
  77. package/lib/shared/domain/index.d.ts.map +1 -1
  78. package/lib/shared/services/index.d.ts +0 -1
  79. package/lib/shared/services/index.d.ts.map +1 -1
  80. package/package.json +1 -1
  81. package/esm2022/lib/shared/components/palette/base-field/abstract-field-write-journey.component.mjs +0 -96
  82. package/esm2022/lib/shared/components/palette/base-field/abstract-journey.component.mjs +0 -82
  83. package/esm2022/lib/shared/domain/journey/index.mjs +0 -3
  84. package/esm2022/lib/shared/domain/journey/journey-instigator.model.mjs +0 -2
  85. package/esm2022/lib/shared/domain/journey/journey.model.mjs +0 -2
  86. package/esm2022/lib/shared/services/journey/index.mjs +0 -2
  87. package/esm2022/lib/shared/services/journey/multipage-component-state.service.mjs +0 -117
  88. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts +0 -30
  89. package/lib/shared/components/palette/base-field/abstract-field-write-journey.component.d.ts.map +0 -1
  90. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts +0 -27
  91. package/lib/shared/components/palette/base-field/abstract-journey.component.d.ts.map +0 -1
  92. package/lib/shared/domain/journey/index.d.ts +0 -3
  93. package/lib/shared/domain/journey/index.d.ts.map +0 -1
  94. package/lib/shared/domain/journey/journey-instigator.model.d.ts +0 -5
  95. package/lib/shared/domain/journey/journey-instigator.model.d.ts.map +0 -1
  96. package/lib/shared/domain/journey/journey.model.d.ts +0 -19
  97. package/lib/shared/domain/journey/journey.model.d.ts.map +0 -1
  98. package/lib/shared/services/journey/index.d.ts +0 -2
  99. package/lib/shared/services/journey/index.d.ts.map +0 -1
  100. package/lib/shared/services/journey/multipage-component-state.service.d.ts +0 -26
  101. package/lib/shared/services/journey/multipage-component-state.service.d.ts.map +0 -1
@@ -2,38 +2,35 @@ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
2
  import { FormControl, FormGroup } from '@angular/forms';
3
3
  import { RpxTranslationService } from 'rpx-xui-translation';
4
4
  import { CaseFlagDisplayContextParameter, CaseFlagFieldState, CaseFlagFormFields, CaseFlagStatus, CaseFlagWizardStepTitle, UpdateFlagErrorMessage, UpdateFlagStep } from '../../enums';
5
- import { AbstractJourneyComponent } from '../../../base-field';
6
- import { MultipageComponentStateService } from "../../../../../services";
7
5
  import * as i0 from "@angular/core";
8
6
  import * as i1 from "rpx-xui-translation";
9
- import * as i2 from "../../../../../services";
10
7
  const _c0 = a0 => ({ "form-group-error": a0 });
11
8
  const _c1 = a0 => ({ "govuk-tag--grey": a0 });
12
9
  function UpdateFlagComponent_div_7_Template(rf, ctx) { if (rf & 1) {
13
- i0.ɵɵelementStart(0, "div", 15);
10
+ i0.ɵɵelementStart(0, "div", 17);
14
11
  i0.ɵɵtext(1);
15
12
  i0.ɵɵpipe(2, "updateFlagTitleDisplay");
16
13
  i0.ɵɵelementEnd();
17
14
  } if (rf & 2) {
18
- const ctx_r0 = i0.ɵɵnextContext();
15
+ const ctx_r1 = i0.ɵɵnextContext();
19
16
  i0.ɵɵadvance();
20
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.selectedFlag == null ? null : ctx_r0.selectedFlag.flagDetailDisplay == null ? null : ctx_r0.selectedFlag.flagDetailDisplay.flagDetail), " ");
17
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r1.selectedFlag == null ? null : ctx_r1.selectedFlag.flagDetailDisplay == null ? null : ctx_r1.selectedFlag.flagDetailDisplay.flagDetail), " ");
21
18
  } }
22
19
  function UpdateFlagComponent_div_14_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 16);
20
+ i0.ɵɵelementStart(0, "div", 18);
24
21
  i0.ɵɵtext(1);
25
22
  i0.ɵɵpipe(2, "rpxTranslate");
26
23
  i0.ɵɵelementEnd();
27
24
  } if (rf & 2) {
28
- const ctx_r0 = i0.ɵɵnextContext();
25
+ const ctx_r1 = i0.ɵɵnextContext();
29
26
  i0.ɵɵadvance();
30
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r0.updateFlagStepEnum.COMMENT_HINT_TEXT_EXTERNAL), " ");
27
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, ctx_r1.updateFlagStepEnum.COMMENT_HINT_TEXT_EXTERNAL), " ");
31
28
  } }
32
29
  function UpdateFlagComponent_ng_container_15_div_5_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "div", 23)(1, "span", 24);
30
+ i0.ɵɵelementStart(0, "div", 25)(1, "span", 26);
34
31
  i0.ɵɵtext(2, "!");
35
32
  i0.ɵɵelementEnd();
36
- i0.ɵɵelementStart(3, "strong", 25)(4, "span", 26);
33
+ i0.ɵɵelementStart(3, "strong", 27)(4, "span", 28);
37
34
  i0.ɵɵtext(5);
38
35
  i0.ɵɵpipe(6, "rpxTranslate");
39
36
  i0.ɵɵelementEnd();
@@ -41,14 +38,14 @@ function UpdateFlagComponent_ng_container_15_div_5_Template(rf, ctx) { if (rf &
41
38
  i0.ɵɵpipe(8, "rpxTranslate");
42
39
  i0.ɵɵelementEnd()();
43
40
  } if (rf & 2) {
44
- const ctx_r0 = i0.ɵɵnextContext(2);
41
+ const ctx_r1 = i0.ɵɵnextContext(2);
45
42
  i0.ɵɵadvance(5);
46
43
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(6, 2, "Warning"));
47
44
  i0.ɵɵadvance(2);
48
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 4, ctx_r0.updateFlagStepEnum.WARNING_TEXT), " ");
45
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 4, ctx_r1.updateFlagStepEnum.WARNING_TEXT), " ");
49
46
  } }
50
47
  function UpdateFlagComponent_ng_container_15_div_6_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "div", 27)(1, "span", 28);
48
+ i0.ɵɵelementStart(0, "div", 29)(1, "span", 30);
52
49
  i0.ɵɵtext(2);
53
50
  i0.ɵɵpipe(3, "rpxTranslate");
54
51
  i0.ɵɵelementEnd();
@@ -56,14 +53,14 @@ function UpdateFlagComponent_ng_container_15_div_6_Template(rf, ctx) { if (rf &
56
53
  i0.ɵɵpipe(5, "rpxTranslate");
57
54
  i0.ɵɵelementEnd();
58
55
  } if (rf & 2) {
59
- const ctx_r0 = i0.ɵɵnextContext(2);
56
+ const ctx_r1 = i0.ɵɵnextContext(2);
60
57
  i0.ɵɵadvance(2);
61
58
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
62
59
  i0.ɵɵadvance(2);
63
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r0.commentsNotEnteredErrorMessage), " ");
60
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r1.commentsNotEnteredErrorMessage), " ");
64
61
  } }
65
62
  function UpdateFlagComponent_ng_container_15_div_7_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "div", 29)(1, "span", 28);
63
+ i0.ɵɵelementStart(0, "div", 31)(1, "span", 30);
67
64
  i0.ɵɵtext(2);
68
65
  i0.ɵɵpipe(3, "rpxTranslate");
69
66
  i0.ɵɵelementEnd();
@@ -71,64 +68,64 @@ function UpdateFlagComponent_ng_container_15_div_7_Template(rf, ctx) { if (rf &
71
68
  i0.ɵɵpipe(5, "rpxTranslate");
72
69
  i0.ɵɵelementEnd();
73
70
  } if (rf & 2) {
74
- const ctx_r0 = i0.ɵɵnextContext(2);
71
+ const ctx_r1 = i0.ɵɵnextContext(2);
75
72
  i0.ɵɵadvance(2);
76
73
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
77
74
  i0.ɵɵadvance(2);
78
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r0.commentsCharLimitErrorMessage), " ");
75
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r1.commentsCharLimitErrorMessage), " ");
79
76
  } }
80
77
  function UpdateFlagComponent_ng_container_15_Template(rf, ctx) { if (rf & 1) {
81
78
  i0.ɵɵelementContainerStart(0);
82
- i0.ɵɵelementStart(1, "div", 17);
79
+ i0.ɵɵelementStart(1, "div", 19);
83
80
  i0.ɵɵtext(2);
84
81
  i0.ɵɵpipe(3, "rpxTranslate");
85
82
  i0.ɵɵpipe(4, "rpxTranslate");
86
83
  i0.ɵɵelementEnd();
87
- i0.ɵɵtemplate(5, UpdateFlagComponent_ng_container_15_div_5_Template, 9, 6, "div", 18)(6, UpdateFlagComponent_ng_container_15_div_6_Template, 6, 6, "div", 19)(7, UpdateFlagComponent_ng_container_15_div_7_Template, 6, 6, "div", 20);
88
- i0.ɵɵelementStart(8, "textarea", 21);
84
+ i0.ɵɵtemplate(5, UpdateFlagComponent_ng_container_15_div_5_Template, 9, 6, "div", 20)(6, UpdateFlagComponent_ng_container_15_div_6_Template, 6, 6, "div", 21)(7, UpdateFlagComponent_ng_container_15_div_7_Template, 6, 6, "div", 22);
85
+ i0.ɵɵelementStart(8, "textarea", 23);
89
86
  i0.ɵɵtext(9, " ");
90
87
  i0.ɵɵelementEnd();
91
- i0.ɵɵelementStart(10, "div", 22);
88
+ i0.ɵɵelementStart(10, "div", 24);
92
89
  i0.ɵɵtext(11);
93
90
  i0.ɵɵpipe(12, "rpxTranslate");
94
91
  i0.ɵɵelementEnd();
95
92
  i0.ɵɵelementContainerEnd();
96
93
  } if (rf & 2) {
97
- const ctx_r0 = i0.ɵɵnextContext();
94
+ const ctx_r1 = i0.ɵɵnextContext();
98
95
  i0.ɵɵadvance(2);
99
- i0.ɵɵtextInterpolate1(" ", ctx_r0.internalUserUpdate ? i0.ɵɵpipeBind1(3, 8, ctx_r0.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL) : i0.ɵɵpipeBind1(4, 10, ctx_r0.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL_2_POINT_1), " ");
96
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.internalUserUpdate ? i0.ɵɵpipeBind1(3, 8, ctx_r1.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL) : i0.ɵɵpipeBind1(4, 10, ctx_r1.updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL_2_POINT_1), " ");
100
97
  i0.ɵɵadvance(3);
101
- i0.ɵɵproperty("ngIf", ctx_r0.internalUser2Point1EnabledUpdate && ctx_r0.externallyVisibleFlag);
98
+ i0.ɵɵproperty("ngIf", ctx_r1.internalUser2Point1EnabledUpdate && ctx_r1.externallyVisibleFlag);
102
99
  i0.ɵɵadvance();
103
- i0.ɵɵproperty("ngIf", ctx_r0.commentsNotEnteredErrorMessage);
100
+ i0.ɵɵproperty("ngIf", ctx_r1.commentsNotEnteredErrorMessage);
104
101
  i0.ɵɵadvance();
105
- i0.ɵɵproperty("ngIf", ctx_r0.commentsCharLimitErrorMessage);
102
+ i0.ɵɵproperty("ngIf", ctx_r1.commentsCharLimitErrorMessage);
106
103
  i0.ɵɵadvance();
107
- i0.ɵɵproperty("id", ctx_r0.caseFlagFormFields.COMMENTS)("name", ctx_r0.caseFlagFormFields.COMMENTS)("formControlName", ctx_r0.caseFlagFormFields.COMMENTS);
104
+ i0.ɵɵproperty("id", ctx_r1.caseFlagFormFields.COMMENTS)("name", ctx_r1.caseFlagFormFields.COMMENTS)("formControlName", ctx_r1.caseFlagFormFields.COMMENTS);
108
105
  i0.ɵɵadvance(3);
109
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 12, ctx_r0.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
106
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(12, 12, ctx_r1.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
110
107
  } }
111
108
  function UpdateFlagComponent_ng_template_16_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
112
109
  i0.ɵɵelementContainer(0);
113
110
  } }
114
111
  function UpdateFlagComponent_ng_template_16_ng_container_0_Template(rf, ctx) { if (rf & 1) {
115
112
  i0.ɵɵelementContainerStart(0);
116
- i0.ɵɵtemplate(1, UpdateFlagComponent_ng_template_16_ng_container_0_ng_container_1_Template, 1, 0, "ng-container", 31);
113
+ i0.ɵɵtemplate(1, UpdateFlagComponent_ng_template_16_ng_container_0_ng_container_1_Template, 1, 0, "ng-container", 33);
117
114
  i0.ɵɵelementContainerEnd();
118
115
  } if (rf & 2) {
119
116
  i0.ɵɵnextContext(2);
120
- const updateFlagStatusReason_r2 = i0.ɵɵreference(19);
117
+ const updateFlagStatusReason_r3 = i0.ɵɵreference(19);
121
118
  i0.ɵɵadvance();
122
- i0.ɵɵproperty("ngTemplateOutlet", updateFlagStatusReason_r2);
119
+ i0.ɵɵproperty("ngTemplateOutlet", updateFlagStatusReason_r3);
123
120
  } }
124
121
  function UpdateFlagComponent_ng_template_16_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_16_ng_container_0_Template, 2, 1, "ng-container", 30);
122
+ i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_16_ng_container_0_Template, 2, 1, "ng-container", 32);
126
123
  } if (rf & 2) {
127
- const ctx_r0 = i0.ɵɵnextContext();
128
- i0.ɵɵproperty("ngIf", ctx_r0.externalUserUpdate);
124
+ const ctx_r1 = i0.ɵɵnextContext();
125
+ i0.ɵɵproperty("ngIf", ctx_r1.externalUserUpdate);
129
126
  } }
130
127
  function UpdateFlagComponent_ng_template_18_div_0_Template(rf, ctx) { if (rf & 1) {
131
- i0.ɵɵelementStart(0, "div", 36)(1, "span", 28);
128
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 30);
132
129
  i0.ɵɵtext(2);
133
130
  i0.ɵɵpipe(3, "rpxTranslate");
134
131
  i0.ɵɵelementEnd();
@@ -136,14 +133,14 @@ function UpdateFlagComponent_ng_template_18_div_0_Template(rf, ctx) { if (rf & 1
136
133
  i0.ɵɵpipe(5, "rpxTranslate");
137
134
  i0.ɵɵelementEnd();
138
135
  } if (rf & 2) {
139
- const ctx_r0 = i0.ɵɵnextContext(2);
136
+ const ctx_r1 = i0.ɵɵnextContext(2);
140
137
  i0.ɵɵadvance(2);
141
138
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
142
139
  i0.ɵɵadvance(2);
143
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r0.statusReasonNotEnteredErrorMessage), " ");
140
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r1.statusReasonNotEnteredErrorMessage), " ");
144
141
  } }
145
142
  function UpdateFlagComponent_ng_template_18_div_1_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementStart(0, "div", 37)(1, "span", 28);
143
+ i0.ɵɵelementStart(0, "div", 39)(1, "span", 30);
147
144
  i0.ɵɵtext(2);
148
145
  i0.ɵɵpipe(3, "rpxTranslate");
149
146
  i0.ɵɵelementEnd();
@@ -151,100 +148,100 @@ function UpdateFlagComponent_ng_template_18_div_1_Template(rf, ctx) { if (rf & 1
151
148
  i0.ɵɵpipe(5, "rpxTranslate");
152
149
  i0.ɵɵelementEnd();
153
150
  } if (rf & 2) {
154
- const ctx_r0 = i0.ɵɵnextContext(2);
151
+ const ctx_r1 = i0.ɵɵnextContext(2);
155
152
  i0.ɵɵadvance(2);
156
153
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(3, 2, "Error:"));
157
154
  i0.ɵɵadvance(2);
158
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r0.statusReasonCharLimitErrorMessage), " ");
155
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(5, 4, ctx_r1.statusReasonCharLimitErrorMessage), " ");
159
156
  } }
160
157
  function UpdateFlagComponent_ng_template_18_Template(rf, ctx) { if (rf & 1) {
161
- i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_18_div_0_Template, 6, 6, "div", 32)(1, UpdateFlagComponent_ng_template_18_div_1_Template, 6, 6, "div", 33);
162
- i0.ɵɵelementStart(2, "textarea", 34);
158
+ i0.ɵɵtemplate(0, UpdateFlagComponent_ng_template_18_div_0_Template, 6, 6, "div", 34)(1, UpdateFlagComponent_ng_template_18_div_1_Template, 6, 6, "div", 35);
159
+ i0.ɵɵelementStart(2, "textarea", 36);
163
160
  i0.ɵɵtext(3, " ");
164
161
  i0.ɵɵelementEnd();
165
- i0.ɵɵelementStart(4, "div", 35);
162
+ i0.ɵɵelementStart(4, "div", 37);
166
163
  i0.ɵɵtext(5);
167
164
  i0.ɵɵpipe(6, "rpxTranslate");
168
165
  i0.ɵɵelementEnd();
169
166
  } if (rf & 2) {
170
- const ctx_r0 = i0.ɵɵnextContext();
171
- i0.ɵɵproperty("ngIf", ctx_r0.statusReasonNotEnteredErrorMessage);
167
+ const ctx_r1 = i0.ɵɵnextContext();
168
+ i0.ɵɵproperty("ngIf", ctx_r1.statusReasonNotEnteredErrorMessage);
172
169
  i0.ɵɵadvance();
173
- i0.ɵɵproperty("ngIf", ctx_r0.statusReasonCharLimitErrorMessage);
170
+ i0.ɵɵproperty("ngIf", ctx_r1.statusReasonCharLimitErrorMessage);
174
171
  i0.ɵɵadvance();
175
- i0.ɵɵproperty("id", ctx_r0.caseFlagFormFields.STATUS_CHANGE_REASON)("name", ctx_r0.caseFlagFormFields.STATUS_CHANGE_REASON)("formControlName", ctx_r0.caseFlagFormFields.STATUS_CHANGE_REASON);
172
+ i0.ɵɵproperty("id", ctx_r1.caseFlagFormFields.STATUS_CHANGE_REASON)("name", ctx_r1.caseFlagFormFields.STATUS_CHANGE_REASON)("formControlName", ctx_r1.caseFlagFormFields.STATUS_CHANGE_REASON);
176
173
  i0.ɵɵadvance(3);
177
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 6, ctx_r0.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
174
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 6, ctx_r1.updateFlagStepEnum.CHARACTER_LIMIT_INFO), " ");
178
175
  } }
179
176
  function UpdateFlagComponent_div_20_div_8_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelementStart(0, "div", 45);
181
- i0.ɵɵelement(1, "input", 46);
182
- i0.ɵɵelementStart(2, "label", 47);
177
+ i0.ɵɵelementStart(0, "div", 47);
178
+ i0.ɵɵelement(1, "input", 48);
179
+ i0.ɵɵelementStart(2, "label", 49);
183
180
  i0.ɵɵtext(3);
184
181
  i0.ɵɵpipe(4, "rpxTranslate");
185
182
  i0.ɵɵelementEnd()();
186
183
  } if (rf & 2) {
187
- const status_r3 = ctx.$implicit;
188
- const ctx_r0 = i0.ɵɵnextContext(2);
184
+ const status_r4 = ctx.$implicit;
185
+ const ctx_r1 = i0.ɵɵnextContext(2);
189
186
  i0.ɵɵadvance();
190
- i0.ɵɵproperty("id", ctx_r0.caseFlagFormFields.STATUS + "_" + status_r3)("name", ctx_r0.caseFlagFormFields.STATUS)("formControlName", ctx_r0.caseFlagFormFields.STATUS)("value", status_r3);
187
+ i0.ɵɵproperty("id", ctx_r1.caseFlagFormFields.STATUS + "_" + status_r4)("name", ctx_r1.caseFlagFormFields.STATUS)("formControlName", ctx_r1.caseFlagFormFields.STATUS)("value", status_r4);
191
188
  i0.ɵɵadvance();
192
- i0.ɵɵproperty("for", ctx_r0.caseFlagFormFields.STATUS + "_" + status_r3);
189
+ i0.ɵɵproperty("for", ctx_r1.caseFlagFormFields.STATUS + "_" + status_r4);
193
190
  i0.ɵɵadvance();
194
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 6, ctx_r0.caseFlagStatusEnum[status_r3]), " ");
191
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(4, 6, ctx_r1.caseFlagStatusEnum[status_r4]), " ");
195
192
  } }
196
193
  function UpdateFlagComponent_div_20_ng_container_12_Template(rf, ctx) { if (rf & 1) {
197
194
  i0.ɵɵelementContainer(0);
198
195
  } }
199
196
  function UpdateFlagComponent_div_20_Template(rf, ctx) { if (rf & 1) {
200
- i0.ɵɵelementStart(0, "div", 38)(1, "fieldset", 39)(2, "legend", 40)(3, "h1", 41);
197
+ i0.ɵɵelementStart(0, "div", 40)(1, "fieldset", 41)(2, "legend", 42)(3, "h1", 43);
201
198
  i0.ɵɵtext(4);
202
199
  i0.ɵɵpipe(5, "rpxTranslate");
203
200
  i0.ɵɵpipe(6, "rpxTranslate");
204
201
  i0.ɵɵelementEnd()();
205
- i0.ɵɵelementStart(7, "div", 42);
206
- i0.ɵɵtemplate(8, UpdateFlagComponent_div_20_div_8_Template, 5, 8, "div", 43);
202
+ i0.ɵɵelementStart(7, "div", 44);
203
+ i0.ɵɵtemplate(8, UpdateFlagComponent_div_20_div_8_Template, 5, 8, "div", 45);
207
204
  i0.ɵɵelementEnd()();
208
- i0.ɵɵelementStart(9, "div", 44);
205
+ i0.ɵɵelementStart(9, "div", 46);
209
206
  i0.ɵɵtext(10);
210
207
  i0.ɵɵpipe(11, "rpxTranslate");
211
208
  i0.ɵɵelementEnd();
212
- i0.ɵɵtemplate(12, UpdateFlagComponent_div_20_ng_container_12_Template, 1, 0, "ng-container", 31);
209
+ i0.ɵɵtemplate(12, UpdateFlagComponent_div_20_ng_container_12_Template, 1, 0, "ng-container", 33);
213
210
  i0.ɵɵelementEnd();
214
211
  } if (rf & 2) {
215
- const ctx_r0 = i0.ɵɵnextContext();
216
- const updateFlagStatusReason_r2 = i0.ɵɵreference(19);
212
+ const ctx_r1 = i0.ɵɵnextContext();
213
+ const updateFlagStatusReason_r3 = i0.ɵɵreference(19);
217
214
  i0.ɵɵadvance(4);
218
- i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(5, 6, ctx_r0.updateFlagTitle), " ", i0.ɵɵpipeBind1(6, 8, "status"), " ");
215
+ i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind1(5, 6, ctx_r1.updateFlagTitle), " ", i0.ɵɵpipeBind1(6, 8, "status"), " ");
219
216
  i0.ɵɵadvance(3);
220
- i0.ɵɵproperty("id", ctx_r0.caseFlagFormFields.STATUS);
217
+ i0.ɵɵproperty("id", ctx_r1.caseFlagFormFields.STATUS);
221
218
  i0.ɵɵadvance();
222
- i0.ɵɵproperty("ngForOf", ctx_r0.validStatusProgressions);
219
+ i0.ɵɵproperty("ngForOf", ctx_r1.validStatusProgressions);
223
220
  i0.ɵɵadvance(2);
224
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 10, ctx_r0.updateFlagStepEnum.STATUS_HINT_TEXT), " ");
221
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(11, 10, ctx_r1.updateFlagStepEnum.STATUS_HINT_TEXT), " ");
225
222
  i0.ɵɵadvance(2);
226
- i0.ɵɵproperty("ngTemplateOutlet", updateFlagStatusReason_r2);
223
+ i0.ɵɵproperty("ngTemplateOutlet", updateFlagStatusReason_r3);
227
224
  } }
228
225
  function UpdateFlagComponent_div_21_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementStart(0, "div", 48)(1, "div", 49)(2, "div", 50);
230
- i0.ɵɵelement(3, "input", 51);
231
- i0.ɵɵelementStart(4, "label", 52);
226
+ i0.ɵɵelementStart(0, "div", 50)(1, "div", 51)(2, "div", 52);
227
+ i0.ɵɵelement(3, "input", 53);
228
+ i0.ɵɵelementStart(4, "label", 54);
232
229
  i0.ɵɵtext(5);
233
230
  i0.ɵɵpipe(6, "rpxTranslate");
234
231
  i0.ɵɵelementEnd()()()();
235
232
  } if (rf & 2) {
236
- const ctx_r0 = i0.ɵɵnextContext();
233
+ const ctx_r1 = i0.ɵɵnextContext();
237
234
  i0.ɵɵadvance(3);
238
- i0.ɵɵproperty("formControlName", ctx_r0.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("id", ctx_r0.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("name", ctx_r0.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
235
+ i0.ɵɵproperty("formControlName", ctx_r1.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("id", ctx_r1.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED)("name", ctx_r1.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
239
236
  i0.ɵɵadvance();
240
- i0.ɵɵproperty("for", ctx_r0.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
237
+ i0.ɵɵproperty("for", ctx_r1.caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED);
241
238
  i0.ɵɵadvance();
242
239
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 5, "I need to add a translation"), " ");
243
240
  } }
244
241
  function UpdateFlagComponent_div_22_button_10_Template(rf, ctx) { if (rf & 1) {
245
- const _r4 = i0.ɵɵgetCurrentView();
246
- i0.ɵɵelementStart(0, "button", 57);
247
- i0.ɵɵlistener("click", function UpdateFlagComponent_div_22_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r0 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r0.onMakeInactive()); });
242
+ const _r5 = i0.ɵɵgetCurrentView();
243
+ i0.ɵɵelementStart(0, "button", 59);
244
+ i0.ɵɵlistener("click", function UpdateFlagComponent_div_22_button_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onMakeInactive()); });
248
245
  i0.ɵɵtext(1);
249
246
  i0.ɵɵpipe(2, "rpxTranslate");
250
247
  i0.ɵɵelementEnd();
@@ -253,28 +250,28 @@ function UpdateFlagComponent_div_22_button_10_Template(rf, ctx) { if (rf & 1) {
253
250
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(2, 1, "Make inactive"), " ");
254
251
  } }
255
252
  function UpdateFlagComponent_div_22_Template(rf, ctx) { if (rf & 1) {
256
- i0.ɵɵelementStart(0, "div", 53)(1, "div", 54)(2, "p");
253
+ i0.ɵɵelementStart(0, "div", 55)(1, "div", 56)(2, "p");
257
254
  i0.ɵɵtext(3);
258
255
  i0.ɵɵpipe(4, "rpxTranslate");
259
- i0.ɵɵelementStart(5, "span")(6, "strong", 55);
256
+ i0.ɵɵelementStart(5, "span")(6, "strong", 57);
260
257
  i0.ɵɵtext(7);
261
258
  i0.ɵɵpipe(8, "rpxTranslate");
262
259
  i0.ɵɵelementEnd()()()();
263
- i0.ɵɵelementStart(9, "div", 54);
264
- i0.ɵɵtemplate(10, UpdateFlagComponent_div_22_button_10_Template, 3, 3, "button", 56);
260
+ i0.ɵɵelementStart(9, "div", 56);
261
+ i0.ɵɵtemplate(10, UpdateFlagComponent_div_22_button_10_Template, 3, 3, "button", 58);
265
262
  i0.ɵɵelementEnd()();
266
263
  } if (rf & 2) {
267
- const ctx_r0 = i0.ɵɵnextContext();
264
+ const ctx_r1 = i0.ɵɵnextContext();
268
265
  i0.ɵɵadvance(3);
269
266
  i0.ɵɵtextInterpolate1("", i0.ɵɵpipeBind1(4, 4, "Flag status:"), " ");
270
267
  i0.ɵɵadvance(3);
271
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1, ctx_r0.selectedFlag.flagDetailDisplay.flagDetail.status === "Inactive"));
268
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c1, ctx_r1.selectedFlag.flagDetailDisplay.flagDetail.status === "Inactive"));
272
269
  i0.ɵɵadvance();
273
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 6, ctx_r0.selectedFlag == null ? null : ctx_r0.selectedFlag.flagDetailDisplay == null ? null : ctx_r0.selectedFlag.flagDetailDisplay.flagDetail == null ? null : ctx_r0.selectedFlag.flagDetailDisplay.flagDetail.status), " ");
270
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(8, 6, ctx_r1.selectedFlag == null ? null : ctx_r1.selectedFlag.flagDetailDisplay == null ? null : ctx_r1.selectedFlag.flagDetailDisplay.flagDetail == null ? null : ctx_r1.selectedFlag.flagDetailDisplay.flagDetail.status), " ");
274
271
  i0.ɵɵadvance(3);
275
- i0.ɵɵproperty("ngIf", ctx_r0.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
272
+ i0.ɵɵproperty("ngIf", ctx_r1.selectedFlag.flagDetailDisplay.flagDetail.status === "Active");
276
273
  } }
277
- export class UpdateFlagComponent extends AbstractJourneyComponent {
274
+ export class UpdateFlagComponent {
278
275
  rpxTranslationService;
279
276
  formGroup;
280
277
  displayContextParameter;
@@ -300,8 +297,7 @@ export class UpdateFlagComponent extends AbstractJourneyComponent {
300
297
  get externallyVisibleFlag() {
301
298
  return this.selectedFlag.flagDetailDisplay.visibility?.toLowerCase() === 'external';
302
299
  }
303
- constructor(rpxTranslationService, multipageComponentStateService) {
304
- super(multipageComponentStateService);
300
+ constructor(rpxTranslationService) {
305
301
  this.rpxTranslationService = rpxTranslationService;
306
302
  }
307
303
  ngOnInit() {
@@ -375,7 +371,6 @@ export class UpdateFlagComponent extends AbstractJourneyComponent {
375
371
  onNext() {
376
372
  // Validate flag comments and status reason entry
377
373
  this.validateTextEntry();
378
- this.validateTranslationNeeded();
379
374
  // Set selected flag status to "Inactive" if update is by external user
380
375
  if (this.externalUserUpdate) {
381
376
  this.formGroup.get(CaseFlagFormFields.STATUS)?.setValue(Object.keys(CaseFlagStatus)[2]);
@@ -389,22 +384,6 @@ export class UpdateFlagComponent extends AbstractJourneyComponent {
389
384
  });
390
385
  window.scrollTo(0, 0);
391
386
  }
392
- validateTranslationNeeded() {
393
- // it is possible that the user can select to have translation and then navigate back to remove the required translation in the same journey
394
- // this function will check the user does not have any of the translation fields applied and remove if they do
395
- console.log('validateTranslateNeeded');
396
- const flagDetails = this.selectedFlag.flagDetailDisplay.flagDetail;
397
- const isTranslationRequired = this.formGroup.value.flagIsWelshTranslationNeeded;
398
- const hasTranslationFields = (flagDetails.flagComment_cy || flagDetails.otherDescription || flagDetails.otherDescription_cy);
399
- if (!isTranslationRequired && hasTranslationFields) {
400
- flagDetails.flagComment_cy = null;
401
- flagDetails.otherDescription = null;
402
- flagDetails.otherDescription_cy = null;
403
- this.formGroup.removeControl('flagComment_cy');
404
- this.formGroup.removeControl('otherDescription');
405
- this.formGroup.removeControl('otherDescription_cy');
406
- }
407
- }
408
387
  onMakeInactive() {
409
388
  // Set selected flag status to "Inactive" on screen and in the FormGroup
410
389
  this.selectedFlag.flagDetailDisplay.flagDetail.status = CaseFlagStatus.INACTIVE;
@@ -465,14 +444,9 @@ export class UpdateFlagComponent extends AbstractJourneyComponent {
465
444
  });
466
445
  }
467
446
  }
468
- next() {
469
- this.onNext();
470
- if (this.errorMessages.length === 0) {
471
- super.next();
472
- }
473
- }
474
- static ɵfac = function UpdateFlagComponent_Factory(t) { return new (t || UpdateFlagComponent)(i0.ɵɵdirectiveInject(i1.RpxTranslationService), i0.ɵɵdirectiveInject(i2.MultipageComponentStateService)); };
475
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UpdateFlagComponent, selectors: [["ccd-update-flag"]], inputs: { formGroup: "formGroup", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 23, vars: 22, consts: [["externalUser", ""], ["updateFlagStatusReason", ""], [3, "formGroup"], ["data-module", "govuk-character-count", "data-maxlength", "200", 1, "govuk-character-count"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-label-wrapper", "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--m"], ["id", "update-flag-hint-external", "class", "govuk-hint", 4, "ngIf"], [1, "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--s", 3, "for"], ["id", "update-flag-comments-hint-external", "class", "govuk-hint", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["id", "flag-status-container-v2_1", "class", "govuk-!-margin-bottom-4", 4, "ngIf"], ["id", "translation-checkbox-container", "class", "govuk-!-margin-bottom-6", 4, "ngIf"], ["id", "flag-status-container-v1", "class", "govuk-grid-row", 4, "ngIf"], ["id", "update-flag-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint", 1, "govuk-hint"], ["class", "govuk-warning-text", 4, "ngIf"], ["id", "update-flag-comments-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-comments-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint update-flag-comments-char-limit-info update-flag-comments-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-comments-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], [1, "govuk-warning-text"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], ["id", "update-flag-comments-not-entered-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], ["id", "update-flag-comments-char-limit-error", 1, "govuk-error-message"], [4, "ngIf"], [4, "ngTemplateOutlet"], ["id", "update-flag-status-reason-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-status-reason-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint-external update-flag-status-hint update-flag-status-reason-char-limit-info\n update-flag-status-reason-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-status-reason-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], ["id", "update-flag-status-reason-not-entered-error-message", 1, "govuk-error-message"], ["id", "update-flag-status-reason-char-limit-error", 1, "govuk-error-message"], ["id", "flag-status-container-v2_1", 1, "govuk-!-margin-bottom-4"], ["aria-describedby", "update-flag-status-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--s"], ["id", "update-flag-status-heading", 1, "govuk-fieldset__heading"], ["data-module", "govuk-radios", 1, "govuk-radios", "govuk-radios--conditional", "govuk-!-margin-bottom-4", 3, "id"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "update-flag-status-hint", 1, "govuk-hint"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "formControlName", "value"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "translation-checkbox-container", 1, "govuk-!-margin-bottom-6"], ["data-module", "govuk-checkboxes", 1, "govuk-checkboxes"], [1, "govuk-checkboxes__item"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "formControlName", "id", "name"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"], ["id", "flag-status-container-v1", 1, "govuk-grid-row"], [1, "govuk-grid-column-one-half"], [1, "govuk-tag", 3, "ngClass"], ["class", "button button-secondary", "type", "button", 3, "click", 4, "ngIf"], ["type", "button", 1, "button", "button-secondary", 3, "click"]], template: function UpdateFlagComponent_Template(rf, ctx) { if (rf & 1) {
447
+ static ɵfac = function UpdateFlagComponent_Factory(t) { return new (t || UpdateFlagComponent)(i0.ɵɵdirectiveInject(i1.RpxTranslationService)); };
448
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: UpdateFlagComponent, selectors: [["ccd-update-flag"]], inputs: { formGroup: "formGroup", displayContextParameter: "displayContextParameter" }, outputs: { caseFlagStateEmitter: "caseFlagStateEmitter" }, decls: 27, vars: 25, consts: [["externalUser", ""], ["updateFlagStatusReason", ""], [3, "formGroup"], ["data-module", "govuk-character-count", "data-maxlength", "200", 1, "govuk-character-count"], [1, "govuk-form-group", 3, "ngClass"], [1, "govuk-label-wrapper", "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--m"], ["id", "update-flag-hint-external", "class", "govuk-hint", 4, "ngIf"], [1, "govuk-!-margin-bottom-4"], [1, "govuk-label", "govuk-label--s", 3, "for"], ["id", "update-flag-comments-hint-external", "class", "govuk-hint", 4, "ngIf"], [4, "ngIf", "ngIfElse"], ["id", "flag-status-container-v2_1", "class", "govuk-!-margin-bottom-4", 4, "ngIf"], ["id", "translation-checkbox-container", "class", "govuk-!-margin-bottom-6", 4, "ngIf"], ["id", "flag-status-container-v1", "class", "govuk-grid-row", 4, "ngIf"], [1, "govuk-button-group"], ["id", "updateFlagNextButton", "type", "button", 1, "govuk-button", 3, "click"], ["id", "update-flag-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint-external", 1, "govuk-hint"], ["id", "update-flag-comments-hint", 1, "govuk-hint"], ["class", "govuk-warning-text", 4, "ngIf"], ["id", "update-flag-comments-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-comments-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint update-flag-comments-char-limit-info update-flag-comments-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-comments-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], [1, "govuk-warning-text"], ["aria-hidden", "true", 1, "govuk-warning-text__icon"], [1, "govuk-warning-text__text"], [1, "govuk-warning-text__assistive"], ["id", "update-flag-comments-not-entered-error-message", 1, "govuk-error-message"], [1, "govuk-visually-hidden"], ["id", "update-flag-comments-char-limit-error", 1, "govuk-error-message"], [4, "ngIf"], [4, "ngTemplateOutlet"], ["id", "update-flag-status-reason-not-entered-error-message", "class", "govuk-error-message", 4, "ngIf"], ["id", "update-flag-status-reason-char-limit-error", "class", "govuk-error-message", 4, "ngIf"], ["rows", "5", "aria-describedby", "update-flag-comments-hint-external update-flag-status-hint update-flag-status-reason-char-limit-info\n update-flag-status-reason-char-limit-error", 1, "govuk-textarea", 3, "id", "name", "formControlName"], ["id", "update-flag-status-reason-char-limit-info", "aria-live", "polite", 1, "govuk-hint", "govuk-character-count__message"], ["id", "update-flag-status-reason-not-entered-error-message", 1, "govuk-error-message"], ["id", "update-flag-status-reason-char-limit-error", 1, "govuk-error-message"], ["id", "flag-status-container-v2_1", 1, "govuk-!-margin-bottom-4"], ["aria-describedby", "update-flag-status-heading", 1, "govuk-fieldset"], [1, "govuk-fieldset__legend", "govuk-fieldset__legend--s"], ["id", "update-flag-status-heading", 1, "govuk-fieldset__heading"], ["data-module", "govuk-radios", 1, "govuk-radios", "govuk-radios--conditional", "govuk-!-margin-bottom-4", 3, "id"], ["class", "govuk-radios__item", 4, "ngFor", "ngForOf"], ["id", "update-flag-status-hint", 1, "govuk-hint"], [1, "govuk-radios__item"], ["type", "radio", 1, "govuk-radios__input", 3, "id", "name", "formControlName", "value"], [1, "govuk-label", "govuk-radios__label", 3, "for"], ["id", "translation-checkbox-container", 1, "govuk-!-margin-bottom-6"], ["data-module", "govuk-checkboxes", 1, "govuk-checkboxes"], [1, "govuk-checkboxes__item"], ["type", "checkbox", 1, "govuk-checkboxes__input", 3, "formControlName", "id", "name"], [1, "govuk-label", "govuk-checkboxes__label", 3, "for"], ["id", "flag-status-container-v1", 1, "govuk-grid-row"], [1, "govuk-grid-column-one-half"], [1, "govuk-tag", 3, "ngClass"], ["class", "button button-secondary", "type", "button", 3, "click", 4, "ngIf"], ["type", "button", 1, "button", "button-secondary", 3, "click"]], template: function UpdateFlagComponent_Template(rf, ctx) { if (rf & 1) {
449
+ const _r1 = i0.ɵɵgetCurrentView();
476
450
  i0.ɵɵelementContainerStart(0, 2);
477
451
  i0.ɵɵelementStart(1, "div", 3)(2, "div", 4)(3, "h1", 5)(4, "label", 6);
478
452
  i0.ɵɵtext(5);
@@ -490,40 +464,47 @@ export class UpdateFlagComponent extends AbstractJourneyComponent {
490
464
  i0.ɵɵtemplate(18, UpdateFlagComponent_ng_template_18_Template, 7, 8, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor)(20, UpdateFlagComponent_div_20_Template, 13, 12, "div", 12)(21, UpdateFlagComponent_div_21_Template, 7, 7, "div", 13)(22, UpdateFlagComponent_div_22_Template, 11, 10, "div", 14);
491
465
  i0.ɵɵelementEnd()();
492
466
  i0.ɵɵelementContainerEnd();
467
+ i0.ɵɵelementStart(23, "div", 15)(24, "button", 16);
468
+ i0.ɵɵlistener("click", function UpdateFlagComponent_Template_button_click_24_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onNext()); });
469
+ i0.ɵɵtext(25);
470
+ i0.ɵɵpipe(26, "rpxTranslate");
471
+ i0.ɵɵelementEnd()();
493
472
  } if (rf & 2) {
494
- const externalUser_r5 = i0.ɵɵreference(17);
473
+ const externalUser_r6 = i0.ɵɵreference(17);
495
474
  i0.ɵɵproperty("formGroup", ctx.formGroup);
496
475
  i0.ɵɵadvance(2);
497
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c0, ctx.errorMessages.length > 0));
476
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(23, _c0, ctx.errorMessages.length > 0));
498
477
  i0.ɵɵadvance(3);
499
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 12, ctx.updateFlagTitle), " ");
478
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(6, 13, ctx.updateFlagTitle), " ");
500
479
  i0.ɵɵadvance(2);
501
480
  i0.ɵɵproperty("ngIf", ctx.externalUserUpdate);
502
481
  i0.ɵɵadvance(2);
503
482
  i0.ɵɵproperty("for", ctx.caseFlagFormFields.COMMENTS);
504
483
  i0.ɵɵadvance();
505
- i0.ɵɵtextInterpolate1(" ", ctx.externalUserUpdate ? i0.ɵɵpipeBind1(11, 14, ctx.updateFlagStepEnum.COMMENT_FIELD_LABEL_EXTERNAL) : i0.ɵɵpipeBind1(12, 16, ctx.updateFlagTitle) + i0.ɵɵpipeBind1(13, 18, " comments"), " ");
484
+ i0.ɵɵtextInterpolate1(" ", ctx.externalUserUpdate ? i0.ɵɵpipeBind1(11, 15, ctx.updateFlagStepEnum.COMMENT_FIELD_LABEL_EXTERNAL) : i0.ɵɵpipeBind1(12, 17, ctx.updateFlagTitle) + i0.ɵɵpipeBind1(13, 19, " comments"), " ");
506
485
  i0.ɵɵadvance(4);
507
486
  i0.ɵɵproperty("ngIf", ctx.externalUserUpdate);
508
487
  i0.ɵɵadvance();
509
- i0.ɵɵproperty("ngIf", ctx.internalUserUpdate || ctx.internalUser2Point1EnabledUpdate || ctx.displayContextParameter === "")("ngIfElse", externalUser_r5);
488
+ i0.ɵɵproperty("ngIf", ctx.internalUserUpdate || ctx.internalUser2Point1EnabledUpdate || ctx.displayContextParameter === "")("ngIfElse", externalUser_r6);
510
489
  i0.ɵɵadvance(5);
511
490
  i0.ɵɵproperty("ngIf", ctx.internalUser2Point1EnabledUpdate);
512
491
  i0.ɵɵadvance();
513
492
  i0.ɵɵproperty("ngIf", ctx.internalUser2Point1EnabledUpdate);
514
493
  i0.ɵɵadvance();
515
494
  i0.ɵɵproperty("ngIf", ctx.internalUserUpdate);
495
+ i0.ɵɵadvance(3);
496
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind1(26, 21, "Next"), " ");
516
497
  } }, encapsulation: 2 });
517
498
  }
518
499
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UpdateFlagComponent, [{
519
500
  type: Component,
520
- args: [{ selector: 'ccd-update-flag', template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-character-count\" data-module=\"govuk-character-count\" data-maxlength=\"200\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <h1 class=\"govuk-label-wrapper govuk-!-margin-bottom-4\">\n <label class=\"govuk-label govuk-label--m\">\n {{updateFlagTitle | rpxTranslate}}\n </label>\n </h1>\n <div id=\"update-flag-hint-external\" class=\"govuk-hint\" *ngIf=\"externalUserUpdate\">\n {{selectedFlag?.flagDetailDisplay?.flagDetail | updateFlagTitleDisplay}}\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <label class=\"govuk-label govuk-label--s\" [for]=\"caseFlagFormFields.COMMENTS\">\n {{\n externalUserUpdate\n ? (updateFlagStepEnum.COMMENT_FIELD_LABEL_EXTERNAL | rpxTranslate)\n : (updateFlagTitle | rpxTranslate) + (' comments' | rpxTranslate)\n }}\n </label>\n <div id=\"update-flag-comments-hint-external\" class=\"govuk-hint\" *ngIf=\"externalUserUpdate\">\n {{updateFlagStepEnum.COMMENT_HINT_TEXT_EXTERNAL | rpxTranslate}}\n </div>\n <ng-container *ngIf=\"internalUserUpdate || internalUser2Point1EnabledUpdate || displayContextParameter === '';\n else externalUser\">\n <div id=\"update-flag-comments-hint\" class=\"govuk-hint\">\n {{\n internalUserUpdate\n ? (updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL | rpxTranslate)\n : (updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL_2_POINT_1 | rpxTranslate)\n }}\n </div>\n <div class=\"govuk-warning-text\" *ngIf=\"internalUser2Point1EnabledUpdate && externallyVisibleFlag\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">{{'Warning' | rpxTranslate}}</span>\n {{updateFlagStepEnum.WARNING_TEXT | rpxTranslate}}\n </strong>\n </div>\n <div id=\"update-flag-comments-not-entered-error-message\" class=\"govuk-error-message\" *ngIf=\"commentsNotEnteredErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{commentsNotEnteredErrorMessage | rpxTranslate}}\n </div>\n <div id=\"update-flag-comments-char-limit-error\" class=\"govuk-error-message\" *ngIf=\"commentsCharLimitErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{commentsCharLimitErrorMessage | rpxTranslate}}\n </div>\n <textarea class=\"govuk-textarea\"\n [id]=\"caseFlagFormFields.COMMENTS\"\n [name]=\"caseFlagFormFields.COMMENTS\"\n [formControlName]=\"caseFlagFormFields.COMMENTS\"\n rows=\"5\"\n aria-describedby=\"update-flag-comments-hint update-flag-comments-char-limit-info update-flag-comments-char-limit-error\">\n </textarea>\n <div id=\"update-flag-comments-char-limit-info\" class=\"govuk-hint govuk-character-count__message\" aria-live=\"polite\">\n {{updateFlagStepEnum.CHARACTER_LIMIT_INFO | rpxTranslate}}\n </div>\n </ng-container>\n <ng-template #externalUser>\n <ng-container *ngIf=\"externalUserUpdate\">\n <ng-container *ngTemplateOutlet=\"updateFlagStatusReason\"></ng-container>\n </ng-container>\n </ng-template>\n </div>\n\n <ng-template #updateFlagStatusReason>\n <div id=\"update-flag-status-reason-not-entered-error-message\" class=\"govuk-error-message\" *ngIf=\"statusReasonNotEnteredErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{statusReasonNotEnteredErrorMessage | rpxTranslate}}\n </div>\n <div id=\"update-flag-status-reason-char-limit-error\" class=\"govuk-error-message\" *ngIf=\"statusReasonCharLimitErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{statusReasonCharLimitErrorMessage | rpxTranslate}}\n </div>\n <textarea class=\"govuk-textarea\"\n [id]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n [name]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n [formControlName]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n rows=\"5\"\n aria-describedby=\"update-flag-comments-hint-external update-flag-status-hint update-flag-status-reason-char-limit-info\n update-flag-status-reason-char-limit-error\">\n </textarea>\n <div id=\"update-flag-status-reason-char-limit-info\" class=\"govuk-hint govuk-character-count__message\" aria-live=\"polite\">\n {{updateFlagStepEnum.CHARACTER_LIMIT_INFO | rpxTranslate}}\n </div>\n </ng-template>\n\n <div id=\"flag-status-container-v2_1\" class=\"govuk-!-margin-bottom-4\" *ngIf=\"internalUser2Point1EnabledUpdate\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"update-flag-status-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n <h1 id=\"update-flag-status-heading\" class=\"govuk-fieldset__heading\">\n {{updateFlagTitle | rpxTranslate}} {{'status' | rpxTranslate}}\n </h1>\n </legend>\n <div class=\"govuk-radios govuk-radios--conditional govuk-!-margin-bottom-4\" data-module=\"govuk-radios\" [id]=\"caseFlagFormFields.STATUS\">\n <div class=\"govuk-radios__item\" *ngFor=\"let status of validStatusProgressions\">\n <input class=\"govuk-radios__input\" type=\"radio\"\n [id]=\"caseFlagFormFields.STATUS + '_' + status\"\n [name]=\"caseFlagFormFields.STATUS\"\n [formControlName]=\"caseFlagFormFields.STATUS\"\n [value]=\"status\">\n <label class=\"govuk-label govuk-radios__label\" [for]=\"caseFlagFormFields.STATUS + '_' + status\">\n {{caseFlagStatusEnum[status] | rpxTranslate}}\n </label>\n </div>\n </div>\n </fieldset>\n\n <div id=\"update-flag-status-hint\" class=\"govuk-hint\">\n {{updateFlagStepEnum.STATUS_HINT_TEXT | rpxTranslate}}\n </div>\n <ng-container *ngTemplateOutlet=\"updateFlagStatusReason\"></ng-container>\n </div>\n\n <div id=\"translation-checkbox-container\" class=\"govuk-!-margin-bottom-6\" *ngIf=\"internalUser2Point1EnabledUpdate\">\n <div class=\"govuk-checkboxes\" data-module=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" type=\"checkbox\"\n [formControlName]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\"\n [id]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\"\n [name]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\">\n <label class=\"govuk-label govuk-checkboxes__label\"\n [for]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\">\n {{'I need to add a translation' | rpxTranslate}}\n </label>\n </div>\n </div>\n </div>\n\n <div id=\"flag-status-container-v1\" class=\"govuk-grid-row\" *ngIf=\"internalUserUpdate\">\n <div class=\"govuk-grid-column-one-half\">\n <p>{{'Flag status:' | rpxTranslate}}\n <span>\n <strong class=\"govuk-tag\" [ngClass]=\"{'govuk-tag--grey': selectedFlag.flagDetailDisplay.flagDetail.status === 'Inactive'}\">\n {{selectedFlag?.flagDetailDisplay?.flagDetail?.status | rpxTranslate}}\n </strong>\n </span>\n </p>\n </div>\n <div class=\"govuk-grid-column-one-half\">\n <button class=\"button button-secondary\" type=\"button\" (click)=\"onMakeInactive()\" *ngIf=\"selectedFlag.flagDetailDisplay.flagDetail.status === 'Active'\">\n {{'Make inactive' | rpxTranslate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n</ng-container>" }]
521
- }], () => [{ type: i1.RpxTranslationService }, { type: i2.MultipageComponentStateService }], { formGroup: [{
501
+ args: [{ selector: 'ccd-update-flag', template: "<ng-container [formGroup]=\"formGroup\">\n <div class=\"govuk-character-count\" data-module=\"govuk-character-count\" data-maxlength=\"200\">\n <div class=\"govuk-form-group\" [ngClass]=\"{'form-group-error': errorMessages.length > 0}\">\n <h1 class=\"govuk-label-wrapper govuk-!-margin-bottom-4\">\n <label class=\"govuk-label govuk-label--m\">\n {{updateFlagTitle | rpxTranslate}}\n </label>\n </h1>\n <div id=\"update-flag-hint-external\" class=\"govuk-hint\" *ngIf=\"externalUserUpdate\">\n {{selectedFlag?.flagDetailDisplay?.flagDetail | updateFlagTitleDisplay}}\n </div>\n\n <div class=\"govuk-!-margin-bottom-4\">\n <label class=\"govuk-label govuk-label--s\" [for]=\"caseFlagFormFields.COMMENTS\">\n {{\n externalUserUpdate\n ? (updateFlagStepEnum.COMMENT_FIELD_LABEL_EXTERNAL | rpxTranslate)\n : (updateFlagTitle | rpxTranslate) + (' comments' | rpxTranslate)\n }}\n </label>\n <div id=\"update-flag-comments-hint-external\" class=\"govuk-hint\" *ngIf=\"externalUserUpdate\">\n {{updateFlagStepEnum.COMMENT_HINT_TEXT_EXTERNAL | rpxTranslate}}\n </div>\n <ng-container *ngIf=\"internalUserUpdate || internalUser2Point1EnabledUpdate || displayContextParameter === '';\n else externalUser\">\n <div id=\"update-flag-comments-hint\" class=\"govuk-hint\">\n {{\n internalUserUpdate\n ? (updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL | rpxTranslate)\n : (updateFlagStepEnum.COMMENT_HINT_TEXT_INTERNAL_2_POINT_1 | rpxTranslate)\n }}\n </div>\n <div class=\"govuk-warning-text\" *ngIf=\"internalUser2Point1EnabledUpdate && externallyVisibleFlag\">\n <span class=\"govuk-warning-text__icon\" aria-hidden=\"true\">!</span>\n <strong class=\"govuk-warning-text__text\">\n <span class=\"govuk-warning-text__assistive\">{{'Warning' | rpxTranslate}}</span>\n {{updateFlagStepEnum.WARNING_TEXT | rpxTranslate}}\n </strong>\n </div>\n <div id=\"update-flag-comments-not-entered-error-message\" class=\"govuk-error-message\" *ngIf=\"commentsNotEnteredErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{commentsNotEnteredErrorMessage | rpxTranslate}}\n </div>\n <div id=\"update-flag-comments-char-limit-error\" class=\"govuk-error-message\" *ngIf=\"commentsCharLimitErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{commentsCharLimitErrorMessage | rpxTranslate}}\n </div>\n <textarea class=\"govuk-textarea\"\n [id]=\"caseFlagFormFields.COMMENTS\"\n [name]=\"caseFlagFormFields.COMMENTS\"\n [formControlName]=\"caseFlagFormFields.COMMENTS\"\n rows=\"5\"\n aria-describedby=\"update-flag-comments-hint update-flag-comments-char-limit-info update-flag-comments-char-limit-error\">\n </textarea>\n <div id=\"update-flag-comments-char-limit-info\" class=\"govuk-hint govuk-character-count__message\" aria-live=\"polite\">\n {{updateFlagStepEnum.CHARACTER_LIMIT_INFO | rpxTranslate}}\n </div>\n </ng-container>\n <ng-template #externalUser>\n <ng-container *ngIf=\"externalUserUpdate\">\n <ng-container *ngTemplateOutlet=\"updateFlagStatusReason\"></ng-container>\n </ng-container>\n </ng-template>\n </div>\n\n <ng-template #updateFlagStatusReason>\n <div id=\"update-flag-status-reason-not-entered-error-message\" class=\"govuk-error-message\" *ngIf=\"statusReasonNotEnteredErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{statusReasonNotEnteredErrorMessage | rpxTranslate}}\n </div>\n <div id=\"update-flag-status-reason-char-limit-error\" class=\"govuk-error-message\" *ngIf=\"statusReasonCharLimitErrorMessage\">\n <span class=\"govuk-visually-hidden\">{{'Error:' | rpxTranslate}}</span> {{statusReasonCharLimitErrorMessage | rpxTranslate}}\n </div>\n <textarea class=\"govuk-textarea\"\n [id]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n [name]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n [formControlName]=\"caseFlagFormFields.STATUS_CHANGE_REASON\"\n rows=\"5\"\n aria-describedby=\"update-flag-comments-hint-external update-flag-status-hint update-flag-status-reason-char-limit-info\n update-flag-status-reason-char-limit-error\">\n </textarea>\n <div id=\"update-flag-status-reason-char-limit-info\" class=\"govuk-hint govuk-character-count__message\" aria-live=\"polite\">\n {{updateFlagStepEnum.CHARACTER_LIMIT_INFO | rpxTranslate}}\n </div>\n </ng-template>\n\n <div id=\"flag-status-container-v2_1\" class=\"govuk-!-margin-bottom-4\" *ngIf=\"internalUser2Point1EnabledUpdate\">\n <fieldset class=\"govuk-fieldset\" aria-describedby=\"update-flag-status-heading\">\n <legend class=\"govuk-fieldset__legend govuk-fieldset__legend--s\">\n <h1 id=\"update-flag-status-heading\" class=\"govuk-fieldset__heading\">\n {{updateFlagTitle | rpxTranslate}} {{'status' | rpxTranslate}}\n </h1>\n </legend>\n <div class=\"govuk-radios govuk-radios--conditional govuk-!-margin-bottom-4\" data-module=\"govuk-radios\" [id]=\"caseFlagFormFields.STATUS\">\n <div class=\"govuk-radios__item\" *ngFor=\"let status of validStatusProgressions\">\n <input class=\"govuk-radios__input\" type=\"radio\"\n [id]=\"caseFlagFormFields.STATUS + '_' + status\"\n [name]=\"caseFlagFormFields.STATUS\"\n [formControlName]=\"caseFlagFormFields.STATUS\"\n [value]=\"status\">\n <label class=\"govuk-label govuk-radios__label\" [for]=\"caseFlagFormFields.STATUS + '_' + status\">\n {{caseFlagStatusEnum[status] | rpxTranslate}}\n </label>\n </div>\n </div>\n </fieldset>\n\n <div id=\"update-flag-status-hint\" class=\"govuk-hint\">\n {{updateFlagStepEnum.STATUS_HINT_TEXT | rpxTranslate}}\n </div>\n <ng-container *ngTemplateOutlet=\"updateFlagStatusReason\"></ng-container>\n </div>\n\n <div id=\"translation-checkbox-container\" class=\"govuk-!-margin-bottom-6\" *ngIf=\"internalUser2Point1EnabledUpdate\">\n <div class=\"govuk-checkboxes\" data-module=\"govuk-checkboxes\">\n <div class=\"govuk-checkboxes__item\">\n <input class=\"govuk-checkboxes__input\" type=\"checkbox\"\n [formControlName]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\"\n [id]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\"\n [name]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\">\n <label class=\"govuk-label govuk-checkboxes__label\"\n [for]=\"caseFlagFormFields.IS_WELSH_TRANSLATION_NEEDED\">\n {{'I need to add a translation' | rpxTranslate}}\n </label>\n </div>\n </div>\n </div>\n\n <div id=\"flag-status-container-v1\" class=\"govuk-grid-row\" *ngIf=\"internalUserUpdate\">\n <div class=\"govuk-grid-column-one-half\">\n <p>{{'Flag status:' | rpxTranslate}}\n <span>\n <strong class=\"govuk-tag\" [ngClass]=\"{'govuk-tag--grey': selectedFlag.flagDetailDisplay.flagDetail.status === 'Inactive'}\">\n {{selectedFlag?.flagDetailDisplay?.flagDetail?.status | rpxTranslate}}\n </strong>\n </span>\n </p>\n </div>\n <div class=\"govuk-grid-column-one-half\">\n <button class=\"button button-secondary\" type=\"button\" (click)=\"onMakeInactive()\" *ngIf=\"selectedFlag.flagDetailDisplay.flagDetail.status === 'Active'\">\n {{'Make inactive' | rpxTranslate}}\n </button>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n\n<div class=\"govuk-button-group\">\n <button id=\"updateFlagNextButton\" class=\"govuk-button\" type=\"button\" (click)=\"onNext()\">\n {{'Next' | rpxTranslate}}\n </button>\n</div>\n" }]
502
+ }], () => [{ type: i1.RpxTranslationService }], { formGroup: [{
522
503
  type: Input
523
504
  }], displayContextParameter: [{
524
505
  type: Input
525
506
  }], caseFlagStateEmitter: [{
526
507
  type: Output
527
508
  }] }); })();
528
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UpdateFlagComponent, { className: "UpdateFlagComponent", filePath: "lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.ts", lineNumber: 22 }); })();
529
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWZsYWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzVELE9BQU8sRUFDTCwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2YsTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7SUNQbkUsK0JBQWtGO0lBQ2hGLFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSxtTUFDRjs7O0lBVUUsK0JBQTJGO0lBQ3pGLFlBQ0Y7O0lBQUEsaUJBQU07OztJQURKLGNBQ0Y7SUFERSwy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MkJJLDREQWU3QjtZQWlCekYsQUFERSxpQkFBTSxFQUNGOzs7O1lBOUlNLHlDQUF1QjtZQUVILGVBQTBEO1lBQTFELG1GQUEwRDtZQUdsRixlQUNGO1lBREUsMkVBQ0Y7WUFFc0QsZUFBd0I7WUFBeEIsNkNBQXdCO1lBS3BDLGVBQW1DO1lBQW5DLHFEQUFtQztZQUMzRSxjQUtGO1lBTEUseU5BS0Y7WUFDaUUsZUFBd0I7WUFBeEIsNkNBQXdCO1lBRzFFLGNBQ2I7WUFBQSxBQURhLDJIQUNiLDZCQUFpQjtZQTJEaUQsZUFBc0M7WUFBdEMsMkRBQXNDO1lBMkJsQyxjQUFzQztZQUF0QywyREFBc0M7WUFlckQsY0FBd0I7WUFBeEIsNkNBQXdCOzs7aUZEeEc1RSxtQkFBbUI7Y0FKL0IsU0FBUzsyQkFDRSxpQkFBaUI7bUdBSVgsU0FBUztrQkFBeEIsS0FBSztZQUNVLHVCQUF1QjtrQkFBdEMsS0FBSztZQUVXLG9CQUFvQjtrQkFBcEMsTUFBTTs7a0ZBSkksbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJweFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ3JweC14dWktdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlLCBKb3VybmV5IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IENhc2VGbGFnU3RhdGUsIEZsYWdEZXRhaWwsIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGggfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlcixcbiAgQ2FzZUZsYWdGaWVsZFN0YXRlLFxuICBDYXNlRmxhZ0Zvcm1GaWVsZHMsXG4gIENhc2VGbGFnU3RhdHVzLFxuICBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZSxcbiAgVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSxcbiAgVXBkYXRlRmxhZ1N0ZXBcbn0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHsgQWJzdHJhY3RKb3VybmV5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS1maWVsZCc7XG5pbXBvcnQgeyBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vc2VydmljZXNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXVwZGF0ZS1mbGFnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VwZGF0ZS1mbGFnLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBVcGRhdGVGbGFnQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RKb3VybmV5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBKb3VybmV5IHtcbiAgQElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICBASW5wdXQoKSBwdWJsaWMgZGlzcGxheUNvbnRleHRQYXJhbWV0ZXI6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHVibGljIGNhc2VGbGFnU3RhdGVFbWl0dGVyOiBFdmVudEVtaXR0ZXI8Q2FzZUZsYWdTdGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+KCk7XG5cbiAgcHVibGljIHNlbGVjdGVkRmxhZzogRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgcHVibGljIHVwZGF0ZUZsYWdUaXRsZSA9ICcnO1xuICBwdWJsaWMgZXJyb3JNZXNzYWdlczogRXJyb3JNZXNzYWdlW10gPSBbXTtcbiAgcHVibGljIGNvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZTogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSA9IG51bGw7XG4gIHB1YmxpYyBjb21tZW50c0NoYXJMaW1pdEVycm9yTWVzc2FnZTogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSA9IG51bGw7XG4gIHB1YmxpYyBzdGF0dXNSZWFzb25Ob3RFbnRlcmVkRXJyb3JNZXNzYWdlOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgcHVibGljIHN0YXR1c1JlYXNvbkNoYXJMaW1pdEVycm9yTWVzc2FnZTogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSA9IG51bGw7XG4gIHB1YmxpYyB1cGRhdGVGbGFnU3RlcEVudW0gPSBVcGRhdGVGbGFnU3RlcDtcbiAgcHVibGljIHZhbGlkU3RhdHVzUHJvZ3Jlc3Npb25zOiBzdHJpbmdbXTtcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VGbGFnU3RhdHVzRW51bSA9IENhc2VGbGFnU3RhdHVzO1xuICBwdWJsaWMgcmVhZG9ubHkgY2FzZUZsYWdGb3JtRmllbGRzID0gQ2FzZUZsYWdGb3JtRmllbGRzO1xuICBwcml2YXRlIHJlYWRvbmx5IHRleHRNYXhDaGFyTGltaXQgPSAyMDA7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VsZWN0ZWRNYW5hZ2VDYXNlTG9jYXRpb24gPSAnc2VsZWN0ZWRNYW5hZ2VDYXNlTG9jYXRpb24nO1xuICBwcml2YXRlIGZsYWdEZXRhaWw6IEZsYWdEZXRhaWw7XG4gIHB1YmxpYyBjYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyID0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlcjtcbiAgcHVibGljIGV4dGVybmFsVXNlclVwZGF0ZSA9IGZhbHNlO1xuICBwdWJsaWMgaW50ZXJuYWxVc2VyVXBkYXRlID0gZmFsc2U7XG4gIHB1YmxpYyBpbnRlcm5hbFVzZXIyUG9pbnQxRW5hYmxlZFVwZGF0ZSA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgZXh0ZXJuYWxseVZpc2libGVGbGFnKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS52aXNpYmlsaXR5Py50b0xvd2VyQ2FzZSgpID09PSAnZXh0ZXJuYWwnO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBycHhUcmFuc2xhdGlvblNlcnZpY2U6IFJweFRyYW5zbGF0aW9uU2VydmljZSwgXG4gICAgbXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlOiBNdWx0aXBhZ2VDb21wb25lbnRTdGF0ZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIobXVsdGlwYWdlQ29tcG9uZW50U3RhdGVTZXJ2aWNlKTtcbiAgIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gU2V0IHdoZXRoZXIgdGhpcyBpcyBhbiBleHRlcm5hbCwgaW50ZXJuYWwsIG9yIGludGVybmFsIENhc2UgRmxhZ3MgdjIuMSBlbmFibGVkIHVzZXIgdXBkYXRlXG4gICAgdGhpcy5leHRlcm5hbFVzZXJVcGRhdGUgPSB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV9FWFRFUk5BTDtcbiAgICB0aGlzLmludGVybmFsVXNlclVwZGF0ZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFO1xuICAgIHRoaXMuaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGUgPSB0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE7XG4gICAgdGhpcy5zZWxlY3RlZEZsYWcgPSB0aGlzLmZvcm1Hcm91cC5nZXQodGhpcy5zZWxlY3RlZE1hbmFnZUNhc2VMb2NhdGlvbik/LnZhbHVlIGFzIEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRGbGFnPy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbCkge1xuICAgICAgdGhpcy5mbGFnRGV0YWlsID0gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbDtcbiAgICAgIC8vIElmIHByZXNlbnQsIHVzZSB0aGUgKm9yaWdpbmFsKiBmbGFnIHN0YXR1cywgbm90IHRoZSBvbmUgaW4gdGhlIGZsYWdEZXRhaWwgb2JqZWN0LCBiZWNhdXNlIHRoZSBzdGF0dXMgY291bGQgaGF2ZVxuICAgICAgLy8gYmVlbiBtb2RpZmllZCB2aWEgYSBwcmV2aW91cyBcIlVwZGF0ZSBGbGFnXCIgam91cm5leSB0aHJvdWdoIHRoZSBVSSBidXQgbm90IHBlcnNpc3RlZCB5ZXQgKHRodXMgbm90IHRoZSAqdHJ1ZSogZmxhZ1xuICAgICAgLy8gc3RhdHVzKS4gT3RoZXJ3aXNlLCB1c2UgdGhlIHN0YXR1cyBmcm9tIHRoZSBmbGFnRGV0YWlsIG9iamVjdCAoaW5pdGlhbGx5LCB0aGUgb3JpZ2luYWwgZmxhZyBzdGF0dXMgd29uJ3QgYmVcbiAgICAgIC8vIHByZXNlbnQgYmVjYXVzZSBpdCBnZXRzIGNhY2hlZCBvbmx5IG9uIGZpcnN0IHVwZGF0ZSBieSBXcml0ZUNhc2VGbGFnRmllbGRDb21wb25lbnQpXG4gICAgICBjb25zdCBjdXJyZW50RmxhZ1N0YXR1c0tleSA9IE9iamVjdC5rZXlzKENhc2VGbGFnU3RhdHVzKS5maW5kKFxuICAgICAgICAoa2V5KSA9PiBDYXNlRmxhZ1N0YXR1c1trZXldID09PSAodGhpcy5zZWxlY3RlZEZsYWcub3JpZ2luYWxTdGF0dXMgfHwgdGhpcy5mbGFnRGV0YWlsLnN0YXR1cykpO1xuXG4gICAgICAvLyBQb3B1bGF0ZSBmbGFnIGNvbW1lbnRzIHRleHQgYXJlYSB3aXRoIGV4aXN0aW5nIGNvbW1lbnRzOyB1c2UgdGhlIGNvbW1lbnRzIGFwcHJvcHJpYXRlIGZvciB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UsXG4gICAgICAvLyBmYWxsaW5nIGJhY2sgb24gdGhlaXIgYWx0ZXJuYXRlIGNvdW50ZXJwYXJ0IGlmIG5vbmUgYXJlIGF2YWlsYWJsZS4gQ29tbWVudHMgYXJlIHRvIGJlIHBvcHVsYXRlZCBvbmUgdGltZSBvbmx5IC1cbiAgICAgIC8vIHdoZW4gdGhlIHVzZXIgZmlyc3QgdmlzaXRzIHRoZSBwYWdlIC0gZXZlbiBpZiB0aGV5IHN3aXRjaCBsYW5ndWFnZSBzdWJzZXF1ZW50bHlcbiAgICAgIGxldCBleGlzdGluZ0NvbW1lbnRzOiBzdHJpbmc7XG4gICAgICBpZiAodGhpcy5ycHhUcmFuc2xhdGlvblNlcnZpY2UubGFuZ3VhZ2UgPT09ICdjeScpIHtcbiAgICAgICAgZXhpc3RpbmdDb21tZW50cyA9IHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudF9jeSB8fCB0aGlzLmZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBleGlzdGluZ0NvbW1lbnRzID0gdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50IHx8IHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudF9jeTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTLCBuZXcgRm9ybUNvbnRyb2woZXhpc3RpbmdDb21tZW50cykpO1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTLCBuZXcgRm9ybUNvbnRyb2woY3VycmVudEZsYWdTdGF0dXNLZXkpKTtcbiAgICAgIC8vIFBvcHVsYXRlIHN0YXR1cyByZWFzb24gb25seSBpZiB0aGUgdXNlciBpcyBub3QgZXh0ZXJuYWxcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OLCBuZXcgRm9ybUNvbnRyb2woXG4gICAgICAgIHRoaXMuZXh0ZXJuYWxVc2VyVXBkYXRlID8gJycgOiB0aGlzLmZsYWdEZXRhaWwuZmxhZ1VwZGF0ZUNvbW1lbnQpKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woQ2FzZUZsYWdGb3JtRmllbGRzLklTX1dFTFNIX1RSQU5TTEFUSU9OX05FRURFRCwgbmV3IEZvcm1Db250cm9sKGZhbHNlKSk7XG5cbiAgICAgIHRoaXMudXBkYXRlRmxhZ1RpdGxlID0gdGhpcy5zZXRVcGRhdGVDYXNlRmxhZ1RpdGxlKHRoaXMuZmxhZ0RldGFpbCk7XG5cbiAgICAgIC8vIFNldCB0aGUgdmFsaWQgc3RhdHVzIG9wdGlvbnMgZm9yIGRpc3BsYXksIGJhc2VkIG9uIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBzZWxlY3RlZCBmbGFnLiBcIkFjdGl2ZVwiIGZsYWdzIGNhblxuICAgICAgLy8gcmVtYWluIFwiQWN0aXZlXCIgb3IgbW92ZSB0byBcIkluYWN0aXZlXCIgb25seTsgXCJSZXF1ZXN0ZWRcIiBmbGFncyBjYW4gcmVtYWluIFwiUmVxdWVzdGVkXCIgb3IgbW92ZSB0byBcIkFjdGl2ZVwiLFxuICAgICAgLy8gXCJJbmFjdGl2ZVwiLCBvciBcIk5vdCBhcHByb3ZlZFwiLiBObyBvdGhlciBzdGF0dXMgcHJvZ3Jlc3Npb25zIGFyZSB2YWxpZFxuICAgICAgaWYgKGN1cnJlbnRGbGFnU3RhdHVzS2V5KSB7XG4gICAgICAgIHN3aXRjaCAoY3VycmVudEZsYWdTdGF0dXNLZXkpIHtcbiAgICAgICAgICBjYXNlICdBQ1RJVkUnOlxuICAgICAgICAgICAgdGhpcy52YWxpZFN0YXR1c1Byb2dyZXNzaW9ucyA9IE9iamVjdC5rZXlzKENhc2VGbGFnU3RhdHVzKS5maWx0ZXIoKGtleSkgPT4gIVsnUkVRVUVTVEVEJywgJ05PVF9BUFBST1ZFRCddLmluY2x1ZGVzKGtleSkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnUkVRVUVTVEVEJzpcbiAgICAgICAgICAgIHRoaXMudmFsaWRTdGF0dXNQcm9ncmVzc2lvbnMgPSBPYmplY3Qua2V5cyhDYXNlRmxhZ1N0YXR1cyk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhpcy52YWxpZFN0YXR1c1Byb2dyZXNzaW9ucyA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVwZGF0ZUNhc2VGbGFnVGl0bGUoZmxhZ0RldGFpbDogRmxhZ0RldGFpbCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyKSB7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFOlxuICAgICAgY2FzZSBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLlVQREFURV8yX1BPSU5UXzE6XG4gICAgICAgIGlmIChmbGFnRGV0YWlsPy5uYW1lKSB7XG4gICAgICAgICAgY29uc3Qgc3ViVHlwZVZhbHVlID0gZmxhZ0RldGFpbC5zdWJUeXBlVmFsdWUgfHwgZmxhZ0RldGFpbC5zdWJUeXBlVmFsdWVfY3lcbiAgICAgICAgICAgID8gYCwgJHtmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZSB8fCBmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZV9jeX1gXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICAgIGNvbnN0IG90aGVyRGVzY3JpcHRpb24gPSBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb24gfHwgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uX2N5XG4gICAgICAgICAgICA/IGAsICR7ZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uIHx8IGZsYWdEZXRhaWwub3RoZXJEZXNjcmlwdGlvbl9jeX1gXG4gICAgICAgICAgICA6ICcnO1xuICAgICAgICAgIHJldHVybiBzdWJUeXBlVmFsdWVcbiAgICAgICAgICAgID8gYCR7Q2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEV9IFwiJHtmbGFnRGV0YWlsLm5hbWV9JHtzdWJUeXBlVmFsdWV9XCJgXG4gICAgICAgICAgICA6IGAke0Nhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlVQREFURV9GTEFHX1RJVExFfSBcIiR7ZmxhZ0RldGFpbC5uYW1lfSR7b3RoZXJEZXNjcmlwdGlvbn1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke0Nhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLlVQREFURV9GTEFHX1RJVExFfWA7XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMOlxuICAgICAgICByZXR1cm4gQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEVfRVhURVJOQUw7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gQ2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuTk9ORTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25OZXh0KCk6IHZvaWQge1xuICAgIC8vIFZhbGlkYXRlIGZsYWcgY29tbWVudHMgYW5kIHN0YXR1cyByZWFzb24gZW50cnlcbiAgICB0aGlzLnZhbGlkYXRlVGV4dEVudHJ5KCk7XG4gICAgdGhpcy52YWxpZGF0ZVRyYW5zbGF0aW9uTmVlZGVkKCk7XG5cbiAgICAvLyBTZXQgc2VsZWN0ZWQgZmxhZyBzdGF0dXMgdG8gXCJJbmFjdGl2ZVwiIGlmIHVwZGF0ZSBpcyBieSBleHRlcm5hbCB1c2VyXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxVc2VyVXBkYXRlKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUyk/LnNldFZhbHVlKE9iamVjdC5rZXlzKENhc2VGbGFnU3RhdHVzKVsyXSk7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGNhc2UgZmxhZyBmaWVsZCBzdGF0ZSwgZXJyb3IgbWVzc2FnZXMsIGFuZCBzZWxlY3RlZCBmbGFnIGRldGFpbCB0byB0aGUgcGFyZW50LiBUaGUgc2VsZWN0ZWQgZmxhZyBtdXN0IGJlXG4gICAgLy8gcmUtZW1pdHRlZCBiZWNhdXNlIHRoZSBwYXJlbnQgY29tcG9uZW50IHJlcG9wdWxhdGVzIHRoaXMgb24gaGFuZGxpbmcgdGhpcyBFdmVudEVtaXR0ZXJcbiAgICB0aGlzLmNhc2VGbGFnU3RhdGVFbWl0dGVyLmVtaXQoe1xuICAgICAgY3VycmVudENhc2VGbGFnRmllbGRTdGF0ZTogQ2FzZUZsYWdGaWVsZFN0YXRlLkZMQUdfVVBEQVRFLFxuICAgICAgZXJyb3JNZXNzYWdlczogdGhpcy5lcnJvck1lc3NhZ2VzLFxuICAgICAgc2VsZWN0ZWRGbGFnOiB0aGlzLnNlbGVjdGVkRmxhZyxcbiAgICB9KTtcblxuICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgfVxuXG4gIHB1YmxpYyB2YWxpZGF0ZVRyYW5zbGF0aW9uTmVlZGVkKCk6IHZvaWQge1xuICAgIC8vIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgY2FuIHNlbGVjdCB0byBoYXZlIHRyYW5zbGF0aW9uIGFuZCB0aGVuIG5hdmlnYXRlIGJhY2sgdG8gcmVtb3ZlIHRoZSByZXF1aXJlZCB0cmFuc2xhdGlvbiBpbiB0aGUgc2FtZSBqb3VybmV5XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIHRoZSB1c2VyIGRvZXMgbm90IGhhdmUgYW55IG9mIHRoZSB0cmFuc2xhdGlvbiBmaWVsZHMgYXBwbGllZCBhbmQgcmVtb3ZlIGlmIHRoZXkgZG9cbiAgICBjb25zb2xlLmxvZygndmFsaWRhdGVUcmFuc2xhdGVOZWVkZWQnKTtcbiAgICBjb25zdCBmbGFnRGV0YWlscyA9IHRoaXMuc2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWw7XG4gICAgY29uc3QgaXNUcmFuc2xhdGlvblJlcXVpcmVkID0gdGhpcy5mb3JtR3JvdXAudmFsdWUuZmxhZ0lzV2Vsc2hUcmFuc2xhdGlvbk5lZWRlZDtcbiAgICBjb25zdCBoYXNUcmFuc2xhdGlvbkZpZWxkcyA9IChmbGFnRGV0YWlscy5mbGFnQ29tbWVudF9jeSB8fCBmbGFnRGV0YWlscy5vdGhlckRlc2NyaXB0aW9uIHx8IGZsYWdEZXRhaWxzLm90aGVyRGVzY3JpcHRpb25fY3kpO1xuICAgIGlmICghaXNUcmFuc2xhdGlvblJlcXVpcmVkICYmIGhhc1RyYW5zbGF0aW9uRmllbGRzKSB7XG4gICAgICBmbGFnRGV0YWlscy5mbGFnQ29tbWVudF9jeSA9IG51bGw7XG4gICAgICBmbGFnRGV0YWlscy5vdGhlckRlc2NyaXB0aW9uID0gbnVsbDtcbiAgICAgIGZsYWdEZXRhaWxzLm90aGVyRGVzY3JpcHRpb25fY3kgPSBudWxsO1xuICAgICAgdGhpcy5mb3JtR3JvdXAucmVtb3ZlQ29udHJvbCgnZmxhZ0NvbW1lbnRfY3knKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ290aGVyRGVzY3JpcHRpb24nKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ290aGVyRGVzY3JpcHRpb25fY3knKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25NYWtlSW5hY3RpdmUoKTogdm9pZCB7XG4gICAgLy8gU2V0IHNlbGVjdGVkIGZsYWcgc3RhdHVzIHRvIFwiSW5hY3RpdmVcIiBvbiBzY3JlZW4gYW5kIGluIHRoZSBGb3JtR3JvdXBcbiAgICB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9IENhc2VGbGFnU3RhdHVzLklOQUNUSVZFO1xuICAgIHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTKT8uc2V0VmFsdWUoT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpWzJdKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUZXh0RW50cnkoKTogdm9pZCB7XG4gICAgdGhpcy5jb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuY29tbWVudHNDaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9IG51bGw7XG4gICAgdGhpcy5zdGF0dXNSZWFzb25DaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlcyA9IFtdO1xuICAgIC8vIFZhbGlkYXRpb24gc2hvdWxkIGZhaWwgaWYgdGhlIGZsYWcgaGFzIGFuIGV4aXN0aW5nIGNvbW1lbnQgYW5kIGl0IGhhcyBiZWVuIGRlbGV0ZWQgb24gc2NyZWVuOyBjb252ZXJzZWx5LCBpZiB0aGVyZVxuICAgIC8vIGlzIG5vIGV4aXN0aW5nIGNvbW1lbnQgdGhlbiBvbmUgaXMgbm90IHJlcXVpcmVkIGZvciB2YWxpZGF0aW9uIHRvIHBhc3NcbiAgICBjb25zdCBjb21tZW50ID0gdGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UUyk/LnZhbHVlO1xuICAgIGlmICghY29tbWVudCAmJiAodGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50IHx8IHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudF9jeSkpIHtcbiAgICAgIHRoaXMuY29tbWVudHNOb3RFbnRlcmVkRXJyb3JNZXNzYWdlID0gIXRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXJcbiAgICAgICAgPyBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLk5PTkVcbiAgICAgICAgOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLkZMQUdfQ09NTUVOVFNfTk9UX0VOVEVSRUQ7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuY29tbWVudHNOb3RFbnRlcmVkRXJyb3JNZXNzYWdlLFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChjb21tZW50ICYmIGNvbW1lbnQubGVuZ3RoID4gdGhpcy50ZXh0TWF4Q2hhckxpbWl0KSB7XG4gICAgICB0aGlzLmNvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlID0gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5GTEFHX0NPTU1FTlRTX0NIQVJfTElNSVRfRVhDRUVERUQ7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuRkxBR19DT01NRU5UU19DSEFSX0xJTUlUX0VYQ0VFREVELFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXR1c1JlYXNvbiA9IHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT04pPy52YWx1ZTtcbiAgICBjb25zdCBmbGFnU3RhdHVzTm90QXBwcm92ZWRLZXkgPSBPYmplY3Qua2V5cyhDYXNlRmxhZ1N0YXR1cykuZmluZCgoa2V5KSA9PiBDYXNlRmxhZ1N0YXR1c1trZXldID09PSBDYXNlRmxhZ1N0YXR1cy5OT1RfQVBQUk9WRUQpO1xuICAgIC8vIFN0YXR1cyByZWFzb24gaXMgbWFuZGF0b3J5IGlmIGZsYWcgc3RhdHVzIGlzIFwiTm90IGFwcHJvdmVkXCIgb3IgdXNlciBpcyBleHRlcm5hbFxuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUyk/LnZhbHVlID09PSBmbGFnU3RhdHVzTm90QXBwcm92ZWRLZXkgJiYgIXN0YXR1c1JlYXNvbikge1xuICAgICAgdGhpcy5zdGF0dXNSZWFzb25Ob3RFbnRlcmVkRXJyb3JNZXNzYWdlID0gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX05PVF9FTlRFUkVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLlNUQVRVU19SRUFTT05fTk9UX0VOVEVSRUQsXG4gICAgICAgIGZpZWxkSWQ6IENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZXh0ZXJuYWxVc2VyVXBkYXRlICYmICFzdGF0dXNSZWFzb24pIHtcbiAgICAgIHRoaXMuc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9OT1RfRU5URVJFRF9FWFRFUk5BTDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX05PVF9FTlRFUkVEX0VYVEVSTkFMLFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzdGF0dXNSZWFzb24gJiYgc3RhdHVzUmVhc29uLmxlbmd0aCA+IHRoaXMudGV4dE1heENoYXJMaW1pdCkge1xuICAgICAgdGhpcy5zdGF0dXNSZWFzb25DaGFyTGltaXRFcnJvck1lc3NhZ2UgPSBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLlNUQVRVU19SRUFTT05fQ0hBUl9MSU1JVF9FWENFRURFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX0NIQVJfTElNSVRfRVhDRUVERUQsXG4gICAgICAgIGZpZWxkSWQ6IENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5leHQoKSB7XG4gICAgdGhpcy5vbk5leHQoKTtcblxuICAgIGlmICh0aGlzLmVycm9yTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBzdXBlci5uZXh0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8bmctY29udGFpbmVyIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGFyYWN0ZXItY291bnRcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWNoYXJhY3Rlci1jb3VudFwiIGRhdGEtbWF4bGVuZ3RoPVwiMjAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImdvdnVrLWZvcm0tZ3JvdXBcIiBbbmdDbGFzc109XCJ7J2Zvcm0tZ3JvdXAtZXJyb3InOiBlcnJvck1lc3NhZ2VzLmxlbmd0aCA+IDB9XCI+XG4gICAgICA8aDEgY2xhc3M9XCJnb3Z1ay1sYWJlbC13cmFwcGVyIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1tXCI+XG4gICAgICAgICAge3t1cGRhdGVGbGFnVGl0bGUgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9oMT5cbiAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1oaW50LWV4dGVybmFsXCIgY2xhc3M9XCJnb3Z1ay1oaW50XCIgKm5nSWY9XCJleHRlcm5hbFVzZXJVcGRhdGVcIj5cbiAgICAgICAge3tzZWxlY3RlZEZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsIHwgdXBkYXRlRmxhZ1RpdGxlRGlzcGxheX19XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWxhYmVsLS1zXCIgW2Zvcl09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcIj5cbiAgICAgICAgICB7e1xuICAgICAgICAgICAgZXh0ZXJuYWxVc2VyVXBkYXRlXG4gICAgICAgICAgICAgID8gKHVwZGF0ZUZsYWdTdGVwRW51bS5DT01NRU5UX0ZJRUxEX0xBQkVMX0VYVEVSTkFMIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICA6ICh1cGRhdGVGbGFnVGl0bGUgfCBycHhUcmFuc2xhdGUpICsgKCcgY29tbWVudHMnIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1oaW50LWV4dGVybmFsXCIgY2xhc3M9XCJnb3Z1ay1oaW50XCIgKm5nSWY9XCJleHRlcm5hbFVzZXJVcGRhdGVcIj5cbiAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5DT01NRU5UX0hJTlRfVEVYVF9FWFRFUk5BTCB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW50ZXJuYWxVc2VyVXBkYXRlIHx8IGludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlIHx8IGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyID09PSAnJztcbiAgICAgICAgICBlbHNlIGV4dGVybmFsVXNlclwiPlxuICAgICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1oaW50XCIgY2xhc3M9XCJnb3Z1ay1oaW50XCI+XG4gICAgICAgICAgICB7e1xuICAgICAgICAgICAgICBpbnRlcm5hbFVzZXJVcGRhdGVcbiAgICAgICAgICAgICAgICA/ICh1cGRhdGVGbGFnU3RlcEVudW0uQ09NTUVOVF9ISU5UX1RFWFRfSU5URVJOQUwgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgOiAodXBkYXRlRmxhZ1N0ZXBFbnVtLkNPTU1FTlRfSElOVF9URVhUX0lOVEVSTkFMXzJfUE9JTlRfMSB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dFwiICpuZ0lmPVwiaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGUgJiYgZXh0ZXJuYWxseVZpc2libGVGbGFnXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9faWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiE8L3NwYW4+XG4gICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X190ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstd2FybmluZy10ZXh0X19hc3Npc3RpdmVcIj57eydXYXJuaW5nJyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5XQVJOSU5HX1RFWFQgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLWNvbW1lbnRzLW5vdC1lbnRlcmVkLWVycm9yLW1lc3NhZ2VcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydFcnJvcjonIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+IHt7Y29tbWVudHNOb3RFbnRlcmVkRXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtY2hhci1saW1pdC1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwiY29tbWVudHNDaGFyTGltaXRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e2NvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcIlxuICAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcIlxuICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5DT01NRU5UU1wiXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9XCI1XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cInVwZGF0ZS1mbGFnLWNvbW1lbnRzLWhpbnQgdXBkYXRlLWZsYWctY29tbWVudHMtY2hhci1saW1pdC1pbmZvIHVwZGF0ZS1mbGFnLWNvbW1lbnRzLWNoYXItbGltaXQtZXJyb3JcIj5cbiAgICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1jaGFyLWxpbWl0LWluZm9cIiBjbGFzcz1cImdvdnVrLWhpbnQgZ292dWstY2hhcmFjdGVyLWNvdW50X19tZXNzYWdlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+XG4gICAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5DSEFSQUNURVJfTElNSVRfSU5GTyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2V4dGVybmFsVXNlcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXh0ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBkYXRlRmxhZ1N0YXR1c1JlYXNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjdXBkYXRlRmxhZ1N0YXR1c1JlYXNvbj5cbiAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLXN0YXR1cy1yZWFzb24tbm90LWVudGVyZWQtZXJyb3ItbWVzc2FnZVwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e3N0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2UgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLXN0YXR1cy1yZWFzb24tY2hhci1saW1pdC1lcnJvclwiIGNsYXNzPVwiZ292dWstZXJyb3ItbWVzc2FnZVwiICpuZ0lmPVwic3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay12aXN1YWxseS1oaWRkZW5cIj57eydFcnJvcjonIHwgcnB4VHJhbnNsYXRlfX08L3NwYW4+IHt7c3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImdvdnVrLXRleHRhcmVhXCJcbiAgICAgICAgICAgICAgICAgIFtpZF09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cIlxuICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXCJcbiAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXCJcbiAgICAgICAgICAgICAgICAgIHJvd3M9XCI1XCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1oaW50LWV4dGVybmFsIHVwZGF0ZS1mbGFnLXN0YXR1cy1oaW50IHVwZGF0ZS1mbGFnLXN0YXR1cy1yZWFzb24tY2hhci1saW1pdC1pbmZvXG4gICAgICAgICAgICAgICAgICB1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtZXJyb3JcIj5cbiAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLXN0YXR1cy1yZWFzb24tY2hhci1saW1pdC1pbmZvXCIgY2xhc3M9XCJnb3Z1ay1oaW50IGdvdnVrLWNoYXJhY3Rlci1jb3VudF9fbWVzc2FnZVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgIHt7dXBkYXRlRmxhZ1N0ZXBFbnVtLkNIQVJBQ1RFUl9MSU1JVF9JTkZPIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8ZGl2IGlkPVwiZmxhZy1zdGF0dXMtY29udGFpbmVyLXYyXzFcIiBjbGFzcz1cImdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCIgKm5nSWY9XCJpbnRlcm5hbFVzZXIyUG9pbnQxRW5hYmxlZFVwZGF0ZVwiPlxuICAgICAgICA8ZmllbGRzZXQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldFwiIGFyaWEtZGVzY3JpYmVkYnk9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtaGVhZGluZ1wiPlxuICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9fbGVnZW5kIGdvdnVrLWZpZWxkc2V0X19sZWdlbmQtLXNcIj5cbiAgICAgICAgICAgIDxoMSBpZD1cInVwZGF0ZS1mbGFnLXN0YXR1cy1oZWFkaW5nXCIgY2xhc3M9XCJnb3Z1ay1maWVsZHNldF9faGVhZGluZ1wiPlxuICAgICAgICAgICAgICB7e3VwZGF0ZUZsYWdUaXRsZSB8IHJweFRyYW5zbGF0ZX19IHt7J3N0YXR1cycgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zIGdvdnVrLXJhZGlvcy0tY29uZGl0aW9uYWwgZ292dWstIS1tYXJnaW4tYm90dG9tLTRcIiBkYXRhLW1vZHVsZT1cImdvdnVrLXJhZGlvc1wiIFtpZF09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstcmFkaW9zX19pdGVtXCIgKm5nRm9yPVwibGV0IHN0YXR1cyBvZiB2YWxpZFN0YXR1c1Byb2dyZXNzaW9uc1wiPlxuICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJnb3Z1ay1yYWRpb3NfX2lucHV0XCIgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUyArICdfJyArIHN0YXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic3RhdHVzXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLXJhZGlvc19fbGFiZWxcIiBbZm9yXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMgKyAnXycgKyBzdGF0dXNcIj5cbiAgICAgICAgICAgICAgICB7e2Nhc2VGbGFnU3RhdHVzRW51bVtzdGF0dXNdIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2ZpZWxkc2V0PlxuXG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgIHt7dXBkYXRlRmxhZ1N0ZXBFbnVtLlNUQVRVU19ISU5UX1RFWFQgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwZGF0ZUZsYWdTdGF0dXNSZWFzb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGlkPVwidHJhbnNsYXRpb24tY2hlY2tib3gtY29udGFpbmVyXCIgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNlwiICpuZ0lmPVwiaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNcIiBkYXRhLW1vZHVsZT1cImdvdnVrLWNoZWNrYm94ZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faXRlbVwiPlxuICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstY2hlY2tib3hlc19faW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLklTX1dFTFNIX1RSQU5TTEFUSU9OX05FRURFRFwiXG4gICAgICAgICAgICAgICAgICAgW2lkXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERURcIlxuICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERURcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImdvdnVrLWxhYmVsIGdvdnVrLWNoZWNrYm94ZXNfX2xhYmVsXCJcbiAgICAgICAgICAgICAgICAgICBbZm9yXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERURcIj5cbiAgICAgICAgICAgICAge3snSSBuZWVkIHRvIGFkZCBhIHRyYW5zbGF0aW9uJyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGlkPVwiZmxhZy1zdGF0dXMtY29udGFpbmVyLXYxXCIgY2xhc3M9XCJnb3Z1ay1ncmlkLXJvd1wiICpuZ0lmPVwiaW50ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtaGFsZlwiPlxuICAgICAgICAgIDxwPnt7J0ZsYWcgc3RhdHVzOicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJnb3Z1ay10YWdcIiBbbmdDbGFzc109XCJ7J2dvdnVrLXRhZy0tZ3JleSc6IHNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9PT0gJ0luYWN0aXZlJ31cIj5cbiAgICAgICAgICAgICAgICB7e3NlbGVjdGVkRmxhZz8uZmxhZ0RldGFpbERpc3BsYXk/LmZsYWdEZXRhaWw/LnN0YXR1cyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1ncmlkLWNvbHVtbi1vbmUtaGFsZlwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25NYWtlSW5hY3RpdmUoKVwiICpuZ0lmPVwic2VsZWN0ZWRGbGFnLmZsYWdEZXRhaWxEaXNwbGF5LmZsYWdEZXRhaWwuc3RhdHVzID09PSAnQWN0aXZlJ1wiPlxuICAgICAgICAgICAge3snTWFrZSBpbmFjdGl2ZScgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPiJdfQ==
509
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(UpdateFlagComponent, { className: "UpdateFlagComponent", filePath: "lib/shared/components/palette/case-flag/components/update-flag/update-flag.component.ts", lineNumber: 20 }); })();
510
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWZsYWcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2NkLWNhc2UtdWktdG9vbGtpdC9zcmMvbGliL3NoYXJlZC9jb21wb25lbnRzL3BhbGV0dGUvY2FzZS1mbGFnL2NvbXBvbmVudHMvdXBkYXRlLWZsYWcvdXBkYXRlLWZsYWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRzVELE9BQU8sRUFDTCwrQkFBK0IsRUFDL0Isa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsdUJBQXVCLEVBQ3ZCLHNCQUFzQixFQUN0QixjQUFjLEVBQ2YsTUFBTSxhQUFhLENBQUM7Ozs7OztJQ0xmLCtCQUFrRjtJQUNoRixZQUNGOztJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUsbU1BQ0Y7OztJQVVFLCtCQUEyRjtJQUN6RixZQUNGOztJQUFBLGlCQUFNOzs7SUFESixjQUNGO0lBREUsMkdBQ0Y7OztJQVdJLEFBREYsK0JBQWtHLGVBQ3RDO0lBQUEsaUJBQUM7SUFBQSxpQkFBTztJQUVoRSxBQURGLGtDQUF5QyxlQUNLO0lBQUEsWUFBNEI7O0lBQUEs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QUFRLEtBQUM7WUFDckYsYUFDRjs7WUFDRixBQURFLGlCQUFTLEVBQ0w7OztZQXJKUSx5Q0FBdUI7WUFFSCxlQUEwRDtZQUExRCxtRkFBMEQ7WUFHbEYsZUFDRjtZQURFLDJFQUNGO1lBRXNELGVBQXdCO1lBQXhCLDZDQUF3QjtZQUtwQyxlQUFtQztZQUFuQyxxREFBbUM7WUFDM0UsY0FLRjtZQUxFLHlOQUtGO1lBQ2lFLGVBQXdCO1lBQXhCLDZDQUF3QjtZQUcxRSxjQUNiO1lBQUEsQUFEYSwySEFDYiw2QkFBaUI7WUEyRGlELGVBQXNDO1lBQXRDLDJEQUFzQztZQTJCbEMsY0FBc0M7WUFBdEMsMkRBQXNDO1lBZXJELGNBQXdCO1lBQXhCLDZDQUF3QjtZQXNCckYsZUFDRjtZQURFLCtEQUNGOzs7aUZEaklXLG1CQUFtQjtjQUovQixTQUFTOzJCQUNFLGlCQUFpQjtzREFJWCxTQUFTO2tCQUF4QixLQUFLO1lBQ1UsdUJBQXVCO2tCQUF0QyxLQUFLO1lBRVcsb0JBQW9CO2tCQUFwQyxNQUFNOztrRkFKSSxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUnB4VHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAncnB4LXh1aS10cmFuc2xhdGlvbic7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ2FzZUZsYWdTdGF0ZSwgRmxhZ0RldGFpbCwgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aCB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQge1xuICBDYXNlRmxhZ0Rpc3BsYXlDb250ZXh0UGFyYW1ldGVyLFxuICBDYXNlRmxhZ0ZpZWxkU3RhdGUsXG4gIENhc2VGbGFnRm9ybUZpZWxkcyxcbiAgQ2FzZUZsYWdTdGF0dXMsXG4gIENhc2VGbGFnV2l6YXJkU3RlcFRpdGxlLFxuICBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLFxuICBVcGRhdGVGbGFnU3RlcFxufSBmcm9tICcuLi8uLi9lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC11cGRhdGUtZmxhZycsXG4gIHRlbXBsYXRlVXJsOiAnLi91cGRhdGUtZmxhZy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXBkYXRlRmxhZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgcHVibGljIGRpc3BsYXlDb250ZXh0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjYXNlRmxhZ1N0YXRlRW1pdHRlcjogRXZlbnRFbWl0dGVyPENhc2VGbGFnU3RhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxDYXNlRmxhZ1N0YXRlPigpO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEZsYWc6IEZsYWdEZXRhaWxEaXNwbGF5V2l0aEZvcm1Hcm91cFBhdGg7XG4gIHB1YmxpYyB1cGRhdGVGbGFnVGl0bGUgPSAnJztcbiAgcHVibGljIGVycm9yTWVzc2FnZXM6IEVycm9yTWVzc2FnZVtdID0gW107XG4gIHB1YmxpYyBjb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2U6IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgY29tbWVudHNDaGFyTGltaXRFcnJvck1lc3NhZ2U6IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZTogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZSA9IG51bGw7XG4gIHB1YmxpYyBzdGF0dXNSZWFzb25DaGFyTGltaXRFcnJvck1lc3NhZ2U6IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UgPSBudWxsO1xuICBwdWJsaWMgdXBkYXRlRmxhZ1N0ZXBFbnVtID0gVXBkYXRlRmxhZ1N0ZXA7XG4gIHB1YmxpYyB2YWxpZFN0YXR1c1Byb2dyZXNzaW9uczogc3RyaW5nW107XG4gIHB1YmxpYyByZWFkb25seSBjYXNlRmxhZ1N0YXR1c0VudW0gPSBDYXNlRmxhZ1N0YXR1cztcbiAgcHVibGljIHJlYWRvbmx5IGNhc2VGbGFnRm9ybUZpZWxkcyA9IENhc2VGbGFnRm9ybUZpZWxkcztcbiAgcHJpdmF0ZSByZWFkb25seSB0ZXh0TWF4Q2hhckxpbWl0ID0gMjAwO1xuICBwcml2YXRlIHJlYWRvbmx5IHNlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uID0gJ3NlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uJztcbiAgcHJpdmF0ZSBmbGFnRGV0YWlsOiBGbGFnRGV0YWlsO1xuICBwdWJsaWMgY2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXI7XG4gIHB1YmxpYyBleHRlcm5hbFVzZXJVcGRhdGUgPSBmYWxzZTtcbiAgcHVibGljIGludGVybmFsVXNlclVwZGF0ZSA9IGZhbHNlO1xuICBwdWJsaWMgaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGUgPSBmYWxzZTtcblxuICBwdWJsaWMgZ2V0IGV4dGVybmFsbHlWaXNpYmxlRmxhZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkudmlzaWJpbGl0eT8udG9Mb3dlckNhc2UoKSA9PT0gJ2V4dGVybmFsJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcnB4VHJhbnNsYXRpb25TZXJ2aWNlOiBScHhUcmFuc2xhdGlvblNlcnZpY2UpIHsgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBTZXQgd2hldGhlciB0aGlzIGlzIGFuIGV4dGVybmFsLCBpbnRlcm5hbCwgb3IgaW50ZXJuYWwgQ2FzZSBGbGFncyB2Mi4xIGVuYWJsZWQgdXNlciB1cGRhdGVcbiAgICB0aGlzLmV4dGVybmFsVXNlclVwZGF0ZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFX0VYVEVSTkFMO1xuICAgIHRoaXMuaW50ZXJuYWxVc2VyVXBkYXRlID0gdGhpcy5kaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU7XG4gICAgdGhpcy5pbnRlcm5hbFVzZXIyUG9pbnQxRW5hYmxlZFVwZGF0ZSA9IHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIgPT09IENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTtcbiAgICB0aGlzLnNlbGVjdGVkRmxhZyA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLnNlbGVjdGVkTWFuYWdlQ2FzZUxvY2F0aW9uKT8udmFsdWUgYXMgRmxhZ0RldGFpbERpc3BsYXlXaXRoRm9ybUdyb3VwUGF0aDtcbiAgICBpZiAodGhpcy5zZWxlY3RlZEZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsKSB7XG4gICAgICB0aGlzLmZsYWdEZXRhaWwgPSB0aGlzLnNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsO1xuICAgICAgLy8gSWYgcHJlc2VudCwgdXNlIHRoZSAqb3JpZ2luYWwqIGZsYWcgc3RhdHVzLCBub3QgdGhlIG9uZSBpbiB0aGUgZmxhZ0RldGFpbCBvYmplY3QsIGJlY2F1c2UgdGhlIHN0YXR1cyBjb3VsZCBoYXZlXG4gICAgICAvLyBiZWVuIG1vZGlmaWVkIHZpYSBhIHByZXZpb3VzIFwiVXBkYXRlIEZsYWdcIiBqb3VybmV5IHRocm91Z2ggdGhlIFVJIGJ1dCBub3QgcGVyc2lzdGVkIHlldCAodGh1cyBub3QgdGhlICp0cnVlKiBmbGFnXG4gICAgICAvLyBzdGF0dXMpLiBPdGhlcndpc2UsIHVzZSB0aGUgc3RhdHVzIGZyb20gdGhlIGZsYWdEZXRhaWwgb2JqZWN0IChpbml0aWFsbHksIHRoZSBvcmlnaW5hbCBmbGFnIHN0YXR1cyB3b24ndCBiZVxuICAgICAgLy8gcHJlc2VudCBiZWNhdXNlIGl0IGdldHMgY2FjaGVkIG9ubHkgb24gZmlyc3QgdXBkYXRlIGJ5IFdyaXRlQ2FzZUZsYWdGaWVsZENvbXBvbmVudClcbiAgICAgIGNvbnN0IGN1cnJlbnRGbGFnU3RhdHVzS2V5ID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbmQoXG4gICAgICAgIChrZXkpID0+IENhc2VGbGFnU3RhdHVzW2tleV0gPT09ICh0aGlzLnNlbGVjdGVkRmxhZy5vcmlnaW5hbFN0YXR1cyB8fCB0aGlzLmZsYWdEZXRhaWwuc3RhdHVzKSk7XG5cbiAgICAgIC8vIFBvcHVsYXRlIGZsYWcgY29tbWVudHMgdGV4dCBhcmVhIHdpdGggZXhpc3RpbmcgY29tbWVudHM7IHVzZSB0aGUgY29tbWVudHMgYXBwcm9wcmlhdGUgZm9yIHRoZSBzZWxlY3RlZCBsYW5ndWFnZSxcbiAgICAgIC8vIGZhbGxpbmcgYmFjayBvbiB0aGVpciBhbHRlcm5hdGUgY291bnRlcnBhcnQgaWYgbm9uZSBhcmUgYXZhaWxhYmxlLiBDb21tZW50cyBhcmUgdG8gYmUgcG9wdWxhdGVkIG9uZSB0aW1lIG9ubHkgLVxuICAgICAgLy8gd2hlbiB0aGUgdXNlciBmaXJzdCB2aXNpdHMgdGhlIHBhZ2UgLSBldmVuIGlmIHRoZXkgc3dpdGNoIGxhbmd1YWdlIHN1YnNlcXVlbnRseVxuICAgICAgbGV0IGV4aXN0aW5nQ29tbWVudHM6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLnJweFRyYW5zbGF0aW9uU2VydmljZS5sYW5ndWFnZSA9PT0gJ2N5Jykge1xuICAgICAgICBleGlzdGluZ0NvbW1lbnRzID0gdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5IHx8IHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4aXN0aW5nQ29tbWVudHMgPSB0aGlzLmZsYWdEZXRhaWwuZmxhZ0NvbW1lbnQgfHwgdGhpcy5mbGFnRGV0YWlsLmZsYWdDb21tZW50X2N5O1xuICAgICAgfVxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFMsIG5ldyBGb3JtQ29udHJvbChleGlzdGluZ0NvbW1lbnRzKSk7XG4gICAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMsIG5ldyBGb3JtQ29udHJvbChjdXJyZW50RmxhZ1N0YXR1c0tleSkpO1xuICAgICAgLy8gUG9wdWxhdGUgc3RhdHVzIHJlYXNvbiBvbmx5IGlmIHRoZSB1c2VyIGlzIG5vdCBleHRlcm5hbFxuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT04sIG5ldyBGb3JtQ29udHJvbChcbiAgICAgICAgdGhpcy5leHRlcm5hbFVzZXJVcGRhdGUgPyAnJyA6IHRoaXMuZmxhZ0RldGFpbC5mbGFnVXBkYXRlQ29tbWVudCkpO1xuICAgICAgdGhpcy5mb3JtR3JvdXAuYWRkQ29udHJvbChDYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVELCBuZXcgRm9ybUNvbnRyb2woZmFsc2UpKTtcblxuICAgICAgdGhpcy51cGRhdGVGbGFnVGl0bGUgPSB0aGlzLnNldFVwZGF0ZUNhc2VGbGFnVGl0bGUodGhpcy5mbGFnRGV0YWlsKTtcblxuICAgICAgLy8gU2V0IHRoZSB2YWxpZCBzdGF0dXMgb3B0aW9ucyBmb3IgZGlzcGxheSwgYmFzZWQgb24gY3VycmVudCBzdGF0dXMgb2YgdGhlIHNlbGVjdGVkIGZsYWcuIFwiQWN0aXZlXCIgZmxhZ3MgY2FuXG4gICAgICAvLyByZW1haW4gXCJBY3RpdmVcIiBvciBtb3ZlIHRvIFwiSW5hY3RpdmVcIiBvbmx5OyBcIlJlcXVlc3RlZFwiIGZsYWdzIGNhbiByZW1haW4gXCJSZXF1ZXN0ZWRcIiBvciBtb3ZlIHRvIFwiQWN0aXZlXCIsXG4gICAgICAvLyBcIkluYWN0aXZlXCIsIG9yIFwiTm90IGFwcHJvdmVkXCIuIE5vIG90aGVyIHN0YXR1cyBwcm9ncmVzc2lvbnMgYXJlIHZhbGlkXG4gICAgICBpZiAoY3VycmVudEZsYWdTdGF0dXNLZXkpIHtcbiAgICAgICAgc3dpdGNoIChjdXJyZW50RmxhZ1N0YXR1c0tleSkge1xuICAgICAgICAgIGNhc2UgJ0FDVElWRSc6XG4gICAgICAgICAgICB0aGlzLnZhbGlkU3RhdHVzUHJvZ3Jlc3Npb25zID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbHRlcigoa2V5KSA9PiAhWydSRVFVRVNURUQnLCAnTk9UX0FQUFJPVkVEJ10uaW5jbHVkZXMoa2V5KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdSRVFVRVNURUQnOlxuICAgICAgICAgICAgdGhpcy52YWxpZFN0YXR1c1Byb2dyZXNzaW9ucyA9IE9iamVjdC5rZXlzKENhc2VGbGFnU3RhdHVzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aGlzLnZhbGlkU3RhdHVzUHJvZ3Jlc3Npb25zID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXBkYXRlQ2FzZUZsYWdUaXRsZShmbGFnRGV0YWlsOiBGbGFnRGV0YWlsKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuZGlzcGxheUNvbnRleHRQYXJhbWV0ZXIpIHtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEU6XG4gICAgICBjYXNlIENhc2VGbGFnRGlzcGxheUNvbnRleHRQYXJhbWV0ZXIuVVBEQVRFXzJfUE9JTlRfMTpcbiAgICAgICAgaWYgKGZsYWdEZXRhaWw/Lm5hbWUpIHtcbiAgICAgICAgICBjb25zdCBzdWJUeXBlVmFsdWUgPSBmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZSB8fCBmbGFnRGV0YWlsLnN1YlR5cGVWYWx1ZV9jeVxuICAgICAgICAgICAgPyBgLCAke2ZsYWdEZXRhaWwuc3ViVHlwZVZhbHVlIHx8IGZsYWdEZXRhaWwuc3ViVHlwZVZhbHVlX2N5fWBcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgY29uc3Qgb3RoZXJEZXNjcmlwdGlvbiA9IGZsYWdEZXRhaWwub3RoZXJEZXNjcmlwdGlvbiB8fCBmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb25fY3lcbiAgICAgICAgICAgID8gYCwgJHtmbGFnRGV0YWlsLm90aGVyRGVzY3JpcHRpb24gfHwgZmxhZ0RldGFpbC5vdGhlckRlc2NyaXB0aW9uX2N5fWBcbiAgICAgICAgICAgIDogJyc7XG4gICAgICAgICAgcmV0dXJuIHN1YlR5cGVWYWx1ZVxuICAgICAgICAgICAgPyBgJHtDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5VUERBVEVfRkxBR19USVRMRX0gXCIke2ZsYWdEZXRhaWwubmFtZX0ke3N1YlR5cGVWYWx1ZX1cImBcbiAgICAgICAgICAgIDogYCR7Q2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEV9IFwiJHtmbGFnRGV0YWlsLm5hbWV9JHtvdGhlckRlc2NyaXB0aW9ufVwiYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7Q2FzZUZsYWdXaXphcmRTdGVwVGl0bGUuVVBEQVRFX0ZMQUdfVElUTEV9YDtcbiAgICAgIGNhc2UgQ2FzZUZsYWdEaXNwbGF5Q29udGV4dFBhcmFtZXRlci5VUERBVEVfRVhURVJOQUw6XG4gICAgICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5VUERBVEVfRkxBR19USVRMRV9FWFRFUk5BTDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBDYXNlRmxhZ1dpemFyZFN0ZXBUaXRsZS5OT05FO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbk5leHQoKTogdm9pZCB7XG4gICAgLy8gVmFsaWRhdGUgZmxhZyBjb21tZW50cyBhbmQgc3RhdHVzIHJlYXNvbiBlbnRyeVxuICAgIHRoaXMudmFsaWRhdGVUZXh0RW50cnkoKTtcblxuICAgIC8vIFNldCBzZWxlY3RlZCBmbGFnIHN0YXR1cyB0byBcIkluYWN0aXZlXCIgaWYgdXBkYXRlIGlzIGJ5IGV4dGVybmFsIHVzZXJcbiAgICBpZiAodGhpcy5leHRlcm5hbFVzZXJVcGRhdGUpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTKT8uc2V0VmFsdWUoT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpWzJdKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gY2FzZSBmbGFnIGZpZWxkIHN0YXRlLCBlcnJvciBtZXNzYWdlcywgYW5kIHNlbGVjdGVkIGZsYWcgZGV0YWlsIHRvIHRoZSBwYXJlbnQuIFRoZSBzZWxlY3RlZCBmbGFnIG11c3QgYmVcbiAgICAvLyByZS1lbWl0dGVkIGJlY2F1c2UgdGhlIHBhcmVudCBjb21wb25lbnQgcmVwb3B1bGF0ZXMgdGhpcyBvbiBoYW5kbGluZyB0aGlzIEV2ZW50RW1pdHRlclxuICAgIHRoaXMuY2FzZUZsYWdTdGF0ZUVtaXR0ZXIuZW1pdCh7XG4gICAgICBjdXJyZW50Q2FzZUZsYWdGaWVsZFN0YXRlOiBDYXNlRmxhZ0ZpZWxkU3RhdGUuRkxBR19VUERBVEUsXG4gICAgICBlcnJvck1lc3NhZ2VzOiB0aGlzLmVycm9yTWVzc2FnZXMsXG4gICAgICBzZWxlY3RlZEZsYWc6IHRoaXMuc2VsZWN0ZWRGbGFnLFxuICAgIH0pO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuICB9XG5cbiAgcHVibGljIG9uTWFrZUluYWN0aXZlKCk6IHZvaWQge1xuICAgIC8vIFNldCBzZWxlY3RlZCBmbGFnIHN0YXR1cyB0byBcIkluYWN0aXZlXCIgb24gc2NyZWVuIGFuZCBpbiB0aGUgRm9ybUdyb3VwXG4gICAgdGhpcy5zZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXMgPSBDYXNlRmxhZ1N0YXR1cy5JTkFDVElWRTtcbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVUyk/LnNldFZhbHVlKE9iamVjdC5rZXlzKENhc2VGbGFnU3RhdHVzKVsyXSk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlVGV4dEVudHJ5KCk6IHZvaWQge1xuICAgIHRoaXMuY29tbWVudHNOb3RFbnRlcmVkRXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmNvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLnN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBudWxsO1xuICAgIHRoaXMuc3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlID0gbnVsbDtcbiAgICB0aGlzLmVycm9yTWVzc2FnZXMgPSBbXTtcbiAgICAvLyBWYWxpZGF0aW9uIHNob3VsZCBmYWlsIGlmIHRoZSBmbGFnIGhhcyBhbiBleGlzdGluZyBjb21tZW50IGFuZCBpdCBoYXMgYmVlbiBkZWxldGVkIG9uIHNjcmVlbjsgY29udmVyc2VseSwgaWYgdGhlcmVcbiAgICAvLyBpcyBubyBleGlzdGluZyBjb21tZW50IHRoZW4gb25lIGlzIG5vdCByZXF1aXJlZCBmb3IgdmFsaWRhdGlvbiB0byBwYXNzXG4gICAgY29uc3QgY29tbWVudCA9IHRoaXMuZm9ybUdyb3VwLmdldChDYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFMpPy52YWx1ZTtcbiAgICBpZiAoIWNvbW1lbnQgJiYgKHRoaXMuZmxhZ0RldGFpbC5mbGFnQ29tbWVudCB8fCB0aGlzLmZsYWdEZXRhaWwuZmxhZ0NvbW1lbnRfY3kpKSB7XG4gICAgICB0aGlzLmNvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9ICF0aGlzLmRpc3BsYXlDb250ZXh0UGFyYW1ldGVyXG4gICAgICAgID8gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5OT05FXG4gICAgICAgIDogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5GTEFHX0NPTU1FTlRTX05PVF9FTlRFUkVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmNvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZSxcbiAgICAgICAgZmllbGRJZDogQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29tbWVudCAmJiBjb21tZW50Lmxlbmd0aCA+IHRoaXMudGV4dE1heENoYXJMaW1pdCkge1xuICAgICAgdGhpcy5jb21tZW50c0NoYXJMaW1pdEVycm9yTWVzc2FnZSA9IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuRkxBR19DT01NRU5UU19DSEFSX0xJTUlUX0VYQ0VFREVEO1xuICAgICAgdGhpcy5lcnJvck1lc3NhZ2VzLnB1c2goe1xuICAgICAgICB0aXRsZTogJycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLkZMQUdfQ09NTUVOVFNfQ0hBUl9MSU1JVF9FWENFRURFRCxcbiAgICAgICAgZmllbGRJZDogQ2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0dXNSZWFzb24gPSB0aGlzLmZvcm1Hcm91cC5nZXQoQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OKT8udmFsdWU7XG4gICAgY29uc3QgZmxhZ1N0YXR1c05vdEFwcHJvdmVkS2V5ID0gT2JqZWN0LmtleXMoQ2FzZUZsYWdTdGF0dXMpLmZpbmQoKGtleSkgPT4gQ2FzZUZsYWdTdGF0dXNba2V5XSA9PT0gQ2FzZUZsYWdTdGF0dXMuTk9UX0FQUFJPVkVEKTtcbiAgICAvLyBTdGF0dXMgcmVhc29uIGlzIG1hbmRhdG9yeSBpZiBmbGFnIHN0YXR1cyBpcyBcIk5vdCBhcHByb3ZlZFwiIG9yIHVzZXIgaXMgZXh0ZXJuYWxcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KENhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMpPy52YWx1ZSA9PT0gZmxhZ1N0YXR1c05vdEFwcHJvdmVkS2V5ICYmICFzdGF0dXNSZWFzb24pIHtcbiAgICAgIHRoaXMuc3RhdHVzUmVhc29uTm90RW50ZXJlZEVycm9yTWVzc2FnZSA9IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9OT1RfRU5URVJFRDtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlcy5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX05PVF9FTlRFUkVELFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmV4dGVybmFsVXNlclVwZGF0ZSAmJiAhc3RhdHVzUmVhc29uKSB7XG4gICAgICB0aGlzLnN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2UgPSBVcGRhdGVGbGFnRXJyb3JNZXNzYWdlLlNUQVRVU19SRUFTT05fTk9UX0VOVEVSRURfRVhURVJOQUw7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9OT1RfRU5URVJFRF9FWFRFUk5BTCxcbiAgICAgICAgZmllbGRJZDogQ2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc3RhdHVzUmVhc29uICYmIHN0YXR1c1JlYXNvbi5sZW5ndGggPiB0aGlzLnRleHRNYXhDaGFyTGltaXQpIHtcbiAgICAgIHRoaXMuc3RhdHVzUmVhc29uQ2hhckxpbWl0RXJyb3JNZXNzYWdlID0gVXBkYXRlRmxhZ0Vycm9yTWVzc2FnZS5TVEFUVVNfUkVBU09OX0NIQVJfTElNSVRfRVhDRUVERUQ7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZXMucHVzaCh7XG4gICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgZGVzY3JpcHRpb246IFVwZGF0ZUZsYWdFcnJvck1lc3NhZ2UuU1RBVFVTX1JFQVNPTl9DSEFSX0xJTUlUX0VYQ0VFREVELFxuICAgICAgICBmaWVsZElkOiBDYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTX0NIQU5HRV9SRUFTT05cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiZ292dWstY2hhcmFjdGVyLWNvdW50XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1jaGFyYWN0ZXItY291bnRcIiBkYXRhLW1heGxlbmd0aD1cIjIwMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1mb3JtLWdyb3VwXCIgW25nQ2xhc3NdPVwieydmb3JtLWdyb3VwLWVycm9yJzogZXJyb3JNZXNzYWdlcy5sZW5ndGggPiAwfVwiPlxuICAgICAgPGgxIGNsYXNzPVwiZ292dWstbGFiZWwtd3JhcHBlciBnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tbVwiPlxuICAgICAgICAgIHt7dXBkYXRlRmxhZ1RpdGxlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgIDwvaDE+XG4gICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctaGludC1leHRlcm5hbFwiIGNsYXNzPVwiZ292dWstaGludFwiICpuZ0lmPVwiZXh0ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgIHt7c2VsZWN0ZWRGbGFnPy5mbGFnRGV0YWlsRGlzcGxheT8uZmxhZ0RldGFpbCB8IHVwZGF0ZUZsYWdUaXRsZURpc3BsYXl9fVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1sYWJlbC0tc1wiIFtmb3JdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCI+XG4gICAgICAgICAge3tcbiAgICAgICAgICAgIGV4dGVybmFsVXNlclVwZGF0ZVxuICAgICAgICAgICAgICA/ICh1cGRhdGVGbGFnU3RlcEVudW0uQ09NTUVOVF9GSUVMRF9MQUJFTF9FWFRFUk5BTCB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgOiAodXBkYXRlRmxhZ1RpdGxlIHwgcnB4VHJhbnNsYXRlKSArICgnIGNvbW1lbnRzJyB8IHJweFRyYW5zbGF0ZSlcbiAgICAgICAgICB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludC1leHRlcm5hbFwiIGNsYXNzPVwiZ292dWstaGludFwiICpuZ0lmPVwiZXh0ZXJuYWxVc2VyVXBkYXRlXCI+XG4gICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uQ09NTUVOVF9ISU5UX1RFWFRfRVhURVJOQUwgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImludGVybmFsVXNlclVwZGF0ZSB8fCBpbnRlcm5hbFVzZXIyUG9pbnQxRW5hYmxlZFVwZGF0ZSB8fCBkaXNwbGF5Q29udGV4dFBhcmFtZXRlciA9PT0gJyc7XG4gICAgICAgICAgZWxzZSBleHRlcm5hbFVzZXJcIj5cbiAgICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludFwiIGNsYXNzPVwiZ292dWstaGludFwiPlxuICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgaW50ZXJuYWxVc2VyVXBkYXRlXG4gICAgICAgICAgICAgICAgPyAodXBkYXRlRmxhZ1N0ZXBFbnVtLkNPTU1FTlRfSElOVF9URVhUX0lOVEVSTkFMIHwgcnB4VHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIDogKHVwZGF0ZUZsYWdTdGVwRW51bS5DT01NRU5UX0hJTlRfVEVYVF9JTlRFUk5BTF8yX1BPSU5UXzEgfCBycHhUcmFuc2xhdGUpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRcIiAqbmdJZj1cImludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlICYmIGV4dGVybmFsbHlWaXNpYmxlRmxhZ1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJnb3Z1ay13YXJuaW5nLXRleHRfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj4hPC9zcGFuPlxuICAgICAgICAgICAgPHN0cm9uZyBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fdGV4dFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXdhcm5pbmctdGV4dF9fYXNzaXN0aXZlXCI+e3snV2FybmluZycgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uV0FSTklOR19URVhUIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1ub3QtZW50ZXJlZC1lcnJvci1tZXNzYWdlXCIgY2xhc3M9XCJnb3Z1ay1lcnJvci1tZXNzYWdlXCIgKm5nSWY9XCJjb21tZW50c05vdEVudGVyZWRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e2NvbW1lbnRzTm90RW50ZXJlZEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBpZD1cInVwZGF0ZS1mbGFnLWNvbW1lbnRzLWNoYXItbGltaXQtZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cImNvbW1lbnRzQ2hhckxpbWl0RXJyb3JNZXNzYWdlXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tjb21tZW50c0NoYXJMaW1pdEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZ292dWstdGV4dGFyZWFcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCJcbiAgICAgICAgICAgICAgICAgICAgW25hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLkNPTU1FTlRTXCJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuQ09NTUVOVFNcIlxuICAgICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJ1cGRhdGUtZmxhZy1jb21tZW50cy1oaW50IHVwZGF0ZS1mbGFnLWNvbW1lbnRzLWNoYXItbGltaXQtaW5mbyB1cGRhdGUtZmxhZy1jb21tZW50cy1jaGFyLWxpbWl0LWVycm9yXCI+XG4gICAgICAgICAgPC90ZXh0YXJlYT5cbiAgICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctY29tbWVudHMtY2hhci1saW1pdC1pbmZvXCIgY2xhc3M9XCJnb3Z1ay1oaW50IGdvdnVrLWNoYXJhY3Rlci1jb3VudF9fbWVzc2FnZVwiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAge3t1cGRhdGVGbGFnU3RlcEVudW0uQ0hBUkFDVEVSX0xJTUlUX0lORk8gfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNleHRlcm5hbFVzZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4dGVybmFsVXNlclVwZGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwZGF0ZUZsYWdTdGF0dXNSZWFzb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3VwZGF0ZUZsYWdTdGF0dXNSZWFzb24+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLW5vdC1lbnRlcmVkLWVycm9yLW1lc3NhZ2VcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN0YXR1c1JlYXNvbk5vdEVudGVyZWRFcnJvck1lc3NhZ2VcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImdvdnVrLXZpc3VhbGx5LWhpZGRlblwiPnt7J0Vycm9yOicgfCBycHhUcmFuc2xhdGV9fTwvc3Bhbj4ge3tzdGF0dXNSZWFzb25Ob3RFbnRlcmVkRXJyb3JNZXNzYWdlIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtZXJyb3JcIiBjbGFzcz1cImdvdnVrLWVycm9yLW1lc3NhZ2VcIiAqbmdJZj1cInN0YXR1c1JlYXNvbkNoYXJMaW1pdEVycm9yTWVzc2FnZVwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZ292dWstdmlzdWFsbHktaGlkZGVuXCI+e3snRXJyb3I6JyB8IHJweFRyYW5zbGF0ZX19PC9zcGFuPiB7e3N0YXR1c1JlYXNvbkNoYXJMaW1pdEVycm9yTWVzc2FnZSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJnb3Z1ay10ZXh0YXJlYVwiXG4gICAgICAgICAgICAgICAgICBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU19DSEFOR0VfUkVBU09OXCJcbiAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlwiXG4gICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNfQ0hBTkdFX1JFQVNPTlwiXG4gICAgICAgICAgICAgICAgICByb3dzPVwiNVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwidXBkYXRlLWZsYWctY29tbWVudHMtaGludC1leHRlcm5hbCB1cGRhdGUtZmxhZy1zdGF0dXMtaGludCB1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtaW5mb1xuICAgICAgICAgICAgICAgICAgdXBkYXRlLWZsYWctc3RhdHVzLXJlYXNvbi1jaGFyLWxpbWl0LWVycm9yXCI+XG4gICAgICAgIDwvdGV4dGFyZWE+XG4gICAgICAgIDxkaXYgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtcmVhc29uLWNoYXItbGltaXQtaW5mb1wiIGNsYXNzPVwiZ292dWstaGludCBnb3Z1ay1jaGFyYWN0ZXItY291bnRfX21lc3NhZ2VcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cbiAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5DSEFSQUNURVJfTElNSVRfSU5GTyB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPGRpdiBpZD1cImZsYWctc3RhdHVzLWNvbnRhaW5lci12Ml8xXCIgY2xhc3M9XCJnb3Z1ay0hLW1hcmdpbi1ib3R0b20tNFwiICpuZ0lmPVwiaW50ZXJuYWxVc2VyMlBvaW50MUVuYWJsZWRVcGRhdGVcIj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwiZ292dWstZmllbGRzZXRcIiBhcmlhLWRlc2NyaWJlZGJ5PVwidXBkYXRlLWZsYWctc3RhdHVzLWhlYWRpbmdcIj5cbiAgICAgICAgICA8bGVnZW5kIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2xlZ2VuZCBnb3Z1ay1maWVsZHNldF9fbGVnZW5kLS1zXCI+XG4gICAgICAgICAgICA8aDEgaWQ9XCJ1cGRhdGUtZmxhZy1zdGF0dXMtaGVhZGluZ1wiIGNsYXNzPVwiZ292dWstZmllbGRzZXRfX2hlYWRpbmdcIj5cbiAgICAgICAgICAgICAge3t1cGRhdGVGbGFnVGl0bGUgfCBycHhUcmFuc2xhdGV9fSB7eydzdGF0dXMnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgPC9sZWdlbmQ+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvcyBnb3Z1ay1yYWRpb3MtLWNvbmRpdGlvbmFsIGdvdnVrLSEtbWFyZ2luLWJvdHRvbS00XCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1yYWRpb3NcIiBbaWRdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLXJhZGlvc19faXRlbVwiICpuZ0Zvcj1cImxldCBzdGF0dXMgb2YgdmFsaWRTdGF0dXNQcm9ncmVzc2lvbnNcIj5cbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZ292dWstcmFkaW9zX19pbnB1dFwiIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVMgKyAnXycgKyBzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtuYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5TVEFUVVNcIlxuICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY2FzZUZsYWdGb3JtRmllbGRzLlNUQVRVU1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInN0YXR1c1wiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1yYWRpb3NfX2xhYmVsXCIgW2Zvcl09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuU1RBVFVTICsgJ18nICsgc3RhdHVzXCI+XG4gICAgICAgICAgICAgICAge3tjYXNlRmxhZ1N0YXR1c0VudW1bc3RhdHVzXSB8IHJweFRyYW5zbGF0ZX19XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9maWVsZHNldD5cblxuICAgICAgICA8ZGl2IGlkPVwidXBkYXRlLWZsYWctc3RhdHVzLWhpbnRcIiBjbGFzcz1cImdvdnVrLWhpbnRcIj5cbiAgICAgICAgICB7e3VwZGF0ZUZsYWdTdGVwRW51bS5TVEFUVVNfSElOVF9URVhUIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGRhdGVGbGFnU3RhdHVzUmVhc29uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cInRyYW5zbGF0aW9uLWNoZWNrYm94LWNvbnRhaW5lclwiIGNsYXNzPVwiZ292dWstIS1tYXJnaW4tYm90dG9tLTZcIiAqbmdJZj1cImludGVybmFsVXNlcjJQb2ludDFFbmFibGVkVXBkYXRlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJnb3Z1ay1jaGVja2JveGVzXCIgZGF0YS1tb2R1bGU9XCJnb3Z1ay1jaGVja2JveGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2l0ZW1cIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImdvdnVrLWNoZWNrYm94ZXNfX2lucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cImNhc2VGbGFnRm9ybUZpZWxkcy5JU19XRUxTSF9UUkFOU0xBVElPTl9ORUVERURcIlxuICAgICAgICAgICAgICAgICAgIFtpZF09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCJcbiAgICAgICAgICAgICAgICAgICBbbmFtZV09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJnb3Z1ay1sYWJlbCBnb3Z1ay1jaGVja2JveGVzX19sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgW2Zvcl09XCJjYXNlRmxhZ0Zvcm1GaWVsZHMuSVNfV0VMU0hfVFJBTlNMQVRJT05fTkVFREVEXCI+XG4gICAgICAgICAgICAgIHt7J0kgbmVlZCB0byBhZGQgYSB0cmFuc2xhdGlvbicgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cImZsYWctc3RhdHVzLWNvbnRhaW5lci12MVwiIGNsYXNzPVwiZ292dWstZ3JpZC1yb3dcIiAqbmdJZj1cImludGVybmFsVXNlclVwZGF0ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tb25lLWhhbGZcIj5cbiAgICAgICAgICA8cD57eydGbGFnIHN0YXR1czonIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8c3Ryb25nIGNsYXNzPVwiZ292dWstdGFnXCIgW25nQ2xhc3NdPVwieydnb3Z1ay10YWctLWdyZXknOiBzZWxlY3RlZEZsYWcuZmxhZ0RldGFpbERpc3BsYXkuZmxhZ0RldGFpbC5zdGF0dXMgPT09ICdJbmFjdGl2ZSd9XCI+XG4gICAgICAgICAgICAgICAge3tzZWxlY3RlZEZsYWc/LmZsYWdEZXRhaWxEaXNwbGF5Py5mbGFnRGV0YWlsPy5zdGF0dXMgfCBycHhUcmFuc2xhdGV9fVxuICAgICAgICAgICAgICA8L3N0cm9uZz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ292dWstZ3JpZC1jb2x1bW4tb25lLWhhbGZcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnlcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uTWFrZUluYWN0aXZlKClcIiAqbmdJZj1cInNlbGVjdGVkRmxhZy5mbGFnRGV0YWlsRGlzcGxheS5mbGFnRGV0YWlsLnN0YXR1cyA9PT0gJ0FjdGl2ZSdcIj5cbiAgICAgICAgICAgIHt7J01ha2UgaW5hY3RpdmUnIHwgcnB4VHJhbnNsYXRlfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPGRpdiBjbGFzcz1cImdvdnVrLWJ1dHRvbi1ncm91cFwiPlxuICA8YnV0dG9uIGlkPVwidXBkYXRlRmxhZ05leHRCdXR0b25cIiBjbGFzcz1cImdvdnVrLWJ1dHRvblwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25OZXh0KClcIj5cbiAgICB7eydOZXh0JyB8IHJweFRyYW5zbGF0ZX19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=