bpm-core 0.0.52 → 0.0.53

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 (51) hide show
  1. package/esm2022/lib/app/app.component.mjs +20 -9
  2. package/esm2022/lib/components/app-component-sections/previous-requests/previous-requests.component.mjs +3 -5
  3. package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +7 -5
  4. package/esm2022/lib/components/shared-components/action-buttons/action-buttons.component.mjs +4 -6
  5. package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +5 -4
  6. package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +76 -51
  7. package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +151 -110
  8. package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +6 -7
  9. package/esm2022/lib/components/shared-components/form-field/control-value-accessor.directive.mjs +12 -5
  10. package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +2 -1
  11. package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +3 -4
  12. package/esm2022/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.mjs +139 -206
  13. package/esm2022/lib/components/shared-components/form-field/index.mjs +2 -1
  14. package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +3 -3
  15. package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +14 -7
  16. package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +6 -4
  17. package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +43 -101
  18. package/esm2022/lib/components/shared-components/index.mjs +1 -3
  19. package/esm2022/lib/i18n/ar.mjs +4 -2
  20. package/esm2022/lib/i18n/en.mjs +4 -2
  21. package/esm2022/lib/services/core.service.ts.mjs +11 -1
  22. package/esm2022/lib/services/i18n.service.mjs +3 -3
  23. package/esm2022/lib/testComponent/request-details-section/request-details-section.component.mjs +24 -23
  24. package/esm2022/lib/testComponent/services/i18n.service.mjs +3 -3
  25. package/fesm2022/bpm-core.mjs +582 -663
  26. package/fesm2022/bpm-core.mjs.map +1 -1
  27. package/lib/app/app.component.d.ts +5 -2
  28. package/lib/components/app-component-sections/service-header/service-header.component.d.ts +2 -2
  29. package/lib/components/shared-components/action-buttons/action-buttons.component.d.ts +3 -4
  30. package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +12 -3
  31. package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +23 -12
  32. package/lib/components/shared-components/form-field/control-value-accessor.directive.d.ts +5 -2
  33. package/lib/components/shared-components/form-field/doc-uploader/docs-uploader.component.d.ts +14 -12
  34. package/lib/components/shared-components/form-field/index.d.ts +1 -0
  35. package/lib/components/shared-components/form-field/info-item/info-item.component.d.ts +1 -1
  36. package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +1 -7
  37. package/lib/components/shared-components/index.d.ts +0 -2
  38. package/lib/i18n/ar.d.ts +2 -0
  39. package/lib/i18n/en.d.ts +2 -0
  40. package/lib/services/core.service.ts.d.ts +1 -0
  41. package/lib/testComponent/request-details-section/request-details-section.component.d.ts +0 -2
  42. package/package.json +2 -2
  43. package/src/lib/assets/images/user.svg +6 -0
  44. package/src/lib/assets/scss/_general.scss +4 -1
  45. package/src/lib/assets/scss/_upgrade.scss +2 -2
  46. package/esm2022/lib/components/shared-components/confirmation-popup/confirmation-popup.component.mjs +0 -39
  47. package/esm2022/lib/components/shared-components/delete-popup/delete-popup.component.mjs +0 -19
  48. package/esm2022/lib/components/shared-components/doc-uploader/docs-uploader.component.mjs +0 -686
  49. package/lib/components/shared-components/confirmation-popup/confirmation-popup.component.d.ts +0 -25
  50. package/lib/components/shared-components/delete-popup/delete-popup.component.d.ts +0 -6
  51. package/lib/components/shared-components/doc-uploader/docs-uploader.component.d.ts +0 -144
@@ -1,16 +1,18 @@
1
- import { NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
2
- /* eslint-disable @angular-eslint/use-lifecycle-interface */
3
- /* eslint-disable @angular-eslint/no-output-on-prefix */
4
- /* eslint-disable @typescript-eslint/no-explicit-any */
5
- /* eslint-disable @angular-eslint/component-selector */
1
+ import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
6
2
  import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, forwardRef, Input, Output } from '@angular/core';
7
- import { NgClass, NgIf } from '@angular/common';
3
+ import { NgClass } from '@angular/common';
8
4
  import { MatAutocompleteModule } from '@angular/material/autocomplete';
9
5
  import { ControlValueAccessorDirective } from '../control-value-accessor.directive';
6
+ import { MatError, MatFormField } from '@angular/material/form-field';
7
+ import { MatInput } from '@angular/material/input';
8
+ import { SatPopoverModule } from '@ncstate/sat-popover';
9
+ import { ValidationErrorsComponent } from '../validation-errors/validation-errors.component';
10
+ import { InfoItemComponent } from '../info-item/info-item.component';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@angular/material/autocomplete";
12
13
  import * as i2 from "@angular/material/core";
13
14
  import * as i3 from "@angular/forms";
