vcomply-workflow-engine 6.0.94 → 6.0.95

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 (106) hide show
  1. package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +30 -7
  2. package/esm2022/lib/constants/api.constants.mjs +1 -6
  3. package/esm2022/lib/constants/policy.constant.mjs +6 -0
  4. package/esm2022/lib/constants/regix.constants.mjs +4 -0
  5. package/esm2022/lib/constants/responsibility.mjs +8 -0
  6. package/esm2022/lib/interfaces/policy.interface.mjs +2 -0
  7. package/esm2022/lib/interfaces/responsibilty.interface.mjs +1 -1
  8. package/esm2022/lib/more-option/more-option.component.mjs +193 -13
  9. package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +2 -3
  10. package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +7 -4
  11. package/esm2022/lib/services/common.service.mjs +1 -40
  12. package/esm2022/lib/services/iframe.service.mjs +1 -14
  13. package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +6 -3
  14. package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +21 -10
  15. package/esm2022/lib/sharedComponents/frequency/frequency-annual/frequency-annual.component.mjs +1 -5
  16. package/esm2022/lib/sharedComponents/frequency/frequency-biannual/frequency-biannual.component.mjs +1 -5
  17. package/esm2022/lib/sharedComponents/frequency/frequency-container/frequency-container.component.mjs +5 -5
  18. package/esm2022/lib/sharedComponents/frequency/frequency-daily/frequency-daily.component.mjs +1 -2
  19. package/esm2022/lib/sharedComponents/frequency/frequency-monthly/frequency-monthly.component.mjs +2 -6
  20. package/esm2022/lib/sharedComponents/frequency/frequency-one-time/frequency-one-time.component.mjs +2 -3
  21. package/esm2022/lib/sharedComponents/frequency/frequency-ongoing/frequency-ongoing.component.mjs +1 -3
  22. package/esm2022/lib/sharedComponents/frequency/frequency-quarterly/frequency-quarterly.component.mjs +1 -5
  23. package/esm2022/lib/sharedComponents/frequency/frequency-random/frequency-random.component.mjs +2 -9
  24. package/esm2022/lib/sharedComponents/frequency/frequency-weekly/frequency-weekly.component.mjs +2 -4
  25. package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +5 -267
  26. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +16 -48
  27. package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.module.mjs +4 -8
  28. package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +19 -0
  29. package/esm2022/lib/workflow/grc-object/grc-object-container/grc-object-container.component.mjs +17 -45
  30. package/esm2022/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.mjs +10 -13
  31. package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +35 -62
  32. package/esm2022/lib/workflow/shared/services/grc.service.mjs +2 -15
  33. package/esm2022/lib/workflow/shared/workflow-pipes/workflow-pipes.module.mjs +3 -8
  34. package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +453 -294
  35. package/esm2022/lib/workflow-engine-container/api-constants.mjs +2 -3
  36. package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +53 -32
  37. package/esm2022/lib/workflow-engine.module.mjs +7 -11
  38. package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +29 -46
  39. package/esm2022/lib/workflow-program/constants.mjs +3 -3
  40. package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +9 -13
  41. package/esm2022/lib/workflow-program/workflow-program.component.mjs +365 -327
  42. package/esm2022/lib/workflow-services/policy.service.mjs +9 -8
  43. package/esm2022/lib/workflow-services/programs.service.mjs +114 -26
  44. package/esm2022/lib/workflow-services/responsibility.service.mjs +55 -60
  45. package/fesm2022/vcomply-workflow-engine.mjs +14037 -14469
  46. package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
  47. package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +3 -0
  48. package/lib/constants/api.constants.d.ts +0 -5
  49. package/lib/constants/policy.constant.d.ts +2 -0
  50. package/lib/constants/regix.constants.d.ts +3 -0
  51. package/lib/constants/responsibility.d.ts +7 -0
  52. package/lib/interfaces/policy.interface.d.ts +5 -0
  53. package/lib/interfaces/responsibilty.interface.d.ts +13 -13
  54. package/lib/services/common.service.d.ts +0 -28
  55. package/lib/services/iframe.service.d.ts +0 -6
  56. package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +6 -0
  57. package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +4 -1
  58. package/lib/sharedComponents/frequency/frequency-random/frequency-random.component.d.ts +0 -1
  59. package/lib/sharedComponents/frequency/frequency.service.d.ts +2 -92
  60. package/lib/sharedComponents/link-responsibility/link-responsibility.component.d.ts +1 -2
  61. package/lib/sharedComponents/link-responsibility/link-responsibility.module.d.ts +1 -2
  62. package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +7 -0
  63. package/lib/workflow/grc-object/grc-object-container/grc-object-container.component.d.ts +1 -5
  64. package/lib/workflow/shared/components/grc-category-listing/grc-category-listing.component.d.ts +1 -3
  65. package/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.d.ts +2 -6
  66. package/lib/workflow/shared/services/grc.service.d.ts +0 -1
  67. package/lib/workflow/shared/workflow-pipes/workflow-pipes.module.d.ts +2 -3
  68. package/lib/workflow-compliance/workflow-compliance.component.d.ts +10 -32
  69. package/lib/workflow-engine-container/api-constants.d.ts +0 -1
  70. package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +2 -5
  71. package/lib/workflow-engine.module.d.ts +2 -3
  72. package/lib/workflow-policy/workflow-policy.component.d.ts +0 -9
  73. package/lib/workflow-program/workflow-program.component.d.ts +9 -9
  74. package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
  75. package/lib/workflow-services/policy.service.d.ts +1 -1
  76. package/lib/workflow-services/programs.service.d.ts +54 -13
  77. package/lib/workflow-services/responsibility.service.d.ts +4 -17
  78. package/package.json +1 -1
  79. package/esm2022/lib/interfaces/frequency.interface.mjs +0 -2
  80. package/esm2022/lib/interfaces/iframe-type.mjs +0 -7
  81. package/esm2022/lib/sharedComponents/list-container/list-container.component.mjs +0 -52
  82. package/esm2022/lib/sharedComponents/program-list/constant.mjs +0 -27
  83. package/esm2022/lib/sharedComponents/program-list/interfaces/data-source.interface.mjs +0 -2
  84. package/esm2022/lib/sharedComponents/program-list/interfaces/list-item.interface.mjs +0 -2
  85. package/esm2022/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.mjs +0 -23
  86. package/esm2022/lib/sharedComponents/program-list/program-list/program-list.component.mjs +0 -273
  87. package/esm2022/lib/sharedComponents/program-list/program-list.module.mjs +0 -51
  88. package/esm2022/lib/sharedComponents/program-list/services/list-utils.service.mjs +0 -27
  89. package/esm2022/lib/sharedComponents/program-list/services/program-list-api.service.mjs +0 -32
  90. package/esm2022/lib/ui-kit/loaders/loaders.module.mjs +0 -24
  91. package/esm2022/lib/ui-kit/loaders/table-loader/table-loader.component.mjs +0 -19
  92. package/esm2022/lib/workflow/shared/workflow-pipes/get-user-details.pipe.mjs +0 -26
  93. package/lib/interfaces/frequency.interface.d.ts +0 -37
  94. package/lib/interfaces/iframe-type.d.ts +0 -5
  95. package/lib/sharedComponents/list-container/list-container.component.d.ts +0 -9
  96. package/lib/sharedComponents/program-list/constant.d.ts +0 -20
  97. package/lib/sharedComponents/program-list/interfaces/data-source.interface.d.ts +0 -4
  98. package/lib/sharedComponents/program-list/interfaces/list-item.interface.d.ts +0 -5
  99. package/lib/sharedComponents/program-list/pipes/check-selected-items.pipes.d.ts +0 -7
  100. package/lib/sharedComponents/program-list/program-list/program-list.component.d.ts +0 -126
  101. package/lib/sharedComponents/program-list/program-list.module.d.ts +0 -15
  102. package/lib/sharedComponents/program-list/services/list-utils.service.d.ts +0 -7
  103. package/lib/sharedComponents/program-list/services/program-list-api.service.d.ts +0 -14
  104. package/lib/ui-kit/loaders/loaders.module.d.ts +0 -8
  105. package/lib/ui-kit/loaders/table-loader/table-loader.component.d.ts +0 -9
  106. package/lib/workflow/shared/workflow-pipes/get-user-details.pipe.d.ts +0 -7
@@ -1,11 +1,9 @@
1
1
  import { Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
2
2
  import { Validators, } from '@angular/forms';
3
- import { cloneDeep, isEqual } from 'lodash';
3
+ import { isEqual } from 'lodash';
4
4
  import { distinctUntilChanged, take } from 'rxjs';
5
5
  import { CONSTANTS } from './constants';
6
6
  import { ASSETS } from '../constants/assets.constants';
7
- import { PostMessageEvent } from '../interfaces/iframe-type';
8
- import { PROGRAM_OBJECT } from '../sharedComponents/program-list/constant';
9
7
  import * as i0 from "@angular/core";
10
8
  import * as i1 from "@angular/forms";
11
9
  import * as i2 from "../workflow-services/programs.service";
@@ -24,22 +22,28 @@ import * as i14 from "../ui-kit/popover-hover/popover-hover.component";
24
22
  import * as i15 from "../ui-kit/popover-hover/popover-hover.directive";
25
23
  import * as i16 from "./create-program-ui/tab-selector/tab-selector.component";
26
24
  import * as i17 from "./create-program-ui/form-field/form-field.component";
27
- import * as i18 from "./create-program-ui/input-with-pill/input-with-pill.component";
28
- import * as i19 from "./create-program-ui/directives/input-trim.directive";
29
- import * as i20 from "./create-program-ui/user-group-list/user-group-list.component";
30
- import * as i21 from "./create-program-ui/custom-field/custom-field.component";
31
- import * as i22 from "../sharedComponents/framework-list/framework-list.component";
32
- import * as i23 from "./create-program-ui/pipes/list-to-id.pipe";
33
- import * as i24 from "./create-program-ui/pipes/ref-disconnect.pipe";
34
- import * as i25 from "./create-program-ui/pipes/assessment-resolver.pipe";
25
+ import * as i18 from "./create-program-ui/file-pill/file-pill.component";
26
+ import * as i19 from "./create-program-ui/input-with-pill/input-with-pill.component";
27
+ import * as i20 from "./create-program-ui/cs-switch/cs-switch.component";
28
+ import * as i21 from "./create-program-ui/directives/input-trim.directive";
29
+ import * as i22 from "./create-program-ui/role-list/role-list.component";
30
+ import * as i23 from "./create-program-ui/user-group-list/user-group-list.component";
31
+ import * as i24 from "./create-program-ui/assessment-picker/assessment-picker.component";
32
+ import * as i25 from "./create-program-ui/custom-field/custom-field.component";
33
+ import * as i26 from "../sharedComponents/responsibility-centers-list/responsibility-centers-list.component";
34
+ import * as i27 from "../sharedComponents/framework-list/framework-list.component";
35
+ import * as i28 from "./create-program-ui/pipes/list-to-id.pipe";
36
+ import * as i29 from "./create-program-ui/pipes/ref-disconnect.pipe";
37
+ import * as i30 from "./create-program-ui/pipes/assessment-resolver.pipe";
38
+ import * as i31 from "./create-program-ui/pipes/array-concat.pipe";
35
39
  export class WorkflowProgramComponent {
36
- constructor(fb, programService, authService, uiKitService, changeRef, iframeService) {
40
+ constructor(fb, programService, authService, uiKitService, iframeService, changeRef) {
37
41
  this.fb = fb;
38
42
  this.programService = programService;
39
43
  this.authService = authService;
40
44
  this.uiKitService = uiKitService;
41
- this.changeRef = changeRef;
42
45
  this.iframeService = iframeService;
46
+ this.changeRef = changeRef;
43
47
  this.ASSETS = ASSETS;
44
48
  this.constants = CONSTANTS;
45
49
  this.isAscentAllowed = false;
@@ -63,7 +67,8 @@ export class WorkflowProgramComponent {
63
67
  this.panelTitleDefaultReviewer = 'Select Default Reviewer(s)';
64
68
  this.panelTitleOwner = 'Select Owner(s)';
65
69
  this.panelTitleReviewer = 'Select Reviewer(s)';
66
- this.panelTitleAssignee = 'Select Collaborator(s)';
70
+ this.panelTitleAssignee = 'Select Assignee(s)';
71
+ this.panelTitleCollaborator = 'Select Collaborator(s)';
67
72
  this.panelTitleApprover = 'Select Approver';
68
73
  this.isApproverDisabled = false;
69
74
  this.isProgramScope = false;
@@ -74,11 +79,10 @@ export class WorkflowProgramComponent {
74
79
  <li>To pre-select certain options that are available when creating a responsibility, thereby decreasing the time required to create a responsibility.</li>
75
80
  <li>To limit the options available for selection when creating a responsibility, thereby making it easier to create a responsibility and reducing the likelihood of an incorrect option being selected.</li>
76
81
  `,
77
- collaborators: `Collaborators are required to complete the responsibilities that have been assigned to them. Where Collaborators are selected when creating a Program, only those Collaborators will be available for selection when creating a responsibility linked with the Program.`,
78
82
  };
79
83
  this.featureflagrole = false;
80
84
  this.featureflagGroups = false;
81
- this.disabledAssigneeIds = [];
85
+ this.disableCollaboratorIds = [];
82
86
  this.selectedReviewerIds = [];
83
87
  this.selectedAssigneeIds = [];
84
88
  this.selectedOverseerIds = [];
@@ -98,7 +102,7 @@ export class WorkflowProgramComponent {
98
102
  //form body for program meta data
99
103
  this.programForm = this.fb.group({
100
104
  program_type: [
101
- this.programType ?? 1,
105
+ this.programType,
102
106
  [Validators.required, Validators.min(0), Validators.max(3)],
103
107
  ],
104
108
  program_name: ['', [Validators.required, this.noWhitespaceValidator]],
@@ -107,10 +111,14 @@ export class WorkflowProgramComponent {
107
111
  program_objective: [''],
108
112
  // program_objective: ['', [Validators.required, this.noWhitespaceValidator]],
109
113
  program_objective_attachments: [[]],
114
+ program_roles: [[], [Validators.required, this.blankArrayValidator]],
110
115
  all_user_in_role: [false],
111
- program_owners: [[]],
116
+ program_owners: [[], [Validators.required, this.blankArrayValidator]],
112
117
  program_owners_group: [[]],
113
118
  program_approver: [[]],
119
+ performance_calculation: ['PAST_EVENT', [Validators.required]],
120
+ recurring_frequency: [true, [Validators.required]],
121
+ lock_scope_change: [false, [Validators.required]],
114
122
  framework: [],
115
123
  rc: [[]],
116
124
  program_assignee: [[]],
@@ -134,8 +142,7 @@ export class WorkflowProgramComponent {
134
142
  allow_any_file_key_evidence: [false],
135
143
  custom_fields: [[]],
136
144
  program_state: 0,
137
- collaborators: [[]],
138
- collaborators_group: [[]],
145
+ program_collaborator: [[]],
139
146
  });
140
147
  //exceptional handling of custom fields
141
148
  this.showAddCustomField = true;
@@ -144,6 +151,7 @@ export class WorkflowProgramComponent {
144
151
  programObjective: '',
145
152
  programDescription: '',
146
153
  };
154
+ this.manageProgramsRoleId = [];
147
155
  this.controls = {
148
156
  program_name: this.programForm.get('program_name'),
149
157
  program_type: this.programForm.get('program_type'),
@@ -181,14 +189,13 @@ export class WorkflowProgramComponent {
181
189
  program_assessments: this.programForm.get('program_assessments'),
182
190
  custom_fields: this.programForm.get('custom_fields'),
183
191
  isApproverDisabled: this.programForm.get('isApproverDisabled'),
184
- collaborators: this.programForm.get('collaborators'),
185
- collaborators_group: this.programForm.get('collaborators_group'),
192
+ program_collaborator: this.programForm.get('program_collaborator'),
186
193
  };
187
194
  this.lists = {
188
195
  ROLES: [],
189
196
  OWNERS: [],
190
197
  OWNERS_GROUPS: [],
191
- APPROVERS: [],
198
+ COLLABORATORS: [],
192
199
  REVIEWERS: [],
193
200
  REVIEWERS_GROUP: [],
194
201
  ASSIGNEES: [],
@@ -281,17 +288,20 @@ export class WorkflowProgramComponent {
281
288
  }
282
289
  }
283
290
  ngOnInit() {
284
- this.setFormField('program_type', this.programType ?? 1);
285
- this.fetchOrganizationUsers();
286
- this.fetchOrganizationGroup();
291
+ this.setFormField('program_type', this.programType);
292
+ if (this.mode === 'EDIT') {
293
+ this.getProgramDetails();
294
+ }
295
+ else {
296
+ this.fetchOrganizationUsers();
297
+ this.fetchOrganizationGroup();
298
+ }
287
299
  this.fetchRoles();
288
300
  this.fetchRC();
289
- this.handleDataPopulation();
290
301
  if (this.addToProgramDetails?._id) {
291
302
  this.listAction(this.addToProgramDetails, 'FRAMEWORK');
292
303
  }
293
304
  this.enablefeature();
294
- this.handleDataPopulation();
295
305
  this.changeRef.detectChanges();
296
306
  }
297
307
  get valid() {
@@ -354,77 +364,16 @@ export class WorkflowProgramComponent {
354
364
  this.fieldDeselector(type);
355
365
  break;
356
366
  }
357
- case 'RC': {
358
- const rc = this.setList(this.lists.RC, evt, 'item_id');
359
- this.setFormField('rc', this.uniqueByProp(rc, 'item_id'));
360
- this.fieldDeselector(type);
361
- break;
362
- }
363
367
  case 'OWNER': {
364
- this.setFormField('program_owners', this.uniqueByProp(evt?.users, 'uid'));
365
- this.setFormField('program_owners_group', this.uniqueByProp(evt?.groups, 'ugid'));
366
- this.fieldDeselector(type);
367
- break;
368
- }
369
- case 'APPROVER': {
370
- this.setFormField('program_approver', this.uniqueByProp(evt?.users, 'member_id'));
371
- this.fieldDeselector(type);
372
- break;
373
- }
374
- case 'COLLABORATORS': {
375
- this.setFormField('collaborators', this.uniqueByProp(evt?.users, 'uid'));
376
- this.setFormField('collaborators_group', this.uniqueByProp(evt?.groups, 'ugid'));
377
- this.fieldDeselector(type);
378
- break;
379
- }
380
- case 'DEFAULT_ASSIGNEE': {
381
- this.setFormField('program_default_assignee', this.uniqueByProp(evt?.users, 'member_id'));
382
- this.setFormField('program_default_assignee_group', this.uniqueByProp(evt?.groups, 'group_id'));
368
+ this.setFormField('program_owners', this.uniqueByProp(evt?.users, 'member_id'));
369
+ this.setFormField('program_owners_group', this.uniqueByProp(evt?.groups, 'group_id'));
383
370
  this.fieldDeselector(type);
384
371
  this.refreshList();
385
372
  break;
386
373
  }
387
- case 'REVIEWER': {
388
- this.setFormField('program_reviewer', this.uniqueByProp(evt?.users, 'member_id'));
389
- this.setFormField('program_reviewer_group', this.uniqueByProp(evt?.groups, 'group_id'));
390
- this.fieldDeselector(type);
391
- this.setDefaultReviewer(evt);
392
- break;
393
- }
394
- case 'DEFAULT_REVIEWER': {
395
- this.setFormField('program_default_reviewer', this.uniqueByProp(evt?.users, 'member_id'));
396
- this.setFormField('program_default_reviewer_group', this.uniqueByProp(evt?.groups, 'group_id'));
397
- this.fieldDeselector(type);
398
- this.controls.reviewer_completion_criteria.value =
399
- this.controls?.program_default_reviewer_group?.value?.length > 0
400
- ? 'ANYONE'
401
- : this.controls?.reviewer_completion_criteria?.value;
402
- this.refreshList();
403
- break;
404
- }
405
- case 'OVERSEER': {
406
- this.setFormField('program_overseer', this.uniqueByProp(evt?.users, 'member_id'));
407
- this.setFormField('program_overseer_group', this.uniqueByProp(evt?.groups, 'group_id'));
408
- this.fieldDeselector(type);
409
- this.setDefaultOverseer(evt);
410
- break;
411
- }
412
- case 'DEFAULT_OVERSEER': {
413
- this.setFormField('program_default_overseer', this.uniqueByProp(evt?.users, 'member_id'));
414
- this.setFormField('program_default_overseer_group', this.uniqueByProp(evt?.groups, 'group_id'));
415
- this.fieldDeselector(type);
416
- this.refreshList();
417
- break;
418
- }
419
- case 'DEFAULT_FAILED_OVERSEER': {
420
- this.setFormField('program_default_failed_overseer', this.uniqueByProp(evt?.users, 'member_id'));
421
- this.setFormField('program_default_failed_overseer_group', this.uniqueByProp(evt?.groups, 'group_id'));
422
- this.fieldDeselector(type);
423
- this.refreshList();
424
- break;
425
- }
426
- case 'ASSESSMENT': {
427
- this.setFormField('program_assessments', evt);
374
+ case 'COLLABORATOR': {
375
+ console.log("evt", evt, type);
376
+ this.setFormField('program_collaborator', this.uniqueByProp(evt?.users, 'member_id'));
428
377
  this.fieldDeselector(type);
429
378
  break;
430
379
  }
@@ -448,13 +397,8 @@ export class WorkflowProgramComponent {
448
397
  this.setFormField('program_roles', roles);
449
398
  break;
450
399
  }
451
- case 'RC': {
452
- const rcs = this.controls?.rc?.value?.filter((ele) => ele?.item_id !== evt?.item_id);
453
- this.setFormField('rc', rcs);
454
- break;
455
- }
456
400
  case 'OWNER': {
457
- const owners = this.controls?.program_owners?.value?.filter((ele) => ele?.uid !== evt?.uid);
401
+ const owners = this.controls?.program_owners?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
458
402
  this.setFormField('program_owners', owners);
459
403
  break;
460
404
  }
@@ -463,102 +407,9 @@ export class WorkflowProgramComponent {
463
407
  this.setFormField('program_owners_group', owners_group);
464
408
  break;
465
409
  }
466
- case 'APPROVER': {
467
- const approver = this.controls?.program_approver?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
468
- this.setFormField('program_approver', approver);
469
- break;
470
- }
471
- case 'ASSIGNEE': {
472
- const assignee = this.controls?.program_assignee?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
473
- this.setFormField('program_assignee', assignee);
474
- this.setDefaultAssigneeOnRemove(evt, type);
475
- break;
476
- }
477
- case 'ASSIGNEE_GROUP': {
478
- const assignee_group = this.controls?.program_assignee_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
479
- this.setFormField('program_assignee_group', assignee_group);
480
- this.setDefaultAssigneeOnRemove(evt, type);
481
- break;
482
- }
483
- case 'DEFAULT_ASSIGNEE': {
484
- const assignee = this.controls?.program_default_assignee?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
485
- this.setFormField('program_default_assignee', assignee);
486
- this.refreshList();
487
- break;
488
- }
489
- case 'DEFAULT_ASSIGNEE_GROUP': {
490
- const assignee_group = this.controls?.program_default_assignee_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
491
- this.setFormField('program_default_assignee_group', assignee_group);
492
- break;
493
- }
494
- case 'REVIEWER': {
495
- const reviewer = this.controls?.program_reviewer?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
496
- this.setFormField('program_reviewer', reviewer);
497
- this.setDefaultReviewerOnRemove(evt, type);
498
- break;
499
- }
500
- case 'REVIEWER_GROUP': {
501
- const reviewer_group = this.controls?.program_reviewer_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
502
- this.setFormField('program_reviewer_group', reviewer_group);
503
- this.setDefaultReviewerOnRemove(evt, type);
504
- break;
505
- }
506
- case 'DEFAULT_REVIEWER': {
507
- const reviewer = this.controls?.program_default_reviewer?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
508
- this.setFormField('program_default_reviewer', reviewer);
509
- this.refreshList();
510
- break;
511
- }
512
- case 'DEFAULT_REVIEWER_GROUP': {
513
- const reviewer_group = this.controls?.program_default_reviewer_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
514
- this.setFormField('program_default_reviewer_group', reviewer_group);
515
- this.controls.reviewer_completion_criteria.value =
516
- this.controls?.program_default_reviewer_group?.value?.length > 0
517
- ? 'ANYONE'
518
- : this.controls?.reviewer_completion_criteria?.value;
519
- break;
520
- }
521
- case 'OVERSEER': {
522
- const overseer = this.controls?.program_overseer?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
523
- this.setFormField('program_overseer', overseer);
524
- this.setDefaultOverseerOnRemove(evt, type);
525
- break;
526
- }
527
- case 'OVERSEER_GROUP': {
528
- const overseer_group = this.controls?.program_overseer_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
529
- this.setFormField('program_overseer_group', overseer_group);
530
- this.setDefaultOverseerOnRemove(evt, type);
531
- break;
532
- }
533
- case 'DEFAULT_OVERSEER': {
534
- const overseer = this.controls?.program_default_overseer?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
535
- this.setFormField('program_default_overseer', overseer);
536
- this.refreshList();
537
- break;
538
- }
539
- case 'DEFAULT_OVERSEER_GROUP': {
540
- const overseer_group = this.controls?.program_default_overseer_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
541
- this.setFormField('program_default_overseer_group', overseer_group);
542
- break;
543
- }
544
- case 'DEFAULT_FAILED_OVERSEER': {
545
- const overseer = this.controls?.program_default_failed_overseer?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
546
- this.setFormField('program_default_failed_overseer', overseer);
547
- this.refreshList();
548
- break;
549
- }
550
- case 'DEFAULT_FAILED_OVERSEER_GROUP': {
551
- const overseer_group = this.controls?.program_default_failed_overseer_group?.value?.filter((ele) => ele?.group_id !== evt?.group_id);
552
- this.setFormField('program_default_failed_overseer_group', overseer_group);
553
- break;
554
- }
555
- case 'ASSESSMENT': {
556
- let current = cloneDeep(this.controls.program_assessments?.value);
557
- const index = current.findIndex((ele) => ele.category_id == evt.category_id);
558
- current[index].assessmentIds = current[index].assessmentIds.filter((assessment) => assessment.id !== evt.id);
559
- if (current[index].assessmentIds.length === 0)
560
- current.splice(index, 1);
561
- this.listAction(current, 'ASSESSMENT');
410
+ case 'COLLABORATOR': {
411
+ const approver = this.controls?.program_collaborator?.value?.filter((ele) => ele?.member_id !== evt?.member_id);
412
+ this.setFormField('program_collaborator', approver);
562
413
  break;
563
414
  }
564
415
  case 'FRAMEWORK': {
@@ -577,47 +428,30 @@ export class WorkflowProgramComponent {
577
428
  .filter((ele) => ele);
578
429
  }
579
430
  refreshList() {
580
- this.selectedAssigneeIds = [];
581
- this.selectedReviewerIds = [];
582
- this.selectedOverseerIds = [];
583
- let assignorAndAssigneesIds = [];
584
- this.assignorId = [];
585
- let selectedAssignee = this.controls?.program_default_assignee?.value;
586
- let selectedReviewer = this.controls?.program_default_reviewer?.value;
587
- let selectedOverseerList = this.controls?.program_default_overseer?.value;
588
- let selectedOverseerFailureList = this.controls?.program_default_failed_overseer?.value;
589
- let assignor = this.currentUser();
590
- this.assignorId.push(assignor?.member_id);
591
- assignorAndAssigneesIds.push(assignor?.member_id);
592
- selectedAssignee?.forEach((user) => {
593
- this.selectedAssigneeIds.push(user?.member_id);
594
- assignorAndAssigneesIds.push(user?.member_id);
595
- });
596
- selectedReviewer?.forEach((user) => {
597
- this.selectedReviewerIds.push(user?.member_id);
598
- });
599
- selectedOverseerList?.forEach((user) => {
600
- this.selectedOverseerIds.push(user?.member_id);
601
- });
602
- selectedOverseerFailureList?.forEach((user) => {
603
- this.selectedOverseerIds.push(user?.member_id);
604
- });
605
- this.selectedReviewerIds = [...new Set(this.selectedReviewerIds)];
606
- this.selectedAssigneeIds = [...new Set(this.selectedAssigneeIds)];
607
- this.selectedOverseerIds = [...new Set(this.selectedOverseerIds)];
608
- let disableAssigneeList = this.lists?.ALL_USER?.filter((user) => this.selectedReviewerIds?.includes(user?.member_id) ||
609
- this.selectedOverseerIds?.includes(user?.member_id));
610
- this.disabledAssigneeIds = this.returnIds(disableAssigneeList, 'member_id');
611
- let disableReviewerList = this.lists?.ALL_USER?.filter((user) => this.selectedOverseerIds?.includes(user?.member_id) ||
612
- this.selectedAssigneeIds?.includes(user?.member_id));
613
- this.disableReviewerIds = this.returnIds(disableReviewerList, 'member_id');
614
- let disableOverseerList = this.lists?.ALL_USER?.filter((user) => assignorAndAssigneesIds?.includes(user?.member_id) ||
615
- this.selectedReviewerIds?.includes(user?.member_id));
616
- this.disableOverseerIds = this.returnIds(disableOverseerList, 'member_id');
431
+ let selectedOwner = this.controls?.program_owners?.value?.map((ele) => ele.member_id);
432
+ console.log("collaborators", selectedOwner, this.controls);
433
+ let disableCollaborator = this.lists?.COLLABORATORS?.data?.filter((user) => selectedOwner?.includes(user?.member_id));
434
+ console.log("disableCollaborator ==>", disableCollaborator);
435
+ this.disableCollaboratorIds = this.returnIds(disableCollaborator, 'member_id');
617
436
  }
618
437
  removeRole(evt) {
619
438
  this.onRemovingRole.emit(evt);
620
439
  }
440
+ //below 4 functions can be easilty combined into one as they follow same kind of pattern or can be offloaded to a external service
441
+ setDefaultAssignee(evt) {
442
+ if (evt?.users?.length || evt?.groups?.length) {
443
+ this.lists.DEFAULT_ASSIGNEES = this.uniqueByProp(evt?.users, 'member_id');
444
+ this.lists.DEFAULT_ASSIGNEES_GROUP = this.uniqueByProp(evt?.groups, 'group_id');
445
+ }
446
+ else {
447
+ this.lists.DEFAULT_ASSIGNEES = this.lists.ALL_USER;
448
+ this.lists.DEFAULT_ASSIGNEES_GROUP = this.lists.ALL_GROUP;
449
+ }
450
+ const assigneeMap = evt?.users?.map((ele) => ele?.member_id);
451
+ let currentDefaultAssignee = this.controls.program_default_assignee?.value;
452
+ currentDefaultAssignee = currentDefaultAssignee.filter((ele) => assigneeMap.includes(ele?.member_id));
453
+ this.setFormField('program_default_assignee', currentDefaultAssignee);
454
+ }
621
455
  setDefaultAssigneeOnRemove(evt, type) {
622
456
  switch (type) {
623
457
  case 'ASSIGNEE': {
@@ -739,16 +573,22 @@ export class WorkflowProgramComponent {
739
573
  ?.map((ele) => ele?._id);
740
574
  const defaultVal = this.lists?.ROLES?.data?.filter((ele) => ele?.roleName?.toLowerCase() === 'key admin' ||
741
575
  ele?.roleName?.toLowerCase() === 'admin');
576
+ this.manageProgramsRoleId = this.getManageProgramsRoleId();
742
577
  this.lists.SYSTEM_ROLE_IDS = defaultSystemVal;
743
578
  if (this.mode !== 'EDIT') {
744
579
  this.setFormField('program_roles', defaultVal);
580
+ this.fetchUsersAssociatedWithRoles();
581
+ this.fetchGroupsAssociatedWithRoles();
582
+ this.fetchUserWithManageProgramsRole();
745
583
  }
746
- this.fetchUsersAssociatedWithRoles();
747
- this.fetchGroupsAssociatedWithRoles();
748
584
  },
749
585
  error: (err) => { },
750
586
  });
751
587
  }
588
+ // Get Manage Programs roles Id:
589
+ getManageProgramsRoleId() {
590
+ return this.lists?.ROLES?.data?.filter((ele) => !['key admin', 'admin'].includes(ele?.roleName?.toLowerCase())).map((ele) => ele?._id) ?? [];
591
+ }
752
592
  //fetch the list of responsibilities center
753
593
  fetchRC() {
754
594
  this.programService.getResponsibilityCenterList().subscribe({
@@ -760,7 +600,8 @@ export class WorkflowProgramComponent {
760
600
  }
761
601
  fetchUsersAssociatedWithRoles(calledFrom) {
762
602
  const loggedInUser = this.currentUser();
763
- const roleIds = this.lists.ROLES?.data?.map((ele) => ele?._id);
603
+ const roleIds = this.controls.program_roles?.value?.map((ele) => ele?._id);
604
+ console.log("roleIds", roleIds, this.controls.program_roles);
764
605
  // if (fetchAll) {
765
606
  this.programService.fetchAllRoleUsers(roleIds).subscribe({
766
607
  next: (res) => {
@@ -770,13 +611,28 @@ export class WorkflowProgramComponent {
770
611
  res.total_items = res?.total_items + 1;
771
612
  }
772
613
  this.lists.OWNERS = res;
614
+ if (!res?.data
615
+ ?.map((ele) => ele?.member_id)
616
+ ?.includes(this.controls.program_approver?.value[0]?.member_id)) {
617
+ this.setFormField('program_approver', []);
618
+ }
773
619
  if (this.controls?.all_user_in_role?.value) {
774
620
  this.setFormField('program_owners', res?.data);
775
621
  }
622
+ else {
623
+ this.setDefaultOwners(res?.data, calledFrom);
624
+ }
776
625
  },
777
626
  error: (err) => { },
778
627
  });
779
628
  }
629
+ fetchUserWithManageProgramsRole() {
630
+ this.programService.fetchAllRoleUsers(this.manageProgramsRoleId).subscribe({
631
+ next: (res) => {
632
+ this.lists.COLLABORATORS = res;
633
+ },
634
+ });
635
+ }
780
636
  fetchGroupsAssociatedWithRoles() {
781
637
  const roleIds = this.controls.program_roles?.value?.map((ele) => ele?._id);
782
638
  this.programService.fetchAllRoleGroups(roleIds).subscribe({
@@ -824,6 +680,24 @@ export class WorkflowProgramComponent {
824
680
  next: (res) => {
825
681
  this.lists.ALL_USER = res;
826
682
  this.lists.ASSIGNEES = res;
683
+ this.lists.REVIEWERS = res;
684
+ this.lists.OVERSEERS = res;
685
+ if (this.mode !== 'EDIT') {
686
+ this.lists.DEFAULT_ASSIGNEES = res;
687
+ this.lists.DEFAULT_REVIEWERS = res;
688
+ this.lists.DEFAULT_OVERSEERS = res;
689
+ }
690
+ else if (this.mode === 'EDIT') {
691
+ if (!this.controls.program_assignee?.value?.length) {
692
+ this.lists.DEFAULT_ASSIGNEES = res;
693
+ }
694
+ if (!this.controls.program_reviewer?.value?.length) {
695
+ this.lists.DEFAULT_REVIEWERS = res;
696
+ }
697
+ if (!this.controls.program_overseer?.value?.length) {
698
+ this.lists.DEFAULT_OVERSEERS = res;
699
+ }
700
+ }
827
701
  this.listLoadingState.USERS = false;
828
702
  this.refreshList();
829
703
  },
@@ -837,9 +711,12 @@ export class WorkflowProgramComponent {
837
711
  next: (res) => {
838
712
  this.lists.ALL_GROUP = res;
839
713
  this.lists.ASSIGNEES_GROUP = res;
840
- if (data) {
841
- this.populateGroupsByGID(data, 'owners');
842
- this.populateGroupsByGID(data, 'collaborators');
714
+ this.lists.REVIEWERS_GROUP = res;
715
+ this.lists.OVERSEERS_GROUP = res;
716
+ if (this.mode !== 'EDIT') {
717
+ this.lists.DEFAULT_ASSIGNEES_GROUP = res;
718
+ this.lists.DEFAULT_REVIEWERS_GROUP = res;
719
+ this.lists.DEFAULT_OVERSEERS_GROUP = res;
843
720
  }
844
721
  },
845
722
  error: (err) => { },
@@ -983,8 +860,7 @@ export class WorkflowProgramComponent {
983
860
  this.loader = false;
984
861
  this.showSmiley = true;
985
862
  this.uiKitService.isSmileyOn = true;
986
- this.createdProgramId = res?.data?.program?.id;
987
- this.postIframeMessage(PostMessageEvent.PROGRAM_CREATED, res);
863
+ this.createdProgramId = res._id;
988
864
  },
989
865
  error: (err) => {
990
866
  this.loader = false;
@@ -992,7 +868,6 @@ export class WorkflowProgramComponent {
992
868
  if (err?.error?.message?.includes('Category already exist')) {
993
869
  this.isNameExists = true;
994
870
  }
995
- this.postIframeMessage(PostMessageEvent.PROGRAM_CREATED, err);
996
871
  },
997
872
  });
998
873
  }
@@ -1002,8 +877,7 @@ export class WorkflowProgramComponent {
1002
877
  this.loader = false;
1003
878
  this.showSmiley = true;
1004
879
  this.uiKitService.isSmileyOn = true;
1005
- this.postIframeMessage(PostMessageEvent.PROGRAM_UPDATED, res);
1006
- this.createdProgramId = res?.data?.program?.id;
880
+ this.createdProgramId = res._id;
1007
881
  },
1008
882
  error: (err) => {
1009
883
  this.loader = false;
@@ -1011,15 +885,10 @@ export class WorkflowProgramComponent {
1011
885
  if (err?.error?.message?.includes('Category already exist')) {
1012
886
  this.isNameExists = true;
1013
887
  }
1014
- this.postIframeMessage(PostMessageEvent.PROGRAM_UPDATED, err);
1015
888
  },
1016
889
  });
1017
890
  }
1018
891
  }
1019
- postIframeMessage(event, data) {
1020
- const message = this.iframeService.getCloseWebviewMessage(event, data);
1021
- this.iframeService.postMessage(message);
1022
- }
1023
892
  action(event) {
1024
893
  switch (event) {
1025
894
  case 'addMore':
@@ -1041,10 +910,10 @@ export class WorkflowProgramComponent {
1041
910
  url = 'https://' + window.location.host;
1042
911
  }
1043
912
  if (window.location.host.startsWith('localhost')) {
1044
- url += '/programs/' + this.createdProgramId;
913
+ url += '/program-workroom?id=' + this.createdProgramId;
1045
914
  }
1046
915
  else {
1047
- url += '/compliance/programs/' + this.createdProgramId;
916
+ url += '/program/program-workroom?id=' + this.createdProgramId;
1048
917
  }
1049
918
  this.iframeService.redirectIfInIframe(url, true);
1050
919
  }
@@ -1121,56 +990,148 @@ export class WorkflowProgramComponent {
1121
990
  .getProgram(this.programId)
1122
991
  .pipe(take(1))
1123
992
  .subscribe((res) => {
993
+ this.setFormField('program_name', res?.name);
994
+ this.setFormField('program_type', res?.programType);
995
+ this.setFormField('program_objective', res?.program_objective?.text);
996
+ this.setFormField('all_user_in_role', res?.all_user_in_role);
997
+ this.setFormField('program_description_attachments', res?.description?.attachments);
998
+ this.setFormField('program_objective_attachments', res?.program_objective?.attachments);
999
+ this.setFormField('performance_calculation', res?.calculate_past_upcoming_event);
1000
+ this.setFormField('recurring_frequency', res?.program_frequency);
1001
+ if (res?.program_frequency &&
1002
+ this.mode === 'EDIT' &&
1003
+ (this.orgDetails?.hasProgramFullPermission ||
1004
+ !this.programSimplifyFlag)) {
1005
+ this.additionalOption.PROGRAM_FREQUENCY = true;
1006
+ this.populateOptionalFields();
1007
+ }
1008
+ this.setFormField('lock_scope_change', res?.lock_scope);
1009
+ if (res?.lock_scope &&
1010
+ (this.orgDetails?.hasProgramFullPermission ||
1011
+ !this.programSimplifyFlag)) {
1012
+ this.additionalOption.SCOPE_CHANGES = true;
1013
+ this.populateOptionalFields();
1014
+ }
1015
+ this.setFormField('program_state', res?.state);
1016
+ const rc = res.rc_details.map((ele) => {
1017
+ return { ...ele, item_name: ele?.rc_name, item_id: ele?.rc_id };
1018
+ });
1019
+ this.setFormField('rc', rc);
1020
+ if (res?.rc_details &&
1021
+ res?.rc_details?.length &&
1022
+ (this.orgDetails?.hasProgramFullPermission ||
1023
+ !this.programSimplifyFlag)) {
1024
+ this.additionalOption.RC = true;
1025
+ this.populateOptionalFields();
1026
+ }
1027
+ this.setFormField('evidence_required', res?.evidence_upload_flag);
1028
+ this.setFormField('allow_any_file_key_evidence', res?.is_key_evidence);
1029
+ if ((res?.evidence_upload_flag || res?.is_key_evidence) &&
1030
+ (this.orgDetails?.hasProgramFullPermission ||
1031
+ !this.programSimplifyFlag)) {
1032
+ this.additionalOption.FORMATE_EVIDENCE = true;
1033
+ this.populateOptionalFields();
1034
+ }
1035
+ this.setFormField('assignee_completion_criteria', res.default_assignee_type);
1036
+ this.setFormField('reviewer_completion_criteria', res.default_reviewers_type);
1037
+ this.editorData.programDescription = res.description?.text;
1038
+ this.editorData.programObjective = res.program_objective?.text;
1039
+ this.setFormField('framework', {
1040
+ ...res.framework_details,
1041
+ ...{ _id: res?.framework_details?.framework_id },
1042
+ });
1043
+ const role = res?.roles?.map((ele) => {
1044
+ return {
1045
+ _id: ele?.roleId,
1046
+ roleName: ele?.roleName,
1047
+ licenseType: ele?.licenseType,
1048
+ permissionGroupName: ele?.permissionGroupName,
1049
+ };
1050
+ });
1051
+ this.setFormField('program_roles', role);
1052
+ if (res?.roles && res?.roles?.length && this.mode === 'EDIT') {
1053
+ this.additionalOption.ROLES = true;
1054
+ }
1055
+ if (res.assessmentData.length) {
1056
+ res.assessmentData = res.assessmentData.map((ele) => {
1057
+ return {
1058
+ ...ele,
1059
+ assessmentIds: ele?.assessments.map((assess) => {
1060
+ return { ...assess, id: assess?._id };
1061
+ }),
1062
+ };
1063
+ });
1064
+ this.setFormField('program_assessments', res.assessmentData);
1065
+ if (this.orgDetails?.hasProgramFullPermission ||
1066
+ !this.programSimplifyFlag) {
1067
+ this.additionalOption.ASSESSMENT = true;
1068
+ this.populateOptionalFields();
1069
+ }
1070
+ }
1071
+ if (res.custom_fields.length) {
1072
+ this.setFormField('custom_fields', res.custom_fields);
1073
+ this.additionalOption.CUSTOM_FIELDS = true;
1074
+ this.populateOptionalFields();
1075
+ }
1076
+ this.isApproverDisabled = res?.isApproverDisabled ?? false;
1077
+ if (this.isApproverDisabled) {
1078
+ setTimeout(() => {
1079
+ this.disableElementsFromMoreOptions.emit(['APPROVER']);
1080
+ }, 500);
1081
+ }
1082
+ this.populateMembers(res);
1083
+ this.populateGroups(res);
1084
+ this.fetchUsersAssociatedWithRoles('getProgramDetails');
1085
+ this.fetchGroupsAssociatedWithRoles();
1086
+ this.fetchOrganizationGroup();
1087
+ this.fetchOrganizationUsers();
1124
1088
  });
1125
1089
  }
1126
- populateProgramDetails(res) {
1127
- this.programId = res?.id;
1128
- const programType = PROGRAM_OBJECT[res?.type] ?? PROGRAM_OBJECT.others;
1129
- this.setFormField('program_name', res?.name);
1130
- this.setFormField('program_type', programType);
1131
- this.setFormField('program_objective', res?.description);
1132
- this.editorData.programObjective = res?.description;
1133
- if (res?.roles && res?.roles?.length && this.mode === 'EDIT') {
1134
- this.additionalOption.ROLES = true;
1135
- }
1136
- if (res.customFields.length) {
1137
- this.setFormField('custom_fields', res.customFields);
1138
- this.additionalOption.CUSTOM_FIELDS = true;
1139
- this.populateOptionalFields();
1140
- }
1141
- this.populateMembers(res);
1142
- this.populateGroups(res);
1143
- this.fetchUsersAssociatedWithRoles('getProgramDetails');
1144
- this.fetchGroupsAssociatedWithRoles();
1145
- this.fetchOrganizationGroup(res);
1146
- this.fetchOrganizationUsers();
1147
- }
1148
1090
  populateMembers(res) {
1091
+ this.loader = true;
1149
1092
  const ids = [
1150
1093
  ...new Set([
1151
- ...(res?.owners?.admins?.users ?? []),
1152
- ...(res?.owners?.managers?.users ?? []),
1094
+ ...(res?.owners ?? []),
1095
+ ...(res?.approvers ?? []),
1096
+ ...(res?.assignee_ids ?? []),
1097
+ ...(res?.default_assignee_ids ?? []),
1098
+ ...(res?.reviewers ?? []),
1099
+ ...(res?.default_reviewers ?? []),
1100
+ ...(res?.overseers?.cc_email ?? []),
1101
+ ...(res?.overseers?.failure_cc_email ?? []).filter((ele) => ele),
1102
+ ...(res?.default_overseers?.cc_email ?? []),
1103
+ ...(res?.default_overseers?.failure_cc_email ?? []).filter((ele) => ele),
1153
1104
  ]),
1154
1105
  ];
1155
- this.programService.getMemeberByUIds(ids).subscribe({
1106
+ this.programService.getMemeberByIds(ids).subscribe({
1156
1107
  next: (response) => {
1157
1108
  this.loader = false;
1158
- const selectedOwners = res.owners?.admins;
1159
- const selectedCollaborators = res.owners?.managers;
1160
- if (selectedOwners?.users?.length) {
1161
- const owners = response.filter((ele) => selectedOwners?.users.includes(ele?.uid));
1109
+ if (res.owners && res?.owners?.length) {
1110
+ const owners = response.filter((ele) => res?.owners.includes(ele?.member_id));
1162
1111
  this.setFormField('program_owners', owners);
1163
1112
  if (this.mode === 'EDIT') {
1164
1113
  this.additionalOption.OWNERS = true;
1165
1114
  this.populateOptionalFields();
1166
1115
  }
1167
1116
  }
1168
- if (selectedCollaborators?.users?.length) {
1169
- const collaborators = response.filter((ele) => selectedCollaborators?.users?.includes(ele?.uid));
1170
- this.setFormField('collaborators', collaborators);
1171
- this.additionalOption.COLLABORATORS = true;
1117
+ if (res.approvers &&
1118
+ res?.approvers?.length &&
1119
+ !this.programSimplifyFlag) {
1120
+ const approvers = response.filter((ele) => res?.approvers.includes(ele?.member_id));
1121
+ this.setFormField('program_approver', approvers);
1122
+ this.additionalOption.APPROVER = true;
1172
1123
  this.populateOptionalFields();
1173
1124
  }
1125
+ if (res?.assignee_ids && res?.assignee_ids?.length) {
1126
+ const assignee = response.filter((ele) => res?.assignee_ids.includes(ele?.member_id));
1127
+ this.setFormField('program_assignee', assignee);
1128
+ this.lists.DEFAULT_ASSIGNEES = assignee;
1129
+ if (this.orgDetails?.hasProgramFullPermission ||
1130
+ !this.programSimplifyFlag) {
1131
+ this.additionalOption.ASSIGNEES = true;
1132
+ this.populateOptionalFields();
1133
+ }
1134
+ }
1174
1135
  if (res?.default_assignee_ids && res?.default_assignee_ids?.length) {
1175
1136
  const assignee = response.filter((ele) => res?.default_assignee_ids.includes(ele?.member_id));
1176
1137
  this.setFormField('program_default_assignee', assignee);
@@ -1180,6 +1141,52 @@ export class WorkflowProgramComponent {
1180
1141
  this.populateOptionalFields();
1181
1142
  }
1182
1143
  }
1144
+ if (res?.reviewers && res?.reviewers?.length) {
1145
+ const reviewers = response.filter((ele) => res?.reviewers.includes(ele?.member_id));
1146
+ this.setFormField('program_reviewer', reviewers);
1147
+ this.lists.DEFAULT_REVIEWERS = reviewers;
1148
+ if (this.orgDetails?.hasProgramFullPermission ||
1149
+ !this.programSimplifyFlag) {
1150
+ this.additionalOption.REVIEWER = true;
1151
+ this.populateOptionalFields();
1152
+ }
1153
+ }
1154
+ if (res?.default_reviewers && res?.default_reviewers?.length) {
1155
+ const reviewers = response.filter((ele) => res?.default_reviewers.includes(ele?.member_id));
1156
+ this.setFormField('program_default_reviewer', reviewers);
1157
+ if (this.orgDetails?.hasProgramFullPermission ||
1158
+ !this.programSimplifyFlag) {
1159
+ this.additionalOption.REVIEWER = true;
1160
+ this.populateOptionalFields();
1161
+ }
1162
+ }
1163
+ if (res?.overseers && res?.overseers?.cc_email?.length) {
1164
+ const cc = response.filter((ele) => res?.overseers?.cc_email.includes(ele?.member_id));
1165
+ this.setFormField('program_overseer', cc);
1166
+ this.lists.DEFAULT_OVERSEERS = cc;
1167
+ if (this.orgDetails?.hasProgramFullPermission ||
1168
+ !this.programSimplifyFlag) {
1169
+ this.additionalOption.OVERSEER = true;
1170
+ this.populateOptionalFields();
1171
+ }
1172
+ }
1173
+ if (res?.default_overseers &&
1174
+ (res?.default_overseers?.cc_email?.length ||
1175
+ res?.default_overseers?.failure_cc_email?.length)) {
1176
+ if (res?.default_overseers?.cc_email?.length) {
1177
+ const defaultCC = response.filter((ele) => res?.default_overseers?.cc_email.includes(ele?.member_id));
1178
+ this.setFormField('program_default_overseer', defaultCC);
1179
+ }
1180
+ if (res?.default_overseers?.failure_cc_email?.length) {
1181
+ const failCC = response.filter((ele) => res?.default_overseers?.failure_cc_email.includes(ele?.member_id));
1182
+ this.setFormField('program_default_failed_overseer', failCC);
1183
+ }
1184
+ if (this.orgDetails?.hasProgramFullPermission ||
1185
+ !this.programSimplifyFlag) {
1186
+ this.additionalOption.OVERSEER = true;
1187
+ this.populateOptionalFields();
1188
+ }
1189
+ }
1183
1190
  },
1184
1191
  });
1185
1192
  this.checkProgramOptionField();
@@ -1200,18 +1207,77 @@ export class WorkflowProgramComponent {
1200
1207
  this.programService.getMemberByGroups(ids).subscribe({
1201
1208
  next: (resp) => {
1202
1209
  const response = resp?.data;
1203
- if (res?.owners?.userGroups?.length) {
1204
- const owners = response.filter((ele) => res?.owners?.userGroups?.includes(ele?.ugid));
1205
- this.additionalOption.OWNERS = true;
1206
- this.populateOptionalFields();
1210
+ if (res.owners_group && res?.owners_group?.length) {
1211
+ const owners = response.filter((ele) => res?.owners_group?.includes(ele?.group_id));
1207
1212
  this.setFormField('program_owners_group', owners);
1208
1213
  }
1209
- if (res?.managers?.userGroups?.length) {
1210
- const collaborators = response.filter((ele) => res?.managers?.userGroups?.includes(ele?.ugid));
1211
- this.setFormField('collaborators_group', collaborators);
1212
- this.additionalOption.COLLABORATORS = true;
1213
- this.populateOptionalFields();
1214
- this.lists.ASSIGNEES_GROUP = collaborators;
1214
+ if (res.assignee_group_ids && res?.assignee_group_ids?.length) {
1215
+ const assignee = response.filter((ele) => res?.assignee_group_ids?.includes(ele?.group_id));
1216
+ this.setFormField('program_assignee_group', assignee);
1217
+ this.lists.DEFAULT_ASSIGNEES_GROUP = assignee;
1218
+ if (this.orgDetails?.hasProgramFullPermission ||
1219
+ !this.programSimplifyFlag) {
1220
+ this.additionalOption.ASSIGNEES = true;
1221
+ }
1222
+ }
1223
+ if (res?.default_assignee_group_ids &&
1224
+ res?.default_assignee_group_ids?.length) {
1225
+ const assignee = response.filter((ele) => res?.default_assignee_group_ids?.includes(ele?.group_id));
1226
+ this.setFormField('program_default_assignee_group', assignee);
1227
+ if (this.orgDetails?.hasProgramFullPermission ||
1228
+ !this.programSimplifyFlag) {
1229
+ this.additionalOption.ASSIGNEES = true;
1230
+ }
1231
+ }
1232
+ if (res?.reviewer_group_ids && res?.reviewer_group_ids?.length) {
1233
+ const reviewer = response.filter((ele) => res?.reviewer_group_ids?.includes(ele?.group_id));
1234
+ this.setFormField('program_reviewer_group', reviewer);
1235
+ this.lists.DEFAULT_REVIEWERS_GROUP = reviewer;
1236
+ if (this.orgDetails?.hasProgramFullPermission ||
1237
+ !this.programSimplifyFlag) {
1238
+ this.additionalOption.REVIEWER = true;
1239
+ }
1240
+ }
1241
+ if (res?.default_reviewer_group_ids &&
1242
+ res?.default_reviewer_group_ids?.length) {
1243
+ const reviewer = response?.filter((ele) => res?.default_reviewer_group_ids?.includes(ele?.group_id));
1244
+ this.setFormField('program_default_reviewer_group', reviewer);
1245
+ this.controls.reviewer_completion_criteria.value =
1246
+ this.controls?.program_default_reviewer_group?.value?.length > 0
1247
+ ? 'ANYONE'
1248
+ : this.controls?.reviewer_completion_criteria?.value;
1249
+ if (this.orgDetails?.hasProgramFullPermission ||
1250
+ !this.programSimplifyFlag) {
1251
+ this.additionalOption.REVIEWER = true;
1252
+ }
1253
+ }
1254
+ if (res?.overseers?.cc_email_groups &&
1255
+ res?.overseers?.cc_email_groups?.length) {
1256
+ const overseerGroup = response.filter((ele) => res?.overseers?.cc_email_groups?.includes(ele?.group_id));
1257
+ this.setFormField('program_overseer_group', overseerGroup);
1258
+ this.lists.DEFAULT_OVERSEERS_GROUP = overseerGroup;
1259
+ if (this.orgDetails?.hasProgramFullPermission ||
1260
+ !this.programSimplifyFlag) {
1261
+ this.additionalOption.OVERSEER = true;
1262
+ }
1263
+ }
1264
+ if (res?.default_overseers?.cc_email_groups &&
1265
+ res?.default_overseers?.cc_email_groups?.length) {
1266
+ const defaultOverseerGroup = response.filter((ele) => res?.default_overseers?.cc_email_groups?.includes(ele?.group_id));
1267
+ this.setFormField('program_default_overseer_group', defaultOverseerGroup);
1268
+ if (this.orgDetails?.hasProgramFullPermission ||
1269
+ !this.programSimplifyFlag) {
1270
+ this.additionalOption.OVERSEER = true;
1271
+ }
1272
+ }
1273
+ if (res?.default_overseers?.failure_cc_email_groups &&
1274
+ res?.default_overseers?.failure_cc_email_groups?.length) {
1275
+ const defaultOverseerFailureGroup = response.filter((ele) => res?.default_overseers?.failure_cc_email_groups?.includes(ele?.group_id));
1276
+ this.setFormField('program_default_failed_overseer_group', defaultOverseerFailureGroup);
1277
+ if (this.orgDetails?.hasProgramFullPermission ||
1278
+ !this.programSimplifyFlag) {
1279
+ this.additionalOption.OVERSEER = true;
1280
+ }
1215
1281
  }
1216
1282
  },
1217
1283
  // As of now groups has been removed from reviewer and overseeer if this group feature gets incoperated in
@@ -1219,27 +1285,6 @@ export class WorkflowProgramComponent {
1219
1285
  });
1220
1286
  this.checkProgramOptionField();
1221
1287
  }
1222
- populateGroupsByGID(programDetails, type) {
1223
- switch (type) {
1224
- case 'owners':
1225
- const owner_ugid = programDetails?.owners?.admins?.userGroups;
1226
- const ownersGroup = this.lists.ASSIGNEES_GROUP.filter((ele) => owner_ugid.includes(ele?.ugid));
1227
- const ownersGroupIds = ownersGroup.map((ele) => ele?.group_id);
1228
- this.setFormField('program_owners_group', ownersGroup);
1229
- this.additionalOption.OWNERS = true;
1230
- this.populateOptionalFields();
1231
- break;
1232
- case 'collaborators':
1233
- const collaborator_ugid = programDetails?.owners?.managers?.userGroups;
1234
- const groupList = this.lists.ASSIGNEES_GROUP.filter((ele) => collaborator_ugid.includes(ele?.ugid));
1235
- this.setFormField('collaborators_group', groupList);
1236
- this.additionalOption.COLLABORATORS = true;
1237
- this.populateOptionalFields();
1238
- break;
1239
- default:
1240
- break;
1241
- }
1242
- }
1243
1288
  resetAdditionalOption() {
1244
1289
  this.additionalOption.ROLES = false;
1245
1290
  this.additionalOption.OWNERS = false;
@@ -1285,18 +1330,13 @@ export class WorkflowProgramComponent {
1285
1330
  : 'Owners are responsible for managing a Program. Only Owners can make changes to a Program and the responsibilities that are linked with the Program.<br>The <strong>Key Admin</strong> and all <b>Admin</b> users will be selected as the Owners of a Program by default.';
1286
1331
  this.ff_rc_listing = this.allowedFeature.isFeatureEnabled('ff_rc_listing');
1287
1332
  }
1288
- handleDataPopulation() {
1289
- if (this.mode === 'EDIT') {
1290
- this.populateProgramDetails(this.programDetails);
1291
- }
1292
- }
1293
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowProgramComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ProgramsService }, { token: i3.AuthService }, { token: i4.UiKitService }, { token: i0.ChangeDetectorRef }, { token: i5.IframeService }], target: i0.ɵɵFactoryTarget.Component }); }
1294
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WorkflowProgramComponent, selector: "app-workflow-program", inputs: { canFrameworkChange: "canFrameworkChange", mode: "mode", programId: "programId", programType: "programType", allowedFeature: "allowedFeature", addToProgramDetails: "addToProgramDetails", orgDetails: "orgDetails", programDetails: "programDetails" }, outputs: { pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", showConfirmationAlert: "showConfirmationAlert", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", onRemovingRole: "onRemovingRole", disableElementsFromMoreOptions: "disableElementsFromMoreOptions" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], ngImport: i0, template: "<div class=\"workflow-program\" #form>\n <form novalidate [formGroup]=\"programForm\">\n <!-- Program Category Type -->\n <form-field\n [checked]=\"controls?.program_type?.value > -1\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.issue_type\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM TYPE <span class=\"required\">*</span></label\n >\n <tab-selector\n formControlName=\"program_type\"\n [displayArray]=\"constants?.categoryType\"\n ></tab-selector>\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\n </form-field>\n\n <!-- Framework -->\n <form-field\n *ngIf=\"isAscentAllowed\"\n [checked]=\"false\"\n [active]=\"false\"\n [disabled]=\"false\"\n [img]=\"ASSETS.case_category\"\n >\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <!-- [selectDiv]=\"true\" -->\n <input-with-pill\n [placeholder]=\"'Select a framework that this Program relates to'\"\n (select)=\"activateList('FRAMEWORK')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"canFrameworkChange\"\n (click)=\"remove('', 'FRAMEWORK')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.framework.value?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.framework.value?.name }}</span\n >\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" >&#xe90d;</i> {{controls?.framework.value?.name}}</span>\n </div>\n </div> -->\n <button\n *ngIf=\"canFrameworkChange\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('FRAMEWORK')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n </form-field>\n\n <!-- Program Category Name -->\n <form-field\n [checked]=\"controls?.program_name?.value?.trim()?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.what\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM NAME <span class=\"required\">*</span></label\n >\n <input\n InputTrim\n formControlName=\"program_name\"\n type=\"text\"\n placeholder=\"What is the Program name?\"\n />\n\n <p\n *ngIf=\"\n controls?.program_name?.errors && controls?.program_name?.touched\n \"\n class=\"error-message\"\n >\n Enter a name for this Program.\n </p>\n <p *ngIf=\"isNameExists\" class=\"error-message\">\n Program name already exists.\n </p>\n <vcomply-editor\n [(ngModel)]=\"editorData.programObjective\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('OBJECTIVE', $event)\"\n (ngModelChange)=\"setFormField('program_objective', $event, true)\"\n [editorConfig]=\"constants?.description\"\n >\n </vcomply-editor>\n </form-field>\n\n\n\n <!-- Owners -->\n <form-field\n *ngIf=\"additionalOption?.OWNERS\"\n [checked]=\"\n controls?.program_owners?.value?.length > 0 ||\n controls?.program_owners_group?.value?.length > 0\n \"\n [active]=\"activeList === 'OWNER'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >OWNER(S) \n <span\n class=\"icon\"\n *ngIf=\"toolTipData.owner !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('OWNER')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_owners?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_owners?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners?.value?.length > 1\"\n >\n +{{ controls?.program_owners?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_owners_group?.value?.length &&\n controls?.program_owners?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_owners_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.program_owners_group?.value[0],\n 'OWNER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_owners_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_owners_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.program_owners_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n <button\n *ngIf=\"activeList !== 'OWNER'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('OWNER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.program_owners?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !(\n lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\n ).includes(owner?.member_id)\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.program_owners_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Collaborators -->\n <form-field\n *ngIf=\"additionalOption?.COLLABORATORS\"\n [checked]=\"\n controls?.collaborators?.value?.length > 0 ||\n controls?.collaborators_group?.value?.length > 0\n \"\n [active]=\"activeList === 'COLLABORATORS'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'COLLABORATORS'\"\n [img]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\n \"\n >\n <label class=\"vx-control-panel\"\n >COLLABORATORS \n <span\n class=\"icon\"\n *ngIf=\"toolTipData.collaborators !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.collaborators\"\n id=\"CollaboratorsHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('COLLABORATORS')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.collaborators?.value[0] || controls?.collaborators_group?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <!-- Users -->\n <div \n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.collaborators?.value[0]\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.collaborators?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.collaborators?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.collaborators?.value?.length > 1\"\n >\n +{{ controls?.collaborators?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\" \n controls?.collaborators_group?.value?.length &&\n controls?.collaborators?.value?.length\n \"\n >&</span\n >\n <!-- Groups -->\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.collaborators_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.collaborators_group?.value[0],\n 'COLLABORATORS_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.collaborators_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.collaborators_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.collaborators_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\">&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'COLLABORATORS'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('COLLABORATORS')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.collaborators?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n\n class=\"icons\"\n (click)=\"remove(owner, 'COLLABORATORS')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.collaborators_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'COLLABORATORS_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Performance Calculated -->\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\n </tab-selector>\n </form-field> -->\n <ng-container *ngIf=\"isProgramScope && false\">\n <div\n class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\"\n >\n PROGRAM SCOPE\n </div>\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i> -->\n <span\n class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\"\n *ngIf=\"toolTipData.programScop !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.programScope\"\n id=\"PSHelpText\"\n ></div>\n </div>\n </popover-hover>\n </ng-container>\n\n <!-- Program Frequency -->\n <form-field\n *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\"\n [checked]=\"[true, false].includes(controls?.recurring_frequency?.value)\"\n [active]=\"activeList === 'FREQUENCY'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'FREQUENCY'\n \"\n [img]=\"ASSETS.recurring\"\n >\n <label class=\"vx-control-panel\" id=\"PDChange\"\n >PROGRAM DURATION\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +\n businessCycle.selectedCycle.business_cycle +\n '. All responsibilities linked with that Program will also have the same Program Duration.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ProgramDurationHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"!controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </div>\n </form-field>\n\n <!-- Scope Changes -->\n <form-field\n *ngIf=\"additionalOption?.SCOPE_CHANGES\"\n [checked]=\"[true, false].includes(controls?.lock_scope_change?.value)\"\n [active]=\"activeList === 'SCOPE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\n [img]=\"ASSETS.lock_scope\"\n >\n <label class=\"vx-control-panel\"\n >Lock the Program Scope\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ScopeChangesHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Would you like to\n <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the\n program scope?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"!controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </form-field>\n\n <!-- Framework -->\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\n <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\">&#xe90d;</i>{{controls?.framework?.value?.framework_name}}</span>\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\n </div>\n </div>\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n </input-with-pill>\n <app-popover #framework [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\">&#xe90d;</i>\n Manage framework name\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field> -->\n\n <!-- Responsibility Center -->\n <form-field\n *ngIf=\"additionalOption?.RC\"\n [checked]=\"controls?.rc?.value?.length\"\n [active]=\"activeList === 'RC'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\n [img]=\"ASSETS.responsibility_center\"\n >\n <label class=\"vx-control-panel\"\n >RESPONSIBILITY CENTER\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RCHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n (select)=\"activateList('RC')\"\n [placeholder]=\"\n 'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\n \"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\"\n >\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(controls?.rc?.value[0], 'RC')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.rc?.value[0]?.item_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.rc?.value[0]?.item_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"rc.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.rc?.value?.length > 1\"\n >\n +{{ controls?.rc?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\">&#xe90d;</i>{{controls?.rc?.value[0]?.item_name}}</span>\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'RC'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('RC')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #rc [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of controls?.rc?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(rc, 'RC')\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Assignee -->\n <form-field\n *ngIf=\"additionalOption?.ASSIGNEES\"\n [checked]=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n [active]=\"['ASSIGNEE', 'DEFAULT_ASSIGNEE']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['ASSIGNEE', 'DEFAULT_ASSIGNEE'].includes(activeList)\n \"\n [img]=\"ASSETS.case_assignees\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n >ASSIGNEES\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssigneeHelpText\"\n >&#xeb16;</i\n >\n </label>\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [placeholder]=\"\n 'Who is responsible for completing the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_assignee?.value[0], 'ASSIGNEE')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_assignee?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_assignee_group?.value?.length &&\n controls?.program_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_assignee_group?.value[0],\n 'ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee_group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee_group?.value?.length > 1\"\n >\n +{{ controls?.program_assignee_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSIGNEE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSIGNEE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #assignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_assignee?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assignee, 'ASSIGNEE')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #assignee_group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_assignee_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'ASSIGNEE_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >DEFAULT ASSIGNEE\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DAHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'ASSIGNEE'\"\n [placeholder]=\"\n 'Which persons will be selected as the default assignees for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee?.value[0],\n 'DEFAULT_ASSIGNEE'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_default_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length &&\n controls?.program_default_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee_group?.value[0],\n 'DEFAULT_ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssigneeGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_assignee_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_ASSIGNEE'\"\n (click)=\"activateList('DEFAULT_ASSIGNEE')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_default_assignee?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultAssigneeGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_assignee_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\"\n (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\"\n >\n ALL SELECTED PERSONS NEED TO COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, separate responsibilities will be created for each person.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\"\n (checkedEvent)=\"\n setFormField('assignee_completion_criteria', 'ANYONE')\n \"\n >\n ANY SELECTED PERSON CAN COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, only one responsibility will be created.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Reviewer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.REVIEWER\"\n [checked]=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n [active]=\"['REVIEWER', 'DEFAULT_REVIEWER']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['REVIEWER', 'DEFAULT_REVIEWER'].includes(activeList)\n \"\n [img]=\"ASSETS.reviewer\"\n >\n <label\n [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n class=\"vx-control-panel\"\n >Reviewers\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ReviewerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n [placeholder]=\"\n 'Who is responsible for reviewing the responsibilities within this Program?'\n \"\n (select)=\"activateList('REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_reviewer?.value[0], 'REVIEWER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_reviewer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_reviewer_group?.value?.length &&\n controls?.program_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_reviewer_group?.value[0],\n 'REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'REVIEWER'\"\n (click)=\"activateList('REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #reviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_reviewer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(reviewer, 'REVIEWER')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #reviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_reviewer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'REVIEWER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n [class.disabled]=\"activeList === 'REVIEWER'\"\n class=\"vx-control-panel\"\n >DEFAULT Reviewer\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DRHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'REVIEWER'\"\n [placeholder]=\"\n 'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer?.value[0],\n 'DEFAULT_REVIEWER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_default_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length &&\n controls?.program_default_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer_group?.value[0],\n 'DEFAULT_REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_reviewer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_REVIEWER'\"\n (click)=\"activateList('DEFAULT_REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_default_reviewer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(reviewer, 'DEFAULT_REVIEWER')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultReviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_reviewer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_REVIEWER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'REVIEWER'\"\n >\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\n \"\n [class.disabled]=\"\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n >\n SEQUENTIAL\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review one at a time in the sequence defined by you.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'ANYONE' ||\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'ANYONE')\n \"\n >\n ANY REVIEWER CAN MARK THIS AS REVIEWED\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Overseer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.OVERSEER\"\n [checked]=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n [active]=\"activeList === 'OVERSEER'\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['OVERSEER', 'DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(\n activeList\n )\n \"\n [img]=\"ASSETS.oversight\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n >Oversights\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"overseerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [placeholder]=\"\n 'Who is responsible for overseeing the responsibilities within this Program?'\n \"\n (select)=\"activateList('OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_overseer?.value[0], 'OVERSEER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_overseer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseers.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_overseer_group?.value?.length &&\n controls?.program_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_overseer_group?.value[0],\n 'OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_overseer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_overseer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer_group?.value?.length > 1\"\n >\n +{{ controls?.program_overseer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\n {{controls?.program_overseer?.value[0]?.member_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n\n <button\n *ngIf=\"activeList !== 'OVERSEER'\"\n (click)=\"activateList('OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseers [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_overseer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(overseer, 'OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_overseer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'OVERSEER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"['OVERSEER'].includes(activeList)\"\n >DEFAULT Oversight\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DOHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [disabled]=\"\n ['OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer?.value[0],\n 'DEFAULT_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefault.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_default_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length &&\n controls?.program_default_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer_group?.value[0],\n 'DEFAULT_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_overseer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_OVERSEER'\"\n (click)=\"activateList('DEFAULT_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_overseer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_overseer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label class=\"vx-control-panel\"> </label>\n <input-with-pill\n class=\"vx-mt-2\"\n [selectDiv]=\"true\"\n [line]=\"3\"\n [disabled]=\"['OVERSEER', 'DEFAULT_OVERSEER'].includes(activeList)\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\n \"\n (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length ||\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_failed_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer?.value[0],\n 'DEFAULT_FAILED_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefaultFail.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer?.value?.length - 1\n }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length &&\n controls?.program_default_failed_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer_group?.value[0],\n 'DEFAULT_FAILED_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultFailGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer_group?.value\n ?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_FAILED_OVERSEER'\"\n (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_failed_overseer\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_FAILED_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_failed_overseer_group\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_FAILED_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </ng-container>\n </form-field>\n\n <!-- Assessment -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.ASSESSMENT\"\n [checked]=\"controls?.program_assessments?.value?.length\"\n [active]=\"activeList === 'ASSESSMENT'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\n \"\n [img]=\"ASSETS.assessments\"\n >\n <label class=\"vx-control-panel\"\n >ASSESSMENTS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssessmentHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which assessments can be linked to the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSESSMENT')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.program_assessments?.value?.length\"\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_assessments?.value\n | assessmentResolver as assessments\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(assessments[0], 'ASSESSMENT')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"assessments[0]?.assessment_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ assessments[0]?.assessment_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"program_assessments.popover()\"\n placement=\"right\"\n *ngIf=\"assessments?.length > 1\"\n >\n +{{ assessments?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\">&#xe90d;</i>{{assessments[0]?.assessment_name}} </span>\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\n </div>\n </ng-container>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSESSMENT'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSESSMENT')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\n <ng-container>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assessment of controls?.program_assessments?.value\n | assessmentResolver\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assessment, 'ASSESSMENT')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assessment?.assessment_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </ng-container>\n </app-popover>\n </form-field>\n\n <!-- Format & Evidence -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.FORMATE_EVIDENCE\"\n [checked]=\"[true, false].includes(controls?.evidence_required?.value)\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.format_evidence\"\n >\n <label class=\"vx-control-panel\"\n >Evidence\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"EvidenceHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Do all responsibilities within this program require evidence?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"!controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\n key\n evidence</div>\n <switch formControlName=\"allow_any_file_key_evidence\"\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\n </div> -->\n </form-field>\n\n <!-- Custom Field -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.CUSTOM_FIELDS\"\n [checked]=\"controls?.custom_fields?.value?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.custom_fields\"\n >\n <label class=\"vx-control-panel\"\n >CUSTOM FIELD\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"CFHelpText\"\n >&#xeb16;</i\n ></label\n >\n <custom-field formControlName=\"custom_fields\"></custom-field>\n </form-field>\n </form>\n</div>\n\n\n<!-- render userlist with group -->\n<user-group-list\n *ngIf=\"activeList === 'OWNER'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false, $event)\"\n [userListInfo]=\"lists?.OWNERS\"\n [groupListInfo]=\"lists?.OWNERS_GROUPS\"\n [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\"\n (save)=\"listAction($event, 'OWNER')\"\n (cancel)=\"fieldDeselector('OWNER')\"\n [panelTitle]=\"panelTitleOwner\"\n [featureflag]=\"featureflagGroups\"\n></user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'COLLABORATORS'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.collaborators?.value | refDisconnect\"\n [groupList]=\"lists?.OWNERS_GROUPS ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"controls?.collaborators_group?.value | refDisconnect\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.ASSIGNEES\"\n (save)=\"listAction($event, 'COLLABORATORS')\"\n (cancel)=\"fieldDeselector('COLLABORATORS')\"\n [panelTitle]=\"panelTitleAssignee\"\n [defaultSelectedUsers]=\"\n controls?.collaborators?.value | refDisconnect\n \"\n [userType]=\"'assignees'\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\n<app-smiley-dialog-inline\n *ngIf=\"showSmiley\"\n [message]=\"smileyMessage\"\n [actionButtons]=\"actionButtons\"\n (action)=\"action($event)\"\n (closeSmiley)=\"closeSmiley($event)\"\n>\n</app-smiley-dialog-inline>\n\n<!-- Framework selector -->\n<app-framework-list\n *ngIf=\"activeList === 'FRAMEWORK'\"\n [workflowPage]=\"['FRAMEWORK']\"\n (assignControl)=\"listAction($event, 'FRAMEWORK')\"\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\"\n [previousSelectedValues]=\"{ framework: controls?.framework.value }\"\n (entrustFramework)=\"entrustFramework($event)\"\n [headerText]=\"'Select a framework'\"\n></app-framework-list>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#fbfbfb;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.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-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group ::ng-deep vcomply-editor{margin-top:8px;display:block;pointer-events:auto!important;z-index:1}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;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}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .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)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i9.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i10.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i13.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i14.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i15.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }, { kind: "component", type: i16.TabSelector, selector: "tab-selector", inputs: ["disabled", "selectedItem", "displayArray"], outputs: ["onValueChanged"] }, { kind: "component", type: i17.FormFieldComponent, selector: "form-field", inputs: ["active", "disabled", "checked", "img"] }, { kind: "component", type: i18.InputWithPillComponent, selector: "input-with-pill", inputs: ["placeholder", "disabled", "selectDiv", "line"], outputs: ["select"] }, { kind: "directive", type: i19.InputTrimDirective, selector: "[InputTrim]" }, { kind: "component", type: i20.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i21.CustomFieldComponent, selector: "custom-field", inputs: ["disabled"] }, { kind: "component", type: i22.FrameworkListComponent, selector: "app-framework-list", inputs: ["previousSelectedValues", "headerText", "workflowPage", "policy", "frameWorkList", "selectedFrameWork", "selectedCategories"], outputs: ["entrustFramework", "closeFramework", "assignControl"] }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }, { kind: "pipe", type: i23.ListToIdPipe, name: "listToId" }, { kind: "pipe", type: i24.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i25.AssessmentResolverPipe, name: "assessmentResolver" }] }); }
1333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowProgramComponent, deps: [{ token: i1.UntypedFormBuilder }, { token: i2.ProgramsService }, { token: i3.AuthService }, { token: i4.UiKitService }, { token: i5.IframeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1334
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: WorkflowProgramComponent, selector: "app-workflow-program", inputs: { canFrameworkChange: "canFrameworkChange", mode: "mode", programId: "programId", programType: "programType", allowedFeature: "allowedFeature", addToProgramDetails: "addToProgramDetails", orgDetails: "orgDetails" }, outputs: { pickerChanged: "pickerChanged", populateOption: "populateOption", closeWorkflow: "closeWorkflow", showConfirmationAlert: "showConfirmationAlert", disconnectRefresh: "disconnectRefresh", refreshForm: "refreshForm", hideElementsFromMoreOptions: "hideElementsFromMoreOptions", onRemovingRole: "onRemovingRole", disableElementsFromMoreOptions: "disableElementsFromMoreOptions" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, read: ElementRef }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], ngImport: i0, template: "<div class=\"workflow-program\" #form>\n <form novalidate [formGroup]=\"programForm\">\n <!-- Program Category Type -->\n <form-field\n [checked]=\"controls?.program_type?.value > -1\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.issue_type\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM TYPE <span class=\"required\">*</span></label\n >\n <tab-selector\n formControlName=\"program_type\"\n [displayArray]=\"constants?.categoryType\"\n ></tab-selector>\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\n </form-field>\n\n <!-- Framework -->\n <form-field\n *ngIf=\"isAscentAllowed\"\n [checked]=\"false\"\n [active]=\"false\"\n [disabled]=\"false\"\n [img]=\"ASSETS.case_category\"\n >\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <!-- [selectDiv]=\"true\" -->\n <input-with-pill\n [placeholder]=\"'Select a framework that this Program relates to'\"\n (select)=\"activateList('FRAMEWORK')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"canFrameworkChange\"\n (click)=\"remove('', 'FRAMEWORK')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.framework.value?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.framework.value?.name }}</span\n >\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" >&#xe90d;</i> {{controls?.framework.value?.name}}</span>\n </div>\n </div> -->\n <button\n *ngIf=\"canFrameworkChange\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('FRAMEWORK')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n </form-field>\n\n <!-- Program Category Name -->\n <form-field\n [checked]=\"controls?.program_name?.value?.trim()?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.what\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM NAME <span class=\"required\">*</span></label\n >\n <input\n InputTrim\n formControlName=\"program_name\"\n type=\"text\"\n placeholder=\"What is the Program name?\"\n />\n\n <p\n *ngIf=\"\n controls?.program_name?.errors && controls?.program_name?.touched\n \"\n class=\"error-message\"\n >\n Enter a name for this Program.\n </p>\n <p *ngIf=\"isNameExists\" class=\"error-message\">\n Program name already exists.\n </p>\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\n <file-pill\n *ngFor=\"\n let attachment of controls?.description_attachment?.value\n | slice : 0 : 2\n \"\n [extension]=\"attachment?.org_file?.split('.').pop()\"\n [name]=\"attachment?.org_file\"\n [disabled]=\"attachment?.uploading\"\n (delete)=\"deleteAttachment('DESCRIPTION', attachment)\"\n >\n </file-pill>\n <button\n *ngIf=\"controls?.description_attachment?.value?.length > 2\"\n class=\"file-count\"\n appPopover\n (click)=\"uploadFile.popover()\"\n placement=\"right\"\n >\n +{{ controls?.description_attachment?.value?.length - 2 }}\n </button>\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n class=\"vx-p-2\"\n *ngFor=\"\n let attachment of controls?.description_attachment?.value\n | slice : 2\n \"\n >\n <file-pill\n [extension]=\"attachment?.org_file?.split('.').pop()\"\n [name]=\"attachment?.org_file\"\n [disabled]=\"attachment?.uploading\"\n (delete)=\"deleteAttachment('DESCRIPTION', attachment)\"\n ></file-pill>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n <vcomply-editor\n [(ngModel)]=\"editorData.programDescription\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('DESCRIPTION', $event)\"\n (ngModelChange)=\"setFormField('program_description', $event)\"\n [editorConfig]=\"constants?.description\"\n >\n </vcomply-editor>\n </form-field>\n\n <!-- Objective -->\n <form-field\n [checked]=\"controls?.program_objective?.value?.trim()?.length\"\n [active]=\"activeList === 'OBJECTIVE'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\n \"\n [img]=\"ASSETS.objectives\"\n >\n <label class=\"vx-control-panel\"\n >OBJECTIVE\n <!-- <span class=\"required\">*</span> -->\n </label>\n <vcomply-editor\n [(ngModel)]=\"editorData.programObjective\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('OBJECTIVE', $event)\"\n (ngModelChange)=\"setFormField('program_objective', $event, true)\"\n [editorConfig]=\"constants?.objective\"\n >\n </vcomply-editor>\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\n </form-field>\n\n <!-- Roles -->\n <form-field\n *ngIf=\"additionalOption?.ROLES\"\n [checked]=\"controls?.program_roles?.value?.length\"\n [active]=\"activeList === 'ROLE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\n [img]=\"ASSETS.roles\"\n >\n <label class=\"vx-control-panel\" id=\"permissiongroup\"\n >{{ ff_rc_listing ? \"PERMISSIONS\" : \"PERMISSION GROUP(S)\" }}\n <span class=\"required\">*</span\n ><i\n class=\"icons\"\n [appTooltip]=\"\n ff_rc_listing\n ? 'Permissions let you specify the users that can be \u201COwners\u201D' +\n (allowedFeature.isFeatureEnabled('ff_program_simplify')\n ? ' '\n : ' and \u201CApprovers\u201D') +\n 'of a Program.'\n : 'Permission group(s) let you specify the users that can be \u201COwners\u201D' +\n (allowedFeature.isFeatureEnabled('ff_program_simplify')\n ? ' '\n : ' and \u201CApprovers\u201D') +\n 'of a Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RoleHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n id=\"placeholdername\"\n [placeholder]=\"\n ff_rc_listing\n ? 'Which user permissions have access to this program?'\n : 'Which user permission groups have access to this program?'\n \"\n (select)=\"activateList('ROLE')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !lists.SYSTEM_ROLE_IDS.includes(\n controls?.program_roles?.value[0]?._id\n )\n \"\n (click)=\"remove(controls?.program_roles?.value[0], 'ROLE')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n featureflagrole &&\n controls?.program_roles?.value[0]?.permissionGroupName\n ? controls?.program_roles?.value[0]?.permissionGroupName\n : controls?.program_roles?.value[0]?.roleName\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n featureflagrole &&\n controls?.program_roles?.value[0]?.permissionGroupName\n ? controls?.program_roles?.value[0]?.permissionGroupName\n : controls?.program_roles?.value[0]?.roleName\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"role.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_roles?.value?.length > 1\"\n >\n +{{ controls?.program_roles?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\">&#xe90d;</i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ROLE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ROLE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <p *ngIf=\"false\" class=\"error-message\">\n {{ featureflagrole ? \"Add a permission group(s)\" : \"Add a role(s)\" }}\n </p>\n <app-popover #role [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of controls?.program_roles?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\"\n class=\"icons\"\n (click)=\"removeRole(data, 'ROLE')\"\n >&#xe90d;</i\n >\n {{\n featureflagrole && data?.permissionGroupName\n ? data?.permissionGroupName\n : data?.roleName\n }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Owners -->\n <form-field\n *ngIf=\"additionalOption?.OWNERS\"\n [checked]=\"\n controls?.program_owners.value?.length > 0 ||\n controls?.program_owners_group.value?.length > 0\n \"\n [active]=\"activeList === 'OWNER'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >OWNER(S)\n <span\n class=\"icon\"\n *ngIf=\"toolTipData.owner !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('OWNER')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_owners?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners?.value?.length > 1\"\n >\n +{{ controls?.program_owners?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_owners_group?.value?.length &&\n controls?.program_owners?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_owners_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.program_owners_group?.value[0],\n 'OWNER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_owners_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_owners_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.program_owners_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <button\n *ngIf=\"activeList !== 'OWNER'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('OWNER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\"\n >\n {{\n featureflagrole\n ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\"\n : \"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"\n }}\n </div>\n <switch\n formControlName=\"all_user_in_role\"\n (change)=\"selectAllRoleOwner($event)\"\n ></switch>\n </div>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.program_owners?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !(\n lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\n ).includes(owner?.member_id)\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.program_owners_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Collaborator -->\n <form-field\n *ngIf=\"additionalOption?.COLLABORATOR\"\n [checked]=\"\n controls?.program_collaborator?.value?.length > 0\n \"\n [active]=\"activeList === 'COLLABORATOR'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'COLLABORATOR'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >Collaborator(S) <span class=\"required\">*</span>\n <span\n class=\"icon\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('COLLABORATOR')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_collaborator?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_collaborator?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_collaborator?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"collaborator.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_collaborator?.value?.length > 1\"\n >\n +{{ controls?.program_collaborator?.value?.length - 1 }}\n </button>\n </div>\n \n </div>\n\n <button\n *ngIf=\"activeList !== 'COLLABORATOR'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('COLLABORATOR')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\"\n >\n </div>\n </div>\n <app-popover #collaborator [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let collaborator of controls?.program_collaborator?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(collaborator, 'COLLABORATOR')\"\n >&#xe90d;</i\n >\n {{ collaborator?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Performance Calculated -->\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\n </tab-selector>\n </form-field> -->\n <ng-container *ngIf=\"isProgramScope\">\n <div\n class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\"\n >\n PROGRAM SCOPE\n </div>\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i> -->\n <span\n class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\"\n *ngIf=\"toolTipData.programScop !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.programScope\"\n id=\"PSHelpText\"\n ></div>\n </div>\n </popover-hover>\n </ng-container>\n\n <!-- Program Frequency -->\n <form-field\n *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\"\n [checked]=\"[true, false].includes(controls?.recurring_frequency?.value)\"\n [active]=\"activeList === 'FREQUENCY'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'FREQUENCY'\n \"\n [img]=\"ASSETS.recurring\"\n >\n <label class=\"vx-control-panel\" id=\"PDChange\"\n >PROGRAM DURATION\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +\n businessCycle.selectedCycle.business_cycle +\n '. All responsibilities linked with that Program will also have the same Program Duration.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ProgramDurationHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"!controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </div>\n </form-field>\n\n <!-- Scope Changes -->\n <form-field\n *ngIf=\"additionalOption?.SCOPE_CHANGES\"\n [checked]=\"[true, false].includes(controls?.lock_scope_change?.value)\"\n [active]=\"activeList === 'SCOPE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\n [img]=\"ASSETS.lock_scope\"\n >\n <label class=\"vx-control-panel\"\n >Lock the Program Scope\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ScopeChangesHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Would you like to\n <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the\n program scope?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"!controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </form-field>\n\n <!-- Framework -->\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\n <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\">&#xe90d;</i>{{controls?.framework?.value?.framework_name}}</span>\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\n </div>\n </div>\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n </input-with-pill>\n <app-popover #framework [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\">&#xe90d;</i>\n Manage framework name\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field> -->\n\n <!-- Responsibility Center -->\n <form-field\n *ngIf=\"additionalOption?.RC\"\n [checked]=\"controls?.rc?.value?.length\"\n [active]=\"activeList === 'RC'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\n [img]=\"ASSETS.responsibility_center\"\n >\n <label class=\"vx-control-panel\"\n >RESPONSIBILITY CENTER\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RCHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n (select)=\"activateList('RC')\"\n [placeholder]=\"\n 'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\n \"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\"\n >\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(controls?.rc?.value[0], 'RC')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.rc?.value[0]?.item_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.rc?.value[0]?.item_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"rc.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.rc?.value?.length > 1\"\n >\n +{{ controls?.rc?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\">&#xe90d;</i>{{controls?.rc?.value[0]?.item_name}}</span>\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'RC'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('RC')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #rc [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of controls?.rc?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(rc, 'RC')\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Assignee -->\n <form-field\n *ngIf=\"additionalOption?.ASSIGNEES\"\n [checked]=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n [active]=\"['ASSIGNEE', 'DEFAULT_ASSIGNEE']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['ASSIGNEE', 'DEFAULT_ASSIGNEE'].includes(activeList)\n \"\n [img]=\"ASSETS.case_assignees\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n >ASSIGNEES\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssigneeHelpText\"\n >&#xeb16;</i\n >\n </label>\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [placeholder]=\"\n 'Who is responsible for completing the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_assignee?.value[0], 'ASSIGNEE')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_assignee?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_assignee_group?.value?.length &&\n controls?.program_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_assignee_group?.value[0],\n 'ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee_group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee_group?.value?.length > 1\"\n >\n +{{ controls?.program_assignee_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSIGNEE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSIGNEE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #assignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_assignee?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assignee, 'ASSIGNEE')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #assignee_group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_assignee_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'ASSIGNEE_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >DEFAULT ASSIGNEE\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DAHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'ASSIGNEE'\"\n [placeholder]=\"\n 'Which persons will be selected as the default assignees for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee?.value[0],\n 'DEFAULT_ASSIGNEE'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_default_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length &&\n controls?.program_default_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee_group?.value[0],\n 'DEFAULT_ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssigneeGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_assignee_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_ASSIGNEE'\"\n (click)=\"activateList('DEFAULT_ASSIGNEE')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_default_assignee?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultAssigneeGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_assignee_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\"\n (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\"\n >\n ALL SELECTED PERSONS NEED TO COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, separate responsibilities will be created for each person.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\"\n (checkedEvent)=\"\n setFormField('assignee_completion_criteria', 'ANYONE')\n \"\n >\n ANY SELECTED PERSON CAN COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, only one responsibility will be created.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Reviewer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.REVIEWER\"\n [checked]=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n [active]=\"['REVIEWER', 'DEFAULT_REVIEWER']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['REVIEWER', 'DEFAULT_REVIEWER'].includes(activeList)\n \"\n [img]=\"ASSETS.reviewer\"\n >\n <label\n [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n class=\"vx-control-panel\"\n >Reviewers\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ReviewerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n [placeholder]=\"\n 'Who is responsible for reviewing the responsibilities within this Program?'\n \"\n (select)=\"activateList('REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_reviewer?.value[0], 'REVIEWER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_reviewer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_reviewer_group?.value?.length &&\n controls?.program_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_reviewer_group?.value[0],\n 'REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'REVIEWER'\"\n (click)=\"activateList('REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #reviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_reviewer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(reviewer, 'REVIEWER')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #reviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_reviewer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'REVIEWER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n [class.disabled]=\"activeList === 'REVIEWER'\"\n class=\"vx-control-panel\"\n >DEFAULT Reviewer\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DRHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'REVIEWER'\"\n [placeholder]=\"\n 'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer?.value[0],\n 'DEFAULT_REVIEWER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_default_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length &&\n controls?.program_default_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer_group?.value[0],\n 'DEFAULT_REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_reviewer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_REVIEWER'\"\n (click)=\"activateList('DEFAULT_REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_default_reviewer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(reviewer, 'DEFAULT_REVIEWER')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultReviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_reviewer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_REVIEWER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'REVIEWER'\"\n >\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\n \"\n [class.disabled]=\"\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n >\n SEQUENTIAL\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review one at a time in the sequence defined by you.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'ANYONE' ||\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'ANYONE')\n \"\n >\n ANY REVIEWER CAN MARK THIS AS REVIEWED\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Overseer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.OVERSEER\"\n [checked]=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n [active]=\"activeList === 'OVERSEER'\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['OVERSEER', 'DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(\n activeList\n )\n \"\n [img]=\"ASSETS.oversight\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n >Oversights\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"overseerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [placeholder]=\"\n 'Who is responsible for overseeing the responsibilities within this Program?'\n \"\n (select)=\"activateList('OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_overseer?.value[0], 'OVERSEER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_overseer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseers.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_overseer_group?.value?.length &&\n controls?.program_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_overseer_group?.value[0],\n 'OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_overseer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_overseer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer_group?.value?.length > 1\"\n >\n +{{ controls?.program_overseer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\n {{controls?.program_overseer?.value[0]?.member_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n\n <button\n *ngIf=\"activeList !== 'OVERSEER'\"\n (click)=\"activateList('OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseers [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_overseer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(overseer, 'OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_overseer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'OVERSEER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"['OVERSEER'].includes(activeList)\"\n >DEFAULT Oversight\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DOHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [disabled]=\"\n ['OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer?.value[0],\n 'DEFAULT_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefault.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_default_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length &&\n controls?.program_default_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer_group?.value[0],\n 'DEFAULT_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_overseer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_OVERSEER'\"\n (click)=\"activateList('DEFAULT_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_overseer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_overseer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label class=\"vx-control-panel\"> </label>\n <input-with-pill\n class=\"vx-mt-2\"\n [selectDiv]=\"true\"\n [line]=\"3\"\n [disabled]=\"['OVERSEER', 'DEFAULT_OVERSEER'].includes(activeList)\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\n \"\n (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length ||\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_failed_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer?.value[0],\n 'DEFAULT_FAILED_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefaultFail.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer?.value?.length - 1\n }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length &&\n controls?.program_default_failed_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer_group?.value[0],\n 'DEFAULT_FAILED_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultFailGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer_group?.value\n ?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_FAILED_OVERSEER'\"\n (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_failed_overseer\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_FAILED_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_failed_overseer_group\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_FAILED_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </ng-container>\n </form-field>\n\n <!-- Assessment -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.ASSESSMENT\"\n [checked]=\"controls?.program_assessments?.value?.length\"\n [active]=\"activeList === 'ASSESSMENT'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\n \"\n [img]=\"ASSETS.assessments\"\n >\n <label class=\"vx-control-panel\"\n >ASSESSMENTS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssessmentHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which assessments can be linked to the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSESSMENT')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.program_assessments?.value?.length\"\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_assessments?.value\n | assessmentResolver as assessments\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(assessments[0], 'ASSESSMENT')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"assessments[0]?.assessment_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ assessments[0]?.assessment_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"program_assessments.popover()\"\n placement=\"right\"\n *ngIf=\"assessments?.length > 1\"\n >\n +{{ assessments?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\">&#xe90d;</i>{{assessments[0]?.assessment_name}} </span>\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\n </div>\n </ng-container>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSESSMENT'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSESSMENT')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\n <ng-container>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assessment of controls?.program_assessments?.value\n | assessmentResolver\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assessment, 'ASSESSMENT')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assessment?.assessment_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </ng-container>\n </app-popover>\n </form-field>\n\n <!-- Format & Evidence -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.FORMATE_EVIDENCE\"\n [checked]=\"[true, false].includes(controls?.evidence_required?.value)\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.format_evidence\"\n >\n <label class=\"vx-control-panel\"\n >Evidence\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"EvidenceHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Do all responsibilities within this program require evidence?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"!controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\n key\n evidence</div>\n <switch formControlName=\"allow_any_file_key_evidence\"\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\n </div> -->\n </form-field>\n\n <!-- Custom Field -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.CUSTOM_FIELDS\"\n [checked]=\"controls?.custom_fields?.value?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.custom_fields\"\n >\n <label class=\"vx-control-panel\"\n >CUSTOM FIELD\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"CFHelpText\"\n >&#xeb16;</i\n ></label\n >\n <custom-field formControlName=\"custom_fields\"></custom-field>\n </form-field>\n </form>\n</div>\n\n<!-- list of roles -->\n<role-list\n *ngIf=\"activeList === 'ROLE'\"\n [selected]=\"controls?.program_roles?.value | refDisconnect\"\n [loading]=\"listLoadingState.ROLES\"\n [list]=\"lists?.ROLES?.data ?? []\"\n (save)=\"listAction($event, 'ROLE')\"\n (cancel)=\"fieldDeselector('ROLE')\"\n [featureflagrole]=\"featureflagrole\"\n [featureflagGroup]=\"featureflagGroups\"\n [ff_rc_listing]=\"ff_rc_listing\"\n></role-list>\n\n<!-- list of frameworks -->\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\n<!-- list of responsibility center -->\n<app-responsibility-centers-list\n *ngIf=\"activeList === 'RC'\"\n [responsibilityCentersList]=\"lists?.RC ?? []\"\n [radioSelection]=\"false\"\n [rcIdKey]=\"'rc_id'\"\n (closeRcList)=\"fieldDeselector('RC')\"\n (saveSelectedList)=\"listAction($event, 'RC')\"\n [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\"\n>\n</app-responsibility-centers-list>\n<!-- render userlist with group -->\n\n<user-group-list\n *ngIf=\"activeList === 'OWNER'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false, $event)\"\n [userListInfo]=\"lists?.OWNERS\"\n [groupListInfo]=\"lists?.OWNERS_GROUPS\"\n [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\"\n (save)=\"listAction($event, 'OWNER')\"\n (cancel)=\"fieldDeselector('OWNER')\"\n [panelTitle]=\"panelTitleOwner\"\n [featureflag]=\"featureflagGroups\"\n></user-group-list>\n\n<user-group-list\n *ngIf=\"activeList === 'COLLABORATOR'\"\n [groupEnabled]=\"false\"\n [singleSelect]=\"false\"\n [userlist]=\"lists?.COLLABORATORS?.data ?? []\"\n [disabledIds]=\"disableCollaboratorIds\"\n [selectedUsers]=\"controls?.program_collaborator?.value | refDisconnect\"\n [userListInfo]=\"lists?.COLLABORATORS\"\n (save)=\"listAction($event, 'COLLABORATOR')\"\n (cancel)=\"fieldDeselector('COLLABORATOR')\"\n [panelTitle]=\"panelTitleCollaborator\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'ASSIGNEE'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.ASSIGNEES ?? []\"\n [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\"\n [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\"\n [disabledIds]=\"disabledAssigneeIds\"\n [fromResponsibility]=\"'Assignee'\"\n [reviewerIds]=\"selectedReviewerIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.ASSIGNEES\"\n (save)=\"listAction($event, 'ASSIGNEE')\"\n (cancel)=\"fieldDeselector('ASSIGNEE')\"\n [panelTitle]=\"panelTitleAssignee\"\n [defaultSelectedUsers]=\"\n controls?.program_default_assignee?.value | refDisconnect\n \"\n [userType]=\"'assignees'\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\"\n [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"\n controls?.program_default_assignee_group?.value | refDisconnect\n \"\n [disabledIds]=\"disabledAssigneeIds\"\n [fromResponsibility]=\"'Assignee'\"\n [reviewerIds]=\"selectedReviewerIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\"\n (save)=\"listAction($event, 'DEFAULT_ASSIGNEE')\"\n (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n\n<user-group-list\n *ngIf=\"activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups)\"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.REVIEWERS ?? []\"\n [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\"\n [groupList]=\"lists?.REVIEWERS_GROUP ?? []\"\n [featureflag]=\"featureflagGroups\"\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\"\n [disabledIds]=\"disableReviewerIds\"\n [fromResponsibility]=\"'Reviewer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [userListInfo]=\"lists?.REVIEWERS\"\n (save)=\"listAction($event, 'REVIEWER')\"\n (cancel)=\"fieldDeselector('REVIEWER')\"\n [panelTitle]=\"panelTitleReviewer\"\n [defaultSelectedUsers]=\"\n controls?.program_default_reviewer?.value | refDisconnect\n \"\n [userType]=\"'reviewers'\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_REVIEWER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\"\n [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\"\n [featureflag]=\"featureflagGroups\"\n [selectedGroups]=\"\n controls?.program_default_reviewer_group?.value | refDisconnect\n \"\n [disabledIds]=\"disableReviewerIds\"\n [fromResponsibility]=\"'Reviewer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\"\n (save)=\"listAction($event, 'DEFAULT_REVIEWER')\"\n (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\"\n [panelTitle]=\"panelTitleDefaultReviewer\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups)\"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.OVERSEERS ?? []\"\n [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\"\n [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.OVERSEES\"\n (save)=\"listAction($event, 'OVERSEER')\"\n (cancel)=\"fieldDeselector('OVERSEER')\"\n [defaultSelectedUsers]=\"\n controls?.program_default_overseer?.value\n | refDisconnect\n | arrayConcat : controls?.program_default_failed_overseer?.value\n \"\n [userType]=\"'overseers'\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_OVERSEER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\"\n [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"\n controls?.program_default_overseer_group?.value | refDisconnect\n \"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\"\n (save)=\"listAction($event, 'DEFAULT_OVERSEER')\"\n (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_FAILED_OVERSEER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\"\n [selectedUsers]=\"\n controls?.program_default_failed_overseer?.value | refDisconnect\n \"\n [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"\n controls?.program_default_failed_overseer_group?.value | refDisconnect\n \"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\"\n (save)=\"listAction($event, 'DEFAULT_FAILED_OVERSEER')\"\n (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\"\n>\n</user-group-list>\n<assessment-picker\n *ngIf=\"activeList === 'ASSESSMENT'\"\n [selectedAssessment]=\"controls?.program_assessments?.value\"\n (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\"\n (onAssessmentSelect)=\"listAction($event, 'ASSESSMENT')\"\n></assessment-picker>\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\n<app-smiley-dialog-inline\n *ngIf=\"showSmiley\"\n [message]=\"smileyMessage\"\n [actionButtons]=\"actionButtons\"\n (action)=\"action($event)\"\n (closeSmiley)=\"closeSmiley($event)\"\n>\n</app-smiley-dialog-inline>\n\n<!-- Framework selector -->\n<app-framework-list\n *ngIf=\"activeList === 'FRAMEWORK'\"\n [workflowPage]=\"['FRAMEWORK']\"\n (assignControl)=\"listAction($event, 'FRAMEWORK')\"\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\"\n [previousSelectedValues]=\"{ framework: controls?.framework.value }\"\n (entrustFramework)=\"entrustFramework($event)\"\n [headerText]=\"'Select a framework'\"\n></app-framework-list>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#fbfbfb;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.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-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group ::ng-deep vcomply-editor{margin-top:8px;display:block;pointer-events:auto!important;z-index:1}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;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}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .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)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"], dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.MarxEditorComponent, selector: "vcomply-editor", inputs: ["editorConfig"], outputs: ["comment", "sendSavedFiles", "popup"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i8.CsRadioComponent, selector: "app-cs-radio", inputs: ["disabled", "readonly", "name", "checked", "value", "oneLine"], outputs: ["checkedEvent"] }, { kind: "directive", type: i9.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i10.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"] }, { kind: "directive", type: i11.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i12.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i13.SmileyDialogInlineComponent, selector: "app-smiley-dialog-inline", inputs: ["message", "actionButtons"], outputs: ["action", "closeSmiley"] }, { kind: "component", type: i14.PopoverHoverComponent, selector: "popover-hover" }, { kind: "directive", type: i15.PopoverHoverDirective, selector: "[libPopoverHover]", inputs: ["placement"] }, { kind: "component", type: i16.TabSelector, selector: "tab-selector", inputs: ["disabled", "selectedItem", "displayArray"], outputs: ["onValueChanged"] }, { kind: "component", type: i17.FormFieldComponent, selector: "form-field", inputs: ["active", "disabled", "checked", "img"] }, { kind: "component", type: i18.FilePillComponent, selector: "file-pill", inputs: ["name", "extension", "disabled"], outputs: ["delete"] }, { kind: "component", type: i19.InputWithPillComponent, selector: "input-with-pill", inputs: ["placeholder", "disabled", "selectDiv", "line"], outputs: ["select"] }, { kind: "component", type: i20.SwitchComponent, selector: "switch", inputs: ["disabled", "checked", "tooltipMessage", "value", "position"], outputs: ["change"] }, { kind: "directive", type: i21.InputTrimDirective, selector: "[InputTrim]" }, { kind: "component", type: i22.RoleListComponent, selector: "role-list", inputs: ["featureflagrole", "featureflagGroup", "ff_rc_listing", "list", "loading", "selected"], outputs: ["save", "cancel"] }, { kind: "component", type: i23.UserGroupListComponent, selector: "user-group-list", inputs: ["groupEnabled", "panelTitle", "singleSelect", "selectedReviewer", "featureflag", "reviewerWorkflowType", "mode", "fieldType", "fromResponsibility", "assignorId", "assigneeIds", "reviewerIds", "overseerIds", "FromProgram", "userListInfo", "groupListInfo", "fromApprovalWorkflow", "approvalType", "showFutureUsersSwitch", "futureUsersWillSelect", "isAllDisabled", "isGroupTabShow", "disabledIds", "nonRemovableUserIds", "allUserSelectedDisabled", "nonRemovableGroupIds", "loading", "userlist", "selectedUsers", "defaultSelectedUsers", "userType", "groupList", "selectedGroups"], outputs: ["save", "cancel", "reviewerWorkflowTypeChange", "fetchUserData"] }, { kind: "component", type: i24.AssessmentPickerComponent, selector: "assessment-picker", inputs: ["isEdit", "selectedAssessment", "selectedAssessmentData"], outputs: ["onAssessmentSelect", "cancelAssessment"] }, { kind: "component", type: i25.CustomFieldComponent, selector: "custom-field", inputs: ["disabled"] }, { kind: "component", type: i26.ResponsibilityCentersListComponent, selector: "app-responsibility-centers-list", inputs: ["responsibilityCentersList", "selectedResponsibilityCenters", "rcIdKey", "radioSelection", "pluralText", "singularText", "loaded"], outputs: ["saveSelectedList", "closeRcList"] }, { kind: "component", type: i27.FrameworkListComponent, selector: "app-framework-list", inputs: ["previousSelectedValues", "headerText", "workflowPage", "policy", "frameWorkList", "selectedFrameWork", "selectedCategories"], outputs: ["entrustFramework", "closeFramework", "assignControl"] }, { kind: "pipe", type: i7.SlicePipe, name: "slice" }, { kind: "pipe", type: i28.ListToIdPipe, name: "listToId" }, { kind: "pipe", type: i29.RefDisconnectPipe, name: "refDisconnect" }, { kind: "pipe", type: i30.AssessmentResolverPipe, name: "assessmentResolver" }, { kind: "pipe", type: i31.ArrayConcatPipe, name: "arrayConcat" }] }); }
1295
1335
  }
1296
1336
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: WorkflowProgramComponent, decorators: [{
1297
1337
  type: Component,
1298
- args: [{ selector: 'app-workflow-program', template: "<div class=\"workflow-program\" #form>\n <form novalidate [formGroup]=\"programForm\">\n <!-- Program Category Type -->\n <form-field\n [checked]=\"controls?.program_type?.value > -1\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.issue_type\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM TYPE <span class=\"required\">*</span></label\n >\n <tab-selector\n formControlName=\"program_type\"\n [displayArray]=\"constants?.categoryType\"\n ></tab-selector>\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\n </form-field>\n\n <!-- Framework -->\n <form-field\n *ngIf=\"isAscentAllowed\"\n [checked]=\"false\"\n [active]=\"false\"\n [disabled]=\"false\"\n [img]=\"ASSETS.case_category\"\n >\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <!-- [selectDiv]=\"true\" -->\n <input-with-pill\n [placeholder]=\"'Select a framework that this Program relates to'\"\n (select)=\"activateList('FRAMEWORK')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"canFrameworkChange\"\n (click)=\"remove('', 'FRAMEWORK')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.framework.value?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.framework.value?.name }}</span\n >\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" >&#xe90d;</i> {{controls?.framework.value?.name}}</span>\n </div>\n </div> -->\n <button\n *ngIf=\"canFrameworkChange\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('FRAMEWORK')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n </form-field>\n\n <!-- Program Category Name -->\n <form-field\n [checked]=\"controls?.program_name?.value?.trim()?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.what\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM NAME <span class=\"required\">*</span></label\n >\n <input\n InputTrim\n formControlName=\"program_name\"\n type=\"text\"\n placeholder=\"What is the Program name?\"\n />\n\n <p\n *ngIf=\"\n controls?.program_name?.errors && controls?.program_name?.touched\n \"\n class=\"error-message\"\n >\n Enter a name for this Program.\n </p>\n <p *ngIf=\"isNameExists\" class=\"error-message\">\n Program name already exists.\n </p>\n <vcomply-editor\n [(ngModel)]=\"editorData.programObjective\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('OBJECTIVE', $event)\"\n (ngModelChange)=\"setFormField('program_objective', $event, true)\"\n [editorConfig]=\"constants?.description\"\n >\n </vcomply-editor>\n </form-field>\n\n\n\n <!-- Owners -->\n <form-field\n *ngIf=\"additionalOption?.OWNERS\"\n [checked]=\"\n controls?.program_owners?.value?.length > 0 ||\n controls?.program_owners_group?.value?.length > 0\n \"\n [active]=\"activeList === 'OWNER'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >OWNER(S) \n <span\n class=\"icon\"\n *ngIf=\"toolTipData.owner !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('OWNER')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_owners?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_owners?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners?.value?.length > 1\"\n >\n +{{ controls?.program_owners?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_owners_group?.value?.length &&\n controls?.program_owners?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_owners_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.program_owners_group?.value[0],\n 'OWNER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_owners_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_owners_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.program_owners_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n <button\n *ngIf=\"activeList !== 'OWNER'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('OWNER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.program_owners?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !(\n lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\n ).includes(owner?.member_id)\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.program_owners_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Collaborators -->\n <form-field\n *ngIf=\"additionalOption?.COLLABORATORS\"\n [checked]=\"\n controls?.collaborators?.value?.length > 0 ||\n controls?.collaborators_group?.value?.length > 0\n \"\n [active]=\"activeList === 'COLLABORATORS'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'COLLABORATORS'\"\n [img]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/owner.svg'\n \"\n >\n <label class=\"vx-control-panel\"\n >COLLABORATORS \n <span\n class=\"icon\"\n *ngIf=\"toolTipData.collaborators !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.collaborators\"\n id=\"CollaboratorsHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('COLLABORATORS')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.collaborators?.value[0] || controls?.collaborators_group?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <!-- Users -->\n <div \n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.collaborators?.value[0]\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.collaborators?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.collaborators?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.collaborators?.value?.length > 1\"\n >\n +{{ controls?.collaborators?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\" \n controls?.collaborators_group?.value?.length &&\n controls?.collaborators?.value?.length\n \"\n >&</span\n >\n <!-- Groups -->\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.collaborators_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.collaborators_group?.value[0],\n 'COLLABORATORS_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.collaborators_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.collaborators_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.collaborators_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\" >{{controls?.program_owners?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_owners?.value?.length > 1\" class=\"count user\" appPopover (click)=\"owner.popover()\" placement=\"right\">+{{controls?.program_owners?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_owners_group?.value?.length && controls?.program_owners?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_owners_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" *ngIf=\"!['ADMIN','KEY_ADMIN','LOGGED_IN'].includes(owner?.user_role)\" (click)=\"remove(owner,'OWNER_GROUP')\">&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_owners_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_owners_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_owners_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"group.popover()\" placement=\"right\">+{{controls?.program_owners_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'COLLABORATORS'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('COLLABORATORS')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.collaborators?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n\n class=\"icons\"\n (click)=\"remove(owner, 'COLLABORATORS')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.collaborators_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'COLLABORATORS_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Performance Calculated -->\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\n </tab-selector>\n </form-field> -->\n <ng-container *ngIf=\"isProgramScope && false\">\n <div\n class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\"\n >\n PROGRAM SCOPE\n </div>\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i> -->\n <span\n class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\"\n *ngIf=\"toolTipData.programScop !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.programScope\"\n id=\"PSHelpText\"\n ></div>\n </div>\n </popover-hover>\n </ng-container>\n\n <!-- Program Frequency -->\n <form-field\n *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\"\n [checked]=\"[true, false].includes(controls?.recurring_frequency?.value)\"\n [active]=\"activeList === 'FREQUENCY'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'FREQUENCY'\n \"\n [img]=\"ASSETS.recurring\"\n >\n <label class=\"vx-control-panel\" id=\"PDChange\"\n >PROGRAM DURATION\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +\n businessCycle.selectedCycle.business_cycle +\n '. All responsibilities linked with that Program will also have the same Program Duration.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ProgramDurationHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"!controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </div>\n </form-field>\n\n <!-- Scope Changes -->\n <form-field\n *ngIf=\"additionalOption?.SCOPE_CHANGES\"\n [checked]=\"[true, false].includes(controls?.lock_scope_change?.value)\"\n [active]=\"activeList === 'SCOPE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\n [img]=\"ASSETS.lock_scope\"\n >\n <label class=\"vx-control-panel\"\n >Lock the Program Scope\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ScopeChangesHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Would you like to\n <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the\n program scope?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"!controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </form-field>\n\n <!-- Framework -->\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\n <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\">&#xe90d;</i>{{controls?.framework?.value?.framework_name}}</span>\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\n </div>\n </div>\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n </input-with-pill>\n <app-popover #framework [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\">&#xe90d;</i>\n Manage framework name\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field> -->\n\n <!-- Responsibility Center -->\n <form-field\n *ngIf=\"additionalOption?.RC\"\n [checked]=\"controls?.rc?.value?.length\"\n [active]=\"activeList === 'RC'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\n [img]=\"ASSETS.responsibility_center\"\n >\n <label class=\"vx-control-panel\"\n >RESPONSIBILITY CENTER\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RCHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n (select)=\"activateList('RC')\"\n [placeholder]=\"\n 'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\n \"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\"\n >\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(controls?.rc?.value[0], 'RC')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.rc?.value[0]?.item_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.rc?.value[0]?.item_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"rc.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.rc?.value?.length > 1\"\n >\n +{{ controls?.rc?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\">&#xe90d;</i>{{controls?.rc?.value[0]?.item_name}}</span>\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'RC'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('RC')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #rc [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of controls?.rc?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(rc, 'RC')\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Assignee -->\n <form-field\n *ngIf=\"additionalOption?.ASSIGNEES\"\n [checked]=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n [active]=\"['ASSIGNEE', 'DEFAULT_ASSIGNEE']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['ASSIGNEE', 'DEFAULT_ASSIGNEE'].includes(activeList)\n \"\n [img]=\"ASSETS.case_assignees\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n >ASSIGNEES\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssigneeHelpText\"\n >&#xeb16;</i\n >\n </label>\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [placeholder]=\"\n 'Who is responsible for completing the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_assignee?.value[0], 'ASSIGNEE')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_assignee?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_assignee_group?.value?.length &&\n controls?.program_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_assignee_group?.value[0],\n 'ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee_group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee_group?.value?.length > 1\"\n >\n +{{ controls?.program_assignee_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSIGNEE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSIGNEE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #assignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_assignee?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assignee, 'ASSIGNEE')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #assignee_group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_assignee_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'ASSIGNEE_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >DEFAULT ASSIGNEE\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DAHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'ASSIGNEE'\"\n [placeholder]=\"\n 'Which persons will be selected as the default assignees for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee?.value[0],\n 'DEFAULT_ASSIGNEE'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_default_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length &&\n controls?.program_default_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee_group?.value[0],\n 'DEFAULT_ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssigneeGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_assignee_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_ASSIGNEE'\"\n (click)=\"activateList('DEFAULT_ASSIGNEE')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_default_assignee?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultAssigneeGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_assignee_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\"\n (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\"\n >\n ALL SELECTED PERSONS NEED TO COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, separate responsibilities will be created for each person.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\"\n (checkedEvent)=\"\n setFormField('assignee_completion_criteria', 'ANYONE')\n \"\n >\n ANY SELECTED PERSON CAN COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, only one responsibility will be created.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Reviewer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.REVIEWER\"\n [checked]=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n [active]=\"['REVIEWER', 'DEFAULT_REVIEWER']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['REVIEWER', 'DEFAULT_REVIEWER'].includes(activeList)\n \"\n [img]=\"ASSETS.reviewer\"\n >\n <label\n [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n class=\"vx-control-panel\"\n >Reviewers\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ReviewerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n [placeholder]=\"\n 'Who is responsible for reviewing the responsibilities within this Program?'\n \"\n (select)=\"activateList('REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_reviewer?.value[0], 'REVIEWER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_reviewer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_reviewer_group?.value?.length &&\n controls?.program_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_reviewer_group?.value[0],\n 'REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'REVIEWER'\"\n (click)=\"activateList('REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #reviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_reviewer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(reviewer, 'REVIEWER')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #reviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_reviewer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'REVIEWER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n [class.disabled]=\"activeList === 'REVIEWER'\"\n class=\"vx-control-panel\"\n >DEFAULT Reviewer\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DRHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'REVIEWER'\"\n [placeholder]=\"\n 'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer?.value[0],\n 'DEFAULT_REVIEWER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_default_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length &&\n controls?.program_default_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer_group?.value[0],\n 'DEFAULT_REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_reviewer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_REVIEWER'\"\n (click)=\"activateList('DEFAULT_REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_default_reviewer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(reviewer, 'DEFAULT_REVIEWER')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultReviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_reviewer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_REVIEWER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'REVIEWER'\"\n >\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\n \"\n [class.disabled]=\"\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n >\n SEQUENTIAL\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review one at a time in the sequence defined by you.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'ANYONE' ||\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'ANYONE')\n \"\n >\n ANY REVIEWER CAN MARK THIS AS REVIEWED\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Overseer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.OVERSEER\"\n [checked]=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n [active]=\"activeList === 'OVERSEER'\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['OVERSEER', 'DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(\n activeList\n )\n \"\n [img]=\"ASSETS.oversight\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n >Oversights\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"overseerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [placeholder]=\"\n 'Who is responsible for overseeing the responsibilities within this Program?'\n \"\n (select)=\"activateList('OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_overseer?.value[0], 'OVERSEER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_overseer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseers.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_overseer_group?.value?.length &&\n controls?.program_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_overseer_group?.value[0],\n 'OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_overseer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_overseer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer_group?.value?.length > 1\"\n >\n +{{ controls?.program_overseer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\n {{controls?.program_overseer?.value[0]?.member_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n\n <button\n *ngIf=\"activeList !== 'OVERSEER'\"\n (click)=\"activateList('OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseers [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_overseer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(overseer, 'OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_overseer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'OVERSEER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"['OVERSEER'].includes(activeList)\"\n >DEFAULT Oversight\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DOHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [disabled]=\"\n ['OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer?.value[0],\n 'DEFAULT_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefault.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_default_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length &&\n controls?.program_default_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer_group?.value[0],\n 'DEFAULT_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_overseer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_OVERSEER'\"\n (click)=\"activateList('DEFAULT_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_overseer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_overseer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label class=\"vx-control-panel\"> </label>\n <input-with-pill\n class=\"vx-mt-2\"\n [selectDiv]=\"true\"\n [line]=\"3\"\n [disabled]=\"['OVERSEER', 'DEFAULT_OVERSEER'].includes(activeList)\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\n \"\n (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length ||\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_failed_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer?.value[0],\n 'DEFAULT_FAILED_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefaultFail.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer?.value?.length - 1\n }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length &&\n controls?.program_default_failed_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer_group?.value[0],\n 'DEFAULT_FAILED_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultFailGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer_group?.value\n ?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_FAILED_OVERSEER'\"\n (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_failed_overseer\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_FAILED_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_failed_overseer_group\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_FAILED_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </ng-container>\n </form-field>\n\n <!-- Assessment -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.ASSESSMENT\"\n [checked]=\"controls?.program_assessments?.value?.length\"\n [active]=\"activeList === 'ASSESSMENT'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\n \"\n [img]=\"ASSETS.assessments\"\n >\n <label class=\"vx-control-panel\"\n >ASSESSMENTS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssessmentHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which assessments can be linked to the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSESSMENT')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.program_assessments?.value?.length\"\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_assessments?.value\n | assessmentResolver as assessments\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(assessments[0], 'ASSESSMENT')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"assessments[0]?.assessment_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ assessments[0]?.assessment_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"program_assessments.popover()\"\n placement=\"right\"\n *ngIf=\"assessments?.length > 1\"\n >\n +{{ assessments?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\">&#xe90d;</i>{{assessments[0]?.assessment_name}} </span>\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\n </div>\n </ng-container>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSESSMENT'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSESSMENT')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\n <ng-container>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assessment of controls?.program_assessments?.value\n | assessmentResolver\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assessment, 'ASSESSMENT')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assessment?.assessment_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </ng-container>\n </app-popover>\n </form-field>\n\n <!-- Format & Evidence -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.FORMATE_EVIDENCE\"\n [checked]=\"[true, false].includes(controls?.evidence_required?.value)\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.format_evidence\"\n >\n <label class=\"vx-control-panel\"\n >Evidence\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"EvidenceHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Do all responsibilities within this program require evidence?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"!controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\n key\n evidence</div>\n <switch formControlName=\"allow_any_file_key_evidence\"\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\n </div> -->\n </form-field>\n\n <!-- Custom Field -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.CUSTOM_FIELDS\"\n [checked]=\"controls?.custom_fields?.value?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.custom_fields\"\n >\n <label class=\"vx-control-panel\"\n >CUSTOM FIELD\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"CFHelpText\"\n >&#xeb16;</i\n ></label\n >\n <custom-field formControlName=\"custom_fields\"></custom-field>\n </form-field>\n </form>\n</div>\n\n\n<!-- render userlist with group -->\n<user-group-list\n *ngIf=\"activeList === 'OWNER'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false, $event)\"\n [userListInfo]=\"lists?.OWNERS\"\n [groupListInfo]=\"lists?.OWNERS_GROUPS\"\n [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\"\n (save)=\"listAction($event, 'OWNER')\"\n (cancel)=\"fieldDeselector('OWNER')\"\n [panelTitle]=\"panelTitleOwner\"\n [featureflag]=\"featureflagGroups\"\n></user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'COLLABORATORS'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.collaborators?.value | refDisconnect\"\n [groupList]=\"lists?.OWNERS_GROUPS ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"controls?.collaborators_group?.value | refDisconnect\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.ASSIGNEES\"\n (save)=\"listAction($event, 'COLLABORATORS')\"\n (cancel)=\"fieldDeselector('COLLABORATORS')\"\n [panelTitle]=\"panelTitleAssignee\"\n [defaultSelectedUsers]=\"\n controls?.collaborators?.value | refDisconnect\n \"\n [userType]=\"'assignees'\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\n<app-smiley-dialog-inline\n *ngIf=\"showSmiley\"\n [message]=\"smileyMessage\"\n [actionButtons]=\"actionButtons\"\n (action)=\"action($event)\"\n (closeSmiley)=\"closeSmiley($event)\"\n>\n</app-smiley-dialog-inline>\n\n<!-- Framework selector -->\n<app-framework-list\n *ngIf=\"activeList === 'FRAMEWORK'\"\n [workflowPage]=\"['FRAMEWORK']\"\n (assignControl)=\"listAction($event, 'FRAMEWORK')\"\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\"\n [previousSelectedValues]=\"{ framework: controls?.framework.value }\"\n (entrustFramework)=\"entrustFramework($event)\"\n [headerText]=\"'Select a framework'\"\n></app-framework-list>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#fbfbfb;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.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-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group ::ng-deep vcomply-editor{margin-top:8px;display:block;pointer-events:auto!important;z-index:1}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;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}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .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)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
1299
- }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.ProgramsService }, { type: i3.AuthService }, { type: i4.UiKitService }, { type: i0.ChangeDetectorRef }, { type: i5.IframeService }]; }, propDecorators: { form: [{
1338
+ args: [{ selector: 'app-workflow-program', template: "<div class=\"workflow-program\" #form>\n <form novalidate [formGroup]=\"programForm\">\n <!-- Program Category Type -->\n <form-field\n [checked]=\"controls?.program_type?.value > -1\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.issue_type\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM TYPE <span class=\"required\">*</span></label\n >\n <tab-selector\n formControlName=\"program_type\"\n [displayArray]=\"constants?.categoryType\"\n ></tab-selector>\n <!-- <p *ngIf=\"program_name?.invalid\" class=\"error-message\">Add a program type</p> -->\n </form-field>\n\n <!-- Framework -->\n <form-field\n *ngIf=\"isAscentAllowed\"\n [checked]=\"false\"\n [active]=\"false\"\n [disabled]=\"false\"\n [img]=\"ASSETS.case_category\"\n >\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <!-- [selectDiv]=\"true\" -->\n <input-with-pill\n [placeholder]=\"'Select a framework that this Program relates to'\"\n (select)=\"activateList('FRAMEWORK')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.framework.value?.name\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"canFrameworkChange\"\n (click)=\"remove('', 'FRAMEWORK')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.framework.value?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.framework.value?.name }}</span\n >\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove('', 'FRAMEWORK')\" *ngIf=\"canFrameworkChange\" class=\"icons\" >&#xe90d;</i> {{controls?.framework.value?.name}}</span>\n </div>\n </div> -->\n <button\n *ngIf=\"canFrameworkChange\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('FRAMEWORK')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n </form-field>\n\n <!-- Program Category Name -->\n <form-field\n [checked]=\"controls?.program_name?.value?.trim()?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.what\"\n >\n <label class=\"vx-control-panel\"\n >PROGRAM NAME <span class=\"required\">*</span></label\n >\n <input\n InputTrim\n formControlName=\"program_name\"\n type=\"text\"\n placeholder=\"What is the Program name?\"\n />\n\n <p\n *ngIf=\"\n controls?.program_name?.errors && controls?.program_name?.touched\n \"\n class=\"error-message\"\n >\n Enter a name for this Program.\n </p>\n <p *ngIf=\"isNameExists\" class=\"error-message\">\n Program name already exists.\n </p>\n <div class=\"upload-files vx-d-flex vx-align-center vx-flex-wrap vx-mt-1\">\n <file-pill\n *ngFor=\"\n let attachment of controls?.description_attachment?.value\n | slice : 0 : 2\n \"\n [extension]=\"attachment?.org_file?.split('.').pop()\"\n [name]=\"attachment?.org_file\"\n [disabled]=\"attachment?.uploading\"\n (delete)=\"deleteAttachment('DESCRIPTION', attachment)\"\n >\n </file-pill>\n <button\n *ngIf=\"controls?.description_attachment?.value?.length > 2\"\n class=\"file-count\"\n appPopover\n (click)=\"uploadFile.popover()\"\n placement=\"right\"\n >\n +{{ controls?.description_attachment?.value?.length - 2 }}\n </button>\n <app-popover #uploadFile [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n class=\"vx-p-2\"\n *ngFor=\"\n let attachment of controls?.description_attachment?.value\n | slice : 2\n \"\n >\n <file-pill\n [extension]=\"attachment?.org_file?.split('.').pop()\"\n [name]=\"attachment?.org_file\"\n [disabled]=\"attachment?.uploading\"\n (delete)=\"deleteAttachment('DESCRIPTION', attachment)\"\n ></file-pill>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n <vcomply-editor\n [(ngModel)]=\"editorData.programDescription\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('DESCRIPTION', $event)\"\n (ngModelChange)=\"setFormField('program_description', $event)\"\n [editorConfig]=\"constants?.description\"\n >\n </vcomply-editor>\n </form-field>\n\n <!-- Objective -->\n <form-field\n [checked]=\"controls?.program_objective?.value?.trim()?.length\"\n [active]=\"activeList === 'OBJECTIVE'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'OBJECTIVE'\n \"\n [img]=\"ASSETS.objectives\"\n >\n <label class=\"vx-control-panel\"\n >OBJECTIVE\n <!-- <span class=\"required\">*</span> -->\n </label>\n <vcomply-editor\n [(ngModel)]=\"editorData.programObjective\"\n [ngModelOptions]=\"{ standalone: true }\"\n (sendSavedFiles)=\"selectFile('OBJECTIVE', $event)\"\n (ngModelChange)=\"setFormField('program_objective', $event, true)\"\n [editorConfig]=\"constants?.objective\"\n >\n </vcomply-editor>\n <!-- <p *ngIf=\"!isObjectiveValid\" class=\"error-message\">Specify the objective for this Program.</p> -->\n </form-field>\n\n <!-- Roles -->\n <form-field\n *ngIf=\"additionalOption?.ROLES\"\n [checked]=\"controls?.program_roles?.value?.length\"\n [active]=\"activeList === 'ROLE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'ROLE'\"\n [img]=\"ASSETS.roles\"\n >\n <label class=\"vx-control-panel\" id=\"permissiongroup\"\n >{{ ff_rc_listing ? \"PERMISSIONS\" : \"PERMISSION GROUP(S)\" }}\n <span class=\"required\">*</span\n ><i\n class=\"icons\"\n [appTooltip]=\"\n ff_rc_listing\n ? 'Permissions let you specify the users that can be \u201COwners\u201D' +\n (allowedFeature.isFeatureEnabled('ff_program_simplify')\n ? ' '\n : ' and \u201CApprovers\u201D') +\n 'of a Program.'\n : 'Permission group(s) let you specify the users that can be \u201COwners\u201D' +\n (allowedFeature.isFeatureEnabled('ff_program_simplify')\n ? ' '\n : ' and \u201CApprovers\u201D') +\n 'of a Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RoleHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n id=\"placeholdername\"\n [placeholder]=\"\n ff_rc_listing\n ? 'Which user permissions have access to this program?'\n : 'Which user permission groups have access to this program?'\n \"\n (select)=\"activateList('ROLE')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_roles?.value?.length\">\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !lists.SYSTEM_ROLE_IDS.includes(\n controls?.program_roles?.value[0]?._id\n )\n \"\n (click)=\"remove(controls?.program_roles?.value[0], 'ROLE')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n featureflagrole &&\n controls?.program_roles?.value[0]?.permissionGroupName\n ? controls?.program_roles?.value[0]?.permissionGroupName\n : controls?.program_roles?.value[0]?.roleName\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n featureflagrole &&\n controls?.program_roles?.value[0]?.permissionGroupName\n ? controls?.program_roles?.value[0]?.permissionGroupName\n : controls?.program_roles?.value[0]?.roleName\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"role.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_roles?.value?.length > 1\"\n >\n +{{ controls?.program_roles?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(controls?.program_roles?.value[0]?._id)\" (click)=\"remove(controls?.program_roles?.value[0],'ROLE')\" class=\"icons\">&#xe90d;</i>{{featureflagrole && controls?.program_roles?.value[0]?.permissionGroupName ? controls?.program_roles?.value[0]?.permissionGroupName : controls?.program_roles?.value[0]?.roleName}}</span>\n <button *ngIf=\"controls?.program_roles?.value?.length > 1\" class=\"count\" appPopover (click)=\"role.popover()\" placement=\"right\">+{{controls?.program_roles?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ROLE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ROLE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <p *ngIf=\"false\" class=\"error-message\">\n {{ featureflagrole ? \"Add a permission group(s)\" : \"Add a role(s)\" }}\n </p>\n <app-popover #role [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of controls?.program_roles?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"!lists.SYSTEM_ROLE_IDS.includes(data?._id)\"\n class=\"icons\"\n (click)=\"removeRole(data, 'ROLE')\"\n >&#xe90d;</i\n >\n {{\n featureflagrole && data?.permissionGroupName\n ? data?.permissionGroupName\n : data?.roleName\n }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Owners -->\n <form-field\n *ngIf=\"additionalOption?.OWNERS\"\n [checked]=\"\n controls?.program_owners.value?.length > 0 ||\n controls?.program_owners_group.value?.length > 0\n \"\n [active]=\"activeList === 'OWNER'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'OWNER'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >OWNER(S)\n <span\n class=\"icon\"\n *ngIf=\"toolTipData.owner !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('OWNER')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_owners.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_owners?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_owners?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"owner.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners?.value?.length > 1\"\n >\n +{{ controls?.program_owners?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_owners_group?.value?.length &&\n controls?.program_owners?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_owners_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n (click)=\"\n remove(\n controls?.program_owners_group?.value[0],\n 'OWNER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_owners_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_owners_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_owners_group?.value?.length > 1\"\n >\n +{{ controls?.program_owners_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <button\n *ngIf=\"activeList !== 'OWNER'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('OWNER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <p *ngIf=\"false\" class=\"error-message\">Add a owner(s)</p>\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\"\n >\n {{\n featureflagrole\n ? \"ALL USERS ASSOCIATED WITH THE SELECTED PERMISSION GROUPS\"\n : \"ALL USERS ASSOCIATED WITH THE SELECTED ROLES\"\n }}\n </div>\n <switch\n formControlName=\"all_user_in_role\"\n (change)=\"selectAllRoleOwner($event)\"\n ></switch>\n </div>\n <app-popover #owner [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let owner of controls?.program_owners?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !(\n lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\n ).includes(owner?.member_id)\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER')\"\n >&#xe90d;</i\n >\n {{ owner?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let owner of controls?.program_owners_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n *ngIf=\"\n !['ADMIN', 'KEY_ADMIN', 'LOGGED_IN'].includes(\n owner?.user_role\n )\n \"\n class=\"icons\"\n (click)=\"remove(owner, 'OWNER_GROUP')\"\n >&#xe90d;</i\n >\n {{ owner?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Collaborator -->\n <form-field\n *ngIf=\"additionalOption?.COLLABORATOR\"\n [checked]=\"\n controls?.program_collaborator?.value?.length > 0\n \"\n [active]=\"activeList === 'COLLABORATOR'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'COLLABORATOR'\"\n [img]=\"ASSETS.case_owners\"\n >\n <label class=\"vx-control-panel\"\n >Collaborator(S) <span class=\"required\">*</span>\n <span\n class=\"icon\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.owner\"\n id=\"OwnerHelpText\"\n ></div>\n </div>\n </popover-hover>\n </label>\n <input-with-pill\n [placeholder]=\"'Who is responsible for managing this program?'\"\n (select)=\"activateList('COLLABORATOR')\"\n >\n <div class=\"selected\" *ngIf=\"controls?.program_collaborator?.value[0]\">\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_collaborator?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_collaborator?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4 greenBg\"\n appPopover\n (click)=\"collaborator.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_collaborator?.value?.length > 1\"\n >\n +{{ controls?.program_collaborator?.value?.length - 1 }}\n </button>\n </div>\n \n </div>\n\n <button\n *ngIf=\"activeList !== 'COLLABORATOR'\"\n [class.disabled]=\"controls?.all_user_in_role?.value\"\n (click)=\"activateList('COLLABORATOR')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i>Edit\n </button>\n </div>\n </input-with-pill>\n <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\"\n >\n </div>\n </div>\n <app-popover #collaborator [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"let collaborator of controls?.program_collaborator?.value | slice : 1\"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(collaborator, 'COLLABORATOR')\"\n >&#xe90d;</i\n >\n {{ collaborator?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Performance Calculated -->\n <!-- <form-field [checked]=\"controls?.performance_calculation?.value\" [active]=\"activeList === 'PERFORMANCE'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'PERFORMANCE'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/performance-calc.svg'\">\n <label class=\"vx-control-panel\">HOW SHOULD THE PERFORMANCE OF THIS PROGRAM BE CALCULATED?</label>\n <tab-selector formControlName=\"performance_calculation\" [displayArray]=\"constants?.performanceCalculation\">\n </tab-selector>\n </form-field> -->\n <ng-container *ngIf=\"isProgramScope\">\n <div\n class=\"scope-label vx-fs-10 vx-txt-white vx-tt-uppercase vx-pl-1 vx-pr-1 vx-mb-5 vx-lh-4 vx-d-inline-block\"\n >\n PROGRAM SCOPE\n </div>\n <!-- <i class=\"icons info-icon vx-fs-12 vx-txt-blue vx-ml-1\" [appTooltip]=\"tooltip.programScope\" placement=\"bottom\" delay=\"0\" type=\"white\" [tooltipMandatory]=\"true\">&#xe91f;</i> -->\n <span\n class=\"icon info-icon vx-fs-12 vx-txt-blue vx-ml-1\"\n *ngIf=\"toolTipData.programScop !== ''\"\n libPopoverHover\n (mouseover)=\"dataTooltip.popover()\"\n (mouseleave)=\"dataTooltip.closePopover()\"\n placement=\"right\"\n ><i class=\"icons\">&#xe91f;</i></span\n >\n <popover-hover #dataTooltip>\n <div class=\"vx-info-card\">\n <div\n class=\"vx-info-card-body\"\n [innerHTML]=\"toolTipData.programScope\"\n id=\"PSHelpText\"\n ></div>\n </div>\n </popover-hover>\n </ng-container>\n\n <!-- Program Frequency -->\n <form-field\n *ngIf=\"additionalOption?.PROGRAM_FREQUENCY\"\n [checked]=\"[true, false].includes(controls?.recurring_frequency?.value)\"\n [active]=\"activeList === 'FREQUENCY'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'FREQUENCY'\n \"\n [img]=\"ASSETS.recurring\"\n >\n <label class=\"vx-control-panel\" id=\"PDChange\"\n >PROGRAM DURATION\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Program Duration refers to the duration of the Program. A Program can occur in perpetuity, or it can occur until the end of the current business cycle that has been specified in ' +\n businessCycle.selectedCycle.business_cycle +\n '. All responsibilities linked with that Program will also have the same Program Duration.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ProgramDurationHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <div class=\"vx-d-flex vx-align-center vx-justify-between\">\n <span class=\"text vx-mb-0\">Is this program recurring?</span>\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'recurring_frequency'\"\n [checked]=\"!controls?.recurring_frequency?.value\"\n (checkedEvent)=\"setFormField('recurring_frequency', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </div>\n </form-field>\n\n <!-- Scope Changes -->\n <form-field\n *ngIf=\"additionalOption?.SCOPE_CHANGES\"\n [checked]=\"[true, false].includes(controls?.lock_scope_change?.value)\"\n [active]=\"activeList === 'SCOPE'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'SCOPE'\"\n [img]=\"ASSETS.lock_scope\"\n >\n <label class=\"vx-control-panel\"\n >Lock the Program Scope\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If the Program Scope is locked, neither the Program nor the responsibilities linked with the Program can be edited once the Program begins. In order to edit the Program or the linked responsibilities, the Program details will need to be edited.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ScopeChangesHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Would you like to\n <span class=\"vx-label-txt vx-fw-500\">lock changes</span> to the\n program scope?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'lock_scope_change'\"\n [checked]=\"!controls?.lock_scope_change?.value\"\n (checkedEvent)=\"setFormField('lock_scope_change', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n </form-field>\n\n <!-- Framework -->\n <!-- <form-field [checked]=\"false\" [active]=\"activeList === 'FRAMEWORK'\" [disabled]=\"sideElements.includes(activeList) && activeList !== 'FRAMEWORK'\"\n [img]=\"'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/category.svg'\">\n <label class=\"vx-control-panel\">FRAMEWORK</label>\n <input-with-pill [placeholder]=\"'Select a framework that this Program relates to'\" (select)=\"activateList('FRAMEWORK')\">\n <div class=\"selected\" *ngIf=\"controls?.framework?.value?.framework_name\">\n <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i (click)=\"remove(controls?.framework.value,'FRAMEWORK')\" class=\"icons\">&#xe90d;</i>{{controls?.framework?.value?.framework_name}}</span>\n <button class=\"count\" appPopover (click)=\"framework.popover()\" placement=\"right\">+5</button>\n </div>\n </div>\n <button *ngIf=\"activeList!=='FRAMEWORK'\" (click)=\"activateList('FRAMEWORK')\" class=\"edit\" type=\"button\"><i class=\"icons\">&#xe9ba;</i> Edit</button>\n </div>\n </input-with-pill>\n <app-popover #framework [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of [1, 1, 1, 1, 1, 1, 1]\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\">&#xe90d;</i>\n Manage framework name\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field> -->\n\n <!-- Responsibility Center -->\n <form-field\n *ngIf=\"additionalOption?.RC\"\n [checked]=\"controls?.rc?.value?.length\"\n [active]=\"activeList === 'RC'\"\n [disabled]=\"sideElements.includes(activeList) && activeList !== 'RC'\"\n [img]=\"ASSETS.responsibility_center\"\n >\n <label class=\"vx-control-panel\"\n >RESPONSIBILITY CENTER\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Responsibility Centers represent your organizational and operational infrastructure. Where Responsibility Centers are selected when creating a Program, only those Responsibilities Centers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"RCHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n (select)=\"activateList('RC')\"\n [placeholder]=\"\n 'Which Responsibility Center(s) can be linked to the responsibilities associated with this Program?'\n \"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.rc?.value && controls?.rc?.value?.length\"\n >\n <div class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\">\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(controls?.rc?.value[0], 'RC')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.rc?.value[0]?.item_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.rc?.value[0]?.item_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"rc.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.rc?.value?.length > 1\"\n >\n +{{ controls?.rc?.value?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(controls?.rc?.value[0],'RC')\">&#xe90d;</i>{{controls?.rc?.value[0]?.item_name}}</span>\n <button *ngIf=\"controls?.rc?.value?.length > 1\" class=\"count\" appPopover (click)=\"rc.popover()\" placement=\"right\">+{{controls?.rc?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'RC'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('RC')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #rc [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of controls?.rc?.value | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(rc, 'RC')\">&#xe90d;</i>\n {{ rc?.item_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </form-field>\n\n <!-- Assignee -->\n <form-field\n *ngIf=\"additionalOption?.ASSIGNEES\"\n [checked]=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n [active]=\"['ASSIGNEE', 'DEFAULT_ASSIGNEE']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['ASSIGNEE', 'DEFAULT_ASSIGNEE'].includes(activeList)\n \"\n [img]=\"ASSETS.case_assignees\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n >ASSIGNEES\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assignees are required to complete the responsibilities that have been assigned to them. Where Assignees are selected when creating a Program, only those Assignees will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssigneeHelpText\"\n >&#xeb16;</i\n >\n </label>\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [placeholder]=\"\n 'Who is responsible for completing the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_assignee?.value?.length ||\n controls?.program_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_assignee?.value[0], 'ASSIGNEE')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_assignee?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_assignee_group?.value?.length &&\n controls?.program_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_assignee_group?.value[0],\n 'ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"assignee_group.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_assignee_group?.value?.length > 1\"\n >\n +{{ controls?.program_assignee_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee?.value[0],'ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"assignee.popover()\" placement=\"right\">+{{controls?.program_assignee?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_assignee_group?.value?.length && controls?.program_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_assignee_group?.value[0],'ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_assignee_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_assignee_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"assignee_group.popover()\" placement=\"right\">+{{controls?.program_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSIGNEE'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSIGNEE')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #assignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_assignee?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assignee, 'ASSIGNEE')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #assignee_group [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_assignee_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'ASSIGNEE_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >DEFAULT ASSIGNEE\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Assignees for all new responsibilities linked with a Program. If a Default Assignees is selected, the user will automatically be selected the Assignee when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility. '\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DAHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'ASSIGNEE'\"\n [placeholder]=\"\n 'Which persons will be selected as the default assignees for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_ASSIGNEE')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_assignee?.value?.length ||\n controls?.program_default_assignee_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee?.value[0],\n 'DEFAULT_ASSIGNEE'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssignee.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_assignee?.value?.length > 1\"\n >\n +{{ controls?.program_default_assignee?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length &&\n controls?.program_default_assignee?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_assignee_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_assignee_group?.value[0],\n 'DEFAULT_ASSIGNEE_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_assignee_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_assignee_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultAssigneeGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_assignee_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_assignee_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee?.value[0],'DEFAULT_ASSIGNEE')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_assignee?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{ controls?.program_default_assignee?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultAssignee.popover()\" placement=\"right\">+{{controls?.program_default_assignee?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_assignee_group?.value?.length && controls?.program_default_assignee?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_assignee_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_assignee_group?.value[0],'DEFAULT_ASSIGNEE_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_assignee_group?.value[0]?.group_name }}</span>\n </span>\n <button *ngIf=\"controls?.program_default_assignee_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultAssigneeGroup.popover()\" placement=\"right\">+{{controls?.program_default_assignee_group?.value?.length -1 }}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_ASSIGNEE'\"\n (click)=\"activateList('DEFAULT_ASSIGNEE')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultAssignee [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assignee of controls?.program_default_assignee?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ assignee?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultAssigneeGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_assignee_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(assignee, 'DEFAULT_ASSIGNEE_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'ASSIGNEE'\"\n >\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ALL'\"\n (checkedEvent)=\"setFormField('assignee_completion_criteria', 'ALL')\"\n >\n ALL SELECTED PERSONS NEED TO COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, separate responsibilities will be created for each person.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'assignee'\"\n [checked]=\"controls?.assignee_completion_criteria?.value === 'ANYONE'\"\n (checkedEvent)=\"\n setFormField('assignee_completion_criteria', 'ANYONE')\n \"\n >\n ANY SELECTED PERSON CAN COMPLETE THIS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, only one responsibility will be created.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Reviewer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.REVIEWER\"\n [checked]=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n [active]=\"['REVIEWER', 'DEFAULT_REVIEWER']?.includes(activeList)\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['REVIEWER', 'DEFAULT_REVIEWER'].includes(activeList)\n \"\n [img]=\"ASSETS.reviewer\"\n >\n <label\n [class.disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n class=\"vx-control-panel\"\n >Reviewers\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Reviewers are required to review responsibilities after they have been completed. Where Reviewers are selected when creating a Program, only those Reviewers will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"ReviewerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'DEFAULT_REVIEWER'\"\n [placeholder]=\"\n 'Who is responsible for reviewing the responsibilities within this Program?'\n \"\n (select)=\"activateList('REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_reviewer?.value?.length ||\n controls?.program_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_reviewer?.value[0], 'REVIEWER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_reviewer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_reviewer_group?.value?.length &&\n controls?.program_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_reviewer_group?.value[0],\n 'REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"reviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\"\n >\n +{{ controls?.program_reviewer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer?.value[0],'REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"reviewer.popover()\" placement=\"right\">+{{controls?.program_reviewer?.value?.length -1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_reviewer_group?.value?.length && controls?.program_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_reviewer_group?.value[0],'REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"reviewerGroup.popover()\" placement=\"right\">+{{controls?.program_reviewer_group?.value?.length - 1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'REVIEWER'\"\n (click)=\"activateList('REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #reviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_reviewer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(reviewer, 'REVIEWER')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #reviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_reviewer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'REVIEWER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label\n [class.disabled]=\"activeList === 'REVIEWER'\"\n class=\"vx-control-panel\"\n >DEFAULT Reviewer\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Reviewers for responsibilities linked with a Program. Where a user has been specified as a Default Reviewer, that user will automatically be selected as the Reviewer when creating a responsibility linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DRHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"activeList === 'REVIEWER'\"\n [placeholder]=\"\n 'Which persons will be selected as the default reviewers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_REVIEWER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_reviewer?.value?.length ||\n controls?.program_default_reviewer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer?.value[0],\n 'DEFAULT_REVIEWER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewer.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\"\n >\n +{{ controls?.program_default_reviewer?.value?.length - 1 }}\n </button>\n </div>\n <span\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length &&\n controls?.program_default_reviewer?.value?.length\n \"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_reviewer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_reviewer_group?.value[0],\n 'DEFAULT_REVIEWER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_reviewer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_reviewer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"defaultReviewerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_reviewer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_reviewer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer?.value[0],'DEFAULT_REVIEWER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"defaultReviewer.popover()\" placement=\"right\">+{{controls?.program_default_reviewer?.value?.length - 1}}</button>\n </div>\n <span class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length && controls?.program_default_reviewer?.value?.length\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_reviewer_group?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_reviewer_group?.value[0],'DEFAULT_REVIEWER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_reviewer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_reviewer_group?.value[0]?.group_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_default_reviewer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"defaultReviewerGroup.popover()\" placement=\"right\">+{{controls?.program_default_reviewer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_REVIEWER'\"\n (click)=\"activateList('DEFAULT_REVIEWER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #defaultReviewer [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let reviewer of controls?.program_default_reviewer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(reviewer, 'DEFAULT_REVIEWER')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ reviewer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #defaultReviewerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_reviewer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_REVIEWER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <div\n class=\"radio-group-selector\"\n [class.disabled]=\"activeList === 'REVIEWER'\"\n >\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'SEQUENTIAL'\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'SEQUENTIAL')\n \"\n [class.disabled]=\"\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n >\n SEQUENTIAL\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review one at a time in the sequence defined by you.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n <app-cs-radio\n [name]=\"'reviewer'\"\n [checked]=\"\n controls?.reviewer_completion_criteria?.value === 'ANYONE' ||\n controls?.program_default_reviewer_group?.value?.length > 0\n \"\n (checkedEvent)=\"\n setFormField('reviewer_completion_criteria', 'ANYONE')\n \"\n >\n ANY REVIEWER CAN MARK THIS AS REVIEWED\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'The responsibility will be sent for review to all reviewers at the same time. If anyone of the reviewer reviews the responsibility, it will be considered as reviewed.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n >&#xe91f;</i\n >\n </app-cs-radio>\n </div>\n </form-field>\n\n <!-- Overseer -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.OVERSEER\"\n [checked]=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n [active]=\"activeList === 'OVERSEER'\"\n [disabled]=\"\n sideElements?.includes(activeList) &&\n !['OVERSEER', 'DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(\n activeList\n )\n \"\n [img]=\"ASSETS.oversight\"\n >\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n >Oversights\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Oversights receive updates when a responsibility is completed, completed with delay or not completed. Where Oversights are selected when creating a Program, only those Oversights will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"overseerHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [disabled]=\"\n ['DEFAULT_OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [placeholder]=\"\n 'Who is responsible for overseeing the responsibilities within this Program?'\n \"\n (select)=\"activateList('OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_overseer?.value?.length ||\n controls?.program_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(controls?.program_overseer?.value[0], 'OVERSEER')\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ controls?.program_overseer?.value[0]?.member_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseers.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_overseer_group?.value?.length &&\n controls?.program_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_overseer_group?.value[0],\n 'OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_overseer_group?.value[0]?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_overseer_group?.value[0]?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerGroup.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_overseer_group?.value?.length > 1\"\n >\n +{{ controls?.program_overseer_group?.value?.length - 1 }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer?.value[0],'OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">\n {{controls?.program_overseer?.value[0]?.member_name}}\n </span>\n </span>\n <button *ngIf=\"controls?.program_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseers.popover()\" placement=\"right\">+{{controls?.program_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_overseer_group?.value?.length && controls?.program_overseer?.value?.length \" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_overseer_group?.value[0],'OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_overseer_group?.value[0]?.group_name}}</span></span>\n <button *ngIf=\"controls?.program_overseer_group?.value?.length> 1\" class=\"count\" appPopover (click)=\"overseerGroup.popover()\" placement=\"right\">+{{controls?.program_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n\n <button\n *ngIf=\"activeList !== 'OVERSEER'\"\n (click)=\"activateList('OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseers [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_overseer?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i class=\"icons\" (click)=\"remove(overseer, 'OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_overseer_group?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(group, 'OVERSEER_GROUP')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <ng-container [class.disabled]=\"activeList === 'OVERSEER'\">\n <label\n class=\"vx-control-panel\"\n [class.disabled]=\"['OVERSEER'].includes(activeList)\"\n >DEFAULT Oversight\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'This option lets you specify the Default Oversight for responsibilities linked with a Program. Where a user has been specified as a Default Oversight, that user will automatically be selected as the Oversight when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"DOHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [disabled]=\"\n ['OVERSEER', 'DEFAULT_FAILED_OVERSEER'].includes(activeList)\n \"\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for the responsibilities within this Program?'\n \"\n (select)=\"activateList('DEFAULT_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_overseer?.value?.length ||\n controls?.program_default_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer?.value[0],\n 'DEFAULT_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer?.value[0]?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer?.value[0]?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefault.popover()\"\n placement=\"right\"\n *ngIf=\"controls?.program_default_overseer?.value?.length > 1\"\n >\n +{{ controls?.program_default_overseer?.value?.length - 1 }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length &&\n controls?.program_default_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_overseer_group?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_overseer_group?.value[0],\n 'DEFAULT_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_overseer_group?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_overseer_group?.value?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer?.value[0],'DEFAULT_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer?.value[0]?.member_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer?.value[0]?.member_name}}</span></span>\n <button *ngIf=\"controls?.program_default_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefault.popover()\" placement=\"right\">+{{controls?.program_default_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_overseer_group?.value?.length && controls?.program_default_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_overseer_group?.value[0],'DEFAULT_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_overseer_group?.value?.length >1\" class=\"count\" appPopover (click)=\"overseerDefaultGroup.popover()\" placement=\"right\">+{{controls?.program_default_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_OVERSEER'\"\n (click)=\"activateList('DEFAULT_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefault [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_overseer?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_overseer_group?.value\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <label class=\"vx-control-panel\"> </label>\n <input-with-pill\n class=\"vx-mt-2\"\n [selectDiv]=\"true\"\n [line]=\"3\"\n [disabled]=\"['OVERSEER', 'DEFAULT_OVERSEER'].includes(activeList)\"\n [placeholder]=\"\n 'Which persons will be selected as the default overseers for responsibilities that are not completed within this Program?'\n \"\n (select)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length ||\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"controls?.program_default_failed_overseer?.value?.length\"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer?.value[0],\n 'DEFAULT_FAILED_OVERSEER'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer?.value[0]\n ?.member_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseersDefaultFail.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer?.value?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer?.value?.length - 1\n }}\n </button>\n </div>\n <span\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length &&\n controls?.program_default_failed_overseer?.value?.length\n \"\n class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\"\n >&</span\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value?.length\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"\n remove(\n controls?.program_default_failed_overseer_group?.value[0],\n 'DEFAULT_FAILED_OVERSEER_GROUP'\n )\n \"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{\n controls?.program_default_failed_overseer_group?.value[0]\n ?.group_name\n }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"overseerDefaultFailGroup.popover()\"\n placement=\"right\"\n *ngIf=\"\n controls?.program_default_failed_overseer_group?.value\n ?.length > 1\n \"\n >\n +{{\n controls?.program_default_failed_overseer_group?.value\n ?.length - 1\n }}\n </button>\n </div>\n </div>\n\n <!-- <div class=\"chip-container\">\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer?.value?.length\">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer?.value[0],'DEFAULT_FAILED_OVERSEER')\" >&#xe90d;</i>\n <span class=\"chip\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer?.value[0]?.member_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer?.value?.length > 1\" class=\"count user\" appPopover (click)=\"overseersDefaultFail.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer?.value?.length -1}}</button>\n </div>\n <span *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length && controls?.program_default_failed_overseer?.value?.length\" class=\"vx-fs-12 vx-paragraph-txt vx-ml-2 vx-mr-2\">&</span>\n <div class=\"chip-inner\" *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length \">\n <i class=\"icons cross vx-mr-1\" (click)=\"remove(controls?.program_default_failed_overseer_group?.value[0],'DEFAULT_FAILED_OVERSEER_GROUP')\" >&#xe90d;</i>\n <span class=\"chip\" [appTooltip]=\"controls?.program_default_failed_overseer_group?.value[0]?.group_name\" placement=\"bottom-left\" type=\"black\" delay=\"0\" [tooltipMandatory]=\"false\">\n <span class=\"vx-fs-11 vx-paragraph-txt vx-fw-500 vx-tt-uppercase\">{{controls?.program_default_failed_overseer_group?.value[0]?.group_name}}</span>\n </span>\n <button *ngIf=\"controls?.program_default_failed_overseer_group?.value?.length > 1\" class=\"count\" appPopover (click)=\"overseerDefaultFailGroup.popover()\" placement=\"right\">+{{controls?.program_default_failed_overseer_group?.value?.length -1}}</button>\n </div>\n </div> -->\n <button\n *ngIf=\"activeList !== 'DEFAULT_FAILED_OVERSEER'\"\n (click)=\"activateList('DEFAULT_FAILED_OVERSEER')\"\n class=\"edit\"\n type=\"button\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #overseersDefaultFail [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let overseer of controls?.program_default_failed_overseer\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n class=\"icons\"\n (click)=\"remove(overseer, 'DEFAULT_FAILED_OVERSEER')\"\n >&#xe90d;</i\n >\n {{ overseer?.member_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n <app-popover #overseerDefaultFailGroup [dontCloseonClick]=\"true\">\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let group of controls?.program_default_failed_overseer_group\n ?.value | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i\n (click)=\"remove(group, 'DEFAULT_FAILED_OVERSEER_GROUP')\"\n class=\"icons\"\n >&#xe90d;</i\n >\n {{ group?.group_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </ng-container>\n </form-field>\n\n <!-- Assessment -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.ASSESSMENT\"\n [checked]=\"controls?.program_assessments?.value?.length\"\n [active]=\"activeList === 'ASSESSMENT'\"\n [disabled]=\"\n sideElements.includes(activeList) && activeList !== 'ASSESSMENT'\n \"\n [img]=\"ASSETS.assessments\"\n >\n <label class=\"vx-control-panel\"\n >ASSESSMENTS\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Assessments are a digital form that are created in \u201CAssessment\u201D within the Compliance Module. Where Assessments are selected when creating a Program, only those Assessments will be available for selection when creating a responsibility linked with the Program.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"AssessmentHelpText\"\n >&#xeb16;</i\n ></label\n >\n <input-with-pill\n [selectDiv]=\"true\"\n [placeholder]=\"\n 'Which assessments can be linked to the responsibilities within this Program?'\n \"\n (select)=\"activateList('ASSESSMENT')\"\n >\n <div\n class=\"selected\"\n *ngIf=\"controls?.program_assessments?.value?.length\"\n >\n <div\n class=\"chipContainer vx-d-flex vx-align-center vx-pl-2 vx-pr-2\"\n *ngIf=\"\n controls?.program_assessments?.value\n | assessmentResolver as assessments\n \"\n >\n <i\n class=\"icons cross vx-fs-10 vx-paragraph-txt vx-mr-1\"\n (click)=\"remove(assessments[0], 'ASSESSMENT')\"\n >&#xe9ae;</i\n >\n <span\n class=\"chipName vx-fs-11 vx-label-txt\"\n [appTooltip]=\"assessments[0]?.assessment_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ assessments[0]?.assessment_name }}</span\n >\n <button\n class=\"countBtn vx-fs-9 vx-fw-500 vx-txt-white vx-d-flex vx-align-center vx-justify-center vx-lh-4\"\n appPopover\n (click)=\"program_assessments.popover()\"\n placement=\"right\"\n *ngIf=\"assessments?.length > 1\"\n >\n +{{ assessments?.length - 1 }}\n </button>\n </div>\n\n <!-- <div class=\"chip-container\">\n <ng-container *ngIf=\"(controls?.program_assessments?.value | assessmentResolver) as assessments\">\n <div class=\"chip-inner\">\n <span class=\"chip\"><i class=\"icons\" (click)=\"remove(assessments[0],'ASSESSMENT')\">&#xe90d;</i>{{assessments[0]?.assessment_name}} </span>\n <button *ngIf=\"assessments?.length > 1\" class=\"count\" appPopover (click)=\"program_assessments.popover()\" placement=\"right\">+{{assessments?.length -1 }}</button>\n </div>\n </ng-container>\n </div> -->\n <button\n *ngIf=\"activeList !== 'ASSESSMENT'\"\n class=\"edit\"\n type=\"button\"\n (click)=\"activateList('ASSESSMENT')\"\n >\n <i class=\"icons\">&#xe9ba;</i> Edit\n </button>\n </div>\n </input-with-pill>\n <app-popover #program_assessments [dontCloseonClick]=\"true\">\n <ng-container>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li\n *ngFor=\"\n let assessment of controls?.program_assessments?.value\n | assessmentResolver\n | slice : 1\n \"\n >\n <div class=\"avatar-card\">\n <span class=\"value\">\n <i (click)=\"remove(assessment, 'ASSESSMENT')\" class=\"icons\"\n >&#xe90d;</i\n >\n {{ assessment?.assessment_name }}\n </span>\n </div>\n </li>\n </ul>\n </div>\n </ng-container>\n </app-popover>\n </form-field>\n\n <!-- Format & Evidence -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.FORMATE_EVIDENCE\"\n [checked]=\"[true, false].includes(controls?.evidence_required?.value)\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.format_evidence\"\n >\n <label class=\"vx-control-panel\"\n >Evidence\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'If selected, evidence of completion of a responsibility will be required for all responsibilities that are linked with the Program. An Assignor, being the person who creates the responsibility, can override this option when creating a responsibility.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"EvidenceHelpText\"\n >&#xeb16;</i\n ></label\n >\n <div class=\"upload-format\">\n <span class=\"text\"\n >Do all responsibilities within this program require evidence?</span\n >\n <div class=\"radio-group program\">\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', true)\"\n >YES</app-cs-radio\n >\n <app-cs-radio\n [name]=\"'evidence_required'\"\n [checked]=\"!controls?.evidence_required?.value\"\n (checkedEvent)=\"setFormField('evidence_required', false)\"\n >NO</app-cs-radio\n >\n </div>\n </div>\n <!-- <div class=\"vx-d-flex vx-align-center vx-justify-end vx-mt-2\">\n <div class=\"vx-fs-11 vx-fw-500 vx-paragraph-txt vx-tt-uppercase vx-mr-2\">Allow any file to be marked as\n key\n evidence</div>\n <switch formControlName=\"allow_any_file_key_evidence\"\n (change)=\"setFormField('allow_any_file_key_evidence',$event?.target?.checked)\"></switch>\n </div> -->\n </form-field>\n\n <!-- Custom Field -->\n <form-field\n [appScrollInView]=\"scrollToBottom\"\n *ngIf=\"additionalOption?.CUSTOM_FIELDS\"\n [checked]=\"controls?.custom_fields?.value?.length\"\n [active]=\"false\"\n [disabled]=\"sideElements.includes(activeList)\"\n [img]=\"ASSETS.custom_fields\"\n >\n <label class=\"vx-control-panel\"\n >CUSTOM FIELD\n <i\n class=\"icons\"\n [appTooltip]=\"\n 'Where a custom field is specified, all responsibilities linked with a Program will contain that custom field. Custom fields enable the collection of additional meta data.'\n \"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n id=\"CFHelpText\"\n >&#xeb16;</i\n ></label\n >\n <custom-field formControlName=\"custom_fields\"></custom-field>\n </form-field>\n </form>\n</div>\n\n<!-- list of roles -->\n<role-list\n *ngIf=\"activeList === 'ROLE'\"\n [selected]=\"controls?.program_roles?.value | refDisconnect\"\n [loading]=\"listLoadingState.ROLES\"\n [list]=\"lists?.ROLES?.data ?? []\"\n (save)=\"listAction($event, 'ROLE')\"\n (cancel)=\"fieldDeselector('ROLE')\"\n [featureflagrole]=\"featureflagrole\"\n [featureflagGroup]=\"featureflagGroups\"\n [ff_rc_listing]=\"ff_rc_listing\"\n></role-list>\n\n<!-- list of frameworks -->\n<!-- <app-define-framework-listing *ngIf=\"activeList === 'FRAMEWORK'\" (cancel)=\"fieldDeselector('FRAMEWORK')\" (next)=\"listAction($event,'FRAMEWORK')\" [mode]=\"mode\" [selectedFramework]=\"controls?.framework?.value\"></app-define-framework-listing> -->\n<!-- list of responsibility center -->\n<app-responsibility-centers-list\n *ngIf=\"activeList === 'RC'\"\n [responsibilityCentersList]=\"lists?.RC ?? []\"\n [radioSelection]=\"false\"\n [rcIdKey]=\"'rc_id'\"\n (closeRcList)=\"fieldDeselector('RC')\"\n (saveSelectedList)=\"listAction($event, 'RC')\"\n [selectedResponsibilityCenters]=\"controls?.rc?.value | refDisconnect\"\n>\n</app-responsibility-centers-list>\n<!-- render userlist with group -->\n\n<user-group-list\n *ngIf=\"activeList === 'OWNER'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [nonRemovableUserIds]=\"lists.NON_REMOVABLE_OWNERS | listToId : 'member_id'\"\n [userlist]=\"lists?.OWNERS?.data ?? []\"\n [selectedUsers]=\"controls?.program_owners?.value | refDisconnect\"\n (fetchUserData)=\"fetchUsersAssociatedWithRoles(false, $event)\"\n [userListInfo]=\"lists?.OWNERS\"\n [groupListInfo]=\"lists?.OWNERS_GROUPS\"\n [groupList]=\"lists?.OWNERS_GROUPS?.data ?? []\"\n [selectedGroups]=\"controls?.program_owners_group?.value | refDisconnect\"\n (save)=\"listAction($event, 'OWNER')\"\n (cancel)=\"fieldDeselector('OWNER')\"\n [panelTitle]=\"panelTitleOwner\"\n [featureflag]=\"featureflagGroups\"\n></user-group-list>\n\n<user-group-list\n *ngIf=\"activeList === 'COLLABORATOR'\"\n [groupEnabled]=\"false\"\n [singleSelect]=\"false\"\n [userlist]=\"lists?.COLLABORATORS?.data ?? []\"\n [disabledIds]=\"disableCollaboratorIds\"\n [selectedUsers]=\"controls?.program_collaborator?.value | refDisconnect\"\n [userListInfo]=\"lists?.COLLABORATORS\"\n (save)=\"listAction($event, 'COLLABORATOR')\"\n (cancel)=\"fieldDeselector('COLLABORATOR')\"\n [panelTitle]=\"panelTitleCollaborator\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'ASSIGNEE'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.ASSIGNEES ?? []\"\n [selectedUsers]=\"controls?.program_assignee?.value | refDisconnect\"\n [groupList]=\"lists?.ASSIGNEES_GROUP ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"controls?.program_assignee_group?.value | refDisconnect\"\n [disabledIds]=\"disabledAssigneeIds\"\n [fromResponsibility]=\"'Assignee'\"\n [reviewerIds]=\"selectedReviewerIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.ASSIGNEES\"\n (save)=\"listAction($event, 'ASSIGNEE')\"\n (cancel)=\"fieldDeselector('ASSIGNEE')\"\n [panelTitle]=\"panelTitleAssignee\"\n [defaultSelectedUsers]=\"\n controls?.program_default_assignee?.value | refDisconnect\n \"\n [userType]=\"'assignees'\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'DEFAULT_ASSIGNEE'\"\n [groupEnabled]=\"true\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [userlist]=\"lists?.DEFAULT_ASSIGNEES ?? []\"\n [selectedUsers]=\"controls?.program_default_assignee?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_ASSIGNEES_GROUP ?? []\"\n [FromProgram]=\"true\"\n [selectedGroups]=\"\n controls?.program_default_assignee_group?.value | refDisconnect\n \"\n [disabledIds]=\"disabledAssigneeIds\"\n [fromResponsibility]=\"'Assignee'\"\n [reviewerIds]=\"selectedReviewerIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [assignorId]=\"assignorId\"\n [userListInfo]=\"lists?.DEFAULT_ASSIGNEE\"\n (save)=\"listAction($event, 'DEFAULT_ASSIGNEE')\"\n (cancel)=\"fieldDeselector('DEFAULT_ASSIGNEE')\"\n [featureflag]=\"featureflagGroups\"\n>\n</user-group-list>\n\n<user-group-list\n *ngIf=\"activeList === 'REVIEWER' && (!featureflagGroups || featureflagGroups)\"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.REVIEWERS ?? []\"\n [selectedUsers]=\"controls?.program_reviewer?.value | refDisconnect\"\n [groupList]=\"lists?.REVIEWERS_GROUP ?? []\"\n [featureflag]=\"featureflagGroups\"\n [selectedGroups]=\"controls?.program_reviewer_group?.value | refDisconnect\"\n [disabledIds]=\"disableReviewerIds\"\n [fromResponsibility]=\"'Reviewer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [userListInfo]=\"lists?.REVIEWERS\"\n (save)=\"listAction($event, 'REVIEWER')\"\n (cancel)=\"fieldDeselector('REVIEWER')\"\n [panelTitle]=\"panelTitleReviewer\"\n [defaultSelectedUsers]=\"\n controls?.program_default_reviewer?.value | refDisconnect\n \"\n [userType]=\"'reviewers'\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_REVIEWER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_REVIEWERS ?? []\"\n [selectedUsers]=\"controls?.program_default_reviewer?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_REVIEWERS_GROUP ?? []\"\n [featureflag]=\"featureflagGroups\"\n [selectedGroups]=\"\n controls?.program_default_reviewer_group?.value | refDisconnect\n \"\n [disabledIds]=\"disableReviewerIds\"\n [fromResponsibility]=\"'Reviewer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [overseerIds]=\"selectedOverseerIds\"\n [userListInfo]=\"lists?.DEFAULT_REVIEWERS\"\n (save)=\"listAction($event, 'DEFAULT_REVIEWER')\"\n (cancel)=\"fieldDeselector('DEFAULT_REVIEWER')\"\n [panelTitle]=\"panelTitleDefaultReviewer\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"activeList === 'OVERSEER' && (!featureflagGroups || featureflagGroups)\"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.OVERSEERS ?? []\"\n [selectedUsers]=\"controls?.program_overseer?.value | refDisconnect\"\n [groupList]=\"lists?.OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"controls?.program_overseer_group?.value | refDisconnect\"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.OVERSEES\"\n (save)=\"listAction($event, 'OVERSEER')\"\n (cancel)=\"fieldDeselector('OVERSEER')\"\n [defaultSelectedUsers]=\"\n controls?.program_default_overseer?.value\n | refDisconnect\n | arrayConcat : controls?.program_default_failed_overseer?.value\n \"\n [userType]=\"'overseers'\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_OVERSEER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\"\n [selectedUsers]=\"controls?.program_default_overseer?.value | refDisconnect\"\n [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"\n controls?.program_default_overseer_group?.value | refDisconnect\n \"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\"\n (save)=\"listAction($event, 'DEFAULT_OVERSEER')\"\n (cancel)=\"fieldDeselector('DEFAULT_OVERSEER')\"\n>\n</user-group-list>\n<user-group-list\n *ngIf=\"\n activeList === 'DEFAULT_FAILED_OVERSEER' &&\n (!featureflagGroups || featureflagGroups)\n \"\n [groupEnabled]=\"featureflagGroups\"\n [singleSelect]=\"false\"\n [loading]=\"listLoadingState.USERS\"\n [FromProgram]=\"true\"\n [userlist]=\"lists?.DEFAULT_OVERSEERS ?? []\"\n [selectedUsers]=\"\n controls?.program_default_failed_overseer?.value | refDisconnect\n \"\n [groupList]=\"lists?.DEFAULT_OVERSEERS_GROUP ?? []\"\n [selectedGroups]=\"\n controls?.program_default_failed_overseer_group?.value | refDisconnect\n \"\n [featureflag]=\"featureflagGroups\"\n [disabledIds]=\"disableOverseerIds\"\n [fromResponsibility]=\"'Overseer'\"\n [assignorId]=\"assignorId\"\n [assigneeIds]=\"selectedAssigneeIds\"\n [reviewerIds]=\"selectedReviewerIds\"\n [userListInfo]=\"lists?.DEFAULT_OVERSEERS\"\n (save)=\"listAction($event, 'DEFAULT_FAILED_OVERSEER')\"\n (cancel)=\"fieldDeselector('DEFAULT_FAILED_OVERSEER')\"\n>\n</user-group-list>\n<assessment-picker\n *ngIf=\"activeList === 'ASSESSMENT'\"\n [selectedAssessment]=\"controls?.program_assessments?.value\"\n (cancelAssessment)=\"fieldDeselector('ASSESSMENT')\"\n (onAssessmentSelect)=\"listAction($event, 'ASSESSMENT')\"\n></assessment-picker>\n<app-loader-inline *ngIf=\"loader\"></app-loader-inline>\n<app-smiley-dialog-inline\n *ngIf=\"showSmiley\"\n [message]=\"smileyMessage\"\n [actionButtons]=\"actionButtons\"\n (action)=\"action($event)\"\n (closeSmiley)=\"closeSmiley($event)\"\n>\n</app-smiley-dialog-inline>\n\n<!-- Framework selector -->\n<app-framework-list\n *ngIf=\"activeList === 'FRAMEWORK'\"\n [workflowPage]=\"['FRAMEWORK']\"\n (assignControl)=\"listAction($event, 'FRAMEWORK')\"\n (closeFramework)=\"fieldDeselector('FRAMEWORK')\"\n [previousSelectedValues]=\"{ framework: controls?.framework.value }\"\n (entrustFramework)=\"entrustFramework($event)\"\n [headerText]=\"'Select a framework'\"\n></app-framework-list>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";::ng-deep .workflow-program{display:block;position:relative}::ng-deep .workflow-program .scope-label{background:#747576;border-radius:.125rem;position:relative;z-index:1}::ng-deep .workflow-program .scope-label:before{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:7rem;width:20rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label:after{background:#f1f1f1;content:\"\";position:absolute;top:.5rem;left:-2.5rem;width:2.5rem;height:1px;z-index:-1}::ng-deep .workflow-program .scope-label .required{position:absolute;top:0;right:-.625rem}::ng-deep .workflow-program .info-icon{position:relative;top:.125rem;cursor:pointer}::ng-deep .workflow-program .date-picker .picker-group{width:calc(50% - .125rem);position:relative}::ng-deep .workflow-program .date-picker .picker-group:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input{height:2.5rem;border-radius:.25rem;border:1px solid #DBDBDB;background:#fff;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;padding:0 2rem 0 .75rem;outline:none}::ng-deep .workflow-program .date-picker .picker-group input:focus,::ng-deep .workflow-program .date-picker .picker-group input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .workflow-program .date-picker .picker-group input::placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input:-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group input::-ms-input-placeholder{color:#747576;font-size:13px}::ng-deep .workflow-program .date-picker .picker-group i{height:1rem;width:1rem;position:absolute;right:.75rem;top:.625rem;pointer-events:none}::ng-deep .workflow-program .program-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;justify-content:space-between;padding:4px;position:relative;z-index:1}::ng-deep .workflow-program .program-type-field .type-item{position:relative}::ng-deep .workflow-program .program-type-field .type-item:first-of-type{width:6.25rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2){width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(6.4375rem);width:5.75rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3){width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:nth-child(3).active~.background-glider{transform:translate(12.375rem);width:8.625rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type{width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item:last-of-type.active~.background-glider{transform:translate(21.1875rem);width:5.25rem}::ng-deep .workflow-program .program-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:center}::ng-deep .workflow-program .program-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none}::ng-deep .workflow-program .program-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .workflow-program .program-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .workflow-program .program-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:6.25rem;height:32px;z-index:-1;transition:.25s ease-out}::ng-deep .workflow-program .vx-form-group .upload-files .file-item{background:#f1f1f1;border:1px solid #dbdbdb;border-radius:.25rem;padding-left:.125rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item .file-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:8.5rem}::ng-deep .workflow-program .vx-form-group .upload-files .file-item button.delete-btn{background:transparent;border-radius:0;border:none;border-left:1px solid #dbdbdb;height:1.625rem}::ng-deep .workflow-program .vx-form-group .upload-files button.file-count{background:#1e5dd3;border-radius:.125rem;border:none;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0;margin:4px 0 0 4px}::ng-deep .workflow-program .vx-form-group .upload-format .radio-group app-cs-radio{height:1.375rem}::ng-deep .workflow-program .vx-form-group .default-selected{background:#fbfbfb;border:1px solid #F1F1F1;border-radius:.25rem;margin-top:.5rem}::ng-deep .workflow-program .vx-form-group .default-selected .selected{border-radius:0;border:none;background:none}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio{border-top:1px solid #F1F1F1}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio{margin-top:0!important}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.radio{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;padding:.5rem .5rem .5rem 2.25rem;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .workflow-program .vx-form-group .default-selected .default-radio app-cs-radio label.radio-item svg{position:absolute;top:.5rem;left:.75rem}::ng-deep .workflow-program .vx-form-group .selected .custom-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-height:2.4rem}::ng-deep .workflow-program .vx-form-group .selected button.cross-btn{background:transparent;border-radius:0;border:0;padding:0}::ng-deep .workflow-program .vx-form-group .custom-input{position:relative}::ng-deep .workflow-program .vx-form-group .custom-input input{padding-right:2rem}::ng-deep .workflow-program .vx-form-group .custom-input button.cross-btn{background:transparent;border-radius:0;border:0;position:absolute;top:.875rem;right:.625rem}::ng-deep .workflow-program .vx-form-group button.add-more-btn{background:transparent;border-radius:0;border:none;padding:0}::ng-deep app-popover .wf-action-list ul.action-item .avatar-card .value{text-transform:none!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-item{background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;margin:0!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill .file-name{width:100%!important;max-width:100%!important}::ng-deep app-popover .wf-action-list ul.action-item li file-pill button.delete-btn{border:none!important;padding-right:0!important}.disabled{opacity:.4;pointer-events:none;filter:grayscale(1)}.vx-info-card{width:280px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;position:static;display:block;left:780}.vx-info-card-body{font-size:12px;padding:8px 12px;margin:0;font-weight:400;text-transform:none;color:#747576}\n", "@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::-webkit-scrollbar-track{background-color:#f1f1f1;position:absolute}::-webkit-scrollbar{width:3px;height:3px;background-color:transparent;position:absolute}::-webkit-scrollbar-thumb{border-radius:3px;background-color:#dbdbdb;position:absolute}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}button{font-family:Poppins,sans-serif}::ng-deep input.textField{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;font-size:13px;color:#747576;padding:8px 12px;position:relative;height:2.5rem;width:100%;transition:all .2s ease-in-out}::ng-deep input.textField::placeholder{font-size:13px;color:#747576}::ng-deep input.textField:hover,::ng-deep input.textField:focus{outline:none;border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectBoxEnable:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#747576;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .selectBoxEnable:hover,::ng-deep .selectBoxEnable:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectBoxEnable.disabled{background:#f1f1f1;pointer-events:none;opacity:1}::ng-deep .selectBoxEnable.withBtn:after{display:none}::ng-deep .selectBoxEnable.withBtn button.setBtn{background:transparent;border-radius:0;border:none;min-width:98px}::ng-deep .selectBoxSuccess{background:#f8f8f8;border-radius:.25rem;border:1px solid #f1f1f1;min-height:2.5rem;position:relative}::ng-deep .selectBoxSuccess .selectBoxText{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:22rem}::ng-deep .selectBoxSuccess button{background:transparent;border-radius:0;border:none}::ng-deep .selectBoxSuccess button.deleteBtn{color:#d93b41}::ng-deep .selectBoxSuccess .level-left{border-right:1px solid #f1f1f1;height:2.375rem;width:5rem}::ng-deep .selectBoxSuccess .level-left .level-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:4.5rem}::ng-deep .chipContainer{background:#fff;border-radius:.125rem;box-shadow:0 0 2px #1e5dd340;height:1.5rem}::ng-deep .chipContainer .cross{cursor:pointer;min-width:16px;width:16px;height:16px;display:flex;align-items:center;justify-content:center;background:transparent;border-radius:2px;margin-left:-4px}::ng-deep .chipContainer .cross:hover{background:#f1f1f1}::ng-deep .chipContainer .chipName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:6rem}::ng-deep .chipContainer .chipName.no-width{max-width:unset}::ng-deep .chipContainer .chipName.full-width{max-width:25rem}::ng-deep .chipContainer button.countBtn{background:#1e5dd3;border-radius:1.25rem;border:none;min-width:1.5rem;height:1rem;margin:0 0 0 .5rem;padding:0 .25rem}::ng-deep .chipContainer button.countBtn.greenBg{background:#34aa44}::ng-deep .workflowLavel{background:#f1f1f1;border-radius:.125rem;color:#042e7d;min-width:1rem;height:1rem}::ng-deep .reviewSelection{border-radius:.25rem;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep .reviewSelection:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .selectButton{background:#fff;border-radius:.25rem;border:1px solid #dbdbdb;cursor:pointer;height:2.5rem;position:relative;transition:all .2s ease-in-out}::ng-deep .selectButton:hover,::ng-deep .selectButton:focus{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep button.createNewBtn{background:transparent;border-radius:0;border:none}::ng-deep .vx-form-group{display:block;position:relative;margin-bottom:20px}::ng-deep .vx-form-group:after{content:\"\";display:block;clear:both}::ng-deep .vx-form-group .select{position:relative}::ng-deep .vx-form-group .select:after{border-bottom-style:solid;border-bottom-width:1px;border-right-style:solid;border-right-width:1px;border-color:#707070;content:\"\";display:inline-block;right:12px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .vx-form-group .select input{cursor:pointer;padding-right:30px!important}::ng-deep .vx-form-group .select .custom-input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:3px 12px;line-height:16px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;cursor:pointer}::ng-deep .vx-form-group .select .custom-input:empty:not(:focus):before{content:attr(aria-placeholder);line-height:16px;font-size:13px;width:94%;display:block;pointer-events:none;opacity:.8}::ng-deep .vx-form-group .select .custom-input:hover{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .select .custom-input.frequency-custom-input{padding-right:108px;display:flex;align-items:center}::ng-deep .vx-form-group .select+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .select+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .select+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .select~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .select~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .select.button-sec:after{display:none}::ng-deep .vx-form-group .select.button-sec button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;position:absolute;top:12px;right:8px;padding:0;margin:0}::ng-deep .vx-form-group .select+.vx-control-panel{margin-top:8px}::ng-deep .vx-form-group .select+.selected{margin-top:8px}::ng-deep .vx-form-group .select.select{margin-top:8px}::ng-deep .vx-form-group .upload-format{border:1px solid #dbdbdb;border-radius:4px;padding:8px 12px;display:block}::ng-deep .vx-form-group .upload-format span.text{line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:block;margin-bottom:6px}::ng-deep .vx-form-group .upload-format .radio-group{display:flex}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio{display:inline-block}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;margin-left:8px}::ng-deep .vx-form-group .upload-format .radio-group app-cs-radio+app-cs-radio{margin-left:12px}::ng-deep .vx-form-group .upload-format~.upload-format{margin-top:4px}::ng-deep .vx-form-group .form-tab{display:flex;justify-content:flex-start}::ng-deep .vx-form-group .form-tab button{background:transparent;color:#161b2f;font-size:11px;line-height:16px;text-transform:uppercase;cursor:pointer;padding:8px 8px 8px 0;border:none;outline:none;font-weight:500}::ng-deep .vx-form-group .form-tab button:disabled{opacity:.5;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .form-tab button+button{padding:8px}::ng-deep .vx-form-group .form-tab button.active{color:#1e5dd3}::ng-deep .vx-form-group .tab-group{border:1px solid #dbdbdb;border-radius:4px;padding:0;display:block;position:relative;transition:all .2s ease-in-out}::ng-deep .vx-form-group .tab-group:hover{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group .tab-group .upload-file{padding:16px 62px 16px 24px;display:flex;align-items:center;justify-content:space-between}::ng-deep .vx-form-group .tab-group .upload-file .image{width:80px}::ng-deep .vx-form-group .tab-group .upload-file .browse span{display:inline-block;font-size:12px;color:#747576;line-height:16px;padding:0 4px}::ng-deep .vx-form-group .tab-group .upload-file .browse .label{font-size:11px;color:#1e5dd3;line-height:16px;font-weight:600;text-transform:uppercase;margin:0;padding:0}::ng-deep .vx-form-group .tab-group .upload-file .browse .label input{opacity:0;position:absolute;margin:0;padding:0;inset:0;cursor:pointer;width:100%}::ng-deep .vx-form-group .tab-group.active{border-color:#1e5dd3}::ng-deep .vx-form-group .tab-group.uploaded{margin-top:4px}::ng-deep .vx-form-group .tab-group.uploaded .upload-file{padding:8px 0!important;text-align:center}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .image{display:none}::ng-deep .vx-form-group .tab-group.uploaded .upload-file .browse{width:100%;text-align:center}::ng-deep .vx-form-group .tab-group+label.vx-form-group{margin-top:8px;margin-bottom:4px}::ng-deep .vx-form-group .file-list{background:#fbfbfb;border:1px solid #f1f1f1;border-radius:4px;padding:12px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;position:relative}::ng-deep .vx-form-group .file-list span.file-name{color:#747576;line-height:16px;font-size:11px;font-weight:400;cursor:pointer;max-width:calc(100% - 20px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .vx-form-group .file-list .button-group{display:flex}::ng-deep .vx-form-group .file-list button{font-size:12px;color:#eb2424;cursor:pointer;display:flex;padding:0;border:none;outline:none;background:transparent}::ng-deep .vx-form-group .file-list button.edit{color:#1e5dd3}::ng-deep .vx-form-group .file-list button+button{margin-left:16px}::ng-deep .vx-form-group .file-list+.file-list{margin-top:4px}::ng-deep .vx-form-group .file-list .file-container{display:flex;justify-content:space-between;width:100%}::ng-deep .vx-form-group .file-list.policy{background:#fff}::ng-deep .vx-form-group .file-list cs-select{position:relative;margin-top:8px;width:100%}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group input.value{height:32px!important;font-size:13px!important}::ng-deep .vx-form-group .file-list cs-select .selection-wrap .input-group i{right:12px!important;top:12px!important}::ng-deep .vx-form-group .file-list app-line-loader{display:block;position:absolute;left:10px;right:10px;bottom:0}::ng-deep .vx-form-group label.vx-control-panel{color:#161b2f;font-size:11px;font-weight:500;line-height:16px;margin-bottom:8px;display:block;text-transform:uppercase;text-align:left}::ng-deep .vx-form-group label.vx-control-panel.custom-tag{font-size:10px}::ng-deep .vx-form-group label.vx-control-panel.vx-mt-8{margin-top:8px}::ng-deep .vx-form-group label.vx-control-panel span.required{color:#eb2424;font-size:14px;font-weight:500;position:relative;top:-2px}::ng-deep .vx-form-group label.vx-control-panel .button{background:transparent;border:none;display:inline-flex;float:right;color:#1e5dd3;text-transform:uppercase;font-weight:600;cursor:pointer;font-size:11px;padding:0;margin:0}::ng-deep .vx-form-group label.vx-control-panel app-cs-switch{float:right;display:block}::ng-deep .vx-form-group label.vx-control-panel i{margin-left:8px;font-size:12px;color:#1e5dd3;cursor:pointer;position:relative;top:1px}::ng-deep .vx-form-group label.vx-control-panel i.depreciation-icon{color:#e4b700;font-size:16px;position:relative;top:3px}::ng-deep .vx-form-group label.vx-control-panel .checkpoint-version{background:#f1f1f1;border-radius:2px;color:#042e7d;font-size:10px;font-weight:600;line-height:14px;margin-left:4px;padding:0 2px}::ng-deep .vx-form-group input[type=text],::ng-deep .vx-form-group .input{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;outline:none;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{color:#747576;font-weight:400}::ng-deep .vx-form-group input[type=text]:focus,::ng-deep .vx-form-group .input:focus,::ng-deep .vx-form-group input[type=text]:hover,::ng-deep .vx-form-group .input:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group input[type=text].error,::ng-deep .vx-form-group .input.error{border-color:#eb2424;color:#eb2424;margin-bottom:4px}::ng-deep .vx-form-group input[type=text].error:focus,::ng-deep .vx-form-group .input.error:focus{box-shadow:0 0 5px #d31e1e45}::ng-deep .vx-form-group input[type=text]:disabled,::ng-deep .vx-form-group .input:disabled{background:#f1f1f1;cursor:not-allowed;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group input[type=text]:disabled:hover,::ng-deep .vx-form-group .input:disabled:hover{border-color:#dbdbdb;box-shadow:none}::ng-deep .vx-form-group input[type=text] span.text,::ng-deep .vx-form-group .input span.text{font-size:13px;color:#747576;font-weight:400;display:block;width:100%}::ng-deep .vx-form-group input[type=text] .input-group,::ng-deep .vx-form-group .input .input-group{display:flex;align-items:center}::ng-deep .vx-form-group input[type=text] .input-group.counter,::ng-deep .vx-form-group .input .input-group.counter{min-width:96px;width:96px}::ng-deep .vx-form-group input[type=text] .input-group.counter button,::ng-deep .vx-form-group .input .input-group.counter button{height:24px;width:24px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;color:#747576;font-size:8px;cursor:pointer;outline:none}::ng-deep .vx-form-group input[type=text] .input-group.counter input,::ng-deep .vx-form-group .input .input-group.counter input{-webkit-appearance:textfield;-moz-appearance:textfield;height:24px;width:calc(100% - 48px);border:1px solid #f1f1f1;outline:none;padding:0 6px;text-align:center}::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-inner-spin-button,::ng-deep .vx-form-group input[type=text] .input-group.counter input::-webkit-outer-spin-button,::ng-deep .vx-form-group .input .input-group.counter input::-webkit-outer-spin-button{appearance:none;margin:0}::ng-deep .vx-form-group input[type=text]+.file-list,::ng-deep .vx-form-group .input+.file-list{margin-top:8px}::ng-deep .vx-form-group input[type=text]::placeholder,::ng-deep .vx-form-group .input::placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]:-ms-input-placeholder,::ng-deep .vx-form-group .input:-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group input[type=text]::-ms-input-placeholder,::ng-deep .vx-form-group .input::-ms-input-placeholder{font-size:13px}::ng-deep .vx-form-group .classification{height:40px;border-radius:4px;border:1px solid #dbdbdb;background:#fff;padding:8px 12px;display:flex;justify-content:space-between}::ng-deep .vx-form-group .classification label{margin:0 4px 0 0;width:100%;position:relative;z-index:1}::ng-deep .vx-form-group .classification label span{display:block;width:100%;height:24px;border:1px solid #f1f1f1;border-radius:2px;line-height:24px;font-size:10px;text-align:center;color:#747576;font-weight:500;position:relative;text-transform:uppercase}::ng-deep .vx-form-group .classification label span:before{height:2px;content:\"\";top:0;right:0;left:0;border-radius:2px;position:absolute;transition:all .2s ease-in-out}::ng-deep .vx-form-group .classification label input{opacity:0;position:absolute;inset:0;margin:0;padding:0;width:100%;height:100%;cursor:pointer;z-index:1}::ng-deep .vx-form-group .classification label input:checked+span{color:#fff}::ng-deep .vx-form-group .classification label input:checked+span:before{bottom:0;height:100%;z-index:-1}::ng-deep .vx-form-group .classification label.low span:before{background:#34aa44}::ng-deep .vx-form-group .classification label.low-med span:before{background:#f2bf19}::ng-deep .vx-form-group .classification label.med-high span:before{background:#f29619}::ng-deep .vx-form-group .classification label.high span:before{background:#eb2424}::ng-deep .vx-form-group .classification label:last-of-type{margin-right:0}::ng-deep .vx-form-group .input{display:flex;align-items:center}::ng-deep .vx-form-group .selected{height:40px;border-radius:4px;border:1px solid #f1f1f1;background:#fbfbfb;outline:none;padding:8px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%;display:flex;align-items:center;position:relative;justify-content:space-between}::ng-deep .vx-form-group .selected.first-field{z-index:2}::ng-deep .vx-form-group .selected .chip-container{display:flex;width:calc(100% - 60px);align-items:center}::ng-deep .vx-form-group .selected .chip-container.checkpoints{width:calc(100% - 120px)}::ng-deep .vx-form-group .selected .chip-container span.chip{background:#fff;border-radius:2px;box-shadow:0 0 3px #1e5dd31a;height:24px;padding:0 8px;color:#1e5dd3;font-size:12px;display:block;width:auto;max-width:100%;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:24px}::ng-deep .vx-form-group .selected .chip-container span.chip.disabled{background:#f1f1f1;box-shadow:none;color:#747576;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .selected .chip-container span.chip i{font-weight:400;margin-right:8px;cursor:pointer;font-size:10px;position:relative;top:1px}::ng-deep .vx-form-group .selected .chip-container span.chip span.step{background:#1e5dd3;border-radius:2px;color:#fff;font-size:9px;line-height:14px;padding:0 4px;font-weight:400;text-align:center;min-width:auto;margin-right:4px}::ng-deep .vx-form-group .selected .chip-container span.chip+span.chip{margin-left:4px}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question{display:flex;align-items:center;justify-content:space-between;width:100%}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.value{color:#1e5dd3;font-size:12px;font-weight:400;line-height:24px;padding:0;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 80px)}::ng-deep .vx-form-group .selected .chip-container span.chip.with-question span.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-left:8px}::ng-deep .vx-form-group .selected .chip-container span.value{color:#747576;font-size:13px;line-height:20px;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 52px);padding:0 4px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text{color:#747576;font-size:10px;font-weight:500;padding:0 8px;width:122px;line-height:14px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first{position:relative;min-width:162px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text.first:before{background:#f1f1f1;content:\"\";position:absolute;top:0;right:0;height:calc(100% + 12px);width:1px}::ng-deep .vx-form-group .selected .chip-container span.checkpoint-point-text .no{color:#1e5dd3}::ng-deep .vx-form-group .selected .chip-container.plus span.chip{max-width:calc(50% - 35px)}::ng-deep .vx-form-group .selected .chip-container.more-one span.chip{max-width:50%}::ng-deep .vx-form-group .selected .chip-container .chip-inner{background:#fff;border-radius:2px;box-shadow:0 2px 4px #1e5dd31a;line-height:24px;padding:0 4px 0 8px;display:flex;align-items:center}::ng-deep .vx-form-group .selected .chip-container .chip-inner .chip{background:transparent;border-radius:0;box-shadow:none;height:auto;line-height:unset;padding:0;color:#747576;max-width:100px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count{border-radius:20px;height:16px;padding:0 6px;border:none;font-size:9px;line-height:16px;margin-left:4px;min-width:20px}::ng-deep .vx-form-group .selected .chip-container .chip-inner button.count.user{background:#34aa44}::ng-deep .vx-form-group .selected .chip-container .chip-inner i.cross{cursor:pointer;position:relative;top:1px;font-size:8px}::ng-deep .vx-form-group .selected button.count{background:#1e5dd3;border-radius:2px;height:24px;padding:0 8px;border:1px solid #1e5dd3;cursor:pointer;outline:none;color:#fff;font:13px;font-weight:500;line-height:20px;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit{border:none;border-radius:0;background:transparent;outline:none;cursor:pointer;display:block;font-size:11px;font-weight:600;color:#1e5dd3;text-transform:uppercase;white-space:nowrap;margin-left:8px}::ng-deep .vx-form-group .selected button.edit i{font-weight:400;font-size:8px;margin-right:4px}::ng-deep .vx-form-group .selected button.close-btn{background:transparent;border:none;padding:0;margin-left:8px;font-size:10px;color:#c7381b;display:flex;align-items:center}::ng-deep .vx-form-group .selected .workflow-label{min-width:92px;padding:4px;text-align:center;margin-left:-8px;margin-right:8px;border-right:1px solid #f1f1f1}::ng-deep .vx-form-group .selected .workflow-label p{margin:0;display:block;text-transform:uppercase}::ng-deep .vx-form-group .selected .workflow-label p.title{font-size:9px;line-height:12px;color:#161b2f;font-weight:500}::ng-deep .vx-form-group .selected .workflow-label p.description{font-size:11px;line-height:16px;color:#161b2f;font-weight:600}::ng-deep .vx-form-group .selected .workflow-label+.chip-container{width:calc(100% - 148px)}::ng-deep .vx-form-group .selected+.selected{margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .selected+app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:5px;text-transform:uppercase}::ng-deep .vx-form-group .selected+app-cs-switch.who-toggle label.cs-switch span.value{color:#747576}::ng-deep .vx-form-group .selected+app-cs-radio{margin-top:8px!important}::ng-deep .vx-form-group .selected~app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;font-weight:500;color:#707070}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group .selected~app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group .selected.readOnly{pointer-events:none}::ng-deep .vx-form-group .selected span.chip{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .vx-form-group .select-list{position:absolute;background:#fff;box-shadow:0 0 5px #1e5dd345;top:100%;right:0;left:0;z-index:2}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item{width:100%;padding:12px 16px}::ng-deep .vx-form-group .select-list .vx-radio-group label.vx-radio-item:hover{background:#f8f8f8}::ng-deep .vx-form-group ::ng-deep vcomply-editor{margin-top:8px;display:block;pointer-events:auto!important;z-index:1}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block{min-height:60px;padding:11px 15px;max-height:100px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ul li{list-style:disc}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol{padding:0 0 0 10px;margin-top:0}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editable-block ol li{list-style:decimal}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools{z-index:1;border-top:1px solid #dbdbdb;transition:none;border-radius:0 0 3px 3px;position:static}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:focus-within .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover{border-color:#1e5dd3!important;box-shadow:0 3px 6px #1e5dd31a}::ng-deep .vx-form-group ::ng-deep vcomply-editor .editor-container:hover .editor-tools{border-color:#1e5dd3!important}::ng-deep .vx-form-group ::ng-deep vcomply-editor+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group app-cs-switch label.cs-switch span.value{font-size:11px;color:#747576;text-transform:uppercase}::ng-deep .vx-form-group app-cs-switch+app-cs-switch{margin-top:8px}::ng-deep .vx-form-group .date-time-picker{display:flex;justify-content:space-between;height:40px;border-radius:4px;border:1px solid #dbdbdb;padding:11px 0;background:#fff}::ng-deep .vx-form-group .date-time-picker:focus-within{border-color:#1e5dd3;box-shadow:0 0 5px #1e5dd345}::ng-deep .vx-form-group .date-time-picker .picker-group{width:50%;position:relative;display:flex;align-items:center}::ng-deep .vx-form-group .date-time-picker .picker-group:first-of-type{border-right:1px solid #dbdbdb}::ng-deep .vx-form-group .date-time-picker .picker-group:only-of-type{border:none;width:100%}::ng-deep .vx-form-group .date-time-picker .picker-group input{height:38px;background:transparent;line-height:38px;font-size:13px;color:#747576;transition:all .2s ease-in-out;width:100%;font-weight:400;border:none;padding:0 12px 0 34px;outline:none}::ng-deep .vx-form-group .date-time-picker .picker-group input:focus,::ng-deep .vx-form-group .date-time-picker .picker-group input:hover{box-shadow:none;border:none}::ng-deep .vx-form-group .date-time-picker .picker-group input::placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input:-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group input::-ms-input-placeholder{color:#999;font-size:13px}::ng-deep .vx-form-group .date-time-picker .picker-group i{display:flex;justify-content:center;align-items:center;height:16px;width:12px;position:absolute;left:12px;top:0;color:#747576;font-size:12px;pointer-events:none}::ng-deep .vx-form-group app-cs-radio.main-filed{margin-top:4px;display:block;width:100%}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item{width:100%;position:relative}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.radio{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value{font-size:11px;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0;max-width:100%;color:#707070}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item span.value i{font-size:12px;color:#1e5dd3}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item svg{position:absolute;top:8px;left:12px}::ng-deep .vx-form-group app-cs-radio.main-filed label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}::ng-deep .vx-form-group app-cs-radio.disabled{pointer-events:none;opacity:.5;filter:grayscale(1);background:#f1f1f1}::ng-deep .vx-form-group .switch-row{display:flex}::ng-deep .vx-form-group .switch-row app-cs-switch{display:block;margin-top:8px}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value{white-space:nowrap;margin-right:0;text-transform:uppercase;color:#747576!important}::ng-deep .vx-form-group .switch-row app-cs-switch label.cs-switch span.value i{display:inline-flex;font-size:11px;cursor:pointer;color:#1e5dd3;align-items:center;line-height:16px;margin:0 4px}::ng-deep .vx-form-group .switch-row app-cs-switch+app-cs-switch{margin-left:8px}::ng-deep .vx-form-group .switch-row.align-right{justify-content:flex-end}::ng-deep .vx-form-group .switch-row.align-right label.cs-switch span.value{margin-right:8px}::ng-deep .vx-form-group .risk-type-field{background:#f8f8f8;border:1px solid #dbdbdb;border-radius:4px;height:40px;display:flex;align-items:center;padding:4px;position:relative;z-index:1}::ng-deep .vx-form-group .risk-type-field .type-item{width:50%;position:relative}::ng-deep .vx-form-group .risk-type-field .type-item button{background:transparent;border:none;border-radius:0;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase;width:100%;height:32px;padding:0 12px;text-align:left}::ng-deep .vx-form-group .risk-type-field .type-item button.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item .info{color:#1e5dd3;font-size:12px;position:absolute;top:10px;right:12px;cursor:pointer}::ng-deep .vx-form-group .risk-type-field .type-item .info.disabled{background:transparent!important;color:#dbdbdb!important;filter:unset!important;opacity:unset!important;pointer-events:none;-webkit-user-select:none;user-select:none}::ng-deep .vx-form-group .risk-type-field .type-item.active button{color:#1e5dd3!important}::ng-deep .vx-form-group .risk-type-field .type-item:nth-child(2).active~.background-glider{transform:translate(100%)}::ng-deep .vx-form-group .risk-type-field .background-glider{background:#fff;border-radius:4px;box-shadow:0 1px 3px #161b2f26;position:absolute;display:flex;width:212px;height:32px;z-index:-1;transition:.25s ease-out}.left{width:36px;height:36px;margin-top:26px;margin-left:-58px;margin-right:20px;display:flex;justify-content:center;align-items:center;position:relative;z-index:10;border-radius:50%}.left.deadline-completed{margin-top:18px}.left.checked{background:transparent}.left img{width:36px}.left .checkIcon{width:32px;height:32px;background:#fff;border-radius:50%;stroke-width:4;stroke:#34aa44;stroke-miterlimit:10;box-shadow:inset 0 0 #34aa44;animation:fillCheck .4s ease-in-out .4s forwards,scale .3s ease-in-out .9s both;margin-top:0}.left .checkIcon__circle{stroke-dasharray:166;stroke-dashoffset:166;stroke-width:2;stroke-miterlimit:10;stroke:#34aa44;fill:none;animation:strokeCheck .6s cubic-bezier(.65,0,.45,1) forwards}.left .checkIcon__check{transform-origin:50% 50%;stroke-dasharray:48;stroke-dashoffset:48;animation:strokeCheck .3s cubic-bezier(.65,0,.45,1) .8s forwards}.right{width:100%}.right span.indicator{position:absolute;top:36px;left:-16px;font-size:12px;color:#f0b819;cursor:pointer}.form-group-row{display:flex;position:relative;transition:all .2s ease-in-out}.form-group-row.disabled{-webkit-user-select:none;user-select:none;pointer-events:none;filter:grayscale(1);z-index:2}.form-group-row.disabled .left{position:relative}.form-group-row.disabled .left:before{content:\"\";position:absolute;inset:2px 0 0 2px;background:#fff;opacity:.7;border-radius:50%;width:32px;height:32px}.form-group-row.disabled .right{opacity:.3}.form-group-row.active{pointer-events:none;filter:grayscale(0);z-index:2;opacity:1}.form-group-row.active .right .vx-form-group input,.form-group-row.active .right .vx-form-group .custom-input,.form-group-row.active .right .vx-form-group .selectBoxEnable{border-color:#1e5dd3;box-shadow:0 3px 6px #1e5dd31a}.form-group-row.active .right .vx-form-group .selectBoxEnable.disabled{border-color:#dbdbdb;box-shadow:none}::ng-deep .radio-group-selector app-cs-radio{margin-top:4px;display:block;width:100%}::ng-deep .radio-group-selector app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .radio-group-selector app-cs-radio label.radio-item .radio,::ng-deep .radio-group-selector app-cs-radio label.radio-item .radiomark{position:absolute!important;top:9px;left:12px}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value{font-size:11px!important;text-transform:uppercase;border:1px solid #dbdbdb;border-radius:4px;padding:8px 8px 8px 36px;width:100%;display:flex;justify-content:space-between;margin:0!important;max-width:100%!important;font-weight:500!important;color:#707070!important}::ng-deep .radio-group-selector app-cs-radio label.radio-item .value i{font-size:12px;color:#1e5dd3}::ng-deep .radio-group-selector app-cs-radio label.radio-item input:checked~span.value{background:#eefcf0;border-color:#34aa44}@keyframes strokeCheck{to{stroke-dashoffset:0}}@keyframes fillCheck{to{box-shadow:inset 0 0 0 2px #34aa44}}::ng-deep .wf-action-list{width:220px}::ng-deep .wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}::ng-deep .wf-action-list ul.action-item{display:block}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li button i{font-size:16px;margin-right:10px;color:#1e5dd3}::ng-deep .wf-action-list ul.action-item li button:hover{background:#f3f3f3}::ng-deep .wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.within-con{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar{height:24px;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}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}::ng-deep .wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image{display:block}::ng-deep .wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}::ng-deep .wf-action-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}::ng-deep .wf-action-list ul.action-item li .chip-item i{color:#747576;margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}::ng-deep .wf-action-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}::ng-deep .wf-action-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}::ng-deep .wf-action-list ul.action-item li .chip-item span.id{font-size:9px}::ng-deep .wf-action-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}::ng-deep .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}::ng-deep .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}::ng-deep .wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .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)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}p.error-message{font-size:11px;font-weight:400;color:#eb2424;line-height:16px;margin-top:8px;margin-bottom:0}.edit-loader{position:absolute;top:-3px;left:-3px;width:46px;height:46px;transform:rotate(180deg)}.circular-loader{animation:rotate 2s linear infinite;height:100%;transform-origin:center center;width:100%;position:absolute;top:0;left:0;margin:auto}.loader-path{stroke-dasharray:150,200;stroke-dashoffset:-10;animation:dash 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35}to{stroke-dasharray:89,200;stroke-dashoffset:-124}}::ng-deep .dropdown{position:fixed;background:#fff;box-shadow:0 3px 6px #00000029;padding:24px 0;z-index:9;max-height:calc(100vh - 200px);overflow:auto}::ng-deep .dropdown ul.dropdown-list{padding:0 20px;margin:0;display:block}::ng-deep .dropdown ul.dropdown-list li{list-style:none}::ng-deep .dropdown ul.dropdown-list li app-cs-radio{display:flex}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item{width:100%;position:relative}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.radio{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item span.value{padding:11px 12px 11px 32px;width:100%;border:1px solid #bcbcbc;border-radius:4px;margin-left:0;max-width:100%}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item svg{position:absolute;top:12px;left:12px}::ng-deep .dropdown ul.dropdown-list li app-cs-radio label.radio-item input[type=radio]:checked~span.value{background:#e8feeb;border-color:#34aa44}::ng-deep .dropdown ul.dropdown-list li+li{margin-top:8px}app-smiley-dialog{position:relative;z-index:10}app-smiley-dialog-inline{position:absolute;top:-3px;right:0;bottom:0;z-index:999;width:520px;height:calc(100vh + 3px)}::ng-deep .vx-overlay{position:fixed;z-index:3;inset:0}::ng-deep dp-date-picker{width:100%;position:fixed!important;z-index:14;top:-40px;left:0}::ng-deep dp-date-picker input{width:100%;border:none;opacity:0;pointer-events:none}::ng-deep dp-date-picker input:focus{outline:none}::ng-deep dp-date-picker .dp-popup{width:412px;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep dp-date-picker .dp-popup dp-day-calendar,::ng-deep dp-date-picker .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep dp-date-picker .dp-popup dp-day-calendar button,::ng-deep dp-date-picker .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep dp-date-picker .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep dp-date-picker .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep dp-date-picker .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}::ng-deep dp-date-picker .dp-open+div{position:fixed!important;inset:0!important;display:flex;justify-content:center;align-items:center;z-index:99;pointer-events:none;background:#0000004d}::ng-deep .cdk-overlay-container{z-index:2147483002!important}::ng-deep .dp-popup{z-index:999;display:flex!important;align-items:center;justify-content:center;width:100vw;height:100vh;background:#0000004d!important;box-shadow:unset!important}::ng-deep .dp-popup dp-day-calendar{width:412px!important;box-shadow:0 0 20px #161b2f26;background-color:#fff;border-radius:4px;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both}::ng-deep .dp-popup dp-day-calendar,::ng-deep .dp-popup dp-month-calendar{width:100%;pointer-events:auto}::ng-deep .dp-popup dp-day-calendar button,::ng-deep .dp-popup dp-month-calendar button{background:transparent;border:none;outline:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:14px}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-left:hover,::ng-deep .dp-popup dp-day-calendar button.dp-calendar-nav-right:hover,::ng-deep .dp-popup dp-month-calendar button.dp-calendar-nav-right:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn{display:none}::ng-deep .dp-popup dp-day-calendar button.dp-current-location-btn:before,::ng-deep .dp-popup dp-month-calendar button.dp-current-location-btn:before{content:\"\";height:10px;width:10px;border-radius:50%;background:#000;display:inline-flex}::ng-deep .dp-popup dp-day-calendar .dp-weekdays,::ng-deep .dp-popup dp-month-calendar .dp-weekdays,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week{display:flex;justify-content:space-around}::ng-deep .dp-popup dp-day-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-weekdays .dp-calendar-weekday,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week .dp-calendar-weekday,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week .dp-calendar-weekday{width:52px;border-left:none;border-bottom-color:#fff;color:#747576;font-size:11px;font-weight:600;text-transform:uppercase}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button{width:40px;height:40px;border-radius:50%;display:inline-flex;justify-content:center;align-items:center}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button:hover,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button:hover,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button:hover{background-color:#f3f3f3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-selected,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-selected,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-selected{background:#1e5dd3}::ng-deep .dp-popup dp-day-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-weekdays button.dp-current-day,::ng-deep .dp-popup dp-day-calendar .dp-calendar-week button.dp-current-day,::ng-deep .dp-popup dp-month-calendar .dp-calendar-week button.dp-current-day{border:1px solid rgba(0,0,0,.38);color:#1e5dd3;background-color:#fff}::ng-deep .dp-popup dp-day-calendar .dp-day-calendar-container,::ng-deep .dp-popup dp-month-calendar .dp-day-calendar-container{padding:20px;border-radius:2px}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container{display:flex;margin:0 0 20px;border:none}::ng-deep .dp-popup dp-day-calendar .dp-calendar-nav-container .dp-nav-header button,::ng-deep .dp-popup dp-month-calendar .dp-calendar-nav-container .dp-nav-header button{color:#000;font-size:17px;font-weight:500;margin:0 0 0 12px;padding:0}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container{width:80px;display:flex}::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-left button,::ng-deep .dp-popup dp-day-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button,::ng-deep .dp-popup dp-month-calendar .dp-nav-btns-container .dp-calendar-nav-container-right button{margin:0!important}::ng-deep .dp-popup dp-day-calendar .dp-calendar-wrapper,::ng-deep .dp-popup dp-month-calendar .dp-calendar-wrapper{border:none}@keyframes slide-bottom{0%{transform:translateY(-100px)}to{transform:translateY(0)}}::ng-deep span.file{display:block;width:20px;min-width:20px;border-radius:0 0 2px 2px;border:1px solid transparent;border-color:#747576;position:relative;margin-right:5px;border-top:none;margin-top:5px;background:#fff}::ng-deep span.file.table{margin-right:8px;width:18px;min-width:18px}::ng-deep span.file.table i{font-size:8px}::ng-deep span.file.table .format{height:8px;font-size:7px;line-height:8px;font-weight:400}::ng-deep span.file:before{position:absolute;border-radius:0;top:-4px;right:-1px;content:\"\";height:4px;width:4px;display:block;background:linear-gradient(45deg,#747576 0% 1%,#747576 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file:after{height:4px;left:-1px;right:3px;border-top:1px solid;border-right:none;border-left:1px solid;content:\"\";top:-4px;position:absolute;border-radius:2px 0 0;background:#fff}::ng-deep span.file .format{height:10px;font-size:6px;text-transform:uppercase;background:transparent;font-weight:600;text-align:center;display:block;line-height:10px}::ng-deep span.file i{font-size:10px;height:10px;display:flex;align-items:center;justify-content:center;color:#dbdbdb}::ng-deep span.file.docx{width:22px!important}::ng-deep span.file.pdf,::ng-deep span.file.template{border-color:#f31c39}::ng-deep span.file.pdf:before,::ng-deep span.file.template:before{background:linear-gradient(45deg,#f31c39 0% 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#f31c39\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.pdf:after,::ng-deep span.file.template:after{border-color:#f31c39}::ng-deep span.file.pdf .format,::ng-deep span.file.template .format{color:#f31c39}::ng-deep span.file.xlsx,::ng-deep span.file.xls,::ng-deep span.file.css,::ng-deep span.file.scss,::ng-deep span.file.less{border-color:#34aa44}::ng-deep span.file.xlsx:before,::ng-deep span.file.xls:before,::ng-deep span.file.css:before,::ng-deep span.file.scss:before,::ng-deep span.file.less:before{background:linear-gradient(45deg,#34aa44 0% 1%,#34aa44 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.xlsx:after,::ng-deep span.file.xls:after,::ng-deep span.file.css:after,::ng-deep span.file.scss:after,::ng-deep span.file.less:after{border-color:#34aa44;color:#34aa44}::ng-deep span.file.xlsx .format,::ng-deep span.file.xls .format,::ng-deep span.file.css .format,::ng-deep span.file.scss .format,::ng-deep span.file.less .format{color:#34aa44}::ng-deep span.file.doc,::ng-deep span.file.docx,::ng-deep span.file.psd{border-color:#1e5dd3}::ng-deep span.file.doc:before,::ng-deep span.file.docx:before,::ng-deep span.file.psd:before{background:linear-gradient(45deg,#1e5dd3 0% 1%,#1e5dd3 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.doc:after,::ng-deep span.file.docx:after,::ng-deep span.file.psd:after{border-color:#1e5dd3}::ng-deep span.file.doc .format,::ng-deep span.file.docx .format,::ng-deep span.file.psd .format{color:#1e5dd3}::ng-deep span.file.ppt,::ng-deep span.file.ai,::ng-deep span.file.html,::ng-deep span.file.jpg,::ng-deep span.file.jpeg,::ng-deep span.file.png{border-color:#f6882f}::ng-deep span.file.ppt:before,::ng-deep span.file.ai:before,::ng-deep span.file.html:before,::ng-deep span.file.jpg:before,::ng-deep span.file.jpeg:before,::ng-deep span.file.png:before{background:linear-gradient(45deg,#f6882f 0% 1%,#f6882f 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.ppt:after,::ng-deep span.file.ai:after,::ng-deep span.file.html:after,::ng-deep span.file.jpg:after,::ng-deep span.file.jpeg:after,::ng-deep span.file.png:after{border-color:#f6882f}::ng-deep span.file.ppt .format,::ng-deep span.file.ai .format,::ng-deep span.file.html .format,::ng-deep span.file.jpg .format,::ng-deep span.file.jpeg .format,::ng-deep span.file.png .format{color:#f6882f}::ng-deep span.file.php{border-color:#7aa6f7}::ng-deep span.file.php:before{background:linear-gradient(45deg,#7aa6f7 0% 1%,#7aa6f7 50%,#2989d800 51%,#7db9e800);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#34aa44\",endColorstr=\"#007db9e8\",GradientType=1)}::ng-deep span.file.php:after{border-color:#7aa6f7}::ng-deep span.file.php .format{color:#7aa6f7}::ng-deep ngx-material-timepicker-container .timepicker-backdrop-overlay{background-color:#0000000d!important;z-index:9999999999!important}::ng-deep ngx-material-timepicker-container .timepicker-overlay{z-index:9999999999!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker{width:232px!important;border-radius:2px!important;box-shadow:0 4px 30px #161b2f26!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header{background-color:#fff!important;padding:0!important;border-radius:2px 2px 0 0}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container{display:block!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time{color:#000!important;width:150px!important;margin:0 auto;line-height:60px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control{font-size:40px;background-color:transparent!important;color:#000!important;font-weight:600;text-align:right;caret-color:transparent;outline:none;font-family:Poppins;line-height:56px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:focus,::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control .timepicker-dial__control:hover{background-color:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time ngx-material-timepicker-dial-control:last-of-type .timepicker-dial__control{text-align:left}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__time span{padding:0 8px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period{display:flex!important;width:182px;margin:0 auto!important;background:#f1f1f1;padding:4px 10px;border-radius:20px;position:relative}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period:before{background:#f1f1f1;content:\"\";position:absolute;top:15px;left:-25px;width:calc(100% + 50px);height:2px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period{flex-direction:unset!important;position:relative;z-index:1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:after{content:\"\";position:absolute;right:-12px;top:0;border-left:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period:before{content:\"\";position:absolute;left:-18px;top:0;border-right:solid 14px #f1f1f1;border-bottom:solid 12px transparent;border-top:solid 12px transparent;z-index:-1}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button{font-size:11px;background-color:transparent;padding:0;border-radius:20px;color:#747576;font-weight:600;font-family:Poppins;width:84px;height:24px}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button.timepicker-dial__item_active{background:#fff!important;color:#1e5dd3!important;box-shadow:0 1px 2px #dbdbdb}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__header .timepicker-dial__container .timepicker-dial__period .timepicker-period button+button{margin-left:0!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face{width:200px!important;height:200px!important;padding:10px!important;background:transparent!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer{height:92px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span{color:#000}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number--outer span.active{color:#fff}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand{height:80px!important;top:calc(50% - 80px)!important;background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__number>span.active{background-color:#1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .clock-face .clock-face__clock-hand_minute:before{border:4px solid #1e5dd3!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions{display:flex!important;padding:10px 0 0!important;background:#fff!important;justify-content:space-around!important;border-radius:0 0 2px 2px!important;overflow:hidden}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div:first-child ngx-material-timepicker-button button.timepicker-button{background:#f8f8f8;color:#1e5dd3}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button{line-height:28px!important;width:100%;background:#1e5dd3;color:#fff;border-radius:0!important;height:32px!important;width:116px!important}::ng-deep ngx-material-timepicker-container ngx-material-timepicker-content .timepicker .timepicker__main-content .timepicker__actions div ngx-material-timepicker-button button.timepicker-button span{font-weight:500!important;font-size:11px;font-family:Poppins}::ng-deep vcomply-editor{display:block}::ng-deep vcomply-editor .editor-container{border-radius:4px;border:1px solid #dbdbdb;transition:all .2s ease-in-out}::ng-deep vcomply-editor .editor-container:hover,::ng-deep vcomply-editor .editor-container:focus-within{border:1px solid #1e5dd3;box-shadow:0 3px 6px #1e5dd31a}::ng-deep vcomply-editor .editor-container mention-list ul li a{font-size:16px!important}::ng-deep vcomply-editor .editor-container .editable-block{background:#fff;min-height:60px;padding:8px 12px;line-height:20px;font-size:13px;color:#747576;font-weight:400;transition:all .2s ease-in-out;width:100%}::ng-deep vcomply-editor .editor-container .editable-block:before{color:#747576!important}::ng-deep vcomply-editor .editor-container .editor-tools{border-top:1px solid #dbdbdb;border-radius:0 0 3px 3px}::ng-deep vcomply-editor .editor-container .editor-tools:hover{border-color:#1e5dd3}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button{height:22px!important;width:22px!important;padding:0 5px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button svg{height:22px;width:12px}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col button.submit{width:80px!important;line-height:22px;justify-content:center}::ng-deep vcomply-editor .editor-container .editor-tools app-editor-menu .editor-menu .col .popover.small ul.option-list li button{width:100%!important;height:auto!important}::ng-deep marx-modal .popup-modal-background{background-color:#161b2fcc!important}::ng-deep .within-box{background:#f1f1f1;border-radius:.125rem;color:#042e7d}::ng-deep .within-value{overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;word-break:break-word}.wf-tooltip{pointer-events:none;position:absolute;max-width:300px;font-size:12px;text-align:left;color:#fff;padding:8px 12px;background:#000;border-radius:2px;z-index:-222;top:0;opacity:0;white-space:break-spaces;word-break:break-word}.wf-tooltip *{color:#fff!important}.wf-tooltip:empty{display:none!important}.wf-tooltip.white{box-shadow:0 2px 8px #1c5bd159;color:#747576;background:#fff;text-align:left}.wf-tooltip.white b{color:#747576!important}.wf-tooltip.animate-top{animation:animate-top .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-right{animation:animate-right .3s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-bottom{animation:animate-bottom .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip.animate-left{animation:animate-left .5s cubic-bezier(.25,.46,.45,.94) both}.wf-tooltip-top:after{top:100%;left:50%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-bottom:after{bottom:100%;left:50%;margin-left:-5px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-left.white:after{border-color:transparent transparent transparent #f1f1f1}.wf-tooltip-left:after{top:50%;left:100%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #000000}.wf-tooltip-right.white:after{border-color:transparent #f1f1f1 transparent transparent}.wf-tooltip-right:after{top:50%;right:100%;margin-top:-5px;border-width:5px;border-color:transparent #000000 transparent transparent}.wf-tooltip-bottom-right:after{bottom:100%;left:100%;margin-left:-20px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-right.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-bottom-left:after{bottom:100%;left:0;margin-left:10px;border-width:5px;border-color:transparent transparent #000000 transparent}.wf-tooltip-bottom-left.white:after{border-color:transparent transparent #f1f1f1 transparent}.wf-tooltip-top-left:after{top:100%;left:0;margin-left:10px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-left.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip-top-right:after{top:100%;left:100%;margin-left:-5px;border-width:5px;border-color:#000000 transparent transparent transparent}.wf-tooltip-top-right.white:after{border-color:#f1f1f1 transparent transparent transparent}.wf-tooltip:after{content:\"\";position:absolute;border-style:solid}.wf-tooltip span.within{font-size:80%;display:block;width:100%}.wf-tooltip .small{display:block;font-size:10px}.wf-tooltip .within-box{background:#f1f1f1;border-radius:2px;color:#042e7d!important;font-size:9px;font-weight:500;text-transform:uppercase;padding:0 2px;margin-right:2px}.wf-tooltip-show{pointer-events:none;opacity:1;z-index:2147483001}\n"] }]
1339
+ }], ctorParameters: function () { return [{ type: i1.UntypedFormBuilder }, { type: i2.ProgramsService }, { type: i3.AuthService }, { type: i4.UiKitService }, { type: i5.IframeService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { form: [{
1300
1340
  type: ViewChild,
1301
1341
  args: ['form', { read: ElementRef }]
1302
1342
  }], datePicker: [{
@@ -1334,7 +1374,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
1334
1374
  type: Input
1335
1375
  }], orgDetails: [{
1336
1376
  type: Input
1337
- }], programDetails: [{
1338
- type: Input
1339
1377
  }] } });
1340
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFNUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUlsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXhDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU8zRSxNQUFNLE9BQU8sd0JBQXdCO0lBMkRuQyxZQUNVLEVBQXNCLEVBQ3RCLGNBQStCLEVBQy9CLFdBQXdCLEVBQ3hCLFlBQTBCLEVBQzFCLFNBQTRCLEVBQzVCLGFBQTRCO1FBTDVCLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLG1CQUFjLEdBQWQsY0FBYyxDQUFpQjtRQUMv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c0JBQTFCLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVW50eXBlZEZvcm1Db250cm9sLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRGF0ZVBpY2tlckNvbXBvbmVudCB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvZ3JhbXNTZXJ2aWNlIH0gZnJvbSAnLi4vd29ya2Zsb3ctc2VydmljZXMvcHJvZ3JhbXMuc2VydmljZSc7XG5pbXBvcnQgeyBVaUtpdFNlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy91aS1raXQuc2VydmljZSc7XG5pbXBvcnQgeyBDT05TVEFOVFMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJZnJhbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvaWZyYW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVNTRVRTIH0gZnJvbSAnLi4vY29uc3RhbnRzL2Fzc2V0cy5jb25zdGFudHMnO1xuaW1wb3J0IHsgUG9zdE1lc3NhZ2VFdmVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvaWZyYW1lLXR5cGUnO1xuaW1wb3J0IHsgUFJPR1JBTV9PQkpFQ1QgfSBmcm9tICcuLi9zaGFyZWRDb21wb25lbnRzL3Byb2dyYW0tbGlzdC9jb25zdGFudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wcm9ncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjb25zdGFudHMgPSBDT05TVEFOVFM7XG4gIHNob3dDb25maXJtYXRpb246IGFueTtcbiAgaXNBc2NlbnRBbGxvd2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmb3JtITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlbW92aW5nUm9sZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRnJhbWV3b3JrQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEFsbCBJbnB1dCBmaWVsZHNcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBhbGxvd2VkRmVhdHVyZSE6IGFueTtcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHByb2dyYW1EZXRhaWxzOiBhbnk7XG5cbiAgcGFuZWxUaXRsZURlZmF1bHRSZXZpZXdlciA9ICdTZWxlY3QgRGVmYXVsdCBSZXZpZXdlcihzKSc7XG4gIHBhbmVsVGl0bGVPd25lciA9ICdTZWxlY3QgT3duZXIocyknO1xuICBwYW5lbFRpdGxlUmV2aWV3ZXIgPSAnU2VsZWN0IFJldmlld2VyKHMpJztcbiAgcGFuZWxUaXRsZUFzc2lnbmVlID0gJ1NlbGVjdCBDb2xsYWJvcmF0b3IocyknO1xuICBwYW5lbFRpdGxlQXBwcm92ZXIgPSAnU2VsZWN0ICBBcHByb3Zlcic7XG4gIGlzQXBwcm92ZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Byb2dyYW1TY29wZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sVGlwRGF0YTogYW55ID0ge1xuICAgIG93bmVyOlxuICAgICAgJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LicsXG4gICAgcHJvZ3JhbVNjb3BlOiBgQSBQcm9ncmFtIFNjb3BlIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6XG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxuICA8bGk+VG8gcHJlLXNlbGVjdCBjZXJ0YWluIG9wdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBkZWNyZWFzaW5nIHRoZSB0aW1lIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5LjwvbGk+XG4gIDxsaT5UbyBsaW1pdCB0aGUgb3B0aW9ucyBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHksIHRoZXJlYnkgbWFraW5nIGl0IGVhc2llciB0byBjcmVhdGUgYSByZXNwb25zaWJpbGl0eSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgYW4gaW5jb3JyZWN0IG9wdGlvbiBiZWluZyBzZWxlY3RlZC48L2xpPlxuICAgIGAsXG4gICAgY29sbGFib3JhdG9yczogYENvbGxhYm9yYXRvcnMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIENvbGxhYm9yYXRvcnMgYXJlIHNlbGVjdGVkIHdoZW4gY3JlYXRpbmcgYSBQcm9ncmFtLCBvbmx5IHRob3NlIENvbGxhYm9yYXRvcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uYCxcbiAgfTtcbiAgYnVzaW5lc3NDeWNsZTogYW55O1xuICBmZWF0dXJlZmxhZ3JvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmVhdHVyZWZsYWdHcm91cHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZGlzYWJsZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRSZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRBc3NpZ25lZUlkczogYW55W10gPSBbXTtcbiAgc2VsZWN0ZWRPdmVyc2VlcklkczogYW55W10gPSBbXTtcbiAgYXNzaWdub3JJZDogbnVtYmVyW10gPSBbXTtcbiAgZGlzYWJsZVJldmlld2VySWRzOiBhbnlbXSA9IFtdO1xuICBkaXNhYmxlT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogVW50eXBlZEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcHJvZ3JhbVNlcnZpY2U6IFByb2dyYW1zU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSxcbiAgICBwcml2YXRlIHVpS2l0U2VydmljZTogVWlLaXRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG5cbiAgKSB7XG4gICAgdGhpcy5idXNpbmVzc0N5Y2xlID0gSlNPTi5wYXJzZShcbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0N5Y2xlJykgPz8gJ3t9J1xuICAgICk7XG4gIH1cbiAgcHVibGljIG5vV2hpdGVzcGFjZVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICBjb25zdCBpc1doaXRlc3BhY2UgPSAoY29udHJvbC52YWx1ZSB8fCAnJykudHJpbSgpLmxlbmd0aCA9PT0gMDtcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzV2hpdGVzcGFjZTtcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IHdoaXRlc3BhY2U6IHRydWUgfTtcbiAgfVxuICBwdWJsaWMgYmxhbmtBcnJheVZhbGlkYXRvcihjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcbiAgICBjb25zdCBpc0JsYW5rID0gY29udHJvbC52YWx1ZT8uZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlKT8ubGVuZ3RoID09PSAwO1xuICAgIGNvbnN0IGlzVmFsaWQgPSAhaXNCbGFuaztcbiAgICByZXR1cm4gaXNWYWxpZCA/IG51bGwgOiB7IGJsYW5rOiB0cnVlIH07XG4gIH1cbiAgbG9hZGVyID0gZmFsc2U7XG4gIHNob3dTbWlsZXkgPSBmYWxzZTtcbiAgYWN0aW9uQnV0dG9ucyA9IFtcbiAgICB7IGJ1dHRvblRleHQ6ICdBZGQgTW9yZSBQcm9ncmFtcycsIGNsYXNzOiAnd2hpdGUtYnRuJywgaWQ6ICdhZGRNb3JlJyB9LFxuICAgIHsgYnV0dG9uVGV4dDogJ1ZpZXcgUHJvZ3JhbScsIGNsYXNzOiAnYmx1ZS1idG4nLCBpZDogJ3ZpZXdQcm9ncmFtJyB9LFxuICBdO1xuICBzbWlsZXlNZXNzYWdlID0gYFlvdSdyZSBBbGwgU2V0IWA7XG4gIGNyZWF0ZWRQcm9ncmFtSWQgPSAnJztcbiAgaXNPYmplY3RpdmVWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gIGlzTmFtZUV4aXN0czogYm9vbGVhbiA9IGZhbHNlO1xuICAvL2Zvcm0gYm9keSBmb3IgcHJvZ3JhbSBtZXRhIGRhdGFcbiAgcHJvZ3JhbUZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICBwcm9ncmFtX3R5cGU6IFtcbiAgICAgIHRoaXMucHJvZ3JhbVR5cGUgPz8gMSxcbiAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbigwKSwgVmFsaWRhdG9ycy5tYXgoMyldLFxuICAgIF0sXG4gICAgcHJvZ3JhbV9uYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxuICAgIHByb2dyYW1fZGVzY3JpcHRpb246IFsnJ10sXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czogW1tdXSxcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogWycnXSxcbiAgICAvLyBwcm9ncmFtX29iamVjdGl2ZTogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5ub1doaXRlc3BhY2VWYWxpZGF0b3JdXSxcbiAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW1tdXSxcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiBbZmFsc2VdLFxuICAgIHByb2dyYW1fb3duZXJzOiBbW11dLFxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXG4gICAgZnJhbWV3b3JrOiBbXSxcbiAgICByYzogW1tdXSxcbiAgICBwcm9ncmFtX2Fzc2lnbmVlOiBbW11dLFxuICAgIHByb2dyYW1fYXNzaWduZWVfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogW1tdXSxcbiAgICBhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhOiBbJ0FMTCddLFxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IFtbXV0sXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwOiBbW11dLFxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnU0VRVUVOVElBTCddLFxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IFtbXV0sXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiBbW11dLFxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiBbZmFsc2VdLFxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogW2ZhbHNlXSxcbiAgICBjdXN0b21fZmllbGRzOiBbW11dLFxuICAgIHByb2dyYW1fc3RhdGU6IDAsXG4gICAgY29sbGFib3JhdG9yczogW1tdXSxcbiAgICBjb2xsYWJvcmF0b3JzX2dyb3VwOiBbW11dLFxuICB9KTtcblxuICAvL2V4Y2VwdGlvbmFsIGhhbmRsaW5nIG9mIGN1c3RvbSBmaWVsZHNcblxuICBzaG93QWRkQ3VzdG9tRmllbGQgPSB0cnVlO1xuICAvL1Byb2dyYW0gb2JqZWN0aXZlIGFuZCBkZXNjcmlwaW9uIGFyZSBleHBsZWN0bHkgZGVjbGFyZWQgYXMgdGhleSBhcmUgdXNpbmcgbWFyeCBlZGl0b3Igd2hpY2ggZG9lcyBub3Qgc3VwcG9ydHMgUmVhY3RpdmUgZm9ybXMgYmluZGluZ1xuICBlZGl0b3JEYXRhID0ge1xuICAgIHByb2dyYW1PYmplY3RpdmU6ICcnLFxuICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJycsXG4gIH07XG5cbiAgc2VsZWN0ZWRBc3Nlc3NtZW50ITogYW55O1xuXG4gIGN1cnJlbnRVc2VyKCkge1xuICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlLnRva2VuSW5mbygpO1xuICAgIHJldHVybiB7XG4gICAgICBtZW1iZXJfZW1haWw6IHVzZXI/LmVtYWlsLFxuICAgICAgbWVtYmVyX2lkOiB1c2VyPy5pZCxcbiAgICAgIG1lbWJlcl9uYW1lOiB1c2VyPy5uYW1lLFxuICAgICAgdXNlcl9yb2xlOiAnTE9HR0VEX0lOJyxcbiAgICAgIF9pZDogJycsXG4gICAgfTtcbiAgfVxuICAvL1NldHMgdGhlIHZhbHVlIG9mIGEgZm9ybSBjb250cm9sXG4gIHNldEZvcm1GaWVsZChjb250cm9sTmFtZTogc3RyaW5nLCB2YWx1ZTogYW55LCBpc0Zyb21Gb3JtPzogYm9vbGVhbikge1xuICAgIGxldCBwYXRjaDogYW55ID0ge307XG4gICAgcGF0Y2hbY29udHJvbE5hbWVdID0gdmFsdWU7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKHBhdGNoKTtcbiAgICB0aGlzLmNvbnRyb2xzW2NvbnRyb2xOYW1lXT8ubWFya0FzVG91Y2hlZCgpO1xuICAgIGlmIChcbiAgICAgIGlzRnJvbUZvcm0gJiZcbiAgICAgIGNvbnRyb2xOYW1lID09PSAncHJvZ3JhbV9vYmplY3RpdmUnICYmXG4gICAgICAhdmFsdWUucmVwbGFjZSgvJm5ic3A7L2csICcgJykudHJpbSgpXG4gICAgKVxuICAgICAgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gZmFsc2U7XG4gICAgZWxzZSB0aGlzLmlzT2JqZWN0aXZlVmFsaWQgPSB0cnVlO1xuICB9XG5cbiAgLy9SZXR1cm5zIHdlYXRoZXIgdGhlIGZvcm0gaXMgdmFsaWQgb3Igbm90XG4gIGdldCBmb3JtVmFsaWQoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9ncmFtRm9ybS52YWxpZCAmJlxuICAgICAgdGhpcy5lZGl0b3JEYXRhPy5wcm9ncmFtT2JqZWN0aXZlPy5yZXBsYWNlKC8mbmJzcDsvZywgJyAnKT8udHJpbSgpPy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY29udHJvbHM6IGFueSA9IHtcbiAgICBwcm9ncmFtX25hbWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX25hbWUnKSxcbiAgICBwcm9ncmFtX3R5cGU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3R5cGUnKSxcbiAgICBwcm9ncmFtX29iamVjdGl2ZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb2JqZWN0aXZlJyksXG4gICAgcHJvZ3JhbV9yb2xlczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcm9sZXMnKSxcbiAgICBwcm9ncmFtX293bmVyczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3duZXJzJyksXG4gICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVyc19ncm91cCcpLFxuICAgIGFsbF91c2VyX2luX3JvbGU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdhbGxfdXNlcl9pbl9yb2xlJyksXG4gICAgcHJvZ3JhbV9hcHByb3ZlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXBwcm92ZXInKSxcbiAgICBkZXNjcmlwdGlvbl9hdHRhY2htZW50OiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJ1xuICAgICksXG4gICAgb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50cydcbiAgICApLFxuICAgIHBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncGVyZm9ybWFuY2VfY2FsY3VsYXRpb24nKSxcbiAgICByZWN1cnJpbmdfZnJlcXVlbmN5OiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScpLFxuICAgIGxvY2tfc2NvcGVfY2hhbmdlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnbG9ja19zY29wZV9jaGFuZ2UnKSxcbiAgICByYzogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JjJyksXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdldmlkZW5jZV9yZXF1aXJlZCcpLFxuICAgIGZyYW1ld29yazogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2ZyYW1ld29yaycpLFxuICAgIGFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAnYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlJ1xuICAgICksXG4gICAgcHJvZ3JhbV9hc3NpZ25lZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWUnKSxcbiAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwJ1xuICAgICksXG4gICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYSdcbiAgICApLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicpLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJ1xuICAgICksXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXInKSxcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcpLFxuICAgIHByb2dyYW1fb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyJyksXG4gICAgcHJvZ3JhbV9vdmVyc2Vlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCdcbiAgICApLFxuICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwJ1xuICAgICksXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYSdcbiAgICApLFxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2Vzc21lbnRzJyksXG4gICAgY3VzdG9tX2ZpZWxkczogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2N1c3RvbV9maWVsZHMnKSxcbiAgICBpc0FwcHJvdmVyRGlzYWJsZWQ6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdpc0FwcHJvdmVyRGlzYWJsZWQnKSxcbiAgICBjb2xsYWJvcmF0b3JzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnY29sbGFib3JhdG9ycycpLFxuICAgIGNvbGxhYm9yYXRvcnNfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjb2xsYWJvcmF0b3JzX2dyb3VwJyksXG4gIH07XG5cbiAgbGlzdHM6IGFueSA9IHtcbiAgICBST0xFUzogW10sXG4gICAgT1dORVJTOiBbXSxcbiAgICBPV05FUlNfR1JPVVBTOiBbXSxcbiAgICBBUFBST1ZFUlM6IFtdLFxuICAgIFJFVklFV0VSUzogW10sXG4gICAgUkVWSUVXRVJTX0dST1VQOiBbXSxcbiAgICBBU1NJR05FRVM6IFtdLFxuICAgIEFTU0lHTkVFU19HUk9VUDogW10sXG4gICAgREVGQVVMVF9BU1NJR05FRVM6IFtdLFxuICAgIERFRkFVTFRfQVNTSUdORUVTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX1JFVklFV0VSUzogW10sXG4gICAgREVGQVVMVF9SRVZJRVdFUlNfR1JPVVA6IFtdLFxuICAgIE9WRVJTRUVSUzogW10sXG4gICAgT1ZFUlNFRVJTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX09WRVJTRUVSUzogW10sXG4gICAgREVGQVVMVF9PVkVSU0VFUlNfR1JPVVA6IFtdLFxuICAgIFJDOiBbXSxcbiAgICBOT05fUkVNT1ZBQkxFX09XTkVSUzogW10sXG4gICAgQUxMX1VTRVI6IFtdLFxuICAgIEFMTF9HUk9VUDogW10sXG4gICAgU1lTVEVNX1JPTEVfSURTOiBbXSxcbiAgfTtcblxuICBsaXN0TG9hZGluZ1N0YXRlID0ge1xuICAgIFJPTEVTOiBmYWxzZSxcbiAgICBVU0VSUzogZmFsc2UsXG4gICAgR1JPVVA6IGZhbHNlLFxuICAgIFJDOiBmYWxzZSxcbiAgfTtcbiAgc2lkZUVsZW1lbnRzID0gW1xuICAgICdST0xFJyxcbiAgICAnUkMnLFxuICAgICdPV05FUicsXG4gICAgJ0FTU0lHTkVFJyxcbiAgICAnQVBQUk9WRVInLFxuICAgICdERUZBVUxUX0FTU0lHTkVFJyxcbiAgICAnUkVWSUVXRVInLFxuICAgICdERUZBVUxUX1JFVklFV0VSJyxcbiAgICAnQVNTRVNTTUVOVCcsXG4gICAgJ0ZSQU1FV09SSycsXG4gICAgJ09WRVJTRUVSJyxcbiAgICAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInLFxuICAgICdERUZBVUxUX09WRVJTRUVSJyxcbiAgICAnT1ZFUlNFRVInLFxuICBdO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3R5cGUnLCB0aGlzLnByb2dyYW1UeXBlID8/IDEpO1xuICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Vc2VycygpO1xuICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xuICAgIHRoaXMuZmV0Y2hSb2xlcygpO1xuICAgIHRoaXMuZmV0Y2hSQygpO1xuICAgIHRoaXMuaGFuZGxlRGF0YVBvcHVsYXRpb24oKTtcbiAgICBpZiAodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcbiAgICAgIHRoaXMubGlzdEFjdGlvbih0aGlzLmFkZFRvUHJvZ3JhbURldGFpbHMsICdGUkFNRVdPUksnKTtcbiAgICB9XG4gICAgdGhpcy5lbmFibGVmZWF0dXJlKCk7XG4gICAgdGhpcy5oYW5kbGVEYXRhUG9wdWxhdGlvbigpO1xuICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucHJvZ3JhbUZvcm0udmFsaWQ7XG4gIH1cblxuICBhZGRpdGlvbmFsT3B0aW9uOiBhbnkgPSB7IC4uLkNPTlNUQU5UUy5hZGRpdGlvbmFsT3B0aW9uIH07XG4gIGFjdGl2ZUxpc3QgPSAnJztcbiAgLyoqXG4gICAqICMjIyMgRGVzY3JpcHRpb25cbiAgICogUG9wdWxhdGVzIG9wdGlvbmFsIGZpZWxkcyBzdGF0dXMgZm9yIHRoZSBvcHRpb25hbCBmaWVsZHNcbiAgICovXG4gIHBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKSB7XG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHRoaXMuYWRkaXRpb25hbE9wdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxPcHRpb25ba2V5XSA9PT0gdHJ1ZSkge1xuICAgICAgICBhY3RpdmF0ZWRPcHRpb25zLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wb3B1bGF0ZU9wdGlvbi5lbWl0KGFjdGl2YXRlZE9wdGlvbnMpO1xuICB9XG4gIGFkZE1vcmVJbmZvKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb25bZXZlbnQuY29kZV0gPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20gPSB0cnVlO1xuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uIHRvIGF1dG9tYXRlIGZvcm0gdmFsdWUgY2hhbmdlIGhhbmRuZ1xuICBmb3JtQ2hhbmdlTGlzdG5lcigpIHtcbiAgICBjb25zdCBmaWVsZHMgPSBPYmplY3Qua2V5cyh0aGlzLmNvbnRyb2xzKTtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuY29udHJvbHNbZWxlXT8udmFsdWVDaGFuZ2VzLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVGb3JtRmllbGRDaGFuZ2UoZWxlLCByZXMpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVGb3JtRmllbGRDaGFuZ2UoY29udHJvbDogc3RyaW5nLCBwYXlsb2FkPzogYW55KSB7XG4gICAgc3dpdGNoIChjb250cm9sKSB7XG4gICAgICBjYXNlICdwcm9ncmFtX3JvbGVzJzoge1xuICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWN0aXZhdGVMaXN0KGV2dDogc3RyaW5nKSB7XG4gICAgaWYgKGV2dCA9PT0gJ0ZSQU1FV09SSycgJiYgIXRoaXMuY2FuRnJhbWV3b3JrQ2hhbmdlKSByZXR1cm47XG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gZXZ0O1xuICAgIHRoaXMucGlja2VyQ2hhbmdlZC5lbWl0KHRydWUpO1xuICB9XG5cbiAgbGlzdEFjdGlvbihldnQ6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdST0xFJzoge1xuICAgICAgICB0aGlzLnNob3dDb25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICBjb25zdCBzeXN0ZW1Sb2xlcyA9IGV2dD8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhdGNoVmFsID0gdGhpcy51bmlxdWVCeVByb3AoWy4uLnN5c3RlbVJvbGVzLCAuLi5ldnRdLCAnX2lkJyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXNFcXVhbCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXMudmFsdWUuc29ydCgpLCBwYXRjaFZhbC5zb3J0KCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcGF0Y2hWYWwpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JDJzoge1xuICAgICAgICBjb25zdCByYyA9IHRoaXMuc2V0TGlzdCh0aGlzLmxpc3RzLlJDLCBldnQsICdpdGVtX2lkJyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdyYycsIHRoaXMudW5pcXVlQnlQcm9wKHJjLCAnaXRlbV9pZCcpKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1dORVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX293bmVycycsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ3VpZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX293bmVyc19ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICd1Z2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVBQUk9WRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2FwcHJvdmVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQ09MTEFCT1JBVE9SUyc6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ2NvbGxhYm9yYXRvcnMnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICd1aWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAnY29sbGFib3JhdG9yc19ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICd1Z2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRSc6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9yZXZpZXdlcicsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdFJldmlld2VyKGV2dCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py51c2VycywgJ21lbWJlcl9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5jb250cm9scy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhLnZhbHVlID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/ICdBTllPTkUnXG4gICAgICAgICAgICA6IHRoaXMuY29udHJvbHM/LnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXIoZXZ0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX09WRVJTRUVSJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgdGhpcy51bmlxdWVCeVByb3AoZXZ0Py5ncm91cHMsICdncm91cF9pZCcpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmllbGREZXNlbGVjdG9yKHR5cGUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGV2dD8uZ3JvdXBzLCAnZ3JvdXBfaWQnKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0FTU0VTU01FTlQnOiB7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2Vzc21lbnRzJywgZXZ0KTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgZXZ0KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywgZXZ0Py5kZXNjcmlwdGlvbik7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSBldnQ/LmRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XG4gICAgICAgIGxldCBtc2cgPSAnJztcbiAgICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJztcbiAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IGV2dD8uX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihyb2xlcywgJ1JPTEUnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkMnOiB7XG4gICAgICAgIGNvbnN0IHJjcyA9IHRoaXMuY29udHJvbHM/LnJjPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5pdGVtX2lkICE9PSBldnQ/Lml0ZW1faWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgcmNzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUic6IHtcbiAgICAgICAgY29uc3Qgb3duZXJzID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/LnVpZCAhPT0gZXZ0Py51aWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3Qgb3duZXJzX2dyb3VwID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIG93bmVyc19ncm91cCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVBQUk9WRVInOiB7XG4gICAgICAgIGNvbnN0IGFwcHJvdmVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9hcHByb3Zlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIGFwcHJvdmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBU1NJR05FRSc6IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRBc3NpZ25lZU9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XG4gICAgICAgIHRoaXMuc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0LCB0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0FTU0lHTkVFJzoge1xuICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCc6IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXAnLCBhc3NpZ25lZV9ncm91cCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnUkVWSUVXRVInOiB7XG4gICAgICAgIGNvbnN0IHJldmlld2VyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcicsIHJldmlld2VyKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0UmV2aWV3ZXJPblJlbW92ZShldnQsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzoge1xuICAgICAgICBjb25zdCByZXZpZXdlcl9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9SRVZJRVdFUic6IHtcbiAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfUkVWSUVXRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IHJldmlld2VyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwJywgcmV2aWV3ZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gJ0FOWU9ORSdcbiAgICAgICAgICAgIDogdGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIG92ZXJzZWVyKTtcbiAgICAgICAgdGhpcy5zZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQsIHR5cGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzoge1xuICAgICAgICBjb25zdCBvdmVyc2Vlcl9ncm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xuICAgICAgICB0aGlzLnNldERlZmF1bHRPdmVyc2Vlck9uUmVtb3ZlKGV2dCwgdHlwZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnREVGQVVMVF9PVkVSU0VFUic6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIG92ZXJzZWVyKTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyX2dyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJfZ3JvdXApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJzoge1xuICAgICAgICBjb25zdCBvdmVyc2VlciA9XG4gICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCc6IHtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJfZ3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgb3ZlcnNlZXJfZ3JvdXBcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdBU1NFU1NNRU5UJzoge1xuICAgICAgICBsZXQgY3VycmVudCA9IGNsb25lRGVlcCh0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBjdXJyZW50LmZpbmRJbmRleChcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5jYXRlZ29yeV9pZCA9PSBldnQuY2F0ZWdvcnlfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcyA9IGN1cnJlbnRbaW5kZXhdLmFzc2Vzc21lbnRJZHMuZmlsdGVyKFxuICAgICAgICAgIChhc3Nlc3NtZW50OiBhbnkpID0+IGFzc2Vzc21lbnQuaWQgIT09IGV2dC5pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoY3VycmVudFtpbmRleF0uYXNzZXNzbWVudElkcy5sZW5ndGggPT09IDApIGN1cnJlbnQuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5saXN0QWN0aW9uKGN1cnJlbnQsICdBU1NFU1NNRU5UJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdFxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChlbGUpID0+IGVsZSk7XG4gIH1cblxuICByZWZyZXNoTGlzdCgpIHtcbiAgICB0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbXTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMgPSBbXTtcbiAgICBsZXQgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM6IGFueSA9IFtdO1xuICAgIHRoaXMuYXNzaWdub3JJZCA9IFtdO1xuICAgIGxldCBzZWxlY3RlZEFzc2lnbmVlID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZTtcbiAgICBsZXQgc2VsZWN0ZWRSZXZpZXdlciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XG4gICAgbGV0IHNlbGVjdGVkT3ZlcnNlZXJMaXN0ID0gdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcbiAgICBsZXQgc2VsZWN0ZWRPdmVyc2VlckZhaWx1cmVMaXN0ID1cbiAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlO1xuICAgIGxldCBhc3NpZ25vciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICB0aGlzLmFzc2lnbm9ySWQucHVzaChhc3NpZ25vcj8ubWVtYmVyX2lkKTtcbiAgICBhc3NpZ25vckFuZEFzc2lnbmVlc0lkcy5wdXNoKGFzc2lnbm9yPy5tZW1iZXJfaWQpO1xuICAgIHNlbGVjdGVkQXNzaWduZWU/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZEFzc2lnbmVlSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICAgIGFzc2lnbm9yQW5kQXNzaWduZWVzSWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBzZWxlY3RlZFJldmlld2VyPy5mb3JFYWNoKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXZpZXdlcklkcy5wdXNoKHVzZXI/Lm1lbWJlcl9pZCk7XG4gICAgfSk7XG4gICAgc2VsZWN0ZWRPdmVyc2Vlckxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICBzZWxlY3RlZE92ZXJzZWVyRmFpbHVyZUxpc3Q/LmZvckVhY2goKHVzZXI6IGFueSkgPT4ge1xuICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzLnB1c2godXNlcj8ubWVtYmVyX2lkKTtcbiAgICB9KTtcbiAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHMpXTtcbiAgICB0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkQXNzaWduZWVJZHMpXTtcbiAgICB0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMgPSBbLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkT3ZlcnNlZXJJZHMpXTtcbiAgICBsZXQgZGlzYWJsZUFzc2lnbmVlTGlzdCA9IHRoaXMubGlzdHM/LkFMTF9VU0VSPy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICB0aGlzLnNlbGVjdGVkUmV2aWV3ZXJJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVkQXNzaWduZWVJZHMgPSB0aGlzLnJldHVybklkcyhkaXNhYmxlQXNzaWduZWVMaXN0LCAnbWVtYmVyX2lkJyk7XG4gICAgbGV0IGRpc2FibGVSZXZpZXdlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJzZWVySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpIHx8XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRBc3NpZ25lZUlkcz8uaW5jbHVkZXModXNlcj8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5kaXNhYmxlUmV2aWV3ZXJJZHMgPSB0aGlzLnJldHVybklkcyhkaXNhYmxlUmV2aWV3ZXJMaXN0LCAnbWVtYmVyX2lkJyk7XG4gICAgbGV0IGRpc2FibGVPdmVyc2Vlckxpc3QgPSB0aGlzLmxpc3RzPy5BTExfVVNFUj8uZmlsdGVyKFxuICAgICAgKHVzZXI6IGFueSkgPT5cbiAgICAgICAgYXNzaWdub3JBbmRBc3NpZ25lZXNJZHM/LmluY2x1ZGVzKHVzZXI/Lm1lbWJlcl9pZCkgfHxcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJldmlld2VySWRzPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLmRpc2FibGVPdmVyc2VlcklkcyA9IHRoaXMucmV0dXJuSWRzKGRpc2FibGVPdmVyc2Vlckxpc3QsICdtZW1iZXJfaWQnKTtcbiAgfVxuXG4gIHJlbW92ZVJvbGUoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLm9uUmVtb3ZpbmdSb2xlLmVtaXQoZXZ0KTtcbiAgfSAgXG5cbiAgc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQVNTSUdORUUnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gZGVmYXVsdEFzc2lnbmVlLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWFzc2lnbmVlPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPVxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlR3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cCA9IGRlZmF1bHRBc3NpZ25lZUdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUdyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldERlZmF1bHRSZXZpZXdlcihldnQ6IGFueSkge1xuICAgIGlmIChldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgZXZ0Py5ncm91cHMsXG4gICAgICAgICdncm91cF9pZCdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xuICAgIH1cbiAgICBjb25zdCByZXZpZXdlck1hcCA9IGV2dD8udXNlcnM/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZTtcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgcmV2aWV3ZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgY3VycmVudERlZmF1bHRSZXZpZXdlcik7XG4gIH1cblxuICBzZXREZWZhdWx0T3ZlcnNlZXIoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3Qgb3ZlcnNlZXJNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyID1cbiAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPSBjdXJyZW50RGVmYXVsdFJldmlld2VyLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICBvdmVyc2Vlck1hcC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICApO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBjdXJyZW50RGVmYXVsdFJldmlld2VyKTtcbiAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJyxcbiAgICAgIGN1cnJlbnREZWZhdWx0RmFpbFJldmlld2VyXG4gICAgKTtcbiAgfVxuXG4gIHNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xuICAgICAgICBjb25zdCByZXZpZXdlciA9IGRlZmF1bHRSZXZpZXdlci5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlckdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHJldmlld2VyR3JvdXAgPSBkZWZhdWx0UmV2aWV3ZXJHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlckdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzZXREZWZhdWx0T3ZlcnNlZXJPblJlbW92ZShldnQ6IGFueSwgdHlwZTogYW55KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdPVkVSU0VFUic6IHtcbiAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXIgPSBkZWZhdWx0T3ZlcnNlZXIuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXInLCBvdmVyc2Vlcik7XG5cbiAgICAgICAgY29uc3QgZGVmYXVsdEZhaWxPdmVyc2VlciA9XG4gICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsID0gZGVmYXVsdEZhaWxPdmVyc2Vlci5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLCBvdmVyc2VlckZhaWwpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1ZFUlNFRVJfR1JPVVAnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPVxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdE92ZXJzZWVyR3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJHcm91cCA9IGRlZmF1bHRPdmVyc2Vlckdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cCcsIG92ZXJzZWVyR3JvdXApO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlO1xuICAgICAgICBjb25zdCBvdmVyc2VlckZhaWxlZEdyb3VwID0gZGVmYXVsdE92ZXJzZWVyRmFpbGVkR3JvdXAuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCcsXG4gICAgICAgICAgb3ZlcnNlZXJGYWlsZWRHcm91cFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZpZWxkRGVzZWxlY3Rvcih0eXBlOiBhbnkpIHtcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSAnJztcbiAgICB0aGlzLnBpY2tlckNoYW5nZWQuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5tYXJrYXNUb3VjaGVkU2VsZWN0b3IodHlwZSk7XG4gIH1cblxuICBtYXJrYXNUb3VjaGVkU2VsZWN0b3IoZmllbGROYW1lOiBhbnkpIHtcbiAgICBjb25zdCB0eXBlRmllbGQ6IGFueSA9IHtcbiAgICAgIFJPTEU6ICdwcm9ncmFtX3JvbGVzJyxcbiAgICAgIEFQUFJPVkVSOiAncHJvZ3JhbV9hcHByb3ZlcicsXG4gICAgICBPV05FUjogJ3Byb2dyYW1fb3duZXJzJyxcbiAgICAgIE9XTkVSX0dST1VQOiAncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLFxuICAgIH07XG4gICAgdGhpcy5jb250cm9sc1t0eXBlRmllbGRbZmllbGROYW1lXV0/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuXG4gIGZldGNoUm9sZXMoKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRSb2xlcygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5ST0xFUyA9IHJlcztcbiAgICAgICAgY29uc3QgZGVmYXVsdFN5c3RlbVZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhXG4gICAgICAgICAgPy5maWx0ZXIoXG4gICAgICAgICAgICAoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICAgICAgICApXG4gICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWwgPSB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdrZXkgYWRtaW4nIHx8XG4gICAgICAgICAgICBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAnYWRtaW4nXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlzdHMuU1lTVEVNX1JPTEVfSURTID0gZGVmYXVsdFN5c3RlbVZhbDtcbiAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCBkZWZhdWx0VmFsKTtcbiAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICB0aGlzLmZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgfVxuICAvL2ZldGNoIHRoZSBsaXN0IG9mIHJlc3BvbnNpYmlsaXRpZXMgY2VudGVyXG4gIGZldGNoUkMoKSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRSZXNwb25zaWJpbGl0eUNlbnRlckxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuUkMgPSByZXM7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoY2FsbGVkRnJvbT86IGFueSkge1xuICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IHRoaXMuY3VycmVudFVzZXIoKTtcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5saXN0cy5ST0xFUz8uZGF0YT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgIC8vIGlmIChmZXRjaEFsbCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKFxuICAgICAgICAgIChyZXM6IGFueSkgPT4gcmVzPy5tZW1iZXJfaWQgPT09IGxvZ2dlZEluVXNlcj8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXNVc2VyRmluZCkge1xuICAgICAgICAgIHJlcz8uZGF0YT8ucHVzaChsb2dnZWRJblVzZXIpO1xuICAgICAgICAgIHJlcy50b3RhbF9pdGVtcyA9IHJlcz8udG90YWxfaXRlbXMgKyAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdHMuT1dORVJTID0gcmVzO1xuICAgICAgICBpZiAodGhpcy5jb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xuICAgICAgICB9IFxuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpIHtcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZFxuICAgICk7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHMocm9sZUlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLk9XTkVSU19HUk9VUFMgPSByZXM7XG4gICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlLm1hcChcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ3JvdXBEZXRhaWxzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKFxuICAgICAgICAgIChyb2xlSWQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJvbGVJZC5yb2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcm9sZUlkLnJvbGVzLmZvckVhY2goKHJvbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xuICAgICAgICAgICAgICAgICAgaXNTYW1lUm9sZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoaXNTYW1lUm9sZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIGdyb3VwRGV0YWlscyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGVmYXVsdE93bmVycyh1c2VyTGlzdDogYW55LCBjYWxsZWRGcm9tPzogYW55KSB7XG4gICAgY29uc3QgbG9nZ2VkSW51c2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcihcbiAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgWydBRE1JTicsICdLRVlfQURNSU4nXS5pbmNsdWRlcyhlbGU/LnVzZXJfcm9sZSkgJiZcbiAgICAgICAgZWxlPy5tZW1iZXJfaWQgIT0gbG9nZ2VkSW51c2VyPy5tZW1iZXJfaWRcbiAgICApO1xuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgIFsuLi5bbG9nZ2VkSW51c2VyXSwgLi4uZGVmYXVsdE93bmVyXSxcbiAgICAgICdtZW1iZXJfaWQnXG4gICAgKTtcbiAgICAvLyB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTKTtcbiAgICBjb25zdCBwcmVTZWxlY3RlZFVzZXJzID0gdGhpcy5nZXRQcmVTZWxlY3RlZE93bmVycyhcbiAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSxcbiAgICAgIHVzZXJMaXN0XG4gICAgKTtcbiAgICBpZiAoY2FsbGVkRnJvbSAhPT0gJ2dldFByb2dyYW1EZXRhaWxzJykge1xuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICdwcm9ncmFtX293bmVycycsXG4gICAgICAgIHByZVNlbGVjdGVkVXNlcnM/Lmxlbmd0aFxuICAgICAgICAgID8gcHJlU2VsZWN0ZWRVc2Vyc1xuICAgICAgICAgIDogdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSU1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcmVTZWxlY3RlZE93bmVycyhwcmV2aW91c1NlbGVjdGVkVXNlcnM6IGFueSwgY3VycmVudFVzZXJzOiBhbnkpIHtcbiAgICBsZXQgZmluYWxVc2VycyA9IFtdO1xuICAgIGZpbmFsVXNlcnMgPSBwcmV2aW91c1NlbGVjdGVkVXNlcnM/LmZpbHRlcigocHJldmlvdXM6IGFueSkgPT5cbiAgICAgIGN1cnJlbnRVc2Vycz8uc29tZShcbiAgICAgICAgKGN1cnJlbnQ6IGFueSkgPT4gcHJldmlvdXM/Lm1lbWJlcl9pZCA9PT0gY3VycmVudD8ubWVtYmVyX2lkXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gZmluYWxVc2VycztcbiAgfVxuXG4gIGZldGNoT3JnYW5pemF0aW9uVXNlcnMoZGF0YT86IGFueSkge1xuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IHRydWU7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbE9yZ1VzZXIoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuQUxMX1VTRVIgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTID0gcmVzO1xuXG4gICAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlZnJlc2hMaXN0KCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5saXN0TG9hZGluZ1N0YXRlLlVTRVJTID0gZmFsc2U7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hPcmdhbml6YXRpb25Hcm91cChkYXRhPzogYW55KSB7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaENvbXBsaWFuY2VHcm91cHMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuQUxMX0dST1VQID0gcmVzO1xuXG4gICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQID0gcmVzO1xuICAgICAgICBpZihkYXRhKSB7XG5cbiAgICAgICAgdGhpcy5wb3B1bGF0ZUdyb3Vwc0J5R0lEKGRhdGEsICdvd25lcnMnKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZUdyb3Vwc0J5R0lEKGRhdGEsICdjb2xsYWJvcmF0b3JzJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH0sXG4gICAgfSk7XG4gIH1cblxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcbiAgICBkZXNjcmlwdGlvbjogW10sXG4gICAgb2JqZWN0aXZlOiBbXSxcbiAgfTtcblxuICBzZWxlY3RGaWxlKHR5cGU6IGFueSwgZmlsZXM6IGFueSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModHlwZSwgZmlsZXNbaV0uZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkRmlsZXModHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xuICAgICAgZmlsZV91cmxfcGF0aDogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgbmFtZTogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxuICAgICAgb3JnX2ZpbGU6IGAke2ZpbGU/Lm5hbWV9YCxcbiAgICB9O1xuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVBdHRhY2htZW50KHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBkZXNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xuICAgICAgbGV0IG9iamVjdGl2ZSA9IHRoaXMuY29udHJvbHM/Lm9iamVjdGl2ZV9hdHRhY2htZW50cz8udmFsdWUgPz8gW107XG4gICAgICBpZiAob2JqZWN0aXZlKSB7XG4gICAgICAgIG9iamVjdGl2ZSA9IG9iamVjdGl2ZS5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsUm9sZU93bmVyKGV2dDogYW55KSB7XG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XG4gICAgbGV0IHJvbGVJZCA9IFtdO1xuICAgIGxldCB1c2VyOiBhbnk7XG4gICAgaWYgKGV2dD8udGFyZ2V0Py5jaGVja2VkKSB7XG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3Vwcykge1xuICAgICAgICB1c2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlID0gdXNlcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgICAgWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHVzZXIpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyh1c2VyKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4ucmVzPy5kYXRhXSwgJ2dyb3VwX2lkJyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIHVzZXIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxuICAgKiBAcGFyYW0gYXJyYXlcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IE1hcCgpXG4gICAgICAgIClcbiAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcbiAgfVxuXG4gIHNldExpc3QobGlzdDogYW55W10sIGlkczogYW55W10sIGtleTogc3RyaW5nKSB7XG4gICAgY29uc3QgZGF0YTogYW55ID0gW107XG4gICAgaWRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBsaXN0LmZpbmRJbmRleChcbiAgICAgICAgKGxpc3RFbGVtZW50OiBhbnkpID0+IGxpc3RFbGVtZW50W2tleV0gPT0gZWxlbWVudFxuICAgICAgKTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZGF0YS5wdXNoKGxpc3RbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHNhdmVQcm9ncmFtKCkge1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBsZXQgcGF5bG9hZCA9IHRoaXMucHJvZ3JhbVNlcnZpY2UuYnVpbGRQYXlsb2FkKHRoaXMucHJvZ3JhbUZvcm0sIHRoaXMpO1xuICAgIGlmIChwYXlsb2FkICYmIHRoaXMubW9kZSA9PT0gJ0NSRUFURScpIHtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2Uuc2F2ZVByb2dyYW0ocGF5bG9hZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFByb2dyYW1JZCA9IHJlcz8uZGF0YT8ucHJvZ3JhbT8uaWQ7XG4gICAgICAgICAgdGhpcy5wb3N0SWZyYW1lTWVzc2FnZShQb3N0TWVzc2FnZUV2ZW50LlBST0dSQU1fQ1JFQVRFRCwgcmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51aUtpdFNlcnZpY2UuaXNTbWlsZXlPbiA9IGZhbHNlO1xuICAgICAgICAgIGlmIChlcnI/LmVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnQ2F0ZWdvcnkgYWxyZWFkeSBleGlzdCcpKSB7XG4gICAgICAgICAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMucG9zdElmcmFtZU1lc3NhZ2UoUG9zdE1lc3NhZ2VFdmVudC5QUk9HUkFNX0NSRUFURUQsIGVycik7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9zdElmcmFtZU1lc3NhZ2UoUG9zdE1lc3NhZ2VFdmVudC5QUk9HUkFNX1VQREFURUQsIHJlcyk7XG4gICAgICAgICAgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkID0gcmVzPy5kYXRhPy5wcm9ncmFtPy5pZDtcblxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGVycj8uZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdDYXRlZ29yeSBhbHJlYWR5IGV4aXN0JykpIHtcbiAgICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wb3N0SWZyYW1lTWVzc2FnZShQb3N0TWVzc2FnZUV2ZW50LlBST0dSQU1fVVBEQVRFRCwgZXJyKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHBvc3RJZnJhbWVNZXNzYWdlKGV2ZW50OiBzdHJpbmcsIGRhdGE6IGFueSkge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLmlmcmFtZVNlcnZpY2UuZ2V0Q2xvc2VXZWJ2aWV3TWVzc2FnZShldmVudCwgZGF0YSk7XG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnBvc3RNZXNzYWdlKG1lc3NhZ2UpO1xuICB9XG5cbiAgYWN0aW9uKGV2ZW50OiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKGV2ZW50KSB7XG4gICAgICBjYXNlICdhZGRNb3JlJzpcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmlld1Byb2dyYW0nOlxuICAgICAgICB0aGlzLnZpZXdQcm9ncmFtcygpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2aWV3UHJvZ3JhbXMoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNjb25uZWN0UmVmcmVzaC5lbWl0KGZhbHNlKTtcbiAgICBsZXQgdXJsOiBzdHJpbmc7XG4gICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5ob3N0LnN0YXJ0c1dpdGgoJ2xvY2FsaG9zdCcpKSB7XG4gICAgICB1cmwgPSAnaHR0cDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsID0gJ2h0dHBzOi8vJyArIHdpbmRvdy5sb2NhdGlvbi5ob3N0O1xuICAgIH1cblxuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsICs9ICcvcHJvZ3JhbXMvJyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsICs9ICcvY29tcGxpYW5jZS9wcm9ncmFtcy8nICsgdGhpcy5jcmVhdGVkUHJvZ3JhbUlkO1xuICAgIH1cblxuICAgIHRoaXMuaWZyYW1lU2VydmljZS5yZWRpcmVjdElmSW5JZnJhbWUodXJsLCB0cnVlKTtcblxuICB9XG5cbiAgcmVzZXRGb3JtKCkge1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbFRvQm90dG9tID0gZmFsc2U7XG4gICAgdGhpcy5zaG93U21pbGV5ID0gZmFsc2U7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IERFRkFVTFRfVkFMVUVTID0ge1xuICAgICAgcHJvZ3JhbV90eXBlOiAxLFxuICAgICAgcHJvZ3JhbV9uYW1lOiAnJyxcbiAgICAgIHByb2dyYW1fZGVzY3JpcHRpb246ICcnLFxuICAgICAgcHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZTogJycsXG4gICAgICBwcm9ncmFtX29iamVjdGl2ZV9hdHRhY2htZW50czogW10sXG4gICAgICBwcm9ncmFtX3JvbGVzOiBbXSxcbiAgICAgIGFsbF91c2VyX2luX3JvbGU6IGZhbHNlLFxuICAgICAgcHJvZ3JhbV9vd25lcnM6IFtdLFxuICAgICAgcHJvZ3JhbV9vd25lcnNfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hcHByb3ZlcjogW10sXG4gICAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogJ1BBU1RfRVZFTlQnLFxuICAgICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogZmFsc2UsXG4gICAgICBsb2NrX3Njb3BlX2NoYW5nZTogZmFsc2UsXG4gICAgICBmcmFtZXdvcms6IFtdLFxuICAgICAgcmM6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2Fzc2lnbmVlX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZTogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IFtdLFxuICAgICAgYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYTogJ0FMTCcsXG4gICAgICBwcm9ncmFtX3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cDogW10sXG4gICAgICByZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhOiAnU0VRVUVOVElBTCcsXG4gICAgICBwcm9ncmFtX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cDogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3Nlc3NtZW50czogW10sXG4gICAgICBldmlkZW5jZV9yZXF1aXJlZDogZmFsc2UsXG4gICAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IGZhbHNlLFxuICAgICAgY3VzdG9tX2ZpZWxkczogW10sXG4gICAgICBwcm9ncmFtX3N0YXRlOiAwLFxuICAgIH07XG4gICAgdGhpcy5yZXNldEFkZGl0aW9uYWxPcHRpb24oKTtcbiAgICB0aGlzLnByb2dyYW1Gb3JtLnJlc2V0KCk7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5wYXRjaFZhbHVlKERFRkFVTFRfVkFMVUVTKTtcbiAgICB0aGlzLmVkaXRvckRhdGEgPSB7XG4gICAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcbiAgICAgIHByb2dyYW1EZXNjcmlwdGlvbjogJycsXG4gICAgfTtcbiAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gZmFsc2U7XG4gICAgdGhpcy5mZXRjaFJvbGVzKCk7XG4gICAgdGhpcy5yZWZyZXNoRm9ybS5lbWl0KHRydWUpO1xuICAgIHRoaXMuZm9ybS5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KHtcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgIGJsb2NrOiAnc3RhcnQnLFxuICAgIH0pO1xuICB9XG5cbiAgY2xvc2VTbWlsZXkoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICB0aGlzLmNsb3NlV29ya2Zsb3cuZW1pdCh7IGV2dDogJycsIGNvbmZpcm06IGZhbHNlIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwcm9ncmFtIGRldGFpbHMgd2hlbiB1c2VyIGlzIHRyeWluZyB0byBlZGl0IHByb2dyYW1cbiAgICovXG4gIGdldFByb2dyYW1EZXRhaWxzKCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2VcbiAgICAgIC5nZXRQcm9ncmFtKHRoaXMucHJvZ3JhbUlkKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgXG4gICAgICB9KTtcbiAgfVxuXG4gIHBvcHVsYXRlUHJvZ3JhbURldGFpbHMocmVzOiBhbnkpIHtcbiAgICB0aGlzLnByb2dyYW1JZCA9IHJlcz8uaWQ7XG4gICAgY29uc3QgcHJvZ3JhbVR5cGUgPSBQUk9HUkFNX09CSkVDVFtyZXM/LnR5cGUgYXMga2V5b2YgdHlwZW9mIFBST0dSQU1fT0JKRUNUXSA/PyBQUk9HUkFNX09CSkVDVC5vdGhlcnM7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIHJlcz8ubmFtZSk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHByb2dyYW1UeXBlKTtcbiAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCByZXM/LmRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbU9iamVjdGl2ZSA9IHJlcz8uZGVzY3JpcHRpb247XG4gICAgaWYgKHJlcz8ucm9sZXMgJiYgcmVzPy5yb2xlcz8ubGVuZ3RoICYmIHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSB0cnVlO1xuICAgIH1cbiAgICBcblxuICAgIGlmIChyZXMuY3VzdG9tRmllbGRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2N1c3RvbV9maWVsZHMnLCByZXMuY3VzdG9tRmllbGRzKTtcbiAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gdHJ1ZTtcbiAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgIH1cblxuICAgIHRoaXMucG9wdWxhdGVNZW1iZXJzKHJlcyk7XG4gICAgdGhpcy5wb3B1bGF0ZUdyb3VwcyhyZXMpO1xuICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoJ2dldFByb2dyYW1EZXRhaWxzJyk7XG4gICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uR3JvdXAocmVzKTtcbiAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcbiAgfVxuXG5cbiAgcG9wdWxhdGVNZW1iZXJzKHJlczogYW55KSB7XG4gICAgY29uc3QgaWRzID0gW1xuICAgICAgLi4ubmV3IFNldChbXG4gICAgICAgIC4uLihyZXM/Lm93bmVycz8uYWRtaW5zPy51c2VycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/Lm93bmVycz8ubWFuYWdlcnM/LnVzZXJzID8/IFtdKSxcbiAgICAgIF0pLFxuICAgIF07XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1lYmVyQnlVSWRzKGlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkT3duZXJzID0gcmVzLm93bmVycz8uYWRtaW5zXG4gICAgICAgIGNvbnN0IHNlbGVjdGVkQ29sbGFib3JhdG9ycyA9IHJlcy5vd25lcnM/Lm1hbmFnZXJzXG5cbiAgICAgICAgaWYgKHNlbGVjdGVkT3duZXJzPy51c2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHNlbGVjdGVkT3duZXJzPy51c2Vycy5pbmNsdWRlcyhlbGU/LnVpZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XG4gICAgICAgICAgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc2VsZWN0ZWRDb2xsYWJvcmF0b3JzPy51c2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgY29sbGFib3JhdG9ycyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICBzZWxlY3RlZENvbGxhYm9yYXRvcnM/LnVzZXJzPy5pbmNsdWRlcyhlbGU/LnVpZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdjb2xsYWJvcmF0b3JzJywgY29sbGFib3JhdG9ycyk7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNPTExBQk9SQVRPUlMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/LmRlZmF1bHRfYXNzaWduZWVfaWRzICYmIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHM/Lmxlbmd0aCkge1xuICAgICAgICAgIGNvbnN0IGFzc2lnbmVlID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XG4gIH1cblxuICBwb3B1bGF0ZUdyb3VwcyhyZXM6IGFueSkge1xuICAgIGNvbnN0IGlkcyA9IFtcbiAgICAgIC4uLm5ldyBTZXQoW1xuICAgICAgICAuLi4ocmVzPy5vd25lcnNfZ3JvdXAgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5hc3NpZ25lZV9ncm91cF9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ucmV2aWV3ZXJfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9yZXZpZXdlcl9ncm91cF9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWxfZ3JvdXBzID8/IFtdKSxcbiAgICAgIF0pLFxuICAgIF07XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5nZXRNZW1iZXJCeUdyb3VwcyhpZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcDogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gcmVzcD8uZGF0YTtcbiAgICAgICAgaWYgKCByZXM/Lm93bmVycz8udXNlckdyb3Vwcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ub3duZXJzPy51c2VyR3JvdXBzPy5pbmNsdWRlcyhlbGU/LnVnaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/Lm1hbmFnZXJzPy51c2VyR3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBjb2xsYWJvcmF0b3JzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ubWFuYWdlcnM/LnVzZXJHcm91cHM/LmluY2x1ZGVzKGVsZT8udWdpZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdjb2xsYWJvcmF0b3JzX2dyb3VwJywgY29sbGFib3JhdG9ycyk7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNPTExBQk9SQVRPUlMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQID0gY29sbGFib3JhdG9ycztcbiAgICAgICAgIFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXMgb2Ygbm93IGdyb3VwcyBoYXMgYmVlbiByZW1vdmVkIGZyb20gcmV2aWV3ZXIgYW5kIG92ZXJzZWVlciBpZiB0aGlzIGdyb3VwIGZlYXR1cmUgZ2V0cyBpbmNvcGVyYXRlZCBpblxuICAgICAgLy9mdXR1cmUgbmVlZCB0byBhZGQgZ3JvdXAgY29uZGl0aW9uIGhlcmUgdG8gcHJlcG9wdWxhdGUgdGhlIGRhdGEgd2hpbGUgZWRpdGluZy5cbiAgICB9KTtcbiAgICB0aGlzLmNoZWNrUHJvZ3JhbU9wdGlvbkZpZWxkKCk7XG4gIH1cblxuICBwb3B1bGF0ZUdyb3Vwc0J5R0lEKHByb2dyYW1EZXRhaWxzOiBhbnksIHR5cGU6IHN0cmluZykge1xuICAgIFxuICAgIHN3aXRjaCh0eXBlKSB7XG4gICAgICBjYXNlICdvd25lcnMnOlxuICAgICAgICBjb25zdCBvd25lcl91Z2lkID0gcHJvZ3JhbURldGFpbHM/Lm93bmVycz8uYWRtaW5zPy51c2VyR3JvdXBzO1xuICAgICAgICBjb25zdCBvd25lcnNHcm91cCA9IHRoaXMubGlzdHMuQVNTSUdORUVTX0dST1VQLmZpbHRlcigoZWxlOiBhbnkpID0+IG93bmVyX3VnaWQuaW5jbHVkZXMoZWxlPy51Z2lkKSk7XG4gICAgICAgIGNvbnN0IG93bmVyc0dyb3VwSWRzID0gb3duZXJzR3JvdXAubWFwKChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCk7XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzR3JvdXApO1xuICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29sbGFib3JhdG9ycyc6XG4gICAgICAgIGNvbnN0IGNvbGxhYm9yYXRvcl91Z2lkID0gcHJvZ3JhbURldGFpbHM/Lm93bmVycz8ubWFuYWdlcnM/LnVzZXJHcm91cHM7XG5cbiAgICAgICAgY29uc3QgZ3JvdXBMaXN0ID0gdGhpcy5saXN0cy5BU1NJR05FRVNfR1JPVVAuZmlsdGVyKChlbGU6IGFueSkgPT4gY29sbGFib3JhdG9yX3VnaWQuaW5jbHVkZXMoZWxlPy51Z2lkKSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdjb2xsYWJvcmF0b3JzX2dyb3VwJywgZ3JvdXBMaXN0KTtcbiAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNPTExBQk9SQVRPUlMgPSB0cnVlO1xuICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgfVxuXG4gIHJlc2V0QWRkaXRpb25hbE9wdGlvbigpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uRk9STUFURV9FVklERU5DRSA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gZmFsc2U7XG4gIH1cblxuICBjaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpOiBhbnkge1xuICAgIGNvbnN0IGNvZGUgPSBbXG4gICAgICAnUFJPR1JBTV9GUkVRVUVOQ1knLFxuICAgICAgJ1NDT1BFX0NIQU5HRVMnLFxuICAgICAgJ1JDJyxcbiAgICAgICdBU1NJR05FRVMnLFxuICAgICAgJ1JFVklFV0VSJyxcbiAgICAgICdPVkVSU0VFUicsXG4gICAgICAnQVNTRVNTTUVOVCcsXG4gICAgICAnRk9STUFURV9FVklERU5DRScsXG4gICAgICAnQ1VTVE9NX0ZJRUxEUycsXG4gICAgXTtcbiAgICBsZXQgaXNNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgY29kZS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldKSB7XG4gICAgICAgIGlzTW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5pc1Byb2dyYW1TY29wZSA9IGlzTW9yZU9wdGlvbjtcbiAgfVxuXG4gIGVuYWJsZWZlYXR1cmUoKSB7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ3JvbGUgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcm9sZV9pbXByb3ZlbWVudHMnXG4gICAgKTtcbiAgICB0aGlzLmlzQXNjZW50QWxsb3dlZCA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9jb21wbGlhbmNlX2ZyYW1ld29yaydcbiAgICApO1xuICAgIHRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9wcm9ncmFtX3NpbXBsaWZ5J1xuICAgICk7XG4gICAgdGhpcy5mZWF0dXJlZmxhZ0dyb3VwcyA9XG4gICAgICB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoJ2ZmX3Byb2dyYW1fZ3JvdXBzJyk7XG4gICAgdGhpcy50b29sVGlwRGF0YS5vd25lciA9IHRoaXMuZmVhdHVyZWZsYWdyb2xlXG4gICAgICA/ICdPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IFBvd2VyIFVzZXI8L3N0cm9uZz4gYW5kIGFsbCA8Yj5Qb3dlciBVc2VyczwvYj4gd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LidcbiAgICAgIDogJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0Lic7XG4gICAgdGhpcy5mZl9yY19saXN0aW5nID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9yY19saXN0aW5nJyk7XG4gIH1cblxuICBoYW5kbGVEYXRhUG9wdWxhdGlvbigpIHtcbiAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICB0aGlzLnBvcHVsYXRlUHJvZ3JhbURldGFpbHModGhpcy5wcm9ncmFtRGV0YWlscylcbiAgICB9XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcHJvZ3JhbVwiICNmb3JtPlxuICA8Zm9ybSBub3ZhbGlkYXRlIFtmb3JtR3JvdXBdPVwicHJvZ3JhbUZvcm1cIj5cbiAgICA8IS0tIFByb2dyYW0gQ2F0ZWdvcnkgVHlwZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fdHlwZT8udmFsdWUgPiAtMVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuaXNzdWVfdHlwZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5QUk9HUkFNIFRZUEUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPHRhYi1zZWxlY3RvclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX3R5cGVcIlxuICAgICAgICBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8uY2F0ZWdvcnlUeXBlXCJcbiAgICAgID48L3RhYi1zZWxlY3Rvcj5cbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJwcm9ncmFtX25hbWU/LmludmFsaWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYSBwcm9ncmFtIHR5cGU8L3A+IC0tPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImlzQXNjZW50QWxsb3dlZFwiXG4gICAgICBbY2hlY2tlZF09XCJmYWxzZVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RlJBTUVXT1JLPC9sYWJlbD5cbiAgICAgIDwhLS0gW3NlbGVjdERpdl09XCJ0cnVlXCIgLS0+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCcnLCAnRlJBTUVXT1JLJylcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgKGNsaWNrKT1cInJlbW92ZSgnJywgJ0ZSQU1FV09SSycpXCIgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIiBjbGFzcz1cImljb25zXCIgPiYjeGU5MGQ7PC9pPiB7e2NvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUHJvZ3JhbSBDYXRlZ29yeSBOYW1lIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9uYW1lPy52YWx1ZT8udHJpbSgpPy5sZW5ndGhcIlxuICAgICAgW2FjdGl2ZV09XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLndoYXRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+UFJPR1JBTSBOQU1FIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBJbnB1dFRyaW1cbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZ3JhbV9uYW1lXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIFByb2dyYW0gbmFtZT9cIlxuICAgICAgLz5cblxuICAgICAgPHBcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9uYW1lPy5lcnJvcnMgJiYgY29udHJvbHM/LnByb2dyYW1fbmFtZT8udG91Y2hlZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgPlxuICAgICAgICBFbnRlciBhIG5hbWUgZm9yIHRoaXMgUHJvZ3JhbS5cbiAgICAgIDwvcD5cbiAgICAgIDxwICpuZ0lmPVwiaXNOYW1lRXhpc3RzXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgIFByb2dyYW0gbmFtZSBhbHJlYWR5IGV4aXN0cy5cbiAgICAgIDwvcD5cbiAgICAgIDx2Y29tcGx5LWVkaXRvclxuICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JEYXRhLnByb2dyYW1PYmplY3RpdmVcIlxuICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgIChzZW5kU2F2ZWRGaWxlcyk9XCJzZWxlY3RGaWxlKCdPQkpFQ1RJVkUnLCAkZXZlbnQpXCJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCAkZXZlbnQsIHRydWUpXCJcbiAgICAgIFtlZGl0b3JDb25maWddPVwiY29uc3RhbnRzPy5kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgIDwvdmNvbXBseS1lZGl0b3I+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG5cblxuICAgIDwhLS0gT3duZXJzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/Lk9XTkVSU1wiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnT1dORVInXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ09XTkVSJ1wiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5jYXNlX293bmVyc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5PV05FUihTKSBcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImljb25cIlxuICAgICAgICAgICpuZ0lmPVwidG9vbFRpcERhdGEub3duZXIgIT09ICcnXCJcbiAgICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgICAobW91c2VvdmVyKT1cImRhdGFUb29sdGlwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgKG1vdXNlbGVhdmUpPVwiZGF0YVRvb2x0aXAuY2xvc2VQb3BvdmVyKClcIlxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICA+PGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MWY7PC9pPjwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtaW5mby1jYXJkXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInRvb2xUaXBEYXRhLm93bmVyXCJcbiAgICAgICAgICAgICAgaWQ9XCJPd25lckhlbHBUZXh0XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9wb3BvdmVyLWhvdmVyPlxuICAgICAgPC9sYWJlbD5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidXaG8gaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcHJvZ3JhbT8nXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWRcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnT1dORVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdPV05FUidcIlxuICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+RWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgICAgPGFwcC1wb3BvdmVyICNvd25lciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWUgfCBzbGljZSA6IDFcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyB8IGxpc3RUb0lkIDogJ21lbWJlcl9pZCdcbiAgICAgICAgICAgICAgICAgICAgICApLmluY2x1ZGVzKG93bmVyPy5tZW1iZXJfaWQpXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG93bmVyLCAnT1dORVInKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3duZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNncm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IG93bmVyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAhWydBRE1JTicsICdLRVlfQURNSU4nLCAnTE9HR0VEX0lOJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICAgICAgICBvd25lcj8udXNlcl9yb2xlXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShvd25lciwgJ09XTkVSX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IG93bmVyPy5ncm91cF9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQ29sbGFib3JhdG9ycyAgIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5DT0xMQUJPUkFUT1JTXCJcbiAgICBbY2hlY2tlZF09XCJcbiAgICAgIGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzPy52YWx1ZT8ubGVuZ3RoID4gMCB8fFxuICAgICAgY29udHJvbHM/LmNvbGxhYm9yYXRvcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgXCJcbiAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdDT0xMQUJPUkFUT1JTJ1wiXG4gICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnQ09MTEFCT1JBVE9SUydcIlxuICAgIFtpbWddPVwiXG4gICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L293bmVyLnN2ZydcbiAgICBcIlxuICA+XG4gICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICA+Q09MTEFCT1JBVE9SUyBcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICpuZ0lmPVwidG9vbFRpcERhdGEuY29sbGFib3JhdG9ycyAhPT0gJydcIlxuICAgICAgICBsaWJQb3BvdmVySG92ZXJcbiAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJkYXRhVG9vbHRpcC5jbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgID5cbiAgICAgIDxwb3BvdmVyLWhvdmVyICNkYXRhVG9vbHRpcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidngtaW5mby1jYXJkLWJvZHlcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5jb2xsYWJvcmF0b3JzXCJcbiAgICAgICAgICAgIGlkPVwiQ29sbGFib3JhdG9yc0hlbHBUZXh0XCJcbiAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9wb3BvdmVyLWhvdmVyPlxuICAgIDwvbGFiZWw+XG4gICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgW3BsYWNlaG9sZGVyXT1cIidXaG8gaXMgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIHRoaXMgcHJvZ3JhbT8nXCJcbiAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdDT0xMQUJPUkFUT1JTJylcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LmNvbGxhYm9yYXRvcnM/LnZhbHVlWzBdIHx8IGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZVswXVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgIDwhLS0gVXNlcnMgLS0+XG4gICAgICAgICAgPGRpdiBcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzPy52YWx1ZVswXVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8uY29sbGFib3JhdG9ycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgID57eyBjb250cm9scz8uY29sbGFib3JhdG9ycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwib3duZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBjb250cm9scz8uY29sbGFib3JhdG9ycz8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIFxuICAgICAgICAgICAgICBjb250cm9scz8uY29sbGFib3JhdG9yc19ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICBjb250cm9scz8uY29sbGFib3JhdG9ycz8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgPlxuICAgICAgICAgIDwhLS0gR3JvdXBzIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgIVsnQURNSU4nLCAnS0VZX0FETUlOJywgJ0xPR0dFRF9JTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICdDT0xMQUJPUkFUT1JTX0dST1VQJ1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgY29udHJvbHM/LmNvbGxhYm9yYXRvcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIiA+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvd25lci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKm5nSWY9XCIhWydBRE1JTicsJ0tFWV9BRE1JTicsJ0xPR0dFRF9JTiddLmluY2x1ZGVzKG93bmVyPy51c2VyX3JvbGUpXCIgKGNsaWNrKT1cInJlbW92ZShvd25lciwnT1dORVJfR1JPVVAnKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdDT0xMQUJPUkFUT1JTJ1wiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNvbnRyb2xzPy5hbGxfdXNlcl9pbl9yb2xlPy52YWx1ZVwiXG4gICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQ09MTEFCT1JBVE9SUycpXCJcbiAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPkVkaXRcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICA8YXBwLXBvcG92ZXIgI293bmVyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG93bmVyIG9mIGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzPy52YWx1ZSB8IHNsaWNlIDogMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8aVxuXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3duZXIsICdDT0xMQUJPUkFUT1JTJylcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IG93bmVyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICA8L3VsPlxuICAgICAgPC9kaXY+XG4gICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8YXBwLXBvcG92ZXIgI2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCBvd25lciBvZiBjb250cm9scz8uY29sbGFib3JhdG9yc19ncm91cD8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgIVsnQURNSU4nLCAnS0VZX0FETUlOJywgJ0xPR0dFRF9JTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgIG93bmVyPy51c2VyX3JvbGVcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShvd25lciwgJ0NPTExBQk9SQVRPUlNfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgb3duZXI/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgPC91bD5cbiAgICAgIDwvZGl2PlxuICAgIDwvYXBwLXBvcG92ZXI+XG4gIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUGVyZm9ybWFuY2UgQ2FsY3VsYXRlZCAtLT5cbiAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wZXJmb3JtYW5jZV9jYWxjdWxhdGlvbj8udmFsdWVcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdQRVJGT1JNQU5DRSdcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdQRVJGT1JNQU5DRSdcIlxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3BlcmZvcm1hbmNlLWNhbGMuc3ZnJ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkhPVyBTSE9VTEQgVEhFIFBFUkZPUk1BTkNFIE9GIFRISVMgUFJPR1JBTSBCRSBDQUxDVUxBVEVEPzwvbGFiZWw+XG4gICAgICAgICAgICA8dGFiLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cInBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uXCIgW2Rpc3BsYXlBcnJheV09XCJjb25zdGFudHM/LnBlcmZvcm1hbmNlQ2FsY3VsYXRpb25cIj5cbiAgICAgICAgICAgIDwvdGFiLXNlbGVjdG9yPlxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Byb2dyYW1TY29wZSAmJiBmYWxzZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjb3BlLWxhYmVsIHZ4LWZzLTEwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1iLTUgdngtbGgtNCB2eC1kLWlubGluZS1ibG9ja1wiXG4gICAgICA+XG4gICAgICAgIFBST0dSQU0gU0NPUEVcbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8aSAgY2xhc3M9XCJpY29ucyBpbmZvLWljb24gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiIFthcHBUb29sdGlwXT1cInRvb2x0aXAucHJvZ3JhbVNjb3BlXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPiAtLT5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiaWNvbiBpbmZvLWljb24gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICpuZ0lmPVwidG9vbFRpcERhdGEucHJvZ3JhbVNjb3AgIT09ICcnXCJcbiAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgIChtb3VzZW92ZXIpPVwiZGF0YVRvb2x0aXAucG9wb3ZlcigpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiZGF0YVRvb2x0aXAuY2xvc2VQb3BvdmVyKClcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgID48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuXG4gICAgICA+XG4gICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwidG9vbFRpcERhdGEucHJvZ3JhbVNjb3BlXCJcbiAgICAgICAgICAgIGlkPVwiUFNIZWxwVGV4dFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gUHJvZ3JhbSBGcmVxdWVuY3kgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUFJPR1JBTV9GUkVRVUVOQ1lcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWUpXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0ZSRVFVRU5DWSdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSRVFVRU5DWSdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5yZWN1cnJpbmdcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBpZD1cIlBEQ2hhbmdlXCJcbiAgICAgICAgPlBST0dSQU0gRFVSQVRJT05cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdQcm9ncmFtIER1cmF0aW9uIHJlZmVycyB0byB0aGUgZHVyYXRpb24gb2YgdGhlIFByb2dyYW0uIEEgUHJvZ3JhbSBjYW4gb2NjdXIgaW4gcGVycGV0dWl0eSwgb3IgaXQgY2FuIG9jY3VyIHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYnVzaW5lc3MgY3ljbGUgdGhhdCBoYXMgYmVlbiBzcGVjaWZpZWQgaW4gJyArXG4gICAgICAgICAgICBidXNpbmVzc0N5Y2xlLnNlbGVjdGVkQ3ljbGUuYnVzaW5lc3NfY3ljbGUgK1xuICAgICAgICAgICAgJy4gIEFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBQcm9ncmFtIER1cmF0aW9uLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUHJvZ3JhbUR1cmF0aW9uSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0IHZ4LW1iLTBcIj5JcyB0aGlzIHByb2dyYW0gcmVjdXJyaW5nPzwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAgcHJvZ3JhbVwiPlxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICBbbmFtZV09XCIncmVjdXJyaW5nX2ZyZXF1ZW5jeSdcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWVcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidyZWN1cnJpbmdfZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWVcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIGZhbHNlKVwiXG4gICAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBTY29wZSBDaGFuZ2VzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlNDT1BFX0NIQU5HRVNcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlKVwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdTQ09QRSdcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnU0NPUEUnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmxvY2tfc2NvcGVcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+TG9jayB0aGUgUHJvZ3JhbSBTY29wZVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0lmIHRoZSBQcm9ncmFtIFNjb3BlIGlzIGxvY2tlZCwgbmVpdGhlciB0aGUgUHJvZ3JhbSBub3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhlIFByb2dyYW0gY2FuIGJlIGVkaXRlZCBvbmNlIHRoZSBQcm9ncmFtIGJlZ2lucy4gSW4gb3JkZXIgdG8gZWRpdCB0aGUgUHJvZ3JhbSBvciB0aGUgbGlua2VkIHJlc3BvbnNpYmlsaXRpZXMsIHRoZSBQcm9ncmFtIGRldGFpbHMgd2lsbCBuZWVkIHRvIGJlIGVkaXRlZC4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIlNjb3BlQ2hhbmdlc0hlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiXG4gICAgICAgICAgPldvdWxkIHlvdSBsaWtlIHRvXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1sYWJlbC10eHQgdngtZnctNTAwXCI+bG9jayBjaGFuZ2VzPC9zcGFuPiB0byB0aGVcbiAgICAgICAgICBwcm9ncmFtIHNjb3BlPzwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgW25hbWVdPVwiJ2xvY2tfc2NvcGVfY2hhbmdlJ1wiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIHRydWUpXCJcbiAgICAgICAgICAgID5ZRVM8L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIGZhbHNlKVwiXG4gICAgICAgICAgICA+Tk88L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIEZyYW1ld29yayAtLT5cbiAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImZhbHNlXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSQU1FV09SSydcIlxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZydcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5GUkFNRVdPUks8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIGZyYW1ld29yayB0aGF0IHRoaXMgUHJvZ3JhbSByZWxhdGVzIHRvJ1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LmZyYW1ld29yaz8udmFsdWU/LmZyYW1ld29ya19uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWUsJ0ZSQU1FV09SSycpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LmZyYW1ld29yaz8udmFsdWU/LmZyYW1ld29ya19uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZnJhbWV3b3JrLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+KzU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nRlJBTUVXT1JLJ1wiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2ZyYW1ld29yayBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZSBmcmFtZXdvcmsgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPC9mb3JtLWZpZWxkPiAtLT5cblxuICAgIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJDXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdSQydcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnUkMnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5SRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmVzcG9uc2liaWxpdGllcyBDZW50ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUkNIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSQycpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgY2FuIGJlIGxpbmtlZCB0byB0aGUgcmVzcG9uc2liaWxpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnJjPy52YWx1ZSAmJiBjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCAnUkMnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucmM/LnZhbHVlWzBdPy5pdGVtX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyYy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5yYz8udmFsdWVbMF0sJ1JDJylcIj4mI3hlOTBkOzwvaT57e2NvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdSQydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkMnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3JjIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcmMgb2YgY29udHJvbHM/LnJjPy52YWx1ZSB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShyYywgJ1JDJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IHJjPy5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBc3NpZ25lZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5BU1NJR05FRVNcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJbJ0FTU0lHTkVFJywgJ0RFRkFVTFRfQVNTSUdORUUnXT8uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ0FTU0lHTkVFJywgJ0RFRkFVTFRfQVNTSUdORUUnXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmNhc2VfYXNzaWduZWVzXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgID5BU1NJR05FRVNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBc3NpZ25lZXMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIEFzc2lnbmVlcyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgQXNzaWduZWVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQXNzaWduZWVIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXSwgJ0FTU0lHTkVFJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0FTU0lHTkVFX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlX2dyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0sJ0FTU0lHTkVFJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdBU1NJR05FRV9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZV9ncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdBU1NJR05FRScpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0FTU0lHTkVFJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZT8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2Fzc2lnbmVlX2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdBU1NJR05FRV9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICAgICAgICA+REVGQVVMVCBBU1NJR05FRVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgQXNzaWduZWVzIGZvciBhbGwgbmV3IHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtLiBJZiBhIERlZmF1bHQgQXNzaWduZWVzIGlzIHNlbGVjdGVkLCB0aGUgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgdGhlIEFzc2lnbmVlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LiAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkRBSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IGFzc2lnbmVlcyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgIFwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfQVNTSUdORUUnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVmYXVsdEFzc2lnbmVlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVmYXVsdEFzc2lnbmVlR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9BU1NJR05FRScpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdEFzc2lnbmVlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsICdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZT8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyYWRpby1ncm91cC1zZWxlY3RvclwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCJcbiAgICAgID5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidhc3NpZ25lZSdcIlxuICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FMTCdcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FMTCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFMTCBTRUxFQ1RFRCBQRVJTT05TIE5FRUQgVE8gQ09NUExFVEUgVEhJU1xuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIHBlcnNvbi4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LmFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQU5ZT05FJ1wiXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJcbiAgICAgICAgICAgIHNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTllPTkUnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBBTlkgU0VMRUNURUQgUEVSU09OIENBTiBDT01QTEVURSBUSElTXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFJldmlld2VyIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUkVWSUVXRVJcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJbJ1JFVklFV0VSJywgJ0RFRkFVTFRfUkVWSUVXRVInXT8uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ1JFVklFV0VSJywgJ0RFRkFVTFRfUkVWSUVXRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJldmlld2VyXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX1JFVklFV0VSJ1wiXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5SZXZpZXdlcnNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdSZXZpZXdlcnMgYXJlIHJlcXVpcmVkIHRvIHJldmlldyByZXNwb25zaWJpbGl0aWVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gV2hlcmUgUmV2aWV3ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXZpZXdlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJSZXZpZXdlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX1JFVklFV0VSJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciByZXZpZXdpbmcgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgIFwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0sICdSRVZJRVdFUicpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdSRVZJRVdFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0sJ1JFVklFV0VSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdSRVZJRVdFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdSRVZJRVdFUidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkVWSUVXRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Jldmlld2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsICdSRVZJRVdFUicpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdSRVZJRVdFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUidcIlxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+REVGQVVMVCBSZXZpZXdlclxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgUmV2aWV3ZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgUmV2aWV3ZXIsIHRoYXQgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgYXMgdGhlIFJldmlld2VyIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiRFJIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgcmV2aWV3ZXJzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9SRVZJRVdFUidcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX1JFVklFV0VSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKHJldmlld2VyLCAnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNkZWZhdWx0UmV2aWV3ZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCAnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmFkaW8tZ3JvdXAtc2VsZWN0b3JcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiXG4gICAgICA+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ1NFUVVFTlRJQUwnKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgU0VRVUVOVElBTFxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORScgfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gT3ZlcnNlZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5PVkVSU0VFUlwiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ09WRVJTRUVSJywgJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhcbiAgICAgICAgICBhY3RpdmVMaXN0XG4gICAgICAgIClcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5vdmVyc2lnaHRcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgWydERUZBVUxUX09WRVJTRUVSJywgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcbiAgICAgICAgXCJcbiAgICAgICAgPk92ZXJzaWdodHNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdPdmVyc2lnaHRzIHJlY2VpdmUgdXBkYXRlcyB3aGVuIGEgcmVzcG9uc2liaWxpdHkgaXMgY29tcGxldGVkLCBjb21wbGV0ZWQgd2l0aCBkZWxheSBvciBub3QgY29tcGxldGVkLiBXaGVyZSBPdmVyc2lnaHRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBPdmVyc2lnaHRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwib3ZlcnNlZXJIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBbJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgICBcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1dobyBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ09WRVJTRUVSJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwgJ09WRVJTRUVSJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdPVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0sJ09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aD4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPVkVSU0VFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdPVkVSU0VFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bmctY29udGFpbmVyIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnT1ZFUlNFRVInXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlsnT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICAgICAgPkRFRkFVTFQgT3ZlcnNpZ2h0XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBEZWZhdWx0IE92ZXJzaWdodCBmb3IgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIFdoZXJlIGEgdXNlciBoYXMgYmVlbiBzcGVjaWZpZWQgYXMgYSBEZWZhdWx0IE92ZXJzaWdodCwgdGhhdCB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCBhcyB0aGUgT3ZlcnNpZ2h0IHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICBpZD1cIkRPSGVscFRleHRcIlxuICAgICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgICAgPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgWydPVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3ZlcnNlZXJzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9PVkVSU0VFUidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdLCdERUZBVUxUX09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4xXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9PVkVSU0VFUidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzRGVmYXVsdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnREVGQVVMVF9PVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0R3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj4gPC9sYWJlbD5cbiAgICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICAgIGNsYXNzPVwidngtbXQtMlwiXG4gICAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgICBbbGluZV09XCIzXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiWydPVkVSU0VFUicsICdERUZBVUxUX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3ZlcnNlZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIG5vdCBjb21wbGV0ZWQgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0RmFpbC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRGYWlsR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgID8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRGYWlsR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzRGVmYXVsdEZhaWwgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJcbiAgICAgICAgICAgICAgICAgICAgPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyRGVmYXVsdEZhaWxHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cFxuICAgICAgICAgICAgICAgICAgICA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQXNzZXNzbWVudCAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFTU0VTU01FTlRcIlxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnQVNTRVNTTUVOVCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0FTU0VTU01FTlQnXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuYXNzZXNzbWVudHNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+QVNTRVNTTUVOVFNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBc3Nlc3NtZW50cyBhcmUgYSBkaWdpdGFsIGZvcm0gdGhhdCBhcmUgY3JlYXRlZCBpbiDigJxBc3Nlc3NtZW504oCdIHdpdGhpbiB0aGUgQ29tcGxpYW5jZSBNb2R1bGUuIFdoZXJlIEFzc2Vzc21lbnRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBBc3Nlc3NtZW50cyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkFzc2Vzc21lbnRIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hpY2ggYXNzZXNzbWVudHMgY2FuIGJlIGxpbmtlZCB0byB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcbiAgICAgICAgICAgICAgICB8IGFzc2Vzc21lbnRSZXNvbHZlciBhcyBhc3Nlc3NtZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudHNbMF0sICdBU1NFU1NNRU5UJylcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgYXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtX2Fzc2Vzc21lbnRzLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50cz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBhc3Nlc3NtZW50cz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUgfCBhc3Nlc3NtZW50UmVzb2x2ZXIpIGFzIGFzc2Vzc21lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudHNbMF0sJ0FTU0VTU01FTlQnKVwiPiYjeGU5MGQ7PC9pPnt7YXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZX19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFzc2Vzc21lbnRzPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW1fYXNzZXNzbWVudHMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3thc3Nlc3NtZW50cz8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FTU0VTU01FTlQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Byb2dyYW1fYXNzZXNzbWVudHMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzZXNzbWVudCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfCBhc3Nlc3NtZW50UmVzb2x2ZXJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudCwgJ0FTU0VTU01FTlQnKVwiIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRm9ybWF0ICYgRXZpZGVuY2UgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5GT1JNQVRFX0VWSURFTkNFXCJcbiAgICAgIFtjaGVja2VkXT1cIlt0cnVlLCBmYWxzZV0uaW5jbHVkZXMoY29udHJvbHM/LmV2aWRlbmNlX3JlcXVpcmVkPy52YWx1ZSlcIlxuICAgICAgW2FjdGl2ZV09XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmZvcm1hdF9ldmlkZW5jZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5FdmlkZW5jZVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIGEgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSByZXF1aXJlZCBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uIEFuIEFzc2lnbm9yLCBiZWluZyB0aGUgcGVyc29uIHdobyBjcmVhdGVzIHRoZSByZXNwb25zaWJpbGl0eSwgY2FuIG92ZXJyaWRlIHRoaXMgb3B0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkV2aWRlbmNlSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICA+RG8gYWxsIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgcHJvZ3JhbSByZXF1aXJlIGV2aWRlbmNlPzwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIHRydWUpXCJcbiAgICAgICAgICAgID5ZRVM8L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIGZhbHNlKVwiXG4gICAgICAgICAgICA+Tk88L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMlwiPkFsbG93IGFueSBmaWxlIHRvIGJlIG1hcmtlZCBhc1xuICAgICAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgICAgICAgZXZpZGVuY2U8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnLCRldmVudD8udGFyZ2V0Py5jaGVja2VkKVwiPjwvc3dpdGNoPlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQ3VzdG9tIEZpZWxkIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQ1VTVE9NX0ZJRUxEU1wiXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uY3VzdG9tX2ZpZWxkcz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY3VzdG9tX2ZpZWxkc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5DVVNUT00gRklFTERcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdXaGVyZSBhIGN1c3RvbSBmaWVsZCBpcyBzcGVjaWZpZWQsIGFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbSB3aWxsIGNvbnRhaW4gdGhhdCBjdXN0b20gZmllbGQuIEN1c3RvbSBmaWVsZHMgZW5hYmxlIHRoZSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgbWV0YSBkYXRhLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQ0ZIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8Y3VzdG9tLWZpZWxkIGZvcm1Db250cm9sTmFtZT1cImN1c3RvbV9maWVsZHNcIj48L2N1c3RvbS1maWVsZD5cbiAgICA8L2Zvcm0tZmllbGQ+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG5cbjwhLS0gcmVuZGVyIHVzZXJsaXN0IHdpdGggZ3JvdXAgLS0+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ09XTkVSJ1wiXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW3VzZXJsaXN0XT1cImxpc3RzPy5PV05FUlM/LmRhdGEgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIChmZXRjaFVzZXJEYXRhKT1cImZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKGZhbHNlLCAkZXZlbnQpXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uT1dORVJTXCJcbiAgW2dyb3VwTGlzdEluZm9dPVwibGlzdHM/Lk9XTkVSU19HUk9VUFNcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5PV05FUlNfR1JPVVBTPy5kYXRhID8/IFtdXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdPV05FUicpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ09XTkVSJylcIlxuICBbcGFuZWxUaXRsZV09XCJwYW5lbFRpdGxlT3duZXJcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuPjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdDT0xMQUJPUkFUT1JTJ1wiXG4gIFtncm91cEVuYWJsZWRdPVwidHJ1ZVwiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW3VzZXJsaXN0XT1cImxpc3RzPy5PV05FUlM/LmRhdGEgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8uY29sbGFib3JhdG9ycz8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uT1dORVJTX0dST1VQUyA/PyBbXVwiXG4gIFtGcm9tUHJvZ3JhbV09XCJ0cnVlXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cImNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uQVNTSUdORUVTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdDT0xMQUJPUkFUT1JTJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignQ09MTEFCT1JBVE9SUycpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUFzc2lnbmVlXCJcbiAgW2RlZmF1bHRTZWxlY3RlZFVzZXJzXT1cIlxuICAgIGNvbnRyb2xzPy5jb2xsYWJvcmF0b3JzPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW3VzZXJUeXBlXT1cIidhc3NpZ25lZXMnXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcbiAgKm5nSWY9XCJzaG93U21pbGV5XCJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXG4gIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxuICAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPlxuPC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG5cbjwhLS0gRnJhbWV3b3JrIHNlbGVjdG9yICAtLT5cbjxhcHAtZnJhbWV3b3JrLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiXG4gIFt3b3JrZmxvd1BhZ2VdPVwiWydGUkFNRVdPUksnXVwiXG4gIChhc3NpZ25Db250cm9sKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnRlJBTUVXT1JLJylcIlxuICAoY2xvc2VGcmFtZXdvcmspPVwiZmllbGREZXNlbGVjdG9yKCdGUkFNRVdPUksnKVwiXG4gIFtwcmV2aW91c1NlbGVjdGVkVmFsdWVzXT1cInsgZnJhbWV3b3JrOiBjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlIH1cIlxuICAoZW50cnVzdEZyYW1ld29yayk9XCJlbnRydXN0RnJhbWV3b3JrKCRldmVudClcIlxuICBbaGVhZGVyVGV4dF09XCInU2VsZWN0IGEgZnJhbWV3b3JrJ1wiXG4+PC9hcHAtZnJhbWV3b3JrLWxpc3Q+Il19
1378
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcHJvZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi93b3JrZmxvdy1wcm9ncmFtL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvd29ya2Zsb3ctcHJvZ3JhbS93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBR0wsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFhLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUU1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWxELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPdkQsTUFBTSxPQUFPLHdCQUF3QjtJQXlEbkMsWUFDVSxFQUFzQixFQUN0QixjQUErQixFQUMvQixXQUF3QixFQUN4QixZQUEwQixFQUMxQixhQUE0QixFQUM1QixTQUE0QjtRQUw1QixPQUFFLEdBQUYsRUFBRSxDQUFvQjtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBaUI7UUFDL0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsY0FBUyxHQUFU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QkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVW50eXBlZEZvcm1CdWlsZGVyLFxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gIFZhbGlkYXRvcnMsXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50IH0gZnJvbSAnbmcyLWRhdGUtcGlja2VyJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBQcm9ncmFtc1NlcnZpY2UgfSBmcm9tICcuLi93b3JrZmxvdy1zZXJ2aWNlcy9wcm9ncmFtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFVpS2l0U2VydmljZSB9IGZyb20gJy4uL3dvcmtmbG93LXNlcnZpY2VzL3VpLWtpdC5zZXJ2aWNlJztcbmltcG9ydCB7IENPTlNUQU5UUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IElmcmFtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9pZnJhbWUuc2VydmljZSc7XG5pbXBvcnQgeyBBU1NFVFMgfSBmcm9tICcuLi9jb25zdGFudHMvYXNzZXRzLmNvbnN0YW50cyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC13b3JrZmxvdy1wcm9ncmFtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtmbG93LXByb2dyYW0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrZmxvdy1wcm9ncmFtLmNvbXBvbmVudC5sZXNzJywgJy4uL2Zvcm1zLmxlc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya2Zsb3dQcm9ncmFtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQVNTRVRTID0gQVNTRVRTO1xuICBjb25zdGFudHMgPSBDT05TVEFOVFM7XG4gIHNob3dDb25maXJtYXRpb246IGFueTtcbiAgaXNBc2NlbnRBbGxvd2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGZmX3JjX2xpc3Rpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZm9ybScsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBmb3JtITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXIhOiBEYXRlUGlja2VyQ29tcG9uZW50O1xuICBAT3V0cHV0KCkgcGlja2VyQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHBvcHVsYXRlT3B0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VXb3JrZmxvdyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHNob3dDb25maXJtYXRpb25BbGVydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc2Nvbm5lY3RSZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcmVmcmVzaEZvcm0gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoaWRlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvblJlbW92aW5nUm9sZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBkaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHNjcm9sbFRvQm90dG9tITogYm9vbGVhbjtcbiAgQElucHV0KCkgY2FuRnJhbWV3b3JrQ2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJvZ3JhbVNpbXBsaWZ5RmxhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEFsbCBJbnB1dCBmaWVsZHNcbiAgQElucHV0KCkgbW9kZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1JZDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHByb2dyYW1UeXBlOiBudW1iZXIgPSAxO1xuICBASW5wdXQoKSBhbGxvd2VkRmVhdHVyZSE6IGFueTtcbiAgQElucHV0KCkgYWRkVG9Qcm9ncmFtRGV0YWlsczogYW55O1xuICBASW5wdXQoKSBvcmdEZXRhaWxzOiBhbnk7XG4gIHBhbmVsVGl0bGVEZWZhdWx0UmV2aWV3ZXIgPSAnU2VsZWN0IERlZmF1bHQgUmV2aWV3ZXIocyknO1xuICBwYW5lbFRpdGxlT3duZXIgPSAnU2VsZWN0IE93bmVyKHMpJztcbiAgcGFuZWxUaXRsZVJldmlld2VyID0gJ1NlbGVjdCBSZXZpZXdlcihzKSc7XG4gIHBhbmVsVGl0bGVBc3NpZ25lZSA9ICdTZWxlY3QgQXNzaWduZWUocyknO1xuICBwYW5lbFRpdGxlQ29sbGFib3JhdG9yID0gJ1NlbGVjdCBDb2xsYWJvcmF0b3IocyknO1xuICBwYW5lbFRpdGxlQXBwcm92ZXIgPSAnU2VsZWN0ICBBcHByb3Zlcic7XG4gIGlzQXBwcm92ZXJEaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBpc1Byb2dyYW1TY29wZTogYm9vbGVhbiA9IGZhbHNlO1xuICB0b29sVGlwRGF0YTogYW55ID0ge1xuICAgIG93bmVyOlxuICAgICAgJ093bmVycyBhcmUgcmVzcG9uc2libGUgZm9yIG1hbmFnaW5nIGEgUHJvZ3JhbS4gT25seSBPd25lcnMgY2FuIG1ha2UgY2hhbmdlcyB0byBhIFByb2dyYW0gYW5kIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLjxicj5UaGUgPHN0cm9uZz5LZXkgQWRtaW48L3N0cm9uZz4gYW5kIGFsbCA8Yj5BZG1pbjwvYj4gdXNlcnMgd2lsbCBiZSBzZWxlY3RlZCBhcyB0aGUgT3duZXJzIG9mIGEgUHJvZ3JhbSBieSBkZWZhdWx0LicsXG4gICAgcHJvZ3JhbVNjb3BlOiBgQSBQcm9ncmFtIFNjb3BlIGNhbiBiZSB1c2VkIGFzIGZvbGxvd3M6XG4gIDxsaT5UbyBzcGVjaWZ5IHRoZSBkdXJhdGlvbiBvZiB0aGUgUHJvZ3JhbS48L2xpPlxuICA8bGk+VG8gcHJlLXNlbGVjdCBjZXJ0YWluIG9wdGlvbnMgdGhhdCBhcmUgYXZhaWxhYmxlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSwgdGhlcmVieSBkZWNyZWFzaW5nIHRoZSB0aW1lIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHJlc3BvbnNpYmlsaXR5LjwvbGk+XG4gIDxsaT5UbyBsaW1pdCB0aGUgb3B0aW9ucyBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHksIHRoZXJlYnkgbWFraW5nIGl0IGVhc2llciB0byBjcmVhdGUgYSByZXNwb25zaWJpbGl0eSBhbmQgcmVkdWNpbmcgdGhlIGxpa2VsaWhvb2Qgb2YgYW4gaW5jb3JyZWN0IG9wdGlvbiBiZWluZyBzZWxlY3RlZC48L2xpPlxuICAgIGAsXG4gIH07XG4gIGJ1c2luZXNzQ3ljbGU6IGFueTtcbiAgZmVhdHVyZWZsYWdyb2xlOiBib29sZWFuID0gZmFsc2U7XG4gIGZlYXR1cmVmbGFnR3JvdXBzOiBib29sZWFuID0gZmFsc2U7XG4gIGRpc2FibGVDb2xsYWJvcmF0b3JJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkUmV2aWV3ZXJJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkQXNzaWduZWVJZHM6IGFueVtdID0gW107XG4gIHNlbGVjdGVkT3ZlcnNlZXJJZHM6IGFueVtdID0gW107XG4gIGFzc2lnbm9ySWQ6IG51bWJlcltdID0gW107XG4gIGRpc2FibGVSZXZpZXdlcklkczogYW55W10gPSBbXTtcbiAgZGlzYWJsZU92ZXJzZWVySWRzOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHByb2dyYW1TZXJ2aWNlOiBQcm9ncmFtc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1aUtpdFNlcnZpY2U6IFVpS2l0U2VydmljZSxcbiAgICBwcml2YXRlIGlmcmFtZVNlcnZpY2U6IElmcmFtZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuYnVzaW5lc3NDeWNsZSA9IEpTT04ucGFyc2UoXG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NDeWNsZScpID8/ICd7fSdcbiAgICApO1xuICB9XG4gIHB1YmxpYyBub1doaXRlc3BhY2VWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgaXNXaGl0ZXNwYWNlID0gKGNvbnRyb2wudmFsdWUgfHwgJycpLnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgY29uc3QgaXNWYWxpZCA9ICFpc1doaXRlc3BhY2U7XG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyB3aGl0ZXNwYWNlOiB0cnVlIH07XG4gIH1cbiAgcHVibGljIGJsYW5rQXJyYXlWYWxpZGF0b3IoY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKSB7XG4gICAgY29uc3QgaXNCbGFuayA9IGNvbnRyb2wudmFsdWU/LmZpbHRlcigoZWxlOiBhbnkpID0+IGVsZSk/Lmxlbmd0aCA9PT0gMDtcbiAgICBjb25zdCBpc1ZhbGlkID0gIWlzQmxhbms7XG4gICAgcmV0dXJuIGlzVmFsaWQgPyBudWxsIDogeyBibGFuazogdHJ1ZSB9O1xuICB9XG4gIGxvYWRlciA9IGZhbHNlO1xuICBzaG93U21pbGV5ID0gZmFsc2U7XG4gIGFjdGlvbkJ1dHRvbnMgPSBbXG4gICAgeyBidXR0b25UZXh0OiAnQWRkIE1vcmUgUHJvZ3JhbXMnLCBjbGFzczogJ3doaXRlLWJ0bicsIGlkOiAnYWRkTW9yZScgfSxcbiAgICB7IGJ1dHRvblRleHQ6ICdWaWV3IFByb2dyYW0nLCBjbGFzczogJ2JsdWUtYnRuJywgaWQ6ICd2aWV3UHJvZ3JhbScgfSxcbiAgXTtcbiAgc21pbGV5TWVzc2FnZSA9IGBZb3UncmUgQWxsIFNldCFgO1xuICBjcmVhdGVkUHJvZ3JhbUlkID0gJyc7XG4gIGlzT2JqZWN0aXZlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBpc05hbWVFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLy9mb3JtIGJvZHkgZm9yIHByb2dyYW0gbWV0YSBkYXRhXG4gIHByb2dyYW1Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgcHJvZ3JhbV90eXBlOiBbXG4gICAgICB0aGlzLnByb2dyYW1UeXBlLFxuICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDApLCBWYWxpZGF0b3JzLm1heCgzKV0sXG4gICAgXSxcbiAgICBwcm9ncmFtX25hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubm9XaGl0ZXNwYWNlVmFsaWRhdG9yXV0sXG4gICAgcHJvZ3JhbV9kZXNjcmlwdGlvbjogWycnXSxcbiAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzOiBbW11dLFxuICAgIHByb2dyYW1fb2JqZWN0aXZlOiBbJyddLFxuICAgIC8vIHByb2dyYW1fb2JqZWN0aXZlOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm5vV2hpdGVzcGFjZVZhbGlkYXRvcl1dLFxuICAgIHByb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzOiBbW11dLFxuICAgIHByb2dyYW1fcm9sZXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxuICAgIGFsbF91c2VyX2luX3JvbGU6IFtmYWxzZV0sXG4gICAgcHJvZ3JhbV9vd25lcnM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMuYmxhbmtBcnJheVZhbGlkYXRvcl1dLFxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fYXBwcm92ZXI6IFtbXV0sXG4gICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246IFsnUEFTVF9FVkVOVCcsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogW3RydWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgbG9ja19zY29wZV9jaGFuZ2U6IFtmYWxzZSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICBmcmFtZXdvcms6IFtdLFxuICAgIHJjOiBbW11dLFxuICAgIHByb2dyYW1fYXNzaWduZWU6IFtbXV0sXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbW11dLFxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IFsnQUxMJ10sXG4gICAgcHJvZ3JhbV9yZXZpZXdlcjogW1tdXSxcbiAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtbXV0sXG4gICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogWydTRVFVRU5USUFMJ10sXG4gICAgcHJvZ3JhbV9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtbXV0sXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW1tdXSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbW11dLFxuICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtbXV0sXG4gICAgZXZpZGVuY2VfcmVxdWlyZWQ6IFtmYWxzZV0sXG4gICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBbZmFsc2VdLFxuICAgIGN1c3RvbV9maWVsZHM6IFtbXV0sXG4gICAgcHJvZ3JhbV9zdGF0ZTogMCxcbiAgICBwcm9ncmFtX2NvbGxhYm9yYXRvcjogW1tdXSxcbiAgfSk7XG5cbiAgLy9leGNlcHRpb25hbCBoYW5kbGluZyBvZiBjdXN0b20gZmllbGRzXG5cbiAgc2hvd0FkZEN1c3RvbUZpZWxkID0gdHJ1ZTtcbiAgLy9Qcm9ncmFtIG9iamVjdGl2ZSBhbmQgZGVzY3JpcGlvbiBhcmUgZXhwbGVjdGx5IGRlY2xhcmVkIGFzIHRoZXkgYXJlIHVzaW5nIG1hcnggZWRpdG9yIHdoaWNoIGRvZXMgbm90IHN1cHBvcnRzIFJlYWN0aXZlIGZvcm1zIGJpbmRpbmdcbiAgZWRpdG9yRGF0YSA9IHtcbiAgICBwcm9ncmFtT2JqZWN0aXZlOiAnJyxcbiAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnLFxuICB9O1xuXG4gIHNlbGVjdGVkQXNzZXNzbWVudCE6IGFueTtcbiAgbWFuYWdlUHJvZ3JhbXNSb2xlSWQ6IHN0cmluZ1tdPSBbXTtcblxuICBjdXJyZW50VXNlcigpIHtcbiAgICBjb25zdCB1c2VyID0gdGhpcy5hdXRoU2VydmljZS50b2tlbkluZm8oKTtcbiAgICByZXR1cm4ge1xuICAgICAgbWVtYmVyX2VtYWlsOiB1c2VyPy5lbWFpbCxcbiAgICAgIG1lbWJlcl9pZDogdXNlcj8uaWQsXG4gICAgICBtZW1iZXJfbmFtZTogdXNlcj8ubmFtZSxcbiAgICAgIHVzZXJfcm9sZTogJ0xPR0dFRF9JTicsXG4gICAgICBfaWQ6ICcnLFxuICAgIH07XG4gIH1cbiAgLy9TZXRzIHRoZSB2YWx1ZSBvZiBhIGZvcm0gY29udHJvbFxuICBzZXRGb3JtRmllbGQoY29udHJvbE5hbWU6IHN0cmluZywgdmFsdWU6IGFueSwgaXNGcm9tRm9ybT86IGJvb2xlYW4pIHtcbiAgICBsZXQgcGF0Y2g6IGFueSA9IHt9O1xuICAgIHBhdGNoW2NvbnRyb2xOYW1lXSA9IHZhbHVlO1xuICAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShwYXRjaCk7XG4gICAgdGhpcy5jb250cm9sc1tjb250cm9sTmFtZV0/Lm1hcmtBc1RvdWNoZWQoKTtcbiAgICBpZiAoXG4gICAgICBpc0Zyb21Gb3JtICYmXG4gICAgICBjb250cm9sTmFtZSA9PT0gJ3Byb2dyYW1fb2JqZWN0aXZlJyAmJlxuICAgICAgIXZhbHVlLnJlcGxhY2UoLyZuYnNwOy9nLCAnICcpLnRyaW0oKVxuICAgIClcbiAgICAgIHRoaXMuaXNPYmplY3RpdmVWYWxpZCA9IGZhbHNlO1xuICAgIGVsc2UgdGhpcy5pc09iamVjdGl2ZVZhbGlkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vUmV0dXJucyB3ZWF0aGVyIHRoZSBmb3JtIGlzIHZhbGlkIG9yIG5vdFxuICBnZXQgZm9ybVZhbGlkKCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMucHJvZ3JhbUZvcm0udmFsaWQgJiZcbiAgICAgIHRoaXMuZWRpdG9yRGF0YT8ucHJvZ3JhbU9iamVjdGl2ZT8ucmVwbGFjZSgvJm5ic3A7L2csICcgJyk/LnRyaW0oKT8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGNvbnRyb2xzOiBhbnkgPSB7XG4gICAgcHJvZ3JhbV9uYW1lOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9uYW1lJyksXG4gICAgcHJvZ3JhbV90eXBlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV90eXBlJyksXG4gICAgcHJvZ3JhbV9vYmplY3RpdmU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX29iamVjdGl2ZScpLFxuICAgIHByb2dyYW1fcm9sZXM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3JvbGVzJyksXG4gICAgcHJvZ3JhbV9vd25lcnM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX293bmVycycpLFxuICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnKSxcbiAgICBhbGxfdXNlcl9pbl9yb2xlOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnYWxsX3VzZXJfaW5fcm9sZScpLFxuICAgIHByb2dyYW1fYXBwcm92ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2FwcHJvdmVyJyksXG4gICAgZGVzY3JpcHRpb25fYXR0YWNobWVudDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cydcbiAgICApLFxuICAgIG9iamVjdGl2ZV9hdHRhY2htZW50czogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHMnXG4gICAgKSxcbiAgICBwZXJmb3JtYW5jZV9jYWxjdWxhdGlvbjogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3BlcmZvcm1hbmNlX2NhbGN1bGF0aW9uJyksXG4gICAgcmVjdXJyaW5nX2ZyZXF1ZW5jeTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3JlY3VycmluZ19mcmVxdWVuY3knKSxcbiAgICBsb2NrX3Njb3BlX2NoYW5nZTogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ2xvY2tfc2NvcGVfY2hhbmdlJyksXG4gICAgcmM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdyYycpLFxuICAgIGV2aWRlbmNlX3JlcXVpcmVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnZXZpZGVuY2VfcmVxdWlyZWQnKSxcbiAgICBmcmFtZXdvcms6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdmcmFtZXdvcmsnKSxcbiAgICBhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2U6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ2FsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZSdcbiAgICApLFxuICAgIHByb2dyYW1fYXNzaWduZWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2Fzc2lnbmVlJyksXG4gICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fYXNzaWduZWVfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCdcbiAgICApLFxuICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ2Fzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWEnXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXInKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCdcbiAgICApLFxuICAgIHByb2dyYW1fcmV2aWV3ZXI6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX3Jldmlld2VyJyksXG4gICAgcHJvZ3JhbV9yZXZpZXdlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoJ3Byb2dyYW1fcmV2aWV3ZXJfZ3JvdXAnKSxcbiAgICBwcm9ncmFtX292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9vdmVyc2VlcicpLFxuICAgIHByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJyksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJyksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnXG4gICAgKSxcbiAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyOiB0aGlzLnByb2dyYW1Gb3JtLmdldChcbiAgICAgICdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJ1xuICAgICksXG4gICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cDogdGhpcy5wcm9ncmFtRm9ybS5nZXQoXG4gICAgICAncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cCdcbiAgICApLFxuICAgIHJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWE6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KFxuICAgICAgJ3Jldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEnXG4gICAgKSxcbiAgICBwcm9ncmFtX2Fzc2Vzc21lbnRzOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgncHJvZ3JhbV9hc3Nlc3NtZW50cycpLFxuICAgIGN1c3RvbV9maWVsZHM6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdjdXN0b21fZmllbGRzJyksXG4gICAgaXNBcHByb3ZlckRpc2FibGVkOiB0aGlzLnByb2dyYW1Gb3JtLmdldCgnaXNBcHByb3ZlckRpc2FibGVkJyksXG4gICAgcHJvZ3JhbV9jb2xsYWJvcmF0b3I6IHRoaXMucHJvZ3JhbUZvcm0uZ2V0KCdwcm9ncmFtX2NvbGxhYm9yYXRvcicpLFxuICB9O1xuXG4gIGxpc3RzOiBhbnkgPSB7XG4gICAgUk9MRVM6IFtdLFxuICAgIE9XTkVSUzogW10sXG4gICAgT1dORVJTX0dST1VQUzogW10sXG4gICAgQ09MTEFCT1JBVE9SUzogW10sXG4gICAgUkVWSUVXRVJTOiBbXSxcbiAgICBSRVZJRVdFUlNfR1JPVVA6IFtdLFxuICAgIEFTU0lHTkVFUzogW10sXG4gICAgQVNTSUdORUVTX0dST1VQOiBbXSxcbiAgICBERUZBVUxUX0FTU0lHTkVFUzogW10sXG4gICAgREVGQVVMVF9BU1NJR05FRVNfR1JPVVA6IFtdLFxuICAgIERFRkFVTFRfUkVWSUVXRVJTOiBbXSxcbiAgICBERUZBVUxUX1JFVklFV0VSU19HUk9VUDogW10sXG4gICAgT1ZFUlNFRVJTOiBbXSxcbiAgICBPVkVSU0VFUlNfR1JPVVA6IFtdLFxuICAgIERFRkFVTFRfT1ZFUlNFRVJTOiBbXSxcbiAgICBERUZBVUxUX09WRVJTRUVSU19HUk9VUDogW10sXG4gICAgUkM6IFtdLFxuICAgIE5PTl9SRU1PVkFCTEVfT1dORVJTOiBbXSxcbiAgICBBTExfVVNFUjogW10sXG4gICAgQUxMX0dST1VQOiBbXSxcbiAgICBTWVNURU1fUk9MRV9JRFM6IFtdLFxuICB9O1xuXG4gIGxpc3RMb2FkaW5nU3RhdGUgPSB7XG4gICAgUk9MRVM6IGZhbHNlLFxuICAgIFVTRVJTOiBmYWxzZSxcbiAgICBHUk9VUDogZmFsc2UsXG4gICAgUkM6IGZhbHNlLFxuICB9O1xuICBzaWRlRWxlbWVudHMgPSBbXG4gICAgJ1JPTEUnLFxuICAgICdSQycsXG4gICAgJ09XTkVSJyxcbiAgICAnQVNTSUdORUUnLFxuICAgICdBUFBST1ZFUicsXG4gICAgJ0RFRkFVTFRfQVNTSUdORUUnLFxuICAgICdSRVZJRVdFUicsXG4gICAgJ0RFRkFVTFRfUkVWSUVXRVInLFxuICAgICdBU1NFU1NNRU5UJyxcbiAgICAnRlJBTUVXT1JLJyxcbiAgICAnT1ZFUlNFRVInLFxuICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicsXG4gICAgJ0RFRkFVTFRfT1ZFUlNFRVInLFxuICAgICdPVkVSU0VFUicsXG4gIF07XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHRoaXMucHJvZ3JhbVR5cGUpO1xuICAgIGlmICh0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgdGhpcy5nZXRQcm9ncmFtRGV0YWlscygpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcbiAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xuICAgIH1cbiAgICB0aGlzLmZldGNoUm9sZXMoKTtcbiAgICB0aGlzLmZldGNoUkMoKTtcbiAgICBpZiAodGhpcy5hZGRUb1Byb2dyYW1EZXRhaWxzPy5faWQpIHtcbiAgICAgIHRoaXMubGlzdEFjdGlvbih0aGlzLmFkZFRvUHJvZ3JhbURldGFpbHMsICdGUkFNRVdPUksnKTtcbiAgICB9XG4gICAgdGhpcy5lbmFibGVmZWF0dXJlKCk7XG4gICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIGdldCB2YWxpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9ncmFtRm9ybS52YWxpZDtcbiAgfVxuXG4gIGFkZGl0aW9uYWxPcHRpb246IGFueSA9IHsgLi4uQ09OU1RBTlRTLmFkZGl0aW9uYWxPcHRpb24gfTtcbiAgYWN0aXZlTGlzdCA9ICcnO1xuICAvKipcbiAgICogIyMjIyBEZXNjcmlwdGlvblxuICAgKiBQb3B1bGF0ZXMgb3B0aW9uYWwgZmllbGRzIHN0YXR1cyBmb3IgdGhlIG9wdGlvbmFsIGZpZWxkc1xuICAgKi9cbiAgcG9wdWxhdGVPcHRpb25hbEZpZWxkcygpIHtcbiAgICBjb25zdCBhY3RpdmF0ZWRPcHRpb25zID0gW107XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5hZGRpdGlvbmFsT3B0aW9uKSkge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldID09PSB0cnVlKSB7XG4gICAgICAgIGFjdGl2YXRlZE9wdGlvbnMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnBvcHVsYXRlT3B0aW9uLmVtaXQoYWN0aXZhdGVkT3B0aW9ucyk7XG4gIH1cbiAgYWRkTW9yZUluZm8oZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbltldmVudC5jb2RlXSA9IGV2ZW50LmNoZWNrZWQ7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IHRydWU7XG4gICAgdGhpcy5jaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpO1xuICB9XG5cbiAgLy8gZnVuY3Rpb24gdG8gYXV0b21hdGUgZm9ybSB2YWx1ZSBjaGFuZ2UgaGFuZG5nXG4gIGZvcm1DaGFuZ2VMaXN0bmVyKCkge1xuICAgIGNvbnN0IGZpZWxkcyA9IE9iamVjdC5rZXlzKHRoaXMuY29udHJvbHMpO1xuICAgIGZpZWxkcy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xuICAgICAgdGhpcy5jb250cm9sc1tlbGVdPy52YWx1ZUNoYW5nZXMucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUZvcm1GaWVsZENoYW5nZShlbGUsIHJlcyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGhhbmRsZUZvcm1GaWVsZENoYW5nZShjb250cm9sOiBzdHJpbmcsIHBheWxvYWQ/OiBhbnkpIHtcbiAgICBzd2l0Y2ggKGNvbnRyb2wpIHtcbiAgICAgIGNhc2UgJ3Byb2dyYW1fcm9sZXMnOiB7XG4gICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhY3RpdmF0ZUxpc3QoZXZ0OiBzdHJpbmcpIHtcbiAgICBpZiAoZXZ0ID09PSAnRlJBTUVXT1JLJyAmJiAhdGhpcy5jYW5GcmFtZXdvcmtDaGFuZ2UpIHJldHVybjtcbiAgICB0aGlzLmFjdGl2ZUxpc3QgPSBldnQ7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQodHJ1ZSk7XG4gIH1cblxuICBsaXN0QWN0aW9uKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcblxuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnUk9MRSc6IHtcbiAgICAgICAgdGhpcy5zaG93Q29uZmlybWF0aW9uID0gdHJ1ZTtcbiAgICAgICAgY29uc3Qgc3lzdGVtUm9sZXMgPSBldnQ/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICBlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpID09PSAna2V5IGFkbWluJyB8fFxuICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJ1xuICAgICAgICApO1xuICAgICAgICBjb25zdCBwYXRjaFZhbCA9IHRoaXMudW5pcXVlQnlQcm9wKFsuLi5zeXN0ZW1Sb2xlcywgLi4uZXZ0XSwgJ19pZCcpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWlzRXF1YWwodGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzLnZhbHVlLnNvcnQoKSwgcGF0Y2hWYWwuc29ydCgpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yb2xlcycsIHBhdGNoVmFsKTtcbiAgICAgICAgICB0aGlzLmZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICAgICAgdGhpcy5mZXRjaEdyb3Vwc0Fzc29jaWF0ZWRXaXRoUm9sZXMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdPV05FUic6IHtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3duZXJzJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb3duZXJzX2dyb3VwJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/Lmdyb3VwcywgJ2dyb3VwX2lkJylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5maWVsZERlc2VsZWN0b3IodHlwZSk7XG4gICAgICAgIHRoaXMucmVmcmVzaExpc3QoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdDT0xMQUJPUkFUT1InOiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXZ0XCIsIGV2dCwgdHlwZSk7XG5cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fY29sbGFib3JhdG9yJyxcbiAgICAgICAgICB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJylcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgIFxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgZXZ0KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fbmFtZScsIGV2dD8ubmFtZSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywgZXZ0Py5kZXNjcmlwdGlvbik7XG4gICAgICAgIHRoaXMuZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb24gPSBldnQ/LmRlc2NyaXB0aW9uO1xuICAgICAgICB0aGlzLmZpZWxkRGVzZWxlY3Rvcih0eXBlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JPTEUnOiB7XG4gICAgICAgIGxldCBtc2cgPSAnJztcbiAgICAgICAgbXNnID0gJ0lmIHlvdSBjaGFuZ2UgdGhlIHJvbGVzLCBhbnkgdW5zYXZlZCBjaGFuZ2VzIHdvdWxkIGJlIGxvc3QuJztcbiAgICAgICAgY29uc3Qgcm9sZXMgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWQgIT09IGV2dD8uX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubGlzdEFjdGlvbihyb2xlcywgJ1JPTEUnKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcm9sZXMnLCByb2xlcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1dORVInOiB7XG4gICAgICAgIGNvbnN0IG93bmVycyA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIG93bmVycyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnT1dORVJfR1JPVVAnOiB7XG4gICAgICAgIGNvbnN0IG93bmVyc19ncm91cCA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnNfZ3JvdXAnLCBvd25lcnNfZ3JvdXApO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ0NPTExBQk9SQVRPUic6IHtcbiAgICAgICAgY29uc3QgYXBwcm92ZXIgPSB0aGlzLmNvbnRyb2xzPy5wcm9ncmFtX2NvbGxhYm9yYXRvcj8udmFsdWU/LmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9jb2xsYWJvcmF0b3InLCBhcHByb3Zlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnRlJBTUVXT1JLJzoge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnZnJhbWV3b3JrJywgbnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybklkcyhsaXN0OiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbGlzdFxuICAgICAgPy5tYXAoKGVsZSkgPT4ge1xuICAgICAgICBpZiAoZWxlW2tleV0pIHtcbiAgICAgICAgICByZXR1cm4gZWxlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChlbGUpID0+IGVsZSk7XG4gIH1cblxuICByZWZyZXNoTGlzdCgpIHtcbiAgICBsZXQgc2VsZWN0ZWRPd25lciA9IHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlLm1lbWJlcl9pZCk7XG4gICAgY29uc29sZS5sb2coXCJjb2xsYWJvcmF0b3JzXCIsIHNlbGVjdGVkT3duZXIsIHRoaXMuY29udHJvbHMpXG4gICAgbGV0IGRpc2FibGVDb2xsYWJvcmF0b3IgPSB0aGlzLmxpc3RzPy5DT0xMQUJPUkFUT1JTPy5kYXRhPy5maWx0ZXIoXG4gICAgICAodXNlcjogYW55KSA9PlxuICAgICAgICBzZWxlY3RlZE93bmVyPy5pbmNsdWRlcyh1c2VyPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICBjb25zb2xlLmxvZyhcImRpc2FibGVDb2xsYWJvcmF0b3IgPT0+XCIsIGRpc2FibGVDb2xsYWJvcmF0b3IpXG4gICAgdGhpcy5kaXNhYmxlQ29sbGFib3JhdG9ySWRzID0gdGhpcy5yZXR1cm5JZHMoZGlzYWJsZUNvbGxhYm9yYXRvciwgJ21lbWJlcl9pZCcpO1xuICB9XG5cbiAgcmVtb3ZlUm9sZShldnQ6IGFueSkge1xuICAgIHRoaXMub25SZW1vdmluZ1JvbGUuZW1pdChldnQpO1xuICB9XG5cbiAgLy9iZWxvdyA0IGZ1bmN0aW9ucyBjYW4gYmUgZWFzaWx0eSBjb21iaW5lZCBpbnRvIG9uZSBhcyB0aGV5IGZvbGxvdyBzYW1lIGtpbmQgb2YgcGF0dGVybiBvciBjYW4gYmUgb2ZmbG9hZGVkIHRvIGEgZXh0ZXJuYWwgc2VydmljZVxuICBzZXREZWZhdWx0QXNzaWduZWUoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3QgYXNzaWduZWVNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRBc3NpZ25lZSA9IGN1cnJlbnREZWZhdWx0QXNzaWduZWUuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIGFzc2lnbmVlTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZScsIGN1cnJlbnREZWZhdWx0QXNzaWduZWUpO1xuICB9XG5cbiAgc2V0RGVmYXVsdEFzc2lnbmVlT25SZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnQVNTSUdORUUnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0QXNzaWduZWUgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU7XG4gICAgICAgIGNvbnN0IGFzc2lnbmVlID0gZGVmYXVsdEFzc2lnbmVlLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBpZiAoIWFzc2lnbmVlPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnQVNTSUdORUVfR1JPVVAnOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPVxuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVNfR1JPVVAuZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdEFzc2lnbmVlR3JvdXAgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3QgYXNzaWduZWVHcm91cCA9IGRlZmF1bHRBc3NpZ25lZUdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUdyb3VwPy5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gdGhpcy5saXN0cy5BTExfR1JPVVA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlR3JvdXApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBzZXREZWZhdWx0UmV2aWV3ZXIoZXZ0OiBhbnkpIHtcbiAgICBpZiAoZXZ0Py51c2Vycz8ubGVuZ3RoIHx8IGV2dD8uZ3JvdXBzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChldnQ/LnVzZXJzLCAnbWVtYmVyX2lkJyk7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgIGV2dD8uZ3JvdXBzLFxuICAgICAgICAnZ3JvdXBfaWQnXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5BTExfVVNFUjtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPSB0aGlzLmxpc3RzLkFMTF9HUk9VUDtcbiAgICB9XG4gICAgY29uc3QgcmV2aWV3ZXJNYXAgPSBldnQ/LnVzZXJzPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCk7XG4gICAgbGV0IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU7XG4gICAgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIHJldmlld2VyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xuICB9XG4gIHNldERlZmF1bHRPdmVyc2VlcihldnQ6IGFueSkge1xuICAgIGlmIChldnQ/LnVzZXJzPy5sZW5ndGggfHwgZXZ0Py5ncm91cHM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHRoaXMudW5pcXVlQnlQcm9wKGV2dD8udXNlcnMsICdtZW1iZXJfaWQnKTtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgICAgZXZ0Py5ncm91cHMsXG4gICAgICAgICdncm91cF9pZCdcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkFMTF9VU0VSO1xuICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IHRoaXMubGlzdHMuQUxMX0dST1VQO1xuICAgIH1cbiAgICBjb25zdCBvdmVyc2Vlck1hcCA9IGV2dD8udXNlcnM/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkKTtcbiAgICBsZXQgY3VycmVudERlZmF1bHRSZXZpZXdlciA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZTtcbiAgICBsZXQgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXIgPVxuICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZTtcbiAgICBjdXJyZW50RGVmYXVsdFJldmlld2VyID0gY3VycmVudERlZmF1bHRSZXZpZXdlci5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgb3ZlcnNlZXJNYXAuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgKTtcbiAgICBjdXJyZW50RGVmYXVsdEZhaWxSZXZpZXdlciA9IGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgIG92ZXJzZWVyTWFwLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICk7XG4gICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9vdmVyc2VlcicsIGN1cnJlbnREZWZhdWx0UmV2aWV3ZXIpO1xuICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXInLFxuICAgICAgY3VycmVudERlZmF1bHRGYWlsUmV2aWV3ZXJcbiAgICApO1xuICB9XG4gIHNldERlZmF1bHRSZXZpZXdlck9uUmVtb3ZlKGV2dDogYW55LCB0eXBlOiBhbnkpIHtcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgJ1JFVklFV0VSJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFJldmlld2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlO1xuICAgICAgICBjb25zdCByZXZpZXdlciA9IGRlZmF1bHRSZXZpZXdlci5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZCAhPT0gZXZ0Py5tZW1iZXJfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcicsIHJldmlld2VyKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ1JFVklFV0VSX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRSZXZpZXdlckdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IHJldmlld2VyR3JvdXAgPSBkZWZhdWx0UmV2aWV3ZXJHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXAnLCByZXZpZXdlckdyb3VwKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgc2V0RGVmYXVsdE92ZXJzZWVyT25SZW1vdmUoZXZ0OiBhbnksIHR5cGU6IGFueSkge1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnT1ZFUlNFRVInOiB7XG4gICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlMgPSB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXIgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyID0gZGVmYXVsdE92ZXJzZWVyLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8ubWVtYmVyX2lkICE9PSBldnQ/Lm1lbWJlcl9pZFxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgb3ZlcnNlZXIpO1xuXG4gICAgICAgIGNvbnN0IGRlZmF1bHRGYWlsT3ZlcnNlZXIgPVxuICAgICAgICAgIHRoaXMuY29udHJvbHMucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyRmFpbCA9IGRlZmF1bHRGYWlsT3ZlcnNlZXIuZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5tZW1iZXJfaWQgIT09IGV2dD8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyJywgb3ZlcnNlZXJGYWlsKTtcblxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ09WRVJTRUVSX0dST1VQJzoge1xuICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID1cbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQLmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5ncm91cF9pZCAhPT0gZXZ0Py5ncm91cF9pZFxuICAgICAgICAgICk7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2Vlckdyb3VwID1cbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU7XG4gICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSBkZWZhdWx0T3ZlcnNlZXJHcm91cC5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lmdyb3VwX2lkICE9PSBldnQ/Lmdyb3VwX2lkXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLCBvdmVyc2Vlckdyb3VwKTtcblxuICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJGYWlsZWRHcm91cCA9XG4gICAgICAgICAgdGhpcy5jb250cm9scy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZTtcbiAgICAgICAgY29uc3Qgb3ZlcnNlZXJGYWlsZWRHcm91cCA9IGRlZmF1bHRPdmVyc2VlckZhaWxlZEdyb3VwLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZT8uZ3JvdXBfaWQgIT09IGV2dD8uZ3JvdXBfaWRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgIG92ZXJzZWVyRmFpbGVkR3JvdXBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmaWVsZERlc2VsZWN0b3IodHlwZTogYW55KSB7XG4gICAgdGhpcy5hY3RpdmVMaXN0ID0gJyc7XG4gICAgdGhpcy5waWNrZXJDaGFuZ2VkLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMubWFya2FzVG91Y2hlZFNlbGVjdG9yKHR5cGUpO1xuICB9XG4gIG1hcmthc1RvdWNoZWRTZWxlY3RvcihmaWVsZE5hbWU6IGFueSkge1xuICAgIGNvbnN0IHR5cGVGaWVsZDogYW55ID0ge1xuICAgICAgUk9MRTogJ3Byb2dyYW1fcm9sZXMnLFxuICAgICAgQVBQUk9WRVI6ICdwcm9ncmFtX2FwcHJvdmVyJyxcbiAgICAgIE9XTkVSOiAncHJvZ3JhbV9vd25lcnMnLFxuICAgICAgT1dORVJfR1JPVVA6ICdwcm9ncmFtX293bmVyc19ncm91cCcsXG4gICAgfTtcbiAgICB0aGlzLmNvbnRyb2xzW3R5cGVGaWVsZFtmaWVsZE5hbWVdXT8ubWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgZmV0Y2hSb2xlcygpIHtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldFJvbGVzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLlJPTEVTID0gcmVzO1xuICAgICAgICBjb25zdCBkZWZhdWx0U3lzdGVtVmFsID0gdGhpcy5saXN0cz8uUk9MRVM/LmRhdGFcbiAgICAgICAgICA/LmZpbHRlcihcbiAgICAgICAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkbWluJ1xuICAgICAgICAgIClcbiAgICAgICAgICA/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbCA9IHRoaXMubGlzdHM/LlJPTEVTPy5kYXRhPy5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgZWxlPy5yb2xlTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ2tleSBhZG1pbicgfHxcbiAgICAgICAgICAgIGVsZT8ucm9sZU5hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICdhZG1pbidcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm1hbmFnZVByb2dyYW1zUm9sZUlkID0gdGhpcy5nZXRNYW5hZ2VQcm9ncmFtc1JvbGVJZCgpO1xuICAgICAgICB0aGlzLmxpc3RzLlNZU1RFTV9ST0xFX0lEUyA9IGRlZmF1bHRTeXN0ZW1WYWw7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgIT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgZGVmYXVsdFZhbCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFVzZXJzQXNzb2NpYXRlZFdpdGhSb2xlcygpO1xuICAgICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFVzZXJXaXRoTWFuYWdlUHJvZ3JhbXNSb2xlKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH0sXG4gICAgfSk7XG4gIH1cblxuICAvLyBHZXQgTWFuYWdlIFByb2dyYW1zIHJvbGVzIElkOlxuXG4gZ2V0TWFuYWdlUHJvZ3JhbXNSb2xlSWQoKSB7XG4gIHJldHVybiB0aGlzLmxpc3RzPy5ST0xFUz8uZGF0YT8uZmlsdGVyKFxuICAgIChlbGU6IGFueSkgPT5cbiAgICAhWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGU/LnJvbGVOYW1lPy50b0xvd2VyQ2FzZSgpKVxuICApLm1hcCgoZWxlOiBhbnkpID0+IGVsZT8uX2lkKSA/PyBbXVxuIH1cbiAgLy9mZXRjaCB0aGUgbGlzdCBvZiByZXNwb25zaWJpbGl0aWVzIGNlbnRlclxuICBmZXRjaFJDKCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZ2V0UmVzcG9uc2liaWxpdHlDZW50ZXJMaXN0KCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLlJDID0gcmVzO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoVXNlcnNBc3NvY2lhdGVkV2l0aFJvbGVzKGNhbGxlZEZyb20/OiBhbnkpIHtcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XG4gICAgY29uc3Qgcm9sZUlkcyA9IHRoaXMuY29udHJvbHMucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lm1hcChcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5faWRcbiAgICApO1xuICAgIGNvbnNvbGUubG9nKFwicm9sZUlkc1wiLCByb2xlSWRzLCB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXMpO1xuICAgIC8vIGlmIChmZXRjaEFsbCkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hBbGxSb2xlVXNlcnMocm9sZUlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBpc1VzZXJGaW5kID0gcmVzPy5kYXRhPy5zb21lKFxuICAgICAgICAgIChyZXM6IGFueSkgPT4gcmVzPy5tZW1iZXJfaWQgPT09IGxvZ2dlZEluVXNlcj8ubWVtYmVyX2lkXG4gICAgICAgICk7XG4gICAgICAgIGlmICghaXNVc2VyRmluZCkge1xuICAgICAgICAgIHJlcz8uZGF0YT8ucHVzaChsb2dnZWRJblVzZXIpO1xuICAgICAgICAgIHJlcy50b3RhbF9pdGVtcyA9IHJlcz8udG90YWxfaXRlbXMgKyAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGlzdHMuT1dORVJTID0gcmVzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIXJlcz8uZGF0YVxuICAgICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgID8uaW5jbHVkZXModGhpcy5jb250cm9scy5wcm9ncmFtX2FwcHJvdmVyPy52YWx1ZVswXT8ubWVtYmVyX2lkKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hcHByb3ZlcicsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5jb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCByZXM/LmRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdE93bmVycyhyZXM/LmRhdGEsIGNhbGxlZEZyb20pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4geyB9LFxuICAgIH0pO1xuICB9XG5cbiAgZmV0Y2hVc2VyV2l0aE1hbmFnZVByb2dyYW1zUm9sZSgpIHtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHRoaXMubWFuYWdlUHJvZ3JhbXNSb2xlSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5saXN0cy5DT0xMQUJPUkFUT1JTID0gcmVzO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoR3JvdXBzQXNzb2NpYXRlZFdpdGhSb2xlcygpIHtcbiAgICBjb25zdCByb2xlSWRzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGU/Ll9pZFxuICAgICk7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbFJvbGVHcm91cHMocm9sZUlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLk9XTkVSU19HUk9VUFMgPSByZXM7XG4gICAgICAgIGNvbnN0IHJvbGVJZHM6IEFycmF5PHN0cmluZz4gPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlLm1hcChcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZS5faWRcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZ3JvdXBEZXRhaWxzID0gdGhpcy5jb250cm9scy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWUuZmlsdGVyKFxuICAgICAgICAgIChyb2xlSWQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKHJvbGVJZC5yb2xlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgbGV0IGlzU2FtZVJvbGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcm9sZUlkLnJvbGVzLmZvckVhY2goKHJvbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyb2xlSWRzLmluY2x1ZGVzKHJvbGUucm9sZUlkKSkge1xuICAgICAgICAgICAgICAgICAgaXNTYW1lUm9sZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBpZiAoaXNTYW1lUm9sZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiByb2xlSWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIGdyb3VwRGV0YWlscyk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgc2V0RGVmYXVsdE93bmVycyh1c2VyTGlzdDogYW55LCBjYWxsZWRGcm9tPzogYW55KSB7XG4gICAgY29uc3QgbG9nZ2VkSW51c2VyID0gdGhpcy5jdXJyZW50VXNlcigpO1xuICAgIGNvbnN0IGRlZmF1bHRPd25lciA9IHVzZXJMaXN0LmZpbHRlcihcbiAgICAgIChlbGU6IGFueSkgPT5cbiAgICAgICAgWydBRE1JTicsICdLRVlfQURNSU4nXS5pbmNsdWRlcyhlbGU/LnVzZXJfcm9sZSkgJiZcbiAgICAgICAgZWxlPy5tZW1iZXJfaWQgIT0gbG9nZ2VkSW51c2VyPy5tZW1iZXJfaWRcbiAgICApO1xuICAgIHRoaXMubGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgPSB0aGlzLnVuaXF1ZUJ5UHJvcChcbiAgICAgIFsuLi5bbG9nZ2VkSW51c2VyXSwgLi4uZGVmYXVsdE93bmVyXSxcbiAgICAgICdtZW1iZXJfaWQnXG4gICAgKTtcbiAgICAvLyB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vd25lcnMnLCB0aGlzLmxpc3RzLk5PTl9SRU1PVkFCTEVfT1dORVJTKTtcbiAgICBjb25zdCBwcmVTZWxlY3RlZFVzZXJzID0gdGhpcy5nZXRQcmVTZWxlY3RlZE93bmVycyhcbiAgICAgIHRoaXMuY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZSxcbiAgICAgIHVzZXJMaXN0XG4gICAgKTtcbiAgICBpZiAoY2FsbGVkRnJvbSAhPT0gJ2dldFByb2dyYW1EZXRhaWxzJykge1xuICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICdwcm9ncmFtX293bmVycycsXG4gICAgICAgIHByZVNlbGVjdGVkVXNlcnM/Lmxlbmd0aFxuICAgICAgICAgID8gcHJlU2VsZWN0ZWRVc2Vyc1xuICAgICAgICAgIDogdGhpcy5saXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSU1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBnZXRQcmVTZWxlY3RlZE93bmVycyhwcmV2aW91c1NlbGVjdGVkVXNlcnM6IGFueSwgY3VycmVudFVzZXJzOiBhbnkpIHtcbiAgICBsZXQgZmluYWxVc2VycyA9IFtdO1xuICAgIGZpbmFsVXNlcnMgPSBwcmV2aW91c1NlbGVjdGVkVXNlcnM/LmZpbHRlcigocHJldmlvdXM6IGFueSkgPT5cbiAgICAgIGN1cnJlbnRVc2Vycz8uc29tZShcbiAgICAgICAgKGN1cnJlbnQ6IGFueSkgPT4gcHJldmlvdXM/Lm1lbWJlcl9pZCA9PT0gY3VycmVudD8ubWVtYmVyX2lkXG4gICAgICApXG4gICAgKTtcbiAgICByZXR1cm4gZmluYWxVc2VycztcbiAgfVxuXG4gIGZldGNoT3JnYW5pemF0aW9uVXNlcnMoZGF0YT86IGFueSkge1xuICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IHRydWU7XG4gICAgdGhpcy5wcm9ncmFtU2VydmljZS5mZXRjaEFsbE9yZ1VzZXIoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubGlzdHMuQUxMX1VTRVIgPSByZXM7XG4gICAgICAgIHRoaXMubGlzdHMuQVNTSUdORUVTID0gcmVzO1xuICAgICAgICB0aGlzLmxpc3RzLlJFVklFV0VSUyA9IHJlcztcbiAgICAgICAgdGhpcy5saXN0cy5PVkVSU0VFUlMgPSByZXM7XG4gICAgICAgIGlmICh0aGlzLm1vZGUgIT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX1JFVklFV0VSUyA9IHJlcztcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gcmVzO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gJ0VESVQnKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2xzLnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSByZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICghdGhpcy5jb250cm9scy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTID0gcmVzO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIXRoaXMuY29udHJvbHMucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSUyA9IHJlcztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxpc3RMb2FkaW5nU3RhdGUuVVNFUlMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZWZyZXNoTGlzdCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMubGlzdExvYWRpbmdTdGF0ZS5VU0VSUyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoT3JnYW5pemF0aW9uR3JvdXAoZGF0YT86IGFueSkge1xuICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UuZmV0Y2hDb21wbGlhbmNlR3JvdXBzKCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RzLkFMTF9HUk9VUCA9IHJlcztcblxuICAgICAgICB0aGlzLmxpc3RzLkFTU0lHTkVFU19HUk9VUCA9IHJlcztcbiAgICAgICAgdGhpcy5saXN0cy5SRVZJRVdFUlNfR1JPVVAgPSByZXM7XG5cbiAgICAgICAgdGhpcy5saXN0cy5PVkVSU0VFUlNfR1JPVVAgPSByZXM7XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZSAhPT0gJ0VESVQnKSB7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX0FTU0lHTkVFU19HUk9VUCA9IHJlcztcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gcmVzO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPSByZXM7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7IH0sXG4gICAgfSk7XG4gIH1cblxuICBmaWxlVXBsb2FkVHJhY2tlciA9IHtcbiAgICBkZXNjcmlwdGlvbjogW10sXG4gICAgb2JqZWN0aXZlOiBbXSxcbiAgfTtcblxuICBzZWxlY3RGaWxlKHR5cGU6IGFueSwgZmlsZXM6IGFueSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IGZpbGVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgY29uc3QgbmFtZSA9IGZpbGVzW2ldLmZpbGUubmFtZSA/PyAnJztcbiAgICAgIHRoaXMudXBsb2FkRmlsZXModHlwZSwgZmlsZXNbaV0uZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkRmlsZXModHlwZTogJ0RFU0NSSVBUSU9OJyB8ICdPQkpFQ1RJVkUnLCBmaWxlOiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RyaW5nID0gdGhpcy5hdXRoU2VydmljZS5nZXRPcmdhbml6YXRpb25JZCgpLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgZHVtbXlGaWxlID0ge1xuICAgICAgZmlsZV91cmxfcGF0aDogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgbmFtZTogYCR7ZmlsZT8ubmFtZX1gLFxuICAgICAgdXBsb2FkaW5nOiB0cnVlLFxuICAgICAgb3JnX2ZpbGU6IGAke2ZpbGU/Lm5hbWV9YCxcbiAgICB9O1xuICAgIGlmICh0eXBlID09PSAnREVTQ1JJUFRJT04nKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPQkpFQ1RJVkUnKSB7XG4gICAgICBsZXQgZGVzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2xzPy5kZXNjcmlwdGlvbl9hdHRhY2htZW50Py52YWx1ZSA/PyBbXTtcbiAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJywgW1xuICAgICAgICAuLi5kZXNjcmlwdGlvbixcbiAgICAgICAgLi4uW2R1bW15RmlsZV0sXG4gICAgICBdKTtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBsb2FkRmlsZXMoZm9ybURhdGEsIGRlc3RpbmF0aW9uU3RyaW5nKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGxldCBkZXNjcmlwdGlvbkluZGV4ID0gZGVzY3JpcHRpb24uZmluZEluZGV4KFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlID09PSByZXM/Lm9yZ19maWxlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBkZXNjcmlwdGlvbltkZXNjcmlwdGlvbkluZGV4XSA9IHJlcztcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5uYW1lXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2Rlc2NyaXB0aW9uX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICAgIHRoaXMudW5pcXVlQnlQcm9wKGRlc2NyaXB0aW9uLCAnb3JnX2ZpbGUnKVxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVBdHRhY2htZW50KHR5cGU6ICdERVNDUklQVElPTicgfCAnT0JKRUNUSVZFJywgZmlsZTogYW55KSB7XG4gICAgaWYgKHR5cGUgPT09ICdERVNDUklQVElPTicpIHtcbiAgICAgIGxldCBkZXNjcmlwdGlvbiA9IHRoaXMuY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlID8/IFtdO1xuICAgICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uZmlsdGVyKFxuICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5vcmdfZmlsZSAhPT0gZmlsZT8ub3JnX2ZpbGVcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHMnLCBkZXNjcmlwdGlvbik7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnT0JKRUNUSVZFJykge1xuICAgICAgbGV0IG9iamVjdGl2ZSA9IHRoaXMuY29udHJvbHM/Lm9iamVjdGl2ZV9hdHRhY2htZW50cz8udmFsdWUgPz8gW107XG4gICAgICBpZiAob2JqZWN0aXZlKSB7XG4gICAgICAgIG9iamVjdGl2ZSA9IG9iamVjdGl2ZS5maWx0ZXIoXG4gICAgICAgICAgKGVsZTogYW55KSA9PiBlbGU/Lm9yZ19maWxlICE9PSBmaWxlPy5vcmdfZmlsZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsIG9iamVjdGl2ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0QWxsUm9sZU93bmVyKGV2dDogYW55KSB7XG4gICAgLy9uZWVkIHRvIGZldGNoIGFsbCB0aGUgdXNlcnMgZm9yIGFsbCB0aGUgc2VsZWN0ZWQgcm9sZXNcbiAgICBjb25zdCBsb2dnZWRJblVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKCk7XG4gICAgbGV0IHJvbGVJZCA9IFtdO1xuICAgIGxldCB1c2VyOiBhbnk7XG4gICAgaWYgKGV2dD8udGFyZ2V0Py5jaGVja2VkKSB7XG4gICAgICByb2xlSWQgPSB0aGlzLmNvbnRyb2xzLnByb2dyYW1fcm9sZXM/LnZhbHVlPy5tYXAoKGVsZTogYW55KSA9PiBlbGU/Ll9pZCk7XG4gICAgICBpZiAodGhpcy5mZWF0dXJlZmxhZ0dyb3Vwcykge1xuICAgICAgICB1c2VyID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4gZWxlPy5faWQpO1xuICAgICAgICB0aGlzLmNvbnRyb2xzLnByb2dyYW1fb3duZXJzX2dyb3VwLnZhbHVlID0gdXNlcjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcm9sZUlkID0gdGhpcy5jb250cm9scy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAoWydrZXkgYWRtaW4nLCAnYWRtaW4nXS5pbmNsdWRlcyhlbGUucm9sZU5hbWUudG9Mb3dlckNhc2UoKSkpIHtcbiAgICAgICAgICByZXR1cm4gZWxlPy5faWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZVVzZXJzKHJvbGVJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gdGhpcy51bmlxdWVCeVByb3AoXG4gICAgICAgICAgWy4uLltsb2dnZWRJblVzZXJdLCAuLi5yZXM/LmRhdGFdLFxuICAgICAgICAgICdtZW1iZXJfaWQnXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVycycsIHVzZXIpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHsgfSxcbiAgICB9KTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmZldGNoQWxsUm9sZUdyb3Vwcyh1c2VyKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLnVuaXF1ZUJ5UHJvcChbLi4ucmVzPy5kYXRhXSwgJ2dyb3VwX2lkJyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX293bmVyc19ncm91cCcsIHVzZXIpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAjIyMjIERlc2NyaXB0aW9uXG4gICAqXG4gICAqIFJldHVybnMgdGhlIHVuaXF1ZSBhcnJheSBvZiBvYmplY3QgYmFzZWQgb24gdW5pcXVlIGtleVxuICAgKiBAcGFyYW0gYXJyYXlcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgdW5pcXVlQnlQcm9wKGFycmF5OiBhbnksIGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgICBhcnJheVxuICAgICAgICAucmVkdWNlKFxuICAgICAgICAgIChhY2M6IGFueSwgaXRlbTogYW55KSA9PiAoXG4gICAgICAgICAgICBpdGVtICYmIGl0ZW1ba2V5XSAmJiBhY2Muc2V0KGl0ZW1ba2V5XSwgaXRlbSksIGFjY1xuICAgICAgICAgICksXG4gICAgICAgICAgbmV3IE1hcCgpXG4gICAgICAgIClcbiAgICAgICAgLnZhbHVlcygpXG4gICAgKTtcbiAgfVxuICBzZXRMaXN0KGxpc3Q6IGFueVtdLCBpZHM6IGFueVtdLCBrZXk6IHN0cmluZykge1xuICAgIGNvbnN0IGRhdGE6IGFueSA9IFtdO1xuICAgIGlkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdC5maW5kSW5kZXgoXG4gICAgICAgIChsaXN0RWxlbWVudDogYW55KSA9PiBsaXN0RWxlbWVudFtrZXldID09IGVsZW1lbnRcbiAgICAgICk7XG4gICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGRhdGEucHVzaChsaXN0W2luZGV4XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBzYXZlUHJvZ3JhbSgpIHtcbiAgICB0aGlzLmxvYWRlciA9IHRydWU7XG4gICAgbGV0IHBheWxvYWQgPSB0aGlzLnByb2dyYW1TZXJ2aWNlLmJ1aWxkUGF5bG9hZCh0aGlzLnByb2dyYW1Gb3JtLCB0aGlzKTtcbiAgICBpZiAocGF5bG9hZCAmJiB0aGlzLm1vZGUgPT09ICdDUkVBVEUnKSB7XG4gICAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLnNhdmVQcm9ncmFtKHBheWxvYWQpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93U21pbGV5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQgPSByZXMuX2lkO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgICAgICAgaWYgKGVycj8uZXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdDYXRlZ29yeSBhbHJlYWR5IGV4aXN0JykpIHtcbiAgICAgICAgICAgIHRoaXMuaXNOYW1lRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHBheWxvYWQgJiYgdGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgIHRoaXMucHJvZ3JhbVNlcnZpY2UudXBkYXRlUHJvZ3JhbShwYXlsb2FkLCB0aGlzLnByb2dyYW1JZCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dTbWlsZXkgPSB0cnVlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3JlYXRlZFByb2dyYW1JZCA9IHJlcy5faWQ7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMudWlLaXRTZXJ2aWNlLmlzU21pbGV5T24gPSBmYWxzZTtcbiAgICAgICAgICBpZiAoZXJyPy5lcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0NhdGVnb3J5IGFscmVhZHkgZXhpc3QnKSkge1xuICAgICAgICAgICAgdGhpcy5pc05hbWVFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFjdGlvbihldmVudDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChldmVudCkge1xuICAgICAgY2FzZSAnYWRkTW9yZSc6XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3ZpZXdQcm9ncmFtJzpcbiAgICAgICAgdGhpcy52aWV3UHJvZ3JhbXMoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgdmlld1Byb2dyYW1zKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzY29ubmVjdFJlZnJlc2guZW1pdChmYWxzZSk7XG4gICAgbGV0IHVybDogc3RyaW5nO1xuICAgIGlmICh3aW5kb3cubG9jYXRpb24uaG9zdC5zdGFydHNXaXRoKCdsb2NhbGhvc3QnKSkge1xuICAgICAgdXJsID0gJ2h0dHA6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVybCA9ICdodHRwczovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdDtcbiAgICB9XG5cbiAgICBpZiAod2luZG93LmxvY2F0aW9uLmhvc3Quc3RhcnRzV2l0aCgnbG9jYWxob3N0JykpIHtcbiAgICAgIHVybCArPSAnL3Byb2dyYW0td29ya3Jvb20/aWQ9JyArIHRoaXMuY3JlYXRlZFByb2dyYW1JZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdXJsICs9ICcvcHJvZ3JhbS9wcm9ncmFtLXdvcmtyb29tP2lkPScgKyB0aGlzLmNyZWF0ZWRQcm9ncmFtSWQ7XG4gICAgfVxuXG4gICAgdGhpcy5pZnJhbWVTZXJ2aWNlLnJlZGlyZWN0SWZJbklmcmFtZSh1cmwsIHRydWUpO1xuICB9XG4gIHJlc2V0Rm9ybSgpIHtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgdGhpcy5zY3JvbGxUb0JvdHRvbSA9IGZhbHNlO1xuICAgIHRoaXMuc2hvd1NtaWxleSA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTtcbiAgICBjb25zdCBERUZBVUxUX1ZBTFVFUyA9IHtcbiAgICAgIHByb2dyYW1fdHlwZTogMSxcbiAgICAgIHByb2dyYW1fbmFtZTogJycsXG4gICAgICBwcm9ncmFtX2Rlc2NyaXB0aW9uOiAnJyxcbiAgICAgIHByb2dyYW1fZGVzY3JpcHRpb25fYXR0YWNobWVudHM6IFtdLFxuICAgICAgcHJvZ3JhbV9vYmplY3RpdmU6ICcnLFxuICAgICAgcHJvZ3JhbV9vYmplY3RpdmVfYXR0YWNobWVudHM6IFtdLFxuICAgICAgcHJvZ3JhbV9yb2xlczogW10sXG4gICAgICBhbGxfdXNlcl9pbl9yb2xlOiBmYWxzZSxcbiAgICAgIHByb2dyYW1fb3duZXJzOiBbXSxcbiAgICAgIHByb2dyYW1fb3duZXJzX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fYXBwcm92ZXI6IFtdLFxuICAgICAgcGVyZm9ybWFuY2VfY2FsY3VsYXRpb246ICdQQVNUX0VWRU5UJyxcbiAgICAgIHJlY3VycmluZ19mcmVxdWVuY3k6IGZhbHNlLFxuICAgICAgbG9ja19zY29wZV9jaGFuZ2U6IGZhbHNlLFxuICAgICAgZnJhbWV3b3JrOiBbXSxcbiAgICAgIHJjOiBbXSxcbiAgICAgIHByb2dyYW1fYXNzaWduZWU6IFtdLFxuICAgICAgcHJvZ3JhbV9hc3NpZ25lZV9ncm91cDogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwOiBbXSxcbiAgICAgIGFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE6ICdBTEwnLFxuICAgICAgcHJvZ3JhbV9yZXZpZXdlcjogW10sXG4gICAgICBwcm9ncmFtX3Jldmlld2VyX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcjogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA6IFtdLFxuICAgICAgcmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYTogJ1NFUVVFTlRJQUwnLFxuICAgICAgcHJvZ3JhbV9vdmVyc2VlcjogW10sXG4gICAgICBwcm9ncmFtX292ZXJzZWVyX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fZGVmYXVsdF9vdmVyc2VlcjogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA6IFtdLFxuICAgICAgcHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcjogW10sXG4gICAgICBwcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwOiBbXSxcbiAgICAgIHByb2dyYW1fYXNzZXNzbWVudHM6IFtdLFxuICAgICAgZXZpZGVuY2VfcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgYWxsb3dfYW55X2ZpbGVfa2V5X2V2aWRlbmNlOiBmYWxzZSxcbiAgICAgIGN1c3RvbV9maWVsZHM6IFtdLFxuICAgICAgcHJvZ3JhbV9zdGF0ZTogMCxcbiAgICB9O1xuICAgIHRoaXMucmVzZXRBZGRpdGlvbmFsT3B0aW9uKCk7XG4gICAgdGhpcy5wcm9ncmFtRm9ybS5yZXNldCgpO1xuICAgIHRoaXMucHJvZ3JhbUZvcm0ucGF0Y2hWYWx1ZShERUZBVUxUX1ZBTFVFUyk7XG4gICAgdGhpcy5lZGl0b3JEYXRhID0ge1xuICAgICAgcHJvZ3JhbU9iamVjdGl2ZTogJycsXG4gICAgICBwcm9ncmFtRGVzY3JpcHRpb246ICcnLFxuICAgIH07XG4gICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmlzTmFtZUV4aXN0cyA9IGZhbHNlO1xuICAgIHRoaXMuZmV0Y2hSb2xlcygpO1xuICAgIHRoaXMucmVmcmVzaEZvcm0uZW1pdCh0cnVlKTtcbiAgICB0aGlzLmZvcm0ubmF0aXZlRWxlbWVudC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgICBibG9jazogJ3N0YXJ0JyxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlU21pbGV5KGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNob3dTbWlsZXkgPSBmYWxzZTtcbiAgICB0aGlzLnVpS2l0U2VydmljZS5pc1NtaWxleU9uID0gZmFsc2U7XG4gICAgdGhpcy5jbG9zZVdvcmtmbG93LmVtaXQoeyBldnQ6ICcnLCBjb25maXJtOiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgcHJvZ3JhbSBkZXRhaWxzIHdoZW4gdXNlciBpcyB0cnlpbmcgdG8gZWRpdCBwcm9ncmFtXG4gICAqL1xuICBnZXRQcm9ncmFtRGV0YWlscygpIHtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlXG4gICAgICAuZ2V0UHJvZ3JhbSh0aGlzLnByb2dyYW1JZClcbiAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9uYW1lJywgcmVzPy5uYW1lKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fdHlwZScsIHJlcz8ucHJvZ3JhbVR5cGUpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vYmplY3RpdmUnLCByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy50ZXh0KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2FsbF91c2VyX2luX3JvbGUnLCByZXM/LmFsbF91c2VyX2luX3JvbGUpO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncHJvZ3JhbV9kZXNjcmlwdGlvbl9hdHRhY2htZW50cycsXG4gICAgICAgICAgcmVzPy5kZXNjcmlwdGlvbj8uYXR0YWNobWVudHNcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoXG4gICAgICAgICAgJ3Byb2dyYW1fb2JqZWN0aXZlX2F0dGFjaG1lbnRzJyxcbiAgICAgICAgICByZXM/LnByb2dyYW1fb2JqZWN0aXZlPy5hdHRhY2htZW50c1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncGVyZm9ybWFuY2VfY2FsY3VsYXRpb24nLFxuICAgICAgICAgIHJlcz8uY2FsY3VsYXRlX3Bhc3RfdXBjb21pbmdfZXZlbnRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JlY3VycmluZ19mcmVxdWVuY3knLCByZXM/LnByb2dyYW1fZnJlcXVlbmN5KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlcz8ucHJvZ3JhbV9mcmVxdWVuY3kgJiZcbiAgICAgICAgICB0aGlzLm1vZGUgPT09ICdFRElUJyAmJlxuICAgICAgICAgICh0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZylcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgnbG9ja19zY29wZV9jaGFuZ2UnLCByZXM/LmxvY2tfc2NvcGUpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5sb2NrX3Njb3BlICYmXG4gICAgICAgICAgKHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uU0NPUEVfQ0hBTkdFUyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fc3RhdGUnLCByZXM/LnN0YXRlKTtcbiAgICAgICAgY29uc3QgcmMgPSByZXMucmNfZGV0YWlscy5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uZWxlLCBpdGVtX25hbWU6IGVsZT8ucmNfbmFtZSwgaXRlbV9pZDogZWxlPy5yY19pZCB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3JjJywgcmMpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5yY19kZXRhaWxzICYmXG4gICAgICAgICAgcmVzPy5yY19kZXRhaWxzPy5sZW5ndGggJiZcbiAgICAgICAgICAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SQyA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2V2aWRlbmNlX3JlcXVpcmVkJywgcmVzPy5ldmlkZW5jZV91cGxvYWRfZmxhZyk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnLCByZXM/LmlzX2tleV9ldmlkZW5jZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAocmVzPy5ldmlkZW5jZV91cGxvYWRfZmxhZyB8fCByZXM/LmlzX2tleV9ldmlkZW5jZSkgJiZcbiAgICAgICAgICAodGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5GT1JNQVRFX0VWSURFTkNFID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsXG4gICAgICAgICAgcmVzLmRlZmF1bHRfYXNzaWduZWVfdHlwZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAncmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYScsXG4gICAgICAgICAgcmVzLmRlZmF1bHRfcmV2aWV3ZXJzX3R5cGVcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbURlc2NyaXB0aW9uID0gcmVzLmRlc2NyaXB0aW9uPy50ZXh0O1xuICAgICAgICB0aGlzLmVkaXRvckRhdGEucHJvZ3JhbU9iamVjdGl2ZSA9IHJlcy5wcm9ncmFtX29iamVjdGl2ZT8udGV4dDtcbiAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2ZyYW1ld29yaycsIHtcbiAgICAgICAgICAuLi5yZXMuZnJhbWV3b3JrX2RldGFpbHMsXG4gICAgICAgICAgLi4ueyBfaWQ6IHJlcz8uZnJhbWV3b3JrX2RldGFpbHM/LmZyYW1ld29ya19pZCB9LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3Qgcm9sZSA9IHJlcz8ucm9sZXM/Lm1hcCgoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgX2lkOiBlbGU/LnJvbGVJZCxcbiAgICAgICAgICAgIHJvbGVOYW1lOiBlbGU/LnJvbGVOYW1lLFxuICAgICAgICAgICAgbGljZW5zZVR5cGU6IGVsZT8ubGljZW5zZVR5cGUsXG4gICAgICAgICAgICBwZXJtaXNzaW9uR3JvdXBOYW1lOiBlbGU/LnBlcm1pc3Npb25Hcm91cE5hbWUsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX3JvbGVzJywgcm9sZSk7XG4gICAgICAgIGlmIChyZXM/LnJvbGVzICYmIHJlcz8ucm9sZXM/Lmxlbmd0aCAmJiB0aGlzLm1vZGUgPT09ICdFRElUJykge1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5ST0xFUyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcy5hc3Nlc3NtZW50RGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICByZXMuYXNzZXNzbWVudERhdGEgPSByZXMuYXNzZXNzbWVudERhdGEubWFwKChlbGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4uZWxlLFxuICAgICAgICAgICAgICBhc3Nlc3NtZW50SWRzOiBlbGU/LmFzc2Vzc21lbnRzLm1hcCgoYXNzZXNzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5hc3Nlc3MsIGlkOiBhc3Nlc3M/Ll9pZCB9O1xuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXNzZXNzbWVudHMnLCByZXMuYXNzZXNzbWVudERhdGEpO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTRVNTTUVOVCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzLmN1c3RvbV9maWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ2N1c3RvbV9maWVsZHMnLCByZXMuY3VzdG9tX2ZpZWxkcyk7XG4gICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkNVU1RPTV9GSUVMRFMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNBcHByb3ZlckRpc2FibGVkID0gcmVzPy5pc0FwcHJvdmVyRGlzYWJsZWQgPz8gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLmlzQXBwcm92ZXJEaXNhYmxlZCkge1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlRWxlbWVudHNGcm9tTW9yZU9wdGlvbnMuZW1pdChbJ0FQUFJPVkVSJ10pO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBvcHVsYXRlTWVtYmVycyhyZXMpO1xuICAgICAgICB0aGlzLnBvcHVsYXRlR3JvdXBzKHJlcyk7XG4gICAgICAgIHRoaXMuZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoJ2dldFByb2dyYW1EZXRhaWxzJyk7XG4gICAgICAgIHRoaXMuZmV0Y2hHcm91cHNBc3NvY2lhdGVkV2l0aFJvbGVzKCk7XG4gICAgICAgIHRoaXMuZmV0Y2hPcmdhbml6YXRpb25Hcm91cCgpO1xuICAgICAgICB0aGlzLmZldGNoT3JnYW5pemF0aW9uVXNlcnMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcG9wdWxhdGVNZW1iZXJzKHJlczogYW55KSB7XG4gICAgdGhpcy5sb2FkZXIgPSB0cnVlO1xuICAgIGNvbnN0IGlkcyA9IFtcbiAgICAgIC4uLm5ldyBTZXQoW1xuICAgICAgICAuLi4ocmVzPy5vd25lcnMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5hcHByb3ZlcnMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5hc3NpZ25lZV9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LnJldmlld2VycyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfcmV2aWV3ZXJzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbCA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/Lm92ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbCA/PyBbXSkuZmlsdGVyKChlbGU6IGFueSkgPT4gZWxlKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmNjX2VtYWlsID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWwgPz8gW10pLmZpbHRlcihcbiAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVxuICAgICAgICApLFxuICAgICAgXSksXG4gICAgXTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldE1lbWViZXJCeUlkcyhpZHMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgICBpZiAocmVzLm93bmVycyAmJiByZXM/Lm93bmVycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ub3duZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzJywgb3duZXJzKTtcbiAgICAgICAgICBpZiAodGhpcy5tb2RlID09PSAnRURJVCcpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PV05FUlMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXMuYXBwcm92ZXJzICYmXG4gICAgICAgICAgcmVzPy5hcHByb3ZlcnM/Lmxlbmd0aCAmJlxuICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgKSB7XG4gICAgICAgICAgY29uc3QgYXBwcm92ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uYXBwcm92ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fYXBwcm92ZXInLCBhcHByb3ZlcnMpO1xuICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BUFBST1ZFUiA9IHRydWU7XG4gICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8uYXNzaWduZWVfaWRzICYmIHJlcz8uYXNzaWduZWVfaWRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmFzc2lnbmVlX2lkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Fzc2lnbmVlJywgYXNzaWduZWUpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9BU1NJR05FRVMgPSBhc3NpZ25lZTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9pZHMgJiYgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2lkcy5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2RlZmF1bHRfYXNzaWduZWUnLCBhc3NpZ25lZSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/LnJldmlld2VycyAmJiByZXM/LnJldmlld2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ucmV2aWV3ZXJzLmluY2x1ZGVzKGVsZT8ubWVtYmVyX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fcmV2aWV3ZXInLCByZXZpZXdlcnMpO1xuICAgICAgICAgIHRoaXMubGlzdHMuREVGQVVMVF9SRVZJRVdFUlMgPSByZXZpZXdlcnM7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMgJiYgcmVzPy5kZWZhdWx0X3Jldmlld2Vycz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8uZGVmYXVsdF9yZXZpZXdlcnMuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyJywgcmV2aWV3ZXJzKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucG9wdWxhdGVPcHRpb25hbEZpZWxkcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzPy5vdmVyc2VlcnMgJiYgcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsPy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zdCBjYyA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWwuaW5jbHVkZXMoZWxlPy5tZW1iZXJfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9vdmVyc2VlcicsIGNjKTtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfT1ZFUlNFRVJTID0gY2M7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlT3B0aW9uYWxGaWVsZHMoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X292ZXJzZWVycyAmJlxuICAgICAgICAgIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoIHx8XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsPy5sZW5ndGgpXG4gICAgICAgICkge1xuICAgICAgICAgIGlmIChyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0Q0MgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyJywgZGVmYXVsdENDKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlcz8uZGVmYXVsdF9vdmVyc2VlcnM/LmZhaWx1cmVfY2NfZW1haWw/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZmFpbENDID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgICAgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbC5pbmNsdWRlcyhlbGU/Lm1lbWJlcl9pZClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2VlcicsIGZhaWxDQyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZU9wdGlvbmFsRmllbGRzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcbiAgfVxuXG4gIHBvcHVsYXRlR3JvdXBzKHJlczogYW55KSB7XG4gICAgY29uc3QgaWRzID0gW1xuICAgICAgLi4ubmV3IFNldChbXG4gICAgICAgIC4uLihyZXM/Lm93bmVyc19ncm91cCA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmFzc2lnbmVlX2dyb3VwX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzID8/IFtdKSxcbiAgICAgICAgLi4uKHJlcz8ub3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5yZXZpZXdlcl9ncm91cF9pZHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkcyA/PyBbXSksXG4gICAgICAgIC4uLihyZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgPz8gW10pLFxuICAgICAgICAuLi4ocmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHMgPz8gW10pLFxuICAgICAgXSksXG4gICAgXTtcbiAgICB0aGlzLnByb2dyYW1TZXJ2aWNlLmdldE1lbWJlckJ5R3JvdXBzKGlkcykuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSByZXNwPy5kYXRhO1xuICAgICAgICBpZiAocmVzLm93bmVyc19ncm91cCAmJiByZXM/Lm93bmVyc19ncm91cD8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3Qgb3duZXJzID0gcmVzcG9uc2UuZmlsdGVyKChlbGU6IGFueSkgPT5cbiAgICAgICAgICAgIHJlcz8ub3duZXJzX2dyb3VwPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fb3duZXJzX2dyb3VwJywgb3duZXJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzLmFzc2lnbmVlX2dyb3VwX2lkcyAmJiByZXM/LmFzc2lnbmVlX2dyb3VwX2lkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgYXNzaWduZWUgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5hc3NpZ25lZV9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfQVNTSUdORUVTX0dST1VQID0gYXNzaWduZWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5BU1NJR05FRVMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwX2lkcyAmJlxuICAgICAgICAgIHJlcz8uZGVmYXVsdF9hc3NpZ25lZV9ncm91cF9pZHM/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBhc3NpZ25lZSA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfYXNzaWduZWVfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cCcsIGFzc2lnbmVlKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0lHTkVFUyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChyZXM/LnJldmlld2VyX2dyb3VwX2lkcyAmJiByZXM/LnJldmlld2VyX2dyb3VwX2lkcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgcmV2aWV3ZXIgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5yZXZpZXdlcl9ncm91cF9pZHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZCgncHJvZ3JhbV9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyKTtcbiAgICAgICAgICB0aGlzLmxpc3RzLkRFRkFVTFRfUkVWSUVXRVJTX0dST1VQID0gcmV2aWV3ZXI7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzICYmXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X3Jldmlld2VyX2dyb3VwX2lkcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHJldmlld2VyID0gcmVzcG9uc2U/LmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfcmV2aWV3ZXJfZ3JvdXBfaWRzPy5pbmNsdWRlcyhlbGU/Lmdyb3VwX2lkKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5zZXRGb3JtRmllbGQoJ3Byb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cCcsIHJldmlld2VyKTtcbiAgICAgICAgICB0aGlzLmNvbnRyb2xzLnJldmlld2VyX2NvbXBsZXRpb25fY3JpdGVyaWEudmFsdWUgPVxuICAgICAgICAgICAgdGhpcy5jb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/ICdBTllPTkUnXG4gICAgICAgICAgICAgIDogdGhpcy5jb250cm9scz8ucmV2aWV3ZXJfY29tcGxldGlvbl9jcml0ZXJpYT8udmFsdWU7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5SRVZJRVdFUiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/Lm92ZXJzZWVycz8uY2NfZW1haWxfZ3JvdXBzICYmXG4gICAgICAgICAgcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IG92ZXJzZWVyR3JvdXAgPSByZXNwb25zZS5maWx0ZXIoKGVsZTogYW55KSA9PlxuICAgICAgICAgICAgcmVzPy5vdmVyc2VlcnM/LmNjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoZWxlPy5ncm91cF9pZClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKCdwcm9ncmFtX292ZXJzZWVyX2dyb3VwJywgb3ZlcnNlZXJHcm91cCk7XG4gICAgICAgICAgdGhpcy5saXN0cy5ERUZBVUxUX09WRVJTRUVSU19HUk9VUCA9IG92ZXJzZWVyR3JvdXA7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5vcmdEZXRhaWxzPy5oYXNQcm9ncmFtRnVsbFBlcm1pc3Npb24gfHxcbiAgICAgICAgICAgICF0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWdcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5PVkVSU0VFUiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHMgJiZcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/Lmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBkZWZhdWx0T3ZlcnNlZXJHcm91cCA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5jY19lbWFpbF9ncm91cHM/LmluY2x1ZGVzKGVsZT8uZ3JvdXBfaWQpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLnNldEZvcm1GaWVsZChcbiAgICAgICAgICAgICdwcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgICAgZGVmYXVsdE92ZXJzZWVyR3JvdXBcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMub3JnRGV0YWlscz8uaGFzUHJvZ3JhbUZ1bGxQZXJtaXNzaW9uIHx8XG4gICAgICAgICAgICAhdGhpcy5wcm9ncmFtU2ltcGxpZnlGbGFnXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1ZFUlNFRVIgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcmVzPy5kZWZhdWx0X292ZXJzZWVycz8uZmFpbHVyZV9jY19lbWFpbF9ncm91cHMgJiZcbiAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8ubGVuZ3RoXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IGRlZmF1bHRPdmVyc2VlckZhaWx1cmVHcm91cCA9IHJlc3BvbnNlLmZpbHRlcigoZWxlOiBhbnkpID0+XG4gICAgICAgICAgICByZXM/LmRlZmF1bHRfb3ZlcnNlZXJzPy5mYWlsdXJlX2NjX2VtYWlsX2dyb3Vwcz8uaW5jbHVkZXMoXG4gICAgICAgICAgICAgIGVsZT8uZ3JvdXBfaWRcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuc2V0Rm9ybUZpZWxkKFxuICAgICAgICAgICAgJ3Byb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXAnLFxuICAgICAgICAgICAgZGVmYXVsdE92ZXJzZWVyRmFpbHVyZUdyb3VwXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLm9yZ0RldGFpbHM/Lmhhc1Byb2dyYW1GdWxsUGVybWlzc2lvbiB8fFxuICAgICAgICAgICAgIXRoaXMucHJvZ3JhbVNpbXBsaWZ5RmxhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBcyBvZiBub3cgZ3JvdXBzIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSByZXZpZXdlciBhbmQgb3ZlcnNlZWVyIGlmIHRoaXMgZ3JvdXAgZmVhdHVyZSBnZXRzIGluY29wZXJhdGVkIGluXG4gICAgICAvL2Z1dHVyZSBuZWVkIHRvIGFkZCBncm91cCBjb25kaXRpb24gaGVyZSB0byBwcmVwb3B1bGF0ZSB0aGUgZGF0YSB3aGlsZSBlZGl0aW5nLlxuICAgIH0pO1xuICAgIHRoaXMuY2hlY2tQcm9ncmFtT3B0aW9uRmllbGQoKTtcbiAgfVxuXG4gIHJlc2V0QWRkaXRpb25hbE9wdGlvbigpIHtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUk9MRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uT1dORVJTID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFQUFJPVkVSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlBST0dSQU1fRlJFUVVFTkNZID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlNDT1BFX0NIQU5HRVMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uUkMgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uQVNTSUdORUVTID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLlJFVklFV0VSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLk9WRVJTRUVSID0gZmFsc2U7XG4gICAgdGhpcy5hZGRpdGlvbmFsT3B0aW9uLkFTU0VTU01FTlQgPSBmYWxzZTtcbiAgICB0aGlzLmFkZGl0aW9uYWxPcHRpb24uRk9STUFURV9FVklERU5DRSA9IGZhbHNlO1xuICAgIHRoaXMuYWRkaXRpb25hbE9wdGlvbi5DVVNUT01fRklFTERTID0gZmFsc2U7XG4gIH1cblxuICBjaGVja1Byb2dyYW1PcHRpb25GaWVsZCgpOiBhbnkge1xuICAgIGNvbnN0IGNvZGUgPSBbXG4gICAgICAnUFJPR1JBTV9GUkVRVUVOQ1knLFxuICAgICAgJ1NDT1BFX0NIQU5HRVMnLFxuICAgICAgJ1JDJyxcbiAgICAgICdBU1NJR05FRVMnLFxuICAgICAgJ1JFVklFV0VSJyxcbiAgICAgICdPVkVSU0VFUicsXG4gICAgICAnQVNTRVNTTUVOVCcsXG4gICAgICAnRk9STUFURV9FVklERU5DRScsXG4gICAgICAnQ1VTVE9NX0ZJRUxEUycsXG4gICAgXTtcbiAgICBsZXQgaXNNb3JlT3B0aW9uID0gZmFsc2U7XG4gICAgY29kZS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKHRoaXMuYWRkaXRpb25hbE9wdGlvbltrZXldKSB7XG4gICAgICAgIGlzTW9yZU9wdGlvbiA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5pc1Byb2dyYW1TY29wZSA9IGlzTW9yZU9wdGlvbjtcbiAgfVxuICBlbmFibGVmZWF0dXJlKCkge1xuICAgIHRoaXMuZmVhdHVyZWZsYWdyb2xlID0gdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKFxuICAgICAgJ2ZmX3JvbGVfaW1wcm92ZW1lbnRzJ1xuICAgICk7XG4gICAgdGhpcy5pc0FzY2VudEFsbG93ZWQgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfY29tcGxpYW5jZV9mcmFtZXdvcmsnXG4gICAgKTtcbiAgICB0aGlzLnByb2dyYW1TaW1wbGlmeUZsYWcgPSB0aGlzLmFsbG93ZWRGZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfcHJvZ3JhbV9zaW1wbGlmeSdcbiAgICApO1xuICAgIHRoaXMuZmVhdHVyZWZsYWdHcm91cHMgPVxuICAgICAgdGhpcy5hbGxvd2VkRmVhdHVyZS5pc0ZlYXR1cmVFbmFibGVkKCdmZl9wcm9ncmFtX2dyb3VwcycpO1xuICAgIHRoaXMudG9vbFRpcERhdGEub3duZXIgPSB0aGlzLmZlYXR1cmVmbGFncm9sZVxuICAgICAgPyAnT3duZXJzIGFyZSByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgYSBQcm9ncmFtLiBPbmx5IE93bmVycyBjYW4gbWFrZSBjaGFuZ2VzIHRvIGEgUHJvZ3JhbSBhbmQgdGhlIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uPGJyPlRoZSA8c3Ryb25nPktleSBQb3dlciBVc2VyPC9zdHJvbmc+IGFuZCBhbGwgPGI+UG93ZXIgVXNlcnM8L2I+IHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC4nXG4gICAgICA6ICdPd25lcnMgYXJlIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBhIFByb2dyYW0uIE9ubHkgT3duZXJzIGNhbiBtYWtlIGNoYW5nZXMgdG8gYSBQcm9ncmFtIGFuZCB0aGUgcmVzcG9uc2liaWxpdGllcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS48YnI+VGhlIDxzdHJvbmc+S2V5IEFkbWluPC9zdHJvbmc+IGFuZCBhbGwgPGI+QWRtaW48L2I+IHVzZXJzIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIE93bmVycyBvZiBhIFByb2dyYW0gYnkgZGVmYXVsdC4nO1xuICAgIHRoaXMuZmZfcmNfbGlzdGluZyA9IHRoaXMuYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcmNfbGlzdGluZycpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwid29ya2Zsb3ctcHJvZ3JhbVwiICNmb3JtPlxuICA8Zm9ybSBub3ZhbGlkYXRlIFtmb3JtR3JvdXBdPVwicHJvZ3JhbUZvcm1cIj5cbiAgICA8IS0tIFByb2dyYW0gQ2F0ZWdvcnkgVHlwZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fdHlwZT8udmFsdWUgPiAtMVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuaXNzdWVfdHlwZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5QUk9HUkFNIFRZUEUgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPHRhYi1zZWxlY3RvclxuICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcm9ncmFtX3R5cGVcIlxuICAgICAgICBbZGlzcGxheUFycmF5XT1cImNvbnN0YW50cz8uY2F0ZWdvcnlUeXBlXCJcbiAgICAgID48L3RhYi1zZWxlY3Rvcj5cbiAgICAgIDwhLS0gPHAgKm5nSWY9XCJwcm9ncmFtX25hbWU/LmludmFsaWRcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5BZGQgYSBwcm9ncmFtIHR5cGU8L3A+IC0tPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRnJhbWV3b3JrIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImlzQXNjZW50QWxsb3dlZFwiXG4gICAgICBbY2hlY2tlZF09XCJmYWxzZVwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5jYXNlX2NhdGVnb3J5XCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCI+RlJBTUVXT1JLPC9sYWJlbD5cbiAgICAgIDwhLS0gW3NlbGVjdERpdl09XCJ0cnVlXCIgLS0+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInU2VsZWN0IGEgZnJhbWV3b3JrIHRoYXQgdGhpcyBQcm9ncmFtIHJlbGF0ZXMgdG8nXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlPy5uYW1lXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKCcnLCAnRlJBTUVXT1JLJylcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LmZyYW1ld29yay52YWx1ZT8ubmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgKGNsaWNrKT1cInJlbW92ZSgnJywgJ0ZSQU1FV09SSycpXCIgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIiBjbGFzcz1cImljb25zXCIgPiYjeGU5MGQ7PC9pPiB7e2NvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWU/Lm5hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJjYW5GcmFtZXdvcmtDaGFuZ2VcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnRlJBTUVXT1JLJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvaW5wdXQtd2l0aC1waWxsPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUHJvZ3JhbSBDYXRlZ29yeSBOYW1lIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9uYW1lPy52YWx1ZT8udHJpbSgpPy5sZW5ndGhcIlxuICAgICAgW2FjdGl2ZV09XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLndoYXRcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+UFJPR1JBTSBOQU1FIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dFxuICAgICAgICBJbnB1dFRyaW1cbiAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJvZ3JhbV9uYW1lXCJcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgaXMgdGhlIFByb2dyYW0gbmFtZT9cIlxuICAgICAgLz5cblxuICAgICAgPHBcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9uYW1lPy5lcnJvcnMgJiYgY29udHJvbHM/LnByb2dyYW1fbmFtZT8udG91Y2hlZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIlxuICAgICAgPlxuICAgICAgICBFbnRlciBhIG5hbWUgZm9yIHRoaXMgUHJvZ3JhbS5cbiAgICAgIDwvcD5cbiAgICAgIDxwICpuZ0lmPVwiaXNOYW1lRXhpc3RzXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+XG4gICAgICAgIFByb2dyYW0gbmFtZSBhbHJlYWR5IGV4aXN0cy5cbiAgICAgIDwvcD5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZmlsZXMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1mbGV4LXdyYXAgdngtbXQtMVwiPlxuICAgICAgICA8ZmlsZS1waWxsXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgYXR0YWNobWVudCBvZiBjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWVcbiAgICAgICAgICAgICAgfCBzbGljZSA6IDAgOiAyXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbZXh0ZW5zaW9uXT1cImF0dGFjaG1lbnQ/Lm9yZ19maWxlPy5zcGxpdCgnLicpLnBvcCgpXCJcbiAgICAgICAgICBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImF0dGFjaG1lbnQ/LnVwbG9hZGluZ1wiXG4gICAgICAgICAgKGRlbGV0ZSk9XCJkZWxldGVBdHRhY2htZW50KCdERVNDUklQVElPTicsIGF0dGFjaG1lbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2ZpbGUtcGlsbD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LmRlc2NyaXB0aW9uX2F0dGFjaG1lbnQ/LnZhbHVlPy5sZW5ndGggPiAyXCJcbiAgICAgICAgICBjbGFzcz1cImZpbGUtY291bnRcIlxuICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAoY2xpY2spPVwidXBsb2FkRmlsZS5wb3BvdmVyKClcIlxuICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgPlxuICAgICAgICAgICt7eyBjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWU/Lmxlbmd0aCAtIDIgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjdXBsb2FkRmlsZSBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LXAtMlwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXR0YWNobWVudCBvZiBjb250cm9scz8uZGVzY3JpcHRpb25fYXR0YWNobWVudD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDJcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGZpbGUtcGlsbFxuICAgICAgICAgICAgICAgICAgW2V4dGVuc2lvbl09XCJhdHRhY2htZW50Py5vcmdfZmlsZT8uc3BsaXQoJy4nKS5wb3AoKVwiXG4gICAgICAgICAgICAgICAgICBbbmFtZV09XCJhdHRhY2htZW50Py5vcmdfZmlsZVwiXG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYXR0YWNobWVudD8udXBsb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgIChkZWxldGUpPVwiZGVsZXRlQXR0YWNobWVudCgnREVTQ1JJUFRJT04nLCBhdHRhY2htZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvZmlsZS1waWxsPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgIFsobmdNb2RlbCldPVwiZWRpdG9yRGF0YS5wcm9ncmFtRGVzY3JpcHRpb25cIlxuICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIlxuICAgICAgICAoc2VuZFNhdmVkRmlsZXMpPVwic2VsZWN0RmlsZSgnREVTQ1JJUFRJT04nLCAkZXZlbnQpXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdwcm9ncmFtX2Rlc2NyaXB0aW9uJywgJGV2ZW50KVwiXG4gICAgICAgIFtlZGl0b3JDb25maWddPVwiY29uc3RhbnRzPy5kZXNjcmlwdGlvblwiXG4gICAgICA+XG4gICAgICA8L3Zjb21wbHktZWRpdG9yPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gT2JqZWN0aXZlIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9vYmplY3RpdmU/LnZhbHVlPy50cmltKCk/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPQkpFQ1RJVkUnXCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgc2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdPQkpFQ1RJVkUnXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMub2JqZWN0aXZlc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5PQkpFQ1RJVkVcbiAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3Bhbj4gLS0+XG4gICAgICA8L2xhYmVsPlxuICAgICAgPHZjb21wbHktZWRpdG9yXG4gICAgICAgIFsobmdNb2RlbCldPVwiZWRpdG9yRGF0YS5wcm9ncmFtT2JqZWN0aXZlXCJcbiAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSB9XCJcbiAgICAgICAgKHNlbmRTYXZlZEZpbGVzKT1cInNlbGVjdEZpbGUoJ09CSkVDVElWRScsICRldmVudClcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRGb3JtRmllbGQoJ3Byb2dyYW1fb2JqZWN0aXZlJywgJGV2ZW50LCB0cnVlKVwiXG4gICAgICAgIFtlZGl0b3JDb25maWddPVwiY29uc3RhbnRzPy5vYmplY3RpdmVcIlxuICAgICAgPlxuICAgICAgPC92Y29tcGx5LWVkaXRvcj5cbiAgICAgIDwhLS0gPHAgKm5nSWY9XCIhaXNPYmplY3RpdmVWYWxpZFwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlNwZWNpZnkgdGhlIG9iamVjdGl2ZSBmb3IgdGhpcyBQcm9ncmFtLjwvcD4gLS0+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBSb2xlcyAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5ST0xFU1wiXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdST0xFJ1wiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdST0xFJ1wiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5yb2xlc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiIGlkPVwicGVybWlzc2lvbmdyb3VwXCJcbiAgICAgICAgPnt7IGZmX3JjX2xpc3RpbmcgPyBcIlBFUk1JU1NJT05TXCIgOiBcIlBFUk1JU1NJT04gR1JPVVAoUylcIiB9fVxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlcXVpcmVkXCI+Kjwvc3BhblxuICAgICAgICA+PGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgIGZmX3JjX2xpc3RpbmdcbiAgICAgICAgICAgICAgPyAnUGVybWlzc2lvbnMgbGV0IHlvdSBzcGVjaWZ5IHRoZSB1c2VycyB0aGF0IGNhbiBiZSDigJxPd25lcnPigJ0nICtcbiAgICAgICAgICAgICAgICAoYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpXG4gICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgOiAnIGFuZCDigJxBcHByb3ZlcnPigJ0nKSArXG4gICAgICAgICAgICAgICAgJ29mIGEgUHJvZ3JhbS4nXG4gICAgICAgICAgICAgIDogJ1Blcm1pc3Npb24gZ3JvdXAocykgbGV0IHlvdSBzcGVjaWZ5IHRoZSB1c2VycyB0aGF0IGNhbiBiZSDigJxPd25lcnPigJ0nICtcbiAgICAgICAgICAgICAgICAoYWxsb3dlZEZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZCgnZmZfcHJvZ3JhbV9zaW1wbGlmeScpXG4gICAgICAgICAgICAgICAgICA/ICcgJ1xuICAgICAgICAgICAgICAgICAgOiAnIGFuZCDigJxBcHByb3ZlcnPigJ0nKSArXG4gICAgICAgICAgICAgICAgJ29mIGEgUHJvZ3JhbS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIlJvbGVIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIGlkPVwicGxhY2Vob2xkZXJuYW1lXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgIGZmX3JjX2xpc3RpbmdcbiAgICAgICAgICAgID8gJ1doaWNoIHVzZXIgcGVybWlzc2lvbnMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPydcbiAgICAgICAgICAgIDogJ1doaWNoIHVzZXIgcGVybWlzc2lvbiBncm91cHMgaGF2ZSBhY2Nlc3MgdG8gdGhpcyBwcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ1JPTEUnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICFsaXN0cy5TWVNURU1fUk9MRV9JRFMuaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/Ll9pZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0sICdST0xFJylcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICA/IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucGVybWlzc2lvbkdyb3VwTmFtZVxuICAgICAgICAgICAgICAgICAgOiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnJvbGVOYW1lXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGUgJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgID8gY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5wZXJtaXNzaW9uR3JvdXBOYW1lXG4gICAgICAgICAgICAgICAgICA6IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZVswXT8ucm9sZU5hbWVcbiAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAoY2xpY2spPVwicm9sZS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSAqbmdJZj1cIiFsaXN0cy5TWVNURU1fUk9MRV9JRFMuaW5jbHVkZXMoY29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlWzBdPy5faWQpXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0sJ1JPTEUnKVwiIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT57e2ZlYXR1cmVmbGFncm9sZSAmJiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgPyBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnBlcm1pc3Npb25Hcm91cE5hbWUgOiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWVbMF0/LnJvbGVOYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyb2xlLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fcm9sZXM/LnZhbHVlPy5sZW5ndGggLSAxfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnUk9MRSdcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUk9MRScpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxwICpuZ0lmPVwiZmFsc2VcIiBjbGFzcz1cImVycm9yLW1lc3NhZ2VcIj5cbiAgICAgICAge3sgZmVhdHVyZWZsYWdyb2xlID8gXCJBZGQgYSBwZXJtaXNzaW9uIGdyb3VwKHMpXCIgOiBcIkFkZCBhIHJvbGUocylcIiB9fVxuICAgICAgPC9wPlxuICAgICAgPGFwcC1wb3BvdmVyICNyb2xlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBjb250cm9scz8ucHJvZ3JhbV9yb2xlcz8udmFsdWUgfCBzbGljZSA6IDFcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhbGlzdHMuU1lTVEVNX1JPTEVfSURTLmluY2x1ZGVzKGRhdGE/Ll9pZClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVJvbGUoZGF0YSwgJ1JPTEUnKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgZmVhdHVyZWZsYWdyb2xlICYmIGRhdGE/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA/IGRhdGE/LnBlcm1pc3Npb25Hcm91cE5hbWVcbiAgICAgICAgICAgICAgICAgICAgICA6IGRhdGE/LnJvbGVOYW1lXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIE93bmVycyAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5PV05FUlNcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVycy52YWx1ZT8ubGVuZ3RoID4gMCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXAudmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPV05FUidcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnT1dORVInXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmNhc2Vfb3duZXJzXCJcbiAgICA+XG4gICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgPk9XTkVSKFMpXG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJpY29uXCJcbiAgICAgICAgICAqbmdJZj1cInRvb2xUaXBEYXRhLm93bmVyICE9PSAnJ1wiXG4gICAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5vd25lclwiXG4gICAgICAgICAgICAgIGlkPVwiT3duZXJIZWxwVGV4dFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdPV05FUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnMudmFsdWVbMF1cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNCBncmVlbkJnXCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm93bmVyLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICFbJ0FETUlOJywgJ0tFWV9BRE1JTicsICdMT0dHRURfSU4nXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnT1dORVJfR1JPVVAnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJncm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX293bmVyc19ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ09XTkVSJ1wiXG4gICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY29udHJvbHM/LmFsbF91c2VyX2luX3JvbGU/LnZhbHVlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ09XTkVSJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8cCAqbmdJZj1cImZhbHNlXCIgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+QWRkIGEgb3duZXIocyk8L3A+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0yXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7XG4gICAgICAgICAgICBmZWF0dXJlZmxhZ3JvbGVcbiAgICAgICAgICAgICAgPyBcIkFMTCBVU0VSUyBBU1NPQ0lBVEVEIFdJVEggVEhFIFNFTEVDVEVEIFBFUk1JU1NJT04gR1JPVVBTXCJcbiAgICAgICAgICAgICAgOiBcIkFMTCBVU0VSUyBBU1NPQ0lBVEVEIFdJVEggVEhFIFNFTEVDVEVEIFJPTEVTXCJcbiAgICAgICAgICB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHN3aXRjaFxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFsbF91c2VyX2luX3JvbGVcIlxuICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0QWxsUm9sZU93bmVyKCRldmVudClcIlxuICAgICAgICA+PC9zd2l0Y2g+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjb3duZXIgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvd25lciBvZiBjb250cm9scz8ucHJvZ3JhbV9vd25lcnM/LnZhbHVlIHwgc2xpY2UgOiAxXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdHMuTk9OX1JFTU9WQUJMRV9PV05FUlMgfCBsaXN0VG9JZCA6ICdtZW1iZXJfaWQnXG4gICAgICAgICAgICAgICAgICAgICAgKS5pbmNsdWRlcyhvd25lcj8ubWVtYmVyX2lkKVxuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShvd25lciwgJ09XTkVSJylcIlxuICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IG93bmVyPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZ3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBvd25lciBvZiBjb250cm9scz8ucHJvZ3JhbV9vd25lcnNfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgIVsnQURNSU4nLCAnS0VZX0FETUlOJywgJ0xPR0dFRF9JTiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgb3duZXI/LnVzZXJfcm9sZVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUob3duZXIsICdPV05FUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBvd25lcj8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIENvbGxhYm9yYXRvciAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5DT0xMQUJPUkFUT1JcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2NvbGxhYm9yYXRvcj8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdDT0xMQUJPUkFUT1InXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0NPTExBQk9SQVRPUidcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY2FzZV9vd25lcnNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+Q29sbGFib3JhdG9yKFMpIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIj4qPC9zcGFuPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiaWNvblwiXG4gICAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgICAgKG1vdXNlb3Zlcik9XCJkYXRhVG9vbHRpcC5wb3BvdmVyKClcIlxuICAgICAgICAgIChtb3VzZWxlYXZlKT1cImRhdGFUb29sdGlwLmNsb3NlUG9wb3ZlcigpXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTFmOzwvaT48L3NwYW5cbiAgICAgICAgPlxuICAgICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWluZm8tY2FyZFwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJ0b29sVGlwRGF0YS5vd25lclwiXG4gICAgICAgICAgICAgIGlkPVwiT3duZXJIZWxwVGV4dFwiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCInV2hvIGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyB0aGlzIHByb2dyYW0/J1wiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdDT0xMQUJPUkFUT1InKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fY29sbGFib3JhdG9yPy52YWx1ZVswXVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2NvbGxhYm9yYXRvcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LnByb2dyYW1fY29sbGFib3JhdG9yPy52YWx1ZVswXT8ubWVtYmVyX25hbWUgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00IGdyZWVuQmdcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29sbGFib3JhdG9yLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fY29sbGFib3JhdG9yPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fY29sbGFib3JhdG9yPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdDT0xMQUJPUkFUT1InXCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJjb250cm9scz8uYWxsX3VzZXJfaW5fcm9sZT8udmFsdWVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnQ09MTEFCT1JBVE9SJylcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT5FZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWVuZCB2eC1tdC0yXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0yXCJcbiAgICAgICAgPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGFwcC1wb3BvdmVyICNjb2xsYWJvcmF0b3IgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb2xsYWJvcmF0b3Igb2YgY29udHJvbHM/LnByb2dyYW1fY29sbGFib3JhdG9yPy52YWx1ZSB8IHNsaWNlIDogMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGNvbGxhYm9yYXRvciwgJ0NPTExBQk9SQVRPUicpXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBjb2xsYWJvcmF0b3I/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gUGVyZm9ybWFuY2UgQ2FsY3VsYXRlZCAtLT5cbiAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImNvbnRyb2xzPy5wZXJmb3JtYW5jZV9jYWxjdWxhdGlvbj8udmFsdWVcIiBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdQRVJGT1JNQU5DRSdcIiBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmIGFjdGl2ZUxpc3QgIT09ICdQRVJGT1JNQU5DRSdcIlxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3BlcmZvcm1hbmNlLWNhbGMuc3ZnJ1wiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiPkhPVyBTSE9VTEQgVEhFIFBFUkZPUk1BTkNFIE9GIFRISVMgUFJPR1JBTSBCRSBDQUxDVUxBVEVEPzwvbGFiZWw+XG4gICAgICAgICAgICA8dGFiLXNlbGVjdG9yIGZvcm1Db250cm9sTmFtZT1cInBlcmZvcm1hbmNlX2NhbGN1bGF0aW9uXCIgW2Rpc3BsYXlBcnJheV09XCJjb25zdGFudHM/LnBlcmZvcm1hbmNlQ2FsY3VsYXRpb25cIj5cbiAgICAgICAgICAgIDwvdGFiLXNlbGVjdG9yPlxuICAgICAgICA8L2Zvcm0tZmllbGQ+IC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Byb2dyYW1TY29wZVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInNjb3BlLWxhYmVsIHZ4LWZzLTEwIHZ4LXR4dC13aGl0ZSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LW1iLTUgdngtbGgtNCB2eC1kLWlubGluZS1ibG9ja1wiXG4gICAgICA+XG4gICAgICAgIFBST0dSQU0gU0NPUEVcbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSA8aSAgY2xhc3M9XCJpY29ucyBpbmZvLWljb24gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiIFthcHBUb29sdGlwXT1cInRvb2x0aXAucHJvZ3JhbVNjb3BlXCIgcGxhY2VtZW50PVwiYm90dG9tXCIgZGVsYXk9XCIwXCIgdHlwZT1cIndoaXRlXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPiYjeGU5MWY7PC9pPiAtLT5cbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzPVwiaWNvbiBpbmZvLWljb24gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICpuZ0lmPVwidG9vbFRpcERhdGEucHJvZ3JhbVNjb3AgIT09ICcnXCJcbiAgICAgICAgbGliUG9wb3ZlckhvdmVyXG4gICAgICAgIChtb3VzZW92ZXIpPVwiZGF0YVRvb2x0aXAucG9wb3ZlcigpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiZGF0YVRvb2x0aXAuY2xvc2VQb3BvdmVyKClcIlxuICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgID48aSBjbGFzcz1cImljb25zXCI+JiN4ZTkxZjs8L2k+PC9zcGFuXG4gICAgICA+XG4gICAgICA8cG9wb3Zlci1ob3ZlciAjZGF0YVRvb2x0aXA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1pbmZvLWNhcmRcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZ4LWluZm8tY2FyZC1ib2R5XCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwidG9vbFRpcERhdGEucHJvZ3JhbVNjb3BlXCJcbiAgICAgICAgICAgIGlkPVwiUFNIZWxwVGV4dFwiXG4gICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvcG9wb3Zlci1ob3Zlcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDwhLS0gUHJvZ3JhbSBGcmVxdWVuY3kgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUFJPR1JBTV9GUkVRVUVOQ1lcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWUpXCJcbiAgICAgIFthY3RpdmVdPVwiYWN0aXZlTGlzdCA9PT0gJ0ZSRVFVRU5DWSdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSRVFVRU5DWSdcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5yZWN1cnJpbmdcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIiBpZD1cIlBEQ2hhbmdlXCJcbiAgICAgICAgPlBST0dSQU0gRFVSQVRJT05cbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdQcm9ncmFtIER1cmF0aW9uIHJlZmVycyB0byB0aGUgZHVyYXRpb24gb2YgdGhlIFByb2dyYW0uIEEgUHJvZ3JhbSBjYW4gb2NjdXIgaW4gcGVycGV0dWl0eSwgb3IgaXQgY2FuIG9jY3VyIHVudGlsIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgYnVzaW5lc3MgY3ljbGUgdGhhdCBoYXMgYmVlbiBzcGVjaWZpZWQgaW4gJyArXG4gICAgICAgICAgICBidXNpbmVzc0N5Y2xlLnNlbGVjdGVkQ3ljbGUuYnVzaW5lc3NfY3ljbGUgK1xuICAgICAgICAgICAgJy4gIEFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIHRoYXQgUHJvZ3JhbSB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBQcm9ncmFtIER1cmF0aW9uLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUHJvZ3JhbUR1cmF0aW9uSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0IHZ4LW1iLTBcIj5JcyB0aGlzIHByb2dyYW0gcmVjdXJyaW5nPzwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tZ3JvdXAgcHJvZ3JhbVwiPlxuICAgICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgICBbbmFtZV09XCIncmVjdXJyaW5nX2ZyZXF1ZW5jeSdcIlxuICAgICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWVcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIHRydWUpXCJcbiAgICAgICAgICAgICAgPllFUzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICAgIFtuYW1lXT1cIidyZWN1cnJpbmdfZnJlcXVlbmN5J1wiXG4gICAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8ucmVjdXJyaW5nX2ZyZXF1ZW5jeT8udmFsdWVcIlxuICAgICAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cInNldEZvcm1GaWVsZCgncmVjdXJyaW5nX2ZyZXF1ZW5jeScsIGZhbHNlKVwiXG4gICAgICAgICAgICAgID5OTzwvYXBwLWNzLXJhZGlvXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBTY29wZSBDaGFuZ2VzIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlNDT1BFX0NIQU5HRVNcIlxuICAgICAgW2NoZWNrZWRdPVwiW3RydWUsIGZhbHNlXS5pbmNsdWRlcyhjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlKVwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdTQ09QRSdcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnU0NPUEUnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmxvY2tfc2NvcGVcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+TG9jayB0aGUgUHJvZ3JhbSBTY29wZVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0lmIHRoZSBQcm9ncmFtIFNjb3BlIGlzIGxvY2tlZCwgbmVpdGhlciB0aGUgUHJvZ3JhbSBub3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggdGhlIFByb2dyYW0gY2FuIGJlIGVkaXRlZCBvbmNlIHRoZSBQcm9ncmFtIGJlZ2lucy4gSW4gb3JkZXIgdG8gZWRpdCB0aGUgUHJvZ3JhbSBvciB0aGUgbGlua2VkIHJlc3BvbnNpYmlsaXRpZXMsIHRoZSBQcm9ncmFtIGRldGFpbHMgd2lsbCBuZWVkIHRvIGJlIGVkaXRlZC4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIlNjb3BlQ2hhbmdlc0hlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtZm9ybWF0XCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dFwiXG4gICAgICAgICAgPldvdWxkIHlvdSBsaWtlIHRvXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1sYWJlbC10eHQgdngtZnctNTAwXCI+bG9jayBjaGFuZ2VzPC9zcGFuPiB0byB0aGVcbiAgICAgICAgICBwcm9ncmFtIHNjb3BlPzwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgW25hbWVdPVwiJ2xvY2tfc2NvcGVfY2hhbmdlJ1wiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIHRydWUpXCJcbiAgICAgICAgICAgID5ZRVM8L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInbG9ja19zY29wZV9jaGFuZ2UnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8ubG9ja19zY29wZV9jaGFuZ2U/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdsb2NrX3Njb3BlX2NoYW5nZScsIGZhbHNlKVwiXG4gICAgICAgICAgICA+Tk88L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIEZyYW1ld29yayAtLT5cbiAgICA8IS0tIDxmb3JtLWZpZWxkIFtjaGVja2VkXT1cImZhbHNlXCIgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0ZSQU1FV09SSydcIlxuICAgICAgICAgICAgW2ltZ109XCInaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L2NhdGVnb3J5LnN2ZydcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj5GUkFNRVdPUks8L2xhYmVsPlxuICAgICAgICAgICAgPGlucHV0LXdpdGgtcGlsbCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGVjdCBhIGZyYW1ld29yayB0aGF0IHRoaXMgUHJvZ3JhbSByZWxhdGVzIHRvJ1wiIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdGUkFNRVdPUksnKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZFwiICpuZ0lmPVwiY29udHJvbHM/LmZyYW1ld29yaz8udmFsdWU/LmZyYW1ld29ya19uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj48aSAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5mcmFtZXdvcmsudmFsdWUsJ0ZSQU1FV09SSycpXCIgY2xhc3M9XCJpY29uc1wiPiYjeGU5MGQ7PC9pPnt7Y29udHJvbHM/LmZyYW1ld29yaz8udmFsdWU/LmZyYW1ld29ya19uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvdW50XCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZnJhbWV3b3JrLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+KzU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFjdGl2ZUxpc3QhPT0nRlJBTUVXT1JLJ1wiIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0ZSQU1FV09SSycpXCIgY2xhc3M9XCJlZGl0XCIgdHlwZT1cImJ1dHRvblwiPjxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOWJhOzwvaT4gRWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgICAgICA8YXBwLXBvcG92ZXIgI2ZyYW1ld29yayBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgWzEsIDEsIDEsIDEsIDEsIDEsIDFdXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbmFnZSBmcmFtZXdvcmsgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgPC9mb3JtLWZpZWxkPiAtLT5cblxuICAgIDwhLS0gUmVzcG9uc2liaWxpdHkgQ2VudGVyIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LlJDXCJcbiAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdSQydcIlxuICAgICAgW2Rpc2FibGVkXT1cInNpZGVFbGVtZW50cy5pbmNsdWRlcyhhY3RpdmVMaXN0KSAmJiBhY3RpdmVMaXN0ICE9PSAnUkMnXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJlc3BvbnNpYmlsaXR5X2NlbnRlclwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5SRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdSZXNwb25zaWJpbGl0eSBDZW50ZXJzIHJlcHJlc2VudCB5b3VyIG9yZ2FuaXphdGlvbmFsIGFuZCBvcGVyYXRpb25hbCBpbmZyYXN0cnVjdHVyZS4gV2hlcmUgUmVzcG9uc2liaWxpdHkgQ2VudGVycyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgUmVzcG9uc2liaWxpdGllcyBDZW50ZXJzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiUkNIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSQycpXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBSZXNwb25zaWJpbGl0eSBDZW50ZXIocykgY2FuIGJlIGxpbmtlZCB0byB0aGUgcmVzcG9uc2liaWxpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnJjPy52YWx1ZSAmJiBjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIj5cbiAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucmM/LnZhbHVlWzBdLCAnUkMnKVwiXG4gICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucmM/LnZhbHVlWzBdPy5pdGVtX25hbWVcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgPnt7IGNvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyYy5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnJjPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPjxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5yYz8udmFsdWVbMF0sJ1JDJylcIj4mI3hlOTBkOzwvaT57e2NvbnRyb2xzPy5yYz8udmFsdWVbMF0/Lml0ZW1fbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucmM/LnZhbHVlPy5sZW5ndGggID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyYy5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5yYz8udmFsdWU/Lmxlbmd0aCAtMSB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdSQydcIlxuICAgICAgICAgICAgY2xhc3M9XCJlZGl0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkMnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3JjIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgcmMgb2YgY29udHJvbHM/LnJjPy52YWx1ZSB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZShyYywgJ1JDJylcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgIHt7IHJjPy5pdGVtX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgPC9mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBBc3NpZ25lZSAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5BU1NJR05FRVNcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJbJ0FTU0lHTkVFJywgJ0RFRkFVTFRfQVNTSUdORUUnXT8uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ0FTU0lHTkVFJywgJ0RFRkFVTFRfQVNTSUdORUUnXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmNhc2VfYXNzaWduZWVzXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0FTU0lHTkVFJ1wiXG4gICAgICAgID5BU1NJR05FRVNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBc3NpZ25lZXMgYXJlIHJlcXVpcmVkIHRvIGNvbXBsZXRlIHRoZSByZXNwb25zaWJpbGl0aWVzIHRoYXQgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIHRoZW0uIFdoZXJlIEFzc2lnbmVlcyBhcmUgc2VsZWN0ZWQgd2hlbiBjcmVhdGluZyBhIFByb2dyYW0sIG9ubHkgdGhvc2UgQXNzaWduZWVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQXNzaWduZWVIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID5cbiAgICAgIDwvbGFiZWw+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1dobyBpcyByZXNwb25zaWJsZSBmb3IgY29tcGxldGluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0lHTkVFJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXSwgJ0FTU0lHTkVFJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0FTU0lHTkVFX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFzc2lnbmVlX2dyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0sJ0FTU0lHTkVFJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZS5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWU/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdBU1NJR05FRV9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJhc3NpZ25lZV9ncm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdBU1NJR05FRScpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjYXNzaWduZWUgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwid2YtYWN0aW9uLWxpc3RcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgIGxldCBhc3NpZ25lZSBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZT8udmFsdWUgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgPGkgKGNsaWNrKT1cInJlbW92ZShhc3NpZ25lZSwgJ0FTU0lHTkVFJylcIiBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZT8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2Fzc2lnbmVlX2dyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fYXNzaWduZWVfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdBU1NJR05FRV9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgY2xhc3M9XCJ2eC1jb250cm9sLXBhbmVsXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdBU1NJR05FRSdcIlxuICAgICAgICA+REVGQVVMVCBBU1NJR05FRVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgQXNzaWduZWVzIGZvciBhbGwgbmV3IHJlc3BvbnNpYmlsaXRpZXMgbGlua2VkIHdpdGggYSBQcm9ncmFtLiBJZiBhIERlZmF1bHQgQXNzaWduZWVzIGlzIHNlbGVjdGVkLCB0aGUgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgdGhlIEFzc2lnbmVlIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LiAnXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkRBSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ0FTU0lHTkVFJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hpY2ggcGVyc29ucyB3aWxsIGJlIHNlbGVjdGVkIGFzIHRoZSBkZWZhdWx0IGFzc2lnbmVlcyBmb3IgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgIFwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgJ0RFRkFVTFRfQVNTSUdORUUnXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVmYXVsdEFzc2lnbmVlLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlPy5sZW5ndGggLSAxIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9BU1NJR05FRV9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVmYXVsdEFzc2lnbmVlR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVbMF0sJ0RFRkFVTFRfQVNTSUdORUUnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWUucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlPy52YWx1ZT8ubGVuZ3RoIC0gMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWU/Lmxlbmd0aFwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJkZWZhdWx0QXNzaWduZWVHcm91cC5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWVfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTEgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9BU1NJR05FRSdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9BU1NJR05FRScpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjZGVmYXVsdEFzc2lnbmVlIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgYXNzaWduZWUgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsICdERUZBVUxUX0FTU0lHTkVFJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZT8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRBc3NpZ25lZUdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZV9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzaWduZWUsICdERUZBVUxUX0FTU0lHTkVFX0dST1VQJylcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJyYWRpby1ncm91cC1zZWxlY3RvclwiXG4gICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCJcbiAgICAgID5cbiAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgIFtuYW1lXT1cIidhc3NpZ25lZSdcIlxuICAgICAgICAgIFtjaGVja2VkXT1cImNvbnRyb2xzPy5hc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FMTCdcIlxuICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdhc3NpZ25lZV9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FMTCcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFMTCBTRUxFQ1RFRCBQRVJTT05TIE5FRUQgVE8gQ09NUExFVEUgVEhJU1xuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnSWYgc2VsZWN0ZWQsIHNlcGFyYXRlIHJlc3BvbnNpYmlsaXRpZXMgd2lsbCBiZSBjcmVhdGVkIGZvciBlYWNoIHBlcnNvbi4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLXJpZ2h0XCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICA+XG4gICAgICAgIDwvYXBwLWNzLXJhZGlvPlxuICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgW25hbWVdPVwiJ2Fzc2lnbmVlJ1wiXG4gICAgICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LmFzc2lnbmVlX2NvbXBsZXRpb25fY3JpdGVyaWE/LnZhbHVlID09PSAnQU5ZT05FJ1wiXG4gICAgICAgICAgKGNoZWNrZWRFdmVudCk9XCJcbiAgICAgICAgICAgIHNldEZvcm1GaWVsZCgnYXNzaWduZWVfY29tcGxldGlvbl9jcml0ZXJpYScsICdBTllPTkUnKVxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICBBTlkgU0VMRUNURUQgUEVSU09OIENBTiBDT01QTEVURSBUSElTXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdJZiBzZWxlY3RlZCwgb25seSBvbmUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBjcmVhdGVkLidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0tZmllbGQ+XG5cbiAgICA8IS0tIFJldmlld2VyIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uUkVWSUVXRVJcIlxuICAgICAgW2NoZWNrZWRdPVwiXG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICBcIlxuICAgICAgW2FjdGl2ZV09XCJbJ1JFVklFV0VSJywgJ0RFRkFVTFRfUkVWSUVXRVInXT8uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ1JFVklFV0VSJywgJ0RFRkFVTFRfUkVWSUVXRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLnJldmlld2VyXCJcbiAgICA+XG4gICAgICA8bGFiZWxcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX1JFVklFV0VSJ1wiXG4gICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5SZXZpZXdlcnNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdSZXZpZXdlcnMgYXJlIHJlcXVpcmVkIHRvIHJldmlldyByZXNwb25zaWJpbGl0aWVzIGFmdGVyIHRoZXkgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gV2hlcmUgUmV2aWV3ZXJzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBSZXZpZXdlcnMgd2lsbCBiZSBhdmFpbGFibGUgZm9yIHNlbGVjdGlvbiB3aGVuIGNyZWF0aW5nIGEgcmVzcG9uc2liaWxpdHkgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uJ1xuICAgICAgICAgIFwiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgaWQ9XCJSZXZpZXdlckhlbHBUZXh0XCJcbiAgICAgICAgICA+JiN4ZWIxNjs8L2lcbiAgICAgICAgPjwvbGFiZWxcbiAgICAgID5cbiAgICAgIDxpbnB1dC13aXRoLXBpbGxcbiAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX1JFVklFV0VSJ1wiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hvIGlzIHJlc3BvbnNpYmxlIGZvciByZXZpZXdpbmcgdGhlIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgIFwiXG4gICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdSRVZJRVdFUicpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWRcIlxuICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwQ29udGFpbmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtcGwtMiB2eC1wci0yXCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0sICdSRVZJRVdFUicpXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3sgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwicmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdSRVZJRVdFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0sJ1JFVklFV0VSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJyZXZpZXdlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJyaWdodFwiPit7e2NvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoIC0xfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdLCdSRVZJRVdFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInJldmlld2VyR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImFjdGl2ZUxpc3QgIT09ICdSRVZJRVdFUidcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2YXRlTGlzdCgnUkVWSUVXRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Jldmlld2VyIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgcmV2aWV3ZXIgb2YgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXI/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUocmV2aWV3ZXIsICdSRVZJRVdFUicpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNyZXZpZXdlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdSRVZJRVdFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bGFiZWxcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImFjdGl2ZUxpc3QgPT09ICdSRVZJRVdFUidcIlxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+REVGQVVMVCBSZXZpZXdlclxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ1RoaXMgb3B0aW9uIGxldHMgeW91IHNwZWNpZnkgdGhlIERlZmF1bHQgUmV2aWV3ZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbS4gV2hlcmUgYSB1c2VyIGhhcyBiZWVuIHNwZWNpZmllZCBhcyBhIERlZmF1bHQgUmV2aWV3ZXIsIHRoYXQgdXNlciB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2VsZWN0ZWQgYXMgdGhlIFJldmlld2VyIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4gQW4gQXNzaWdub3IsIGJlaW5nIHRoZSBwZXJzb24gd2hvIGNyZWF0ZXMgdGhlIHJlc3BvbnNpYmlsaXR5LCBjYW4gb3ZlcnJpZGUgdGhpcyBvcHRpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5LidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiRFJIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgcmV2aWV3ZXJzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9SRVZJRVdFUidcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXIucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdERUZBVUxUX1JFVklFV0VSX0dST1VQJ1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPiYjeGU5YWU7PC9pXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBOYW1lIHZ4LWZzLTExIHZ4LWxhYmVsLXR4dFwiXG4gICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWZhdWx0UmV2aWV3ZXJHcm91cC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7XG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUicpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudCB1c2VyXCIgYXBwUG9wb3ZlciAoY2xpY2spPVwiZGVmYXVsdFJldmlld2VyLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWU/Lmxlbmd0aCAtIDF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoICYmIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlPy5sZW5ndGhcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X3Jldmlld2VyX2dyb3VwPy52YWx1ZVswXSwnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2eC1mcy0xMSB2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2VcIj57e2NvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cImRlZmF1bHRSZXZpZXdlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0RFRkFVTFRfUkVWSUVXRVInXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfUkVWSUVXRVInKVwiXG4gICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI2RlZmF1bHRSZXZpZXdlciBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IHJldmlld2VyIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKHJldmlld2VyLCAnREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgcmV2aWV3ZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNkZWZhdWx0UmV2aWV3ZXJHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgIDx1bCBjbGFzcz1cImFjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwIG9mIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKGdyb3VwLCAnREVGQVVMVF9SRVZJRVdFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmFkaW8tZ3JvdXAtc2VsZWN0b3JcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiYWN0aXZlTGlzdCA9PT0gJ1JFVklFV0VSJ1wiXG4gICAgICA+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ1NFUVVFTlRJQUwnXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ1NFUVVFTlRJQUwnKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlxuICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCA+IDBcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgU0VRVUVOVElBTFxuICAgICAgICAgIDxpXG4gICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAnVGhlIHJlc3BvbnNpYmlsaXR5IHdpbGwgYmUgc2VudCBmb3IgcmV2aWV3IG9uZSBhdCBhIHRpbWUgaW4gdGhlIHNlcXVlbmNlIGRlZmluZWQgYnkgeW91LidcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tcmlnaHRcIlxuICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICAgID4mI3hlOTFmOzwvaVxuICAgICAgICAgID5cbiAgICAgICAgPC9hcHAtY3MtcmFkaW8+XG4gICAgICAgIDxhcHAtY3MtcmFkaW9cbiAgICAgICAgICBbbmFtZV09XCIncmV2aWV3ZXInXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5yZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhPy52YWx1ZSA9PT0gJ0FOWU9ORScgfHxcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAwXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2hlY2tlZEV2ZW50KT1cIlxuICAgICAgICAgICAgc2V0Rm9ybUZpZWxkKCdyZXZpZXdlcl9jb21wbGV0aW9uX2NyaXRlcmlhJywgJ0FOWU9ORScpXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIEFOWSBSRVZJRVdFUiBDQU4gTUFSSyBUSElTIEFTIFJFVklFV0VEXG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGUgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSBzZW50IGZvciByZXZpZXcgdG8gYWxsIHJldmlld2VycyBhdCB0aGUgc2FtZSB0aW1lLiBJZiBhbnlvbmUgb2YgdGhlIHJldmlld2VyIHJldmlld3MgdGhlIHJlc3BvbnNpYmlsaXR5LCBpdCB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmV2aWV3ZWQuJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgPlxuICAgICAgICA8L2FwcC1jcy1yYWRpbz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gT3ZlcnNlZXIgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5PVkVSU0VFUlwiXG4gICAgICBbY2hlY2tlZF09XCJcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggfHxcbiAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCB8fFxuICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgIFwiXG4gICAgICBbYWN0aXZlXT1cImFjdGl2ZUxpc3QgPT09ICdPVkVSU0VFUidcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHM/LmluY2x1ZGVzKGFjdGl2ZUxpc3QpICYmXG4gICAgICAgICFbJ09WRVJTRUVSJywgJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhcbiAgICAgICAgICBhY3RpdmVMaXN0XG4gICAgICAgIClcbiAgICAgIFwiXG4gICAgICBbaW1nXT1cIkFTU0VUUy5vdmVyc2lnaHRcIlxuICAgID5cbiAgICAgIDxsYWJlbFxuICAgICAgICBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiXG4gICAgICAgICAgWydERUZBVUxUX09WRVJTRUVSJywgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcbiAgICAgICAgXCJcbiAgICAgICAgPk92ZXJzaWdodHNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdPdmVyc2lnaHRzIHJlY2VpdmUgdXBkYXRlcyB3aGVuIGEgcmVzcG9uc2liaWxpdHkgaXMgY29tcGxldGVkLCBjb21wbGV0ZWQgd2l0aCBkZWxheSBvciBub3QgY29tcGxldGVkLiBXaGVyZSBPdmVyc2lnaHRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBPdmVyc2lnaHRzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBzZWxlY3Rpb24gd2hlbiBjcmVhdGluZyBhIHJlc3BvbnNpYmlsaXR5IGxpbmtlZCB3aXRoIHRoZSBQcm9ncmFtLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwib3ZlcnNlZXJIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgICBbJ0RFRkFVTFRfT1ZFUlNFRVInLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVxuICAgICAgICBcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgJ1dobyBpcyByZXNwb25zaWJsZSBmb3Igb3ZlcnNlZWluZyB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ09WRVJTRUVSJylcIlxuICAgICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXSwgJ09WRVJTRUVSJylcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID57eyBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgK3t7IGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sXG4gICAgICAgICAgICAgICAgICAgICdPVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICt7eyBjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImNoaXAtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWVbMF0sJ09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZX19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggXCIgY2xhc3M9XCJ2eC1mcy0xMiB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1sLTIgdngtbXItMlwiPiY8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ09WRVJTRUVSX0dST1VQJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgW2FwcFRvb2x0aXBdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiB0eXBlPVwiYmxhY2tcIiBkZWxheT1cIjBcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aD4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2Vlckdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cblxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdPVkVSU0VFUicpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+JiN4ZTliYTs8L2k+IEVkaXRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2lucHV0LXdpdGgtcGlsbD5cbiAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXI/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnNcIiAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPGFwcC1wb3BvdmVyICNvdmVyc2Vlckdyb3VwIFtkb250Q2xvc2VvbkNsaWNrXT1cInRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdPVkVSU0VFUl9HUk9VUCcpXCIgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICA8L3VsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8bmctY29udGFpbmVyIFtjbGFzcy5kaXNhYmxlZF09XCJhY3RpdmVMaXN0ID09PSAnT1ZFUlNFRVInXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cIlsnT1ZFUlNFRVInXS5pbmNsdWRlcyhhY3RpdmVMaXN0KVwiXG4gICAgICAgICAgPkRFRkFVTFQgT3ZlcnNpZ2h0XG4gICAgICAgICAgPGlcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICdUaGlzIG9wdGlvbiBsZXRzIHlvdSBzcGVjaWZ5IHRoZSBEZWZhdWx0IE92ZXJzaWdodCBmb3IgcmVzcG9uc2liaWxpdGllcyBsaW5rZWQgd2l0aCBhIFByb2dyYW0uIFdoZXJlIGEgdXNlciBoYXMgYmVlbiBzcGVjaWZpZWQgYXMgYSBEZWZhdWx0IE92ZXJzaWdodCwgdGhhdCB1c2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBzZWxlY3RlZCBhcyB0aGUgT3ZlcnNpZ2h0IHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICBpZD1cIkRPSGVscFRleHRcIlxuICAgICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgICAgPjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICAgICAgWydPVkVSU0VFUicsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUiddLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXG4gICAgICAgICAgXCJcbiAgICAgICAgICBbc2VsZWN0RGl2XT1cInRydWVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3ZlcnNlZXJzIGZvciB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgICBcIlxuICAgICAgICAgIChzZWxlY3QpPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxlY3RlZFwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9PVkVSU0VFUidcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0LnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3sgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgID4mPC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZShcbiAgICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9PVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5ncm91cF9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lmdyb3VwX25hbWVcbiAgICAgICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY291bnRCdG4gdngtZnMtOSB2eC1mdy01MDAgdngtdHh0LXdoaXRlIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXIgdngtbGgtNFwiXG4gICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3ZlcnNlZXJEZWZhdWx0R3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY2hpcC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zIGNyb3NzIHZ4LW1yLTFcIiAoY2xpY2spPVwicmVtb3ZlKGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXI/LnZhbHVlWzBdLCdERUZBVUxUX09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVswXT8ubWVtYmVyX25hbWV9fTwvc3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCA+IDFcIiBjbGFzcz1cImNvdW50IHVzZXJcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0LnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiIGNsYXNzPVwidngtZnMtMTIgdngtcGFyYWdyYXBoLXR4dCB2eC1tbC0yIHZ4LW1yLTJcIj4mPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0sJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiID4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiICBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXT8uZ3JvdXBfbmFtZVwiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgdHlwZT1cImJsYWNrXCIgZGVsYXk9XCIwXCIgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4xXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyRGVmYXVsdEdyb3VwLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgKm5nSWY9XCJhY3RpdmVMaXN0ICE9PSAnREVGQVVMVF9PVkVSU0VFUidcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZhdGVMaXN0KCdERUZBVUxUX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzRGVmYXVsdCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBvdmVyc2VlciBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X292ZXJzZWVyPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnREVGQVVMVF9PVkVSU0VFUicpXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBvdmVyc2Vlcj8ubWVtYmVyX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJEZWZhdWx0R3JvdXAgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZShncm91cCwgJ0RFRkFVTFRfT1ZFUlNFRVJfR1JPVVAnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29uc1wiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgZ3JvdXA/Lmdyb3VwX25hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIj4gPC9sYWJlbD5cbiAgICAgICAgPGlucHV0LXdpdGgtcGlsbFxuICAgICAgICAgIGNsYXNzPVwidngtbXQtMlwiXG4gICAgICAgICAgW3NlbGVjdERpdl09XCJ0cnVlXCJcbiAgICAgICAgICBbbGluZV09XCIzXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiWydPVkVSU0VFUicsICdERUZBVUxUX09WRVJTRUVSJ10uaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgICdXaGljaCBwZXJzb25zIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGRlZmF1bHQgb3ZlcnNlZXJzIGZvciByZXNwb25zaWJpbGl0aWVzIHRoYXQgYXJlIG5vdCBjb21wbGV0ZWQgd2l0aGluIHRoaXMgUHJvZ3JhbT8nXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoc2VsZWN0KT1cImFjdGl2YXRlTGlzdCgnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoIHx8XG4gICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICBcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtZnMtMTAgdngtcGFyYWdyYXBoLXR4dCB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlKFxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF1cbiAgICAgICAgICAgICAgICAgICAgICA/Lm1lbWJlcl9uYW1lXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICA+e3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlWzBdXG4gICAgICAgICAgICAgICAgICAgICAgPy5tZW1iZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlcnNEZWZhdWx0RmFpbC5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggPiAxXG4gICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICt7e1xuICAgICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCJcbiAgICAgICAgICAgICAgICA+Jjwvc3BhblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXBDb250YWluZXIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1wbC0yIHZ4LXByLTJcIlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1mcy0xMCB2eC1wYXJhZ3JhcGgtdHh0IHZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICByZW1vdmUoXG4gICAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCdcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgID4mI3hlOWFlOzwvaVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwTmFtZSB2eC1mcy0xMSB2eC1sYWJlbC10eHRcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVswXVxuICAgICAgICAgICAgICAgICAgICAgID8uZ3JvdXBfbmFtZVxuICAgICAgICAgICAgICAgICAgfX08L3NwYW5cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudEJ0biB2eC1mcy05IHZ4LWZ3LTUwMCB2eC10eHQtd2hpdGUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWNlbnRlciB2eC1saC00XCJcbiAgICAgICAgICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRGYWlsR3JvdXAucG9wb3ZlcigpXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgID8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAre3tcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgPy5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGlwLWlubmVyXCIgKm5nSWY9XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWU/Lmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29ucyBjcm9zcyB2eC1tci0xXCIgKGNsaWNrKT1cInJlbW92ZShjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0sJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIiA+JiN4ZTkwZDs8L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtZnMtMTEgdngtcGFyYWdyYXBoLXR4dCB2eC1mdy01MDAgdngtdHQtdXBwZXJjYXNlXCI+e3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWVbMF0/Lm1lbWJlcl9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnQgdXNlclwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cIm92ZXJzZWVyc0RlZmF1bHRGYWlsLnBvcG92ZXIoKVwiIHBsYWNlbWVudD1cInJpZ2h0XCI+K3t7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGggLTF9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggJiYgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXI/LnZhbHVlPy5sZW5ndGhcIiBjbGFzcz1cInZ4LWZzLTEyIHZ4LXBhcmFncmFwaC10eHQgdngtbWwtMiB2eC1tci0yXCI+Jjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pbm5lclwiICpuZ0lmPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlPy5sZW5ndGggXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgY3Jvc3MgdngtbXItMVwiIChjbGljayk9XCJyZW1vdmUoY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdLCdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCIgPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIiBbYXBwVG9vbHRpcF09XCJjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWVbMF0/Lmdyb3VwX25hbWVcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIHR5cGU9XCJibGFja1wiIGRlbGF5PVwiMFwiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZ4LWZzLTExIHZ4LXBhcmFncmFwaC10eHQgdngtZnctNTAwIHZ4LXR0LXVwcGVyY2FzZVwiPnt7Y29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlWzBdPy5ncm91cF9uYW1lfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZT8ubGVuZ3RoID4gMVwiIGNsYXNzPVwiY291bnRcIiBhcHBQb3BvdmVyIChjbGljayk9XCJvdmVyc2VlckRlZmF1bHRGYWlsR3JvdXAucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3tjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cD8udmFsdWU/Lmxlbmd0aCAtMX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cImVkaXRcIlxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjb3ZlcnNlZXJzRGVmYXVsdEZhaWwgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgb3ZlcnNlZXIgb2YgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9mYWlsZWRfb3ZlcnNlZXJcbiAgICAgICAgICAgICAgICAgICAgPy52YWx1ZSB8IHNsaWNlIDogMVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlKG92ZXJzZWVyLCAnREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4gICAgICAgICAgICAgICAgICAgICAgPiYjeGU5MGQ7PC9pXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgb3ZlcnNlZXI/Lm1lbWJlcl9uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgICA8YXBwLXBvcG92ZXIgI292ZXJzZWVyRGVmYXVsdEZhaWxHcm91cCBbZG9udENsb3Nlb25DbGlja109XCJ0cnVlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCBncm91cCBvZiBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcl9ncm91cFxuICAgICAgICAgICAgICAgICAgICA/LnZhbHVlIHwgc2xpY2UgOiAxXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoZ3JvdXAsICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUl9HUk9VUCcpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICA+JiN4ZTkwZDs8L2lcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBncm91cD8uZ3JvdXBfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQXNzZXNzbWVudCAtLT5cbiAgICA8Zm9ybS1maWVsZFxuICAgICAgW2FwcFNjcm9sbEluVmlld109XCJzY3JvbGxUb0JvdHRvbVwiXG4gICAgICAqbmdJZj1cImFkZGl0aW9uYWxPcHRpb24/LkFTU0VTU01FTlRcIlxuICAgICAgW2NoZWNrZWRdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlPy5sZW5ndGhcIlxuICAgICAgW2FjdGl2ZV09XCJhY3RpdmVMaXN0ID09PSAnQVNTRVNTTUVOVCdcIlxuICAgICAgW2Rpc2FibGVkXT1cIlxuICAgICAgICBzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdCkgJiYgYWN0aXZlTGlzdCAhPT0gJ0FTU0VTU01FTlQnXG4gICAgICBcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuYXNzZXNzbWVudHNcIlxuICAgID5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInZ4LWNvbnRyb2wtcGFuZWxcIlxuICAgICAgICA+QVNTRVNTTUVOVFNcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdBc3Nlc3NtZW50cyBhcmUgYSBkaWdpdGFsIGZvcm0gdGhhdCBhcmUgY3JlYXRlZCBpbiDigJxBc3Nlc3NtZW504oCdIHdpdGhpbiB0aGUgQ29tcGxpYW5jZSBNb2R1bGUuIFdoZXJlIEFzc2Vzc21lbnRzIGFyZSBzZWxlY3RlZCB3aGVuIGNyZWF0aW5nIGEgUHJvZ3JhbSwgb25seSB0aG9zZSBBc3Nlc3NtZW50cyB3aWxsIGJlIGF2YWlsYWJsZSBmb3Igc2VsZWN0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eSBsaW5rZWQgd2l0aCB0aGUgUHJvZ3JhbS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkFzc2Vzc21lbnRIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8aW5wdXQtd2l0aC1waWxsXG4gICAgICAgIFtzZWxlY3REaXZdPVwidHJ1ZVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAnV2hpY2ggYXNzZXNzbWVudHMgY2FuIGJlIGxpbmtlZCB0byB0aGUgcmVzcG9uc2liaWxpdGllcyB3aXRoaW4gdGhpcyBQcm9ncmFtPydcbiAgICAgICAgXCJcbiAgICAgICAgKHNlbGVjdCk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkXCJcbiAgICAgICAgICAqbmdJZj1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2Vzc21lbnRzPy52YWx1ZT8ubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2hpcENvbnRhaW5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LXBsLTIgdngtcHItMlwiXG4gICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICBjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcbiAgICAgICAgICAgICAgICB8IGFzc2Vzc21lbnRSZXNvbHZlciBhcyBhc3Nlc3NtZW50c1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGNyb3NzIHZ4LWZzLTEwIHZ4LXBhcmFncmFwaC10eHQgdngtbXItMVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudHNbMF0sICdBU1NFU1NNRU5UJylcIlxuICAgICAgICAgICAgICA+JiN4ZTlhZTs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2hpcE5hbWUgdngtZnMtMTEgdngtbGFiZWwtdHh0XCJcbiAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiYXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICA+e3sgYXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZSB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50QnRuIHZ4LWZzLTkgdngtZnctNTAwIHZ4LXR4dC13aGl0ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktY2VudGVyIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICBhcHBQb3BvdmVyXG4gICAgICAgICAgICAgIChjbGljayk9XCJwcm9ncmFtX2Fzc2Vzc21lbnRzLnBvcG92ZXIoKVwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhc3Nlc3NtZW50cz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICt7eyBhc3Nlc3NtZW50cz8ubGVuZ3RoIC0gMSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJjaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWUgfCBhc3Nlc3NtZW50UmVzb2x2ZXIpIGFzIGFzc2Vzc21lbnRzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaW5uZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCI+PGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudHNbMF0sJ0FTU0VTU01FTlQnKVwiPiYjeGU5MGQ7PC9pPnt7YXNzZXNzbWVudHNbMF0/LmFzc2Vzc21lbnRfbmFtZX19IDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImFzc2Vzc21lbnRzPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJjb3VudFwiIGFwcFBvcG92ZXIgKGNsaWNrKT1cInByb2dyYW1fYXNzZXNzbWVudHMucG9wb3ZlcigpXCIgcGxhY2VtZW50PVwicmlnaHRcIj4re3thc3Nlc3NtZW50cz8ubGVuZ3RoIC0xIH19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiYWN0aXZlTGlzdCAhPT0gJ0FTU0VTU01FTlQnXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZWRpdFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZUxpc3QoJ0FTU0VTU01FTlQnKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5YmE7PC9pPiBFZGl0XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9pbnB1dC13aXRoLXBpbGw+XG4gICAgICA8YXBwLXBvcG92ZXIgI3Byb2dyYW1fYXNzZXNzbWVudHMgW2RvbnRDbG9zZW9uQ2xpY2tdPVwidHJ1ZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3Zi1hY3Rpb24tbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgICBsZXQgYXNzZXNzbWVudCBvZiBjb250cm9scz8ucHJvZ3JhbV9hc3Nlc3NtZW50cz8udmFsdWVcbiAgICAgICAgICAgICAgICAgICAgfCBhc3Nlc3NtZW50UmVzb2x2ZXJcbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDFcbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1jYXJkXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIChjbGljayk9XCJyZW1vdmUoYXNzZXNzbWVudCwgJ0FTU0VTU01FTlQnKVwiIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgICAgICAgICAgICAgID4mI3hlOTBkOzwvaVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGFzc2Vzc21lbnQ/LmFzc2Vzc21lbnRfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2FwcC1wb3BvdmVyPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gRm9ybWF0ICYgRXZpZGVuY2UgLS0+XG4gICAgPGZvcm0tZmllbGRcbiAgICAgIFthcHBTY3JvbGxJblZpZXddPVwic2Nyb2xsVG9Cb3R0b21cIlxuICAgICAgKm5nSWY9XCJhZGRpdGlvbmFsT3B0aW9uPy5GT1JNQVRFX0VWSURFTkNFXCJcbiAgICAgIFtjaGVja2VkXT1cIlt0cnVlLCBmYWxzZV0uaW5jbHVkZXMoY29udHJvbHM/LmV2aWRlbmNlX3JlcXVpcmVkPy52YWx1ZSlcIlxuICAgICAgW2FjdGl2ZV09XCJmYWxzZVwiXG4gICAgICBbZGlzYWJsZWRdPVwic2lkZUVsZW1lbnRzLmluY2x1ZGVzKGFjdGl2ZUxpc3QpXCJcbiAgICAgIFtpbWddPVwiQVNTRVRTLmZvcm1hdF9ldmlkZW5jZVwiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5FdmlkZW5jZVxuICAgICAgICA8aVxuICAgICAgICAgIGNsYXNzPVwiaWNvbnNcIlxuICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgJ0lmIHNlbGVjdGVkLCBldmlkZW5jZSBvZiBjb21wbGV0aW9uIG9mIGEgcmVzcG9uc2liaWxpdHkgd2lsbCBiZSByZXF1aXJlZCBmb3IgYWxsIHJlc3BvbnNpYmlsaXRpZXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhlIFByb2dyYW0uIEFuIEFzc2lnbm9yLCBiZWluZyB0aGUgcGVyc29uIHdobyBjcmVhdGVzIHRoZSByZXNwb25zaWJpbGl0eSwgY2FuIG92ZXJyaWRlIHRoaXMgb3B0aW9uIHdoZW4gY3JlYXRpbmcgYSByZXNwb25zaWJpbGl0eS4nXG4gICAgICAgICAgXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJ0cnVlXCJcbiAgICAgICAgICBpZD1cIkV2aWRlbmNlSGVscFRleHRcIlxuICAgICAgICAgID4mI3hlYjE2OzwvaVxuICAgICAgICA+PC9sYWJlbFxuICAgICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1mb3JtYXRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0XCJcbiAgICAgICAgICA+RG8gYWxsIHJlc3BvbnNpYmlsaXRpZXMgd2l0aGluIHRoaXMgcHJvZ3JhbSByZXF1aXJlIGV2aWRlbmNlPzwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1ncm91cCBwcm9ncmFtXCI+XG4gICAgICAgICAgPGFwcC1jcy1yYWRpb1xuICAgICAgICAgICAgW25hbWVdPVwiJ2V2aWRlbmNlX3JlcXVpcmVkJ1wiXG4gICAgICAgICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIHRydWUpXCJcbiAgICAgICAgICAgID5ZRVM8L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgICA8YXBwLWNzLXJhZGlvXG4gICAgICAgICAgICBbbmFtZV09XCInZXZpZGVuY2VfcmVxdWlyZWQnXCJcbiAgICAgICAgICAgIFtjaGVja2VkXT1cIiFjb250cm9scz8uZXZpZGVuY2VfcmVxdWlyZWQ/LnZhbHVlXCJcbiAgICAgICAgICAgIChjaGVja2VkRXZlbnQpPVwic2V0Rm9ybUZpZWxkKCdldmlkZW5jZV9yZXF1aXJlZCcsIGZhbHNlKVwiXG4gICAgICAgICAgICA+Tk88L2FwcC1jcy1yYWRpb1xuICAgICAgICAgID5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtbXQtMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtcGFyYWdyYXBoLXR4dCB2eC10dC11cHBlcmNhc2UgdngtbXItMlwiPkFsbG93IGFueSBmaWxlIHRvIGJlIG1hcmtlZCBhc1xuICAgICAgICAgICAgICAgICAgICBrZXlcbiAgICAgICAgICAgICAgICAgICAgZXZpZGVuY2U8L2Rpdj5cbiAgICAgICAgICAgICAgICA8c3dpdGNoIGZvcm1Db250cm9sTmFtZT1cImFsbG93X2FueV9maWxlX2tleV9ldmlkZW5jZVwiXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0Rm9ybUZpZWxkKCdhbGxvd19hbnlfZmlsZV9rZXlfZXZpZGVuY2UnLCRldmVudD8udGFyZ2V0Py5jaGVja2VkKVwiPjwvc3dpdGNoPlxuICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgIDwvZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQ3VzdG9tIEZpZWxkIC0tPlxuICAgIDxmb3JtLWZpZWxkXG4gICAgICBbYXBwU2Nyb2xsSW5WaWV3XT1cInNjcm9sbFRvQm90dG9tXCJcbiAgICAgICpuZ0lmPVwiYWRkaXRpb25hbE9wdGlvbj8uQ1VTVE9NX0ZJRUxEU1wiXG4gICAgICBbY2hlY2tlZF09XCJjb250cm9scz8uY3VzdG9tX2ZpZWxkcz8udmFsdWU/Lmxlbmd0aFwiXG4gICAgICBbYWN0aXZlXT1cImZhbHNlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJzaWRlRWxlbWVudHMuaW5jbHVkZXMoYWN0aXZlTGlzdClcIlxuICAgICAgW2ltZ109XCJBU1NFVFMuY3VzdG9tX2ZpZWxkc1wiXG4gICAgPlxuICAgICAgPGxhYmVsIGNsYXNzPVwidngtY29udHJvbC1wYW5lbFwiXG4gICAgICAgID5DVVNUT00gRklFTERcbiAgICAgICAgPGlcbiAgICAgICAgICBjbGFzcz1cImljb25zXCJcbiAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICdXaGVyZSBhIGN1c3RvbSBmaWVsZCBpcyBzcGVjaWZpZWQsIGFsbCByZXNwb25zaWJpbGl0aWVzIGxpbmtlZCB3aXRoIGEgUHJvZ3JhbSB3aWxsIGNvbnRhaW4gdGhhdCBjdXN0b20gZmllbGQuIEN1c3RvbSBmaWVsZHMgZW5hYmxlIHRoZSBjb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgbWV0YSBkYXRhLidcbiAgICAgICAgICBcIlxuICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgZGVsYXk9XCIwXCJcbiAgICAgICAgICB0eXBlPVwid2hpdGVcIlxuICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgIGlkPVwiQ0ZIZWxwVGV4dFwiXG4gICAgICAgICAgPiYjeGViMTY7PC9pXG4gICAgICAgID48L2xhYmVsXG4gICAgICA+XG4gICAgICA8Y3VzdG9tLWZpZWxkIGZvcm1Db250cm9sTmFtZT1cImN1c3RvbV9maWVsZHNcIj48L2N1c3RvbS1maWVsZD5cbiAgICA8L2Zvcm0tZmllbGQ+XG4gIDwvZm9ybT5cbjwvZGl2PlxuXG48IS0tIGxpc3Qgb2Ygcm9sZXMgLS0+XG48cm9sZS1saXN0XG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ1JPTEUnXCJcbiAgW3NlbGVjdGVkXT1cImNvbnRyb2xzPy5wcm9ncmFtX3JvbGVzPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlJPTEVTXCJcbiAgW2xpc3RdPVwibGlzdHM/LlJPTEVTPy5kYXRhID8/IFtdXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdST0xFJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignUk9MRScpXCJcbiAgW2ZlYXR1cmVmbGFncm9sZV09XCJmZWF0dXJlZmxhZ3JvbGVcIlxuICBbZmVhdHVyZWZsYWdHcm91cF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtmZl9yY19saXN0aW5nXT1cImZmX3JjX2xpc3RpbmdcIlxuPjwvcm9sZS1saXN0PlxuXG48IS0tIGxpc3Qgb2YgZnJhbWV3b3JrcyAtLT5cbjwhLS0gPGFwcC1kZWZpbmUtZnJhbWV3b3JrLWxpc3RpbmcgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdGUkFNRVdPUksnKVwiIChuZXh0KT1cImxpc3RBY3Rpb24oJGV2ZW50LCdGUkFNRVdPUksnKVwiIFttb2RlXT1cIm1vZGVcIiBbc2VsZWN0ZWRGcmFtZXdvcmtdPVwiY29udHJvbHM/LmZyYW1ld29yaz8udmFsdWVcIj48L2FwcC1kZWZpbmUtZnJhbWV3b3JrLWxpc3Rpbmc+IC0tPlxuPCEtLSBsaXN0IG9mIHJlc3BvbnNpYmlsaXR5IGNlbnRlciAtLT5cbjxhcHAtcmVzcG9uc2liaWxpdHktY2VudGVycy1saXN0XG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ1JDJ1wiXG4gIFtyZXNwb25zaWJpbGl0eUNlbnRlcnNMaXN0XT1cImxpc3RzPy5SQyA/PyBbXVwiXG4gIFtyYWRpb1NlbGVjdGlvbl09XCJmYWxzZVwiXG4gIFtyY0lkS2V5XT1cIidyY19pZCdcIlxuICAoY2xvc2VSY0xpc3QpPVwiZmllbGREZXNlbGVjdG9yKCdSQycpXCJcbiAgKHNhdmVTZWxlY3RlZExpc3QpPVwibGlzdEFjdGlvbigkZXZlbnQsICdSQycpXCJcbiAgW3NlbGVjdGVkUmVzcG9uc2liaWxpdHlDZW50ZXJzXT1cImNvbnRyb2xzPy5yYz8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbj5cbjwvYXBwLXJlc3BvbnNpYmlsaXR5LWNlbnRlcnMtbGlzdD5cbjwhLS0gcmVuZGVyIHVzZXJsaXN0IHdpdGggZ3JvdXAgLS0+XG5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnT1dORVInXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbbm9uUmVtb3ZhYmxlVXNlcklkc109XCJsaXN0cy5OT05fUkVNT1ZBQkxFX09XTkVSUyB8IGxpc3RUb0lkIDogJ21lbWJlcl9pZCdcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/Lk9XTkVSUz8uZGF0YSA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX293bmVycz8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgKGZldGNoVXNlckRhdGEpPVwiZmV0Y2hVc2Vyc0Fzc29jaWF0ZWRXaXRoUm9sZXMoZmFsc2UsICRldmVudClcIlxuICBbdXNlckxpc3RJbmZvXT1cImxpc3RzPy5PV05FUlNcIlxuICBbZ3JvdXBMaXN0SW5mb109XCJsaXN0cz8uT1dORVJTX0dST1VQU1wiXG4gIFtncm91cExpc3RdPVwibGlzdHM/Lk9XTkVSU19HUk9VUFM/LmRhdGEgPz8gW11cIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fb3duZXJzX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ09XTkVSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignT1dORVInKVwiXG4gIFtwYW5lbFRpdGxlXT1cInBhbmVsVGl0bGVPd25lclwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4+PC91c2VyLWdyb3VwLWxpc3Q+XG5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQ09MTEFCT1JBVE9SJ1wiXG4gIFtncm91cEVuYWJsZWRdPVwiZmFsc2VcIlxuICBbc2luZ2xlU2VsZWN0XT1cImZhbHNlXCJcbiAgW3VzZXJsaXN0XT1cImxpc3RzPy5DT0xMQUJPUkFUT1JTPy5kYXRhID8/IFtdXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVDb2xsYWJvcmF0b3JJZHNcIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJjb250cm9scz8ucHJvZ3JhbV9jb2xsYWJvcmF0b3I/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkNPTExBQk9SQVRPUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0NPTExBQk9SQVRPUicpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ0NPTExBQk9SQVRPUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUNvbGxhYm9yYXRvclwiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnQVNTSUdORUUnXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/LkFTU0lHTkVFUyA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX2Fzc2lnbmVlPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5BU1NJR05FRVNfR1JPVVAgPz8gW11cIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJjb250cm9scz8ucHJvZ3JhbV9hc3NpZ25lZV9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVkQXNzaWduZWVJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidBc3NpZ25lZSdcIlxuICBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkFTU0lHTkVFU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnQVNTSUdORUUnKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdBU1NJR05FRScpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZUFzc2lnbmVlXCJcbiAgW2RlZmF1bHRTZWxlY3RlZFVzZXJzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfYXNzaWduZWU/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbdXNlclR5cGVdPVwiJ2Fzc2lnbmVlcydcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfQVNTSUdORUUnXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJ0cnVlXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/LkRFRkFVTFRfQVNTSUdORUVTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9hc3NpZ25lZT8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9BU1NJR05FRVNfR1JPVVAgPz8gW11cIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFtzZWxlY3RlZEdyb3Vwc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2Fzc2lnbmVlX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVkQXNzaWduZWVJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidBc3NpZ25lZSdcIlxuICBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXG4gIFtvdmVyc2Vlcklkc109XCJzZWxlY3RlZE92ZXJzZWVySWRzXCJcbiAgW2Fzc2lnbm9ySWRdPVwiYXNzaWdub3JJZFwiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkRFRkFVTFRfQVNTSUdORUVcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfQVNTSUdORUUnKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdERUZBVUxUX0FTU0lHTkVFJylcIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnUkVWSUVXRVInICYmICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/LlJFVklFV0VSUyA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX3Jldmlld2VyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5SRVZJRVdFUlNfR1JPVVAgPz8gW11cIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fcmV2aWV3ZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtkaXNhYmxlZElkc109XCJkaXNhYmxlUmV2aWV3ZXJJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidSZXZpZXdlcidcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIlxuICBbb3ZlcnNlZXJJZHNdPVwic2VsZWN0ZWRPdmVyc2Vlcklkc1wiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LlJFVklFV0VSU1wiXG4gIChzYXZlKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnUkVWSUVXRVInKVwiXG4gIChjYW5jZWwpPVwiZmllbGREZXNlbGVjdG9yKCdSRVZJRVdFUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZVJldmlld2VyXCJcbiAgW2RlZmF1bHRTZWxlY3RlZFVzZXJzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfcmV2aWV3ZXI/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFxuICBcIlxuICBbdXNlclR5cGVdPVwiJ3Jldmlld2VycydcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiXG4gICAgYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfUkVWSUVXRVInICYmXG4gICAgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcbiAgXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/LkRFRkFVTFRfUkVWSUVXRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9SRVZJRVdFUlNfR1JPVVAgPz8gW11cIlxuICBbZmVhdHVyZWZsYWddPVwiZmVhdHVyZWZsYWdHcm91cHNcIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9yZXZpZXdlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFtkaXNhYmxlZElkc109XCJkaXNhYmxlUmV2aWV3ZXJJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidSZXZpZXdlcidcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIlxuICBbb3ZlcnNlZXJJZHNdPVwic2VsZWN0ZWRPdmVyc2Vlcklkc1wiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkRFRkFVTFRfUkVWSUVXRVJTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdERUZBVUxUX1JFVklFV0VSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignREVGQVVMVF9SRVZJRVdFUicpXCJcbiAgW3BhbmVsVGl0bGVdPVwicGFuZWxUaXRsZURlZmF1bHRSZXZpZXdlclwiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjx1c2VyLWdyb3VwLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnT1ZFUlNFRVInICYmICghZmVhdHVyZWZsYWdHcm91cHMgfHwgZmVhdHVyZWZsYWdHcm91cHMpXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/Lk9WRVJTRUVSUyA/PyBbXVwiXG4gIFtzZWxlY3RlZFVzZXJzXT1cImNvbnRyb2xzPy5wcm9ncmFtX292ZXJzZWVyPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcIlxuICBbZ3JvdXBMaXN0XT1cImxpc3RzPy5PVkVSU0VFUlNfR1JPVVAgPz8gW11cIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiY29udHJvbHM/LnByb2dyYW1fb3ZlcnNlZXJfZ3JvdXA/LnZhbHVlIHwgcmVmRGlzY29ubmVjdFwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtkaXNhYmxlZElkc109XCJkaXNhYmxlT3ZlcnNlZXJJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIlxuICBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/Lk9WRVJTRUVTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdPVkVSU0VFUicpXCJcbiAgKGNhbmNlbCk9XCJmaWVsZERlc2VsZWN0b3IoJ09WRVJTRUVSJylcIlxuICBbZGVmYXVsdFNlbGVjdGVkVXNlcnNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWVcbiAgICAgIHwgcmVmRGlzY29ubmVjdFxuICAgICAgfCBhcnJheUNvbmNhdCA6IGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyPy52YWx1ZVxuICBcIlxuICBbdXNlclR5cGVdPVwiJ292ZXJzZWVycydcIlxuPlxuPC91c2VyLWdyb3VwLWxpc3Q+XG48dXNlci1ncm91cC1saXN0XG4gICpuZ0lmPVwiXG4gICAgYWN0aXZlTGlzdCA9PT0gJ0RFRkFVTFRfT1ZFUlNFRVInICYmXG4gICAgKCFmZWF0dXJlZmxhZ0dyb3VwcyB8fCBmZWF0dXJlZmxhZ0dyb3VwcylcbiAgXCJcbiAgW2dyb3VwRW5hYmxlZF09XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtzaW5nbGVTZWxlY3RdPVwiZmFsc2VcIlxuICBbbG9hZGluZ109XCJsaXN0TG9hZGluZ1N0YXRlLlVTRVJTXCJcbiAgW0Zyb21Qcm9ncmFtXT1cInRydWVcIlxuICBbdXNlcmxpc3RdPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTID8/IFtdXCJcbiAgW3NlbGVjdGVkVXNlcnNdPVwiY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XCJcbiAgW2dyb3VwTGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNfR1JPVVAgPz8gW11cIlxuICBbc2VsZWN0ZWRHcm91cHNdPVwiXG4gICAgY29udHJvbHM/LnByb2dyYW1fZGVmYXVsdF9vdmVyc2Vlcl9ncm91cD8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFtmZWF0dXJlZmxhZ109XCJmZWF0dXJlZmxhZ0dyb3Vwc1wiXG4gIFtkaXNhYmxlZElkc109XCJkaXNhYmxlT3ZlcnNlZXJJZHNcIlxuICBbZnJvbVJlc3BvbnNpYmlsaXR5XT1cIidPdmVyc2VlcidcIlxuICBbYXNzaWdub3JJZF09XCJhc3NpZ25vcklkXCJcbiAgW2Fzc2lnbmVlSWRzXT1cInNlbGVjdGVkQXNzaWduZWVJZHNcIlxuICBbcmV2aWV3ZXJJZHNdPVwic2VsZWN0ZWRSZXZpZXdlcklkc1wiXG4gIFt1c2VyTGlzdEluZm9dPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTXCJcbiAgKHNhdmUpPVwibGlzdEFjdGlvbigkZXZlbnQsICdERUZBVUxUX09WRVJTRUVSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignREVGQVVMVF9PVkVSU0VFUicpXCJcbj5cbjwvdXNlci1ncm91cC1saXN0PlxuPHVzZXItZ3JvdXAtbGlzdFxuICAqbmdJZj1cIlxuICAgIGFjdGl2ZUxpc3QgPT09ICdERUZBVUxUX0ZBSUxFRF9PVkVSU0VFUicgJiZcbiAgICAoIWZlYXR1cmVmbGFnR3JvdXBzIHx8IGZlYXR1cmVmbGFnR3JvdXBzKVxuICBcIlxuICBbZ3JvdXBFbmFibGVkXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW3NpbmdsZVNlbGVjdF09XCJmYWxzZVwiXG4gIFtsb2FkaW5nXT1cImxpc3RMb2FkaW5nU3RhdGUuVVNFUlNcIlxuICBbRnJvbVByb2dyYW1dPVwidHJ1ZVwiXG4gIFt1c2VybGlzdF09XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlMgPz8gW11cIlxuICBbc2VsZWN0ZWRVc2Vyc109XCJcbiAgICBjb250cm9scz8ucHJvZ3JhbV9kZWZhdWx0X2ZhaWxlZF9vdmVyc2Vlcj8udmFsdWUgfCByZWZEaXNjb25uZWN0XG4gIFwiXG4gIFtncm91cExpc3RdPVwibGlzdHM/LkRFRkFVTFRfT1ZFUlNFRVJTX0dST1VQID8/IFtdXCJcbiAgW3NlbGVjdGVkR3JvdXBzXT1cIlxuICAgIGNvbnRyb2xzPy5wcm9ncmFtX2RlZmF1bHRfZmFpbGVkX292ZXJzZWVyX2dyb3VwPy52YWx1ZSB8IHJlZkRpc2Nvbm5lY3RcbiAgXCJcbiAgW2ZlYXR1cmVmbGFnXT1cImZlYXR1cmVmbGFnR3JvdXBzXCJcbiAgW2Rpc2FibGVkSWRzXT1cImRpc2FibGVPdmVyc2Vlcklkc1wiXG4gIFtmcm9tUmVzcG9uc2liaWxpdHldPVwiJ092ZXJzZWVyJ1wiXG4gIFthc3NpZ25vcklkXT1cImFzc2lnbm9ySWRcIlxuICBbYXNzaWduZWVJZHNdPVwic2VsZWN0ZWRBc3NpZ25lZUlkc1wiXG4gIFtyZXZpZXdlcklkc109XCJzZWxlY3RlZFJldmlld2VySWRzXCJcbiAgW3VzZXJMaXN0SW5mb109XCJsaXN0cz8uREVGQVVMVF9PVkVSU0VFUlNcIlxuICAoc2F2ZSk9XCJsaXN0QWN0aW9uKCRldmVudCwgJ0RFRkFVTFRfRkFJTEVEX09WRVJTRUVSJylcIlxuICAoY2FuY2VsKT1cImZpZWxkRGVzZWxlY3RvcignREVGQVVMVF9GQUlMRURfT1ZFUlNFRVInKVwiXG4+XG48L3VzZXItZ3JvdXAtbGlzdD5cbjxhc3Nlc3NtZW50LXBpY2tlclxuICAqbmdJZj1cImFjdGl2ZUxpc3QgPT09ICdBU1NFU1NNRU5UJ1wiXG4gIFtzZWxlY3RlZEFzc2Vzc21lbnRdPVwiY29udHJvbHM/LnByb2dyYW1fYXNzZXNzbWVudHM/LnZhbHVlXCJcbiAgKGNhbmNlbEFzc2Vzc21lbnQpPVwiZmllbGREZXNlbGVjdG9yKCdBU1NFU1NNRU5UJylcIlxuICAob25Bc3Nlc3NtZW50U2VsZWN0KT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnQVNTRVNTTUVOVCcpXCJcbj48L2Fzc2Vzc21lbnQtcGlja2VyPlxuPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwibG9hZGVyXCI+PC9hcHAtbG9hZGVyLWlubGluZT5cbjxhcHAtc21pbGV5LWRpYWxvZy1pbmxpbmVcbiAgKm5nSWY9XCJzaG93U21pbGV5XCJcbiAgW21lc3NhZ2VdPVwic21pbGV5TWVzc2FnZVwiXG4gIFthY3Rpb25CdXR0b25zXT1cImFjdGlvbkJ1dHRvbnNcIlxuICAoYWN0aW9uKT1cImFjdGlvbigkZXZlbnQpXCJcbiAgKGNsb3NlU21pbGV5KT1cImNsb3NlU21pbGV5KCRldmVudClcIlxuPlxuPC9hcHAtc21pbGV5LWRpYWxvZy1pbmxpbmU+XG5cbjwhLS0gRnJhbWV3b3JrIHNlbGVjdG9yICAtLT5cbjxhcHAtZnJhbWV3b3JrLWxpc3RcbiAgKm5nSWY9XCJhY3RpdmVMaXN0ID09PSAnRlJBTUVXT1JLJ1wiXG4gIFt3b3JrZmxvd1BhZ2VdPVwiWydGUkFNRVdPUksnXVwiXG4gIChhc3NpZ25Db250cm9sKT1cImxpc3RBY3Rpb24oJGV2ZW50LCAnRlJBTUVXT1JLJylcIlxuICAoY2xvc2VGcmFtZXdvcmspPVwiZmllbGREZXNlbGVjdG9yKCdGUkFNRVdPUksnKVwiXG4gIFtwcmV2aW91c1NlbGVjdGVkVmFsdWVzXT1cInsgZnJhbWV3b3JrOiBjb250cm9scz8uZnJhbWV3b3JrLnZhbHVlIH1cIlxuICAoZW50cnVzdEZyYW1ld29yayk9XCJlbnRydXN0RnJhbWV3b3JrKCRldmVudClcIlxuICBbaGVhZGVyVGV4dF09XCInU2VsZWN0IGEgZnJhbWV3b3JrJ1wiXG4+PC9hcHAtZnJhbWV3b3JrLWxpc3Q+XG4iXX0=