@sebgroup/green-angular 1.0.0-beta.20 → 1.0.0-beta.23
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/esm2020/lib/datepicker/datepicker.component.mjs +3 -3
- package/esm2020/lib/dropdown/dropdown.component.mjs +37 -308
- package/fesm2015/sebgroup-green-angular.mjs +40 -309
- package/fesm2015/sebgroup-green-angular.mjs.map +1 -1
- package/fesm2020/sebgroup-green-angular.mjs +38 -309
- package/fesm2020/sebgroup-green-angular.mjs.map +1 -1
- package/lib/dropdown/dropdown.component.d.ts +17 -11
- package/package.json +3 -3
|
@@ -116,7 +116,7 @@ NggDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0",
|
|
|
116
116
|
useExisting: NggDatepickerComponent,
|
|
117
117
|
multi: true,
|
|
118
118
|
},
|
|
119
|
-
], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n
|
|
119
|
+
], viewQueries: [{ propertyName: "datepickerDialogElRef", first: true, predicate: ["datepickerDialogElRef"], descendants: true }, { propertyName: "dateInputElRef", first: true, predicate: ["dateInputElRef"], descendants: true }, { propertyName: "datepickerElRef", first: true, predicate: ["datepickerElRef"], descendants: true }, { propertyName: "datepickerTriggerElRef", first: true, predicate: ["datepickerTriggerElRef"], descendants: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n", components: [{ type: i1.NggDropdownComponent, selector: "ngg-dropdown", inputs: ["id", "texts", "loop", "display", "useValue", "label", "options", "valid", "invalid", "compareWith", "searchFilter", "multiSelect", "searchable", "value"], outputs: ["valueChange", "touched"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
120
120
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: NggDatepickerComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
122
|
args: [{ selector: 'ngg-datepicker', providers: [
|
|
@@ -125,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImpor
|
|
|
125
125
|
useExisting: NggDatepickerComponent,
|
|
126
126
|
multi: true,
|
|
127
127
|
},
|
|
128
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n text=\"Select\"\n [value]=\"data?.month\"\n
|
|
128
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\">\n <label *ngIf=\"label\" [for]=\"id\">{{ label }}</label>\n <div\n class=\"group\"\n #datepickerElRef\n [class.is-valid]=\"isValid\"\n [class.is-invalid]=\"isValid === false\"\n >\n <input\n [attr.id]=\"id\"\n [attr.aria-describedby]=\"\n formInfo?.innerText && formInfo.innerText.length > 0\n ? id + '_info'\n : null\n \"\n type=\"text\"\n placeholder=\"yyyy-mm-dd\"\n #dateInputElRef\n [value]=\"data?.formattedSelectedDate || ''\"\n (change)=\"onDateChange(dateInputElRef.value)\"\n />\n <button\n #datepickerTriggerElRef\n (click)=\"dp?.toggle()\"\n type=\"button\"\n class=\"primary\"\n >\n <i class=\"sg-icon sg-icon-calendar\">Select date</i>\n </button>\n </div>\n <span class=\"form-info\" #formInfo [attr.id]=\"id + '_info'\"\n ><ng-content select=\"[data-form-info]\"></ng-content\n ></span>\n</div>\n<!-- TODO: get or set attributes from within datepicker instance (dp) -->\n<div\n #datepickerDialogElRef\n class=\"popover popover-datepicker\"\n [class.active]=\"dp?.state?.isActive\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Choose Date\"\n>\n <button type=\"button\" class=\"close\" (click)=\"dp?.close()\">Close</button>\n <div class=\"sg-date\">\n <header>\n <button type=\"button\" class=\"link\" (click)=\"dp?.sub(1, 'months')\">\n <i class=\"sg-icon sg-icon-previous\">Previous month</i>\n </button>\n <ngg-dropdown\n [options]=\"months\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.month\"\n (valueChange)=\"dp?.setMonth($event)\"\n ></ngg-dropdown>\n <ngg-dropdown\n *ngIf=\"years\"\n [options]=\"years\"\n display=\"key\"\n text=\"Select\"\n [value]=\"data?.year\"\n (valueChange)=\"dp?.setYear($event)\"\n ></ngg-dropdown>\n <button type=\"button\" class=\"link\" (click)=\"dp?.add(1, 'months')\">\n <i class=\"sg-icon sg-icon-next\">Next month</i>\n </button>\n </header>\n <main>\n <table role=\"grid\">\n <thead>\n <tr>\n <th\n scope=\"col\"\n *ngFor=\"let header of data?.calendar?.headers\"\n [abbr]=\"header.abbr\"\n [class.sg-week-header]=\"header.type === 'week'\"\n [class.sg-day-header]=\"header.type === 'day'\"\n >\n {{ header.displayText }}\n </th>\n </tr>\n </thead>\n <tbody>\n <tr\n *ngFor=\"\n let week of data?.calendar?.calendarGrid;\n trackBy: trackWeek;\n let i = index\n \"\n >\n <th\n *ngIf=\"data?.calendar?.weekNumbers as weekNumbers\"\n class=\"sg-week-number\"\n >\n {{ weekNumbers[i] }}\n </th>\n <td\n *ngFor=\"let day of week\"\n [attr.data-date]=\"day.formattedDate\"\n [attr.role]=\"day.selected ? 'gridcell' : null\"\n [attr.aria-selected]=\"\n day.selected && !data?.highlightedDate ? true : null\n \"\n [class.disabled]=\"day.disabled\"\n [class.sg-date-today]=\"day.today\"\n [title]=\"day.today ? 'Today' : ''\"\n [tabIndex]=\"\n day.highlighted ||\n (day.selected && !data?.highlightedDate) ||\n (day.today && !data?.highlightedDate && !data?.selectedDate)\n ? 0\n : -1\n \"\n (click)=\"day.currentMonth && dp?.select(day.date)\"\n >\n {{ day.day }}\n </td>\n </tr>\n </tbody>\n </table>\n </main>\n </div>\n</div>\n" }]
|
|
129
129
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { options: [{
|
|
130
130
|
type: Input
|
|
131
131
|
}], value: [{
|
|
@@ -183,4 +183,4 @@ export function dateValidator(dates) {
|
|
|
183
183
|
return null;
|
|
184
184
|
};
|
|
185
185
|
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBTUwsZ0JBQWdCLEVBR2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxHQUVULE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7Ozs7QUFjL0MsTUFBTSxPQUFPLHNCQUFzQjtJQXdEakMsWUFBb0IsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUEzQmxDLE9BQUUsR0FBWSxRQUFRLEVBQUUsQ0FBQTtRQUV4QixZQUFPLEdBQW1CLElBQUksQ0FBQTtRQUNwQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO1FBaUJuRSxZQUFPLEdBQTBCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQThDbkQsYUFBUSxHQUFHLENBQ1QsSUFBZ0MsRUFDaEMsS0FBa0MsRUFDbEMsRUFBRTtZQUNGLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUs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QTtRQUN6RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRXZFLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzlCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzVCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBBYnN0cmFjdERyb3Bkb3duLFxuICBEcm9wZG93bkhhbmRsZXIsXG4gIEVsZW1lbnRQcm9wcyxcbiAgRGF0ZXBpY2tlckRhdGEsXG4gIERhdGVwaWNrZXIsXG4gIGNyZWF0ZURhdGVwaWNrZXIsXG4gIERhdGVwaWNrZXJTdGF0ZSxcbiAgRHJvcGRvd25PcHRpb24sXG4gIG1vbnRocyxcbiAgeWVhcnMsXG4gIHJhbmRvbUlkLFxuICBEYXRlcGlja2VyT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5pbXBvcnQgeyBlbmRPZkRheSwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nZ0RhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRGF0ZXBpY2tlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XG57XG4gIGdldCBtb250aHMoKTogQXJyYXk8RHJvcGRvd25PcHRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fbW9udGhzXG4gIH1cblxuICBzZXQgbW9udGhzKHZhbHVlOiBBcnJheTxEcm9wZG93bk9wdGlvbj4pIHtcbiAgICB0aGlzLl9tb250aHMgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBvcHRpb25zKCk6IERhdGVwaWNrZXJPcHRpb25zIHtcbiAgICByZXR1cm4gPERhdGVwaWNrZXJPcHRpb25zPnRoaXMuX29wdGlvbnNcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogRGF0ZXBpY2tlck9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWVcbiAgICBpZiAodmFsdWUubG9jYWxlKSB7XG4gICAgICB0aGlzLm1vbnRocyA9IG1vbnRocyh7IGxvY2FsZTogdGhpcy5vcHRpb25zPy5sb2NhbGUgfSlcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVxuICB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWVcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgaWQ/OiBzdHJpbmcgPSByYW5kb21JZCgpXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIGlzVmFsaWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckRpYWxvZ0VsUmVmJylcbiAgcHVibGljIGRhdGVwaWNrZXJEaWFsb2dFbFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dEVsUmVmJylcbiAgcHVibGljIGRhdGVJbnB1dEVsUmVmPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyRWxSZWYnKSBwdWJsaWMgZGF0ZXBpY2tlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlclRyaWdnZXJFbFJlZicpXG4gIHB1YmxpYyBkYXRlcGlja2VyVHJpZ2dlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cblxuICBvbkNoYW5nZUZuPzogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBhbnlcblxuICBkcm9wZG93bj86IEFic3RyYWN0RHJvcGRvd25cbiAgaGFuZGxlcj86IERyb3Bkb3duSGFuZGxlclxuICB0b2dnbGVyPzogUGFydGlhbDxFbGVtZW50UHJvcHM+XG4gIGxpc3Rib3g/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz5cbiAgX3ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX21vbnRoczogQXJyYXk8RHJvcGRvd25PcHRpb24+ID0gbW9udGhzKHt9KVxuICB5ZWFycz86IEFycmF5PERyb3Bkb3duT3B0aW9uPlxuICBwcml2YXRlIF9vcHRpb25zPzogRGF0ZXBpY2tlck9wdGlvbnNcblxuICBkcDogRGF0ZXBpY2tlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9kYXRhOiBEYXRlcGlja2VyRGF0YSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG5cbiAgICAvLyBXaGVuIGJpbmRpbmcgdXNpbmcgbmdNb2RlbCB3ZSBuZWVkIHRvIHNldCBpbml0aWFsIHNlbGVjdCBkYXRlXG4gICAgLy8gb25jZSB3ZSBnZXQgaW5pdGlhbCB2YWx1ZSBhcyBpdCdzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRwICYmICF0aGlzLmRhdGE/LnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5kcC5zZWxlY3QodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIGdldCBkYXRhKCk6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVxuICB9XG5cbiAgc2V0IGRhdGEodmFsdWU6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlXG4gIH1cblxuICBvbkRhdGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAvLyBPbmx5IHBhc3MgdmFsaWQgZGF0ZSB0byBkYXRlIHBpY2tlclxuICAgIGlmICghaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLmRwPy5zZWxlY3QodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgIHRoaXMub25DaGFuZ2VGbiAmJiB0aGlzLm9uQ2hhbmdlRm4odmFsdWUpXG4gICAgfVxuICB9XG5cbiAgbGlzdGVuZXIgPSAoXG4gICAgZGF0YTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQsXG4gICAgc3RhdGU6IERhdGVwaWNrZXJTdGF0ZSB8IHVuZGVmaW5lZFxuICApID0+IHtcbiAgICBpZiAodGhpcy5kcCAmJiBzdGF0ZSkge1xuICAgICAgdGhpcy5kcC5zdGF0ZSA9IHsgLi4uc3RhdGUgfVxuICAgICAgdGhpcy55ZWFycyA9IHllYXJzKHtcbiAgICAgICAgZnJvbTogdGhpcy5kcC5zdGF0ZT8ubWluRGF0ZT8uZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgdG86IHRoaXMuZHAuc3RhdGU/Lm1heERhdGU/LmdldEZ1bGxZZWFyKCksXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMub25Ub3VjaGVkRm4gJiYgdGhpcy5vblRvdWNoZWRGbigpXG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgLy8gb25seSBlbWl0IGNoYW5nZSBldmVudCBpZiBkYXRlIGhhcyBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5kYXRhPy5zZWxlY3RlZERhdGUgIT09IGRhdGEuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbihkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB9XG5cbiAgICBpZiAoZGF0YSB8fCBzdGF0ZSkge1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG4gIHRyYWNrV2VlayhpbmRleDogYW55LCB3ZWVrOiBhbnkpIHtcbiAgICByZXR1cm4gd2Vla1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYWxpemUgZGF0ZXBpY2tlclxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckVsUmVmICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckVsUmVmICYmXG4gICAgICAhdGhpcy5kcFxuICAgICkge1xuICAgICAgdGhpcy5kcCA9IGNyZWF0ZURhdGVwaWNrZXIoXG4gICAgICAgIHRoaXMubGlzdGVuZXIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgc2VsZWN0ZWREYXRlOiB0aGlzLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVJbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJFbFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICApXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdNaXNzaW5nIG9uZSBvciBtb3JlIGVsZW1lbnRzLi4uJ1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVZhbGlkYXRvcihkYXRlcz86IHsgbWluPzogRGF0ZTsgbWF4PzogRGF0ZSB9KTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodmFsdWUpXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSAhaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpXG4gICAgaWYgKCFpc1ZhbGlkRGF0ZSkge1xuICAgICAgcmV0dXJuIHsgdmFsaWREYXRlOiB0cnVlIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZE1pbkRhdGUgPSBkYXRlcz8ubWluID8gbmV3RGF0ZSA+PSBzdGFydE9mRGF5KGRhdGVzLm1pbikgOiB0cnVlXG4gICAgY29uc3QgdmFsaWRNYXhEYXRlID0gZGF0ZXM/Lm1heCA/IG5ld0RhdGUgPD0gZW5kT2ZEYXkoZGF0ZXMubWF4KSA6IHRydWVcblxuICAgIGlmICghdmFsaWRNaW5EYXRlICYmIGRhdGVzPy5taW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkRGF0ZToge1xuICAgICAgICAgIG1pbkRhdGU6IHN0YXJ0T2ZEYXkoZGF0ZXMubWluKSxcbiAgICAgICAgICBhY3R1YWxEYXRlOiBuZXdEYXRlLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXZhbGlkTWF4RGF0ZSAmJiBkYXRlcz8ubWF4KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZERhdGU6IHtcbiAgICAgICAgICBtYXhEYXRlOiBlbmRPZkRheShkYXRlcy5tYXgpLFxuICAgICAgICAgIGFjdHVhbERhdGU6IG5ld0RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJncm91cFwiXG4gICAgI2RhdGVwaWNrZXJFbFJlZlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc1ZhbGlkID09PSBmYWxzZVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXG4gICAgICAgIGZvcm1JbmZvPy5pbm5lclRleHQgJiYgZm9ybUluZm8uaW5uZXJUZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGlkICsgJ19pbmZvJ1xuICAgICAgICAgIDogbnVsbFxuICAgICAgXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAjZGF0ZUlucHV0RWxSZWZcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy5mb3JtYXR0ZWRTZWxlY3RlZERhdGUgfHwgJydcIlxuICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoZGF0ZUlucHV0RWxSZWYudmFsdWUpXCJcbiAgICAvPlxuICAgIDxidXR0b25cbiAgICAgICNkYXRlcGlja2VyVHJpZ2dlckVsUmVmXG4gICAgICAoY2xpY2spPVwiZHA/LnRvZ2dsZSgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJwcmltYXJ5XCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1jYWxlbmRhclwiPlNlbGVjdCBkYXRlPC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWluZm9cIiAjZm9ybUluZm8gW2F0dHIuaWRdPVwiaWQgKyAnX2luZm8nXCJcbiAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtZm9ybS1pbmZvXVwiPjwvbmctY29udGVudFxuICA+PC9zcGFuPlxuPC9kaXY+XG48IS0tIFRPRE86IGdldCBvciBzZXQgYXR0cmlidXRlcyBmcm9tIHdpdGhpbiBkYXRlcGlja2VyIGluc3RhbmNlIChkcCkgLS0+XG48ZGl2XG4gICNkYXRlcGlja2VyRGlhbG9nRWxSZWZcbiAgY2xhc3M9XCJwb3BvdmVyIHBvcG92ZXItZGF0ZXBpY2tlclwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiZHA/LnN0YXRlPy5pc0FjdGl2ZVwiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIGFyaWEtbGFiZWw9XCJDaG9vc2UgRGF0ZVwiXG4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiZHA/LmNsb3NlKClcIj5DbG9zZTwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwic2ctZGF0ZVwiPlxuICAgIDxoZWFkZXI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZHA/LnN1YigxLCAnbW9udGhzJylcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tcHJldmlvdXNcIj5QcmV2aW91cyBtb250aDwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nZy1kcm9wZG93blxuICAgICAgICBbb3B0aW9uc109XCJtb250aHNcIlxuICAgICAgICB0ZXh0PVwiU2VsZWN0XCJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGE/Lm1vbnRoXCJcbiAgICAgICAgc2VsZWN0VmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkcD8uc2V0TW9udGgoJGV2ZW50KVwiXG4gICAgICA+PC9uZ2ctZHJvcGRvd24+XG4gICAgICA8bmdnLWRyb3Bkb3duXG4gICAgICAgICpuZ0lmPVwieWVhcnNcIlxuICAgICAgICBbb3B0aW9uc109XCJ5ZWFyc1wiXG4gICAgICAgIHRleHQ9XCJTZWxlY3RcIlxuICAgICAgICBbdmFsdWVdPVwiZGF0YT8ueWVhclwiXG4gICAgICAgIHNlbGVjdFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZHA/LnNldFllYXIoJGV2ZW50KVwiXG4gICAgICA+PC9uZ2ctZHJvcGRvd24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZHA/LmFkZCgxLCAnbW9udGhzJylcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tbmV4dFwiPk5leHQgbW9udGg8L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bWFpbj5cbiAgICAgIDx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBkYXRhPy5jYWxlbmRhcj8uaGVhZGVyc1wiXG4gICAgICAgICAgICAgIFthYmJyXT1cImhlYWRlci5hYmJyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNnLXdlZWstaGVhZGVyXT1cImhlYWRlci50eXBlID09PSAnd2VlaydcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2ctZGF5LWhlYWRlcl09XCJoZWFkZXIudHlwZSA9PT0gJ2RheSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB3ZWVrIG9mIGRhdGE/LmNhbGVuZGFyPy5jYWxlbmRhckdyaWQ7XG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrV2VlaztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5jYWxlbmRhcj8ud2Vla051bWJlcnMgYXMgd2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNnLXdlZWstbnVtYmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgd2Vla051bWJlcnNbaV0gfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kYXRlXT1cImRheS5mb3JtYXR0ZWREYXRlXCJcbiAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJkYXkuc2VsZWN0ZWQgPyAnZ3JpZGNlbGwnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiXG4gICAgICAgICAgICAgICAgZGF5LnNlbGVjdGVkICYmICFkYXRhPy5oaWdobGlnaHRlZERhdGUgPyB0cnVlIDogbnVsbFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGF5LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNnLWRhdGUtdG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImRheS50b2RheSA/ICdUb2RheScgOiAnJ1wiXG4gICAgICAgICAgICAgIFt0YWJJbmRleF09XCJcbiAgICAgICAgICAgICAgICBkYXkuaGlnaGxpZ2h0ZWQgfHxcbiAgICAgICAgICAgICAgICAoZGF5LnNlbGVjdGVkICYmICFkYXRhPy5oaWdobGlnaHRlZERhdGUpIHx8XG4gICAgICAgICAgICAgICAgKGRheS50b2RheSAmJiAhZGF0YT8uaGlnaGxpZ2h0ZWREYXRlICYmICFkYXRhPy5zZWxlY3RlZERhdGUpXG4gICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgIDogLTFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRheS5jdXJyZW50TW9udGggJiYgZHA/LnNlbGVjdChkYXkuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF5IH19XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbWFpbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL2xpYi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy9saWIvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVCxZQUFZLEVBQ1osaUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFHTCxpQkFBaUIsR0FHbEIsTUFBTSxnQkFBZ0IsQ0FBQTtBQUN2QixPQUFPLEVBTUwsZ0JBQWdCLEVBR2hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxHQUVULE1BQU0sbUJBQW1CLENBQUE7QUFDMUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsTUFBTSxVQUFVLENBQUE7Ozs7QUFjL0MsTUFBTSxPQUFPLHNCQUFzQjtJQXdEakMsWUFBb0IsSUFBdUI7UUFBdkIsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUEzQmxDLE9BQUUsR0FBWSxRQUFRLEVBQUUsQ0FBQTtRQUV4QixZQUFPLEdBQW1CLElBQUksQ0FBQTtRQUNwQixnQkFBVyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFBO1FBaUJuRSxZQUFPLEdBQTBCLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQThDbkQsYUFBUSxHQUFHLENBQ1QsSUFBZ0MsRUFDaEMsS0FBa0MsRUFDbEMsRUFBRTtZQUNGLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUs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QTtRQUN6RSxNQUFNLFlBQVksR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRXZFLElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzlCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUNELElBQUksQ0FBQyxZQUFZLElBQUksS0FBSyxFQUFFLEdBQUcsRUFBRTtZQUMvQixPQUFPO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzVCLFVBQVUsRUFBRSxPQUFPO2lCQUNwQjthQUNGLENBQUE7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQyxDQUFBO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5HX1ZBTFVFX0FDQ0VTU09SLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JGbixcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQge1xuICBBYnN0cmFjdERyb3Bkb3duLFxuICBEcm9wZG93bkhhbmRsZXIsXG4gIEVsZW1lbnRQcm9wcyxcbiAgRGF0ZXBpY2tlckRhdGEsXG4gIERhdGVwaWNrZXIsXG4gIGNyZWF0ZURhdGVwaWNrZXIsXG4gIERhdGVwaWNrZXJTdGF0ZSxcbiAgRHJvcGRvd25PcHRpb24sXG4gIG1vbnRocyxcbiAgeWVhcnMsXG4gIHJhbmRvbUlkLFxuICBEYXRlcGlja2VyT3B0aW9ucyxcbn0gZnJvbSAnQHNlYmdyb3VwL2V4dHJhY3QnXG5pbXBvcnQgeyBlbmRPZkRheSwgc3RhcnRPZkRheSB9IGZyb20gJ2RhdGUtZm5zJ1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ2ctZGF0ZXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IE5nZ0RhdGVwaWNrZXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTmdnRGF0ZXBpY2tlckNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0XG57XG4gIGdldCBtb250aHMoKTogQXJyYXk8RHJvcGRvd25PcHRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5fbW9udGhzXG4gIH1cblxuICBzZXQgbW9udGhzKHZhbHVlOiBBcnJheTxEcm9wZG93bk9wdGlvbj4pIHtcbiAgICB0aGlzLl9tb250aHMgPSB2YWx1ZVxuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBvcHRpb25zKCk6IERhdGVwaWNrZXJPcHRpb25zIHtcbiAgICByZXR1cm4gPERhdGVwaWNrZXJPcHRpb25zPnRoaXMuX29wdGlvbnNcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogRGF0ZXBpY2tlck9wdGlvbnMpIHtcbiAgICB0aGlzLl9vcHRpb25zID0gdmFsdWVcbiAgICBpZiAodmFsdWUubG9jYWxlKSB7XG4gICAgICB0aGlzLm1vbnRocyA9IG1vbnRocyh7IGxvY2FsZTogdGhpcy5vcHRpb25zPy5sb2NhbGUgfSlcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IHN0cmluZyB8IERhdGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZVxuICB9XG4gIHNldCB2YWx1ZShuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWVcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgaWQ/OiBzdHJpbmcgPSByYW5kb21JZCgpXG4gIEBJbnB1dCgpIGxhYmVsPzogc3RyaW5nXG4gIEBJbnB1dCgpIGlzVmFsaWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdmFsdWVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KClcbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlckRpYWxvZ0VsUmVmJylcbiAgcHVibGljIGRhdGVwaWNrZXJEaWFsb2dFbFJlZj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gIEBWaWV3Q2hpbGQoJ2RhdGVJbnB1dEVsUmVmJylcbiAgcHVibGljIGRhdGVJbnB1dEVsUmVmPzogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PlxuICBAVmlld0NoaWxkKCdkYXRlcGlja2VyRWxSZWYnKSBwdWJsaWMgZGF0ZXBpY2tlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgQFZpZXdDaGlsZCgnZGF0ZXBpY2tlclRyaWdnZXJFbFJlZicpXG4gIHB1YmxpYyBkYXRlcGlja2VyVHJpZ2dlckVsUmVmPzogRWxlbWVudFJlZjxIVE1MQnV0dG9uRWxlbWVudD5cblxuICBvbkNoYW5nZUZuPzogKHZhbHVlOiBhbnkpID0+IHZvaWRcbiAgb25Ub3VjaGVkRm4/OiBhbnlcblxuICBkcm9wZG93bj86IEFic3RyYWN0RHJvcGRvd25cbiAgaGFuZGxlcj86IERyb3Bkb3duSGFuZGxlclxuICB0b2dnbGVyPzogUGFydGlhbDxFbGVtZW50UHJvcHM+XG4gIGxpc3Rib3g/OiBQYXJ0aWFsPEVsZW1lbnRQcm9wcz5cbiAgX3ZhbHVlOiBzdHJpbmcgfCBEYXRlIHwgdW5kZWZpbmVkXG4gIHByaXZhdGUgX21vbnRoczogQXJyYXk8RHJvcGRvd25PcHRpb24+ID0gbW9udGhzKHt9KVxuICB5ZWFycz86IEFycmF5PERyb3Bkb3duT3B0aW9uPlxuICBwcml2YXRlIF9vcHRpb25zPzogRGF0ZXBpY2tlck9wdGlvbnNcblxuICBkcDogRGF0ZXBpY2tlciB8IHVuZGVmaW5lZFxuICBwcml2YXRlIF9kYXRhOiBEYXRlcGlja2VyRGF0YSB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlXG5cbiAgICAvLyBXaGVuIGJpbmRpbmcgdXNpbmcgbmdNb2RlbCB3ZSBuZWVkIHRvIHNldCBpbml0aWFsIHNlbGVjdCBkYXRlXG4gICAgLy8gb25jZSB3ZSBnZXQgaW5pdGlhbCB2YWx1ZSBhcyBpdCdzIG5vdCBhdmFpbGFibGUgd2hlbiBjb21wb25lbnQgaXMgY3JlYXRlZFxuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmRwICYmICF0aGlzLmRhdGE/LnNlbGVjdGVkRGF0ZSkge1xuICAgICAgdGhpcy5kcC5zZWxlY3QodmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm5cbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZEZuID0gZm5cbiAgfVxuXG4gIGdldCBkYXRhKCk6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVxuICB9XG5cbiAgc2V0IGRhdGEodmFsdWU6IERhdGVwaWNrZXJEYXRhIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlXG4gIH1cblxuICBvbkRhdGVDaGFuZ2UodmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IG5ld0RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSlcbiAgICAvLyBPbmx5IHBhc3MgdmFsaWQgZGF0ZSB0byBkYXRlIHBpY2tlclxuICAgIGlmICghaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICB0aGlzLmRwPy5zZWxlY3QodmFsdWUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSlcbiAgICAgIHRoaXMub25DaGFuZ2VGbiAmJiB0aGlzLm9uQ2hhbmdlRm4odmFsdWUpXG4gICAgfVxuICB9XG5cbiAgbGlzdGVuZXIgPSAoXG4gICAgZGF0YTogRGF0ZXBpY2tlckRhdGEgfCB1bmRlZmluZWQsXG4gICAgc3RhdGU6IERhdGVwaWNrZXJTdGF0ZSB8IHVuZGVmaW5lZFxuICApID0+IHtcbiAgICBpZiAodGhpcy5kcCAmJiBzdGF0ZSkge1xuICAgICAgdGhpcy5kcC5zdGF0ZSA9IHsgLi4uc3RhdGUgfVxuICAgICAgdGhpcy55ZWFycyA9IHllYXJzKHtcbiAgICAgICAgZnJvbTogdGhpcy5kcC5zdGF0ZT8ubWluRGF0ZT8uZ2V0RnVsbFllYXIoKSxcbiAgICAgICAgdG86IHRoaXMuZHAuc3RhdGU/Lm1heERhdGU/LmdldEZ1bGxZZWFyKCksXG4gICAgICB9KVxuICAgIH1cblxuICAgIHRoaXMub25Ub3VjaGVkRm4gJiYgdGhpcy5vblRvdWNoZWRGbigpXG5cbiAgICBpZiAoZGF0YSkge1xuICAgICAgLy8gb25seSBlbWl0IGNoYW5nZSBldmVudCBpZiBkYXRlIGhhcyBjaGFuZ2VkXG4gICAgICBpZiAodGhpcy5kYXRhPy5zZWxlY3RlZERhdGUgIT09IGRhdGEuc2VsZWN0ZWREYXRlKSB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgICAgdGhpcy5vbkNoYW5nZUZuICYmIHRoaXMub25DaGFuZ2VGbihkYXRhLnNlbGVjdGVkRGF0ZSlcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YSA9IGRhdGFcbiAgICB9XG5cbiAgICBpZiAoZGF0YSB8fCBzdGF0ZSkge1xuICAgICAgdGhpcy5fY2RyLm1hcmtGb3JDaGVjaygpXG4gICAgfVxuICB9XG4gIHRyYWNrV2VlayhpbmRleDogYW55LCB3ZWVrOiBhbnkpIHtcbiAgICByZXR1cm4gd2Vla1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vIGluaXRpYWxpemUgZGF0ZXBpY2tlclxuICAgIGlmIChcbiAgICAgIHRoaXMuZGF0ZXBpY2tlckVsUmVmICYmXG4gICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlSW5wdXRFbFJlZiAmJlxuICAgICAgdGhpcy5kYXRlcGlja2VyVHJpZ2dlckVsUmVmICYmXG4gICAgICAhdGhpcy5kcFxuICAgICkge1xuICAgICAgdGhpcy5kcCA9IGNyZWF0ZURhdGVwaWNrZXIoXG4gICAgICAgIHRoaXMubGlzdGVuZXIsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAgICAgc2VsZWN0ZWREYXRlOiB0aGlzLnZhbHVlLFxuICAgICAgICB9LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVwaWNrZXJEaWFsb2dFbFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICB0aGlzLmRhdGVJbnB1dEVsUmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgIHRoaXMuZGF0ZXBpY2tlclRyaWdnZXJFbFJlZi5uYXRpdmVFbGVtZW50XG4gICAgICApXG4gICAgICB0aGlzLl9jZHIuZGV0ZWN0Q2hhbmdlcygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93ICdNaXNzaW5nIG9uZSBvciBtb3JlIGVsZW1lbnRzLi4uJ1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGF0ZVZhbGlkYXRvcihkYXRlcz86IHsgbWluPzogRGF0ZTsgbWF4PzogRGF0ZSB9KTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cbiAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUodmFsdWUpXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSAhaXNOYU4obmV3RGF0ZS5nZXRUaW1lKCkpXG4gICAgaWYgKCFpc1ZhbGlkRGF0ZSkge1xuICAgICAgcmV0dXJuIHsgdmFsaWREYXRlOiB0cnVlIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZE1pbkRhdGUgPSBkYXRlcz8ubWluID8gbmV3RGF0ZSA+PSBzdGFydE9mRGF5KGRhdGVzLm1pbikgOiB0cnVlXG4gICAgY29uc3QgdmFsaWRNYXhEYXRlID0gZGF0ZXM/Lm1heCA/IG5ld0RhdGUgPD0gZW5kT2ZEYXkoZGF0ZXMubWF4KSA6IHRydWVcblxuICAgIGlmICghdmFsaWRNaW5EYXRlICYmIGRhdGVzPy5taW4pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbGlkRGF0ZToge1xuICAgICAgICAgIG1pbkRhdGU6IHN0YXJ0T2ZEYXkoZGF0ZXMubWluKSxcbiAgICAgICAgICBhY3R1YWxEYXRlOiBuZXdEYXRlLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIXZhbGlkTWF4RGF0ZSAmJiBkYXRlcz8ubWF4KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWxpZERhdGU6IHtcbiAgICAgICAgICBtYXhEYXRlOiBlbmRPZkRheShkYXRlcy5tYXgpLFxuICAgICAgICAgIGFjdHVhbERhdGU6IG5ld0RhdGUsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgPGxhYmVsICpuZ0lmPVwibGFiZWxcIiBbZm9yXT1cImlkXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJncm91cFwiXG4gICAgI2RhdGVwaWNrZXJFbFJlZlxuICAgIFtjbGFzcy5pcy12YWxpZF09XCJpc1ZhbGlkXCJcbiAgICBbY2xhc3MuaXMtaW52YWxpZF09XCJpc1ZhbGlkID09PSBmYWxzZVwiXG4gID5cbiAgICA8aW5wdXRcbiAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiXG4gICAgICAgIGZvcm1JbmZvPy5pbm5lclRleHQgJiYgZm9ybUluZm8uaW5uZXJUZXh0Lmxlbmd0aCA+IDBcbiAgICAgICAgICA/IGlkICsgJ19pbmZvJ1xuICAgICAgICAgIDogbnVsbFxuICAgICAgXCJcbiAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAjZGF0ZUlucHV0RWxSZWZcbiAgICAgIFt2YWx1ZV09XCJkYXRhPy5mb3JtYXR0ZWRTZWxlY3RlZERhdGUgfHwgJydcIlxuICAgICAgKGNoYW5nZSk9XCJvbkRhdGVDaGFuZ2UoZGF0ZUlucHV0RWxSZWYudmFsdWUpXCJcbiAgICAvPlxuICAgIDxidXR0b25cbiAgICAgICNkYXRlcGlja2VyVHJpZ2dlckVsUmVmXG4gICAgICAoY2xpY2spPVwiZHA/LnRvZ2dsZSgpXCJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJwcmltYXJ5XCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cInNnLWljb24gc2ctaWNvbi1jYWxlbmRhclwiPlNlbGVjdCBkYXRlPC9pPlxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJmb3JtLWluZm9cIiAjZm9ybUluZm8gW2F0dHIuaWRdPVwiaWQgKyAnX2luZm8nXCJcbiAgICA+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW2RhdGEtZm9ybS1pbmZvXVwiPjwvbmctY29udGVudFxuICA+PC9zcGFuPlxuPC9kaXY+XG48IS0tIFRPRE86IGdldCBvciBzZXQgYXR0cmlidXRlcyBmcm9tIHdpdGhpbiBkYXRlcGlja2VyIGluc3RhbmNlIChkcCkgLS0+XG48ZGl2XG4gICNkYXRlcGlja2VyRGlhbG9nRWxSZWZcbiAgY2xhc3M9XCJwb3BvdmVyIHBvcG92ZXItZGF0ZXBpY2tlclwiXG4gIFtjbGFzcy5hY3RpdmVdPVwiZHA/LnN0YXRlPy5pc0FjdGl2ZVwiXG4gIHJvbGU9XCJkaWFsb2dcIlxuICBhcmlhLW1vZGFsPVwidHJ1ZVwiXG4gIGFyaWEtbGFiZWw9XCJDaG9vc2UgRGF0ZVwiXG4+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiZHA/LmNsb3NlKClcIj5DbG9zZTwvYnV0dG9uPlxuICA8ZGl2IGNsYXNzPVwic2ctZGF0ZVwiPlxuICAgIDxoZWFkZXI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZHA/LnN1YigxLCAnbW9udGhzJylcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tcHJldmlvdXNcIj5QcmV2aW91cyBtb250aDwvaT5cbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPG5nZy1kcm9wZG93blxuICAgICAgICBbb3B0aW9uc109XCJtb250aHNcIlxuICAgICAgICBkaXNwbGF5PVwia2V5XCJcbiAgICAgICAgdGV4dD1cIlNlbGVjdFwiXG4gICAgICAgIFt2YWx1ZV09XCJkYXRhPy5tb250aFwiXG4gICAgICAgICh2YWx1ZUNoYW5nZSk9XCJkcD8uc2V0TW9udGgoJGV2ZW50KVwiXG4gICAgICA+PC9uZ2ctZHJvcGRvd24+XG4gICAgICA8bmdnLWRyb3Bkb3duXG4gICAgICAgICpuZ0lmPVwieWVhcnNcIlxuICAgICAgICBbb3B0aW9uc109XCJ5ZWFyc1wiXG4gICAgICAgIGRpc3BsYXk9XCJrZXlcIlxuICAgICAgICB0ZXh0PVwiU2VsZWN0XCJcbiAgICAgICAgW3ZhbHVlXT1cImRhdGE/LnllYXJcIlxuICAgICAgICAodmFsdWVDaGFuZ2UpPVwiZHA/LnNldFllYXIoJGV2ZW50KVwiXG4gICAgICA+PC9uZ2ctZHJvcGRvd24+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImxpbmtcIiAoY2xpY2spPVwiZHA/LmFkZCgxLCAnbW9udGhzJylcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJzZy1pY29uIHNnLWljb24tbmV4dFwiPk5leHQgbW9udGg8L2k+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2hlYWRlcj5cbiAgICA8bWFpbj5cbiAgICAgIDx0YWJsZSByb2xlPVwiZ3JpZFwiPlxuICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoXG4gICAgICAgICAgICAgIHNjb3BlPVwiY29sXCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGhlYWRlciBvZiBkYXRhPy5jYWxlbmRhcj8uaGVhZGVyc1wiXG4gICAgICAgICAgICAgIFthYmJyXT1cImhlYWRlci5hYmJyXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNnLXdlZWstaGVhZGVyXT1cImhlYWRlci50eXBlID09PSAnd2VlaydcIlxuICAgICAgICAgICAgICBbY2xhc3Muc2ctZGF5LWhlYWRlcl09XCJoZWFkZXIudHlwZSA9PT0gJ2RheSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBoZWFkZXIuZGlzcGxheVRleHQgfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC90aGVhZD5cbiAgICAgICAgPHRib2R5PlxuICAgICAgICAgIDx0clxuICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgIGxldCB3ZWVrIG9mIGRhdGE/LmNhbGVuZGFyPy5jYWxlbmRhckdyaWQ7XG4gICAgICAgICAgICAgIHRyYWNrQnk6IHRyYWNrV2VlaztcbiAgICAgICAgICAgICAgbGV0IGkgPSBpbmRleFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGhcbiAgICAgICAgICAgICAgKm5nSWY9XCJkYXRhPy5jYWxlbmRhcj8ud2Vla051bWJlcnMgYXMgd2Vla051bWJlcnNcIlxuICAgICAgICAgICAgICBjbGFzcz1cInNnLXdlZWstbnVtYmVyXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgd2Vla051bWJlcnNbaV0gfX1cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGRcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB3ZWVrXCJcbiAgICAgICAgICAgICAgW2F0dHIuZGF0YS1kYXRlXT1cImRheS5mb3JtYXR0ZWREYXRlXCJcbiAgICAgICAgICAgICAgW2F0dHIucm9sZV09XCJkYXkuc2VsZWN0ZWQgPyAnZ3JpZGNlbGwnIDogbnVsbFwiXG4gICAgICAgICAgICAgIFthdHRyLmFyaWEtc2VsZWN0ZWRdPVwiXG4gICAgICAgICAgICAgICAgZGF5LnNlbGVjdGVkICYmICFkYXRhPy5oaWdobGlnaHRlZERhdGUgPyB0cnVlIDogbnVsbFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiZGF5LmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLnNnLWRhdGUtdG9kYXldPVwiZGF5LnRvZGF5XCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cImRheS50b2RheSA/ICdUb2RheScgOiAnJ1wiXG4gICAgICAgICAgICAgIFt0YWJJbmRleF09XCJcbiAgICAgICAgICAgICAgICBkYXkuaGlnaGxpZ2h0ZWQgfHxcbiAgICAgICAgICAgICAgICAoZGF5LnNlbGVjdGVkICYmICFkYXRhPy5oaWdobGlnaHRlZERhdGUpIHx8XG4gICAgICAgICAgICAgICAgKGRheS50b2RheSAmJiAhZGF0YT8uaGlnaGxpZ2h0ZWREYXRlICYmICFkYXRhPy5zZWxlY3RlZERhdGUpXG4gICAgICAgICAgICAgICAgICA/IDBcbiAgICAgICAgICAgICAgICAgIDogLTFcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRheS5jdXJyZW50TW9udGggJiYgZHA/LnNlbGVjdChkYXkuZGF0ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBkYXkuZGF5IH19XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvdGJvZHk+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbWFpbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|