15
+ import * as i4 from "@ncstate/sat-popover";
14
16
  export class SearchEmployeeComponent extends ControlValueAccessorDirective {
15
17
  valueName;
16
18
  tooltip;
@@ -18,33 +20,18 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
18
20
  showLabel = true;
19
21
  optional = false;
20
22
  data;
21
- filteredOptions;
22
- // @Input() floatLabel: FloatLabelType = 'auto';
23
23
  floatLabel = 'auto';
24
24
  error;
25
- selectedItems = new Array();
26
25
  selected = false;
27
26
  selectedEmp = new EventEmitter();
28
27
  onInputChange = new EventEmitter();
29
28
  showEdit = false;
30
29
  editDirectManger = new EventEmitter();
31
30
  deleteDirectManger = new EventEmitter();
32
- searchingForEmp = false;
33
31
  arrayList = [];
34
32
  isUniqueUsers = false;
35
33
  userAlreadyExist = false;
36
34
  emitedDeletedValue = new EventEmitter();
37
- // ngOnInit() {
38
- // // this.resetPropagator.subscribe(this, this.resetSearchEmpData);
39
- // if (!this.field) {
40
- // this.field = {
41
- // personEmail: null,
42
- // personName: null,
43
- // };
44
- // } else {
45
- // this.control.setValue(this.field?.personName);
46
- // }
47
- // }
48
35
  deleteRow(ind, rowData) {
49
36
  if (!this.isReadOnly) {
50
37
  this.arrayList = this.arrayList.filter((item, index) => {
@@ -57,42 +44,6 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
57
44
  this.emitedDeletedValue.emit(obj);
58
45
  }
59
46
  }
60
- ngOnChanges(changes) {
61
- if (changes?.['field']) {
62
- if (changes['field']?.currentValue?.personEmail == '' || changes['field']?.currentValue?.personEmail == null) {
63
- this.control.setValue('');
64
- }
65
- else {
66
- this.control.setValue(changes['field']?.currentValue?.personName);
67
- }
68
- }
69
- if (changes?.['disabled']) {
70
- if (changes['disabled'].currentValue) {
71
- this.control.disable();
72
- }
73
- else {
74
- this.control.enable();
75
- }
76
- }
77
- }
78
- resetSearchEmpData() {
79
- if (!this.isReadOnly) {
80
- if (this.multiple) {
81
- this.arrayList = [];
82
- // this.field = {
83
- // personName: null,
84
- // personEmail: null,
85
- // };
86
- }
87
- else {
88
- // this.field = {
89
- // personName: null,
90
- // personEmail: null,
91
- // };
92
- this.control.setValue(null);
93
- }
94
- }
95
- }
96
47
  onLoadOptions(event) {
97
48
  const input = event.target.value;
98
49
  this.data = [];
@@ -102,7 +53,7 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
102
53
  this.coreService.searchEmployee(input).subscribe({
103
54
  next: (form) => {
104
55
  this.loading = false;
105
- this.data = form.options;
56
+ this.data = form.Users;
106
57
  },
107
58
  error: (err) => {
108
59
  }, complete: () => {
@@ -111,14 +62,10 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
111
62
  }
112
63
  else if (input.length == 0) {
113
64
  if (this.multiple) {
114
- // const obj = {
115
- // arrayList: this.arrayList,
116
- // field: this.field
117
- // }
118
- // this.emitedValue.emit(obj);
119
65
  }
120
66
  else {
121
- // this.emitedValue.emit(null);
67
+ this.control.setValue(null);
68
+ this.control.markAsTouched();
122
69
  }
123
70
  }
124
71
  }
@@ -138,46 +85,35 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
138
85
  this.userAlreadyExist = false;
139
86
  this.selected = true;
140
87
  this.data = [];
141
- // this.field = {
142
- // personName: object.description,
143
- // personEmail: object.email,
144
- // job:object.jobPosition,
145
- // jobCode:object.jobCode,
146
- // manager: object.manager,
147
- // department: object.department,
148
- // generalDepartment: object.generalDepartment,
149
- // sector: object.sector,
150
- // section: object.section,
151
- // seniorSectorName: object.seniorSectorName
152
- // };
153
88
  if (this.multiple) {
154
- if (this.isUniqueUsers && this.arrayList.some((item) => item?.personEmail === object?.email)) {
89
+ if (this.arrayList.some((item) => item?.personEmail === object?.email)) {
155
90
  this.userAlreadyExist = true;
156
91
  return;
157
92
  }
158
- // this.arrayList.push(this.field);
159
- // const obj = {
160
- // arrayList: this.arrayList,
161
- // field: this.field
162
- // };
163
- // this.emitedValue.emit(obj);
164
- // this.emitedValue.emit(this.field);
165
- this.control.setValue(null);
166
- // this.field = {
167
- // personEmail: null,
168
- // personName: null,
169
- // job:null,
170
- // jobCode:null
171
- // };
93
+ let obj = {
94
+ personName: object.name,
95
+ personEmail: object.email,
96
+ job: object.job.name,
97
+ jobCode: object.job.code,
98
+ manager: object.manager,
99
+ department: object.department,
100
+ generalDepartment: object.generalDepartment,
101
+ sector: object.sector,
102
+ section: object.section,
103
+ seniorSectorName: object.seniorSectorName
104
+ };
105
+ this.arrayList.push(obj);
106
+ this.control.setValue(this.arrayList);
172
107
  }
173
108
  else {
174
- // this.emitedValue.emit(this.field);
175
- this.control.setValue(object.description);
109
+ const controlValue = {
110
+ personName: object.name,
111
+ personEmail: object.email
112
+ };
113
+ this.control.setValue(controlValue);
114
+ this.employeeSearchControl.setValue(object.name);
176
115
  }
177
116
  }
178
- openHints() {
179
- // this.sidenavService.publish('open', FaqSidenavComponent, 'end', 'over');
180
- }
181
117
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SearchEmployeeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
182
118
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.8", type: SearchEmployeeComponent, isStandalone: true, selector: "app-search-employee", inputs: { valueName: "valueName", tooltip: "tooltip", className: "className", showLabel: "showLabel", optional: "optional", data: "data", floatLabel: "floatLabel", error: "error", showEdit: "showEdit", arrayList: "arrayList", isUniqueUsers: "isUniqueUsers" }, outputs: { selectedEmp: "selectedEmp", onInputChange: "onInputChange", editDirectManger: "editDirectManger", deleteDirectManger: "deleteDirectManger", emitedDeletedValue: "emitedDeletedValue" }, providers: [
183
119
  {
@@ -185,22 +121,28 @@ export class SearchEmployeeComponent extends ControlValueAccessorDirective {
185
121
  useExisting: forwardRef(() => SearchEmployeeComponent),
186
122
  multi: true,
187
123
  },
188
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">\r\n {{label}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n @if(optional){\r\n <span class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [formControl]=\"control\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for(option of data; track option){\r\n <mat-option [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if(!control?.valid){\r\n <mat-error class=\"mb-2\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n }\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- @if(showErrorMessage){\r\n <mat-error class=\"mb-2\">{{errorMessage}}\r\n </mat-error>\r\n } -->\r\n @if(userAlreadyExist){\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n }\r\n @if(arrayList?.length && !isReadOnly && multiple){\r\n <div class=\"col-12\">\r\n <div class=\"example-list n-results\">\r\n @for(emails of arrayList;track $index){\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': $index === 0}\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n @if(emails?.personName){\r\n <label>\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n }\r\n </div>\r\n @if(!(isReadOnly)){\r\n <ds-button class=\"ds-btn-action\" size=\"small\" (click)=\"deleteRow($index,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n \r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n \r\n \r\n </ng-container>\r\n}\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">\r\n {{label}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n \r\n <span *ngIf=\"optional\" class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [formControl]=\"control\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of data\" [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n \r\n <mat-error class=\"mb-2\" *ngIf=\"userAlreadyExist\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n \r\n <div class=\"col-12\" *ngIf=\"arrayList?.length && !isReadOnly && multiple\">\r\n <div class=\"example-list n-results\">\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': ind === 0}\"\r\n *ngFor=\"let emails of arrayList; let ind = index\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n <label *ngIf=\"emails?.personName\">\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n </div>\r\n <ds-button class=\"ds-btn-action\" size=\"small\" *ngIf=\"!(isReadOnly)\" (click)=\"deleteRow(ind,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly){\r\n <ng-container>\r\n <!-- && (field?.personName || multiple) -->\r\n <app-info-item class=\"d-flex flex-wrap align-items-center info-item w-100 mb-2\" type=\"user-picker\" [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\" [arrayList]=\"arrayList\">\r\n <!-- [name]=\"field?.personName\" [value]=\"field?.personEmail\" -->\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{i18n.translate('searchEmployeeTooltip_1')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_2')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_3')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_4')}}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
124
+ ], usesInheritance: true, ngImport: i0, template: "@if (!isReadOnly) {\r\n <ng-container>\r\n @if (label) {\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">\r\n {{ label }}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"></ds-icon>\r\n </span>\r\n @if (optional) {\r\n <span class=\"fs-11 fc-dark-gray\"> {{ i18n.translate('Optional') }}</span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>{{ label }}</mat-label>\r\n <ds-icon icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input\r\n type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [matAutocomplete]=\"auto\" [formControl]=\"employeeSearchControl\" [value]=\"control.value\">\r\n </label>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (option of data; track option) {\r\n <mat-option\r\n [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{ option?.name }}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{ option?.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (showHint) {\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n @if (userAlreadyExist) {\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n }\r\n @if (arrayList?.length && !isReadOnly && multiple) {\r\n <div class=\"col-12 mt-2\">\r\n <div class=\"example-list n-results\">\r\n @for (emails of arrayList; track $index) {\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': $index === 0}\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img alt=\"user image\" [src]=\"getImage(emails?.['personEmail'])\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n @if (emails?.['personName']) {\r\n <label>\r\n {{ (emails?.['personName']) }}\r\n <span class=\"title\">\r\n {{ emails?.['personEmail'] }}\r\n </span>\r\n </label>\r\n }\r\n </div>\r\n @if (!(isReadOnly)) {\r\n <ds-button class=\"ds-btn-action\" size=\"small\" (click)=\"deleteRow($index,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly) {\r\n <ng-container>\r\n <!-- && (field?.personName || multiple) -->\r\n <app-info-item\r\n class=\"info-item\" type=\"user-picker\" [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\" [name]=\"control.value['personName']\" [value]=\"control.value['personEmail']\" [arrayList]=\"arrayList\">\r\n <!-- [arrayList]=\"arrayList\" -->\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{ i18n.translate('searchEmployeeTooltip_1') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_2') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_3') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_4') }}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"], dependencies: [{ kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i2.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i4.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: i4.SatPopoverAnchorDirective, selector: "[satPopoverAnchor]", inputs: ["satPopoverAnchor"], exportAs: ["satPopoverAnchor"] }, { kind: "component", type: ValidationErrorsComponent, selector: "app-validation-errors", inputs: ["errors", "customErrorMessages"] }, { kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }] });
189
125
  }
190
126
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: SearchEmployeeComponent, decorators: [{
191
127
  type: Component,
192
128
  args: [{ selector: 'app-search-employee', schemas: [CUSTOM_ELEMENTS_SCHEMA], standalone: true, imports: [
129
+ MatFormField,
130
+ MatInput,
193
131
  NgClass,
194
132
  MatAutocompleteModule,
195
- NgIf,
196
- ReactiveFormsModule
133
+ ReactiveFormsModule,
134
+ FormsModule,
135
+ SatPopoverModule,
136
+ ValidationErrorsComponent,
137
+ InfoItemComponent,
138
+ MatError
197
139
  ], providers: [
198
140
  {
199
141
  provide: NG_VALUE_ACCESSOR,
200
142
  useExisting: forwardRef(() => SearchEmployeeComponent),
201
143
  multi: true,
202
144
  },
203
- ], template: "@if(!isReadOnly){\r\n <ng-container>\r\n @if(label){\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">\r\n {{label}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n @if(optional){\r\n <span class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [formControl]=\"control\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n @if(loading){\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for(option of data; track option){\r\n <mat-option [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if(!control?.valid){\r\n <mat-error class=\"mb-2\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n }\r\n @if(showHint){\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <!-- @if(showErrorMessage){\r\n <mat-error class=\"mb-2\">{{errorMessage}}\r\n </mat-error>\r\n } -->\r\n @if(userAlreadyExist){\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n }\r\n @if(arrayList?.length && !isReadOnly && multiple){\r\n <div class=\"col-12\">\r\n <div class=\"example-list n-results\">\r\n @for(emails of arrayList;track $index){\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': $index === 0}\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n @if(emails?.personName){\r\n <label>\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n }\r\n </div>\r\n @if(!(isReadOnly)){\r\n <ds-button class=\"ds-btn-action\" size=\"small\" (click)=\"deleteRow($index,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n \r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n \r\n \r\n </ng-container>\r\n}\r\n@if(!isReadOnly){\r\n <ng-container>\r\n <div class=\"d-flex justify-content-between mb-1\" *ngIf=\"label\">\r\n <span class=\"form-label mb-0\">\r\n {{label}}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"\r\n ></ds-icon>\r\n <!-- (click)=\"searchEmpPopover.toggle(); $event.stopImmediatePropagation()\" -->\r\n </span>\r\n \r\n <span *ngIf=\"optional\" class=\"fs-11 fc-dark-gray\"> {{i18n.translate('Optional')}}\r\n </span>\r\n </div>\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>\r\n {{label}}\r\n </mat-label>\r\n <ds-icon matPrefix icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [formControl]=\"control\" [matAutocomplete]=\"auto\">\r\n \r\n </label>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix *ngIf=\"loading\"></span>\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of data\" [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{option?.name}}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{option?.description}}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error class=\"mb-2\" *ngIf=\"(!control?.valid)\">{{i18n.translate('validSearchError')}}{{label}}\r\n </mat-error>\r\n <mat-hint *ngIf=\"showHint\">\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{hint}}</span>\r\n </mat-hint>\r\n </mat-form-field>\r\n <!-- <mat-error class=\"mb-2\" *ngIf=\"showErrorMessage\">{{errorMessage}}\r\n </mat-error> -->\r\n \r\n <mat-error class=\"mb-2\" *ngIf=\"userAlreadyExist\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n \r\n <div class=\"col-12\" *ngIf=\"arrayList?.length && !isReadOnly && multiple\">\r\n <div class=\"example-list n-results\">\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': ind === 0}\"\r\n *ngFor=\"let emails of arrayList; let ind = index\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img [src]=\"getImage(emails?.personEmail)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n <label *ngIf=\"emails?.personName\">\r\n {{(emails?.personName)}}\r\n <span class=\"title\">\r\n {{emails?.personEmail}}\r\n </span>\r\n </label>\r\n </div>\r\n <ds-button class=\"ds-btn-action\" size=\"small\" *ngIf=\"!(isReadOnly)\" (click)=\"deleteRow(ind,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n \r\n </ng-container>\r\n}\r\n\r\n@if(isReadOnly){\r\n <ng-container>\r\n <!-- && (field?.personName || multiple) -->\r\n <app-info-item class=\"d-flex flex-wrap align-items-center info-item w-100 mb-2\" type=\"user-picker\" [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\" [arrayList]=\"arrayList\">\r\n <!-- [name]=\"field?.personName\" [value]=\"field?.personEmail\" -->\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{i18n.translate('searchEmployeeTooltip_1')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_2')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_3')}}</li>\r\n <li>{{i18n.translate('searchEmployeeTooltip_4')}}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"] }]
145
+ ], template: "@if (!isReadOnly) {\r\n <ng-container>\r\n @if (label) {\r\n <div class=\"d-flex justify-content-between mb-1\">\r\n <span class=\"form-label mb-0\">\r\n {{ label }}\r\n <ds-icon icon=\"info\" class=\"cursor-pointer\" [satPopoverAnchor]=\"searchEmpPopover\"></ds-icon>\r\n </span>\r\n @if (optional) {\r\n <span class=\"fs-11 fc-dark-gray\"> {{ i18n.translate('Optional') }}</span>\r\n }\r\n </div>\r\n }\r\n <mat-form-field class=\"primary-form {{className}}\" [floatLabel]=\"floatLabel\">\r\n <mat-label>{{ label }}</mat-label>\r\n <ds-icon icon=\"search\" class=\"fc-coral fs-18\"></ds-icon>\r\n <label class=\"mat-form-content\">\r\n <input\r\n type=\"text\" aria-label=\"Number\" (input)=\"onLoadOptions($event)\" matInput [disabled]=\"isDisabled\"\r\n [matAutocomplete]=\"auto\" [formControl]=\"employeeSearchControl\" [value]=\"control.value\">\r\n </label>\r\n @if (loading) {\r\n <span class=\"sfi sfi-spinner d-inline-block spin fc-coral\" matSuffix></span>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (option of data; track option) {\r\n <mat-option\r\n [value]=\"option?.['personName']\"\r\n (onSelectionChange)=\"selectOption(option , $event)\">\r\n <div class=\"d-flex align-items-center\">\r\n <div class=\"img-card circled-img small\">\r\n <img [src]=\"getImage(option?.email)\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\" alt=\"\">\r\n </div>\r\n <span class=\"mx-2\"></span>\r\n <div class=\"line-height-1\">\r\n <h6 class=\"fs-17 fw-medium fc-onyx mb-0 line-height-1\">{{ option?.name }}</h6>\r\n <span class=\"fs-13 fw-normal fc-dark-gray\">\r\n {{ option?.description }}\r\n </span>\r\n </div>\r\n </div>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n @if (showHint) {\r\n <mat-hint>\r\n <span class=\"sfi sfi-check-circle font-10 fc-dark-gray\" [ngClass]=\"{'fc-oasis-light-imp':value}\"></span>\r\n <span class=\"mx-1\"></span>\r\n <span class=\"fs-12 fc-onyx\">{{ hint }}</span>\r\n </mat-hint>\r\n }\r\n </mat-form-field>\r\n <app-validation-errors [errors]=\"control.errors\"></app-validation-errors>\r\n @if (userAlreadyExist) {\r\n <mat-error class=\"mb-2\">\r\n {{ i18n.translate('userAlreadyExist') }}\r\n </mat-error>\r\n }\r\n @if (arrayList?.length && !isReadOnly && multiple) {\r\n <div class=\"col-12 mt-2\">\r\n <div class=\"example-list n-results\">\r\n @for (emails of arrayList; track $index) {\r\n <div class=\"example-box n-col px-3\" [ngClass]=\"{'mt-0': $index === 0}\">\r\n <div class=\"d-flex flex-grow-1 w-100\">\r\n <div class=\"user-info flex-grow-1\">\r\n <img alt=\"user image\" [src]=\"getImage(emails?.['personEmail'])\" onerror=\"this.onerror=null;this.src='assets/images/user.svg';\"\r\n alt=\"\" class=\"prof-img\" draggable=\"false\">\r\n @if (emails?.['personName']) {\r\n <label>\r\n {{ (emails?.['personName']) }}\r\n <span class=\"title\">\r\n {{ emails?.['personEmail'] }}\r\n </span>\r\n </label>\r\n }\r\n </div>\r\n @if (!(isReadOnly)) {\r\n <ds-button class=\"ds-btn-action\" size=\"small\" (click)=\"deleteRow($index,emails)\" icon>\r\n <ds-icon icon=\"trash\" class=\"fc-red fs-20\"></ds-icon>\r\n </ds-button>\r\n }\r\n\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n\r\n </ng-container>\r\n}\r\n@if (isReadOnly) {\r\n <ng-container>\r\n <!-- && (field?.personName || multiple) -->\r\n <app-info-item\r\n class=\"info-item\" type=\"user-picker\" [hasLabel]=\"!!label\"\r\n [multiple]=\"multiple\" [ngClass]=\"{'user-picker': !isReadOnly}\" [actionType]=\"!isReadOnly ? 'delete' : 'edit'\"\r\n [label]=\"label\" [name]=\"control.value['personName']\" [value]=\"control.value['personEmail']\" [arrayList]=\"arrayList\">\r\n <!-- [arrayList]=\"arrayList\" -->\r\n </app-info-item>\r\n </ng-container>\r\n}\r\n\r\n\r\n<sat-popover #searchEmpPopover [hasBackdrop]=\"true\" verticalAlign=\"below\">\r\n <div class=\"default-popover p-3\">\r\n <ol class=\"px-3 m-0\">\r\n <li>{{ i18n.translate('searchEmployeeTooltip_1') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_2') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_3') }}</li>\r\n <li>{{ i18n.translate('searchEmployeeTooltip_4') }}</li>\r\n </ol>\r\n </div>\r\n</sat-popover>\r\n", styles: [".small-input~.btn{height:41px}:host{flex-grow:1}.agenda-list.inside .mat-list-item{display:flex;align-items:center;padding:0 1rem;background-color:#fff;border:1px solid silver;height:88px!important}.agenda-list.inside .mat-list-item:before{position:relative;left:auto;right:auto}.agenda-list .mat-list-item{height:66px!important;background-color:#d3d3d3;margin-bottom:1.5rem;cursor:move}.agenda-list .mat-list-item:hover:before{opacity:1}.agenda-list .mat-list-item:before{content:\"\\e928\";font-family:stc-font-icons;left:-1.5rem;color:#a9a9a9;position:absolute;font-size:1.5rem;opacity:0;transition:all .3s linear}[dir=rtl] .agenda-list .mat-list-item:before{left:auto;right:-1.5rem}.agenda-list .mat-list-item:last-child{margin-bottom:0}.example-list{width:500px;max-width:100%;border:solid 1px #ccc;min-height:60px;display:block;background:#fff;border-radius:0;overflow:hidden}.example-box{color:#000000de;display:flex;box-sizing:border-box;cursor:move;font-size:14px;position:relative;background-color:#f3f3f1;padding:18px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.example-box .user-info{display:flex;align-items:center}.example-box .user-info .drag-icon{position:absolute;left:18px;cursor:move}html[dir=rtl] .example-box .user-info .drag-icon{left:auto;right:18px}.example-box .user-info .prof-img{width:40px;height:40px;border-radius:50%;border:2px solid #fff;margin-inline-end:10px}.example-box .user-info label{font-size:13px;font-weight:500;color:#1d242d;flex-grow:1}.example-box .user-info label .title{display:block;color:#ff375e;font-size:9px}.example-box .user-info-reviewer{display:flex;gap:.5rem;width:calc(100% + 68px);padding:10px 15px;margin:10px 0 -18px -50px;background-color:#dde0e1}[dir=rtl] .example-box .user-info-reviewer{margin:10px -50px -18px 0}.example-box .user-info-reviewer .drag-icon{position:absolute;transform:translateY(-50%);cursor:move}.example-box .user-info-reviewer .reviewer-info{display:flex}.example-box .user-info-reviewer .reviewer-info .prof-img{width:20px;height:20px;border-radius:50%;border:1px solid #fff;margin:0 5px}.example-box .user-info-reviewer .reviewer-info label{font-size:11px;font-weight:500;color:#000;width:100px;margin-top:1px}.example-box .user-info-reviewer .reviewer-info label .title{display:block;color:#ff375e;font-size:11px}.example-box .user-info-reviewer span{color:#a54ee1;font-size:11px;padding:0;margin-bottom:0;display:block;text-align:start}.example-box .icon{width:30px;height:30px;background-color:#ff375e33;text-align:center;line-height:26px;cursor:pointer;flex-shrink:0}.cdk-drag-preview{box-sizing:border-box;border-radius:0;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;overflow:hidden}.cdk-drag-preview .icon{display:none}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:none}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.n-content{max-width:700px;width:100%}.n-results{width:100%;border:0;counter-reset:section}.n-results .n-col{position:relative;background-color:#f3f3f1;padding:10px;justify-content:space-between;align-items:flex-start;margin-top:10px;padding-inline-start:50px;border:0;flex-direction:column;width:100%}.n-results .n-col:last-child{margin-bottom:30px}.n-results .n-col:after,.n-results .n-col:before{display:none}@media (max-width: 991px){.example-box .user-info:before{margin-inline-end:10px;flex-shrink:0}}@media (max-width: 767px){.n-col{padding-inline-start:40px}.n-col .user-info-reviewer span{margin-bottom:0}}@media (max-width: 321px){.n-results .n-col{flex-wrap:wrap;justify-content:center}.n-results .n-col .user-info{justify-content:center}.n-results .n-col .user-info:before{position:absolute;top:15px;left:15px}.n-results .n-col .user-info .prof-img{margin:0 10px 10px}.n-results .n-col .user-info label{width:100%;text-align:center}.n-results .n-col .icon{width:100%}}::ng-deep .default-popover{max-width:320px;right:-2.5rem!important}[dir=rtl] ::ng-deep .default-popover{left:-2.5rem!important;right:auto}\n"] }]
204
146
  }], propDecorators: { valueName: [{
205
147
  type: Input
206
148
  }], tooltip: [{
@@ -234,4 +176,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImpor
234
176
  }], emitedDeletedValue: [{
235
177
  type: Output
236
178
  }] } });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL3NlYXJjaC1lbXBsb3llZS9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvc2VhcmNoLWVtcGxveWVlL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSw0REFBNEQ7QUFDNUQsd0RBQXdEO0FBQ3hELHVEQUF1RDtBQUN2RCx1REFBdUQ7QUFDdkQsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxPQUFPLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFDLDZCQUE2QixFQUFDLE1BQU0scUNBQXFDLENBQUM7Ozs7O0FBc0JsRixNQUFNLE9BQU8sdUJBQThCLFNBQVEsNkJBQW1DO0lBQzNFLFNBQVMsQ0FBVTtJQUNuQixPQUFPLENBQVU7SUFDakIsU0FBUyxHQUFHLGdCQUFnQixDQUFDO0lBQzdCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixJQUFJLENBQVM7SUFDdEIsZUFB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O3NCQUF0QixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdXNlLWxpZmVjeWNsZS1pbnRlcmZhY2UgKi9cclxuLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXggKi9cclxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXHJcbmltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nQ2xhc3MsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1zZWFyY2gtZW1wbG95ZWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuc2NzcyddLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBOZ0lmLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZVxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBTZWFyY2hFbXBsb3llZUNvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VhcmNoRW1wbG95ZWVDb21wb25lbnQ8VHlwZT4gZXh0ZW5kcyBDb250cm9sVmFsdWVBY2Nlc3NvckRpcmVjdGl2ZTxUeXBlPiB7XHJcbiAgQElucHV0KCkgdmFsdWVOYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRvb2x0aXAhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY2xhc3NOYW1lID0gJ2JvcmRlcmVkLWlucHV0JztcclxuICBASW5wdXQoKSBzaG93TGFiZWwgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIG9wdGlvbmFsID0gZmFsc2U7XHJcbiAgQElucHV0KCkgZGF0YSE6IGFueVtdO1xyXG4gIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG4gIC8vIEBJbnB1dCgpIGZsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xyXG4gIEBJbnB1dCgpIGZsb2F0TGFiZWw6IGFueSA9ICdhdXRvJztcclxuICBASW5wdXQoKSBlcnJvciE6IHN0cmluZztcclxuICBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRFbXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uSW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2hvd0VkaXQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZWRpdERpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZURpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgc2VhcmNoaW5nRm9yRW1wID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXJyYXlMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzVW5pcXVlVXNlcnMgPSBmYWxzZTtcclxuICB1c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGVtaXRlZERlbGV0ZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLy8gbmdPbkluaXQoKSB7XHJcbiAgLy8gICAvLyB0aGlzLnJlc2V0UHJvcGFnYXRvci5zdWJzY3JpYmUodGhpcywgdGhpcy5yZXNldFNlYXJjaEVtcERhdGEpO1xyXG4gIC8vICAgaWYgKCF0aGlzLmZpZWxkKSB7XHJcbiAgLy8gICAgIHRoaXMuZmllbGQgPSB7XHJcbiAgLy8gICAgICAgcGVyc29uRW1haWw6IG51bGwsXHJcbiAgLy8gICAgICAgcGVyc29uTmFtZTogbnVsbCxcclxuICAvLyAgICAgfTtcclxuICAvLyAgIH0gZWxzZSB7XHJcbiAgLy8gICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh0aGlzLmZpZWxkPy5wZXJzb25OYW1lKTtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRlbGV0ZVJvdyhpbmQ6IG51bWJlciwgcm93RGF0YSkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5hcnJheUxpc3QgPSB0aGlzLmFycmF5TGlzdC5maWx0ZXIoKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggIT0gaW5kO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIHJvd0RhdGE6IHJvd0RhdGEsXHJcbiAgICAgICAgYXJyYXlMaXN0OiB0aGlzLmFycmF5TGlzdFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdGVkRGVsZXRlZFZhbHVlLmVtaXQob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGlmIChjaGFuZ2VzPy5bJ2ZpZWxkJ10pIHtcclxuICAgICAgaWYgKGNoYW5nZXNbJ2ZpZWxkJ10/LmN1cnJlbnRWYWx1ZT8ucGVyc29uRW1haWwgPT0gJycgfHwgY2hhbmdlc1snZmllbGQnXT8uY3VycmVudFZhbHVlPy5wZXJzb25FbWFpbCA9PSBudWxsKSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKCcnKVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShjaGFuZ2VzWydmaWVsZCddPy5jdXJyZW50VmFsdWU/LnBlcnNvbk5hbWUpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgICBpZiAoY2hhbmdlcz8uWydkaXNhYmxlZCddKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzWydkaXNhYmxlZCddLmN1cnJlbnRWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5kaXNhYmxlKClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZW5hYmxlKClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRTZWFyY2hFbXBEYXRhKCkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLmFycmF5TGlzdCA9IFtdO1xyXG4gICAgICAgIC8vIHRoaXMuZmllbGQgPSB7XHJcbiAgICAgICAgLy8gICBwZXJzb25OYW1lOiBudWxsLFxyXG4gICAgICAgIC8vICAgcGVyc29uRW1haWw6IG51bGwsXHJcbiAgICAgICAgLy8gfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyB0aGlzLmZpZWxkID0ge1xyXG4gICAgICAgIC8vICAgcGVyc29uTmFtZTogbnVsbCxcclxuICAgICAgICAvLyAgIHBlcnNvbkVtYWlsOiBudWxsLFxyXG4gICAgICAgIC8vIH07XHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkxvYWRPcHRpb25zKGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgdGhpcy5kYXRhID0gW107XHJcbiAgICBpZiAoaW5wdXQubGVuZ3RoID49IDMpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmNvcmVTZXJ2aWNlLnNlYXJjaEVtcGxveWVlKGlucHV0KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChmb3JtOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5kYXRhID0gZm9ybS5vcHRpb25zO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuXHJcbiAgICAgICAgfSwgY29tcGxldGU6ICgpID0+IHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09IDApIHtcclxuICAgICAgaWYodGhpcy5tdWx0aXBsZSl7XHJcbiAgICAgICAgLy8gY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIC8vICAgYXJyYXlMaXN0OiB0aGlzLmFycmF5TGlzdCxcclxuICAgICAgICAvLyAgIGZpZWxkOiB0aGlzLmZpZWxkXHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIC8vIHRoaXMuZW1pdGVkVmFsdWUuZW1pdChvYmopO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICAvLyB0aGlzLmVtaXRlZFZhbHVlLmVtaXQobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVEYXRhKG9wdGlvbjogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9wdGlvbj8uZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkgfHxcclxuICAgICAgb3B0aW9uPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEltYWdlKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPScgKyBpZDtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihvYmplY3Q6IGFueSwgZXY6IGFueSkge1xyXG4gICAgdGhpcy51c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgLy8gdGhpcy5maWVsZCA9IHtcclxuICAgIC8vICAgcGVyc29uTmFtZTogb2JqZWN0LmRlc2NyaXB0aW9uLFxyXG4gICAgLy8gICBwZXJzb25FbWFpbDogb2JqZWN0LmVtYWlsLFxyXG4gICAgLy8gICBqb2I6b2JqZWN0LmpvYlBvc2l0aW9uLFxyXG4gICAgLy8gICBqb2JDb2RlOm9iamVjdC5qb2JDb2RlLFxyXG4gICAgLy8gICBtYW5hZ2VyOiBvYmplY3QubWFuYWdlcixcclxuICAgIC8vICAgZGVwYXJ0bWVudDogb2JqZWN0LmRlcGFydG1lbnQsXHJcbiAgICAvLyAgIGdlbmVyYWxEZXBhcnRtZW50OiBvYmplY3QuZ2VuZXJhbERlcGFydG1lbnQsXHJcbiAgICAvLyAgIHNlY3Rvcjogb2JqZWN0LnNlY3RvcixcclxuICAgIC8vICAgc2VjdGlvbjogb2JqZWN0LnNlY3Rpb24sXHJcbiAgICAvLyAgIHNlbmlvclNlY3Rvck5hbWU6IG9iamVjdC5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICAvLyB9O1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKHRoaXMuaXNVbmlxdWVVc2VycyAmJiB0aGlzLmFycmF5TGlzdC5zb21lKChpdGVtKSA9PiBpdGVtPy5wZXJzb25FbWFpbCA9PT0gb2JqZWN0Py5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLnVzZXJBbHJlYWR5RXhpc3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gdGhpcy5hcnJheUxpc3QucHVzaCh0aGlzLmZpZWxkKTtcclxuICAgICAgLy8gY29uc3Qgb2JqID0ge1xyXG4gICAgICAvLyAgIGFycmF5TGlzdDogdGhpcy5hcnJheUxpc3QsXHJcbiAgICAgIC8vICAgZmllbGQ6IHRoaXMuZmllbGRcclxuICAgICAgLy8gfTtcclxuICAgICAgLy8gdGhpcy5lbWl0ZWRWYWx1ZS5lbWl0KG9iaik7XHJcbiAgICAgIC8vIHRoaXMuZW1pdGVkVmFsdWUuZW1pdCh0aGlzLmZpZWxkKTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAvLyB0aGlzLmZpZWxkID0ge1xyXG4gICAgICAvLyAgIHBlcnNvbkVtYWlsOiBudWxsLFxyXG4gICAgICAvLyAgIHBlcnNvbk5hbWU6IG51bGwsXHJcbiAgICAgIC8vICAgam9iOm51bGwsXHJcbiAgICAgIC8vICAgam9iQ29kZTpudWxsXHJcbiAgICAgIC8vIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmVtaXRlZFZhbHVlLmVtaXQodGhpcy5maWVsZCk7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShvYmplY3QuZGVzY3JpcHRpb24pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb3BlbkhpbnRzKCkge1xyXG4gICAgLy8gdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdvcGVuJywgRmFxU2lkZW5hdkNvbXBvbmVudCwgJ2VuZCcsICdvdmVyJyk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIHNlYXJjaEVtcCB7XHJcbiAgcGVyc29uTmFtZT86IHN0cmluZztcclxuICBwZXJzb25FbWFpbD86IHN0cmluZztcclxuICBjb250YWN0Pzogc3RyaW5nO1xyXG4gIGVtcGxveWVlTnVtYmVyPzogc3RyaW5nO1xyXG59XHJcbiIsIkBpZighaXNSZWFkT25seSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIEBpZihsYWJlbCl7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+XHJcbiAgICAgICAgICB7e2xhYmVsfX1cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJpbmZvXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIFtzYXRQb3BvdmVyQW5jaG9yXT1cInNlYXJjaEVtcFBvcG92ZXJcIlxyXG4gICAgICAgICAgICA+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICA8IS0tIChjbGljayk9XCJzZWFyY2hFbXBQb3BvdmVyLnRvZ2dsZSgpOyAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIiAtLT5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICBAaWYob3B0aW9uYWwpe1xyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTExIGZjLWRhcmstZ3JheVwiPiB7e2kxOG4udHJhbnNsYXRlKCdPcHRpb25hbCcpfX1cclxuICAgICAgPC9zcGFuPlxyXG4gICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxyXG4gICAgICA8bWF0LWxhYmVsPlxyXG4gICAgICAgIHt7bGFiZWx9fVxyXG4gICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgPGRzLWljb24gbWF0UHJlZml4IGljb249XCJzZWFyY2hcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTE4XCI+PC9kcy1pY29uPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgYXJpYS1sYWJlbD1cIk51bWJlclwiIChpbnB1dCk9XCJvbkxvYWRPcHRpb25zKCRldmVudClcIiBtYXRJbnB1dCBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZFwiXHJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiPlxyXG4gICAgIFxyXG4gICAgICA8L2xhYmVsPlxyXG4gICAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJzaG93RXJyb3JNZXNzYWdlXCI+e3tlcnJvck1lc3NhZ2V9fVxyXG4gICAgICA8L21hdC1lcnJvcj4gLS0+XHJcbiAgICAgIEBpZihsb2FkaW5nKXtcclxuICAgICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktc3Bpbm5lciBkLWlubGluZS1ibG9jayBzcGluIGZjLWNvcmFsXCIgbWF0U3VmZml4Pjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxyXG4gICAgICAgIEBmb3Iob3B0aW9uIG9mIGRhdGE7IHRyYWNrIG9wdGlvbil7XHJcbiAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwib3B0aW9uPy5bJ3BlcnNvbk5hbWUnXVwiXHJcbiAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0T3B0aW9uKG9wdGlvbiAsICRldmVudClcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbWctY2FyZCBjaXJjbGVkLWltZyBzbWFsbFwiPlxyXG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZShvcHRpb24/LmVtYWlsKVwiIG9uZXJyb3I9XCJ0aGlzLm9uZXJyb3I9bnVsbDt0aGlzLnNyYz0nYXNzZXRzL2ltYWdlcy91c2VyLnN2Zyc7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm14LTJcIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLWhlaWdodC0xXCI+XHJcbiAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtMTcgZnctbWVkaXVtIGZjLW9ueXggbWItMCBsaW5lLWhlaWdodC0xXCI+e3tvcHRpb24/Lm5hbWV9fTwvaDY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMyBmdy1ub3JtYWwgZmMtZGFyay1ncmF5XCI+XHJcbiAgICAgICAgICAgICAgICB7e29wdGlvbj8uZGVzY3JpcHRpb259fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIEBpZighY29udHJvbD8udmFsaWQpe1xyXG4gICAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCI+e3tpMThuLnRyYW5zbGF0ZSgndmFsaWRTZWFyY2hFcnJvcicpfX17e2xhYmVsfX1cclxuICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgfVxyXG4gICBAaWYoc2hvd0hpbnQpe1xyXG4gICAgPG1hdC1oaW50PlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInNmaSBzZmktY2hlY2stY2lyY2xlIGZvbnQtMTAgZmMtZGFyay1ncmF5XCIgW25nQ2xhc3NdPVwieydmYy1vYXNpcy1saWdodC1pbXAnOnZhbHVlfVwiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgIDwvbWF0LWhpbnQ+XHJcbiAgIH1cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tIEBpZihzaG93RXJyb3JNZXNzYWdlKXtcclxuICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIj57e2Vycm9yTWVzc2FnZX19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgfSAtLT5cclxuICBAaWYodXNlckFscmVhZHlFeGlzdCl7XHJcbiAgICA8bWF0LWVycm9yIGNsYXNzPVwibWItMlwiPlxyXG4gICAgICB7eyBpMThuLnRyYW5zbGF0ZSgndXNlckFscmVhZHlFeGlzdCcpIH19XHJcbiAgICA8L21hdC1lcnJvcj5cclxuICB9XHJcbiAgQGlmKGFycmF5TGlzdD8ubGVuZ3RoICYmICFpc1JlYWRPbmx5ICYmIG11bHRpcGxlKXtcclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImV4YW1wbGUtbGlzdCBuLXJlc3VsdHNcIj5cclxuICAgICAgICBAZm9yKGVtYWlscyBvZiBhcnJheUxpc3Q7dHJhY2sgJGluZGV4KXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWJveCBuLWNvbCBweC0zXCIgW25nQ2xhc3NdPVwieydtdC0wJzogJGluZGV4ID09PSAwfVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWdyb3ctMSB3LTEwMFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1pbmZvIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlKGVtYWlscz8ucGVyc29uRW1haWwpXCIgb25lcnJvcj1cInRoaXMub25lcnJvcj1udWxsO3RoaXMuc3JjPSdhc3NldHMvaW1hZ2VzL3VzZXIuc3ZnJztcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJwcm9mLWltZ1wiIGRyYWdnYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYoZW1haWxzPy5wZXJzb25OYW1lKXtcclxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7KGVtYWlscz8ucGVyc29uTmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZW1haWxzPy5wZXJzb25FbWFpbH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgQGlmKCEoaXNSZWFkT25seSkpe1xyXG4gICAgICAgICAgICAgIDxkcy1idXR0b24gY2xhc3M9XCJkcy1idG4tYWN0aW9uXCIgc2l6ZT1cInNtYWxsXCIgKGNsaWNrKT1cImRlbGV0ZVJvdygkaW5kZXgsZW1haWxzKVwiIGljb24+XHJcbiAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwidHJhc2hcIiBjbGFzcz1cImZjLXJlZCBmcy0yMFwiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuIFxyXG4gIFxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcbkBpZighaXNSZWFkT25seSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiICpuZ0lmPVwibGFiZWxcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJmb3JtLWxhYmVsIG1iLTBcIj5cclxuICAgICAgICB7e2xhYmVsfX1cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwiaW5mb1wiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiBbc2F0UG9wb3ZlckFuY2hvcl09XCJzZWFyY2hFbXBQb3BvdmVyXCJcclxuICAgICAgICAgID48L2RzLWljb24+XHJcbiAgICAgICAgICA8IS0tIChjbGljayk9XCJzZWFyY2hFbXBQb3BvdmVyLnRvZ2dsZSgpOyAkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKClcIiAtLT5cclxuICAgICAgPC9zcGFuPlxyXG4gIFxyXG4gICAgICA8c3BhbiAqbmdJZj1cIm9wdGlvbmFsXCIgY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj4ge3tpMThuLnRyYW5zbGF0ZSgnT3B0aW9uYWwnKX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwicHJpbWFyeS1mb3JtIHt7Y2xhc3NOYW1lfX1cIiBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsXCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAge3tsYWJlbH19XHJcbiAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICA8ZHMtaWNvbiBtYXRQcmVmaXggaWNvbj1cInNlYXJjaFwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMThcIj48L2RzLWljb24+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cIm1hdC1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBhcmlhLWxhYmVsPVwiTnVtYmVyXCIgKGlucHV0KT1cIm9uTG9hZE9wdGlvbnMoJGV2ZW50KVwiIG1hdElucHV0IFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCI+XHJcbiAgICAgXHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDwhLS0gPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cInNob3dFcnJvck1lc3NhZ2VcIj57e2Vycm9yTWVzc2FnZX19XHJcbiAgICAgIDwvbWF0LWVycm9yPiAtLT5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzZmkgc2ZpLXNwaW5uZXIgZC1pbmxpbmUtYmxvY2sgc3BpbiBmYy1jb3JhbFwiIG1hdFN1ZmZpeCAqbmdJZj1cImxvYWRpbmdcIj48L3NwYW4+XHJcbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhXCIgW3ZhbHVlXT1cIm9wdGlvbj8uWydwZXJzb25OYW1lJ11cIlxyXG4gICAgICAgICAgKG9uU2VsZWN0aW9uQ2hhbmdlKT1cInNlbGVjdE9wdGlvbihvcHRpb24gLCAkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNhcmQgY2lyY2xlZC1pbWcgc21hbGxcIj5cclxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2Uob3B0aW9uPy5lbWFpbClcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGluZS1oZWlnaHQtMVwiPlxyXG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTE3IGZ3LW1lZGl1bSBmYy1vbnl4IG1iLTAgbGluZS1oZWlnaHQtMVwiPnt7b3B0aW9uPy5uYW1lfX08L2g2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtMTMgZnctbm9ybWFsIGZjLWRhcmstZ3JheVwiPlxyXG4gICAgICAgICAgICAgICAge3tvcHRpb24/LmRlc2NyaXB0aW9ufX1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCIoIWNvbnRyb2w/LnZhbGlkKVwiPnt7aTE4bi50cmFuc2xhdGUoJ3ZhbGlkU2VhcmNoRXJyb3InKX19e3tsYWJlbH19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICA8bWF0LWhpbnQgKm5nSWY9XCJzaG93SGludFwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIiBbbmdDbGFzc109XCJ7J2ZjLW9hc2lzLWxpZ2h0LWltcCc6dmFsdWV9XCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwibXgtMVwiPjwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTEyIGZjLW9ueXhcIj57e2hpbnR9fTwvc3Bhbj5cclxuICAgICAgPC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8IS0tIDxtYXQtZXJyb3IgY2xhc3M9XCJtYi0yXCIgKm5nSWY9XCJzaG93RXJyb3JNZXNzYWdlXCI+e3tlcnJvck1lc3NhZ2V9fVxyXG4gICAgPC9tYXQtZXJyb3I+IC0tPlxyXG4gIFxyXG4gICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIiAqbmdJZj1cInVzZXJBbHJlYWR5RXhpc3RcIj5cclxuICAgICAge3sgaTE4bi50cmFuc2xhdGUoJ3VzZXJBbHJlYWR5RXhpc3QnKSB9fVxyXG4gICAgPC9tYXQtZXJyb3I+XHJcbiAgXHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgKm5nSWY9XCJhcnJheUxpc3Q/Lmxlbmd0aCAmJiAhaXNSZWFkT25seSAmJiBtdWx0aXBsZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0IG4tcmVzdWx0c1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWJveCBuLWNvbCBweC0zXCIgW25nQ2xhc3NdPVwieydtdC0wJzogaW5kID09PSAwfVwiXHJcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgZW1haWxzIG9mIGFycmF5TGlzdDsgbGV0IGluZCA9IGluZGV4XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtZ3Jvdy0xIHctMTAwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiZ2V0SW1hZ2UoZW1haWxzPy5wZXJzb25FbWFpbClcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiXHJcbiAgICAgICAgICAgICAgICBhbHQ9XCJcIiBjbGFzcz1cInByb2YtaW1nXCIgZHJhZ2dhYmxlPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICA8bGFiZWwgKm5nSWY9XCJlbWFpbHM/LnBlcnNvbk5hbWVcIj5cclxuICAgICAgICAgICAgICAgIHt7KGVtYWlscz8ucGVyc29uTmFtZSl9fVxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2VtYWlscz8ucGVyc29uRW1haWx9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZHMtYnV0dG9uIGNsYXNzPVwiZHMtYnRuLWFjdGlvblwiIHNpemU9XCJzbWFsbFwiICpuZ0lmPVwiIShpc1JlYWRPbmx5KVwiIChjbGljayk9XCJkZWxldGVSb3coaW5kLGVtYWlscylcIiBpY29uPlxyXG4gICAgICAgICAgICAgIDxkcy1pY29uIGljb249XCJ0cmFzaFwiIGNsYXNzPVwiZmMtcmVkIGZzLTIwXCI+PC9kcy1pY29uPlxyXG4gICAgICAgICAgICA8L2RzLWJ1dHRvbj5cclxuICBcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIFxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG5AaWYoaXNSZWFkT25seSl7XHJcbiAgPG5nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gJiYgKGZpZWxkPy5wZXJzb25OYW1lIHx8IG11bHRpcGxlKSAtLT5cclxuICAgIDxhcHAtaW5mby1pdGVtIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgaW5mby1pdGVtIHctMTAwIG1iLTJcIiB0eXBlPVwidXNlci1waWNrZXJcIiBbaGFzTGFiZWxdPVwiISFsYWJlbFwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cInsndXNlci1waWNrZXInOiAhaXNSZWFkT25seX1cIiBbYWN0aW9uVHlwZV09XCIhaXNSZWFkT25seSA/ICdkZWxldGUnIDogJ2VkaXQnXCJcclxuICAgICAgW2xhYmVsXT1cImxhYmVsXCIgIFthcnJheUxpc3RdPVwiYXJyYXlMaXN0XCI+XHJcbiAgICAgIDwhLS0gW25hbWVdPVwiZmllbGQ/LnBlcnNvbk5hbWVcIiAgW3ZhbHVlXT1cImZpZWxkPy5wZXJzb25FbWFpbFwiIC0tPlxyXG4gICAgPC9hcHAtaW5mby1pdGVtPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG59XHJcblxyXG5cclxuPHNhdC1wb3BvdmVyICNzZWFyY2hFbXBQb3BvdmVyIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgdmVydGljYWxBbGlnbj1cImJlbG93XCI+XHJcbiAgPGRpdiBjbGFzcz1cImRlZmF1bHQtcG9wb3ZlciBwLTNcIj5cclxuICAgIDxvbCBjbGFzcz1cInB4LTMgbS0wXCI+XHJcbiAgICAgIDxsaT57e2kxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMScpfX08L2xpPlxyXG4gICAgICA8bGk+e3tpMThuLnRyYW5zbGF0ZSgnc2VhcmNoRW1wbG95ZWVUb29sdGlwXzInKX19PC9saT5cclxuICAgICAgPGxpPnt7aTE4bi50cmFuc2xhdGUoJ3NlYXJjaEVtcGxveWVlVG9vbHRpcF8zJyl9fTwvbGk+XHJcbiAgICAgIDxsaT57e2kxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfNCcpfX08L2xpPlxyXG4gICAgPC9vbD5cclxuICA8L2Rpdj5cclxuPC9zYXQtcG9wb3Zlcj5cclxuIl19
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9zaGFyZWQtY29tcG9uZW50cy9mb3JtLWZpZWxkL3NlYXJjaC1lbXBsb3llZS9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL3NoYXJlZC1jb21wb25lbnRzL2Zvcm0tZmllbGQvc2VhcmNoLWVtcGxveWVlL3NlYXJjaC1lbXBsb3llZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsV0FBVyxFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkYsT0FBTyxFQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekcsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3hDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyw2QkFBNkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xGLE9BQU8sRUFBQyxRQUFRLEVBQUUsWUFBWSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGtEQUFrRCxDQUFDO0FBQzNGLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLGtDQUFrQyxDQUFD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QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsQ0FBQzs0QkFDdEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7OEJBR1EsU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUVJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRSxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0UsU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGtCQUFrQjtzQkFBM0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Rm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SLCBSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7Q29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge05nQ2xhc3N9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0QXV0b2NvbXBsZXRlTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQge0NvbnRyb2xWYWx1ZUFjY2Vzc29yRGlyZWN0aXZlfSBmcm9tICcuLi9jb250cm9sLXZhbHVlLWFjY2Vzc29yLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7TWF0RXJyb3IsIE1hdEZvcm1GaWVsZH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7TWF0SW5wdXR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHtTYXRQb3BvdmVyTW9kdWxlfSBmcm9tICdAbmNzdGF0ZS9zYXQtcG9wb3Zlcic7XHJcbmltcG9ydCB7VmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudH0gZnJvbSAnLi4vdmFsaWRhdGlvbi1lcnJvcnMvdmFsaWRhdGlvbi1lcnJvcnMuY29tcG9uZW50JztcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSAnLi4vaW5mby1pdGVtL2luZm8taXRlbS5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtc2VhcmNoLWVtcGxveWVlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoLWVtcGxveWVlLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWFyY2gtZW1wbG95ZWUuY29tcG9uZW50LnNjc3MnXSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRGb3JtRmllbGQsXHJcbiAgICBNYXRJbnB1dCxcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgVmFsaWRhdGlvbkVycm9yc0NvbXBvbmVudCxcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgTWF0RXJyb3JcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gU2VhcmNoRW1wbG95ZWVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNlYXJjaEVtcGxveWVlQ29tcG9uZW50PFR5cGU+IGV4dGVuZHMgQ29udHJvbFZhbHVlQWNjZXNzb3JEaXJlY3RpdmU8VHlwZT4ge1xyXG4gIEBJbnB1dCgpIHZhbHVlTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b29sdGlwITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICdib3JkZXJlZC1pbnB1dCc7XHJcbiAgQElucHV0KCkgc2hvd0xhYmVsID0gdHJ1ZTtcclxuICBASW5wdXQoKSBvcHRpb25hbCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGRhdGEhOiBhbnlbXTtcclxuICBASW5wdXQoKSBmbG9hdExhYmVsOiBhbnkgPSAnYXV0byc7XHJcbiAgQElucHV0KCkgZXJyb3IhOiBzdHJpbmc7XHJcbiAgc2VsZWN0ZWQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgc2VsZWN0ZWRFbXAgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uSW5wdXRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgc2hvd0VkaXQgPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgZWRpdERpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZURpcmVjdE1hbmdlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgYXJyYXlMaXN0OiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGlzVW5pcXVlVXNlcnMgPSBmYWxzZTtcclxuICB1c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgQE91dHB1dCgpIGVtaXRlZERlbGV0ZWRWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcblxyXG4gIGRlbGV0ZVJvdyhpbmQ6IG51bWJlciwgcm93RGF0YSkge1xyXG4gICAgaWYgKCF0aGlzLmlzUmVhZE9ubHkpIHtcclxuICAgICAgdGhpcy5hcnJheUxpc3QgPSB0aGlzLmFycmF5TGlzdC5maWx0ZXIoKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICByZXR1cm4gaW5kZXggIT0gaW5kO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3Qgb2JqID0ge1xyXG4gICAgICAgIHJvd0RhdGE6IHJvd0RhdGEsXHJcbiAgICAgICAgYXJyYXlMaXN0OiB0aGlzLmFycmF5TGlzdFxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdGVkRGVsZXRlZFZhbHVlLmVtaXQob2JqKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uTG9hZE9wdGlvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmRhdGEgPSBbXTtcclxuICAgIGlmIChpbnB1dC5sZW5ndGggPj0gMykge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuY29yZVNlcnZpY2Uuc2VhcmNoRW1wbG95ZWUoaW5wdXQpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmRhdGEgPSBmb3JtLlVzZXJzO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcclxuXHJcbiAgICAgICAgfSwgY29tcGxldGU6ICgpID0+IHtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoaW5wdXQubGVuZ3RoID09IDApIHtcclxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbClcclxuICAgICAgICB0aGlzLmNvbnRyb2wubWFya0FzVG91Y2hlZCgpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluY2x1ZGVEYXRhKG9wdGlvbjogYW55LCBmaWx0ZXJWYWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIG9wdGlvbj8uZW1haWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkgfHxcclxuICAgICAgb3B0aW9uPy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIG9wdGlvbjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldEltYWdlKGlkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICcvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPScgKyBpZDtcclxuICB9XHJcblxyXG4gIHNlbGVjdE9wdGlvbihvYmplY3Q6IGFueSwgZXY6IGFueSkge1xyXG4gICAgdGhpcy51c2VyQWxyZWFkeUV4aXN0ID0gZmFsc2U7XHJcbiAgICB0aGlzLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuZGF0YSA9IFtdO1xyXG4gICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcclxuICAgICAgaWYgKCB0aGlzLmFycmF5TGlzdC5zb21lKChpdGVtKSA9PiBpdGVtPy5wZXJzb25FbWFpbCA9PT0gb2JqZWN0Py5lbWFpbCkpIHtcclxuICAgICAgICB0aGlzLnVzZXJBbHJlYWR5RXhpc3QgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgIHBlcnNvbk5hbWU6IG9iamVjdC5uYW1lLFxyXG4gICAgICAgIHBlcnNvbkVtYWlsOiBvYmplY3QuZW1haWwsXHJcbiAgICAgICAgam9iOiBvYmplY3Quam9iLm5hbWUsXHJcbiAgICAgICAgam9iQ29kZTogb2JqZWN0LmpvYi5jb2RlLFxyXG4gICAgICAgIG1hbmFnZXI6IG9iamVjdC5tYW5hZ2VyLFxyXG4gICAgICAgIGRlcGFydG1lbnQ6IG9iamVjdC5kZXBhcnRtZW50LFxyXG4gICAgICAgIGdlbmVyYWxEZXBhcnRtZW50OiBvYmplY3QuZ2VuZXJhbERlcGFydG1lbnQsXHJcbiAgICAgICAgc2VjdG9yOiBvYmplY3Quc2VjdG9yLFxyXG4gICAgICAgIHNlY3Rpb246IG9iamVjdC5zZWN0aW9uLFxyXG4gICAgICAgIHNlbmlvclNlY3Rvck5hbWU6IG9iamVjdC5zZW5pb3JTZWN0b3JOYW1lXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuYXJyYXlMaXN0LnB1c2gob2JqKTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHRoaXMuYXJyYXlMaXN0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IHtcclxuICAgICAgICBwZXJzb25OYW1lOiBvYmplY3QubmFtZSxcclxuICAgICAgICBwZXJzb25FbWFpbDogb2JqZWN0LmVtYWlsXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKGNvbnRyb2xWYWx1ZSk7XHJcbiAgICAgIHRoaXMuZW1wbG95ZWVTZWFyY2hDb250cm9sLnNldFZhbHVlKG9iamVjdC5uYW1lKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2Ugc2VhcmNoRW1wIHtcclxuICBwZXJzb25OYW1lPzogc3RyaW5nO1xyXG4gIHBlcnNvbkVtYWlsPzogc3RyaW5nO1xyXG4gIGNvbnRhY3Q/OiBzdHJpbmc7XHJcbiAgZW1wbG95ZWVOdW1iZXI/OiBzdHJpbmc7XHJcbn1cclxuIiwiQGlmICghaXNSZWFkT25seSkge1xyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICBAaWYgKGxhYmVsKSB7XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItMVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZm9ybS1sYWJlbCBtYi0wXCI+XHJcbiAgICAgICAgICB7eyBsYWJlbCB9fVxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cImluZm9cIiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgW3NhdFBvcG92ZXJBbmNob3JdPVwic2VhcmNoRW1wUG9wb3ZlclwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgQGlmIChvcHRpb25hbCkge1xyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMSBmYy1kYXJrLWdyYXlcIj4ge3sgaTE4bi50cmFuc2xhdGUoJ09wdGlvbmFsJykgfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInByaW1hcnktZm9ybSB7e2NsYXNzTmFtZX19XCIgW2Zsb2F0TGFiZWxdPVwiZmxvYXRMYWJlbFwiPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7IGxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxkcy1pY29uIGljb249XCJzZWFyY2hcIiBjbGFzcz1cImZjLWNvcmFsIGZzLTE4XCI+PC9kcy1pY29uPlxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJtYXQtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiIGFyaWEtbGFiZWw9XCJOdW1iZXJcIiAoaW5wdXQpPVwib25Mb2FkT3B0aW9ucygkZXZlbnQpXCIgbWF0SW5wdXQgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCIgW2Zvcm1Db250cm9sXT1cImVtcGxveWVlU2VhcmNoQ29udHJvbFwiIFt2YWx1ZV09XCJjb250cm9sLnZhbHVlXCI+XHJcbiAgICAgIDwvbGFiZWw+XHJcbiAgICAgIEBpZiAobG9hZGluZykge1xyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1zcGlubmVyIGQtaW5saW5lLWJsb2NrIHNwaW4gZmMtY29yYWxcIiBtYXRTdWZmaXg+PC9zcGFuPlxyXG4gICAgICB9XHJcbiAgICAgIDxtYXQtYXV0b2NvbXBsZXRlICNhdXRvPVwibWF0QXV0b2NvbXBsZXRlXCI+XHJcbiAgICAgICAgQGZvciAob3B0aW9uIG9mIGRhdGE7IHRyYWNrIG9wdGlvbikge1xyXG4gICAgICAgICAgPG1hdC1vcHRpb25cclxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvbj8uWydwZXJzb25OYW1lJ11cIlxyXG4gICAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwic2VsZWN0T3B0aW9uKG9wdGlvbiAsICRldmVudClcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1nLWNhcmQgY2lyY2xlZC1pbWcgc21hbGxcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJnZXRJbWFnZShvcHRpb24/LmVtYWlsKVwiIG9uZXJyb3I9XCJ0aGlzLm9uZXJyb3I9bnVsbDt0aGlzLnNyYz0nYXNzZXRzL2ltYWdlcy91c2VyLnN2Zyc7XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0yXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaW5lLWhlaWdodC0xXCI+XHJcbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJmcy0xNyBmdy1tZWRpdW0gZmMtb255eCBtYi0wIGxpbmUtaGVpZ2h0LTFcIj57eyBvcHRpb24/Lm5hbWUgfX08L2g2PlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMyBmdy1ub3JtYWwgZmMtZGFyay1ncmF5XCI+XHJcbiAgICAgICAgICAgICAgICB7eyBvcHRpb24/LmRlc2NyaXB0aW9uIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgQGlmIChzaG93SGludCkge1xyXG4gICAgICAgIDxtYXQtaGludD5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2ZpIHNmaS1jaGVjay1jaXJjbGUgZm9udC0xMCBmYy1kYXJrLWdyYXlcIiBbbmdDbGFzc109XCJ7J2ZjLW9hc2lzLWxpZ2h0LWltcCc6dmFsdWV9XCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJteC0xXCI+PC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xMiBmYy1vbnl4XCI+e3sgaGludCB9fTwvc3Bhbj5cclxuICAgICAgICA8L21hdC1oaW50PlxyXG4gICAgICB9XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPGFwcC12YWxpZGF0aW9uLWVycm9ycyBbZXJyb3JzXT1cImNvbnRyb2wuZXJyb3JzXCI+PC9hcHAtdmFsaWRhdGlvbi1lcnJvcnM+XHJcbiAgICBAaWYgKHVzZXJBbHJlYWR5RXhpc3QpIHtcclxuICAgICAgPG1hdC1lcnJvciBjbGFzcz1cIm1iLTJcIj5cclxuICAgICAgICB7eyBpMThuLnRyYW5zbGF0ZSgndXNlckFscmVhZHlFeGlzdCcpIH19XHJcbiAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgfVxyXG4gICAgQGlmIChhcnJheUxpc3Q/Lmxlbmd0aCAmJiAhaXNSZWFkT25seSAmJiBtdWx0aXBsZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZXhhbXBsZS1saXN0IG4tcmVzdWx0c1wiPlxyXG4gICAgICAgICAgQGZvciAoZW1haWxzIG9mIGFycmF5TGlzdDsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJleGFtcGxlLWJveCBuLWNvbCBweC0zXCIgW25nQ2xhc3NdPVwieydtdC0wJzogJGluZGV4ID09PSAwfVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gZmxleC1ncm93LTFcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBhbHQ9XCJ1c2VyIGltYWdlXCIgW3NyY109XCJnZXRJbWFnZShlbWFpbHM/LlsncGVyc29uRW1haWwnXSlcIiBvbmVycm9yPVwidGhpcy5vbmVycm9yPW51bGw7dGhpcy5zcmM9J2Fzc2V0cy9pbWFnZXMvdXNlci5zdmcnO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCIgY2xhc3M9XCJwcm9mLWltZ1wiIGRyYWdnYWJsZT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgIEBpZiAoZW1haWxzPy5bJ3BlcnNvbk5hbWUnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IChlbWFpbHM/LlsncGVyc29uTmFtZSddKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZW1haWxzPy5bJ3BlcnNvbkVtYWlsJ10gfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBAaWYgKCEoaXNSZWFkT25seSkpIHtcclxuICAgICAgICAgICAgICAgICAgPGRzLWJ1dHRvbiBjbGFzcz1cImRzLWJ0bi1hY3Rpb25cIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiZGVsZXRlUm93KCRpbmRleCxlbWFpbHMpXCIgaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwidHJhc2hcIiBjbGFzcz1cImZjLXJlZCBmcy0yMFwiPjwvZHMtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kcy1idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcblxyXG5cclxuICA8L25nLWNvbnRhaW5lcj5cclxufVxyXG5AaWYgKGlzUmVhZE9ubHkpIHtcclxuICA8bmctY29udGFpbmVyPlxyXG4gICAgPCEtLSAmJiAoZmllbGQ/LnBlcnNvbk5hbWUgfHwgbXVsdGlwbGUpIC0tPlxyXG4gICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgY2xhc3M9XCJpbmZvLWl0ZW1cIiB0eXBlPVwidXNlci1waWNrZXJcIiBbaGFzTGFiZWxdPVwiISFsYWJlbFwiXHJcbiAgICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtuZ0NsYXNzXT1cInsndXNlci1waWNrZXInOiAhaXNSZWFkT25seX1cIiBbYWN0aW9uVHlwZV09XCIhaXNSZWFkT25seSA/ICdkZWxldGUnIDogJ2VkaXQnXCJcclxuICAgICAgW2xhYmVsXT1cImxhYmVsXCIgW25hbWVdPVwiY29udHJvbC52YWx1ZVsncGVyc29uTmFtZSddXCIgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVbJ3BlcnNvbkVtYWlsJ11cIiBbYXJyYXlMaXN0XT1cImFycmF5TGlzdFwiPlxyXG4gICAgICA8IS0tIFthcnJheUxpc3RdPVwiYXJyYXlMaXN0XCIgLS0+XHJcbiAgICA8L2FwcC1pbmZvLWl0ZW0+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcblxyXG48c2F0LXBvcG92ZXIgI3NlYXJjaEVtcFBvcG92ZXIgW2hhc0JhY2tkcm9wXT1cInRydWVcIiB2ZXJ0aWNhbEFsaWduPVwiYmVsb3dcIj5cclxuICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1wb3BvdmVyIHAtM1wiPlxyXG4gICAgPG9sIGNsYXNzPVwicHgtMyBtLTBcIj5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMScpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMicpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfMycpIH19PC9saT5cclxuICAgICAgPGxpPnt7IGkxOG4udHJhbnNsYXRlKCdzZWFyY2hFbXBsb3llZVRvb2x0aXBfNCcpIH19PC9saT5cclxuICAgIDwvb2w+XHJcbiAgPC9kaXY+XHJcbjwvc2F0LXBvcG92ZXI+XHJcbiJdfQ==
@@ -1,5 +1,3 @@
1
- export * from './confirmation-popup/confirmation-popup.component';
2
- export * from './delete-popup/delete-popup.component';
3
1
  export * from './dialogs/delete-dialog/delete-dialog.component';
