vcomply-workflow-engine 3.4.23 → 3.4.24

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 (100) hide show
  1. package/esm2020/lib/add-multiple-responsibility/add-multiple-responsibility.component.mjs +2 -4
  2. package/esm2020/lib/add-multiple-risk/add-multiple-risk.component.mjs +2 -3
  3. package/esm2020/lib/formgroup/cs-select/cs-select.component.mjs +5 -5
  4. package/esm2020/lib/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  5. package/esm2020/lib/log-an-issue/log-an-issue.component.mjs +1 -11
  6. package/esm2020/lib/more-option/more-option.component.mjs +5 -6
  7. package/esm2020/lib/pipes/filter.pipe.mjs +1 -2
  8. package/esm2020/lib/pipes/search.pipe.mjs +3 -5
  9. package/esm2020/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.mjs +3 -7
  10. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow-list/approval-workflow-list.component.mjs +1 -5
  11. package/esm2020/lib/sharedComponents/approval-workflow/approval-workflow.component.mjs +1 -7
  12. package/esm2020/lib/sharedComponents/assessment-editor/create-assessment-container/create-assessment-container.component.mjs +80 -36
  13. package/esm2020/lib/sharedComponents/assessment-list/assessment-list.component.mjs +27 -21
  14. package/esm2020/lib/sharedComponents/assessment-preview/preview/preview.component.mjs +7 -4
  15. package/esm2020/lib/sharedComponents/audit-category-list/audit-category-list.component.mjs +3 -4
  16. package/esm2020/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -9
  17. package/esm2020/lib/sharedComponents/bulk-view/bulk-view.component.mjs +9 -7
  18. package/esm2020/lib/sharedComponents/category-multiselect/category-multi-select.component.mjs +6 -8
  19. package/esm2020/lib/sharedComponents/checkpoint/checkpoints/checkpoints.component.mjs +93 -27
  20. package/esm2020/lib/sharedComponents/checkpoint/checkpoints-questions/checkpoints-questions.component.mjs +11 -9
  21. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-container/checkpoints-policy-container.component.mjs +13 -12
  22. package/esm2020/lib/sharedComponents/checkpoint-policy/checkpoints-policy-questions/checkpoints-policy-questions.component.mjs +28 -19
  23. package/esm2020/lib/sharedComponents/floating-bar/floating-bar.component.mjs +8 -8
  24. package/esm2020/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +35 -37
  25. package/esm2020/lib/sharedComponents/framework-list/parent-table/parent-table.component.mjs +7 -7
  26. package/esm2020/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -12
  27. package/esm2020/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +1 -3
  28. package/esm2020/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -13
  29. package/esm2020/lib/sharedComponents/frequency/frequency-due-date/frequency-due-date.component.mjs +1 -7
  30. package/esm2020/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.mjs +1 -26
  31. package/esm2020/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +1 -15
  32. package/esm2020/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +1 -14
  33. package/esm2020/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +14 -8
  34. package/esm2020/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -13
  35. package/esm2020/lib/sharedComponents/frequency/frequency-radio-list/frequency-radio-list.component.mjs +1 -2
  36. package/esm2020/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +1 -18
  37. package/esm2020/lib/sharedComponents/frequency/frequency-top/frequency-top.component.mjs +2 -2
  38. package/esm2020/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +1 -12
  39. package/esm2020/lib/sharedComponents/frequency/frequency.service.mjs +2 -11
  40. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-annual/frequency-dialog-annual.component.mjs +1 -2
  41. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-biannual/frequency-dialog-biannual.component.mjs +1 -2
  42. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-monthly/frequency-dialog-monthly.component.mjs +1 -2
  43. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-one-time/frequency-dialog-one-time.component.mjs +1 -2
  44. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-quarterly/frequency-dialog-quarterly.component.mjs +1 -2
  45. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-radio-list/frequency-dialog-radio-list.component.mjs +1 -2
  46. package/esm2020/lib/sharedComponents/frequency-dialog/frequency-dialog-top/frequency-dialog-top.component.mjs +2 -2
  47. package/esm2020/lib/sharedComponents/group-users-list/group-users-list.component.mjs +1 -3
  48. package/esm2020/lib/sharedComponents/link-program/link-program/link-program.component.mjs +48 -38
  49. package/esm2020/lib/sharedComponents/link-program/restapi.service.mjs +31 -16
  50. package/esm2020/lib/sharedComponents/no-data/no-data.component.mjs +2 -4
  51. package/esm2020/lib/sharedComponents/owner-list/owner-list.component.mjs +12 -10
  52. package/esm2020/lib/sharedComponents/program-listing/program-listing.component.mjs +127 -58
  53. package/esm2020/lib/sharedComponents/radio-list-with-pagination/radio-list.component.mjs +4 -7
  54. package/esm2020/lib/sharedComponents/risk-classification/risk-classification.component.mjs +11 -6
  55. package/esm2020/lib/sharedComponents/select-approvers/select-approvers.component.mjs +1 -2
  56. package/esm2020/lib/sharedComponents/users-radio-list/users-radio-list.component.mjs +2 -3
  57. package/esm2020/lib/ui-kit/formgroup/cs-switch/cs-switch.component.mjs +1 -4
  58. package/esm2020/lib/ui-kit/popover/popover-longpress.directive.mjs +1 -3
  59. package/esm2020/lib/ui-kit/popover/popover.component.mjs +26 -12
  60. package/esm2020/lib/ui-kit/tooltip/tooltip.directive.mjs +8 -5
  61. package/esm2020/lib/workflow/shared/components/attributes/attributes.component.mjs +1 -2
  62. package/esm2020/lib/workflow/shared/components/edit-mode/edit-mode.component.mjs +1 -4
  63. package/esm2020/lib/workflow/shared/components/grc-object-list/grc-object-list.component.mjs +1 -2
  64. package/esm2020/lib/workflow/shared/components/list-popup/list-popup.component.mjs +1 -4
  65. package/esm2020/lib/workflow/shared/components/table-card/table-card.component.mjs +4 -8
  66. package/esm2020/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.mjs +245 -108
  67. package/esm2020/lib/workflow-assessment/workflow-assessment.component.mjs +2 -4
  68. package/esm2020/lib/workflow-compliance/workflow-compliance.component.mjs +10 -8
  69. package/esm2020/lib/workflow-engine-container/workflow-engine-container.component.mjs +1 -5
  70. package/esm2020/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.mjs +45 -45
  71. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.mjs +43 -25
  72. package/esm2020/lib/workflow-program/create-program-ui/define-framework-listing/pipes/sub-cat-indeter.pipe.mjs +4 -4
  73. package/esm2020/lib/workflow-program/create-program-ui/floating-bar/floating-bar.component.mjs +1 -2
  74. package/esm2020/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.mjs +25 -14
  75. package/esm2020/lib/workflow-program/create-program-ui/pipes/assessment-resolver.pipe.mjs +6 -3
  76. package/esm2020/lib/workflow-program/create-program-ui/role-list/role-list.component.mjs +25 -19
  77. package/esm2020/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +1 -4
  78. package/esm2020/lib/workflow-program/workflow-program.component.mjs +232 -110
  79. package/esm2020/lib/workflow-services/add-risk.service.mjs +1 -2
  80. package/esm2020/lib/workflow-services/assessment.service.mjs +1 -5
  81. package/esm2020/lib/workflow-services/programs.service.mjs +173 -57
  82. package/fesm2015/vcomply-workflow-engine.mjs +1376 -934
  83. package/fesm2015/vcomply-workflow-engine.mjs.map +1 -1
  84. package/fesm2020/vcomply-workflow-engine.mjs +1386 -939
  85. package/fesm2020/vcomply-workflow-engine.mjs.map +1 -1
  86. package/lib/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  87. package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +4 -5
  88. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +2 -3
  89. package/lib/sharedComponents/bulk-view/bulk-view.component.d.ts +2 -3
  90. package/lib/sharedComponents/frequency/frequency-lifecycle/frequency-lifecycle.component.d.ts +2 -4
  91. package/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.d.ts +1 -1
  92. package/lib/sharedComponents/link-program/restapi.service.d.ts +3 -3
  93. package/lib/sharedComponents/no-data/no-data.component.d.ts +2 -4
  94. package/lib/ui-kit/formgroup/cs-switch/cs-switch.component.d.ts +2 -3
  95. package/lib/workflow/shared/components/edit-mode/edit-mode.component.d.ts +2 -3
  96. package/lib/workflow/shared/components/list-popup/list-popup.component.d.ts +2 -3
  97. package/lib/workflow/shared/components/table-card/table-card.component.d.ts +2 -5
  98. package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +8 -9
  99. package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +2 -4
  100. package/package.json +1 -1
@@ -25,11 +25,11 @@ export class AssessmentPickerComponent {
25
25
  this.isEdit = false;
26
26
  this.openedCategory = [];
27
27
  this.assessmentPayload = {
28
- search_title: "",
29
- page_no: "1",
30
- state: "ACTIVE",
28
+ search_title: '',
29
+ page_no: '1',
30
+ state: 'ACTIVE',
31
31
  search_text: '',
32
- alphabet_filter: ''
32
+ alphabet_filter: '',
33
33
  };
34
34
  this.dataPerPage = 0;
35
35
  this.assessmentCategory = {
@@ -38,7 +38,7 @@ export class AssessmentPickerComponent {
38
38
  totalRecords: 0,
39
39
  start_value: 0,
40
40
  end_value: 0,
41
- currentPage: 0
41
+ currentPage: 0,
42
42
  };
43
43
  this.isLoader = false;
44
44
  this.isDeleted = false;
@@ -63,9 +63,6 @@ export class AssessmentPickerComponent {
63
63
  });
64
64
  }
65
65
  }
