vcomply-workflow-engine 6.1.67 → 6.1.69
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.
- package/esm2022/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.mjs +34 -6
- package/esm2022/lib/constants/assets.constants.mjs +2 -1
- package/esm2022/lib/constants/policy.constant.mjs +6 -0
- package/esm2022/lib/constants/regix.constants.mjs +4 -0
- package/esm2022/lib/constants/responsibility.mjs +8 -0
- package/esm2022/lib/formgroup/select/cs-select/cs-select.component.mjs +2 -2
- package/esm2022/lib/interfaces/policy.interface.mjs +2 -0
- package/esm2022/lib/log-an-issue/log-an-issue.component.mjs +9 -1
- package/esm2022/lib/more-option/more-option.component.mjs +3 -13
- package/esm2022/lib/pipes/search.pipe.mjs +2 -1
- package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +29 -3
- package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +55 -29
- package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +32 -13
- package/esm2022/lib/report-a-case/constants/api.constants.mjs +3 -2
- package/esm2022/lib/report-a-case/constants/report-case.constants.mjs +3 -1
- package/esm2022/lib/report-a-case/report-case.module.mjs +5 -2
- package/esm2022/lib/report-a-case/services/date-utility.service.mjs +29 -0
- package/esm2022/lib/report-a-case/services/report-a-case.service.mjs +16 -4
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +54 -45
- package/esm2022/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.mjs +3 -1
- package/esm2022/lib/sharedComponents/document-section/document-section.component.mjs +39 -14
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +24 -10
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.module.mjs +19 -15
- package/esm2022/lib/sharedComponents/frequency/frequency.service.mjs +2 -2
- package/esm2022/lib/sharedComponents/group-users-list/group-users-list.component.mjs +20 -20
- package/esm2022/lib/sharedComponents/pipes/risk-class.pipe.mjs +19 -0
- package/esm2022/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.mjs +15 -5
- package/esm2022/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.mjs +3 -3
- package/esm2022/lib/ui-kit/banner/banner.component.mjs +44 -0
- package/esm2022/lib/ui-kit/multi-select/cs-multiselect/cs-multiselect.component.mjs +12 -5
- package/esm2022/lib/workflow-compliance/workflow-compliance.component.mjs +79 -19
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +2 -2
- package/esm2022/lib/workflow-engine.module.mjs +5 -2
- package/esm2022/lib/workflow-policy/ms-word.constants.mjs +2 -2
- package/esm2022/lib/workflow-policy/workflow-policy.component.mjs +70 -35
- package/esm2022/lib/workflow-program/constants.mjs +9 -1
- package/esm2022/lib/workflow-program/create-program-ui/define-framework-listing/pipes/tooltip-message.pipe.mjs +7 -1
- package/esm2022/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.mjs +13 -16
- package/esm2022/lib/workflow-program/workflow-program.component.mjs +5 -5
- package/esm2022/lib/workflow-services/policy.service.mjs +7 -1
- package/esm2022/lib/workflow-services/programs.service.mjs +1 -1
- package/fesm2022/vcomply-workflow-engine.mjs +1176 -793
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/add-multiple-responsibility-container/add-multiple-responsibility-container.component.d.ts +1 -0
- package/lib/add-multiple-responsibility-with-tab/add-multiple-responsibility-with-tab.component.d.ts +3 -0
- package/lib/add-multiple-risk/add-multiple-risk.component.d.ts +1 -0
- package/lib/constants/assets.constants.d.ts +1 -0
- package/lib/constants/policy.constant.d.ts +2 -0
- package/lib/constants/regix.constants.d.ts +3 -0
- package/lib/constants/responsibility.d.ts +7 -0
- package/lib/interfaces/policy.interface.d.ts +5 -0
- package/lib/log-an-issue/log-an-issue.component.d.ts +2 -0
- package/lib/more-option/more-option.component.d.ts +1 -0
- package/lib/report-a-case/components/assignee/assignee.component.d.ts +1 -0
- package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +1 -0
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +1 -0
- package/lib/report-a-case/components/case-details/case-details.component.d.ts +1 -0
- package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +1 -0
- package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +1 -0
- package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +9 -3
- package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +1 -0
- package/lib/report-a-case/components/due-date/due-date.component.d.ts +10 -2
- package/lib/report-a-case/components/field-holder/field-holder.component.d.ts +1 -0
- package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +1 -0
- package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +1 -0
- package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +1 -0
- package/lib/report-a-case/components/report-date/report-date.component.d.ts +9 -1
- package/lib/report-a-case/constants/api.constants.d.ts +1 -0
- package/lib/report-a-case/constants/report-case.constants.d.ts +2 -0
- package/lib/report-a-case/report-case.module.d.ts +23 -22
- package/lib/report-a-case/services/date-utility.service.d.ts +9 -0
- package/lib/report-a-case/services/report-a-case.service.d.ts +2 -1
- package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +5 -1
- package/lib/sharedComponents/approval-workflow/approval-create-form/approval-create-form.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/image-choice/image-choice.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/thank-you/thank-you.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/build/welcome/welcome.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/logic/logic.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/logic-questions/logic-image-choice/logic-image-choice.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/preview/thank-you/thank-you.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/preview/welcome/welcome.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-editor/components/welcome-thankyou/welcome-thankyou.component.d.ts +1 -0
- package/lib/sharedComponents/assessment-list/assessment-list.component.d.ts +1 -0
- package/lib/sharedComponents/audit-category-list/audit-category-list.component.d.ts +1 -0
- package/lib/sharedComponents/bulk-responsibility-view/bulk-responsibility-view.component.d.ts +6 -0
- package/lib/sharedComponents/category-list/category-list.component.d.ts +1 -0
- package/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.d.ts +1 -0
- package/lib/sharedComponents/category-multiselect/category-multi-select.component.d.ts +1 -0
- package/lib/sharedComponents/checkbox-list/checkbox-list.component.d.ts +1 -0
- package/lib/sharedComponents/document-section/document-section.component.d.ts +8 -5
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.component.d.ts +5 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.module.d.ts +8 -7
- package/lib/sharedComponents/framework-list/framework-list.component.d.ts +1 -0
- package/lib/sharedComponents/frequency/frequency-responsibility-list/frequency-responsibility-list.component.d.ts +1 -0
- package/lib/sharedComponents/group-users-list/group-users-list.component.d.ts +1 -0
- package/lib/sharedComponents/link-program/link-program/link-program.component.d.ts +1 -0
- package/lib/sharedComponents/owner-list/owner-list.component.d.ts +1 -0
- package/lib/sharedComponents/pipes/risk-class.pipe.d.ts +7 -0
- package/lib/sharedComponents/policy-access/policy-access.component.d.ts +1 -0
- package/lib/sharedComponents/policy-template/select-template-list/select-template-list.component.d.ts +1 -0
- package/lib/sharedComponents/program-listing/program-listing.component.d.ts +1 -0
- package/lib/sharedComponents/radio-list/radio-list.component.d.ts +1 -0
- package/lib/sharedComponents/radio-list-with-pagination/radio-list.component.d.ts +1 -0
- package/lib/sharedComponents/responsibility-centers-list/responsibility-centers-list.component.d.ts +1 -0
- package/lib/sharedComponents/responsibility-risk-selector/responsibility-risk-selector.component.d.ts +1 -0
- package/lib/sharedComponents/review-frequency/review-frequency.component.d.ts +1 -0
- package/lib/sharedComponents/roles-list/roles-list.component.d.ts +1 -0
- package/lib/sharedComponents/select-approvers/select-approvers.component.d.ts +1 -0
- package/lib/sharedComponents/users-radio-list/users-radio-list.component.d.ts +1 -0
- package/lib/ui-kit/banner/banner.component.d.ts +8 -0
- package/lib/ui-kit/multi-select/cs-multiselect/cs-multiselect.component.d.ts +3 -1
- package/lib/ui-kit/pagination/pagination/pagination.component.d.ts +1 -0
- package/lib/workflow/shared/components/attributes/attributes-checkbox/attributes-checkbox.component.d.ts +1 -0
- package/lib/workflow-assessment/import-an-assessment/import-an-assessment.component.d.ts +1 -0
- package/lib/workflow-assessment/workflow-assessment.component.d.ts +1 -0
- package/lib/workflow-compliance/workflow-compliance.component.d.ts +5 -0
- package/lib/workflow-engine.module.d.ts +44 -43
- package/lib/workflow-policy/workflow-policy.component.d.ts +3 -0
- package/lib/workflow-program/constants.d.ts +3 -0
- package/lib/workflow-program/create-program-ui/assessment-picker/assessment-picker.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/define-framework-listing/define-framework-listing.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/pagination/pagination/pagination.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/role-list/role-list.component.d.ts +1 -0
- package/lib/workflow-program/create-program-ui/user-group-list/user-group-list.component.d.ts +1 -0
- package/lib/workflow-program/workflow-program.component.d.ts +1 -0
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -0
- package/lib/workflow-services/policy.service.d.ts +2 -0
- package/lib/workflow-survey-form/workflow-survey-form.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -21,6 +21,7 @@ export class CsMultiselectComponent {
|
|
|
21
21
|
this.applyFilter = new EventEmitter();
|
|
22
22
|
this.searchText = new EventEmitter();
|
|
23
23
|
this.resetSelectedData = new EventEmitter();
|
|
24
|
+
this.restoreSelectedData = new EventEmitter();
|
|
24
25
|
this.previousItems = [];
|
|
25
26
|
this.itemsDisplayedList = [];
|
|
26
27
|
this.filterApplied = true;
|
|
@@ -139,21 +140,25 @@ export class CsMultiselectComponent {
|
|
|
139
140
|
this.multiSelectService.overflowHidden = false;
|
|
140
141
|
this.searchKey = '';
|
|
141
142
|
if (applyFilter) {
|
|
142
|
-
this.tempSelectedData = [...this.value];
|
|
143
|
+
this.tempSelectedData = [...new Set(this.value)];
|
|
143
144
|
this.previousItems = [...new Set(this.items)];
|
|
144
145
|
this.itemsDisplayedList = [...new Set(this.items)];
|
|
145
146
|
this.applyFilter.emit(applyFilter);
|
|
146
147
|
}
|
|
147
148
|
else {
|
|
148
149
|
this.filterApplied = true;
|
|
149
|
-
this.resetState();
|
|
150
150
|
this.tempSelectedData?.forEach((ele) => {
|
|
151
151
|
// this.addValue({key: ele?.rc_name ?? ele?.category_name, value: ele});
|
|
152
152
|
this.addValue({ key: ele?.item_short_name, value: ele });
|
|
153
153
|
});
|
|
154
|
-
this.
|
|
154
|
+
this.resetToLastState();
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
resetToLastState() {
|
|
158
|
+
this.value = [...new Set(this.tempSelectedData)];
|
|
159
|
+
this.items = [...new Set(this.previousItems)];
|
|
160
|
+
this.restoreSelectedData.emit([...new Set(this.tempSelectedData)]);
|
|
161
|
+
}
|
|
157
162
|
checkChanges() {
|
|
158
163
|
if (this.previousItems?.length === 0 && this.items?.length > 0) {
|
|
159
164
|
return false;
|
|
@@ -167,7 +172,7 @@ export class CsMultiselectComponent {
|
|
|
167
172
|
}
|
|
168
173
|
}
|
|
169
174
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CsMultiselectComponent, deps: [{ token: i1.MultiSelectService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
170
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CsMultiselectComponent, selector: "cs-multi-select", inputs: { isRequired: "isRequired", dropdownLabel: "dropdownLabel", dropdownSubLabel: "dropdownSubLabel", disabled: "disabled", placeholder: "placeholder", searchPlaceholder: "searchPlaceholder", value: "value", selectedItem: "selectedItem" }, outputs: { valueChange: "valueChange", applyFilter: "applyFilter", searchText: "searchText", resetSelectedData: "resetSelectedData" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["optionList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"multi-select-input-group\" (clickOutside)=\"dropdownOption = false\">\n <label *ngIf=\"dropdownLabel\">\n {{ dropdownLabel }}\n <span class=\"sub-label\" *ngIf=\"dropdownSubLabel\">{{\n dropdownSubLabel\n }}</span>\n <span class=\"required\" *ngIf=\"isRequired\">*</span></label\n >\n <div class=\"custom-select-box\" [class.disabled]=\"disabled\">\n <div class=\"multiple-value vx-d-flex vx-align-center vx-justify-between\">\n <div\n class=\"multiple-value-inner vx-d-flex vx-align-center vx-justify-end vx-pr-2\"\n (click)=\"openDropdown($event)\"\n ></div>\n <span class=\"placeholder\" *ngIf=\"!value || value?.length === 0\">{{\n placeholder\n }}</span>\n <!-- <i class=\"icons arrow-down vx-fs-9\"></i> -->\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"value && value?.length > 0\">\n <div\n class=\"chip\"\n *ngFor=\"let data of items | slice : 0 : 1; let i = index\"\n >\n <span class=\"close\" (click)=\"removeValue(i)\">×</span\n ><span class=\"value\">{{ data }}</span>\n </div>\n <span\n class=\"counter\"\n *ngIf=\"items.length > 1\"\n appPopover\n (click)=\"actionButton.popover()\"\n placement=\"right\"\n >+{{ items.length - 1 }}</span\n >\n <app-popover #actionButton>\n <div class=\"template-filter-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of items.slice(1); let j = index\">\n <div class=\"chip-item\">\n <i class=\"icons\" (click)=\"removeValue(j + 1)\"></i>\n <span>{{ data }}</span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"overlay active\"\n *ngIf=\"dropdownOption === true\"\n (click)=\"closeDropdown(false)\"\n ></div>\n <ul\n class=\"list-of-option\"\n *ngIf=\"dropdownOption === true\"\n #optionList\n (keyup.Escape)=\"closeDropdown(false)\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDropdown\"\n >\n <div class=\"input-group\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchKey\"\n (ngModelChange)=\"search($event)\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"button-block\">\n <button\n type=\"button\"\n [class.disabled]=\"checkChanges()\"\n (click)=\"closeDropdown(true)\"\n >\n Apply\n </button>\n </div>\n </ul>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .multi-select-input-group{position:relative;margin-bottom:0}::ng-deep .multi-select-input-group label{font-size:11px;color:#161b2f;font-weight:500;line-height:16px;margin-bottom:5px;text-transform:uppercase;display:block}::ng-deep .multi-select-input-group label span.required{color:#eb2424;font-size:14px}::ng-deep .multi-select-input-group label span.sub-label{color:#747576;font-size:11px;font-weight:400;margin-left:4px}::ng-deep .multi-select-input-group .multiple-value{height:36px;line-height:16px;font-size:13px;color:#747576;font-weight:400;background:#fff;border:1px solid #cdced6;border-radius:4px;width:100%;display:flex;padding:6px 25px 6px 6px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;position:relative}::ng-deep .multi-select-input-group .multiple-value-inner{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}::ng-deep .multi-select-input-group .multiple-value-inner:after{border-left-color:#707070;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top-color:#707070;content:\"\";display:inline-block;right:8px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .multi-select-input-group .multiple-value .placeholder{color:#565a6f;font-size:11px;line-height:16px;pointer-events:none}::ng-deep .multi-select-input-group .multiple-value .arrow-down{position:relative;right:-16px;z-index:1}::ng-deep .multi-select-input-group .multiple-value.line{border:none;border-bottom:1px solid #dbdbdb;border-radius:0;padding-left:0}::ng-deep .multi-select-input-group .multiple-value .chip{display:inline-flex;border-radius:2px;background:#f8f8f8;border:1px solid #f8f8f8;height:22px;padding:0 5px;pointer-events:none;max-width:100%;position:relative;z-index:1;box-shadow:0 1px 4px #1e5dd340;max-width:150px}::ng-deep .multi-select-input-group .multiple-value .chip span{display:inline-block}::ng-deep .multi-select-input-group .multiple-value .chip span.close{cursor:pointer;color:#1e5dd3;font-size:16px;line-height:20px;pointer-events:auto}::ng-deep .multi-select-input-group .multiple-value .chip span.value{color:#747576;margin-left:5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .multi-select-input-group .multiple-value .chip+.chip{margin-left:4px}::ng-deep .multi-select-input-group .multiple-value .counter{display:inline-flex;border-radius:2px;background:#34aa44;border:1px solid #34aa44;height:22px;padding:0 5px;color:#fff;margin-left:5px;cursor:pointer;position:relative;z-index:1}::ng-deep .multi-select-input-group .multiple-value app-popover .action-list ul.action-item li .chip-item span{color:#747576}::ng-deep .multi-select-input-group .custom-select-box{position:relative}::ng-deep .multi-select-input-group .custom-select-box input[type=text],::ng-deep .multi-select-input-group .custom-select-box .input{cursor:pointer;padding-right:30px}::ng-deep .multi-select-input-group .custom-select-box input[type=text].line,::ng-deep .multi-select-input-group .custom-select-box .input.line{padding-right:20px}::ng-deep .multi-select-input-group .custom-select-box.disabled{filter:grayscale(1);pointer-events:none}ul.list-of-option{position:fixed;overflow:hidden;overflow-y:auto;max-height:260px;padding:0;margin:0;display:block;border:1px solid #dbdbdb;box-shadow:0 3px 6px #1e5dd333;z-index:9;background:#fff;border-radius:2px;opacity:0;width:230px;max-width:230px!important}ul.list-of-option.reset{top:inherit;bottom:100%;box-shadow:0 -3px 6px #1e5dd333}ul.list-of-option.active{opacity:1}ul.list-of-option app-cs-multi-select-option{display:block;width:100%}ul.list-of-option .input-group{padding:4px 10px;position:sticky;top:0;background:#fff;box-shadow:0 0 3px #1e5dd240;z-index:1;margin-bottom:4px}ul.list-of-option .input-group input{border:1px solid transparent;border-bottom-color:transparent;color:#747576;outline:none;width:100%;padding:0}ul.list-of-option li{width:100%;display:block;margin-bottom:0;padding:0;height:auto}ul.list-of-option li label{line-height:23px;font-size:13px;font-weight:400;border-radius:4px;display:flex;position:relative;margin:0;align-items:center}ul.list-of-option li label input[type=radio]{position:absolute;margin:0;height:100%;width:100%;opacity:0;cursor:pointer}ul.list-of-option li label input[type=radio]:checked+span,ul.list-of-option li label input[type=radio]:hover+span{background:#dcdcdc}ul.list-of-option li label span.value{color:#747576;font-size:14px;line-height:21px;font-weight:400;max-width:100%;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;padding:5px 15px;width:100%;text-transform:none;cursor:pointer;text-align:left}ul.list-of-option li label.multi-select{padding:0 15px}ul.list-of-option li label.multi-select span.checkbox{display:inline-block;border:1px solid #dbdbdb;border-radius:2px;height:16px;width:16px;position:relative;padding:2px}ul.list-of-option li label input[type=checkbox]{position:absolute;margin:0;height:100%;width:100%;opacity:0;cursor:pointer}ul.list-of-option li label input[type=checkbox]:checked+span{background:#dcdcdc}ul.list-of-option li label input[type=checkbox]:checked+span.checkbox{border-color:#34aa44;background:#34aa44}ul.list-of-option li label input[type=checkbox]:checked+span.checkbox:after{width:8px;height:3px;border-bottom:2px solid #ffffff;border-left:2px solid #ffffff;transform:rotate(-45deg);content:\"\";position:absolute;top:3px;left:2px}ul.list-of-option .button-block{width:100%;display:flex;justify-content:flex-end;position:sticky;bottom:0;padding:4px 8px;background:#fff;box-shadow:0 0 3px #1e5dd240;z-index:1}ul.list-of-option .button-block button{display:flex;padding:0 12px;font-size:11px;text-transform:uppercase;font-weight:500;cursor:pointer;background:#1e5dd3;color:#fff;border:none;outline:none;border-radius:2px}.overlay{position:fixed;inset:0;z-index:2}.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}.template-filter-list{width:220px}.template-filter-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.template-filter-list ul.action-item{display:block}.template-filter-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.template-filter-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.template-filter-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.template-filter-list ul.action-item li button:hover{background:#f3f3f3}.template-filter-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.template-filter-list ul.action-item li .avatar-card.within-con{display:block}.template-filter-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.template-filter-list ul.action-item li .avatar-card .avatar img{background:#fff;width:100%}.template-filter-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.template-filter-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.template-filter-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.template-filter-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.template-filter-list ul.action-item li .avatar-card.no-image{display:block}.template-filter-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.template-filter-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.template-filter-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.template-filter-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-filter-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.template-filter-list ul.action-item li .chip-item span.id{font-size:9px}.template-filter-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.template-filter-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.template-filter-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.template-filter-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }] }); }
|
|
175
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CsMultiselectComponent, selector: "cs-multi-select", inputs: { isRequired: "isRequired", dropdownLabel: "dropdownLabel", dropdownSubLabel: "dropdownSubLabel", disabled: "disabled", placeholder: "placeholder", searchPlaceholder: "searchPlaceholder", value: "value", selectedItem: "selectedItem" }, outputs: { valueChange: "valueChange", applyFilter: "applyFilter", searchText: "searchText", resetSelectedData: "resetSelectedData", restoreSelectedData: "restoreSelectedData" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["optionList"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"multi-select-input-group\" (clickOutside)=\"dropdownOption = false\">\n <label *ngIf=\"dropdownLabel\">\n {{ dropdownLabel }}\n <span class=\"sub-label\" *ngIf=\"dropdownSubLabel\">{{\n dropdownSubLabel\n }}</span>\n <span class=\"required\" *ngIf=\"isRequired\">*</span></label\n >\n <div class=\"custom-select-box\" [class.disabled]=\"disabled\">\n <div class=\"multiple-value vx-d-flex vx-align-center vx-justify-between\">\n <div\n class=\"multiple-value-inner vx-d-flex vx-align-center vx-justify-end vx-pr-2\"\n (click)=\"openDropdown($event)\"\n ></div>\n <span class=\"placeholder\" *ngIf=\"!value || value?.length === 0\">{{\n placeholder\n }}</span>\n <!-- <i class=\"icons arrow-down vx-fs-9\"></i> -->\n <div class=\"vx-d-flex vx-align-center\" *ngIf=\"value && value?.length > 0\">\n <div\n class=\"chip\"\n *ngFor=\"let data of items | slice : 0 : 1; let i = index\"\n >\n <span class=\"close\" (click)=\"removeValue(i)\">×</span\n ><span class=\"value\">{{ data }}</span>\n </div>\n <span\n class=\"counter\"\n *ngIf=\"items.length > 1\"\n appPopover\n (click)=\"actionButton.popover()\"\n placement=\"right\"\n >+{{ items.length - 1 }}</span\n >\n <app-popover #actionButton>\n <div class=\"template-filter-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let data of items.slice(1); let j = index\">\n <div class=\"chip-item\">\n <i class=\"icons\" (click)=\"removeValue(j + 1)\"></i>\n <span>{{ data }}</span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"overlay active\"\n *ngIf=\"dropdownOption === true\"\n (click)=\"closeDropdown(false)\"\n ></div>\n <ul\n class=\"list-of-option\"\n *ngIf=\"dropdownOption === true\"\n #optionList\n (keyup.Escape)=\"closeDropdown(false)\"\n [style.top.px]=\"getTop\"\n [style.left.px]=\"getLeft\"\n [style.min-width.px]=\"getWidth\"\n [style.max-width.px]=\"maxWidth\"\n [class.active]=\"activeDropdown\"\n >\n <div class=\"input-group\">\n <input\n type=\"text\"\n [placeholder]=\"searchPlaceholder\"\n [ngModel]=\"searchKey\"\n (ngModelChange)=\"search($event)\"\n />\n </div>\n <ng-content></ng-content>\n <div class=\"button-block\">\n <button\n type=\"button\"\n [class.disabled]=\"checkChanges()\"\n (click)=\"closeDropdown(true)\"\n >\n Apply\n </button>\n </div>\n </ul>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";::ng-deep .multi-select-input-group{position:relative;margin-bottom:0}::ng-deep .multi-select-input-group label{font-size:11px;color:#161b2f;font-weight:500;line-height:16px;margin-bottom:5px;text-transform:uppercase;display:block}::ng-deep .multi-select-input-group label span.required{color:#eb2424;font-size:14px}::ng-deep .multi-select-input-group label span.sub-label{color:#747576;font-size:11px;font-weight:400;margin-left:4px}::ng-deep .multi-select-input-group .multiple-value{height:36px;line-height:16px;font-size:13px;color:#747576;font-weight:400;background:#fff;border:1px solid #cdced6;border-radius:4px;width:100%;display:flex;padding:6px 25px 6px 6px;cursor:pointer;outline:none;overflow:hidden;text-overflow:ellipsis;position:relative}::ng-deep .multi-select-input-group .multiple-value-inner{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}::ng-deep .multi-select-input-group .multiple-value-inner:after{border-left-color:#707070;border-bottom:1px solid #707070;border-right:1px solid #707070;border-top-color:#707070;content:\"\";display:inline-block;right:8px;position:absolute;top:calc(50% - 4px);width:5px;height:5px;transform:rotate(45deg)}::ng-deep .multi-select-input-group .multiple-value .placeholder{color:#565a6f;font-size:11px;line-height:16px;pointer-events:none}::ng-deep .multi-select-input-group .multiple-value .arrow-down{position:relative;right:-16px;z-index:1}::ng-deep .multi-select-input-group .multiple-value.line{border:none;border-bottom:1px solid #dbdbdb;border-radius:0;padding-left:0}::ng-deep .multi-select-input-group .multiple-value .chip{display:inline-flex;border-radius:2px;background:#f8f8f8;border:1px solid #f8f8f8;height:22px;padding:0 5px;pointer-events:none;max-width:100%;position:relative;z-index:1;box-shadow:0 1px 4px #1e5dd340;max-width:150px}::ng-deep .multi-select-input-group .multiple-value .chip span{display:inline-block}::ng-deep .multi-select-input-group .multiple-value .chip span.close{cursor:pointer;color:#1e5dd3;font-size:16px;line-height:20px;pointer-events:auto}::ng-deep .multi-select-input-group .multiple-value .chip span.value{color:#747576;margin-left:5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}::ng-deep .multi-select-input-group .multiple-value .chip+.chip{margin-left:4px}::ng-deep .multi-select-input-group .multiple-value .counter{display:inline-flex;border-radius:2px;background:#34aa44;border:1px solid #34aa44;height:22px;padding:0 5px;color:#fff;margin-left:5px;cursor:pointer;position:relative;z-index:1}::ng-deep .multi-select-input-group .multiple-value app-popover .action-list ul.action-item li .chip-item span{color:#747576}::ng-deep .multi-select-input-group .custom-select-box{position:relative}::ng-deep .multi-select-input-group .custom-select-box input[type=text],::ng-deep .multi-select-input-group .custom-select-box .input{cursor:pointer;padding-right:30px}::ng-deep .multi-select-input-group .custom-select-box input[type=text].line,::ng-deep .multi-select-input-group .custom-select-box .input.line{padding-right:20px}::ng-deep .multi-select-input-group .custom-select-box.disabled{filter:grayscale(1);pointer-events:none}ul.list-of-option{position:fixed;overflow:hidden;overflow-y:auto;max-height:260px;padding:0;margin:0;display:block;border:1px solid #dbdbdb;box-shadow:0 3px 6px #1e5dd333;z-index:9;background:#fff;border-radius:2px;opacity:0;width:230px;max-width:230px!important}ul.list-of-option.reset{top:inherit;bottom:100%;box-shadow:0 -3px 6px #1e5dd333}ul.list-of-option.active{opacity:1}ul.list-of-option app-cs-multi-select-option{display:block;width:100%}ul.list-of-option .input-group{padding:4px 10px;position:sticky;top:0;background:#fff;box-shadow:0 0 3px #1e5dd240;z-index:1;margin-bottom:4px}ul.list-of-option .input-group input{border:1px solid transparent;border-bottom-color:transparent;color:#747576;outline:none;width:100%;padding:0}ul.list-of-option li{width:100%;display:block;margin-bottom:0;padding:0;height:auto}ul.list-of-option li label{line-height:23px;font-size:13px;font-weight:400;border-radius:4px;display:flex;position:relative;margin:0;align-items:center}ul.list-of-option li label input[type=radio]{position:absolute;margin:0;height:100%;width:100%;opacity:0;cursor:pointer}ul.list-of-option li label input[type=radio]:checked+span,ul.list-of-option li label input[type=radio]:hover+span{background:#dcdcdc}ul.list-of-option li label span.value{color:#747576;font-size:14px;line-height:21px;font-weight:400;max-width:100%;white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;padding:5px 15px;width:100%;text-transform:none;cursor:pointer;text-align:left}ul.list-of-option li label.multi-select{padding:0 15px}ul.list-of-option li label.multi-select span.checkbox{display:inline-block;border:1px solid #dbdbdb;border-radius:2px;height:16px;width:16px;position:relative;padding:2px}ul.list-of-option li label input[type=checkbox]{position:absolute;margin:0;height:100%;width:100%;opacity:0;cursor:pointer}ul.list-of-option li label input[type=checkbox]:checked+span{background:#dcdcdc}ul.list-of-option li label input[type=checkbox]:checked+span.checkbox{border-color:#34aa44;background:#34aa44}ul.list-of-option li label input[type=checkbox]:checked+span.checkbox:after{width:8px;height:3px;border-bottom:2px solid #ffffff;border-left:2px solid #ffffff;transform:rotate(-45deg);content:\"\";position:absolute;top:3px;left:2px}ul.list-of-option .button-block{width:100%;display:flex;justify-content:flex-end;position:sticky;bottom:0;padding:4px 8px;background:#fff;box-shadow:0 0 3px #1e5dd240;z-index:1}ul.list-of-option .button-block button{display:flex;padding:0 12px;font-size:11px;text-transform:uppercase;font-weight:500;cursor:pointer;background:#1e5dd3;color:#fff;border:none;outline:none;border-radius:2px}.overlay{position:fixed;inset:0;z-index:2}.disabled{pointer-events:none;filter:grayscale(1);opacity:.3}.template-filter-list{width:220px}.template-filter-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.template-filter-list ul.action-item{display:block}.template-filter-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.template-filter-list ul.action-item li button{color:#6e717e;text-align:left;text-decoration:none;cursor:pointer;background:transparent;font-size:12px;text-transform:capitalize;display:flex;width:100%;padding:7.5px 11px;border:none}.template-filter-list ul.action-item li button i{font-size:17px;margin-right:10px;color:#1c5bd1}.template-filter-list ul.action-item li button:hover{background:#f3f3f3}.template-filter-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.template-filter-list ul.action-item li .avatar-card.within-con{display:block}.template-filter-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.template-filter-list ul.action-item li .avatar-card .avatar img{background:#fff;width:100%}.template-filter-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.template-filter-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.template-filter-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#1c5bd1;cursor:pointer;margin-right:4px}.template-filter-list ul.action-item li .avatar-card span.value i.cross-icon{color:#747576}.template-filter-list ul.action-item li .avatar-card.no-image{display:block}.template-filter-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.template-filter-list ul.action-item li .chip-item{color:#1e5dd3;padding:10px;display:flex;align-items:center}.template-filter-list ul.action-item li .chip-item i{margin-right:7px;font-size:10px;cursor:pointer;display:inline-flex}.template-filter-list ul.action-item li .chip-item span{display:block;width:auto;max-width:calc(100% - 17px);font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.template-filter-list ul.action-item li .chip-item span.chip-block{display:block;width:100%}.template-filter-list ul.action-item li .chip-item span.id{font-size:9px}.template-filter-list ul.action-item li .within{display:flex;align-items:center;justify-content:flex-start}.template-filter-list ul.action-item li .within .block{background:#f1f1f1;border-radius:2px;padding:0 2px;line-height:14px;font-size:9px;font-weight:500;color:#042e7d;margin-right:6px;display:block;text-transform:uppercase}.template-filter-list ul.action-item li .within .data{width:100%;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#747576;font-size:11px;font-weight:400;line-height:17px}.template-filter-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.template-filter-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i5.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }] }); }
|
|
171
176
|
}
|
|
172
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CsMultiselectComponent, decorators: [{
|
|
173
178
|
type: Component,
|
|
@@ -196,8 +201,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
196
201
|
type: Output
|
|
197
202
|
}], resetSelectedData: [{
|
|
198
203
|
type: Output
|
|
204
|
+
}], restoreSelectedData: [{
|
|
205
|
+
type: Output
|
|
199
206
|
}], content: [{
|
|
200
207
|
type: ViewChild,
|
|
201
208
|
args: ['optionList']
|
|
202
209
|
}] } });
|
|
203
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3MtbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvdWkta2l0L211bHRpLXNlbGVjdC9jcy1tdWx0aXNlbGVjdC9jcy1tdWx0aXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi91aS1raXQvbXVsdGktc2VsZWN0L2NzLW11bHRpc2VsZWN0L2NzLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7O0FBUWhDLE1BQU0sT0FBTyxzQkFBc0I7SUErQmpDLElBQTZCLE9BQU8sQ0FBQyxPQUFtQjtRQUN0RCxJQUFJLE9BQU8sRUFBRTtZQUNYLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxZQUFtQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWpDaEQsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHekIsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdEIsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQTtRQVNuRSxrQkFBYSxHQUFRLEVBQUUsQ0FBQztRQUV4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QU0sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZFLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTTtZQUNMLE9BQU8sQ0FDTCxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUNsRCxDQUFDO1NBQ0g7SUFFSCxDQUFDOytHQWpNVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4aUJDVG5DLHd3RkFxRkE7OzRGRDVFYSxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UsaUJBQWlCO3lHQUtsQixVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQW1Cc0IsT0FBTztzQkFBbkMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcy1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3MtbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcy1tdWx0aXNlbGVjdC5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDc011bHRpc2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgaXNSZXF1aXJlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duU3ViTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZSE6IGFueTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtOiBhbnkgPSBbXTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYXBwbHlGaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGV4dDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZXNldFNlbGVjdGVkRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgZHJvcGRvd25PcHRpb24hOiBib29sZWFuO1xuICBwb3NpdGlvblJlc2V0ITogYm9vbGVhbjtcbiAgZ2V0TGVmdCE6IG51bWJlcjtcbiAgZ2V0VG9wITogbnVtYmVyO1xuICBnZXRXaWR0aCE6IG51bWJlcjtcbiAgbWF4V2lkdGghOiBudW1iZXI7XG4gIGFjdGl2ZURyb3Bkb3duITogYm9vbGVhbjtcbiAgaXRlbXMhOiBhbnlbXTtcbiAgcHJldmlvdXNJdGVtczogYW55W109W107XG5cbiAgaXRlbXNEaXNwbGF5ZWRMaXN0OiBhbnlbXT1bXTtcbiAgbmFtZTogc3RyaW5nO1xuICBmaWx0ZXJBcHBsaWVkOiBib29sZWFuID0gdHJ1ZTtcbiAgc2VhcmNoS2V5ITogYW55O1xuICB0aW1lcjogYW55O1xuICB0ZW1wU2VsZWN0ZWREYXRhOiBhbnkgPSBbXTtcblxuICBwcml2YXRlIG9wdGlvbkxpc3QhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdvcHRpb25MaXN0Jykgc2V0IGNvbnRlbnQoY29udGVudDogRWxlbWVudFJlZikge1xuICAgIGlmIChjb250ZW50KSB7XG4gICAgICAvLyBpbml0aWFsbHkgc2V0dGVyIGdldHMgY2FsbGVkIHdpdGggdW5kZWZpbmVkXG4gICAgICB0aGlzLm9wdGlvbkxpc3QgPSBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtdWx0aVNlbGVjdFNlcnZpY2U6IE11bHRpU2VsZWN0U2VydmljZSkge1xuICAgIHRoaXMudmFsdWUgPSBbXTtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gICAgdGhpcy5uYW1lID0gbmFub2lkKCk7XG4gICAgdGhpcy5zZWFyY2hQbGFjZWhvbGRlciA9ICdTZWFyY2guLi4nO1xuICAgIC8vIGFsZXJ0KHRoaXMudGVtcFNlbGVjdGVkRGF0YS5sZW5ndGgpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmRleCAtIFJlcHJlc2VudHMgdGhlIGluZGV4IG9mIHRoZSB2YWx1ZSB0byBiZSByZW1vdmVkXG4gICAqL1xuICByZW1vdmVWYWx1ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5pdGVtc0Rpc3BsYXllZExpc3QgPSBbLi4ubmV3IFNldCh0aGlzLml0ZW1zKV1cbiAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQodGhpcy5maWx0ZXJBcHBsaWVkKTtcbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGEgPSBbLi4uIHRoaXMudmFsdWVdO1xuICAgIHRoaXMucHJldmlvdXNJdGVtcyA9ICBbLi4ubmV3IFNldCh0aGlzLml0ZW1zKV1cbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5vdmVyZmxvd0hpZGRlbiA9IGZhbHNlO1xuICB9XG5cblxuXG4gIHJlc2V0U3RhdGUodHlwZT86IGFueSl7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICBpZih0eXBlID09PSAnYWxsUmVzZXQnKXtcbiAgICAgIHRoaXMucHJldmlvdXNJdGVtcyA9IFtdXG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGEgPSBbXVxuICAgIH1cbiAgICBpZih0aGlzLnByZXZpb3VzSXRlbXM/Lmxlbmd0aCA9PT0gMCl7XG4gICAgICB0aGlzLnJlc2V0U2VsZWN0ZWREYXRhLmVtaXQodHJ1ZSk7XG4gICAgfVxuICB9XG5cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuc2VhcmNoUGxhY2Vob2xkZXIpIHtcbiAgICAgIHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgPSB0aGlzLnNlYXJjaFBsYWNlaG9sZGVyIHx8ICdTZWFyY2guLi4nO1xuICAgIH1cbiAgfVxuICBuZ0FmdGVyVmlld0luaXQoKVx0e1xuICAgIGlmKHRoaXMuc2VsZWN0ZWRJdGVtICYmIHRoaXMuc2VsZWN0ZWRJdGVtPy5sZW5ndGggKXtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmZvckVhY2goIChlbGU6IGFueSkgPT4ge1xuICAgICAgICAvLyB0aGlzLmFkZFZhbHVlKHtrZXk6IGVsZT8ucmNfbmFtZSA/PyBlbGU/LmNhdGVnb3J5X25hbWUgLCB2YWx1ZTogZWxlfSk7XG4gICAgICAgIHRoaXMuYWRkVmFsdWUoe2tleTogZWxlPy5pdGVtX3Nob3J0X25hbWUgLCB2YWx1ZTogZWxlfSk7XG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGEgPSB0aGlzLnNlbGVjdGVkSXRlbSA/IFsuLi50aGlzLnNlbGVjdGVkSXRlbV0gOiBbXTtcbiAgICB0aGlzLnByZXZpb3VzSXRlbXMgPSAgWy4uLm5ldyBTZXQodGhpcy5pdGVtcyldO1xuXG4gIH1cblxuICBzZXQgQ2hlY2tCb3hWYWwodmFsOiBhbnlbXSkge1xuICAgIGlmICh2YWwgIT09IHVuZGVmaW5lZCAmJiB2YWwgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWw7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgc2VhcmNoKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLnNlYXJjaFRleHQuZW1pdChldmVudCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO1xuICAgIHRoaXMudGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2VhcmNoS2V5ID0gZXZlbnQ7XG4gICAgfSwgNDAwKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgaWYodmFsdWU/Lmxlbmd0aCl7XG4gICAgdGhpcy5DaGVja0JveFZhbCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gb2JqIC0gUmVwcmVzZW50cyB0aGUgb2JqZWN0IHdoaWNoIGlzIGFkZGVkIHRvIHRoZSB2YWx1ZSBsaXN0XG4gICAqL1xuICBhZGRWYWx1ZShvYmo6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBhbnkgfSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXMucHVzaChvYmoua2V5KTtcbiAgICB0aGlzLnZhbHVlLnB1c2gob2JqLnZhbHVlKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHZhbHVlIC0gUmVwcmVzZW50cyB0aGUgdmFsdWUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSB2YWx1ZSBsaXN0XG4gICAqL1xuICByZW1vdmVWYWx1ZUZyb21DaGVja2JveCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgbGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnZhbHVlLmluZGV4T2YodmFsdWUpO1xuICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy53cml0ZVZhbHVlKHRoaXMudmFsdWUpO1xuICB9XG5cbiAgb3BlbkRyb3Bkb3duKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duT3B0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5vdmVyZmxvd0hpZGRlbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBkcm9wZG93biA9IGV2ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHNlbGVjdE9wdGlvbiA9IHRoaXMub3B0aW9uTGlzdC5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgIGlmIChkcm9wZG93bi50b3AgKyBzZWxlY3RPcHRpb24gKyA1MCA+IHdpbmRvdy5pbm5lckhlaWdodCkge1xuICAgICAgICB0aGlzLmdldFRvcCA9IGRyb3Bkb3duLnRvcCAtIHNlbGVjdE9wdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZ2V0VG9wID0gZHJvcGRvd24udG9wICsgZHJvcGRvd24uaGVpZ2h0O1xuICAgICAgfVxuICAgICAgdGhpcy5nZXRMZWZ0ID0gZHJvcGRvd24ubGVmdDtcbiAgICAgIHRoaXMuZ2V0V2lkdGggPSBkcm9wZG93bi53aWR0aDtcbiAgICAgIHRoaXMubWF4V2lkdGggPSBkcm9wZG93bi53aWR0aCAqIDEuMjU7XG4gICAgfSwgMTApO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVEcm9wZG93biA9IHRydWU7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gYXBwbHlGaWx0ZXIgLSBEZXRlcm1pbmVzIHdoZXRoZXIgZmlsdGVyIGlzIGFwcGxpZWQgb3Igbm90XG4gICAqL1xuICBjbG9zZURyb3Bkb3duKGFwcGx5RmlsdGVyOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kcm9wZG93bk9wdGlvbiA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoKCcnKTtcbiAgICB0aGlzLmZpbHRlckFwcGxpZWQgPSBhcHBseUZpbHRlcjtcbiAgICB0aGlzLm11bHRpU2VsZWN0U2VydmljZS5vdmVyZmxvd0hpZGRlbiA9IGZhbHNlO1xuICAgIHRoaXMuc2VhcmNoS2V5ID0gJyc7XG4gICAgaWYgKGFwcGx5RmlsdGVyKSB7XG4gICAgICB0aGlzLnRlbXBTZWxlY3RlZERhdGEgPSAgWy4uLiB0aGlzLnZhbHVlXTtcbiAgICAgIHRoaXMucHJldmlvdXNJdGVtcyA9ICBbLi4ubmV3IFNldCh0aGlzLml0ZW1zKV07XG4gICAgICB0aGlzLml0ZW1zRGlzcGxheWVkTGlzdCA9IFsuLi5uZXcgU2V0KHRoaXMuaXRlbXMpXVxuICAgICAgdGhpcy5hcHBseUZpbHRlci5lbWl0KGFwcGx5RmlsdGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maWx0ZXJBcHBsaWVkID0gdHJ1ZTtcbiAgICAgIHRoaXMucmVzZXRTdGF0ZSgpO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRhPy5mb3JFYWNoKCAoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gdGhpcy5hZGRWYWx1ZSh7a2V5OiBlbGU/LnJjX25hbWUgPz8gZWxlPy5jYXRlZ29yeV9uYW1lLCB2YWx1ZTogZWxlfSk7XG4gICAgICAgIHRoaXMuYWRkVmFsdWUoe2tleTogZWxlPy5pdGVtX3Nob3J0X25hbWUgLCB2YWx1ZTogZWxlfSk7XG4gICAgICB9KVxuICAgICAgdGhpcy5wcmV2aW91c0l0ZW1zID0gIFsuLi5uZXcgU2V0KHRoaXMuaXRlbXMpXTtcbiAgICB9XG4gIH1cblxuICBjaGVja0NoYW5nZXMoKXtcbiAgICBpZiAodGhpcy5wcmV2aW91c0l0ZW1zPy5sZW5ndGggPT09IDAgJiYgdGhpcy5pdGVtcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2aW91c0l0ZW1zPy5sZW5ndGggPT09IDAgJiYgdGhpcy5pdGVtcz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy5wcmV2aW91c0l0ZW1zPy5ldmVyeSgoZWxlbWVudCkgPT4gdGhpcy5pdGVtcz8uaW5jbHVkZXMoZWxlbWVudCkpICYmXG4gICAgICAgIHRoaXMucHJldmlvdXNJdGVtcz8ubGVuZ3RoID09PSB0aGlzLml0ZW1zPy5sZW5ndGhcbiAgICAgICk7XG4gICAgfVxuXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtdWx0aS1zZWxlY3QtaW5wdXQtZ3JvdXBcIiAoY2xpY2tPdXRzaWRlKT1cImRyb3Bkb3duT3B0aW9uID0gZmFsc2VcIj5cbiAgPGxhYmVsICpuZ0lmPVwiZHJvcGRvd25MYWJlbFwiPlxuICAgIHt7IGRyb3Bkb3duTGFiZWwgfX1cbiAgICA8c3BhbiBjbGFzcz1cInN1Yi1sYWJlbFwiICpuZ0lmPVwiZHJvcGRvd25TdWJMYWJlbFwiPnt7XG4gICAgICBkcm9wZG93blN1YkxhYmVsXG4gICAgfX08L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZFwiICpuZ0lmPVwiaXNSZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbFxuICA+XG4gIDxkaXYgY2xhc3M9XCJjdXN0b20tc2VsZWN0LWJveFwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtdWx0aXBsZS12YWx1ZSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIm11bHRpcGxlLXZhbHVlLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1lbmQgdngtcHItMlwiXG4gICAgICAgIChjbGljayk9XCJvcGVuRHJvcGRvd24oJGV2ZW50KVwiXG4gICAgICA+PC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInBsYWNlaG9sZGVyXCIgKm5nSWY9XCIhdmFsdWUgfHwgdmFsdWU/Lmxlbmd0aCA9PT0gMFwiPnt7XG4gICAgICAgIHBsYWNlaG9sZGVyXG4gICAgICB9fTwvc3Bhbj5cbiAgICAgIDwhLS0gPGkgY2xhc3M9XCJpY29ucyBhcnJvdy1kb3duIHZ4LWZzLTlcIj4mI3hlOWU4OzwvaT4gLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiICpuZ0lmPVwidmFsdWUgJiYgdmFsdWU/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2hpcFwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgaXRlbXMgfCBzbGljZSA6IDAgOiAxOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwicmVtb3ZlVmFsdWUoaSlcIj4mdGltZXM7PC9zcGFuXG4gICAgICAgICAgPjxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBkYXRhIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cImNvdW50ZXJcIlxuICAgICAgICAgICpuZ0lmPVwiaXRlbXMubGVuZ3RoID4gMVwiXG4gICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgIChjbGljayk9XCJhY3Rpb25CdXR0b24ucG9wb3ZlcigpXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPit7eyBpdGVtcy5sZW5ndGggLSAxIH19PC9zcGFuXG4gICAgICAgID5cbiAgICAgICAgPGFwcC1wb3BvdmVyICNhY3Rpb25CdXR0b24+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRlbXBsYXRlLWZpbHRlci1saXN0XCI+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgaXRlbXMuc2xpY2UoMSk7IGxldCBqID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hpcC1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCIgKGNsaWNrKT1cInJlbW92ZVZhbHVlKGogKyAxKVwiPiYjeGU5MGQ7PC9pPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgZGF0YSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvYXBwLXBvcG92ZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm92ZXJsYXkgYWN0aXZlXCJcbiAgICAqbmdJZj1cImRyb3Bkb3duT3B0aW9uID09PSB0cnVlXCJcbiAgICAoY2xpY2spPVwiY2xvc2VEcm9wZG93bihmYWxzZSlcIlxuICA+PC9kaXY+XG4gIDx1bFxuICAgIGNsYXNzPVwibGlzdC1vZi1vcHRpb25cIlxuICAgICpuZ0lmPVwiZHJvcGRvd25PcHRpb24gPT09IHRydWVcIlxuICAgICNvcHRpb25MaXN0XG4gICAgKGtleXVwLkVzY2FwZSk9XCJjbG9zZURyb3Bkb3duKGZhbHNlKVwiXG4gICAgW3N0eWxlLnRvcC5weF09XCJnZXRUb3BcIlxuICAgIFtzdHlsZS5sZWZ0LnB4XT1cImdldExlZnRcIlxuICAgIFtzdHlsZS5taW4td2lkdGgucHhdPVwiZ2V0V2lkdGhcIlxuICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibWF4V2lkdGhcIlxuICAgIFtjbGFzcy5hY3RpdmVdPVwiYWN0aXZlRHJvcGRvd25cIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXJcIlxuICAgICAgICBbbmdNb2RlbF09XCJzZWFyY2hLZXlcIlxuICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8ZGl2IGNsYXNzPVwiYnV0dG9uLWJsb2NrXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiY2hlY2tDaGFuZ2VzKClcIlxuICAgICAgICAoY2xpY2spPVwiY2xvc2VEcm9wZG93bih0cnVlKVwiXG4gICAgICA+XG4gICAgICAgIEFwcGx5XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC91bD5cbjwvZGl2PlxuIl19
|
|
210
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3MtbXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvdWkta2l0L211bHRpLXNlbGVjdC9jcy1tdWx0aXNlbGVjdC9jcy1tdWx0aXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi91aS1raXQvbXVsdGktc2VsZWN0L2NzLW11bHRpc2VsZWN0L2NzLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUEyQyxNQUFNLGVBQWUsQ0FBQztBQUN2SSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7O0FBUWhDLE1BQU0sT0FBTyxzQkFBc0I7SUFnQ2pDLElBQTZCLE9BQU8sQ0FBQyxPQUFtQjtRQUN0RCxJQUFJLE9BQU8sRUFBRTtZQUNYLDhDQUE4QztZQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxZQUFtQixrQkFBc0M7UUFBdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWxDaEQsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFHekIsaUJBQVksR0FBUSxFQUFFLENBQUM7UUFDdEIsZ0JBQVcsR0FBd0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3BELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxzQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxRCx3QkFBbUIsR0FBd0IsSUFBSSxZQUFZLEVB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LE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNO2dCQW1Cc0IsT0FBTztzQkFBbkMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RTZXJ2aWNlIH0gZnJvbSAnLi4vbXVsdGktc2VsZWN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcy1tdWx0aS1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY3MtbXVsdGlzZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jcy1tdWx0aXNlbGVjdC5jb21wb25lbnQubGVzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDc011bHRpc2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgaXNSZXF1aXJlZCE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIGRyb3Bkb3duTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRyb3Bkb3duU3ViTGFiZWwhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkITogYm9vbGVhbjtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzZWFyY2hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSB2YWx1ZSE6IGFueTtcbiAgQElucHV0KCkgc2VsZWN0ZWRJdGVtOiBhbnkgPSBbXTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYXBwbHlGaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VhcmNoVGV4dDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZXNldFNlbGVjdGVkRGF0YTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSByZXN0b3JlU2VsZWN0ZWREYXRhOiBFdmVudEVtaXR0ZXI8YW55W10+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBkcm9wZG93bk9wdGlvbiE6IGJvb2xlYW47XG4gIHBvc2l0aW9uUmVzZXQhOiBib29sZWFuO1xuICBnZXRMZWZ0ITogbnVtYmVyO1xuICBnZXRUb3AhOiBudW1iZXI7XG4gIGdldFdpZHRoITogbnVtYmVyO1xuICBtYXhXaWR0aCE6IG51bWJlcjtcbiAgYWN0aXZlRHJvcGRvd24hOiBib29sZWFuO1xuICBpdGVtcyE6IGFueVtdO1xuICBwcmV2aW91c0l0ZW1zOiBhbnlbXT1bXTtcblxuICBpdGVtc0Rpc3BsYXllZExpc3Q6IGFueVtdPVtdO1xuICBuYW1lOiBzdHJpbmc7XG4gIGZpbHRlckFwcGxpZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBzZWFyY2hLZXkhOiBhbnk7XG4gIHRpbWVyOiBhbnk7XG4gIHRlbXBTZWxlY3RlZERhdGE6IGFueSA9IFtdO1xuXG4gIHByaXZhdGUgb3B0aW9uTGlzdCE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ29wdGlvbkxpc3QnKSBzZXQgY29udGVudChjb250ZW50OiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIC8vIGluaXRpYWxseSBzZXR0ZXIgZ2V0cyBjYWxsZWQgd2l0aCB1bmRlZmluZWRcbiAgICAgIHRoaXMub3B0aW9uTGlzdCA9IGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIG11bHRpU2VsZWN0U2VydmljZTogTXVsdGlTZWxlY3RTZXJ2aWNlKSB7XG4gICAgdGhpcy52YWx1ZSA9IFtdO1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICB0aGlzLm5hbWUgPSBuYW5vaWQoKTtcbiAgICB0aGlzLnNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaC4uLic7XG4gICAgLy8gYWxlcnQodGhpcy50ZW1wU2VsZWN0ZWREYXRhLmxlbmd0aCk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGluZGV4IC0gUmVwcmVzZW50cyB0aGUgaW5kZXggb2YgdGhlIHZhbHVlIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZVZhbHVlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB0aGlzLml0ZW1zRGlzcGxheWVkTGlzdCA9IFsuLi5uZXcgU2V0KHRoaXMuaXRlbXMpXVxuICAgIHRoaXMuYXBwbHlGaWx0ZXIuZW1pdCh0aGlzLmZpbHRlckFwcGxpZWQpO1xuICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0YSA9IFsuLi4gdGhpcy52YWx1ZV07XG4gICAgdGhpcy5wcmV2aW91c0l0ZW1zID0gIFsuLi5uZXcgU2V0KHRoaXMuaXRlbXMpXVxuICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm92ZXJmbG93SGlkZGVuID0gZmFsc2U7XG4gIH1cblxuXG5cbiAgcmVzZXRTdGF0ZSh0eXBlPzogYW55KXtcbiAgICB0aGlzLnZhbHVlID0gW107XG4gICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgIGlmKHR5cGUgPT09ICdhbGxSZXNldCcpe1xuICAgICAgdGhpcy5wcmV2aW91c0l0ZW1zID0gW11cbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0YSA9IFtdXG4gICAgfVxuICAgIGlmKHRoaXMucHJldmlvdXNJdGVtcz8ubGVuZ3RoID09PSAwKXtcbiAgICAgIHRoaXMucmVzZXRTZWxlY3RlZERhdGEuZW1pdCh0cnVlKTtcbiAgICB9XG4gIH1cblxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5zZWFyY2hQbGFjZWhvbGRlcikge1xuICAgICAgdGhpcy5zZWFyY2hQbGFjZWhvbGRlciA9IHRoaXMuc2VhcmNoUGxhY2Vob2xkZXIgfHwgJ1NlYXJjaC4uLic7XG4gICAgfVxuICB9XG4gIG5nQWZ0ZXJWaWV3SW5pdCgpXHR7XG4gICAgaWYodGhpcy5zZWxlY3RlZEl0ZW0gJiYgdGhpcy5zZWxlY3RlZEl0ZW0/Lmxlbmd0aCApe1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZm9yRWFjaCggKGVsZTogYW55KSA9PiB7XG4gICAgICAgIC8vIHRoaXMuYWRkVmFsdWUoe2tleTogZWxlPy5yY19uYW1lID8/IGVsZT8uY2F0ZWdvcnlfbmFtZSAsIHZhbHVlOiBlbGV9KTtcbiAgICAgICAgdGhpcy5hZGRWYWx1ZSh7a2V5OiBlbGU/Lml0ZW1fc2hvcnRfbmFtZSAsIHZhbHVlOiBlbGV9KTtcbiAgICAgIH0pXG4gICAgfVxuICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0YSA9IHRoaXMuc2VsZWN0ZWRJdGVtID8gWy4uLnRoaXMuc2VsZWN0ZWRJdGVtXSA6IFtdO1xuICAgIHRoaXMucHJldmlvdXNJdGVtcyA9ICBbLi4ubmV3IFNldCh0aGlzLml0ZW1zKV07XG5cbiAgfVxuXG4gIHNldCBDaGVja0JveFZhbCh2YWw6IGFueVtdKSB7XG4gICAgaWYgKHZhbCAhPT0gdW5kZWZpbmVkICYmIHZhbCAhPT0gbnVsbCkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbDtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBzZWFyY2goZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuc2VhcmNoVGV4dC5lbWl0KGV2ZW50KTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lcik7XG4gICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zZWFyY2hLZXkgPSBldmVudDtcbiAgICB9LCA0MDApO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICBpZih2YWx1ZT8ubGVuZ3RoKXtcbiAgICB0aGlzLkNoZWNrQm94VmFsID0gdmFsdWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBvYmogLSBSZXByZXNlbnRzIHRoZSBvYmplY3Qgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIHZhbHVlIGxpc3RcbiAgICovXG4gIGFkZFZhbHVlKG9iajogeyBrZXk6IHN0cmluZzsgdmFsdWU6IGFueSB9KTogdm9pZCB7XG4gICAgdGhpcy5pdGVtcy5wdXNoKG9iai5rZXkpO1xuICAgIHRoaXMudmFsdWUucHVzaChvYmoudmFsdWUpO1xuICAgIHRoaXMud3JpdGVWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWUgLSBSZXByZXNlbnRzIHRoZSB2YWx1ZSB0byBiZSByZW1vdmVkIGZyb20gdGhlIHZhbHVlIGxpc3RcbiAgICovXG4gIHJlbW92ZVZhbHVlRnJvbUNoZWNrYm94KHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMudmFsdWUuaW5kZXhPZih2YWx1ZSk7XG4gICAgdGhpcy5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMudmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLndyaXRlVmFsdWUodGhpcy52YWx1ZSk7XG4gIH1cblxuICBvcGVuRHJvcGRvd24oZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuZHJvcGRvd25PcHRpb24gPSB0cnVlO1xuICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm92ZXJmbG93SGlkZGVuID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRyb3Bkb3duID0gZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgY29uc3Qgc2VsZWN0T3B0aW9uID0gdGhpcy5vcHRpb25MaXN0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgaWYgKGRyb3Bkb3duLnRvcCArIHNlbGVjdE9wdGlvbiArIDUwID4gd2luZG93LmlubmVySGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuZ2V0VG9wID0gZHJvcGRvd24udG9wIC0gc2VsZWN0T3B0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5nZXRUb3AgPSBkcm9wZG93bi50b3AgKyBkcm9wZG93bi5oZWlnaHQ7XG4gICAgICB9XG4gICAgICB0aGlzLmdldExlZnQgPSBkcm9wZG93bi5sZWZ0O1xuICAgICAgdGhpcy5nZXRXaWR0aCA9IGRyb3Bkb3duLndpZHRoO1xuICAgICAgdGhpcy5tYXhXaWR0aCA9IGRyb3Bkb3duLndpZHRoICogMS4yNTtcbiAgICB9LCAxMCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZURyb3Bkb3duID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBhcHBseUZpbHRlciAtIERldGVybWluZXMgd2hldGhlciBmaWx0ZXIgaXMgYXBwbGllZCBvciBub3RcbiAgICovXG4gIGNsb3NlRHJvcGRvd24oYXBwbHlGaWx0ZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duT3B0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2goJycpO1xuICAgIHRoaXMuZmlsdGVyQXBwbGllZCA9IGFwcGx5RmlsdGVyO1xuICAgIHRoaXMubXVsdGlTZWxlY3RTZXJ2aWNlLm92ZXJmbG93SGlkZGVuID0gZmFsc2U7XG4gICAgdGhpcy5zZWFyY2hLZXkgPSAnJztcbiAgICBpZiAoYXBwbHlGaWx0ZXIpIHtcbiAgICAgIHRoaXMudGVtcFNlbGVjdGVkRGF0YSA9ICBbLi4uIG5ldyBTZXQodGhpcy52YWx1ZSldO1xuICAgICAgdGhpcy5wcmV2aW91c0l0ZW1zID0gIFsuLi5uZXcgU2V0KHRoaXMuaXRlbXMpXTtcbiAgICAgIHRoaXMuaXRlbXNEaXNwbGF5ZWRMaXN0ID0gWy4uLm5ldyBTZXQodGhpcy5pdGVtcyldXG4gICAgICB0aGlzLmFwcGx5RmlsdGVyLmVtaXQoYXBwbHlGaWx0ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbHRlckFwcGxpZWQgPSB0cnVlO1xuICAgICAgdGhpcy50ZW1wU2VsZWN0ZWREYXRhPy5mb3JFYWNoKCAoZWxlOiBhbnkpID0+IHtcbiAgICAgICAgLy8gdGhpcy5hZGRWYWx1ZSh7a2V5OiBlbGU/LnJjX25hbWUgPz8gZWxlPy5jYXRlZ29yeV9uYW1lLCB2YWx1ZTogZWxlfSk7XG4gICAgICAgIHRoaXMuYWRkVmFsdWUoe2tleTogZWxlPy5pdGVtX3Nob3J0X25hbWUgLCB2YWx1ZTogZWxlfSk7XG4gICAgICB9KVxuICAgICAgdGhpcy5yZXNldFRvTGFzdFN0YXRlKCk7XG4gICAgfVxuICB9XG5cbiAgcmVzZXRUb0xhc3RTdGF0ZSgpe1xuICAgIHRoaXMudmFsdWUgPSBbLi4ubmV3IFNldCh0aGlzLnRlbXBTZWxlY3RlZERhdGEpXTtcbiAgICB0aGlzLml0ZW1zID0gWy4uLm5ldyBTZXQodGhpcy5wcmV2aW91c0l0ZW1zKV07XG4gICAgdGhpcy5yZXN0b3JlU2VsZWN0ZWREYXRhLmVtaXQoWy4uLm5ldyBTZXQodGhpcy50ZW1wU2VsZWN0ZWREYXRhKV0pO1xuICB9XG5cbiAgY2hlY2tDaGFuZ2VzKCl7XG4gICAgaWYgKHRoaXMucHJldmlvdXNJdGVtcz8ubGVuZ3RoID09PSAwICYmIHRoaXMuaXRlbXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJldmlvdXNJdGVtcz8ubGVuZ3RoID09PSAwICYmIHRoaXMuaXRlbXM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHRoaXMucHJldmlvdXNJdGVtcz8uZXZlcnkoKGVsZW1lbnQpID0+IHRoaXMuaXRlbXM/LmluY2x1ZGVzKGVsZW1lbnQpKSAmJlxuICAgICAgICB0aGlzLnByZXZpb3VzSXRlbXM/Lmxlbmd0aCA9PT0gdGhpcy5pdGVtcz8ubGVuZ3RoXG4gICAgICApO1xuICAgIH1cblxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibXVsdGktc2VsZWN0LWlucHV0LWdyb3VwXCIgKGNsaWNrT3V0c2lkZSk9XCJkcm9wZG93bk9wdGlvbiA9IGZhbHNlXCI+XG4gIDxsYWJlbCAqbmdJZj1cImRyb3Bkb3duTGFiZWxcIj5cbiAgICB7eyBkcm9wZG93bkxhYmVsIH19XG4gICAgPHNwYW4gY2xhc3M9XCJzdWItbGFiZWxcIiAqbmdJZj1cImRyb3Bkb3duU3ViTGFiZWxcIj57e1xuICAgICAgZHJvcGRvd25TdWJMYWJlbFxuICAgIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWRcIiAqbmdJZj1cImlzUmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWxcbiAgPlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXNlbGVjdC1ib3hcIiBbY2xhc3MuZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibXVsdGlwbGUtdmFsdWUgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtdWx0aXBsZS12YWx1ZS1pbm5lciB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktZW5kIHZ4LXByLTJcIlxuICAgICAgICAoY2xpY2spPVwib3BlbkRyb3Bkb3duKCRldmVudClcIlxuICAgICAgPjwvZGl2PlxuICAgICAgPHNwYW4gY2xhc3M9XCJwbGFjZWhvbGRlclwiICpuZ0lmPVwiIXZhbHVlIHx8IHZhbHVlPy5sZW5ndGggPT09IDBcIj57e1xuICAgICAgICBwbGFjZWhvbGRlclxuICAgICAgfX08L3NwYW4+XG4gICAgICA8IS0tIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3ctZG93biB2eC1mcy05XCI+JiN4ZTllODs8L2k+IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIiAqbmdJZj1cInZhbHVlICYmIHZhbHVlPy5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNoaXBcIlxuICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXRhIG9mIGl0ZW1zIHwgc2xpY2UgOiAwIDogMTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cInJlbW92ZVZhbHVlKGkpXCI+JnRpbWVzOzwvc3BhblxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInZhbHVlXCI+e3sgZGF0YSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJjb3VudGVyXCJcbiAgICAgICAgICAqbmdJZj1cIml0ZW1zLmxlbmd0aCA+IDFcIlxuICAgICAgICAgIGFwcFBvcG92ZXJcbiAgICAgICAgICAoY2xpY2spPVwiYWN0aW9uQnV0dG9uLnBvcG92ZXIoKVwiXG4gICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgID4re3sgaXRlbXMubGVuZ3RoIC0gMSB9fTwvc3BhblxuICAgICAgICA+XG4gICAgICAgIDxhcHAtcG9wb3ZlciAjYWN0aW9uQnV0dG9uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZW1wbGF0ZS1maWx0ZXItbGlzdFwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwiYWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGl0ZW1zLnNsaWNlKDEpOyBsZXQgaiA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoaXAtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiIChjbGljayk9XCJyZW1vdmVWYWx1ZShqICsgMSlcIj4mI3hlOTBkOzwvaT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FwcC1wb3BvdmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJvdmVybGF5IGFjdGl2ZVwiXG4gICAgKm5nSWY9XCJkcm9wZG93bk9wdGlvbiA9PT0gdHJ1ZVwiXG4gICAgKGNsaWNrKT1cImNsb3NlRHJvcGRvd24oZmFsc2UpXCJcbiAgPjwvZGl2PlxuICA8dWxcbiAgICBjbGFzcz1cImxpc3Qtb2Ytb3B0aW9uXCJcbiAgICAqbmdJZj1cImRyb3Bkb3duT3B0aW9uID09PSB0cnVlXCJcbiAgICAjb3B0aW9uTGlzdFxuICAgIChrZXl1cC5Fc2NhcGUpPVwiY2xvc2VEcm9wZG93bihmYWxzZSlcIlxuICAgIFtzdHlsZS50b3AucHhdPVwiZ2V0VG9wXCJcbiAgICBbc3R5bGUubGVmdC5weF09XCJnZXRMZWZ0XCJcbiAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cImdldFdpZHRoXCJcbiAgICBbc3R5bGUubWF4LXdpZHRoLnB4XT1cIm1heFdpZHRoXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZURyb3Bkb3duXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxuICAgICAgPGlucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyXCJcbiAgICAgICAgW25nTW9kZWxdPVwic2VhcmNoS2V5XCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2VhcmNoKCRldmVudClcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ibG9ja1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cImNoZWNrQ2hhbmdlcygpXCJcbiAgICAgICAgKGNsaWNrKT1cImNsb3NlRHJvcGRvd24odHJ1ZSlcIlxuICAgICAgPlxuICAgICAgICBBcHBseVxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
|