4
2
  export * from './dialogs/submit-dialog/submit-dialog.component';
5
3
  export * from './dialogs/confirm-dialog/confirm-dialog.component';
@@ -7,4 +5,4 @@ export * from './form-field';
7
5
  export * from './action-buttons/action-buttons.component';
8
6
  export * from './terms-conditions/terms-conditions.component';
9
7
  export * from './title-section/title-section.component';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb25maXJtYXRpb24tcG9wdXAvY29uZmlybWF0aW9uLXBvcHVwLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVsZXRlLXBvcHVwL2RlbGV0ZS1wb3B1cC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9ncy9zdWJtaXQtZGlhbG9nL3N1Ym1pdC1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWJ1dHRvbnMvYWN0aW9uLWJ1dHRvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90aXRsZS1zZWN0aW9uL3RpdGxlLXNlY3Rpb24uY29tcG9uZW50JztcclxuIl19
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvc2hhcmVkLWNvbXBvbmVudHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsbURBQW1ELENBQUM7QUFDbEUsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLCtDQUErQyxDQUFDO0FBQzlELGNBQWMseUNBQXlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RpYWxvZ3MvZGVsZXRlLWRpYWxvZy9kZWxldGUtZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9ncy9zdWJtaXQtZGlhbG9nL3N1Ym1pdC1kaWFsb2cuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9kaWFsb2dzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZm9ybS1maWVsZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWJ1dHRvbnMvYWN0aW9uLWJ1dHRvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90ZXJtcy1jb25kaXRpb25zL3Rlcm1zLWNvbmRpdGlvbnMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90aXRsZS1zZWN0aW9uL3RpdGxlLXNlY3Rpb24uY29tcG9uZW50JztcclxuIl19