66
- ngOnChanges(changes) {
67
- console.log("changes ====>", changes, this.selectedAssessmentData, this.assessmentCategory);
68
- }
69
66
  ngOnInit() {
70
67
  this.animation = true;
71
68
  this.getAssessmentCategoryList();
@@ -79,11 +76,10 @@ export class AssessmentPickerComponent {
79
76
  preview(evt) {
80
77
  this.assessmentService.getAssessmentQuestions(evt?.id).subscribe({
81
78
  next: (res) => {
82
- console.log("res", res);
83
79
  this.auth.previewPanel.next(true);
84
80
  this.isPreview = true;
85
81
  this.previewQuestionData = res;
86
- }
82
+ },
87
83
  });
88
84
  }
89
85
  previewBack() {
@@ -97,21 +93,20 @@ export class AssessmentPickerComponent {
97
93
  *
98
94
  */
99
95
  showSubList(index, id) {
100
- console.log("this.openedCategorydasasfsa ==>", this.openedCategory, index, id);
101
96
  if (this.openedCategory.includes(id)) {
102
- this.openedCategory = this.openedCategory.filter(ele => ele !== id);
97
+ this.openedCategory = this.openedCategory.filter((ele) => ele !== id);
103
98
  }
104
99
  else {
105
100
  this.openedCategory.push(id);
106
101
  this.getAssessmentList(id);
107
102
  }
108
- console.log("this.openedCategory ==>", this.openedCategory);
109
103
  return this.openedCategory;
110
104
  }
111
105
  expandCategory(categoryId) {
112
106
  const index = this.assessmentCategory?.data?.findIndex((ele) => ele.id === categoryId);
113
- if (this.openedCategory.includes(categoryId) && this.assessmentCategory.data[index].assessmentData) {
114
- this.openedCategory = this.openedCategory.filter(ele => ele !== categoryId);
107
+ if (this.openedCategory.includes(categoryId) &&
108
+ this.assessmentCategory.data[index].assessmentData) {
109
+ this.openedCategory = this.openedCategory.filter((ele) => ele !== categoryId);
115
110
  }
116
111
  else {
117
112
  this.openedCategory.push(categoryId);
@@ -125,7 +120,6 @@ export class AssessmentPickerComponent {
125
120
  */
126
121
  onPageSelection(event) {
127
122
  this.openedCategory = [];
128
- console.log("111");
129
123
  this.assessmentPayload.page_no = event.toString();
130
124
  this.getAssessmentCategoryList();
131
125
  }
@@ -136,8 +130,7 @@ export class AssessmentPickerComponent {
136
130
  */
137
131
  onAssessmentSearch(search) {
138
132
  this.openedCategory = [];
139
- console.log("222");
140
- this.assessmentPayload.page_no = "1";
133
+ this.assessmentPayload.page_no = '1';
141
134
  this.assessmentPayload.search_title = search;
142
135
  this.assessmentPayload.search_text = search;
143
136
  this.getAssessmentCategoryList();
@@ -149,8 +142,7 @@ export class AssessmentPickerComponent {
149
142
  */
150
143
  onAlphabetSelected(event) {
151
144
  this.openedCategory = [];
152
- console.log("333");
153
- this.assessmentPayload.page_no = "1";
145
+ this.assessmentPayload.page_no = '1';
154
146
  this.assessmentPayload.alphabet_filter = event;
155
147
  this.assessmentPayload.search_text = '';
156
148
  this.getAssessmentCategoryList();
@@ -158,7 +150,9 @@ export class AssessmentPickerComponent {
158
150
  // TODO: Call API method
159
151
  getAssessmentCategoryList() {
160
152
  this.isLoader = true;
161
- this.assessmentService.getAssessmentCategory(this.assessmentPayload).subscribe((res) => {
153
+ this.assessmentService
154
+ .getAssessmentCategory(this.assessmentPayload)
155
+ .subscribe((res) => {
162
156
  this.assessmentCategory = res;
163
157
  if (this.selectedAssessmentArr?.length) {
164
158
  // this.selectedAssessmentArr = [... new Set(this.selectedAssessmentArr)]
@@ -180,17 +174,18 @@ export class AssessmentPickerComponent {
180
174
  * @param id : Assessment category id
181
175
  */
182
176
  getAssessmentList(id) {
183
- console.log("asss", id);
184
177
  const payload = {
185
- search_title: "",
178
+ search_title: '',
186
179
  };
187
- this.assessmentService.getAssessmentList(payload, id).subscribe((res) => {
180
+ this.assessmentService
181
+ .getAssessmentList(payload, id)
182
+ .subscribe((res) => {
188
183
  const index = this.assessmentCategory?.data?.findIndex((ele) => ele.id === id);
189
- console.log("indexer", index, this.assessmentCategory);
190
184
  if (index > -1) {
191
- this.assessmentCategory.data[index].assessmentData = [...new Set(res)];
185
+ this.assessmentCategory.data[index].assessmentData = [
186
+ ...new Set(res),
187
+ ];
192
188
  }
193
- console.log("ass");
194
189
  if (this.selectedAssessmentArr?.length) {
195
190
  this.setCategoryAndAssessment();
196
191
  const index = this.selectedAssessmentArr.findIndex((ele) => ele.category_id === id);
@@ -211,7 +206,6 @@ export class AssessmentPickerComponent {
211
206
  */
212
207
  selectAssessment(evt, payload, category) {
213
208
  if (evt?.target?.checked) {
214
- console.log("selected", this.selectedAssessmentArr);
215
209
  const index = this.selectedAssessmentArr.findIndex((ele) => ele.category_id === category.id);
216
210
  if (index > -1) {
217
211
  const currentCategoryAssessment = this.selectedAssessmentArr[index].assessmentIds;
@@ -223,7 +217,7 @@ export class AssessmentPickerComponent {
223
217
  else {
224
218
  this.selectedAssessmentArr.push({
225
219
  category_id: category.id,
226
- assessmentIds: [payload]
220
+ assessmentIds: [payload],
227
221
  });
228
222
  this.selectedAssessmentArr = cloneDeep(this.selectedAssessmentArr);
229
223
  this.setCategoryAndAssessment();
@@ -232,7 +226,8 @@ export class AssessmentPickerComponent {
232
226
  else {
233
227
  const index = this.selectedAssessmentArr.findIndex((ele) => ele.category_id === category.id);
234
228
  if (index > -1) {
235
- this.selectedAssessmentArr[index].assessmentIds = this.selectedAssessmentArr[index].assessmentIds.filter((assessment) => assessment.id !== payload.id);
229
+ this.selectedAssessmentArr[index].assessmentIds =
230
+ this.selectedAssessmentArr[index].assessmentIds.filter((assessment) => assessment.id !== payload.id);
236
231
  this.selectedAssessmentArr = cloneDeep(this.selectedAssessmentArr);
237
232
  this.setCategoryAndAssessment();
238
233
  if (this.selectedAssessmentArr[index].assessmentIds?.length === 0) {
@@ -244,10 +239,16 @@ export class AssessmentPickerComponent {
244
239
  }
245
240
  }
246
241
  setCategoryAndAssessment() {
247
- this.selectedAssessmentCategoriesIds = this.selectedAssessmentArr.filter((cat) => cat?.assessmentIds?.length > 0)?.map((ele) => ele?.category_id).flat();
248
- this.selectedAssessmentIds = this.selectedAssessmentArr.map((cat) => cat?.assessmentIds.map((ele) => ele?.id)).flat();
249
- console.log("this.selectedAssessmentIds ==>", this.selectedAssessmentIds);
250
- this.selectedAssessment = this.selectedAssessmentArr.map((cat) => cat?.assessmentIds.map((ele) => ele)).flat();
242
+ this.selectedAssessmentCategoriesIds = this.selectedAssessmentArr
243
+ .filter((cat) => cat?.assessmentIds?.length > 0)
244
+ ?.map((ele) => ele?.category_id)
245
+ .flat();
246
+ this.selectedAssessmentIds = this.selectedAssessmentArr
247
+ .map((cat) => cat?.assessmentIds.map((ele) => ele?.id))
248
+ .flat();
249
+ this.selectedAssessment = this.selectedAssessmentArr
250
+ .map((cat) => cat?.assessmentIds.map((ele) => ele))
251
+ .flat();
251
252
  }
252
253
  // TODO: Display selected data in bottom floating bar with next enabled button having
253
254
  // TODO: Send data in payload of create Responsibility form
@@ -258,22 +259,21 @@ export class AssessmentPickerComponent {
258
259
  this.cancelAssessment.emit();
259
260
  }
260
261
  /**
261
- * #### Description
262
- *
263
- * Returns the unique array of object based on unique key
264
- * @param array
265
- * @param key
266
- * @returns
267
- */
262
+ * #### Description
263
+ *
264
+ * Returns the unique array of object based on unique key
265
+ * @param array
266
+ * @param key
267
+ * @returns
268
+ */
268
269
  uniqueByProp(array, key) {
269
270
  return Array.from(array
270
- .reduce((acc, item) => (item && item[key] && acc.set(item[key], item),
271
- acc), new Map())
271
+ .reduce((acc, item) => (item && item[key] && acc.set(item[key], item), acc), new Map())
272
272
  .values());
273
273
  }
274
274
  }
275
275
  AssessmentPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AssessmentPickerComponent, deps: [{ token: i1.AssessmentService }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Component });
276
- AssessmentPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AssessmentPickerComponent, selector: "assessment-picker", inputs: { isEdit: "isEdit", setSelected: ["selectedAssessment", "setSelected"], selectedAssessmentData: "selectedAssessmentData" }, outputs: { onAssessmentSelect: "onAssessmentSelect", cancelAssessment: "cancelAssessment" }, usesOnChanges: true, ngImport: i0, template: "<app-preview *ngIf=\"isPreview\" [questionData]=\"previewQuestionData\" (previewBack)=\"previewBack()\"></app-preview>\r\n<div class=\"assessment-list\" [class.animate]=\"animation\">\r\n\r\n <ng-container >\r\n <div class=\"assessment-list-head\">\r\n <button class=\"back-btn\">\r\n <!-- <i class=\"icons\">&#xe91d;</i> -->\r\n </button>\r\n <h3 class=\"assessment-list-title\">Select Assessment(s)</h3>\r\n </div>\r\n <div class=\"assessment-list-body\">\r\n <div class=\"search-block\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [(ngModel)]=\"searchAssessments\" (change)=\"onAssessmentSearch($event.target.value)\" placeholder=\"Search Assessment Category\" />\r\n </div>\r\n <pagination\r\n\r\n [pageCount]=\"assessmentCategory?.totalPage\"\r\n [total]=\"assessmentCategory?.totalRecords\"\r\n [start]=\"assessmentCategory?.start_value\"\r\n [end]=\"assessmentCategory?.end_value\"\r\n [activeAlphabet]=\"''\"\r\n (selectedAlphabet)=\"onAlphabetSelected($event)\"\r\n (selectedPage)=\"onPageSelection($event)\"\r\n ></pagination>\r\n <div *ngIf=\"assessmentCategory.data.length === 0 && !isLoader\" class=\"assessment-list-part\">\r\n <app-no-data [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Assessments Found.'\"></app-no-data>\r\n </div>\r\n <div *ngIf=\"assessmentCategory.data.length || isLoader\" class=\"assessment-list-part\">\r\n <div *ngIf=\"isEdit && selectedAssessment?.assessmentDetails?.assessment_name\" class=\"assessment-list-selected\">\r\n <div class=\"assessment-list-heading\">Assessment already selected for this responsibility</div>\r\n <div class=\"assessment-list-item\">\r\n <div class=\"table-row\">\r\n <div class=\"table-column serial disabled\">\r\n <app-cs-radio [disabled]=\"true\" class=\"disabled\" [checked]=\"true\" [readonly]=\"true\"></app-cs-radio>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"selectedAssessment?.assessmentDetails?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.assessmentDetails?.assessment_name}}</div>\r\n <div class=\"within-part\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{selectedAssessment?.assessmentDetails?.questions}} {{selectedAssessment?.assessmentDetails?.questions > 1 ? 'Questions': 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(selectedAssessment?.assessmentDetails)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe90c;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"assessment-list-heading\">Select an Assessment for this responsibility</div>\r\n\r\n <!--\r\n Assessment category list\r\n active class is used for highlighting opened element\r\n -->\r\n <ng-container *ngIf=\"!isLoader\">\r\n <div *ngFor=\"let data of assessmentCategory.data; let i = index;\" class=\"assessment-list-item\" [class.active]=\"openedCategory.includes(data?.id) || data.id === selectedAssessment?.category_id\">\r\n <div class=\"table-row main-list\" (click)=\"expandCategory(data?.id)\" [class.disabled]=\"data?.assessmentcount < 1\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sr-no' + i\" class=\"sr-no\" [appTooltip]=\"i + 1\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}</div>\r\n </div>\r\n <div class=\"table-column name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"data.category_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.category_name}}</div>\r\n <div class=\"within-part\" *ngIf=\"data?.parent_tree\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"data.parent_tree\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.parent_tree}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column action\">\r\n <button [id]=\"'arrow' + i\" class=\"arrow\" [class.disabled] = \"data?.assessmentcount < 1\" [disabled]=\"data?.assessmentcount < 1\">\r\n <i *ngIf=\"!openedCategory.includes(data?.id)\" class=\"icons\">&#xe970;</i>\r\n <i *ngIf=\"openedCategory.includes(data?.id)\" class=\"icons\">&#xe9e8;</i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment list start from here -->\r\n <div *ngIf=\"openedCategory.includes(data?.id)\" class=\"sub-list\">\r\n <ng-container *ngIf=\"data.assessmentData?.length > 0\">\r\n <div class=\"table-row\" *ngFor=\"let assessment of data.assessmentData; let j = index\" [class.active]=\"(selectedAssessmentIds).includes(assessment.id)\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sub-sr-no'+ i+j\" class=\"sr-no active\" appTooltip=\"{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\r\n {{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\r\n <!-- <app-cs-radio name=\"assessment\" [value]=\"assessment.id\" [checked]=\"assessment?.id === selectedAssessment?.assessment_id && data?.id === selectedAssessment?.category_id\"\r\n (checkedEvent)=\"setAssessment(data, assessment)\"></app-cs-radio> -->\r\n <!-- (change)=\"selectGroup($event,group)\" [disabled]=\"nonRemovableGroupIds?.includes(group?.group_id)\" [checked]=\"selectedGroupIds.includes(group?.group_id)\" -->\r\n\r\n <vui-checkbox [checked]=\"(selectedAssessmentIds).includes(assessment.id)\" (change)=\"selectAssessment($event,assessment, data)\"></vui-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"value\" [appTooltip]=\"'Mission and message, communications to external audiences'\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessment?.assessment_name}}</div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{assessment?.questions}} {{assessment?.questions > 1 ? 'Questions' : 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(assessment)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe9ba;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-sub-loader *ngIf=\"!data.assessmentData?.length\"></assessment-sub-loader>\r\n <!-- <app-line-loader *ngIf=\"!data.assessmentData?.length\" [loaderHeight]=\"'5'\"></app-line-loader> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-loader *ngIf=\"isLoader\"></assessment-loader>\r\n </div>\r\n <!-- No data image -->\r\n <app-no-data *ngIf=\"!assessmentCategory.data.length && !isLoader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Data to Display'\"></app-no-data>\r\n </div>\r\n <!--\r\n bottom floating bar which includes cancel, next button\r\n closing tab\r\n -->\r\n\r\n\r\n <vui-floating-bar (closeEvent)=\"save()\" (closeList)=\"close()\">\r\n <div class=\"counter\" *ngIf=\"selectedAssessment?.length\" appPopover (click)=\"assessmentCount.popover()\"\r\n placement=\"left\">{{selectedAssessment?.length}}</div>\r\n <div class=\"name\">\r\n <span *ngIf=\"selectedAssessment?.length === 1\">Assessment selected</span>\r\n <span *ngIf=\"selectedAssessment?.length > 1\">Assessments selected</span>\r\n </div>\r\n <app-popover #assessmentCount [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let element of selectedAssessment; let i =index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <!-- <i class=\"icons\"\r\n (click)=\"selectAssessment({target:{checked:false}},element)\">&#xe90d;</i> -->\r\n {{element?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </vui-floating-bar>\r\n\r\n </ng-container>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .assessment-list{background:#fff;border-top:3px solid #1E5DD3;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .assessment-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .assessment-list-head{background:#fbfbfb;height:42px;padding:0 18px;display:flex;align-items:center;border:1px solid #f1f1f1;border-right:none}::ng-deep .assessment-list-head button.back-btn{background:transparent;border-radius:0;border:0;color:#161b2f;font-size:16px;padding:0;margin:0 8px 0 0}::ng-deep .assessment-list-title{color:#161b2f;font-size:15px;font-weight:500;margin:0!important;padding:0;line-height:21px}::ng-deep .assessment-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .assessment-list-body{padding:24px 40px 24px 36px;height:calc(100vh - 112px)}::ng-deep .assessment-list-body .search-block{position:relative}::ng-deep .assessment-list-body .search-block input{height:44px;line-height:24px;padding:10px 15px 10px 40px;outline:none;border:1px solid #7475763f;border-radius:4px;width:100%;font-size:14px;color:#747576}::ng-deep .assessment-list-body .search-block input::placeholder{font-weight:400}::ng-deep .assessment-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .assessment-list-body .search-block i{position:absolute;left:17px;font-size:12px;font-weight:400;top:17px;pointer-events:none;color:#f1f1f1}::ng-deep .assessment-list-body .assessment-list-part{height:calc(100vh - 228px);overflow:auto;padding:8px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-selected{margin-bottom:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-heading{color:#161b2f;font-size:12px;font-weight:600;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item{border:1px solid #f1f1f1;border-radius:2px;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .main-list{cursor:pointer}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item.active{border-color:#1e5dd3;box-shadow:0 3px 6px #4681ef26}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row.disabled{pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column{color:#747576;height:48px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no{width:16px;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:10px;font-weight:500;display:flex;height:100%;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox{position:absolute;top:8px;left:0;opacity:0;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox label.checkbox-item{position:unset}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name{width:calc(100% - 64px);min-width:calc(100% - 64px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.arrow{background:transparent;border:none;border-radius:0;color:#747576;font-size:12px;padding:0;margin:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.disabled{opacity:.5!important;pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name{width:calc(100% - 232px);min-width:calc(100% - 232px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .value{color:#747576;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question{width:200px;max-width:200px;justify-content:flex-end}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-right:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;display:flex;align-items:center;margin:0}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row:hover .table-column.question .buttons{width:86px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row{border-top:1px solid #f1f1f1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no{color:#f8f8f8}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no vui-checkbox,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no vui-checkbox{opacity:1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row .table-column{height:32px}::ng-deep .assessment-list-body ul{padding:0;margin:0}::ng-deep .assessment-list-body ul.assessment{max-height:calc(100vh - 240px);overflow:auto;padding:16px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body ul.assessment li{padding:0 0 12px;list-style:none;display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body ul.assessment li vui-checkbox{width:calc(100% - 260px)}::ng-deep .assessment-list-body ul.assessment li vui-checkbox .radio-item .value .name{font-size:12px;color:#161b2f;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .assessment-list-body ul.assessment li .right{display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px}::ng-deep .assessment-list-body ul.assessment li .right .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;margin-left:12px;display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body ul.assessment li:hover .right .buttons{width:156px}.within-part{display:flex;align-items:center;padding-right:12px}.within-part .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-size:12px;color:#747576}.within-box{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding:0 4px;margin-right:8px;line-height:12px}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.wf-action-list ul.action-item li button .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:calc(100% - 16px)}.wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}.wf-action-list ul.action-item li button:hover{background:#f3f3f3}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;min-width:24px!important;overflow:hidden;background:#1E5DD3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{background:#fff;width:100%;height:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card i.delete-icon{color:#d93b41;cursor:pointer;font-size:14px}.wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.wf-action-list ul.action-item li .chip-item i{color:#747576;margin-left:7px;font-size:10px;cursor:pointer;display:inline-flex}.wf-action-list ul.action-item li .chip-item span{display:block;width:auto;width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.wf-action-list ul.action-item li .chip-item span.id{font-size:9px}.wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.NoDataComponent, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i9.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "component", type: i10.PreviewComponent, selector: "app-preview", inputs: ["questionData"], outputs: ["previewBack"] }, { kind: "component", type: i11.CheckboxComponent, selector: "vui-checkbox", inputs: ["disabled", "checked", "indeterminateEnabled"] }, { kind: "component", type: i12.VuiFloatingBarComponent, selector: "vui-floating-bar", inputs: ["selectedData", "groupSelected", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "nextDisabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "workflowTypeChanged"] }, { kind: "component", type: i13.AssessmentLoaderComponent, selector: "assessment-loader" }, { kind: "component", type: i14.AssessmentSubLoaderComponent, selector: "assessment-sub-loader" }, { kind: "component", type: i15.Pagination, selector: "pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "noFilter", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }] });
276
+ AssessmentPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AssessmentPickerComponent, selector: "assessment-picker", inputs: { isEdit: "isEdit", setSelected: ["selectedAssessment", "setSelected"], selectedAssessmentData: "selectedAssessmentData" }, outputs: { onAssessmentSelect: "onAssessmentSelect", cancelAssessment: "cancelAssessment" }, ngImport: i0, template: "<app-preview *ngIf=\"isPreview\" [questionData]=\"previewQuestionData\" (previewBack)=\"previewBack()\"></app-preview>\r\n<div class=\"assessment-list\" [class.animate]=\"animation\">\r\n\r\n <ng-container >\r\n <div class=\"assessment-list-head\">\r\n <button class=\"back-btn\">\r\n <!-- <i class=\"icons\">&#xe91d;</i> -->\r\n </button>\r\n <h3 class=\"assessment-list-title\">Select Assessment(s)</h3>\r\n </div>\r\n <div class=\"assessment-list-body\">\r\n <div class=\"search-block\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [(ngModel)]=\"searchAssessments\" (change)=\"onAssessmentSearch($event.target.value)\" placeholder=\"Search Assessment Category\" />\r\n </div>\r\n <pagination\r\n\r\n [pageCount]=\"assessmentCategory?.totalPage\"\r\n [total]=\"assessmentCategory?.totalRecords\"\r\n [start]=\"assessmentCategory?.start_value\"\r\n [end]=\"assessmentCategory?.end_value\"\r\n [activeAlphabet]=\"''\"\r\n (selectedAlphabet)=\"onAlphabetSelected($event)\"\r\n (selectedPage)=\"onPageSelection($event)\"\r\n ></pagination>\r\n <div *ngIf=\"assessmentCategory.data.length === 0 && !isLoader\" class=\"assessment-list-part\">\r\n <app-no-data [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Assessments Found.'\"></app-no-data>\r\n </div>\r\n <div *ngIf=\"assessmentCategory.data.length || isLoader\" class=\"assessment-list-part\">\r\n <div *ngIf=\"isEdit && selectedAssessment?.assessmentDetails?.assessment_name\" class=\"assessment-list-selected\">\r\n <div class=\"assessment-list-heading\">Assessment already selected for this responsibility</div>\r\n <div class=\"assessment-list-item\">\r\n <div class=\"table-row\">\r\n <div class=\"table-column serial disabled\">\r\n <app-cs-radio [disabled]=\"true\" class=\"disabled\" [checked]=\"true\" [readonly]=\"true\"></app-cs-radio>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"selectedAssessment?.assessmentDetails?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.assessmentDetails?.assessment_name}}</div>\r\n <div class=\"within-part\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{selectedAssessment?.assessmentDetails?.questions}} {{selectedAssessment?.assessmentDetails?.questions > 1 ? 'Questions': 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(selectedAssessment?.assessmentDetails)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe90c;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"assessment-list-heading\">Select an Assessment for this responsibility</div>\r\n\r\n <!--\r\n Assessment category list\r\n active class is used for highlighting opened element\r\n -->\r\n <ng-container *ngIf=\"!isLoader\">\r\n <div *ngFor=\"let data of assessmentCategory.data; let i = index;\" class=\"assessment-list-item\" [class.active]=\"openedCategory.includes(data?.id) || data.id === selectedAssessment?.category_id\">\r\n <div class=\"table-row main-list\" (click)=\"expandCategory(data?.id)\" [class.disabled]=\"data?.assessmentcount < 1\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sr-no' + i\" class=\"sr-no\" [appTooltip]=\"i + 1\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}</div>\r\n </div>\r\n <div class=\"table-column name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"data.category_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.category_name}}</div>\r\n <div class=\"within-part\" *ngIf=\"data?.parent_tree\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"data.parent_tree\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.parent_tree}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column action\">\r\n <button [id]=\"'arrow' + i\" class=\"arrow\" [class.disabled] = \"data?.assessmentcount < 1\" [disabled]=\"data?.assessmentcount < 1\">\r\n <i *ngIf=\"!openedCategory.includes(data?.id)\" class=\"icons\">&#xe970;</i>\r\n <i *ngIf=\"openedCategory.includes(data?.id)\" class=\"icons\">&#xe9e8;</i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment list start from here -->\r\n <div *ngIf=\"openedCategory.includes(data?.id)\" class=\"sub-list\">\r\n <ng-container *ngIf=\"data.assessmentData?.length > 0\">\r\n <div class=\"table-row\" *ngFor=\"let assessment of data.assessmentData; let j = index\" [class.active]=\"(selectedAssessmentIds).includes(assessment.id)\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sub-sr-no'+ i+j\" class=\"sr-no active\" appTooltip=\"{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\r\n {{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\r\n <!-- <app-cs-radio name=\"assessment\" [value]=\"assessment.id\" [checked]=\"assessment?.id === selectedAssessment?.assessment_id && data?.id === selectedAssessment?.category_id\"\r\n (checkedEvent)=\"setAssessment(data, assessment)\"></app-cs-radio> -->\r\n <!-- (change)=\"selectGroup($event,group)\" [disabled]=\"nonRemovableGroupIds?.includes(group?.group_id)\" [checked]=\"selectedGroupIds.includes(group?.group_id)\" -->\r\n\r\n <vui-checkbox [checked]=\"(selectedAssessmentIds).includes(assessment.id)\" (change)=\"selectAssessment($event,assessment, data)\"></vui-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"value\" [appTooltip]=\"'Mission and message, communications to external audiences'\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessment?.assessment_name}}</div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{assessment?.questions}} {{assessment?.questions > 1 ? 'Questions' : 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(assessment)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe9ba;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-sub-loader *ngIf=\"!data.assessmentData?.length\"></assessment-sub-loader>\r\n <!-- <app-line-loader *ngIf=\"!data.assessmentData?.length\" [loaderHeight]=\"'5'\"></app-line-loader> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-loader *ngIf=\"isLoader\"></assessment-loader>\r\n </div>\r\n <!-- No data image -->\r\n <app-no-data *ngIf=\"!assessmentCategory.data.length && !isLoader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Data to Display'\"></app-no-data>\r\n </div>\r\n <!--\r\n bottom floating bar which includes cancel, next button\r\n closing tab\r\n -->\r\n\r\n\r\n <vui-floating-bar (closeEvent)=\"save()\" (closeList)=\"close()\">\r\n <div class=\"counter\" *ngIf=\"selectedAssessment?.length\" appPopover (click)=\"assessmentCount.popover()\"\r\n placement=\"left\">{{selectedAssessment?.length}}</div>\r\n <div class=\"name\">\r\n <span *ngIf=\"selectedAssessment?.length === 1\">Assessment selected</span>\r\n <span *ngIf=\"selectedAssessment?.length > 1\">Assessments selected</span>\r\n </div>\r\n <app-popover #assessmentCount [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let element of selectedAssessment; let i =index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <!-- <i class=\"icons\"\r\n (click)=\"selectAssessment({target:{checked:false}},element)\">&#xe90d;</i> -->\r\n {{element?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </vui-floating-bar>\r\n\r\n </ng-container>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .assessment-list{background:#fff;border-top:3px solid #1E5DD3;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .assessment-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .assessment-list-head{background:#fbfbfb;height:42px;padding:0 18px;display:flex;align-items:center;border:1px solid #f1f1f1;border-right:none}::ng-deep .assessment-list-head button.back-btn{background:transparent;border-radius:0;border:0;color:#161b2f;font-size:16px;padding:0;margin:0 8px 0 0}::ng-deep .assessment-list-title{color:#161b2f;font-size:15px;font-weight:500;margin:0!important;padding:0;line-height:21px}::ng-deep .assessment-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .assessment-list-body{padding:24px 40px 24px 36px;height:calc(100vh - 112px)}::ng-deep .assessment-list-body .search-block{position:relative}::ng-deep .assessment-list-body .search-block input{height:44px;line-height:24px;padding:10px 15px 10px 40px;outline:none;border:1px solid #7475763f;border-radius:4px;width:100%;font-size:14px;color:#747576}::ng-deep .assessment-list-body .search-block input::placeholder{font-weight:400}::ng-deep .assessment-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .assessment-list-body .search-block i{position:absolute;left:17px;font-size:12px;font-weight:400;top:17px;pointer-events:none;color:#f1f1f1}::ng-deep .assessment-list-body .assessment-list-part{height:calc(100vh - 228px);overflow:auto;padding:8px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-selected{margin-bottom:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-heading{color:#161b2f;font-size:12px;font-weight:600;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item{border:1px solid #f1f1f1;border-radius:2px;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .main-list{cursor:pointer}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item.active{border-color:#1e5dd3;box-shadow:0 3px 6px #4681ef26}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row.disabled{pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column{color:#747576;height:48px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no{width:16px;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:10px;font-weight:500;display:flex;height:100%;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox{position:absolute;top:8px;left:0;opacity:0;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox label.checkbox-item{position:unset}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name{width:calc(100% - 64px);min-width:calc(100% - 64px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.arrow{background:transparent;border:none;border-radius:0;color:#747576;font-size:12px;padding:0;margin:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.disabled{opacity:.5!important;pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name{width:calc(100% - 232px);min-width:calc(100% - 232px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .value{color:#747576;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question{width:200px;max-width:200px;justify-content:flex-end}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-right:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;display:flex;align-items:center;margin:0}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row:hover .table-column.question .buttons{width:86px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row{border-top:1px solid #f1f1f1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no{color:#f8f8f8}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no vui-checkbox,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no vui-checkbox{opacity:1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row .table-column{height:32px}::ng-deep .assessment-list-body ul{padding:0;margin:0}::ng-deep .assessment-list-body ul.assessment{max-height:calc(100vh - 240px);overflow:auto;padding:16px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body ul.assessment li{padding:0 0 12px;list-style:none;display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body ul.assessment li vui-checkbox{width:calc(100% - 260px)}::ng-deep .assessment-list-body ul.assessment li vui-checkbox .radio-item .value .name{font-size:12px;color:#161b2f;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .assessment-list-body ul.assessment li .right{display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px}::ng-deep .assessment-list-body ul.assessment li .right .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;margin-left:12px;display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body ul.assessment li:hover .right .buttons{width:156px}.within-part{display:flex;align-items:center;padding-right:12px}.within-part .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-size:12px;color:#747576}.within-box{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding:0 4px;margin-right:8px;line-height:12px}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.wf-action-list ul.action-item li button .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:calc(100% - 16px)}.wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}.wf-action-list ul.action-item li button:hover{background:#f3f3f3}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;min-width:24px!important;overflow:hidden;background:#1E5DD3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{background:#fff;width:100%;height:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card i.delete-icon{color:#d93b41;cursor:pointer;font-size:14px}.wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.wf-action-list ul.action-item li .chip-item i{color:#747576;margin-left:7px;font-size:10px;cursor:pointer;display:inline-flex}.wf-action-list ul.action-item li .chip-item span{display:block;width:auto;width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.wf-action-list ul.action-item li .chip-item span.id{font-size:9px}.wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i5.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i6.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.NoDataComponent, selector: "app-no-data", inputs: ["action", "secondaryAction", "noDataImage", "noDataText", "noDataButton", "secondaryButton", "noDataSecButton", "altText", "smallButton"], outputs: ["buttonAction", "secondaryActionButton"] }, { kind: "component", type: i9.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value"], outputs: ["checkedEvent"] }, { kind: "component", type: i10.PreviewComponent, selector: "app-preview", inputs: ["questionData"], outputs: ["previewBack"] }, { kind: "component", type: i11.CheckboxComponent, selector: "vui-checkbox", inputs: ["disabled", "checked", "indeterminateEnabled"] }, { kind: "component", type: i12.VuiFloatingBarComponent, selector: "vui-floating-bar", inputs: ["selectedData", "groupSelected", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "nextDisabled", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "workflowTypeChanged"] }, { kind: "component", type: i13.AssessmentLoaderComponent, selector: "assessment-loader" }, { kind: "component", type: i14.AssessmentSubLoaderComponent, selector: "assessment-sub-loader" }, { kind: "component", type: i15.Pagination, selector: "pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "noFilter", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }] });
277
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AssessmentPickerComponent, decorators: [{
278
278
  type: Component,
279
279
  args: [{ selector: 'assessment-picker', template: "<app-preview *ngIf=\"isPreview\" [questionData]=\"previewQuestionData\" (previewBack)=\"previewBack()\"></app-preview>\r\n<div class=\"assessment-list\" [class.animate]=\"animation\">\r\n\r\n <ng-container >\r\n <div class=\"assessment-list-head\">\r\n <button class=\"back-btn\">\r\n <!-- <i class=\"icons\">&#xe91d;</i> -->\r\n </button>\r\n <h3 class=\"assessment-list-title\">Select Assessment(s)</h3>\r\n </div>\r\n <div class=\"assessment-list-body\">\r\n <div class=\"search-block\">\r\n <i class=\"icons\">&#xe90b;</i>\r\n <input type=\"text\" [(ngModel)]=\"searchAssessments\" (change)=\"onAssessmentSearch($event.target.value)\" placeholder=\"Search Assessment Category\" />\r\n </div>\r\n <pagination\r\n\r\n [pageCount]=\"assessmentCategory?.totalPage\"\r\n [total]=\"assessmentCategory?.totalRecords\"\r\n [start]=\"assessmentCategory?.start_value\"\r\n [end]=\"assessmentCategory?.end_value\"\r\n [activeAlphabet]=\"''\"\r\n (selectedAlphabet)=\"onAlphabetSelected($event)\"\r\n (selectedPage)=\"onPageSelection($event)\"\r\n ></pagination>\r\n <div *ngIf=\"assessmentCategory.data.length === 0 && !isLoader\" class=\"assessment-list-part\">\r\n <app-no-data [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Assessments Found.'\"></app-no-data>\r\n </div>\r\n <div *ngIf=\"assessmentCategory.data.length || isLoader\" class=\"assessment-list-part\">\r\n <div *ngIf=\"isEdit && selectedAssessment?.assessmentDetails?.assessment_name\" class=\"assessment-list-selected\">\r\n <div class=\"assessment-list-heading\">Assessment already selected for this responsibility</div>\r\n <div class=\"assessment-list-item\">\r\n <div class=\"table-row\">\r\n <div class=\"table-column serial disabled\">\r\n <app-cs-radio [disabled]=\"true\" class=\"disabled\" [checked]=\"true\" [readonly]=\"true\"></app-cs-radio>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"selectedAssessment?.assessmentDetails?.assessment_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.assessmentDetails?.assessment_name}}</div>\r\n <div class=\"within-part\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{selectedAssessment?.category_details?.category_name + (selectedAssessment?.category_details?.parent_tree ? ' > ' + selectedAssessment?.category_details?.parent_tree : '')}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{selectedAssessment?.assessmentDetails?.questions}} {{selectedAssessment?.assessmentDetails?.questions > 1 ? 'Questions': 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(selectedAssessment?.assessmentDetails)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe90c;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"assessment-list-heading\">Select an Assessment for this responsibility</div>\r\n\r\n <!--\r\n Assessment category list\r\n active class is used for highlighting opened element\r\n -->\r\n <ng-container *ngIf=\"!isLoader\">\r\n <div *ngFor=\"let data of assessmentCategory.data; let i = index;\" class=\"assessment-list-item\" [class.active]=\"openedCategory.includes(data?.id) || data.id === selectedAssessment?.category_id\">\r\n <div class=\"table-row main-list\" (click)=\"expandCategory(data?.id)\" [class.disabled]=\"data?.assessmentcount < 1\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sr-no' + i\" class=\"sr-no\" [appTooltip]=\"i + 1\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}</div>\r\n </div>\r\n <div class=\"table-column name\">\r\n <div class=\"name-inner\">\r\n <div class=\"value\" [appTooltip]=\"data.category_name\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.category_name}}</div>\r\n <div class=\"within-part\" *ngIf=\"data?.parent_tree\">\r\n <span class=\"within-box\">Within</span>\r\n <span class=\"value\" [appTooltip]=\"data.parent_tree\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{data?.parent_tree}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"table-column action\">\r\n <button [id]=\"'arrow' + i\" class=\"arrow\" [class.disabled] = \"data?.assessmentcount < 1\" [disabled]=\"data?.assessmentcount < 1\">\r\n <i *ngIf=\"!openedCategory.includes(data?.id)\" class=\"icons\">&#xe970;</i>\r\n <i *ngIf=\"openedCategory.includes(data?.id)\" class=\"icons\">&#xe9e8;</i>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <!-- Assessment list start from here -->\r\n <div *ngIf=\"openedCategory.includes(data?.id)\" class=\"sub-list\">\r\n <ng-container *ngIf=\"data.assessmentData?.length > 0\">\r\n <div class=\"table-row\" *ngFor=\"let assessment of data.assessmentData; let j = index\" [class.active]=\"(selectedAssessmentIds).includes(assessment.id)\">\r\n <div class=\"table-column serial\">\r\n <div [id]=\"'sub-sr-no'+ i+j\" class=\"sr-no active\" appTooltip=\"{{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\" placement=\"bottom\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"true\">\r\n {{dataPerPage * (assessmentPayload.page_no - 1) + (i + 1)}}.{{j + 1}}\r\n <!-- <app-cs-radio name=\"assessment\" [value]=\"assessment.id\" [checked]=\"assessment?.id === selectedAssessment?.assessment_id && data?.id === selectedAssessment?.category_id\"\r\n (checkedEvent)=\"setAssessment(data, assessment)\"></app-cs-radio> -->\r\n <!-- (change)=\"selectGroup($event,group)\" [disabled]=\"nonRemovableGroupIds?.includes(group?.group_id)\" [checked]=\"selectedGroupIds.includes(group?.group_id)\" -->\r\n\r\n <vui-checkbox [checked]=\"(selectedAssessmentIds).includes(assessment.id)\" (change)=\"selectAssessment($event,assessment, data)\"></vui-checkbox>\r\n </div>\r\n </div>\r\n <div class=\"table-column sub-name\">\r\n <div class=\"value\" [appTooltip]=\"'Mission and message, communications to external audiences'\" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">{{assessment?.assessment_name}}</div>\r\n </div>\r\n <div class=\"table-column question\">\r\n <div class=\"label\">{{assessment?.questions}} {{assessment?.questions > 1 ? 'Questions' : 'Question'}}</div>\r\n <div class=\"buttons\">\r\n <button class=\"action-btn\" (click)=\"preview(assessment)\"><i class=\"icons\">&#xeae5;</i> Preview</button>\r\n <!-- <button class=\"action-btn\"><i class=\"icons\">&#xe9ba;</i> Edit</button> -->\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-sub-loader *ngIf=\"!data.assessmentData?.length\"></assessment-sub-loader>\r\n <!-- <app-line-loader *ngIf=\"!data.assessmentData?.length\" [loaderHeight]=\"'5'\"></app-line-loader> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n <!-- Loader loading isLoader -->\r\n <assessment-loader *ngIf=\"isLoader\"></assessment-loader>\r\n </div>\r\n <!-- No data image -->\r\n <app-no-data *ngIf=\"!assessmentCategory.data.length && !isLoader\" [noDataImage]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\" [noDataText]=\"'No Data to Display'\"></app-no-data>\r\n </div>\r\n <!--\r\n bottom floating bar which includes cancel, next button\r\n closing tab\r\n -->\r\n\r\n\r\n <vui-floating-bar (closeEvent)=\"save()\" (closeList)=\"close()\">\r\n <div class=\"counter\" *ngIf=\"selectedAssessment?.length\" appPopover (click)=\"assessmentCount.popover()\"\r\n placement=\"left\">{{selectedAssessment?.length}}</div>\r\n <div class=\"name\">\r\n <span *ngIf=\"selectedAssessment?.length === 1\">Assessment selected</span>\r\n <span *ngIf=\"selectedAssessment?.length > 1\">Assessments selected</span>\r\n </div>\r\n <app-popover #assessmentCount [dontCloseonClick]=\"true\">\r\n <div class=\"wf-action-list\">\r\n <ul class=\"action-item\">\r\n <li *ngFor=\"let element of selectedAssessment; let i =index\">\r\n <div class=\"avatar-card\">\r\n <span class=\"value\">\r\n <!-- <i class=\"icons\"\r\n (click)=\"selectAssessment({target:{checked:false}},element)\">&#xe90d;</i> -->\r\n {{element?.assessment_name}}\r\n </span>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </app-popover>\r\n\r\n </vui-floating-bar>\r\n\r\n </ng-container>\r\n</div>\r\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";::ng-deep .assessment-list{background:#fff;border-top:3px solid #1E5DD3;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .assessment-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .assessment-list-head{background:#fbfbfb;height:42px;padding:0 18px;display:flex;align-items:center;border:1px solid #f1f1f1;border-right:none}::ng-deep .assessment-list-head button.back-btn{background:transparent;border-radius:0;border:0;color:#161b2f;font-size:16px;padding:0;margin:0 8px 0 0}::ng-deep .assessment-list-title{color:#161b2f;font-size:15px;font-weight:500;margin:0!important;padding:0;line-height:21px}::ng-deep .assessment-list-close{background:transparent;border:none;outline:none;cursor:pointer;color:#000;font-size:12px;display:inline-block;padding:0}::ng-deep .assessment-list-body{padding:24px 40px 24px 36px;height:calc(100vh - 112px)}::ng-deep .assessment-list-body .search-block{position:relative}::ng-deep .assessment-list-body .search-block input{height:44px;line-height:24px;padding:10px 15px 10px 40px;outline:none;border:1px solid #7475763f;border-radius:4px;width:100%;font-size:14px;color:#747576}::ng-deep .assessment-list-body .search-block input::placeholder{font-weight:400}::ng-deep .assessment-list-body .search-block input:focus{border-color:#1e5dd3}::ng-deep .assessment-list-body .search-block i{position:absolute;left:17px;font-size:12px;font-weight:400;top:17px;pointer-events:none;color:#f1f1f1}::ng-deep .assessment-list-body .assessment-list-part{height:calc(100vh - 228px);overflow:auto;padding:8px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body .assessment-list-part::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-selected{margin-bottom:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-heading{color:#161b2f;font-size:12px;font-weight:600;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item{border:1px solid #f1f1f1;border-radius:2px;margin-bottom:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .main-list{cursor:pointer}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item.active{border-color:#1e5dd3;box-shadow:0 3px 6px #4681ef26}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row{display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row.disabled{pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column{color:#747576;height:48px;position:relative;width:100%;display:flex;align-items:center;padding:0 4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no{width:16px;background:#f8f8f8;writing-mode:vertical-lr;color:#747576;font-size:10px;font-weight:500;display:flex;height:100%;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox{position:absolute;top:8px;left:0;opacity:0;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.serial .sr-no vui-checkbox label.checkbox-item{position:unset}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name{width:calc(100% - 64px);min-width:calc(100% - 64px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.name .name-inner .value{color:#161b2f;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action{width:32px;max-width:32px;justify-content:center}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.arrow{background:transparent;border:none;border-radius:0;color:#747576;font-size:12px;padding:0;margin:0;display:flex;align-items:center;justify-content:center;height:100%;width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.action button.disabled{opacity:.5!important;pointer-events:none}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name{width:calc(100% - 232px);min-width:calc(100% - 232px)}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .name-inner{width:100%}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.sub-name .value{color:#747576;font-size:12px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;padding-right:20px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question{width:200px;max-width:200px;justify-content:flex-end}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px;margin-right:8px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;display:flex;align-items:center;margin:0}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row .table-column.question .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .table-row:hover .table-column.question .buttons{width:86px}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row{border-top:1px solid #f1f1f1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no{color:#f8f8f8}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row:hover .table-column.serial .sr-no vui-checkbox,::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row.active .table-column.serial .sr-no vui-checkbox{opacity:1}::ng-deep .assessment-list-body .assessment-list-part .assessment-list-item .sub-list .table-row .table-column{height:32px}::ng-deep .assessment-list-body ul{padding:0;margin:0}::ng-deep .assessment-list-body ul.assessment{max-height:calc(100vh - 240px);overflow:auto;padding:16px 12px 0 0;width:calc(100% + 12px)}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-track{background-color:#fff;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::ng-deep .assessment-list-body ul.assessment::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}::ng-deep .assessment-list-body ul.assessment li{padding:0 0 12px;list-style:none;display:flex;align-items:center;justify-content:space-between}::ng-deep .assessment-list-body ul.assessment li vui-checkbox{width:calc(100% - 260px)}::ng-deep .assessment-list-body ul.assessment li vui-checkbox .radio-item .value .name{font-size:12px;color:#161b2f;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .assessment-list-body ul.assessment li .right{display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .label{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding-left:4px;padding-right:4px;line-height:12px}::ng-deep .assessment-list-body ul.assessment li .right .buttons{display:flex;width:0;overflow:hidden;transition:all .2s ease-in-out}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn{background:#fff;border:1px solid #f1f1f1;border-radius:2px;color:#1e5dd3;font-size:11px;font-weight:500;line-height:24px;text-transform:uppercase;padding:0 8px;margin-left:12px;display:flex;align-items:center}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn i{margin-right:4px}::ng-deep .assessment-list-body ul.assessment li .right .buttons button.action-btn+button{margin-left:4px}::ng-deep .assessment-list-body ul.assessment li:hover .right .buttons{width:156px}.within-part{display:flex;align-items:center;padding-right:12px}.within-part .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;font-size:12px;color:#747576}.within-box{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:9px;font-weight:600;text-transform:uppercase;padding:0 4px;margin-right:8px;line-height:12px}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#ffffff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.wf-action-list ul.action-item li button .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:calc(100% - 16px)}.wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}.wf-action-list ul.action-item li button:hover{background:#f3f3f3}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;min-width:24px!important;overflow:hidden;background:#1E5DD3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{background:#fff;width:100%;height:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card i.delete-icon{color:#d93b41;cursor:pointer;font-size:14px}.wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.wf-action-list ul.action-item li .chip-item i{color:#747576;margin-left:7px;font-size:10px;cursor:pointer;display:inline-flex}.wf-action-list ul.action-item li .chip-item span{display:block;width:auto;width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.wf-action-list ul.action-item li .chip-item span.id{font-size:9px}.wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.wf-action-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.wf-action-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}\n"] }]
@@ -289,4 +289,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
289
289
  }], cancelAssessment: [{
290
290
  type: Output
291
291
  }] } });
292
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS9jcmVhdGUtcHJvZ3JhbS11aS9hc3Nlc3NtZW50LXBpY2tlci9hc3Nlc3NtZW50LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL2Fzc2Vzc21lbnQtcGlja2VyL2Fzc2Vzc21lbnQtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVW5DLE1BQU0sT0FBTyx5QkFBeUI7SUFxRHBDLFlBQ1UsaUJBQW9DLEVBQ3BDLElBQWlCO1FBRGpCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQXREM0IsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUVsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ1AsV0FBTSxHQUFHLEtBQUssQ0FBQTtRQUN2QixtQkFBYyxHQUFrQixFQUFFLENBQUM7UUFDbkMsc0JBQWlCLEdBQUc7WUFDbEIsWUFBWSxFQUFDLEVBQUU7WUFDZixPQUFPLEVBQUMsR0FBRztZQUNYLEtBQUssRUFBQyxRQUFRO1lBQ2QsV0FBVyxFQUFFLEVBQUU7WUFDZixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFBO1FBRUQsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEIs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bnB1dCwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50U2VydmljZSB9IGZyb20gJy4vYXNzZXNzbWVudC5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2Fzc2Vzc21lbnQtcGlja2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXNzZXNzbWVudC1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2Vzc21lbnQtcGlja2VyLmNvbXBvbmVudC5sZXNzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRGF0YTogYW55O1xyXG4gIHN1Ykxpc3QgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VkaXQgPSBmYWxzZVxyXG4gIG9wZW5lZENhdGVnb3J5OiBBcnJheTxudW1iZXI+ID0gW107XHJcbiAgYXNzZXNzbWVudFBheWxvYWQgPSB7XHJcbiAgICBzZWFyY2hfdGl0bGU6XCJcIixcclxuICAgIHBhZ2Vfbm86XCIxXCIsXHJcbiAgICBzdGF0ZTpcIkFDVElWRVwiLFxyXG4gICAgc2VhcmNoX3RleHQ6ICcnLFxyXG4gICAgYWxwaGFiZXRfZmlsdGVyOiAnJ1xyXG4gIH1cclxuXHJcbiAgZGF0YVBlclBhZ2UgPSAwO1xyXG5cclxuICBhc3Nlc3NtZW50Q2F0ZWdvcnk6IGFueSA9e1xyXG4gICAgZGF0YTogW10sXHJcbiAgICB0b3RhbFBhZ2U6IDAsXHJcbiAgICB0b3RhbFJlY29yZHM6IDAsXHJcbiAgICBzdGFydF92YWx1ZTogMCxcclxuICAgIGVuZF92YWx1ZTogMCxcclxuICAgIGN1cnJlbnRQYWdlOiAwXHJcbiAgfTtcclxuICBpc0xvYWRlciA9IGZhbHNlXHJcblxyXG5cclxuICBASW5wdXQoJ3NlbGVjdGVkQXNzZXNzbWVudCcpIHNldCBzZXRTZWxlY3RlZCh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAodmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCkge1xyXG4gICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyID0gWy4uLnZhbHVlXTtcclxuICAgICAvL3RoaXMuc2V0Q2F0ZWdvcnlBbmRBc3Nlc3NtZW50KCk7XHJcbiAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuZm9yRWFjaCgoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeS5wdXNoKGVsZT8uY2F0ZWdvcnlfaWQpO1xyXG4gICAgLy8gICB0aGlzLnNob3dTdWJMaXN0KGluZGV4LGVsZT8uY2F0ZWdvcnlfaWQpO1xyXG4gICAgIH0pXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIGlzRGVsZXRlZCA9IGZhbHNlO1xyXG5cclxuICBzZWFyY2hBc3Nlc3NtZW50cyA9ICcnO1xyXG4gIHByZXZpZXdRdWVzdGlvbkRhdGEgITogYW55O1xyXG4gIGlzUHJldmlldyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkQXNzZXNzbWVudERhdGE6IGFueSA9IFtdO1xyXG5cclxuICBAT3V0cHV0KCkgb25Bc3Nlc3NtZW50U2VsZWN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBAT3V0cHV0KCkgY2FuY2VsQXNzZXNzbWVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50QXJyOiBhbnkgPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGFzc2Vzc21lbnRTZXJ2aWNlOiBBc3Nlc3NtZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aCA6QXV0aFNlcnZpY2VcclxuICApIHtcclxuXHJcbiAgICB0aGlzLmRhdGFQZXJQYWdlID0gMzA7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coXCJjaGFuZ2VzID09PT0+XCIsIGNoYW5nZXMsIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50RGF0YSwgdGhpcy5hc3Nlc3NtZW50Q2F0ZWdvcnkpO1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbmltYXRpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcclxuICAgIH0sIDMwMCk7XHJcbiAgfVxyXG5cclxuICBvbkFzc2Vzc21lbnRTZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0YSA9IGV2ZW50O1xyXG4gIH1cclxuXHJcbiAgcHJldmlldyhldnQ6YW55KXtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZS5nZXRBc3Nlc3NtZW50UXVlc3Rpb25zKGV2dD8uaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDoocmVzOmFueSk9PntcclxuICAgICAgICAgIGNvbnNvbGUubG9nKFwicmVzXCIscmVzKTtcclxuICAgICAgICAgIHRoaXMuYXV0aC5wcmV2aWV3UGFuZWwubmV4dCh0cnVlKVxyXG4gICAgICAgICAgdGhpcy5pc1ByZXZpZXcgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5wcmV2aWV3UXVlc3Rpb25EYXRhID0gcmVzO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcmV2aWV3QmFjaygpe1xyXG4gICAgdGhpcy5pc1ByZXZpZXcgPSBmYWxzZTtcclxuICAgIHRoaXMucHJldmlld1F1ZXN0aW9uRGF0YSA9IHt9O1xyXG4gICAgdGhpcy5hdXRoLnByZXZpZXdQYW5lbC5uZXh0KGZhbHNlKVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaW5kZXggOiBBY2NlcHQgaW5kZXggb2YgZWxlbWVudFBvc2l0aW9uXHJcbiAgICpcclxuICAgKi9cclxuICBzaG93U3ViTGlzdChpbmRleDogbnVtYmVyLCBpZDogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZyhcInRoaXMub3BlbmVkQ2F0ZWdvcnlkYXNhc2ZzYSA9PT5cIiwgdGhpcy5vcGVuZWRDYXRlZ29yeSxpbmRleCxpZClcclxuICAgIGlmKHRoaXMub3BlbmVkQ2F0ZWdvcnkuaW5jbHVkZXMoaWQpKSB7XHJcbiAgICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkgPSB0aGlzLm9wZW5lZENhdGVnb3J5LmZpbHRlcihlbGUgPT4gZWxlICE9PSBpZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm9wZW5lZENhdGVnb3J5LnB1c2goaWQpO1xyXG4gICAgICB0aGlzLmdldEFzc2Vzc21lbnRMaXN0KGlkKVxyXG4gICAgfVxyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLm9wZW5lZENhdGVnb3J5ID09PlwiLCB0aGlzLm9wZW5lZENhdGVnb3J5KVxyXG4gICAgcmV0dXJuICB0aGlzLm9wZW5lZENhdGVnb3J5XHJcbiAgfVxyXG5cclxuXHJcbiAgZXhwYW5kQ2F0ZWdvcnkoY2F0ZWdvcnlJZDphbnkpe1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeT8uZGF0YT8uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09PSBjYXRlZ29yeUlkKTtcclxuICAgICBpZih0aGlzLm9wZW5lZENhdGVnb3J5LmluY2x1ZGVzKGNhdGVnb3J5SWQpICYmICB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeS5kYXRhW2luZGV4XS5hc3Nlc3NtZW50RGF0YSApe1xyXG5cclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeSA9IHRoaXMub3BlbmVkQ2F0ZWdvcnkuZmlsdGVyKGVsZSA9PiBlbGUgIT09IGNhdGVnb3J5SWQpO1xyXG4gICAgIH1lbHNle1xyXG5cclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeS5wdXNoKGNhdGVnb3J5SWQpO1xyXG4gICAgICB0aGlzLmdldEFzc2Vzc21lbnRMaXN0KGNhdGVnb3J5SWQpXHJcbiAgICAgfVxyXG4gIH1cclxuICAvLyBUT0RPOiBQYWdpbmF0aW9uXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZXZlbnQgOiBwYWdlIG51bWJlciB0aGF0IGhhcyBiZWVuIHNlbGVjdGVkXHJcbiAgICovXHJcbiAgb25QYWdlU2VsZWN0aW9uKGV2ZW50OiBudW1iZXIpIHtcclxuICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkgPSBbXTtcclxuICAgIGNvbnNvbGUubG9nKFwiMTExXCIpXHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLnBhZ2Vfbm8gPSBldmVudC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBTZWFyY2hcclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWFyY2ggOiBzZWFyY2ggdGV4dFxyXG4gICAqL1xyXG4gIG9uQXNzZXNzbWVudFNlYXJjaChzZWFyY2g6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcGVuZWRDYXRlZ29yeSA9IFtdO1xyXG4gICAgY29uc29sZS5sb2coXCIyMjJcIilcclxuICAgIHRoaXMuYXNzZXNzbWVudFBheWxvYWQucGFnZV9ubyA9IFwiMVwiO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50UGF5bG9hZC5zZWFyY2hfdGl0bGUgPSBzZWFyY2g7XHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLnNlYXJjaF90ZXh0ID0gc2VhcmNoO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBGaWx0ZXIgYnkgYWxwaGFiZXRcclxuLyoqXHJcbiAqXHJcbiAqIEBwYXJhbSBldmVudCA6IEFzc2Vzc21lbnQgY2F0ZWdvcnkgZmlsdGVyIG9mIEFscGhhYmV0XHJcbiAqL1xyXG4gIG9uQWxwaGFiZXRTZWxlY3RlZChldmVudDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLm9wZW5lZENhdGVnb3J5ID0gW107XHJcbiAgICBjb25zb2xlLmxvZyhcIjMzM1wiKVxyXG4gICAgdGhpcy5hc3Nlc3NtZW50UGF5bG9hZC5wYWdlX25vID0gXCIxXCI7XHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLmFscGhhYmV0X2ZpbHRlciA9IGV2ZW50O1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50UGF5bG9hZC5zZWFyY2hfdGV4dCA9ICcnO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vIFRPRE86IENhbGwgQVBJIG1ldGhvZFxyXG4gIGdldEFzc2Vzc21lbnRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2UuZ2V0QXNzZXNzbWVudENhdGVnb3J5KHRoaXMuYXNzZXNzbWVudFBheWxvYWQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5hc3Nlc3NtZW50Q2F0ZWdvcnkgPSByZXM7XHJcblxyXG4gICAgICBpZih0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycj8ubGVuZ3RoKSB7XHJcbiAgICAgICAvLyB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyciA9ICBbLi4uIG5ldyBTZXQodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIpXVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcblxyXG5cclxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVzLmRhdGEuZmluZEluZGV4KChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgPT09IGVsZS5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgICB0aGlzLmV4cGFuZENhdGVnb3J5KGVsZS5jYXRlZ29yeV9pZCk7XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuZm9yRWFjaCgoZWxlOmFueSxpbmRleDphbnkpID0+IHtcclxuICAgICAgICAvLyAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkucHVzaChlbGU/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAvLyAgIHRoaXMuc2hvd1N1Ykxpc3QoaW5kZXgsZWxlPy5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc0xvYWRlciA9IGZhbHNlO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8vIFRPRE86IENhbGwgU3ViIGRhdGEgQVBJIG1ldGhvZFxyXG5cclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCA6IEFzc2Vzc21lbnQgY2F0ZWdvcnkgaWRcclxuICAgKi9cclxuICBnZXRBc3Nlc3NtZW50TGlzdChpZDogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZyhcImFzc3NcIixpZClcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHNlYXJjaF90aXRsZTpcIlwiLFxyXG4gICAgfVxyXG4gICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZS5nZXRBc3Nlc3NtZW50TGlzdChwYXlsb2FkLCBpZCkuc3Vic2NyaWJlKChyZXM6IEFycmF5PGFueT4pID0+IHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeT8uZGF0YT8uZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmlkID09PSBpZCk7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiaW5kZXhlclwiLGluZGV4LHRoaXMuYXNzZXNzbWVudENhdGVnb3J5KVxyXG4gICAgICBpZihpbmRleCA+IC0xICl7XHJcbiAgICAgICAgdGhpcy5hc3Nlc3NtZW50Q2F0ZWdvcnkuZGF0YVtpbmRleF0uYXNzZXNzbWVudERhdGEgPSBbLi4ubmV3IFNldChyZXMpXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc29sZS5sb2coXCJhc3NcIiwpXHJcbiAgICAgIGlmKHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyPy5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09PSBpZCk7XHJcbiAgICAgICAgLy8gaWYoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgLy8gICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycltpbmRleF0uYXNzZXNzbWVudElkcyAgPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycltpbmRleF0uYXNzZXNzbWVudElkcy5tYXAoKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gICAgIGVsZSA9IHJlcy5maW5kKChkYXRhOiBhbnkpID0+IGRhdGEuaWQgPT09IGVsZSk7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiBlbGU7XHJcbiAgICAgICAgLy8gICB9KTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50Q2F0ZWdvcmllc0lkczphbnkgPSBbXTtcclxuICBzZWxlY3RlZEFzc2Vzc21lbnRJZHM6YW55ID0gW107XHJcbiAgc2VsZWN0ZWRBc3Nlc3NtZW50OmFueSA9IFtdO1xyXG5cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBTZWxlY3RzIGl0ZW0gb3IgZGVzZWxlY3QgYSBpdG1lXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqIEBwYXJhbSBwYXlsb2FkXHJcbiAgICovXHJcbiAgc2VsZWN0QXNzZXNzbWVudChldnQ6IGFueSwgcGF5bG9hZDogYW55LCBjYXRlZ29yeTogYW55KSB7XHJcbiAgIGlmKGV2dD8udGFyZ2V0Py5jaGVja2VkKXtcclxuICAgICBjb25zb2xlLmxvZyhcInNlbGVjdGVkXCIsdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIpXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZpbmRJbmRleCgoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeV9pZCA9PT0gY2F0ZWdvcnkuaWQpO1xyXG4gICAgaWYoaW5kZXggPiAtMSkge1xyXG4gICAgIGNvbnN0ICBjdXJyZW50Q2F0ZWdvcnlBc3Nlc3NtZW50ID0gIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyW2luZGV4XS5hc3Nlc3NtZW50SWRzO1xyXG4gICAgIGN1cnJlbnRDYXRlZ29yeUFzc2Vzc21lbnQucHVzaChwYXlsb2FkKTtcclxuICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycltpbmRleF0uYXNzZXNzbWVudElkcyA9IHRoaXMudW5pcXVlQnlQcm9wKGN1cnJlbnRDYXRlZ29yeUFzc2Vzc21lbnQsJ2lkJylcclxuICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyciA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycilcclxuICAgICB0aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLnB1c2goe1xyXG4gICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeS5pZCxcclxuICAgICAgICBhc3Nlc3NtZW50SWRzOiBbcGF5bG9hZF1cclxuICAgICAgfSlcclxuXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyKVxyXG4gICAgICB0aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgfVxyXG4gICB9ZWxzZXtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuZmluZEluZGV4KChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09PSBjYXRlZ29yeS5pZCk7XHJcbiAgICBpZihpbmRleCA+IC0xKXtcclxuICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnJbaW5kZXhdLmFzc2Vzc21lbnRJZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycltpbmRleF0uYXNzZXNzbWVudElkcy5maWx0ZXIoKGFzc2Vzc21lbnQ6IGFueSkgPT4gYXNzZXNzbWVudC5pZCAhPT0gcGF5bG9hZC5pZCk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyKVxyXG4gICAgICB0aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgICBpZiggdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnJbaW5kZXhdLmFzc2Vzc21lbnRJZHM/Lmxlbmd0aCA9PT0gMCl7XHJcbiAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIpXHJcbiAgICAgICB0aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgIH1cclxuXHJcbn1cclxuXHJcbnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpe1xyXG4gIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50Q2F0ZWdvcmllc0lkcyA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZpbHRlcigoY2F0OmFueSkgPT4gY2F0Py5hc3Nlc3NtZW50SWRzPy5sZW5ndGggPiAwKT8ubWFwKChlbGU6YW55KSA9PiBlbGU/LmNhdGVnb3J5X2lkKS5mbGF0KCk7XHJcbiAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRJZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5tYXAoKGNhdDphbnkpID0+IGNhdD8uYXNzZXNzbWVudElkcy5tYXAoKGVsZTphbnkpID0+IGVsZT8uaWQpKS5mbGF0KCk7XHJcbiAgY29uc29sZS5sb2coXCJ0aGlzLnNlbGVjdGVkQXNzZXNzbWVudElkcyA9PT5cIiwgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRJZHMpXHJcbiAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnQgPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5tYXAoKGNhdDphbnkpID0+IGNhdD8uYXNzZXNzbWVudElkcy5tYXAoKGVsZTphbnkpID0+IGVsZSkpLmZsYXQoKTtcclxufVxyXG5cclxuXHJcblxyXG5cclxuICAvLyBUT0RPOiBEaXNwbGF5IHNlbGVjdGVkIGRhdGEgaW4gYm90dG9tIGZsb2F0aW5nIGJhciB3aXRoIG5leHQgZW5hYmxlZCBidXR0b24gaGF2aW5nXHJcblxyXG4gIC8vIFRPRE86IFNlbmQgZGF0YSBpbiBwYXlsb2FkIG9mIGNyZWF0ZSBSZXNwb25zaWJpbGl0eSBmb3JtXHJcblxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLm9uQXNzZXNzbWVudFNlbGVjdC5lbWl0KHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyKVxyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNhbmNlbEFzc2Vzc21lbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgICAvKipcclxuICogIyMjIyBEZXNjcmlwdGlvblxyXG4gKlxyXG4gKiBSZXR1cm5zIHRoZSB1bmlxdWUgYXJyYXkgb2Ygb2JqZWN0IGJhc2VkIG9uIHVuaXF1ZSBrZXlcclxuICogQHBhcmFtIGFycmF5XHJcbiAqIEBwYXJhbSBrZXlcclxuICogQHJldHVybnNcclxuICovXHJcbiAgICB1bmlxdWVCeVByb3AoYXJyYXk6IGFueSwga2V5OiBzdHJpbmcpIHtcclxuICAgICAgcmV0dXJuIEFycmF5LmZyb20oXHJcbiAgICAgICAgYXJyYXlcclxuICAgICAgICAgIC5yZWR1Y2UoXHJcbiAgICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXHJcbiAgICAgICAgICAgICAgaXRlbSAmJiBpdGVtW2tleV0gJiYgYWNjLnNldChpdGVtW2tleV0sIGl0ZW0pLFxyXG4gICAgICAgICAgICAgIGFjY1xyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICBuZXcgTWFwKClcclxuICAgICAgICAgIClcclxuICAgICAgICAgIC52YWx1ZXMoKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8YXBwLXByZXZpZXcgKm5nSWY9XCJpc1ByZXZpZXdcIiBbcXVlc3Rpb25EYXRhXT1cInByZXZpZXdRdWVzdGlvbkRhdGFcIiAocHJldmlld0JhY2spPVwicHJldmlld0JhY2soKVwiPjwvYXBwLXByZXZpZXc+XHJcbjxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXNzbWVudC1saXN0LWhlYWRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJhY2stYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFkOzwvaT4gLS0+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtdGl0bGVcIj5TZWxlY3QgQXNzZXNzbWVudChzKTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoQXNzZXNzbWVudHNcIiAoY2hhbmdlKT1cIm9uQXNzZXNzbWVudFNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIEFzc2Vzc21lbnQgQ2F0ZWdvcnlcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHBhZ2luYXRpb25cclxuXHJcbiAgICAgICAgICAgICAgICBbcGFnZUNvdW50XT1cImFzc2Vzc21lbnRDYXRlZ29yeT8udG90YWxQYWdlXCJcclxuICAgICAgICAgICAgICAgIFt0b3RhbF09XCJhc3Nlc3NtZW50Q2F0ZWdvcnk/LnRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiYXNzZXNzbWVudENhdGVnb3J5Py5zdGFydF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW5kXT1cImFzc2Vzc21lbnRDYXRlZ29yeT8uZW5kX3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFthY3RpdmVBbHBoYWJldF09XCInJ1wiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRBbHBoYWJldCk9XCJvbkFscGhhYmV0U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQYWdlKT1cIm9uUGFnZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFzc2Vzc21lbnRDYXRlZ29yeS5kYXRhLmxlbmd0aCA9PT0gMCAmJiAhaXNMb2FkZXJcIiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tZGF0YSAgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1wiIFtub0RhdGFUZXh0XT1cIidObyBBc3Nlc3NtZW50cyBGb3VuZC4nXCI+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhc3Nlc3NtZW50Q2F0ZWdvcnkuZGF0YS5sZW5ndGggfHwgaXNMb2FkZXJcIiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0ICYmIHNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVwiIGNsYXNzPVwiYXNzZXNzbWVudC1saXN0LXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1oZWFkaW5nXCI+QXNzZXNzbWVudCBhbHJlYWR5IHNlbGVjdGVkIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsIGRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZGlzYWJsZWRcIiBbY2hlY2tlZF09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj48L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBzdWItbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e3NlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aXRoaW4tYm94XCI+V2l0aGluPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8uY2F0ZWdvcnlfbmFtZSArIChzZWxlY3RlZEFzc2Vzc21lbnQ/LmNhdGVnb3J5X2RldGFpbHM/LnBhcmVudF90cmVlID8gJyA+ICcgKyBzZWxlY3RlZEFzc2Vzc21lbnQ/LmNhdGVnb3J5X2RldGFpbHM/LnBhcmVudF90cmVlIDogJycpXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7c2VsZWN0ZWRBc3Nlc3NtZW50Py5jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9uYW1lICsgKHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8ucGFyZW50X3RyZWUgPyAnID4gJyArIHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8ucGFyZW50X3RyZWUgOiAnJyl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gcXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e3NlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9uc319IHt7c2VsZWN0ZWRBc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMSA/ICdRdWVzdGlvbnMnOiAnUXVlc3Rpb24nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0blwiIChjbGljayk9XCJwcmV2aWV3KHNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHMpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhZTU7PC9pPiBQcmV2aWV3PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG5cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYzs8L2k+IEVkaXQ8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtaGVhZGluZ1wiPlNlbGVjdCBhbiBBc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICAgICAgICAgICBBc3Nlc3NtZW50IGNhdGVnb3J5IGxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgYWN0aXZlIGNsYXNzIGlzIHVzZWQgZm9yIGhpZ2hsaWdodGluZyBvcGVuZWQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhc3Nlc3NtZW50Q2F0ZWdvcnkuZGF0YTsgbGV0ICBpID0gaW5kZXg7XCIgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwib3BlbmVkQ2F0ZWdvcnkuaW5jbHVkZXMoZGF0YT8uaWQpIHx8IGRhdGEuaWQgPT09IHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvdyBtYWluLWxpc3RcIiAoY2xpY2spPVwiZXhwYW5kQ2F0ZWdvcnkoZGF0YT8uaWQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRhdGE/LmFzc2Vzc21lbnRjb3VudCA8IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NyLW5vJyArIGlcIiBjbGFzcz1cInNyLW5vXCIgW2FwcFRvb2x0aXBdPVwiaSArIDFcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3tkYXRhUGVyUGFnZSAqIChhc3Nlc3NtZW50UGF5bG9hZC5wYWdlX25vIC0gMSkgKyAoaSArIDEpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCIgW2FwcFRvb2x0aXBdPVwiZGF0YS5jYXRlZ29yeV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZGF0YT8uY2F0ZWdvcnlfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydFwiICpuZ0lmPVwiZGF0YT8ucGFyZW50X3RyZWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2l0aGluLWJveFwiPldpdGhpbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCJkYXRhLnBhcmVudF90cmVlXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZGF0YT8ucGFyZW50X3RyZWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbaWRdPVwiJ2Fycm93JyArIGlcIiBjbGFzcz1cImFycm93XCIgW2NsYXNzLmRpc2FibGVkXSA9IFwiZGF0YT8uYXNzZXNzbWVudGNvdW50IDwgMVwiIFtkaXNhYmxlZF09XCJkYXRhPy5hc3Nlc3NtZW50Y291bnQgPCAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIW9wZW5lZENhdGVnb3J5LmluY2x1ZGVzKGRhdGE/LmlkKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTcwOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJvcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhkYXRhPy5pZClcIiBjbGFzcz1cImljb25zXCI+JiN4ZTllODs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFzc2Vzc21lbnQgbGlzdCBzdGFydCBmcm9tIGhlcmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhkYXRhPy5pZClcIiBjbGFzcz1cInN1Yi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5hc3Nlc3NtZW50RGF0YT8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIiAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiBkYXRhLmFzc2Vzc21lbnREYXRhOyBsZXQgaiA9IGluZGV4XCIgW2NsYXNzLmFjdGl2ZV09XCIoc2VsZWN0ZWRBc3Nlc3NtZW50SWRzKS5pbmNsdWRlcyhhc3Nlc3NtZW50LmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3N1Yi1zci1ubycrIGkralwiIGNsYXNzPVwic3Itbm8gYWN0aXZlXCIgYXBwVG9vbHRpcD1cInt7ZGF0YVBlclBhZ2UgKiAoYXNzZXNzbWVudFBheWxvYWQucGFnZV9ubyAtIDEpICsgKGkgKyAxKX19Lnt7aiArIDF9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGFQZXJQYWdlICogKGFzc2Vzc21lbnRQYXlsb2FkLnBhZ2Vfbm8gLSAxKSArIChpICsgMSl9fS57e2ogKyAxfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhcHAtY3MtcmFkaW8gbmFtZT1cImFzc2Vzc21lbnRcIiBbdmFsdWVdPVwiYXNzZXNzbWVudC5pZFwiIFtjaGVja2VkXT1cImFzc2Vzc21lbnQ/LmlkID09PSBzZWxlY3RlZEFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgJiYgZGF0YT8uaWQgPT09IHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0QXNzZXNzbWVudChkYXRhLCBhc3Nlc3NtZW50KVwiPjwvYXBwLWNzLXJhZGlvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIChjaGFuZ2UpPVwic2VsZWN0R3JvdXAoJGV2ZW50LGdyb3VwKVwiIFtkaXNhYmxlZF09XCJub25SZW1vdmFibGVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVwiIFtjaGVja2VkXT1cInNlbGVjdGVkR3JvdXBJZHMuaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVwiIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94IFtjaGVja2VkXT1cIihzZWxlY3RlZEFzc2Vzc21lbnRJZHMpLmluY2x1ZGVzKGFzc2Vzc21lbnQuaWQpXCIgKGNoYW5nZSk9XCJzZWxlY3RBc3Nlc3NtZW50KCRldmVudCxhc3Nlc3NtZW50LCBkYXRhKVwiPjwvdnVpLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHN1Yi1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCInTWlzc2lvbiBhbmQgbWVzc2FnZSwgY29tbXVuaWNhdGlvbnMgdG8gZXh0ZXJuYWwgYXVkaWVuY2VzJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2Fzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e2Fzc2Vzc21lbnQ/LnF1ZXN0aW9uc319IHt7YXNzZXNzbWVudD8ucXVlc3Rpb25zID4gMSA/ICdRdWVzdGlvbnMnIDogJ1F1ZXN0aW9uJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuXCIgKGNsaWNrKT1cInByZXZpZXcoYXNzZXNzbWVudClcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZWFlNTs8L2k+IFByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMb2FkZXIgbG9hZGluZyBpc0xvYWRlciAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNzZXNzbWVudC1zdWItbG9hZGVyICpuZ0lmPVwiIWRhdGEuYXNzZXNzbWVudERhdGE/Lmxlbmd0aFwiPjwvYXNzZXNzbWVudC1zdWItbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YXBwLWxpbmUtbG9hZGVyICpuZ0lmPVwiIWRhdGEuYXNzZXNzbWVudERhdGE/Lmxlbmd0aFwiIFtsb2FkZXJIZWlnaHRdPVwiJzUnXCI+PC9hcHAtbGluZS1sb2FkZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBMb2FkZXIgbG9hZGluZyBpc0xvYWRlciAgLS0+XHJcbiAgICAgICAgICAgICAgICA8YXNzZXNzbWVudC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXNzZXNzbWVudC1sb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIE5vIGRhdGEgaW1hZ2UgIC0tPlxyXG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCIhYXNzZXNzbWVudENhdGVnb3J5LmRhdGEubGVuZ3RoICYmICFpc0xvYWRlclwiIFtub0RhdGFJbWFnZV09XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcIiBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSB0byBEaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICBib3R0b20gZmxvYXRpbmcgYmFyIHdoaWNoIGluY2x1ZGVzIGNhbmNlbCwgbmV4dCBidXR0b25cclxuICAgICAgICAgICAgY2xvc2luZyB0YWJcclxuICAgICAgICAgLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgPHZ1aS1mbG9hdGluZy1iYXIgIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkQXNzZXNzbWVudD8ubGVuZ3RoXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzZXNzbWVudENvdW50LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tzZWxlY3RlZEFzc2Vzc21lbnQ/Lmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRBc3Nlc3NtZW50Py5sZW5ndGggPT09IDFcIj5Bc3Nlc3NtZW50IHNlbGVjdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEFzc2Vzc21lbnQ/Lmxlbmd0aCA+IDFcIj5Bc3Nlc3NtZW50cyBzZWxlY3RlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNhc3Nlc3NtZW50Q291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkQXNzZXNzbWVudDsgbGV0IGkgPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXNzZXNzbWVudCh7dGFyZ2V0OntjaGVja2VkOmZhbHNlfX0sZWxlbWVudClcIj4mI3hlOTBkOzwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbGVtZW50Py5hc3Nlc3NtZW50X25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuXHJcbiAgICAgICAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXNzbWVudC1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS9jcmVhdGUtcHJvZ3JhbS11aS9hc3Nlc3NtZW50LXBpY2tlci9hc3Nlc3NtZW50LXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL2NyZWF0ZS1wcm9ncmFtLXVpL2Fzc2Vzc21lbnQtcGlja2VyL2Fzc2Vzc21lbnQtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTbkMsTUFBTSxPQUFPLHlCQUF5QjtJQWtEcEMsWUFDVSxpQkFBb0MsRUFDcEMsSUFBaUI7UUFEakIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxTQUFJLEdBQUosSUFBSSxDQUFhO1FBbkQzQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDUCxXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLG1CQUFjLEdBQWtCLEVBQUUsQ0FBQztRQUNuQyxzQkFBaUIsR0FBRztZQUNsQixZQUFZLEVBQUUsRUFBRTtZQUNoQixPQUFPLEVBQUUsR0FBRztZQUNaLEtBQUssRUFBRSxRQUFRO1lBQ2YsV0FBVyxFQUFFLEVBQUU7WUFDZixlQUFlLEVBQUUsRUFBRTtTQUNwQixDQUFDO1FBRUYsZ0JBQVcsR0FBRyxDQUFDLENBQUM7UUFFaEIs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QUFtQjtrSUFRcEIsTUFBTTtzQkFBZCxLQUFLO2dCQXNCMkIsV0FBVztzQkFBM0MsS0FBSzt1QkFBQyxvQkFBb0I7Z0JBZ0JsQixzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBc3Nlc3NtZW50U2VydmljZSB9IGZyb20gJy4vYXNzZXNzbWVudC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXNzZXNzbWVudC1waWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3Nlc3NtZW50LXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXNzZXNzbWVudC1waWNrZXIuY29tcG9uZW50Lmxlc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFzc2Vzc21lbnRQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkRGF0YTogYW55O1xyXG4gIHN1Ykxpc3QgPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc0VkaXQgPSBmYWxzZTtcclxuICBvcGVuZWRDYXRlZ29yeTogQXJyYXk8bnVtYmVyPiA9IFtdO1xyXG4gIGFzc2Vzc21lbnRQYXlsb2FkID0ge1xyXG4gICAgc2VhcmNoX3RpdGxlOiAnJyxcclxuICAgIHBhZ2Vfbm86ICcxJyxcclxuICAgIHN0YXRlOiAnQUNUSVZFJyxcclxuICAgIHNlYXJjaF90ZXh0OiAnJyxcclxuICAgIGFscGhhYmV0X2ZpbHRlcjogJycsXHJcbiAgfTtcclxuXHJcbiAgZGF0YVBlclBhZ2UgPSAwO1xyXG5cclxuICBhc3Nlc3NtZW50Q2F0ZWdvcnk6IGFueSA9IHtcclxuICAgIGRhdGE6IFtdLFxyXG4gICAgdG90YWxQYWdlOiAwLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gICAgc3RhcnRfdmFsdWU6IDAsXHJcbiAgICBlbmRfdmFsdWU6IDAsXHJcbiAgICBjdXJyZW50UGFnZTogMCxcclxuICB9O1xyXG4gIGlzTG9hZGVyID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgnc2VsZWN0ZWRBc3Nlc3NtZW50Jykgc2V0IHNldFNlbGVjdGVkKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyID0gWy4uLnZhbHVlXTtcclxuICAgICAgLy90aGlzLnNldENhdGVnb3J5QW5kQXNzZXNzbWVudCgpO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5mb3JFYWNoKChlbGU6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkucHVzaChlbGU/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAvLyAgIHRoaXMuc2hvd1N1Ykxpc3QoaW5kZXgsZWxlPy5jYXRlZ29yeV9pZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaXNEZWxldGVkID0gZmFsc2U7XHJcblxyXG4gIHNlYXJjaEFzc2Vzc21lbnRzID0gJyc7XHJcbiAgcHJldmlld1F1ZXN0aW9uRGF0YSE6IGFueTtcclxuICBpc1ByZXZpZXcgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEFzc2Vzc21lbnREYXRhOiBhbnkgPSBbXTtcclxuXHJcbiAgQE91dHB1dCgpIG9uQXNzZXNzbWVudFNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQE91dHB1dCgpIGNhbmNlbEFzc2Vzc21lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHNlbGVjdGVkQXNzZXNzbWVudEFycjogYW55ID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50U2VydmljZTogQXNzZXNzbWVudFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICB0aGlzLmRhdGFQZXJQYWdlID0gMzA7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2V0QXNzZXNzbWVudENhdGVnb3J5TGlzdCgpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XHJcbiAgICB9LCAzMDApO1xyXG4gIH1cclxuXHJcbiAgb25Bc3Nlc3NtZW50U2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGEgPSBldmVudDtcclxuICB9XHJcblxyXG4gIHByZXZpZXcoZXZ0OiBhbnkpIHtcclxuICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2UuZ2V0QXNzZXNzbWVudFF1ZXN0aW9ucyhldnQ/LmlkKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmF1dGgucHJldmlld1BhbmVsLm5leHQodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5pc1ByZXZpZXcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMucHJldmlld1F1ZXN0aW9uRGF0YSA9IHJlcztcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJldmlld0JhY2soKSB7XHJcbiAgICB0aGlzLmlzUHJldmlldyA9IGZhbHNlO1xyXG4gICAgdGhpcy5wcmV2aWV3UXVlc3Rpb25EYXRhID0ge307XHJcbiAgICB0aGlzLmF1dGgucHJldmlld1BhbmVsLm5leHQoZmFsc2UpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaW5kZXggOiBBY2NlcHQgaW5kZXggb2YgZWxlbWVudFBvc2l0aW9uXHJcbiAgICpcclxuICAgKi9cclxuICBzaG93U3ViTGlzdChpbmRleDogbnVtYmVyLCBpZDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5vcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhpZCkpIHtcclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeSA9IHRoaXMub3BlbmVkQ2F0ZWdvcnkuZmlsdGVyKChlbGUpID0+IGVsZSAhPT0gaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeS5wdXNoKGlkKTtcclxuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50TGlzdChpZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5vcGVuZWRDYXRlZ29yeTtcclxuICB9XHJcblxyXG4gIGV4cGFuZENhdGVnb3J5KGNhdGVnb3J5SWQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeT8uZGF0YT8uZmluZEluZGV4KFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS5pZCA9PT0gY2F0ZWdvcnlJZFxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5vcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhjYXRlZ29yeUlkKSAmJlxyXG4gICAgICB0aGlzLmFzc2Vzc21lbnRDYXRlZ29yeS5kYXRhW2luZGV4XS5hc3Nlc3NtZW50RGF0YVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkgPSB0aGlzLm9wZW5lZENhdGVnb3J5LmZpbHRlcihcclxuICAgICAgICAoZWxlKSA9PiBlbGUgIT09IGNhdGVnb3J5SWRcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkucHVzaChjYXRlZ29yeUlkKTtcclxuICAgICAgdGhpcy5nZXRBc3Nlc3NtZW50TGlzdChjYXRlZ29yeUlkKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gVE9ETzogUGFnaW5hdGlvblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGV2ZW50IDogcGFnZSBudW1iZXIgdGhhdCBoYXMgYmVlbiBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIG9uUGFnZVNlbGVjdGlvbihldmVudDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm9wZW5lZENhdGVnb3J5ID0gW107XHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLnBhZ2Vfbm8gPSBldmVudC50b1N0cmluZygpO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBTZWFyY2hcclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWFyY2ggOiBzZWFyY2ggdGV4dFxyXG4gICAqL1xyXG4gIG9uQXNzZXNzbWVudFNlYXJjaChzZWFyY2g6IHN0cmluZykge1xyXG4gICAgdGhpcy5vcGVuZWRDYXRlZ29yeSA9IFtdO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50UGF5bG9hZC5wYWdlX25vID0gJzEnO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50UGF5bG9hZC5zZWFyY2hfdGl0bGUgPSBzZWFyY2g7XHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLnNlYXJjaF90ZXh0ID0gc2VhcmNoO1xyXG4gICAgdGhpcy5nZXRBc3Nlc3NtZW50Q2F0ZWdvcnlMaXN0KCk7XHJcbiAgfVxyXG5cclxuICAvLyBUT0RPOiBGaWx0ZXIgYnkgYWxwaGFiZXRcclxuICAvKipcclxuICAgKlxyXG4gICAqIEBwYXJhbSBldmVudCA6IEFzc2Vzc21lbnQgY2F0ZWdvcnkgZmlsdGVyIG9mIEFscGhhYmV0XHJcbiAgICovXHJcbiAgb25BbHBoYWJldFNlbGVjdGVkKGV2ZW50OiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkgPSBbXTtcclxuICAgIHRoaXMuYXNzZXNzbWVudFBheWxvYWQucGFnZV9ubyA9ICcxJztcclxuICAgIHRoaXMuYXNzZXNzbWVudFBheWxvYWQuYWxwaGFiZXRfZmlsdGVyID0gZXZlbnQ7XHJcbiAgICB0aGlzLmFzc2Vzc21lbnRQYXlsb2FkLnNlYXJjaF90ZXh0ID0gJyc7XHJcbiAgICB0aGlzLmdldEFzc2Vzc21lbnRDYXRlZ29yeUxpc3QoKTtcclxuICB9XHJcblxyXG4gIC8vIFRPRE86IENhbGwgQVBJIG1ldGhvZFxyXG4gIGdldEFzc2Vzc21lbnRDYXRlZ29yeUxpc3QoKSB7XHJcbiAgICB0aGlzLmlzTG9hZGVyID0gdHJ1ZTtcclxuICAgIHRoaXMuYXNzZXNzbWVudFNlcnZpY2VcclxuICAgICAgLmdldEFzc2Vzc21lbnRDYXRlZ29yeSh0aGlzLmFzc2Vzc21lbnRQYXlsb2FkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXNzZXNzbWVudENhdGVnb3J5ID0gcmVzO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnI/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIgPSAgWy4uLiBuZXcgU2V0KHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyKV1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcmVzLmRhdGEuZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgPT09IGVsZS5jYXRlZ29yeV9pZFxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmV4cGFuZENhdGVnb3J5KGVsZS5jYXRlZ29yeV9pZCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8vIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZvckVhY2goKGVsZTphbnksaW5kZXg6YW55KSA9PiB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMub3BlbmVkQ2F0ZWdvcnkucHVzaChlbGU/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAgIC8vICAgdGhpcy5zaG93U3ViTGlzdChpbmRleCxlbGU/LmNhdGVnb3J5X2lkKTtcclxuICAgICAgICAgIC8vIH0pXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzTG9hZGVyID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gVE9ETzogQ2FsbCBTdWIgZGF0YSBBUEkgbWV0aG9kXHJcblxyXG4gIC8qKlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGlkIDogQXNzZXNzbWVudCBjYXRlZ29yeSBpZFxyXG4gICAqL1xyXG4gIGdldEFzc2Vzc21lbnRMaXN0KGlkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIHNlYXJjaF90aXRsZTogJycsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50U2VydmljZVxyXG4gICAgICAuZ2V0QXNzZXNzbWVudExpc3QocGF5bG9hZCwgaWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogQXJyYXk8YW55PikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hc3Nlc3NtZW50Q2F0ZWdvcnk/LmRhdGE/LmZpbmRJbmRleChcclxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmlkID09PSBpZFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICAgIHRoaXMuYXNzZXNzbWVudENhdGVnb3J5LmRhdGFbaW5kZXhdLmFzc2Vzc21lbnREYXRhID0gW1xyXG4gICAgICAgICAgICAuLi5uZXcgU2V0KHJlcyksXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlBbmRBc3Nlc3NtZW50KCk7XHJcbiAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyLmZpbmRJbmRleChcclxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT09IGlkXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgLy8gaWYoaW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICAvLyAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyW2luZGV4XS5hc3Nlc3NtZW50SWRzICA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyW2luZGV4XS5hc3Nlc3NtZW50SWRzLm1hcCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgIC8vICAgICBlbGUgPSByZXMuZmluZCgoZGF0YTogYW55KSA9PiBkYXRhLmlkID09PSBlbGUpO1xyXG4gICAgICAgICAgLy8gICAgIHJldHVybiBlbGU7XHJcbiAgICAgICAgICAvLyAgIH0pO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RlZEFzc2Vzc21lbnRDYXRlZ29yaWVzSWRzOiBhbnkgPSBbXTtcclxuICBzZWxlY3RlZEFzc2Vzc21lbnRJZHM6IGFueSA9IFtdO1xyXG4gIHNlbGVjdGVkQXNzZXNzbWVudDogYW55ID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqICMjIyMgRGVzY3JpcHRpb25cclxuICAgKiBTZWxlY3RzIGl0ZW0gb3IgZGVzZWxlY3QgYSBpdG1lXHJcbiAgICogQHBhcmFtIGV2dFxyXG4gICAqIEBwYXJhbSBwYXlsb2FkXHJcbiAgICovXHJcbiAgc2VsZWN0QXNzZXNzbWVudChldnQ6IGFueSwgcGF5bG9hZDogYW55LCBjYXRlZ29yeTogYW55KSB7XHJcbiAgICBpZiAoZXZ0Py50YXJnZXQ/LmNoZWNrZWQpIHtcclxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5maW5kSW5kZXgoXHJcbiAgICAgICAgKGVsZTogYW55KSA9PiBlbGUuY2F0ZWdvcnlfaWQgPT09IGNhdGVnb3J5LmlkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudENhdGVnb3J5QXNzZXNzbWVudCA9XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycltpbmRleF0uYXNzZXNzbWVudElkcztcclxuICAgICAgICBjdXJyZW50Q2F0ZWdvcnlBc3Nlc3NtZW50LnB1c2gocGF5bG9hZCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnJbaW5kZXhdLmFzc2Vzc21lbnRJZHMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcclxuICAgICAgICAgIGN1cnJlbnRDYXRlZ29yeUFzc2Vzc21lbnQsXHJcbiAgICAgICAgICAnaWQnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyciA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycik7XHJcbiAgICAgICAgdGhpcy5zZXRDYXRlZ29yeUFuZEFzc2Vzc21lbnQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyci5wdXNoKHtcclxuICAgICAgICAgIGNhdGVnb3J5X2lkOiBjYXRlZ29yeS5pZCxcclxuICAgICAgICAgIGFzc2Vzc21lbnRJZHM6IFtwYXlsb2FkXSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIgPSBjbG9uZURlZXAodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIpO1xyXG4gICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlBbmRBc3Nlc3NtZW50KCk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuZmluZEluZGV4KFxyXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmNhdGVnb3J5X2lkID09PSBjYXRlZ29yeS5pZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyW2luZGV4XS5hc3Nlc3NtZW50SWRzID1cclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyW2luZGV4XS5hc3Nlc3NtZW50SWRzLmZpbHRlcihcclxuICAgICAgICAgICAgKGFzc2Vzc21lbnQ6IGFueSkgPT4gYXNzZXNzbWVudC5pZCAhPT0gcGF5bG9hZC5pZFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyciA9IGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFycik7XHJcbiAgICAgICAgdGhpcy5zZXRDYXRlZ29yeUFuZEFzc2Vzc21lbnQoKTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnJbaW5kZXhdLmFzc2Vzc21lbnRJZHM/Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyID0gY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyKTtcclxuICAgICAgICAgIHRoaXMuc2V0Q2F0ZWdvcnlBbmRBc3Nlc3NtZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDYXRlZ29yeUFuZEFzc2Vzc21lbnQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudENhdGVnb3JpZXNJZHMgPSB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudEFyclxyXG4gICAgICAuZmlsdGVyKChjYXQ6IGFueSkgPT4gY2F0Py5hc3Nlc3NtZW50SWRzPy5sZW5ndGggPiAwKVxyXG4gICAgICA/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uY2F0ZWdvcnlfaWQpXHJcbiAgICAgIC5mbGF0KCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudElkcyA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyXHJcbiAgICAgIC5tYXAoKGNhdDogYW55KSA9PiBjYXQ/LmFzc2Vzc21lbnRJZHMubWFwKChlbGU6IGFueSkgPT4gZWxlPy5pZCkpXHJcbiAgICAgIC5mbGF0KCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkQXNzZXNzbWVudCA9IHRoaXMuc2VsZWN0ZWRBc3Nlc3NtZW50QXJyXHJcbiAgICAgIC5tYXAoKGNhdDogYW55KSA9PiBjYXQ/LmFzc2Vzc21lbnRJZHMubWFwKChlbGU6IGFueSkgPT4gZWxlKSlcclxuICAgICAgLmZsYXQoKTtcclxuICB9XHJcblxyXG4gIC8vIFRPRE86IERpc3BsYXkgc2VsZWN0ZWQgZGF0YSBpbiBib3R0b20gZmxvYXRpbmcgYmFyIHdpdGggbmV4dCBlbmFibGVkIGJ1dHRvbiBoYXZpbmdcclxuXHJcbiAgLy8gVE9ETzogU2VuZCBkYXRhIGluIHBheWxvYWQgb2YgY3JlYXRlIFJlc3BvbnNpYmlsaXR5IGZvcm1cclxuXHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMub25Bc3Nlc3NtZW50U2VsZWN0LmVtaXQodGhpcy5zZWxlY3RlZEFzc2Vzc21lbnRBcnIpO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICB0aGlzLmNhbmNlbEFzc2Vzc21lbnQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogIyMjIyBEZXNjcmlwdGlvblxyXG4gICAqXHJcbiAgICogUmV0dXJucyB0aGUgdW5pcXVlIGFycmF5IG9mIG9iamVjdCBiYXNlZCBvbiB1bmlxdWUga2V5XHJcbiAgICogQHBhcmFtIGFycmF5XHJcbiAgICogQHBhcmFtIGtleVxyXG4gICAqIEByZXR1cm5zXHJcbiAgICovXHJcbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gQXJyYXkuZnJvbShcclxuICAgICAgYXJyYXlcclxuICAgICAgICAucmVkdWNlKFxyXG4gICAgICAgICAgKGFjYzogYW55LCBpdGVtOiBhbnkpID0+IChcclxuICAgICAgICAgICAgaXRlbSAmJiBpdGVtW2tleV0gJiYgYWNjLnNldChpdGVtW2tleV0sIGl0ZW0pLCBhY2NcclxuICAgICAgICAgICksXHJcbiAgICAgICAgICBuZXcgTWFwKClcclxuICAgICAgICApXHJcbiAgICAgICAgLnZhbHVlcygpXHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iLCI8YXBwLXByZXZpZXcgKm5nSWY9XCJpc1ByZXZpZXdcIiBbcXVlc3Rpb25EYXRhXT1cInByZXZpZXdRdWVzdGlvbkRhdGFcIiAocHJldmlld0JhY2spPVwicHJldmlld0JhY2soKVwiPjwvYXBwLXByZXZpZXc+XHJcbjxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3RcIiBbY2xhc3MuYW5pbWF0ZV09XCJhbmltYXRpb25cIj5cclxuXHJcbiAgICA8bmctY29udGFpbmVyID5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXNzbWVudC1saXN0LWhlYWRcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJhY2stYnRuXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFkOzwvaT4gLS0+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtdGl0bGVcIj5TZWxlY3QgQXNzZXNzbWVudChzKTwvaDM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1ib2R5XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBiOzwvaT5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoQXNzZXNzbWVudHNcIiAoY2hhbmdlKT1cIm9uQXNzZXNzbWVudFNlYXJjaCgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoIEFzc2Vzc21lbnQgQ2F0ZWdvcnlcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHBhZ2luYXRpb25cclxuXHJcbiAgICAgICAgICAgICAgICBbcGFnZUNvdW50XT1cImFzc2Vzc21lbnRDYXRlZ29yeT8udG90YWxQYWdlXCJcclxuICAgICAgICAgICAgICAgIFt0b3RhbF09XCJhc3Nlc3NtZW50Q2F0ZWdvcnk/LnRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgICAgICAgICBbc3RhcnRdPVwiYXNzZXNzbWVudENhdGVnb3J5Py5zdGFydF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICBbZW5kXT1cImFzc2Vzc21lbnRDYXRlZ29yeT8uZW5kX3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgIFthY3RpdmVBbHBoYWJldF09XCInJ1wiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRBbHBoYWJldCk9XCJvbkFscGhhYmV0U2VsZWN0ZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoc2VsZWN0ZWRQYWdlKT1cIm9uUGFnZVNlbGVjdGlvbigkZXZlbnQpXCJcclxuICAgICAgICAgICAgPjwvcGFnaW5hdGlvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFzc2Vzc21lbnRDYXRlZ29yeS5kYXRhLmxlbmd0aCA9PT0gMCAmJiAhaXNMb2FkZXJcIiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgIDxhcHAtbm8tZGF0YSAgW25vRGF0YUltYWdlXT1cIidodHRwczovL2Nkbi52LWNvbXBseS5jb20vbGlicmFyaWVzL3dvcmtmbG93LWVuZ2luZS9hc3NldHMvd29ya2Zsb3cvc2VhcmNoLWRhdGEuc3ZnJ1wiIFtub0RhdGFUZXh0XT1cIidObyBBc3Nlc3NtZW50cyBGb3VuZC4nXCI+PC9hcHAtbm8tZGF0YT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhc3Nlc3NtZW50Q2F0ZWdvcnkuZGF0YS5sZW5ndGggfHwgaXNMb2FkZXJcIiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1wYXJ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNFZGl0ICYmIHNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVwiIGNsYXNzPVwiYXNzZXNzbWVudC1saXN0LXNlbGVjdGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1oZWFkaW5nXCI+QXNzZXNzbWVudCBhbHJlYWR5IHNlbGVjdGVkIGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2Vzc21lbnQtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsIGRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jcy1yYWRpbyBbZGlzYWJsZWRdPVwidHJ1ZVwiIGNsYXNzPVwiZGlzYWJsZWRcIiBbY2hlY2tlZF09XCJ0cnVlXCIgW3JlYWRvbmx5XT1cInRydWVcIj48L2FwcC1jcy1yYWRpbz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBzdWItbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWlubmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e3NlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LmFzc2Vzc21lbnRfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3aXRoaW4tYm94XCI+V2l0aGluPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8uY2F0ZWdvcnlfbmFtZSArIChzZWxlY3RlZEFzc2Vzc21lbnQ/LmNhdGVnb3J5X2RldGFpbHM/LnBhcmVudF90cmVlID8gJyA+ICcgKyBzZWxlY3RlZEFzc2Vzc21lbnQ/LmNhdGVnb3J5X2RldGFpbHM/LnBhcmVudF90cmVlIDogJycpXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7c2VsZWN0ZWRBc3Nlc3NtZW50Py5jYXRlZ29yeV9kZXRhaWxzPy5jYXRlZ29yeV9uYW1lICsgKHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8ucGFyZW50X3RyZWUgPyAnID4gJyArIHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfZGV0YWlscz8ucGFyZW50X3RyZWUgOiAnJyl9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gcXVlc3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e3NlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHM/LnF1ZXN0aW9uc319IHt7c2VsZWN0ZWRBc3Nlc3NtZW50Py5hc3Nlc3NtZW50RGV0YWlscz8ucXVlc3Rpb25zID4gMSA/ICdRdWVzdGlvbnMnOiAnUXVlc3Rpb24nfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uLWJ0blwiIChjbGljayk9XCJwcmV2aWV3KHNlbGVjdGVkQXNzZXNzbWVudD8uYXNzZXNzbWVudERldGFpbHMpXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGVhZTU7PC9pPiBQcmV2aWV3PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvbiBjbGFzcz1cImFjdGlvbi1idG5cIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkwYzs8L2k+IEVkaXQ8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtaGVhZGluZ1wiPlNlbGVjdCBhbiBBc3Nlc3NtZW50IGZvciB0aGlzIHJlc3BvbnNpYmlsaXR5PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICAgICAgICAgICBBc3Nlc3NtZW50IGNhdGVnb3J5IGxpc3RcclxuICAgICAgICAgICAgICAgICAgICAgYWN0aXZlIGNsYXNzIGlzIHVzZWQgZm9yIGhpZ2hsaWdodGluZyBvcGVuZWQgZWxlbWVudFxyXG4gICAgICAgICAgICAgICAgLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF0YSBvZiBhc3Nlc3NtZW50Q2F0ZWdvcnkuZGF0YTsgbGV0ICBpID0gaW5kZXg7XCIgY2xhc3M9XCJhc3Nlc3NtZW50LWxpc3QtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwib3BlbmVkQ2F0ZWdvcnkuaW5jbHVkZXMoZGF0YT8uaWQpIHx8IGRhdGEuaWQgPT09IHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvdyBtYWluLWxpc3RcIiAoY2xpY2spPVwiZXhwYW5kQ2F0ZWdvcnkoZGF0YT8uaWQpXCIgW2NsYXNzLmRpc2FibGVkXT1cImRhdGE/LmFzc2Vzc21lbnRjb3VudCA8IDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gc2VyaWFsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NyLW5vJyArIGlcIiBjbGFzcz1cInNyLW5vXCIgW2FwcFRvb2x0aXBdPVwiaSArIDFcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCI+e3tkYXRhUGVyUGFnZSAqIChhc3Nlc3NtZW50UGF5bG9hZC5wYWdlX25vIC0gMSkgKyAoaSArIDEpfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiBuYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtaW5uZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCIgW2FwcFRvb2x0aXBdPVwiZGF0YS5jYXRlZ29yeV9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZGF0YT8uY2F0ZWdvcnlfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3aXRoaW4tcGFydFwiICpuZ0lmPVwiZGF0YT8ucGFyZW50X3RyZWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2l0aGluLWJveFwiPldpdGhpbjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCJkYXRhLnBhcmVudF90cmVlXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7ZGF0YT8ucGFyZW50X3RyZWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gYWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBbaWRdPVwiJ2Fycm93JyArIGlcIiBjbGFzcz1cImFycm93XCIgW2NsYXNzLmRpc2FibGVkXSA9IFwiZGF0YT8uYXNzZXNzbWVudGNvdW50IDwgMVwiIFtkaXNhYmxlZF09XCJkYXRhPy5hc3Nlc3NtZW50Y291bnQgPCAxXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIW9wZW5lZENhdGVnb3J5LmluY2x1ZGVzKGRhdGE/LmlkKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTcwOzwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJvcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhkYXRhPy5pZClcIiBjbGFzcz1cImljb25zXCI+JiN4ZTllODs8L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFzc2Vzc21lbnQgbGlzdCBzdGFydCBmcm9tIGhlcmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcGVuZWRDYXRlZ29yeS5pbmNsdWRlcyhkYXRhPy5pZClcIiBjbGFzcz1cInN1Yi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZGF0YS5hc3Nlc3NtZW50RGF0YT8ubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIiAqbmdGb3I9XCJsZXQgYXNzZXNzbWVudCBvZiBkYXRhLmFzc2Vzc21lbnREYXRhOyBsZXQgaiA9IGluZGV4XCIgW2NsYXNzLmFjdGl2ZV09XCIoc2VsZWN0ZWRBc3Nlc3NtZW50SWRzKS5pbmNsdWRlcyhhc3Nlc3NtZW50LmlkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHNlcmlhbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3N1Yi1zci1ubycrIGkralwiIGNsYXNzPVwic3Itbm8gYWN0aXZlXCIgYXBwVG9vbHRpcD1cInt7ZGF0YVBlclBhZ2UgKiAoYXNzZXNzbWVudFBheWxvYWQucGFnZV9ubyAtIDEpICsgKGkgKyAxKX19Lnt7aiArIDF9fVwiIHBsYWNlbWVudD1cImJvdHRvbVwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2RhdGFQZXJQYWdlICogKGFzc2Vzc21lbnRQYXlsb2FkLnBhZ2Vfbm8gLSAxKSArIChpICsgMSl9fS57e2ogKyAxfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhcHAtY3MtcmFkaW8gbmFtZT1cImFzc2Vzc21lbnRcIiBbdmFsdWVdPVwiYXNzZXNzbWVudC5pZFwiIFtjaGVja2VkXT1cImFzc2Vzc21lbnQ/LmlkID09PSBzZWxlY3RlZEFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfaWQgJiYgZGF0YT8uaWQgPT09IHNlbGVjdGVkQXNzZXNzbWVudD8uY2F0ZWdvcnlfaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0QXNzZXNzbWVudChkYXRhLCBhc3Nlc3NtZW50KVwiPjwvYXBwLWNzLXJhZGlvPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIChjaGFuZ2UpPVwic2VsZWN0R3JvdXAoJGV2ZW50LGdyb3VwKVwiIFtkaXNhYmxlZF09XCJub25SZW1vdmFibGVHcm91cElkcz8uaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVwiIFtjaGVja2VkXT1cInNlbGVjdGVkR3JvdXBJZHMuaW5jbHVkZXMoZ3JvdXA/Lmdyb3VwX2lkKVwiIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dnVpLWNoZWNrYm94IFtjaGVja2VkXT1cIihzZWxlY3RlZEFzc2Vzc21lbnRJZHMpLmluY2x1ZGVzKGFzc2Vzc21lbnQuaWQpXCIgKGNoYW5nZSk9XCJzZWxlY3RBc3Nlc3NtZW50KCRldmVudCxhc3Nlc3NtZW50LCBkYXRhKVwiPjwvdnVpLWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHN1Yi1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIiBbYXBwVG9vbHRpcF09XCInTWlzc2lvbiBhbmQgbWVzc2FnZSwgY29tbXVuaWNhdGlvbnMgdG8gZXh0ZXJuYWwgYXVkaWVuY2VzJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCIgdHlwZT1cImJsYWNrXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj57e2Fzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfbmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHF1ZXN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIj57e2Fzc2Vzc21lbnQ/LnF1ZXN0aW9uc319IHt7YXNzZXNzbWVudD8ucXVlc3Rpb25zID4gMSA/ICdRdWVzdGlvbnMnIDogJ1F1ZXN0aW9uJ319PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuXCIgKGNsaWNrKT1cInByZXZpZXcoYXNzZXNzbWVudClcIj48aSBjbGFzcz1cImljb25zXCI+JiN4ZWFlNTs8L2k+IFByZXZpZXc8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuXCI+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0PC9idXR0b24+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMb2FkZXIgbG9hZGluZyBpc0xvYWRlciAgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXNzZXNzbWVudC1zdWItbG9hZGVyICpuZ0lmPVwiIWRhdGEuYXNzZXNzbWVudERhdGE/Lmxlbmd0aFwiPjwvYXNzZXNzbWVudC1zdWItbG9hZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YXBwLWxpbmUtbG9hZGVyICpuZ0lmPVwiIWRhdGEuYXNzZXNzbWVudERhdGE/Lmxlbmd0aFwiIFtsb2FkZXJIZWlnaHRdPVwiJzUnXCI+PC9hcHAtbGluZS1sb2FkZXI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPCEtLSBMb2FkZXIgbG9hZGluZyBpc0xvYWRlciAgLS0+XHJcbiAgICAgICAgICAgICAgICA8YXNzZXNzbWVudC1sb2FkZXIgKm5nSWY9XCJpc0xvYWRlclwiPjwvYXNzZXNzbWVudC1sb2FkZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIE5vIGRhdGEgaW1hZ2UgIC0tPlxyXG4gICAgICAgICAgICA8YXBwLW5vLWRhdGEgKm5nSWY9XCIhYXNzZXNzbWVudENhdGVnb3J5LmRhdGEubGVuZ3RoICYmICFpc0xvYWRlclwiIFtub0RhdGFJbWFnZV09XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcIiBbbm9EYXRhVGV4dF09XCInTm8gRGF0YSB0byBEaXNwbGF5J1wiPjwvYXBwLW5vLWRhdGE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLVxyXG4gICAgICAgICAgICBib3R0b20gZmxvYXRpbmcgYmFyIHdoaWNoIGluY2x1ZGVzIGNhbmNlbCwgbmV4dCBidXR0b25cclxuICAgICAgICAgICAgY2xvc2luZyB0YWJcclxuICAgICAgICAgLS0+XHJcblxyXG5cclxuICAgICAgICAgICAgPHZ1aS1mbG9hdGluZy1iYXIgIChjbG9zZUV2ZW50KT1cInNhdmUoKVwiIChjbG9zZUxpc3QpPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIiAqbmdJZj1cInNlbGVjdGVkQXNzZXNzbWVudD8ubGVuZ3RoXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiYXNzZXNzbWVudENvdW50LnBvcG92ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCI+e3tzZWxlY3RlZEFzc2Vzc21lbnQ/Lmxlbmd0aH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWRBc3Nlc3NtZW50Py5sZW5ndGggPT09IDFcIj5Bc3Nlc3NtZW50IHNlbGVjdGVkPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZEFzc2Vzc21lbnQ/Lmxlbmd0aCA+IDFcIj5Bc3Nlc3NtZW50cyBzZWxlY3RlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGFwcC1wb3BvdmVyICNhc3Nlc3NtZW50Q291bnQgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIHNlbGVjdGVkQXNzZXNzbWVudDsgbGV0IGkgPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0QXNzZXNzbWVudCh7dGFyZ2V0OntjaGVja2VkOmZhbHNlfX0sZWxlbWVudClcIj4mI3hlOTBkOzwvaT4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tlbGVtZW50Py5hc3Nlc3NtZW50X25hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cclxuXHJcbiAgICAgICAgICAgIDwvdnVpLWZsb2F0aW5nLWJhcj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuPC9kaXY+XHJcbiJdfQ==