@natec/mef-dev-ui-kit 16.2.48 → 16.3.49
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/markup-kit/card/card/card.component.mjs +4 -4
- package/esm2022/lib/markup-kit/card/card-long/card-long.component.mjs +4 -4
- package/esm2022/lib/markup-kit/card/card-simple/card-simple.component.mjs +4 -4
- package/esm2022/lib/markup-kit/card/card.module.mjs +5 -5
- package/esm2022/lib/markup-kit/collapse/collapse/collapse.component.mjs +4 -4
- package/esm2022/lib/markup-kit/collapse/collapse-set/collapse-set.component.mjs +4 -4
- package/esm2022/lib/markup-kit/collapse/collapse.module.mjs +5 -5
- package/esm2022/lib/markup-kit/executors/mefdev-executor-page/mefdev-executor-page.component.mjs +4 -4
- package/esm2022/lib/markup-kit/executors/stage/stage.component.mjs +4 -4
- package/esm2022/lib/markup-kit/executors/step-executor/step-executor.component.mjs +4 -4
- package/esm2022/lib/markup-kit/executors/step-executor.module.mjs +5 -5
- package/esm2022/lib/markup-kit/modals/fill/fill.component.mjs +4 -4
- package/esm2022/lib/markup-kit/modals/markup-kit.module.mjs +5 -5
- package/esm2022/lib/markup-kit/modals/right-filter/right-filter.component.mjs +4 -4
- package/esm2022/lib/markup-kit/modals/slide-right/slide-right.component.mjs +4 -4
- package/esm2022/lib/markup-kit/modals/slide-up/slide-up.component.mjs +4 -4
- package/esm2022/lib/markup-kit/page-layouts/central-page/central-page.component.mjs +4 -4
- package/esm2022/lib/markup-kit/page-layouts/central-page-row/central-page-row.component.mjs +4 -4
- package/esm2022/lib/markup-kit/page-layouts/manage-page/manage-page.component.mjs +4 -4
- package/esm2022/lib/markup-kit/page-layouts/page-layouts.module.mjs +5 -5
- package/esm2022/lib/markup-kit/page-layouts/profile/profile.component.mjs +4 -4
- package/esm2022/lib/markup-kit/page-layouts/table-page/table-page.component.mjs +4 -4
- package/esm2022/lib/markup-kit/slider/slider/slider.component.mjs +5 -5
- package/esm2022/lib/markup-kit/slider/slider.module.mjs +5 -5
- package/esm2022/lib/markup-kit/utils/datepicker/datepicker/datepicker.component.mjs +4 -4
- package/esm2022/lib/markup-kit/utils/datepicker/datepicker.module.mjs +5 -5
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field-container/filtered-field-container.component.mjs +4 -4
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field-item/filtered-field-item.component.mjs +4 -4
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field.module.mjs +5 -5
- package/esm2022/lib/markup-kit/utils/filtered-field/filtered-field.service.mjs +4 -4
- package/esm2022/lib/markup-kit/utils/help-block/help-block.component.mjs +4 -4
- package/esm2022/lib/markup-kit/utils/help-block/hepl-block.module.mjs +5 -5
- package/esm2022/lib/pg-components/card/card.components.mjs +4 -4
- package/esm2022/lib/pg-components/card/card.module.mjs +5 -5
- package/esm2022/lib/pg-components/progress/progress.component.mjs +4 -4
- package/esm2022/lib/pg-components/progress/progress.config.mjs +4 -4
- package/esm2022/lib/pg-components/progress/progress.module.mjs +5 -5
- package/esm2022/lib/pg-components/select/option.component.mjs +4 -4
- package/esm2022/lib/pg-components/select/option.pipe.mjs +4 -4
- package/esm2022/lib/pg-components/select/select.component.mjs +4 -4
- package/esm2022/lib/pg-components/select/select.module.mjs +5 -5
- package/esm2022/lib/pg-components/spec-flow-test/spec-flow-test/spec-flow-test.component.mjs +4 -4
- package/esm2022/lib/pg-components/spec-flow-test/spec-flow-test.module.mjs +5 -5
- package/esm2022/lib/pg-components/switch/switch.component.mjs +4 -4
- package/esm2022/lib/pg-components/switch/switch.module.mjs +5 -5
- package/esm2022/lib/pg-components/tabs/tab-body.component.mjs +4 -4
- package/esm2022/lib/pg-components/tabs/tab-label.directive.mjs +4 -4
- package/esm2022/lib/pg-components/tabs/tab.component.mjs +4 -4
- package/esm2022/lib/pg-components/tabs/tabs-ink-bar.directive.mjs +4 -4
- package/esm2022/lib/pg-components/tabs/tabs-nav.component.mjs +4 -4
- package/esm2022/lib/pg-components/tabs/tabs.module.mjs +5 -5
- package/esm2022/lib/pg-components/tabs/tabset.component.mjs +4 -4
- package/fesm2022/natec-mef-dev-ui-kit.mjs +172 -172
- package/fesm2022/natec-mef-dev-ui-kit.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -577,10 +577,10 @@ export class DatepickerComponent {
|
|
|
577
577
|
const today = new Date();
|
|
578
578
|
return date.toDateString() === today.toDateString();
|
|
579
579
|
}
|
|
580
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
581
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
580
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, deps: [{ token: i1.DatePipe }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
581
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DatepickerComponent, selector: "mefdev-datepicker", inputs: { labelContentText: "labelContentText", lang: "lang", dateFormat: "dateFormat", yearsRange: ["range", "yearsRange"], disabled: "disabled", topOffset: "topOffset", leftOffset: "leftOffset" }, outputs: { dateChanged: "dateChanged" }, host: { listeners: { "document:click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"datepicker-container\" [class.disabled]=\"disabled\">\r\n\r\n <!-- Input, save & edit buttons -->\r\n <div class=\"input-container form-group\">\r\n <label *ngIf=\"labelContentText\" class=\"form-label\"> {{ labelContentText }} </label>\r\n <input\r\n [ngClass]=\"{ 'calendarNotOpened': !isCalendarOpen }\"\r\n [ngStyle]=\"{ 'border-color': isUserDateValid ? '' : 'red' }\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n (input)=\"onDateInput($event)\"\r\n (click)=\"isCalendarOpen = true\"\r\n [value]=\"formattedDate\"\r\n [readOnly]=\"!isCalendarOpen\"\r\n >\r\n </div>\r\n\r\n <!-- Calendar(Dropdowns, dates) -->\r\n <div *ngIf=\"isCalendarOpen\" class=\"calendar\" #calendarContainer\r\n [style.top]=\"topOffset\"\r\n [style.left]=\"leftOffset\">\r\n <div class=\"calendar-header\">\r\n <div class=\"monthButtonContainer\">\r\n <!-- Month dropdown -->\r\n <ng-container *ngIf=\"isMonthDropdownOpen; else monthLabel\">\r\n <mefdev-select\r\n class=\"monthDropdown\"\r\n [(ngModel)]=\"selectedDateMonth\"\r\n (ngModelChange)=\"onMonthChange()\"\r\n [PlaceHolder]=\"'month'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let month of months; let i = index\"\r\n [Value]=\"i\"\r\n [Label]=\"month\"\r\n style=\"z-index: 1\"\r\n >{{ month }}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #monthLabel>\r\n <span (click)=\"toggleMonthDropdown($event)\"></span>\r\n </ng-template>\r\n\r\n <!-- Year dropdown -->\r\n <ng-container *ngIf=\"isYearDropdownOpen; else yearLabel\">\r\n <mefdev-select\r\n class=\"yearDropdown\"\r\n [(ngModel)]=\"selectedDateYear\"\r\n (ngModelChange)=\"onYearChange()\"\r\n [PlaceHolder]=\"'year'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let year of years\"\r\n [Label]=\"year\"\r\n [Value]=\"year\"\r\n >{{year}}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #yearLabel>\r\n <span (click)=\"toggleYearDropdown($event)\">{{ selectedDateYear }}</span>\r\n </ng-template>\r\n </div>\r\n <!-- Calendar exit button -->\r\n <div>\r\n <i class=\"fa fa-times toggleCalendarButton\" (click)=\"isCalendarOpen = false\" aria-hidden=\"true\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n <table>\r\n <tr>\r\n <th class=\"text-center\" *ngFor=\"let weekday of weekdays\">{{ weekday }}</th>\r\n </tr>\r\n <tr *ngFor=\"let week of calendarDays\">\r\n <td *ngFor=\"let dayData of week\"\r\n (click)=\"selectDate(dayData.date)\"\r\n [ngClass]=\"{ 'selected': isDateSelected(dayData.date), 'prev-month': !dayData.isCurrentMonth }\">\r\n\r\n <span class=\"date\" [class.prev-month]=\"!dayData.isCurrentMonth\">\r\n {{ dayData.date.getDate() }}\r\n </span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".color-black{color:#000!important}.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.color-dark-link{color:#50c0ff!important}.b-color-black{background-color:#000!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.b-color-dark-link{background-color:#50c0ff!important}.datepicker-container{position:relative;display:inline-block}.datepicker-container.disabled{pointer-events:none;opacity:.8}.input-container{position:relative;display:inline-block}.input-container input[type=text]{padding:5px 5px 5px 15px;border:1px solid #929292}.input-container .calendarNotOpened{cursor:pointer}.calendar{position:absolute;border:1px solid #929292;background-color:#eaeaea;z-index:1}.calendar .calendar-header{background-color:#fff;text-align:center;justify-content:space-between;display:flex;padding:5px 0}.calendar .calendar-header i.fa{display:flex;justify-content:center;align-items:center;width:30px;height:30px;font-size:20px;border-radius:50%;cursor:pointer;background-color:transparent;border:none;color:#cf0106}.calendar .calendar-header .monthButtonContainer{padding-left:10px;height:45px;min-width:140px;display:flex;align-items:center}.calendar .calendar-header .monthDropdown,.calendar .calendar-header .yearDropdown{height:45px;width:105px;cursor:pointer;display:inline-block;padding:6px 5px;border:1px solid #EAEAEA;border-radius:4px;background-color:#fff;color:#4d4d4d}.calendar .calendar-header .monthDropdown{margin:0 8px 0 0;width:130px}.calendar .calendar-header .monthDropdown:hover,.calendar .calendar-header .yearDropdown:hover{border-color:#f3f3f3}.calendar .calendar-body{padding:5px}.calendar .calendar-body table{width:100%}.calendar .calendar-body td{padding:10px;position:relative}.calendar .calendar-body td.selected{position:relative;color:#fff}.calendar .calendar-body td.selected:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:20%;background-color:#cf0106;z-index:-1;width:30px;height:30px;color:#fff;border:1px solid #373737}.calendar .calendar-body td:hover{color:#fff;font-weight:700;background-color:#929292;border-radius:20%;cursor:pointer}.calendar .calendar-body .date{display:flex;justify-content:center}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.MefDevOptionComponent, selector: "mefdev-option", inputs: ["Value", "Label", "Disabled"] }, { kind: "component", type: i4.MefDevSelectComponent, selector: "mefdev-select", inputs: ["Filter", "MaxMultiple", "FirstDefault", "AllowClear", "KeepUnListOptions", "Mode", "Multiple", "PlaceHolder", "NotFoundContent", "Size", "ShowSearch", "Tags", "Disabled", "Open"], outputs: ["SearchChange", "change", "OpenChange", "ScrollToBottom"] }] });
|
|
582
582
|
}
|
|
583
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
583
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DatepickerComponent, decorators: [{
|
|
584
584
|
type: Component,
|
|
585
585
|
args: [{ selector: 'mefdev-datepicker', template: "<div class=\"datepicker-container\" [class.disabled]=\"disabled\">\r\n\r\n <!-- Input, save & edit buttons -->\r\n <div class=\"input-container form-group\">\r\n <label *ngIf=\"labelContentText\" class=\"form-label\"> {{ labelContentText }} </label>\r\n <input\r\n [ngClass]=\"{ 'calendarNotOpened': !isCalendarOpen }\"\r\n [ngStyle]=\"{ 'border-color': isUserDateValid ? '' : 'red' }\"\r\n type=\"text\"\r\n class=\"form-control\"\r\n (input)=\"onDateInput($event)\"\r\n (click)=\"isCalendarOpen = true\"\r\n [value]=\"formattedDate\"\r\n [readOnly]=\"!isCalendarOpen\"\r\n >\r\n </div>\r\n\r\n <!-- Calendar(Dropdowns, dates) -->\r\n <div *ngIf=\"isCalendarOpen\" class=\"calendar\" #calendarContainer\r\n [style.top]=\"topOffset\"\r\n [style.left]=\"leftOffset\">\r\n <div class=\"calendar-header\">\r\n <div class=\"monthButtonContainer\">\r\n <!-- Month dropdown -->\r\n <ng-container *ngIf=\"isMonthDropdownOpen; else monthLabel\">\r\n <mefdev-select\r\n class=\"monthDropdown\"\r\n [(ngModel)]=\"selectedDateMonth\"\r\n (ngModelChange)=\"onMonthChange()\"\r\n [PlaceHolder]=\"'month'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let month of months; let i = index\"\r\n [Value]=\"i\"\r\n [Label]=\"month\"\r\n style=\"z-index: 1\"\r\n >{{ month }}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #monthLabel>\r\n <span (click)=\"toggleMonthDropdown($event)\"></span>\r\n </ng-template>\r\n\r\n <!-- Year dropdown -->\r\n <ng-container *ngIf=\"isYearDropdownOpen; else yearLabel\">\r\n <mefdev-select\r\n class=\"yearDropdown\"\r\n [(ngModel)]=\"selectedDateYear\"\r\n (ngModelChange)=\"onYearChange()\"\r\n [PlaceHolder]=\"'year'\"\r\n >\r\n <mefdev-option\r\n *ngFor=\"let year of years\"\r\n [Label]=\"year\"\r\n [Value]=\"year\"\r\n >{{year}}</mefdev-option>\r\n </mefdev-select>\r\n </ng-container>\r\n <ng-template #yearLabel>\r\n <span (click)=\"toggleYearDropdown($event)\">{{ selectedDateYear }}</span>\r\n </ng-template>\r\n </div>\r\n <!-- Calendar exit button -->\r\n <div>\r\n <i class=\"fa fa-times toggleCalendarButton\" (click)=\"isCalendarOpen = false\" aria-hidden=\"true\"></i>\r\n </div>\r\n </div>\r\n\r\n <div class=\"calendar-body\">\r\n <table>\r\n <tr>\r\n <th class=\"text-center\" *ngFor=\"let weekday of weekdays\">{{ weekday }}</th>\r\n </tr>\r\n <tr *ngFor=\"let week of calendarDays\">\r\n <td *ngFor=\"let dayData of week\"\r\n (click)=\"selectDate(dayData.date)\"\r\n [ngClass]=\"{ 'selected': isDateSelected(dayData.date), 'prev-month': !dayData.isCurrentMonth }\">\r\n\r\n <span class=\"date\" [class.prev-month]=\"!dayData.isCurrentMonth\">\r\n {{ dayData.date.getDate() }}\r\n </span>\r\n </td>\r\n </tr>\r\n </table>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".color-black{color:#000!important}.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.color-dark-link{color:#50c0ff!important}.b-color-black{background-color:#000!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.b-color-dark-link{background-color:#50c0ff!important}.datepicker-container{position:relative;display:inline-block}.datepicker-container.disabled{pointer-events:none;opacity:.8}.input-container{position:relative;display:inline-block}.input-container input[type=text]{padding:5px 5px 5px 15px;border:1px solid #929292}.input-container .calendarNotOpened{cursor:pointer}.calendar{position:absolute;border:1px solid #929292;background-color:#eaeaea;z-index:1}.calendar .calendar-header{background-color:#fff;text-align:center;justify-content:space-between;display:flex;padding:5px 0}.calendar .calendar-header i.fa{display:flex;justify-content:center;align-items:center;width:30px;height:30px;font-size:20px;border-radius:50%;cursor:pointer;background-color:transparent;border:none;color:#cf0106}.calendar .calendar-header .monthButtonContainer{padding-left:10px;height:45px;min-width:140px;display:flex;align-items:center}.calendar .calendar-header .monthDropdown,.calendar .calendar-header .yearDropdown{height:45px;width:105px;cursor:pointer;display:inline-block;padding:6px 5px;border:1px solid #EAEAEA;border-radius:4px;background-color:#fff;color:#4d4d4d}.calendar .calendar-header .monthDropdown{margin:0 8px 0 0;width:130px}.calendar .calendar-header .monthDropdown:hover,.calendar .calendar-header .yearDropdown:hover{border-color:#f3f3f3}.calendar .calendar-body{padding:5px}.calendar .calendar-body table{width:100%}.calendar .calendar-body td{padding:10px;position:relative}.calendar .calendar-body td.selected{position:relative;color:#fff}.calendar .calendar-body td.selected:before{content:\"\";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);border-radius:20%;background-color:#cf0106;z-index:-1;width:30px;height:30px;color:#fff;border:1px solid #373737}.calendar .calendar-body td:hover{color:#fff;font-weight:700;background-color:#929292;border-radius:20%;cursor:pointer}.calendar .calendar-body .date{display:flex;justify-content:center}\n"] }]
|
|
586
586
|
}], ctorParameters: function () { return [{ type: i1.DatePipe }, { type: i0.ElementRef }]; }, propDecorators: { labelContentText: [{
|
|
@@ -604,4 +604,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
604
604
|
type: HostListener,
|
|
605
605
|
args: ['document:click', ['$event']]
|
|
606
606
|
}] } });
|
|
607
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBR3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBUUgsTUFBTSxPQUFPLG1CQUFtQjtJQThMVjtJQUE0QjtJQTVMaEQ7OztPQUdHO0lBQ0gsZUFBZSxHQUFZLElBQUksQ0FBQztJQUVoQzs7O09BR0c7SUFDSCxjQUFjLEdBQVksS0FBSyxDQUFDO0lBRWhDOzs7T0FHRztJQUNILFlBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRWhDOzs7T0FHRztJQUNILGFBQWEsQ0FBTztJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBRXhCOzs7T0FHRztJQUNILG1CQUFtQixHQUFZLElBQUksQ0FBQztJQUVwQzs7O09BR0c7SUFDSCxrQkFBa0IsR0FBWSxJQUFJLENBQUM7SUFFbkM7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV6RDs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTNEOzs7T0FHRztJQUNILEtBQUssQ0FBVTtJQUVmOzs7Ozs7O09BT0c7SUFDTSxnQkFBZ0IsQ0FBUztJQUVsQzs7Ozs7OztPQU9HO0lBQ00sSUFBSSxHQUFXLElBQUksQ0FBQztJQUU3Qjs7Ozs7OztPQU9HO0lBQ00sVUFBVSxHQUFXLGlCQUFpQixDQUFDO0lBRWhEOzs7Ozs7O09BT0c7SUFDYSxVQUFVLEdBQXFDLEVBQUMsU0FBUyxFQUFDLElBQUksRUFBRSxNQUFNLEVBQUMsR0FBRyxFQUFDLENBQUM7SUFFNUY7Ozs7Ozs7T0FPRztJQUNNLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFbkM7Ozs7Ozs7T0FPRztJQUNNLFNBQVMsR0FBVyxJQUFJLENBQUM7SUFFbEM7Ozs7Ozs7T0FPRztJQUNNLFVBQVUsR0FBVyxJQUFJLENBQUMsQ0FBQyxlQUFlO0lBRW5EOzs7Ozs7O09BT0c7SUFDTyxXQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7SUFFckU7Ozs7O09BS0c7SUFDSyxVQUFVLEdBQVcsb0RBQW9ELENBQUM7SUFFbEY7OztPQUdHO0lBQ0gsU0FBUyxHQUFXLEVBQUUsQ0FBQztJQUV2Qjs7Ozs7OztPQU9HO0lBRUgsT0FBTyxDQUFDLEtBQWlCO1FBQ3ZCLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFxQixDQUFDO1FBQ2xELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDakcsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNsRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFMUUsSUFBSSxtQkFBbUIsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDakUsSUFBSSxRQUFRLElBQUksUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7Z0JBQUUsT0FBTztZQUN6RCxJQUFJLElBQUksQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO2dCQUFFLE9BQU87WUFDMUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQztnQkFBRSxPQUFPO1lBQ3pFLElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRTtnQkFDdEgsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7YUFDL0I7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQW9CLFFBQWtCLEVBQVUsVUFBc0I7UUFBbEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDcEUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVc7UUFDVCxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSyxlQUFlO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0csQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFDNUYsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLFlBQVksQ0FBRyxPQUEyQixFQUFHLFNBQTJCLE1BQU07UUFDcEYsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxFQUFLLEtBQUssRUFBRSxNQUFNLEVBQUcsQ0FBQyxDQUFDO1FBQzFFLE1BQU0sWUFBWSxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUMxRixPQUFPLFNBQVMsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNLLGNBQWMsQ0FBQyxPQUEyQixFQUFFLFNBQTJCLE9BQU87UUFDcEYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFvQixFQUFFLEVBQUU7WUFDOUMsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLGNBQWM7UUFDcEIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUNyQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSSxXQUFXLENBQUMsS0FBVTtRQUMzQixNQUFNLFNBQVMsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUM3QyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDNUIsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLG1CQUFtQixDQUFDLEtBQVk7UUFDdEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3ZELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLGtCQUFrQixDQUFDLEtBQVk7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLGFBQWE7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLElBQVU7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFVBQVU7UUFDaEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssa0JBQWtCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEYsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ssZ0JBQWdCO1FBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDekYsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsSUFBWSxZQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSyxvQkFBb0IsQ0FBQyxJQUFVO1FBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDVCxPQUFPLEVBQUUsQ0FBQztTQUNYO1FBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNsRyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQzthQUFNO1lBQ0wsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDNUM7SUFDSCxDQUFDO0lBR0Q7Ozs7Ozs7T0FPRztJQUNLLGdCQUFnQjtRQUN0QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ25GLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUdEOzs7OztPQUtHO0lBQ0ssV0FBVyxDQUFDLElBQVksRUFBRSxLQUFhO1FBQzdDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssMkJBQTJCO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxNQUFNLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM5QyxNQUFNLFFBQVEsR0FBRyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUM1RCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7Z0JBQzlDLE1BQU0sT0FBTyxHQUFHO29CQUNkLElBQUksRUFBRSxHQUFHO29CQUNULGNBQWMsRUFBRSxVQUFVLElBQUksQ0FBQyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7aUJBQy9FLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDbkIsVUFBVSxFQUFFLENBQUM7YUFDZDtZQUNELFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekI7UUFDRCxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSyxjQUFjLENBQUMsSUFBVTtRQUMvQixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2xFLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSyxXQUFXLENBQUMsU0FBaUI7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQ3BDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDcEUsT0FBTyxLQUFLLENBQUE7U0FDYjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDdkQsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLFdBQVcsQ0FBQyxJQUFVO1FBQzVCLE1BQU0sS0FBSyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLEtBQUssS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7dUdBemxCVSxtQkFBbUI7MkZBQW5CLG1CQUFtQiw0WEN2Q2hDLHl5R0F1RkE7OzJGRGhEYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsbUJBQW1CO3dIQTJFcEIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQVVHLElBQUk7c0JBQVosS0FBSztnQkFVRyxVQUFVO3NCQUFsQixLQUFLO2dCQVVVLFVBQVU7c0JBQXpCLEtBQUs7dUJBQUMsT0FBTztnQkFVTCxRQUFRO3NCQUFoQixLQUFLO2dCQVVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBVUcsVUFBVTtzQkFBbEIsS0FBSztnQkFVSSxXQUFXO3NCQUFwQixNQUFNO2dCQXlCUCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBEYXRlcGlja2VyIENvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGRhdGVzLlxyXG4gKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgdXNlcnMgdG8gcGljayBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICogSXQgc3VwcG9ydHMgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3VjaCBhcyBsYW5ndWFnZSwgZGF0ZSBmb3JtYXQsIGFuZCBkYXRlIHJhbmdlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICBbbGFiZWxDb250ZW50VGV4dF09XCInU2VsZWN0IHlvdXIgZGF0ZSdcIlxyXG4gKiAgIFtsYW5nXT1cIid1aydcIlxyXG4gKiAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXHJcbiAqICAgW3JhbmdlXT1cIntzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwfVwiXHJcbiAqICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICogICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICogICBbdG9wT2Zmc2V0XT1cIicyMCdcIlxyXG4gKiAgIFtsZWZ0T2Zmc2V0XT1cIicxMCdcIj5cclxuICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICpcclxuICogPGV4YW1wbGUtdXJsPmh0dHBzOi8vbWVmLmRldi91aV9raXRfZGVtby92aWV3L3V0aWxzL2RhdGVwaWNrZXI8L2V4YW1wbGUtdXJsPlxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWRhdGVwaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBmbGFnIHRoYXQgY2hlY2tzIHdoZXRoZXIgYSB2YWxpZCBkYXRlIGhhcyBiZWVuIGVudGVyZWQgYW5kIHdoZXRoZXIgdGhlIGVudGVyZWQgZGF0ZSBleGlzdHMuXHJcbiAgICogSWYgdGhlIHR3byBwcmV2aW91cyBjb25kaXRpb25zIGFyZSBub3QgdHJ1ZSwgdGhlIGRhdGVwaWNrZXIgd2lsbCBiZSBoaWdobGlnaHRlZCBpbiByZWRcclxuICAgKi9cclxuICBpc1VzZXJEYXRlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBGbGFnIHRvIGRldGVybWluZSBpZiB0aGUgY2FsZW5kYXIgaXMgb3BlbiBvciBjbG9zZWQuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2UgKGNsb3NlZCkuXHJcbiAgICovXHJcbiAgaXNDYWxlbmRhck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IFRvZGF5J3MgZGF0ZS5cclxuICAgKi9cclxuICBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9ybWF0dGVkIGRhdGUgZm9yIGRpc3BsYXkgaW4gdGhlIGlucHV0LlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IEZvcm1hdHRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuICAgKi9cclxuICBmb3JtYXR0ZWREYXRlOiBhbnkgO1xyXG5cclxuICAvKipcclxuICAgKiBUcmFjayB0aGUgZWRpdGVkIGRhdGUgc2VwYXJhdGVseSB3aGVuIGluIGVkaXRpbmcgbW9kZS5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBBbiBlbXB0eSBzdHJpbmcuXHJcbiAgICovXHJcbiAgZWRpdGVkRGF0ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtb250aCBkcm9wZG93biBpcyBvcGVuIG9yIGNsb3NlZC5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiB0cnVlIChvcGVuKS5cclxuICAgKi9cclxuICBpc01vbnRoRHJvcGRvd25PcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRmxhZyB0byBkZXRlcm1pbmUgaWYgdGhlIHllYXIgZHJvcGRvd24gaXMgb3BlbiBvciBjbG9zZWQuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZSAob3BlbikuXHJcbiAgICovXHJcbiAgaXNZZWFyRHJvcGRvd25PcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNlbGVjdGVkIG1vbnRoICgwLTExKS5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBUaGUgbW9udGggb2YgdGhlIHNlbGVjdGVkIGRhdGUuXHJcbiAgICovXHJcbiAgc2VsZWN0ZWREYXRlTW9udGg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzZWxlY3RlZCB5ZWFyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IFRoZSB5ZWFyIG9mIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqL1xyXG4gIHNlbGVjdGVkRGF0ZVllYXI6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGFycmF5IG9mIHllYXJzIGZvciB0aGUgeWVhciBkcm9wZG93bi5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBBbiBhcnJheSBvZiB5ZWFycyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS5cclxuICAgKi9cclxuICB5ZWFyczogbnVtYmVyW11cclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgdGV4dCBmb3IgdGhlIGRhdGVwaWNrZXIuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogJ2VuJyAoRW5nbGlzaCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsYWJlbENvbnRlbnRUZXh0XSA9IFwiJ0Nob3NlIHlvdXIgZGF0ZSdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsQ29udGVudFRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxhbmd1YWdlL2xvY2FsZSBmb3IgdGhlIGRhdGVwaWNrZXIuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogJ2VuJyAoRW5nbGlzaCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsYW5nXSA9IFwiJ3VrJ1wiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFuZzogc3RyaW5nID0gJ2VuJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICdFRUUgTU1NIGRkIHl5eXknLlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICBbZGF0ZUZvcm1hdF09XCInZGQvTU0veXl5eSdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdFRUUgTU1NIGRkIHl5eXknO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcmFuZ2Ugb2YgeWVhcnMgYXZhaWxhYmxlIGluIHRoZSB5ZWFyIGRyb3Bkb3duLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IHsgc3RhcnRZZWFyOiAxOTAwLCB0b1llYXI6IDMwMCB9LlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICBbcmFuZ2VdPVwie3N0YXJ0WWVhcjogMTkwMCwgdG9ZZWFyOiAzMDB9XCI+XHJcbiAgICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICAgKi9cclxuICBASW5wdXQoJ3JhbmdlJykgeWVhcnNSYW5nZTp7c3RhcnRZZWFyOm51bWJlciwgdG9ZZWFyOm51bWJlcn0gPSB7c3RhcnRZZWFyOjE5MDAsIHRvWWVhcjozMDB9O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBkYXRlcGlja2VyIGlzIGRpc2FibGVkIG9yIG5vdC5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZSAoZW5hYmxlZCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtkaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHRvcCBvZmZzZXQgZm9yIHBvc2l0aW9uaW5nIHRoZSBkYXRlcGlja2VyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICcyMCcuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFt0b3BPZmZzZXRdPVwiJzIwJ1wiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgdG9wT2Zmc2V0OiBzdHJpbmcgPSAnMjAnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGVmdCBvZmZzZXQgZm9yIHBvc2l0aW9uaW5nIHRoZSBkYXRlcGlja2VyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICcxMCcuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsZWZ0T2Zmc2V0XT1cIicxMCdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxlZnRPZmZzZXQ6IHN0cmluZyA9ICcxMCc7IC8vRGVmYXVsdCB2YWx1ZVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIgY2hhbmdlcy5cclxuICAgKiBJdCBlbWl0cyBhIGBEYXRlYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVndWxhciBleHByZXNzaW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXQgZm9yIGRhdGUgaW4gdGhlIGZvcm1hdCBcImRkL01NL3l5eXlcIi5cclxuICAgKiAtIFRoZSBkYXkgKGRkKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMzEuXHJcbiAgICogLSBUaGUgbW9udGggKE1NKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMTIuXHJcbiAgICogLSBUaGUgeWVhciAoeXl5eSkgc2hvdWxkIGJlIGEgNC1kaWdpdCBudW1iZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkYXRlUmVnRXhwOiBSZWdFeHAgPSAvXigwWzEtOV18WzEyXVswLTldfDNbMDFdKVxcLygwWzEtOV18MVswLTJdKVxcL1xcZHs0fSQvO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgc3RyaW5nIGVudGVyZWQgYnkgdGhlIHVzZXIgZm9yIGRhdGUgaW5wdXQuXHJcbiAgICogVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHVzZXIncyBpbnB1dCBhcyB0aGV5IHR5cGUgaW4gdGhlIGRhdGUgZmllbGQuXHJcbiAgICovXHJcbiAgdXNlcklucHV0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogSG9zdCBsaXN0ZW5lciBmb3IgZG9jdW1lbnQgY2xpY2sgZXZlbnRzIHRvIGhhbmRsZSBjYWxlbmRhciBpbnRlcmFjdGlvbi5cclxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIGNsaWNrIGV2ZW50IG9jY3VycmVkIHdpdGhpbiB0aGUgY2FsZW5kYXIgb3IgaW5wdXQgZWxlbWVudHMuXHJcbiAgICogLSBJZiB0aGUgY2xpY2sgb2NjdXJyZWQgd2l0aGluIHRoZSBjYWxlbmRhciwgbm8gYWN0aW9uIGlzIHRha2VuLlxyXG4gICAqIC0gSWYgdGhlIGNsaWNrIG9jY3VycmVkIHdpdGhpbiB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdGhlIGNvbXBvbmVudCBpcyBub3QgaW4gZWRpdGluZyBtb2RlLFxyXG4gICAqICAgaXQgb3BlbnMgdGhlIGNhbGVuZGFyLlxyXG4gICAqIEBwYXJhbSBldmVudCBUaGUgTW91c2VFdmVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjbGljayBldmVudC5cclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGRhdGVwaWNrZXJDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0ZXBpY2tlci1jb250YWluZXInKTtcclxuICAgIGNvbnN0IGNhbGVuZGFyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyJyk7XHJcbiAgICBjb25zdCBtb250aERyb3Bkb3duID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1vbnRoRHJvcGRvd24nKTtcclxuICAgIGNvbnN0IHllYXJEcm9wZG93biA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy55ZWFyRHJvcGRvd24nKTtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XHJcblxyXG4gICAgaWYgKGRhdGVwaWNrZXJDb250YWluZXIgJiYgZGF0ZXBpY2tlckNvbnRhaW5lci5jb250YWlucyhjYWxlbmRhcikpIHtcclxuICAgICAgaWYgKGNhbGVuZGFyICYmIGNhbGVuZGFyLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmlzTW9udGhEcm9wZG93bk9wZW4gJiYgIWNhbGVuZGFyLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmlzWWVhckRyb3Bkb3duT3BlbiAmJiAhY2FsZW5kYXIuY29udGFpbnModGFyZ2V0RWxlbWVudCkpIHJldHVybjtcclxuICAgICAgaWYgKChtb250aERyb3Bkb3duICYmIG1vbnRoRHJvcGRvd24uY29udGFpbnModGFyZ2V0RWxlbWVudCkpICYmICh5ZWFyRHJvcGRvd24gJiYgeWVhckRyb3Bkb3duLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTW9udGhEcm9wZG93bihldmVudClcclxuICAgICAgICB0aGlzLnRvZ2dsZVllYXJEcm9wZG93bihldmVudClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBEYXRlcGlja2VyQ29tcG9uZW50IGNsYXNzLlxyXG4gICAqIEBwYXJhbSBkYXRlUGlwZSBBIHNlcnZpY2UgZm9yIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcgZGF0ZXMuXHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgQSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyBjb21wb25lbnQgaXMgYXR0YWNoZWQuXHJcbiAgICogSXQgaXMgdXNlZCB0byBhY2Nlc3MgRE9NIGVsZW1lbnRzLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaWZlY3ljbGUgaG9vayBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICAgKiBJdCBpbml0aWFsaXplcyB0aGUgeWVhcnMgZm9yIHRoZSB5ZWFyIHNlbGVjdCBkcm9wZG93bi5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5pbml0aWFsaXplWWVhcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpZmVjeWNsZSBob29rIGNhbGxlZCB3aGVuZXZlciB0aGUgaW5wdXQgcHJvcGVydGllcyBvZiB0aGUgY29tcG9uZW50IGNoYW5nZS5cclxuICAgKiBJdCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZS5cclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2YgbW9udGggbmFtZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGxhbmd1YWdlLlxyXG4gICAqIEl0IHByb3ZpZGVzIGxvY2FsaXplZCBtb250aCBuYW1lcyBmb3IgZGlzcGxheSBpbiB0aGUgZGF0ZXBpY2tlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldCBtb250aHMoKXtcclxuICAgIHJldHVybiB0aGlzLmdldE1vbnRoTGlzdCh0aGlzLmxhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheSBuYW1lcyBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuXHJcbiAgICogSXQgcHJvdmlkZXMgbG9jYWxpemVkIHdlZWtkYXkgbmFtZXMgZm9yIGRpc3BsYXkgaW4gdGhlIGRhdGVwaWNrZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgd2Vla2RheXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRXZWVrZGF5TGlzdCh0aGlzLmxhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiB5ZWFycyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHllYXIgZHJvcGRvd24uXHJcbiAgICogVGhpcyBtZXRob2QgcG9wdWxhdGVzIHRoZSAneWVhcnMnIGFycmF5IHdpdGggYSByYW5nZSBvZiB5ZWFycyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgJ3llYXJzUmFuZ2UnIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBgYGBcclxuICAgKiAvLyBBc3N1bWluZyAneWVhcnNSYW5nZScgaXMgeyBzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwIH1cclxuICAgKiAvLyBBZnRlciBjYWxsaW5nIGluaXRpYWxpemVZZWFycygpLCAneWVhcnMnIG1pZ2h0IGNvbnRhaW4gWzE5MDAsIDE5MDEsIC4uLiwgMzAwXVxyXG4gICAqIHRoaXMuaW5pdGlhbGl6ZVllYXJzKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplWWVhcnMoKSB7XHJcbiAgICB0aGlzLnllYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy55ZWFyc1JhbmdlLnRvWWVhciB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgdGhpcy55ZWFyc1JhbmdlLnN0YXJ0WWVhcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIGVkaXRpbmcgbW9kZSBmb3IgdGhlIGRhdGUgaW5wdXQuIFdoZW4gZW5hYmxlZCwgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIGRhdGUgZGlyZWN0bHkgaW4gdGhlIGlucHV0IGZpZWxkLlxyXG4gICAqL1xyXG4gIHRvZ2dsZUVkaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRlZERhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpOyAvLyBTdG9yZSB0aGUgY3VycmVudCBmb3JtYXR0ZWQgZGF0ZSBmb3IgZWRpdGluZ1xyXG4gICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgbGlzdCBvZiBtb250aCBuYW1lcyBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIGFuZCBmb3JtYXQuXHJcbiAgICogQHBhcmFtIGxvY2FsZXMgLSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgbG9jYWxlIG9yIGxvY2FsZXMgdG8gdXNlIGZvciBmb3JtYXR0aW5nLlxyXG4gICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZm9ybWF0IGZvciBtb250aCBuYW1lcywgZWl0aGVyIFwibG9uZ1wiIChkZWZhdWx0KSBvciBcInNob3J0XCIuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgbW9udGggbmFtZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEdldCBhIGxpc3Qgb2YgbW9udGggbmFtZXMgaW4gdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgYW5kIGxvbmcgZm9ybWF0XHJcbiAgICogY29uc3QgbW9udGhzID0gdGhpcy5nZXRNb250aExpc3QodGhpcy5sYW5nKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGdldE1vbnRoTGlzdCggIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgIGZvcm1hdDogXCJsb25nXCIgfCBcInNob3J0XCIgPSBcImxvbmdcIik6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aExpc3QgPSBbLi4uQXJyYXkoMTIpLmtleXMoKV07XHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGVzLCB7ICAgIG1vbnRoOiBmb3JtYXQgIH0pO1xyXG4gICAgY29uc3QgZ2V0TW9udGhOYW1lID0gKG1vbnRoSW5kZXg6IG51bWJlcikgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSh5ZWFyLCBtb250aEluZGV4KSk7XHJcbiAgICByZXR1cm4gbW9udGhMaXN0Lm1hcChnZXRNb250aE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgbGlzdCBvZiB3ZWVrZGF5IG5hbWVzIGluIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIGZvcm1hdC5cclxuICAgKiBAcGFyYW0gbG9jYWxlcyAtIEFuIG9wdGlvbmFsIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBsb2NhbGUgb3IgbG9jYWxlcyB0byB1c2UgZm9yIGZvcm1hdHRpbmcuXHJcbiAgICogQHBhcmFtIGZvcm1hdCAtIFRoZSBmb3JtYXQgZm9yIHdlZWtkYXkgbmFtZXMsIGVpdGhlciBcInNob3J0XCIgKGRlZmF1bHQpIG9yIFwibG9uZ1wiLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHdlZWtkYXkgbmFtZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEdldCBhIGxpc3Qgb2Ygd2Vla2RheSBuYW1lcyBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSBhbmQgc2hvcnQgZm9ybWF0XHJcbiAgICogY29uc3Qgd2Vla2RheXMgPSB0aGlzLmdldFdlZWtkYXlMaXN0KCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRXZWVrZGF5TGlzdChsb2NhbGVzPzogc3RyaW5nIHwgc3RyaW5nW10sIGZvcm1hdDogXCJzaG9ydFwiIHwgXCJsb25nXCIgPSBcInNob3J0XCIpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCB3ZWVrZGF5cyA9IFsuLi5BcnJheSg3KS5rZXlzKCldO1xyXG4gICAgY29uc3QgbW9uZGF5SW5kZXggPSB3ZWVrZGF5cy5pbmRleE9mKDApO1xyXG4gICAgd2Vla2RheXMuc3BsaWNlKG1vbmRheUluZGV4LCAxKTtcclxuICAgIHdlZWtkYXlzLnB1c2goMCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGVzLCB7IHdlZWtkYXk6IGZvcm1hdCB9KTtcclxuICAgIGNvbnN0IGdldFdlZWtkYXlOYW1lID0gKHdlZWtkYXlJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMjMsIDksIHdlZWtkYXlJbmRleCArIDEpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2Vla2RheXMubWFwKGdldFdlZWtkYXlOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgdGhlIGVkaXRlZCBkYXRlIGlucHV0IGJ5IHRoZSB1c2VyLCBwcm92aWRlZCBpdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXHJcbiAgICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBlbnRlcmVkIGRhdGUgaXMgaW4gYSB2YWxpZCBmb3JtYXQsIGRpc2FibGVzIHRoZSBlZGl0aW5nIG1vZGUsIGFuZCBhcHBsaWVzXHJcbiAgICogdGhlIGVkaXRlZCBkYXRlIHRvIHRoZSAnc2VsZWN0ZWREYXRlJy4gSXQgdGhlbiByZWZvcm1hdHMgdGhlIHNlbGVjdGVkIGRhdGUgYW5kIGNsb3NlcyB0aGUgY2FsZW5kYXIuXHJcbiAgICogYGBgXHJcbiAgICogLy8gU2F2ZSB0aGUgZWRpdGVkIGRhdGUgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gICAqIHRoaXMuc2F2ZUVkaXRlZERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVFZGl0ZWREYXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlVmFsaWQodGhpcy5lZGl0ZWREYXRlKSkge1xyXG4gICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSB0aGlzLmVkaXRlZERhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSgreWVhciwgK21vbnRoIC0gMSwgK2RheSk7XHJcbiAgICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHVzZXIgaW5wdXQgaW4gdGhlIGVkaXRhYmxlIGlucHV0IGZpZWxkIGZvciBkYXRlIGVkaXRpbmcuIFRoaXMgbWV0aG9kIGNhcHR1cmVzIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAqIGFuZCBzdG9yZXMgaXQgaW4gdGhlICdlZGl0ZWREYXRlJyB2YXJpYWJsZS4gSWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIHZhbGlkIGRhdGUgZm9ybWF0LCBpdCB1cGRhdGVzXHJcbiAgICogJ3NlbGVjdGVkRGF0ZU1vbnRoJyBhbmQgJ3NlbGVjdGVkRGF0ZVllYXInIGFjY29yZGluZ2x5LlxyXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBjb250YWluaW5nIHRoZSB1c2VyJ3MgaW5wdXQuXHJcbiAgICogYGBgXHJcbiAgICogLy8gSGFuZGxlIHVzZXIgaW5wdXQgaW4gdGhlIGVkaXRhYmxlIGlucHV0IGZpZWxkXHJcbiAgICogdGhpcy5vbkRhdGVJbnB1dChldmVudCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIG9uRGF0ZUlucHV0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0RGF0ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlVmFsaWQoaW5wdXREYXRlKSkge1xyXG4gICAgICB0aGlzLmVkaXRlZERhdGUgPSBpbnB1dERhdGU7XHJcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBpbnB1dERhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVNb250aCA9ICtwYXJzZWREYXRlWzFdIC0gMTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gK3BhcnNlZERhdGVbMl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoK3BhcnNlZERhdGVbMl0sICtwYXJzZWREYXRlWzFdIC0gMSwgK3BhcnNlZERhdGVbMF0pO1xyXG4gICAgICB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1VzZXJEYXRlVmFsaWQgPSB0aGlzLmlzRGF0ZVZhbGlkKGlucHV0RGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1vbnRoIGRyb3Bkb3duIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBvcGVuIG9yIGNsb3NlIHRoZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIG1vbnRocy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgdHJpZ2dlcmluZyB0aGUgdG9nZ2xlIGFjdGlvbiAoZS5nLiwgYSBjbGljayBldmVudCkuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBtb250aCBkcm9wZG93blxyXG4gICAqIHRoaXMudG9nZ2xlTW9udGhEcm9wZG93bihldmVudCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b2dnbGVNb250aERyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc01vbnRoRHJvcGRvd25PcGVuID0gIXRoaXMuaXNNb250aERyb3Bkb3duT3BlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgeWVhciBkcm9wZG93biBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gb3BlbiBvciBjbG9zZSB0aGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB5ZWFycy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgdHJpZ2dlcmluZyB0aGUgdG9nZ2xlIGFjdGlvbiAoZS5nLiwgYSBjbGljayBldmVudCkuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB5ZWFyIGRyb3Bkb3duXHJcbiAgICogdGhpcy50b2dnbGVZZWFyRHJvcGRvd24oZXZlbnQpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc1llYXJEcm9wZG93bk9wZW4gPSAhdGhpcy5pc1llYXJEcm9wZG93bk9wZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGggaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZSwgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjaG9zZW4gbW9udGgsXHJcbiAgICogYW5kIHJlY2FsY3VsYXRlcyB0aGUgY2FsZW5kYXIgZGlzcGxheSBhY2NvcmRpbmdseS5cclxuICAgKiBgYGBcclxuICAgKiAvLyBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGhcclxuICAgKiB0aGlzLm9uTW9udGhDaGFuZ2UoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIG9uTW9udGhDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVZZWFyLCB0aGlzLnNlbGVjdGVkRGF0ZU1vbnRoLCAxKTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAgICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgaW5wdXQgdmFsdWUsIHNldHMgdGhlIHNlbGVjdGVkIGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY2hvc2VuIHllYXIsXHJcbiAgICogcmVmb3JtYXRzIHRoZSBzZWxlY3RlZCBkYXRlLCBhbmQgcmVjYWxjdWxhdGVzIHRoZSBjYWxlbmRhciBkaXNwbGF5LlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyXHJcbiAgICogdGhpcy5vblllYXJDaGFuZ2UoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIG9uWWVhckNoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVllYXIsIHRoaXMuc2VsZWN0ZWREYXRlTW9udGgsIDEpO1xyXG4gICAgdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZSBhbmQgcGVyZm9ybSBuZWNlc3NhcnkgdXBkYXRlcy5cclxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBzZWxlY3RlZCBkYXRlLCBmb3JtYXRzIGl0LCBjbG9zZXMgdGhlIGNhbGVuZGFyLCBhbmQgZW1pdHMgYSBkYXRlQ2hhbmdlZCBldmVudC5cclxuICAgKiBJdCBhbHNvIHVwZGF0ZXMgdGhlIHNlbGVjdGVkIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3duIHZhbHVlcy5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIHNlbGVjdGVkIGluIHRoZSBjYWxlbmRhci5cclxuICAgKi9cclxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0IGFuZCBsYW5ndWFnZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBhbmQgdXBkYXRlcyB0aGUgZm9ybWF0dGVkRGF0ZSB2YXJpYWJsZS5cclxuICAgKiBgYGBcclxuICAgKiAvLyBGb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGVcclxuICAgKiB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdERhdGUoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KSB8fCAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0LCBsYW5ndWFnZSwgYW5kIGxvY2FsZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIHVwZGF0ZXMgdGhlIGZvcm1hdHRlZCBkYXRlIGFzIGEgc3RyaW5nLlxyXG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGRhdGUgc3RyaW5nLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSB3aXRoIGxhbmd1YWdlXHJcbiAgICogY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRTZWxlY3RlZERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdFNlbGVjdGVkRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQsIHRoaXMubGFuZykgfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGlucHV0IHZhbHVlIGRpc3BsYXllZCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGlucHV0IHZhbHVlIHRvIGVpdGhlciB0aGUgZWRpdGVkIGRhdGUgb3IgdGhlIGZvcm1hdHRlZCBzZWxlY3RlZCBkYXRlLFxyXG4gICAqIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyIGlzIGluIGVkaXQgbW9kZSBvciBub3QuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAqIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRWYWx1ZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IHRoaXMuaXNDYWxlbmRhck9wZW4gPyB0aGlzLmVkaXRlZERhdGUgOiB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGguXHJcbiAgICogRWFjaCBzdWItYXJyYXkgY29udGFpbnMgdGhlIGRheSBkYXRhIGZvciBhIHdlZWssIGFuZCBlYWNoIGRheSBkYXRhIG9iamVjdCBpbmNsdWRlcyB0aGUgZGF0ZSBhbmQgd2hldGhlciBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGguXHJcbiAgICogYGBgXHJcbiAgICogLy8gR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcclxuICAgKiBjb25zdCBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXJEYXlzO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IGNhbGVuZGFyRGF5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBkYXRlIG9mIHRoZSBwcmV2aW91cyBtb250aCB0byBkaXNwbGF5IGluIGVtcHR5IGNlbGxzIG9mIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGRhdGUgb2YgdGhlIHByZXZpb3VzIG1vbnRoIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIG5vdCBpbiB0aGUgY3VycmVudCBtb250aC5cclxuICAgKiBJZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbiB0aGUgY3VycmVudCBtb250aCwgaXQgcmV0dXJucyB0aGUgZGF0ZSdzIGRheSBhcyBhIHN0cmluZy5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGV2YWx1YXRlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIG9mIHRoZSBwcmV2aW91cyBtb250aCBvciBhIGRheSBzdHJpbmcuXHJcbiAgICogYGBgXHJcbiAgICogLy8gR2V0IHRoZSBwcmV2aW91cyBtb250aCdzIGRhdGUgdG8gZGlzcGxheSBpbiBlbXB0eSBjZWxsc1xyXG4gICAqIGNvbnN0IHByZXZpb3VzTW9udGhEYXRlID0gdGhpcy5nZXRQcmV2aW91c01vbnRoRGF0ZShuZXcgRGF0ZSgyMDIzLCA4LCAxKSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoRGF0ZShkYXRlOiBEYXRlKTogYW55IHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byB0aGUgcHJldmlvdXMgbW9udGggaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBzZWxlY3RlZERhdGUsIGZvcm1hdHMgaXQsIGFuZCByZWNhbGN1bGF0ZXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgY2FsZW5kYXIuXHJcbiAgICogYGBgXHJcbiAgICogLy8gTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoXHJcbiAgICogdGhpcy5nZXRQcmV2aW91c01vbnRoKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoIC0gMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICAgKiBgYGBcclxuICAgKiAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aFxyXG4gICAqIHRoaXMuZ2V0TmV4dE1vbnRoKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXROZXh0TW9udGgoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLCBjdXJyZW50TW9udGggKyAxLCAxKTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggb2YgYSBzcGVjaWZpYyB5ZWFyLlxyXG4gICAqIEBwYXJhbSB5ZWFyIC0gVGhlIHllYXIgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAgICogQHBhcmFtIG1vbnRoIC0gVGhlIG1vbnRoICgwLWJhc2VkIGluZGV4KSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZGF5cy5cclxuICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIHNwZWNpZmllZCBtb250aCBvZiB0aGUgZ2l2ZW4geWVhci5cclxuICAgKi9cclxuICBwcml2YXRlIGRheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGUgdGhlIHN0cnVjdHVyZSBvZiBkYXlzIGluIGEgbW9udGggZm9yIHRoZSBjYWxlbmRhciBkaXNwbGF5LlxyXG4gICAqIFRoaXMgbWV0aG9kIGdlbmVyYXRlcyBhIG1hdHJpeCBvZiBkYXkgZGF0YSBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgZGF5cyBpbiB0aGUgY2FsZW5kYXIuXHJcbiAgICogRWFjaCBkYXkgZGF0YSBvYmplY3QgY29udGFpbnMgdGhlIGRhdGUgYW5kIHdoZXRoZXIgaXQgYmVsb25ncyB0byB0aGUgY3VycmVudCBtb250aC5cclxuICAgKiBAcmV0dXJucyBBIG1hdHJpeCBvZiBkYXkgZGF0YSBvYmplY3RzIGZvciB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICAgKi9cclxuICBwcml2YXRlIGNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3QgZmlyc3RXZWVrZGF5ID0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXkgPSBmaXJzdFdlZWtkYXkgPT09IDAgPyAtNSA6IDIgLSBmaXJzdFdlZWtkYXk7XHJcbiAgICBjb25zdCBjYWxlbmRhckRheXMgPSBbXTtcclxuICAgIGxldCBjdXJyZW50RGF5ID0gc3RhcnREYXk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICBjb25zdCB3ZWVrID0gW107XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgNzsgaisrKSB7XHJcbiAgICAgICAgY29uc3QgZGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGN1cnJlbnREYXkpO1xyXG4gICAgICAgIGNvbnN0IGRheURhdGEgPSB7XHJcbiAgICAgICAgICBkYXRlOiBkYXksXHJcbiAgICAgICAgICBpc0N1cnJlbnRNb250aDogY3VycmVudERheSA+PSAxICYmIGN1cnJlbnREYXkgPD0gdGhpcy5kYXlzSW5Nb250aCh5ZWFyLCBtb250aCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3ZWVrLnB1c2goZGF5RGF0YSk7XHJcbiAgICAgICAgY3VycmVudERheSsrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhbGVuZGFyRGF5cy5wdXNoKHdlZWspO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbGVuZGFyRGF5cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gZGF0ZSBpcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgaW4gdGhlIGNhbGVuZGFyLlxyXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2suXHJcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm92aWRlZCBkYXRlIG1hdGNoZXMgdGhlIHNlbGVjdGVkIGRhdGUsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyBzZWxlY3RlZFxyXG4gICAqIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmlzRGF0ZVNlbGVjdGVkKHNvbWVEYXRlKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGlzRGF0ZVNlbGVjdGVkKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXRlLnRvRGF0ZVN0cmluZygpID09PSB0aGlzLnNlbGVjdGVkRGF0ZS50b0RhdGVTdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGEgZGF0ZSBzdHJpbmcgaXMgdmFsaWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBkYXRlIGZvcm1hdC5cclxuICAgKiBJdCBhbHNvIGNoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyLCBtb250aCBpcyBjb3JyZWN0IGFuZCB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgb25lIGV4aXN0cyBhbW9uZyBjYWxlbmRhciB5ZWFyc1xyXG4gICAqIEBwYXJhbSBpbnB1dERhdGUgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gdmFsaWRhdGUuXHJcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpbnB1dCBkYXRlIHN0cmluZyBpcyB2YWxpZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXHJcbiAgICogYGBgXHJcbiAgICogLy8gQ2hlY2sgaWYgYSBkYXRlIHN0cmluZyBpcyB2YWxpZFxyXG4gICAqIGNvbnN0IGlzVmFsaWREYXRlID0gdGhpcy5pc0RhdGVWYWxpZCgnMDUvMjUvMjAyMycpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNEYXRlVmFsaWQoaW5wdXREYXRlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5kYXRlUmVnRXhwLnRlc3QoaW5wdXREYXRlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFydHMgPSBpbnB1dERhdGUuc3BsaXQoJy8nKTtcclxuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCk7XHJcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XHJcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcclxuXHJcbiAgICBpZiAoeWVhciA+IHRoaXMueWVhcnNbdGhpcy55ZWFycy5sZW5ndGggLSAxXSB8fCB5ZWFyIDwgdGhpcy55ZWFyc1swXSkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XHJcbiAgICByZXR1cm4gZGF5IDw9IGRheXNJbk1vbnRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRvZGF5J3MgZGF0ZS5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGNoZWNrLlxyXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyB0b2RheSdzIGRhdGUsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyB0b2RheSdzIGRhdGVcclxuICAgKiBjb25zdCBpc1RvZGF5ID0gdGhpcy5pc0RhdGVUb2RheShzb21lRGF0ZSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0RhdGVUb2RheShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gdG9kYXkudG9EYXRlU3RyaW5nKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG5cclxuICA8IS0tIElucHV0LCBzYXZlICYgZWRpdCBidXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxDb250ZW50VGV4dFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPiB7eyBsYWJlbENvbnRlbnRUZXh0IH19IDwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjYWxlbmRhck5vdE9wZW5lZCc6ICFpc0NhbGVuZGFyT3BlbiB9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JvcmRlci1jb2xvcic6IGlzVXNlckRhdGVWYWxpZCA/ICcnIDogJ3JlZCcgfVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25EYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXNDYWxlbmRhck9wZW4gPSB0cnVlXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZWREYXRlXCJcclxuICAgICAgICAgIFtyZWFkT25seV09XCIhaXNDYWxlbmRhck9wZW5cIlxyXG4gICAgICAgID5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8IS0tIENhbGVuZGFyKERyb3Bkb3ducywgZGF0ZXMpIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0NhbGVuZGFyT3BlblwiIGNsYXNzPVwiY2FsZW5kYXJcIiAjY2FsZW5kYXJDb250YWluZXJcclxuICAgICAgIFtzdHlsZS50b3BdPVwidG9wT2Zmc2V0XCJcclxuICAgICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRPZmZzZXRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoQnV0dG9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgPCEtLSBNb250aCBkcm9wZG93biAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb250aERyb3Bkb3duT3BlbjsgZWxzZSBtb250aExhYmVsXCI+XHJcbiAgICAgICAgICA8bWVmZGV2LXNlbGVjdFxyXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoRHJvcGRvd25cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZU1vbnRoXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb250aENoYW5nZSgpXCJcclxuICAgICAgICAgICAgW1BsYWNlSG9sZGVyXT1cIidtb250aCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWVmZGV2LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgIFtWYWx1ZV09XCJpXCJcclxuICAgICAgICAgICAgICBbTGFiZWxdPVwibW9udGhcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiei1pbmRleDogMVwiXHJcbiAgICAgICAgICAgID57eyBtb250aCB9fTwvbWVmZGV2LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI21vbnRoTGFiZWw+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlTW9udGhEcm9wZG93bigkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gWWVhciBkcm9wZG93biAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNZZWFyRHJvcGRvd25PcGVuOyBlbHNlIHllYXJMYWJlbFwiPlxyXG4gICAgICAgICAgPG1lZmRldi1zZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJ5ZWFyRHJvcGRvd25cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVllYXJcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblllYXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgIFtQbGFjZUhvbGRlcl09XCIneWVhcidcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWVmZGV2LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzXCJcclxuICAgICAgICAgICAgICBbTGFiZWxdPVwieWVhclwiXHJcbiAgICAgICAgICAgICAgW1ZhbHVlXT1cInllYXJcIlxyXG4gICAgICAgICAgICA+e3t5ZWFyfX08L21lZmRldi1vcHRpb24+XHJcbiAgICAgICAgICA8L21lZmRldi1zZWxlY3Q+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN5ZWFyTGFiZWw+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlWWVhckRyb3Bkb3duKCRldmVudClcIj57eyBzZWxlY3RlZERhdGVZZWFyIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIENhbGVuZGFyIGV4aXQgYnV0dG9uIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXMgdG9nZ2xlQ2FsZW5kYXJCdXR0b25cIiAoY2xpY2spPVwiaXNDYWxlbmRhck9wZW4gPSBmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPlxyXG4gICAgICA8dGFibGU+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrZGF5c1wiPnt7IHdlZWtkYXkgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGNhbGVuZGFyRGF5c1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXlEYXRhIG9mIHdlZWtcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheURhdGEuZGF0ZSlcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogaXNEYXRlU2VsZWN0ZWQoZGF5RGF0YS5kYXRlKSwgJ3ByZXYtbW9udGgnOiAhZGF5RGF0YS5pc0N1cnJlbnRNb250aCB9XCI+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIiBbY2xhc3MucHJldi1tb250aF09XCIhZGF5RGF0YS5pc0N1cnJlbnRNb250aFwiPlxyXG4gICAgICAgICAgICAgIHt7IGRheURhdGEuZGF0ZS5nZXREYXRlKCkgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
607
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBR3ZCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBUUgsTUFBTSxPQUFPLG1CQUFtQjtJQThMVjtJQUE0QjtJQTVMaEQ7OztPQUdHO0lBQ0gsZUFBZSxHQUFZLElBQUksQ0FBQztJQUVoQzs7O09BR0c7SUFDSCxjQUFjLEdBQVksS0FBSyxDQUFDO0lBRWhDOzs7T0FHRztJQUNILFlBQVksR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRWhDOzs7T0FHRztJQUNILGFBQWEsQ0FBTztJQUVwQjs7O09BR0c7SUFDSCxVQUFVLEdBQVcsRUFBRSxDQUFDO0lBRXhCOzs7T0FHRztJQUNILG1CQUFtQixHQUFZLElBQUksQ0FBQztJQUVwQzs7O09BR0c7SUFDSCxrQkFBa0IsR0FBWSxJQUFJLENBQUM7SUFFbkM7OztPQUdHO0lBQ0gsaUJBQWlCLEdBQVcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV6RDs7O09BR0c7SUFDSCxnQkFBZ0IsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRTNEOzs7T0FHRztJQUNI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O3NCQUFwQixNQUFNO2dCQXlCUCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbi8qKlxyXG4gKiBEYXRlcGlja2VyIENvbXBvbmVudCBmb3Igc2VsZWN0aW5nIGRhdGVzLlxyXG4gKlxyXG4gKiBUaGlzIGNvbXBvbmVudCBhbGxvd3MgdXNlcnMgdG8gcGljayBhIGRhdGUgZnJvbSBhIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICogSXQgc3VwcG9ydHMgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgc3VjaCBhcyBsYW5ndWFnZSwgZGF0ZSBmb3JtYXQsIGFuZCBkYXRlIHJhbmdlLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICogICBbbGFiZWxDb250ZW50VGV4dF09XCInU2VsZWN0IHlvdXIgZGF0ZSdcIlxyXG4gKiAgIFtsYW5nXT1cIid1aydcIlxyXG4gKiAgIFtkYXRlRm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXHJcbiAqICAgW3JhbmdlXT1cIntzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwfVwiXHJcbiAqICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcclxuICogICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCJcclxuICogICBbdG9wT2Zmc2V0XT1cIicyMCdcIlxyXG4gKiAgIFtsZWZ0T2Zmc2V0XT1cIicxMCdcIj5cclxuICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICpcclxuICogPGV4YW1wbGUtdXJsPmh0dHBzOi8vbWVmLmRldi91aV9raXRfZGVtby92aWV3L3V0aWxzL2RhdGVwaWNrZXI8L2V4YW1wbGUtdXJsPlxyXG4gKi9cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWRhdGVwaWNrZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXRlcGlja2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEYXRlcGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgIE9uQ2hhbmdlcywgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogQSBmbGFnIHRoYXQgY2hlY2tzIHdoZXRoZXIgYSB2YWxpZCBkYXRlIGhhcyBiZWVuIGVudGVyZWQgYW5kIHdoZXRoZXIgdGhlIGVudGVyZWQgZGF0ZSBleGlzdHMuXHJcbiAgICogSWYgdGhlIHR3byBwcmV2aW91cyBjb25kaXRpb25zIGFyZSBub3QgdHJ1ZSwgdGhlIGRhdGVwaWNrZXIgd2lsbCBiZSBoaWdobGlnaHRlZCBpbiByZWRcclxuICAgKi9cclxuICBpc1VzZXJEYXRlVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKipcclxuICAgKiBGbGFnIHRvIGRldGVybWluZSBpZiB0aGUgY2FsZW5kYXIgaXMgb3BlbiBvciBjbG9zZWQuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogZmFsc2UgKGNsb3NlZCkuXHJcbiAgICovXHJcbiAgaXNDYWxlbmRhck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGN1cnJlbnRseSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IFRvZGF5J3MgZGF0ZS5cclxuICAgKi9cclxuICBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9ybWF0dGVkIGRhdGUgZm9yIGRpc3BsYXkgaW4gdGhlIGlucHV0LlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IEZvcm1hdHRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgc2VsZWN0ZWQgZGF0ZS5cclxuICAgKi9cclxuICBmb3JtYXR0ZWREYXRlOiBhbnkgO1xyXG5cclxuICAvKipcclxuICAgKiBUcmFjayB0aGUgZWRpdGVkIGRhdGUgc2VwYXJhdGVseSB3aGVuIGluIGVkaXRpbmcgbW9kZS5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBBbiBlbXB0eSBzdHJpbmcuXHJcbiAgICovXHJcbiAgZWRpdGVkRGF0ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEZsYWcgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtb250aCBkcm9wZG93biBpcyBvcGVuIG9yIGNsb3NlZC5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiB0cnVlIChvcGVuKS5cclxuICAgKi9cclxuICBpc01vbnRoRHJvcGRvd25PcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogRmxhZyB0byBkZXRlcm1pbmUgaWYgdGhlIHllYXIgZHJvcGRvd24gaXMgb3BlbiBvciBjbG9zZWQuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogdHJ1ZSAob3BlbikuXHJcbiAgICovXHJcbiAgaXNZZWFyRHJvcGRvd25PcGVuOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHNlbGVjdGVkIG1vbnRoICgwLTExKS5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBUaGUgbW9udGggb2YgdGhlIHNlbGVjdGVkIGRhdGUuXHJcbiAgICovXHJcbiAgc2VsZWN0ZWREYXRlTW9udGg6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldE1vbnRoKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBzZWxlY3RlZCB5ZWFyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IFRoZSB5ZWFyIG9mIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqL1xyXG4gIHNlbGVjdGVkRGF0ZVllYXI6IG51bWJlciA9IHRoaXMuc2VsZWN0ZWREYXRlLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGFycmF5IG9mIHllYXJzIGZvciB0aGUgeWVhciBkcm9wZG93bi5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBBbiBhcnJheSBvZiB5ZWFycyB3aXRoaW4gdGhlIHNwZWNpZmllZCByYW5nZS5cclxuICAgKi9cclxuICB5ZWFyczogbnVtYmVyW11cclxuXHJcbiAgLyoqXHJcbiAgICogTGFiZWwgdGV4dCBmb3IgdGhlIGRhdGVwaWNrZXIuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogJ2VuJyAoRW5nbGlzaCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsYWJlbENvbnRlbnRUZXh0XSA9IFwiJ0Nob3NlIHlvdXIgZGF0ZSdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsQ29udGVudFRleHQ6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGxhbmd1YWdlL2xvY2FsZSBmb3IgdGhlIGRhdGVwaWNrZXIuXHJcbiAgICogRGVmYXVsdCB2YWx1ZTogJ2VuJyAoRW5nbGlzaCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsYW5nXSA9IFwiJ3VrJ1wiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgbGFuZzogc3RyaW5nID0gJ2VuJztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGRhdGUgZm9ybWF0IGZvciBkaXNwbGF5aW5nIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICdFRUUgTU1NIGRkIHl5eXknLlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICBbZGF0ZUZvcm1hdF09XCInZGQvTU0veXl5eSdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdFRUUgTU1NIGRkIHl5eXknO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgcmFuZ2Ugb2YgeWVhcnMgYXZhaWxhYmxlIGluIHRoZSB5ZWFyIGRyb3Bkb3duLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6IHsgc3RhcnRZZWFyOiAxOTAwLCB0b1llYXI6IDMwMCB9LlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICBbcmFuZ2VdPVwie3N0YXJ0WWVhcjogMTkwMCwgdG9ZZWFyOiAzMDB9XCI+XHJcbiAgICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICAgKi9cclxuICBASW5wdXQoJ3JhbmdlJykgeWVhcnNSYW5nZTp7c3RhcnRZZWFyOm51bWJlciwgdG9ZZWFyOm51bWJlcn0gPSB7c3RhcnRZZWFyOjE5MDAsIHRvWWVhcjozMDB9O1xyXG5cclxuICAvKipcclxuICAgKiBXaGV0aGVyIHRoZSBkYXRlcGlja2VyIGlzIGRpc2FibGVkIG9yIG5vdC5cclxuICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZSAoZW5hYmxlZCkuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtkaXNhYmxlZF09XCJmYWxzZVwiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHRvcCBvZmZzZXQgZm9yIHBvc2l0aW9uaW5nIHRoZSBkYXRlcGlja2VyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICcyMCcuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFt0b3BPZmZzZXRdPVwiJzIwJ1wiPlxyXG4gICAqIDwvbWVmZGV2LWRhdGVwaWNrZXI+XHJcbiAgICovXHJcbiAgQElucHV0KCkgdG9wT2Zmc2V0OiBzdHJpbmcgPSAnMjAnO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgbGVmdCBvZmZzZXQgZm9yIHBvc2l0aW9uaW5nIHRoZSBkYXRlcGlja2VyLlxyXG4gICAqIERlZmF1bHQgdmFsdWU6ICcxMCcuXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiA8bWVmZGV2LWRhdGVwaWNrZXJcclxuICAgKiAgIFtsZWZ0T2Zmc2V0XT1cIicxMCdcIj5cclxuICAgKiA8L21lZmRldi1kYXRlcGlja2VyPlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGxlZnRPZmZzZXQ6IHN0cmluZyA9ICcxMCc7IC8vRGVmYXVsdCB2YWx1ZVxyXG5cclxuICAvKipcclxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGRhdGUgaW4gdGhlIGRhdGVwaWNrZXIgY2hhbmdlcy5cclxuICAgKiBJdCBlbWl0cyBhIGBEYXRlYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3RlZCBkYXRlLlxyXG4gICAqIEBleGFtcGxlXHJcbiAgICogPG1lZmRldi1kYXRlcGlja2VyXHJcbiAgICogICAoZGF0ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICogPC9tZWZkZXYtZGF0ZXBpY2tlcj5cclxuICAgKi9cclxuICBAT3V0cHV0KCkgZGF0ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogUmVndWxhciBleHByZXNzaW9uIHRvIHZhbGlkYXRlIHVzZXIgaW5wdXQgZm9yIGRhdGUgaW4gdGhlIGZvcm1hdCBcImRkL01NL3l5eXlcIi5cclxuICAgKiAtIFRoZSBkYXkgKGRkKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMzEuXHJcbiAgICogLSBUaGUgbW9udGggKE1NKSBzaG91bGQgYmUgYmV0d2VlbiAwMSBhbmQgMTIuXHJcbiAgICogLSBUaGUgeWVhciAoeXl5eSkgc2hvdWxkIGJlIGEgNC1kaWdpdCBudW1iZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkYXRlUmVnRXhwOiBSZWdFeHAgPSAvXigwWzEtOV18WzEyXVswLTldfDNbMDFdKVxcLygwWzEtOV18MVswLTJdKVxcL1xcZHs0fSQvO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgc3RyaW5nIGVudGVyZWQgYnkgdGhlIHVzZXIgZm9yIGRhdGUgaW5wdXQuXHJcbiAgICogVGhpcyB2YXJpYWJsZSBzdG9yZXMgdGhlIHVzZXIncyBpbnB1dCBhcyB0aGV5IHR5cGUgaW4gdGhlIGRhdGUgZmllbGQuXHJcbiAgICovXHJcbiAgdXNlcklucHV0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogSG9zdCBsaXN0ZW5lciBmb3IgZG9jdW1lbnQgY2xpY2sgZXZlbnRzIHRvIGhhbmRsZSBjYWxlbmRhciBpbnRlcmFjdGlvbi5cclxuICAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiBhIGNsaWNrIGV2ZW50IG9jY3VycmVkIHdpdGhpbiB0aGUgY2FsZW5kYXIgb3IgaW5wdXQgZWxlbWVudHMuXHJcbiAgICogLSBJZiB0aGUgY2xpY2sgb2NjdXJyZWQgd2l0aGluIHRoZSBjYWxlbmRhciwgbm8gYWN0aW9uIGlzIHRha2VuLlxyXG4gICAqIC0gSWYgdGhlIGNsaWNrIG9jY3VycmVkIHdpdGhpbiB0aGUgaW5wdXQgZWxlbWVudCBhbmQgdGhlIGNvbXBvbmVudCBpcyBub3QgaW4gZWRpdGluZyBtb2RlLFxyXG4gICAqICAgaXQgb3BlbnMgdGhlIGNhbGVuZGFyLlxyXG4gICAqIEBwYXJhbSBldmVudCBUaGUgTW91c2VFdmVudCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjbGljayBldmVudC5cclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXHJcbiAgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGRhdGVwaWNrZXJDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuZGF0ZXBpY2tlci1jb250YWluZXInKTtcclxuICAgIGNvbnN0IGNhbGVuZGFyID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyJyk7XHJcbiAgICBjb25zdCBtb250aERyb3Bkb3duID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1vbnRoRHJvcGRvd24nKTtcclxuICAgIGNvbnN0IHllYXJEcm9wZG93biA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy55ZWFyRHJvcGRvd24nKTtcclxuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7XHJcblxyXG4gICAgaWYgKGRhdGVwaWNrZXJDb250YWluZXIgJiYgZGF0ZXBpY2tlckNvbnRhaW5lci5jb250YWlucyhjYWxlbmRhcikpIHtcclxuICAgICAgaWYgKGNhbGVuZGFyICYmIGNhbGVuZGFyLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmlzTW9udGhEcm9wZG93bk9wZW4gJiYgIWNhbGVuZGFyLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSByZXR1cm47XHJcbiAgICAgIGlmICh0aGlzLmlzWWVhckRyb3Bkb3duT3BlbiAmJiAhY2FsZW5kYXIuY29udGFpbnModGFyZ2V0RWxlbWVudCkpIHJldHVybjtcclxuICAgICAgaWYgKChtb250aERyb3Bkb3duICYmIG1vbnRoRHJvcGRvd24uY29udGFpbnModGFyZ2V0RWxlbWVudCkpICYmICh5ZWFyRHJvcGRvd24gJiYgeWVhckRyb3Bkb3duLmNvbnRhaW5zKHRhcmdldEVsZW1lbnQpKSkge1xyXG4gICAgICAgIHRoaXMudG9nZ2xlTW9udGhEcm9wZG93bihldmVudClcclxuICAgICAgICB0aGlzLnRvZ2dsZVllYXJEcm9wZG93bihldmVudClcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uc3RydWN0b3IgZm9yIHRoZSBEYXRlcGlja2VyQ29tcG9uZW50IGNsYXNzLlxyXG4gICAqIEBwYXJhbSBkYXRlUGlwZSBBIHNlcnZpY2UgZm9yIGZvcm1hdHRpbmcgYW5kIHBhcnNpbmcgZGF0ZXMuXHJcbiAgICogQHBhcmFtIGVsZW1lbnRSZWYgQSByZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhpcyBjb21wb25lbnQgaXMgYXR0YWNoZWQuXHJcbiAgICogSXQgaXMgdXNlZCB0byBhY2Nlc3MgRE9NIGVsZW1lbnRzLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBMaWZlY3ljbGUgaG9vayBjYWxsZWQgYWZ0ZXIgdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsaXplZC5cclxuICAgKiBJdCBpbml0aWFsaXplcyB0aGUgeWVhcnMgZm9yIHRoZSB5ZWFyIHNlbGVjdCBkcm9wZG93bi5cclxuICAgKi9cclxuICBuZ09uSW5pdCgpe1xyXG4gICAgdGhpcy5pbml0aWFsaXplWWVhcnMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpZmVjeWNsZSBob29rIGNhbGxlZCB3aGVuZXZlciB0aGUgaW5wdXQgcHJvcGVydGllcyBvZiB0aGUgY29tcG9uZW50IGNoYW5nZS5cclxuICAgKiBJdCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZS5cclxuICAgKi9cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2YgbW9udGggbmFtZXMgYmFzZWQgb24gdGhlIHNlbGVjdGVkIGxhbmd1YWdlLlxyXG4gICAqIEl0IHByb3ZpZGVzIGxvY2FsaXplZCBtb250aCBuYW1lcyBmb3IgZGlzcGxheSBpbiB0aGUgZGF0ZXBpY2tlci5cclxuICAgKi9cclxuICBwcml2YXRlIGdldCBtb250aHMoKXtcclxuICAgIHJldHVybiB0aGlzLmdldE1vbnRoTGlzdCh0aGlzLmxhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXJyYXkgb2Ygd2Vla2RheSBuYW1lcyBiYXNlZCBvbiB0aGUgc2VsZWN0ZWQgbGFuZ3VhZ2UuXHJcbiAgICogSXQgcHJvdmlkZXMgbG9jYWxpemVkIHdlZWtkYXkgbmFtZXMgZm9yIGRpc3BsYXkgaW4gdGhlIGRhdGVwaWNrZXIuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXQgd2Vla2RheXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5nZXRXZWVrZGF5TGlzdCh0aGlzLmxhbmcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiB5ZWFycyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHllYXIgZHJvcGRvd24uXHJcbiAgICogVGhpcyBtZXRob2QgcG9wdWxhdGVzIHRoZSAneWVhcnMnIGFycmF5IHdpdGggYSByYW5nZSBvZiB5ZWFycyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgJ3llYXJzUmFuZ2UnIGNvbmZpZ3VyYXRpb24uXHJcbiAgICogQGV4YW1wbGVcclxuICAgKiBgYGBcclxuICAgKiAvLyBBc3N1bWluZyAneWVhcnNSYW5nZScgaXMgeyBzdGFydFllYXI6IDE5MDAsIHRvWWVhcjogMzAwIH1cclxuICAgKiAvLyBBZnRlciBjYWxsaW5nIGluaXRpYWxpemVZZWFycygpLCAneWVhcnMnIG1pZ2h0IGNvbnRhaW4gWzE5MDAsIDE5MDEsIC4uLiwgMzAwXVxyXG4gICAqIHRoaXMuaW5pdGlhbGl6ZVllYXJzKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpbml0aWFsaXplWWVhcnMoKSB7XHJcbiAgICB0aGlzLnllYXJzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdGhpcy55ZWFyc1JhbmdlLnRvWWVhciB9LCAoXywgaW5kZXgpID0+IGluZGV4ICsgdGhpcy55ZWFyc1JhbmdlLnN0YXJ0WWVhcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIGVkaXRpbmcgbW9kZSBmb3IgdGhlIGRhdGUgaW5wdXQuIFdoZW4gZW5hYmxlZCwgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIGRhdGUgZGlyZWN0bHkgaW4gdGhlIGlucHV0IGZpZWxkLlxyXG4gICAqL1xyXG4gIHRvZ2dsZUVkaXQoKSB7XHJcbiAgICB0aGlzLmVkaXRlZERhdGUgPSB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpOyAvLyBTdG9yZSB0aGUgY3VycmVudCBmb3JtYXR0ZWQgZGF0ZSBmb3IgZWRpdGluZ1xyXG4gICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgbGlzdCBvZiBtb250aCBuYW1lcyBpbiB0aGUgc3BlY2lmaWVkIGxhbmd1YWdlIGFuZCBmb3JtYXQuXHJcbiAgICogQHBhcmFtIGxvY2FsZXMgLSBBbiBvcHRpb25hbCBwYXJhbWV0ZXIgc3BlY2lmeWluZyB0aGUgbG9jYWxlIG9yIGxvY2FsZXMgdG8gdXNlIGZvciBmb3JtYXR0aW5nLlxyXG4gICAqIEBwYXJhbSBmb3JtYXQgLSBUaGUgZm9ybWF0IGZvciBtb250aCBuYW1lcywgZWl0aGVyIFwibG9uZ1wiIChkZWZhdWx0KSBvciBcInNob3J0XCIuXHJcbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgbW9udGggbmFtZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEdldCBhIGxpc3Qgb2YgbW9udGggbmFtZXMgaW4gdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgYW5kIGxvbmcgZm9ybWF0XHJcbiAgICogY29uc3QgbW9udGhzID0gdGhpcy5nZXRNb250aExpc3QodGhpcy5sYW5nKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGdldE1vbnRoTGlzdCggIGxvY2FsZXM/OiBzdHJpbmcgfCBzdHJpbmdbXSwgIGZvcm1hdDogXCJsb25nXCIgfCBcInNob3J0XCIgPSBcImxvbmdcIik6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IHllYXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XHJcbiAgICBjb25zdCBtb250aExpc3QgPSBbLi4uQXJyYXkoMTIpLmtleXMoKV07XHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGVzLCB7ICAgIG1vbnRoOiBmb3JtYXQgIH0pO1xyXG4gICAgY29uc3QgZ2V0TW9udGhOYW1lID0gKG1vbnRoSW5kZXg6IG51bWJlcikgPT4gZm9ybWF0dGVyLmZvcm1hdChuZXcgRGF0ZSh5ZWFyLCBtb250aEluZGV4KSk7XHJcbiAgICByZXR1cm4gbW9udGhMaXN0Lm1hcChnZXRNb250aE5hbWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGEgbGlzdCBvZiB3ZWVrZGF5IG5hbWVzIGluIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIGZvcm1hdC5cclxuICAgKiBAcGFyYW0gbG9jYWxlcyAtIEFuIG9wdGlvbmFsIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBsb2NhbGUgb3IgbG9jYWxlcyB0byB1c2UgZm9yIGZvcm1hdHRpbmcuXHJcbiAgICogQHBhcmFtIGZvcm1hdCAtIFRoZSBmb3JtYXQgZm9yIHdlZWtkYXkgbmFtZXMsIGVpdGhlciBcInNob3J0XCIgKGRlZmF1bHQpIG9yIFwibG9uZ1wiLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHdlZWtkYXkgbmFtZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGZvcm1hdCBhbmQgbG9jYWxlLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEdldCBhIGxpc3Qgb2Ygd2Vla2RheSBuYW1lcyBpbiB0aGUgZGVmYXVsdCBsYW5ndWFnZSBhbmQgc2hvcnQgZm9ybWF0XHJcbiAgICogY29uc3Qgd2Vla2RheXMgPSB0aGlzLmdldFdlZWtkYXlMaXN0KCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRXZWVrZGF5TGlzdChsb2NhbGVzPzogc3RyaW5nIHwgc3RyaW5nW10sIGZvcm1hdDogXCJzaG9ydFwiIHwgXCJsb25nXCIgPSBcInNob3J0XCIpOiBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCB3ZWVrZGF5cyA9IFsuLi5BcnJheSg3KS5rZXlzKCldO1xyXG4gICAgY29uc3QgbW9uZGF5SW5kZXggPSB3ZWVrZGF5cy5pbmRleE9mKDApO1xyXG4gICAgd2Vla2RheXMuc3BsaWNlKG1vbmRheUluZGV4LCAxKTtcclxuICAgIHdlZWtkYXlzLnB1c2goMCk7XHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGVzLCB7IHdlZWtkYXk6IGZvcm1hdCB9KTtcclxuICAgIGNvbnN0IGdldFdlZWtkYXlOYW1lID0gKHdlZWtkYXlJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KG5ldyBEYXRlKDIwMjMsIDksIHdlZWtkYXlJbmRleCArIDEpKTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gd2Vla2RheXMubWFwKGdldFdlZWtkYXlOYW1lKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNhdmUgdGhlIGVkaXRlZCBkYXRlIGlucHV0IGJ5IHRoZSB1c2VyLCBwcm92aWRlZCBpdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgZGF0ZSBmb3JtYXQuXHJcbiAgICogVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSBlbnRlcmVkIGRhdGUgaXMgaW4gYSB2YWxpZCBmb3JtYXQsIGRpc2FibGVzIHRoZSBlZGl0aW5nIG1vZGUsIGFuZCBhcHBsaWVzXHJcbiAgICogdGhlIGVkaXRlZCBkYXRlIHRvIHRoZSAnc2VsZWN0ZWREYXRlJy4gSXQgdGhlbiByZWZvcm1hdHMgdGhlIHNlbGVjdGVkIGRhdGUgYW5kIGNsb3NlcyB0aGUgY2FsZW5kYXIuXHJcbiAgICogYGBgXHJcbiAgICogLy8gU2F2ZSB0aGUgZWRpdGVkIGRhdGUgYW5kIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gICAqIHRoaXMuc2F2ZUVkaXRlZERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIHNhdmVFZGl0ZWREYXRlKCkge1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlVmFsaWQodGhpcy5lZGl0ZWREYXRlKSkge1xyXG4gICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSB0aGlzLmVkaXRlZERhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSgreWVhciwgK21vbnRoIC0gMSwgK2RheSk7XHJcbiAgICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIHVzZXIgaW5wdXQgaW4gdGhlIGVkaXRhYmxlIGlucHV0IGZpZWxkIGZvciBkYXRlIGVkaXRpbmcuIFRoaXMgbWV0aG9kIGNhcHR1cmVzIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAqIGFuZCBzdG9yZXMgaXQgaW4gdGhlICdlZGl0ZWREYXRlJyB2YXJpYWJsZS4gSWYgdGhlIGlucHV0IG1hdGNoZXMgdGhlIHZhbGlkIGRhdGUgZm9ybWF0LCBpdCB1cGRhdGVzXHJcbiAgICogJ3NlbGVjdGVkRGF0ZU1vbnRoJyBhbmQgJ3NlbGVjdGVkRGF0ZVllYXInIGFjY29yZGluZ2x5LlxyXG4gICAqIEBwYXJhbSBldmVudCAtIFRoZSBpbnB1dCBldmVudCBjb250YWluaW5nIHRoZSB1c2VyJ3MgaW5wdXQuXHJcbiAgICogYGBgXHJcbiAgICogLy8gSGFuZGxlIHVzZXIgaW5wdXQgaW4gdGhlIGVkaXRhYmxlIGlucHV0IGZpZWxkXHJcbiAgICogdGhpcy5vbkRhdGVJbnB1dChldmVudCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHVibGljIG9uRGF0ZUlucHV0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnN0IGlucHV0RGF0ZTogc3RyaW5nID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgaWYgKHRoaXMuaXNEYXRlVmFsaWQoaW5wdXREYXRlKSkge1xyXG4gICAgICB0aGlzLmVkaXRlZERhdGUgPSBpbnB1dERhdGU7XHJcbiAgICAgIGNvbnN0IHBhcnNlZERhdGUgPSBpbnB1dERhdGUuc3BsaXQoJy8nKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVNb250aCA9ICtwYXJzZWREYXRlWzFdIC0gMTtcclxuICAgICAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gK3BhcnNlZERhdGVbMl07XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUoK3BhcnNlZERhdGVbMl0sICtwYXJzZWREYXRlWzFdIC0gMSwgK3BhcnNlZERhdGVbMF0pO1xyXG4gICAgICB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc1VzZXJEYXRlVmFsaWQgPSB0aGlzLmlzRGF0ZVZhbGlkKGlucHV0RGF0ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUb2dnbGUgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1vbnRoIGRyb3Bkb3duIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBvcGVuIG9yIGNsb3NlIHRoZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIG1vbnRocy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgdHJpZ2dlcmluZyB0aGUgdG9nZ2xlIGFjdGlvbiAoZS5nLiwgYSBjbGljayBldmVudCkuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBtb250aCBkcm9wZG93blxyXG4gICAqIHRoaXMudG9nZ2xlTW9udGhEcm9wZG93bihldmVudCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB0b2dnbGVNb250aERyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc01vbnRoRHJvcGRvd25PcGVuID0gIXRoaXMuaXNNb250aERyb3Bkb3duT3BlbjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRvZ2dsZSB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgeWVhciBkcm9wZG93biBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gb3BlbiBvciBjbG9zZSB0aGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB5ZWFycy5cclxuICAgKiBAcGFyYW0gZXZlbnQgLSBUaGUgZXZlbnQgdHJpZ2dlcmluZyB0aGUgdG9nZ2xlIGFjdGlvbiAoZS5nLiwgYSBjbGljayBldmVudCkuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVG9nZ2xlIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSB5ZWFyIGRyb3Bkb3duXHJcbiAgICogdGhpcy50b2dnbGVZZWFyRHJvcGRvd24oZXZlbnQpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdG9nZ2xlWWVhckRyb3Bkb3duKGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5pc1llYXJEcm9wZG93bk9wZW4gPSAhdGhpcy5pc1llYXJEcm9wZG93bk9wZW47XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGggaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBpbnB1dCB2YWx1ZSwgc2V0cyB0aGUgc2VsZWN0ZWQgZGF0ZSB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjaG9zZW4gbW9udGgsXHJcbiAgICogYW5kIHJlY2FsY3VsYXRlcyB0aGUgY2FsZW5kYXIgZGlzcGxheSBhY2NvcmRpbmdseS5cclxuICAgKiBgYGBcclxuICAgKiAvLyBIYW5kbGUgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgbW9udGhcclxuICAgKiB0aGlzLm9uTW9udGhDaGFuZ2UoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIG9uTW9udGhDaGFuZ2UoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVZZWFyLCB0aGlzLnNlbGVjdGVkRGF0ZU1vbnRoLCAxKTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyIGluIHRoZSBjYWxlbmRhciBpbnRlcmZhY2UuXHJcbiAgICogVGhpcyBtZXRob2QgdXBkYXRlcyB0aGUgaW5wdXQgdmFsdWUsIHNldHMgdGhlIHNlbGVjdGVkIGRhdGUgdG8gdGhlIGZpcnN0IGRheSBvZiB0aGUgY2hvc2VuIHllYXIsXHJcbiAgICogcmVmb3JtYXRzIHRoZSBzZWxlY3RlZCBkYXRlLCBhbmQgcmVjYWxjdWxhdGVzIHRoZSBjYWxlbmRhciBkaXNwbGF5LlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEhhbmRsZSB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCB5ZWFyXHJcbiAgICogdGhpcy5vblllYXJDaGFuZ2UoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIG9uWWVhckNoYW5nZSgpIHtcclxuICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVllYXIsIHRoaXMuc2VsZWN0ZWREYXRlTW9udGgsIDEpO1xyXG4gICAgdGhpcy5mb3JtYXREYXRlKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbGVjdCBhIGRhdGUgaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZSBhbmQgcGVyZm9ybSBuZWNlc3NhcnkgdXBkYXRlcy5cclxuICAgKiBUaGlzIG1ldGhvZCBzZXRzIHRoZSBzZWxlY3RlZCBkYXRlLCBmb3JtYXRzIGl0LCBjbG9zZXMgdGhlIGNhbGVuZGFyLCBhbmQgZW1pdHMgYSBkYXRlQ2hhbmdlZCBldmVudC5cclxuICAgKiBJdCBhbHNvIHVwZGF0ZXMgdGhlIHNlbGVjdGVkIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3duIHZhbHVlcy5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGJlIHNlbGVjdGVkIGluIHRoZSBjYWxlbmRhci5cclxuICAgKi9cclxuICBzZWxlY3REYXRlKGRhdGU6IERhdGUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF0ZTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5pc0NhbGVuZGFyT3BlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kYXRlQ2hhbmdlZC5uZXh0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGVZZWFyID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0IGFuZCBsYW5ndWFnZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBhbmQgdXBkYXRlcyB0aGUgZm9ybWF0dGVkRGF0ZSB2YXJpYWJsZS5cclxuICAgKiBgYGBcclxuICAgKiAvLyBGb3JtYXQgdGhlIHNlbGVjdGVkIGRhdGVcclxuICAgKiB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdERhdGUoKSB7XHJcbiAgICB0aGlzLmZvcm1hdHRlZERhdGUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLnNlbGVjdGVkRGF0ZSwgdGhpcy5kYXRlRm9ybWF0KSB8fCAnJztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSBiYXNlZCBvbiB0aGUgY2hvc2VuIGRhdGUgZm9ybWF0LCBsYW5ndWFnZSwgYW5kIGxvY2FsZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1c2VzIHRoZSBBbmd1bGFyIERhdGVQaXBlIHRvIGZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgbGFuZ3VhZ2UgYW5kIHVwZGF0ZXMgdGhlIGZvcm1hdHRlZCBkYXRlIGFzIGEgc3RyaW5nLlxyXG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGRhdGUgc3RyaW5nLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIEZvcm1hdCB0aGUgc2VsZWN0ZWQgZGF0ZSB3aXRoIGxhbmd1YWdlXHJcbiAgICogY29uc3QgZm9ybWF0dGVkID0gdGhpcy5mb3JtYXRTZWxlY3RlZERhdGUoKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGZvcm1hdFNlbGVjdGVkRGF0ZSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGVGb3JtYXQsIHRoaXMubGFuZykgfHwgJyc7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdGhlIGlucHV0IHZhbHVlIGRpc3BsYXllZCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIGlucHV0IHZhbHVlIHRvIGVpdGhlciB0aGUgZWRpdGVkIGRhdGUgb3IgdGhlIGZvcm1hdHRlZCBzZWxlY3RlZCBkYXRlLFxyXG4gICAqIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB1c2VyIGlzIGluIGVkaXQgbW9kZSBvciBub3QuXHJcbiAgICogYGBgXHJcbiAgICogLy8gVXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxyXG4gICAqIHRoaXMudXBkYXRlSW5wdXRWYWx1ZSgpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlSW5wdXRWYWx1ZSgpIHtcclxuICAgIHRoaXMuZm9ybWF0dGVkRGF0ZSA9IHRoaXMuaXNDYWxlbmRhck9wZW4gPyB0aGlzLmVkaXRlZERhdGUgOiB0aGlzLmZvcm1hdFNlbGVjdGVkRGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGguXHJcbiAgICogRWFjaCBzdWItYXJyYXkgY29udGFpbnMgdGhlIGRheSBkYXRhIGZvciBhIHdlZWssIGFuZCBlYWNoIGRheSBkYXRhIG9iamVjdCBpbmNsdWRlcyB0aGUgZGF0ZSBhbmQgd2hldGhlciBpdCBiZWxvbmdzIHRvIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGguXHJcbiAgICogYGBgXHJcbiAgICogLy8gR2V0IGFuIGFycmF5IG9mIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGRheXMgb2YgdGhlIGN1cnJlbnQgbW9udGhcclxuICAgKiBjb25zdCBjYWxlbmRhciA9IHRoaXMuY2FsZW5kYXJEYXlzO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0IGNhbGVuZGFyRGF5cygpIHtcclxuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHRoZSBkYXRlIG9mIHRoZSBwcmV2aW91cyBtb250aCB0byBkaXNwbGF5IGluIGVtcHR5IGNlbGxzIG9mIHRoZSBjdXJyZW50IG1vbnRoLlxyXG4gICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGRhdGUgb2YgdGhlIHByZXZpb3VzIG1vbnRoIGlmIHRoZSBwcm92aWRlZCBkYXRlIGlzIG5vdCBpbiB0aGUgY3VycmVudCBtb250aC5cclxuICAgKiBJZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyBpbiB0aGUgY3VycmVudCBtb250aCwgaXQgcmV0dXJucyB0aGUgZGF0ZSdzIGRheSBhcyBhIHN0cmluZy5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGV2YWx1YXRlLlxyXG4gICAqIEByZXR1cm5zIFRoZSBkYXRlIG9mIHRoZSBwcmV2aW91cyBtb250aCBvciBhIGRheSBzdHJpbmcuXHJcbiAgICogYGBgXHJcbiAgICogLy8gR2V0IHRoZSBwcmV2aW91cyBtb250aCdzIGRhdGUgdG8gZGlzcGxheSBpbiBlbXB0eSBjZWxsc1xyXG4gICAqIGNvbnN0IHByZXZpb3VzTW9udGhEYXRlID0gdGhpcy5nZXRQcmV2aW91c01vbnRoRGF0ZShuZXcgRGF0ZSgyMDIzLCA4LCAxKSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoRGF0ZShkYXRlOiBEYXRlKTogYW55IHtcclxuICAgIGlmICghZGF0ZSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBpZiAoZGF0ZS5nZXRNb250aCgpID09PSBjdXJyZW50RGF0ZS5nZXRNb250aCgpICYmIGRhdGUuZ2V0RnVsbFllYXIoKSA9PT0gY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSkge1xyXG4gICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShkYXRlLCAnZGQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byB0aGUgcHJldmlvdXMgbW9udGggaW4gdGhlIGNhbGVuZGFyIGludGVyZmFjZS5cclxuICAgKiBUaGlzIG1ldGhvZCB1cGRhdGVzIHRoZSBzZWxlY3RlZERhdGUsIGZvcm1hdHMgaXQsIGFuZCByZWNhbGN1bGF0ZXMgdGhlIGZpcnN0IGRheSBvZiB0aGUgY2FsZW5kYXIuXHJcbiAgICogYGBgXHJcbiAgICogLy8gTmF2aWdhdGUgdG8gdGhlIHByZXZpb3VzIG1vbnRoXHJcbiAgICogdGhpcy5nZXRQcmV2aW91c01vbnRoKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQcmV2aW91c01vbnRoKCkge1xyXG4gICAgY29uc3QgY3VycmVudE1vbnRoID0gdGhpcy5zZWxlY3RlZERhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUuZ2V0RnVsbFllYXIoKSwgY3VycmVudE1vbnRoIC0gMSwgMSk7XHJcbiAgICB0aGlzLmZvcm1hdERhdGUoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlRmlyc3REYXlPZkNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aCBpbiB0aGUgY2FsZW5kYXIgaW50ZXJmYWNlLlxyXG4gICAqIFRoaXMgbWV0aG9kIHVwZGF0ZXMgdGhlIHNlbGVjdGVkRGF0ZSwgZm9ybWF0cyBpdCwgYW5kIHJlY2FsY3VsYXRlcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSBjYWxlbmRhci5cclxuICAgKiBgYGBcclxuICAgKiAvLyBOYXZpZ2F0ZSB0byB0aGUgbmV4dCBtb250aFxyXG4gICAqIHRoaXMuZ2V0TmV4dE1vbnRoKCk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXROZXh0TW9udGgoKSB7XHJcbiAgICBjb25zdCBjdXJyZW50TW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpLCBjdXJyZW50TW9udGggKyAxLCAxKTtcclxuICAgIHRoaXMuZm9ybWF0RGF0ZSgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVGaXJzdERheU9mQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBHZXQgdGhlIG51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggb2YgYSBzcGVjaWZpYyB5ZWFyLlxyXG4gICAqIEBwYXJhbSB5ZWFyIC0gVGhlIHllYXIgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIGRheXMuXHJcbiAgICogQHBhcmFtIG1vbnRoIC0gVGhlIG1vbnRoICgwLWJhc2VkIGluZGV4KSBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgZGF5cy5cclxuICAgKiBAcmV0dXJucyBUaGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIHNwZWNpZmllZCBtb250aCBvZiB0aGUgZ2l2ZW4geWVhci5cclxuICAgKi9cclxuICBwcml2YXRlIGRheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDYWxjdWxhdGUgdGhlIHN0cnVjdHVyZSBvZiBkYXlzIGluIGEgbW9udGggZm9yIHRoZSBjYWxlbmRhciBkaXNwbGF5LlxyXG4gICAqIFRoaXMgbWV0aG9kIGdlbmVyYXRlcyBhIG1hdHJpeCBvZiBkYXkgZGF0YSBvYmplY3RzIHJlcHJlc2VudGluZyB0aGUgZGF5cyBpbiB0aGUgY2FsZW5kYXIuXHJcbiAgICogRWFjaCBkYXkgZGF0YSBvYmplY3QgY29udGFpbnMgdGhlIGRhdGUgYW5kIHdoZXRoZXIgaXQgYmVsb25ncyB0byB0aGUgY3VycmVudCBtb250aC5cclxuICAgKiBAcmV0dXJucyBBIG1hdHJpeCBvZiBkYXkgZGF0YSBvYmplY3RzIGZvciB0aGUgY2FsZW5kYXIgZGlzcGxheS5cclxuICAgKi9cclxuICBwcml2YXRlIGNhbGN1bGF0ZUZpcnN0RGF5T2ZDYWxlbmRhcigpIHtcclxuICAgIGNvbnN0IHllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xyXG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xyXG4gICAgY29uc3QgZmlyc3RXZWVrZGF5ID0gZmlyc3REYXlPZk1vbnRoLmdldERheSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXkgPSBmaXJzdFdlZWtkYXkgPT09IDAgPyAtNSA6IDIgLSBmaXJzdFdlZWtkYXk7XHJcbiAgICBjb25zdCBjYWxlbmRhckRheXMgPSBbXTtcclxuICAgIGxldCBjdXJyZW50RGF5ID0gc3RhcnREYXk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykge1xyXG4gICAgICBjb25zdCB3ZWVrID0gW107XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgNzsgaisrKSB7XHJcbiAgICAgICAgY29uc3QgZGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIGN1cnJlbnREYXkpO1xyXG4gICAgICAgIGNvbnN0IGRheURhdGEgPSB7XHJcbiAgICAgICAgICBkYXRlOiBkYXksXHJcbiAgICAgICAgICBpc0N1cnJlbnRNb250aDogY3VycmVudERheSA+PSAxICYmIGN1cnJlbnREYXkgPD0gdGhpcy5kYXlzSW5Nb250aCh5ZWFyLCBtb250aCksXHJcbiAgICAgICAgfTtcclxuICAgICAgICB3ZWVrLnB1c2goZGF5RGF0YSk7XHJcbiAgICAgICAgY3VycmVudERheSsrO1xyXG4gICAgICB9XHJcbiAgICAgIGNhbGVuZGFyRGF5cy5wdXNoKHdlZWspO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNhbGVuZGFyRGF5cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGEgZ2l2ZW4gZGF0ZSBpcyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGRhdGUgaW4gdGhlIGNhbGVuZGFyLlxyXG4gICAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gY2hlY2suXHJcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBwcm92aWRlZCBkYXRlIG1hdGNoZXMgdGhlIHNlbGVjdGVkIGRhdGUsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyBzZWxlY3RlZFxyXG4gICAqIGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmlzRGF0ZVNlbGVjdGVkKHNvbWVEYXRlKTtcclxuICAgKiBgYGBcclxuICAgKi9cclxuICBwcml2YXRlIGlzRGF0ZVNlbGVjdGVkKGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiBkYXRlLnRvRGF0ZVN0cmluZygpID09PSB0aGlzLnNlbGVjdGVkRGF0ZS50b0RhdGVTdHJpbmcoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoZWNrIGlmIGEgZGF0ZSBzdHJpbmcgaXMgdmFsaWQgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBkYXRlIGZvcm1hdC5cclxuICAgKiBJdCBhbHNvIGNoZWNrcyB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgbnVtYmVyLCBtb250aCBpcyBjb3JyZWN0IGFuZCB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgb25lIGV4aXN0cyBhbW9uZyBjYWxlbmRhciB5ZWFyc1xyXG4gICAqIEBwYXJhbSBpbnB1dERhdGUgLSBUaGUgZGF0ZSBzdHJpbmcgdG8gdmFsaWRhdGUuXHJcbiAgICogQHJldHVybnMgYHRydWVgIGlmIHRoZSBpbnB1dCBkYXRlIHN0cmluZyBpcyB2YWxpZCwgb3RoZXJ3aXNlIGBmYWxzZWAuXHJcbiAgICogYGBgXHJcbiAgICogLy8gQ2hlY2sgaWYgYSBkYXRlIHN0cmluZyBpcyB2YWxpZFxyXG4gICAqIGNvbnN0IGlzVmFsaWREYXRlID0gdGhpcy5pc0RhdGVWYWxpZCgnMDUvMjUvMjAyMycpO1xyXG4gICAqIGBgYFxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNEYXRlVmFsaWQoaW5wdXREYXRlOiBzdHJpbmcpIHtcclxuICAgIGlmICghdGhpcy5kYXRlUmVnRXhwLnRlc3QoaW5wdXREYXRlKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGFydHMgPSBpbnB1dERhdGUuc3BsaXQoJy8nKTtcclxuICAgIGNvbnN0IGRheSA9IHBhcnNlSW50KHBhcnRzWzBdLCAxMCk7XHJcbiAgICBjb25zdCBtb250aCA9IHBhcnNlSW50KHBhcnRzWzFdLCAxMCk7XHJcbiAgICBjb25zdCB5ZWFyID0gcGFyc2VJbnQocGFydHNbMl0sIDEwKTtcclxuXHJcbiAgICBpZiAoeWVhciA+IHRoaXMueWVhcnNbdGhpcy55ZWFycy5sZW5ndGggLSAxXSB8fCB5ZWFyIDwgdGhpcy55ZWFyc1swXSkge1xyXG4gICAgICByZXR1cm4gZmFsc2VcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXlzSW5Nb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XHJcbiAgICByZXR1cm4gZGF5IDw9IGRheXNJbk1vbnRoO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2sgaWYgYSBnaXZlbiBkYXRlIGlzIHRvZGF5J3MgZGF0ZS5cclxuICAgKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGNoZWNrLlxyXG4gICAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyB0b2RheSdzIGRhdGUsIG90aGVyd2lzZSBgZmFsc2VgLlxyXG4gICAqIGBgYFxyXG4gICAqIC8vIENoZWNrIGlmIGEgZGF0ZSBpcyB0b2RheSdzIGRhdGVcclxuICAgKiBjb25zdCBpc1RvZGF5ID0gdGhpcy5pc0RhdGVUb2RheShzb21lRGF0ZSk7XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBpc0RhdGVUb2RheShkYXRlOiBEYXRlKSB7XHJcbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICByZXR1cm4gZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gdG9kYXkudG9EYXRlU3RyaW5nKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJkYXRlcGlja2VyLWNvbnRhaW5lclwiIFtjbGFzcy5kaXNhYmxlZF09XCJkaXNhYmxlZFwiPlxyXG5cclxuICA8IS0tIElucHV0LCBzYXZlICYgZWRpdCBidXR0b25zIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgPGxhYmVsICpuZ0lmPVwibGFiZWxDb250ZW50VGV4dFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPiB7eyBsYWJlbENvbnRlbnRUZXh0IH19IDwvbGFiZWw+XHJcbiAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdjYWxlbmRhck5vdE9wZW5lZCc6ICFpc0NhbGVuZGFyT3BlbiB9XCJcclxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JvcmRlci1jb2xvcic6IGlzVXNlckRhdGVWYWxpZCA/ICcnIDogJ3JlZCcgfVwiXHJcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXHJcbiAgICAgICAgICAoaW5wdXQpPVwib25EYXRlSW5wdXQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiaXNDYWxlbmRhck9wZW4gPSB0cnVlXCJcclxuICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZWREYXRlXCJcclxuICAgICAgICAgIFtyZWFkT25seV09XCIhaXNDYWxlbmRhck9wZW5cIlxyXG4gICAgICAgID5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8IS0tIENhbGVuZGFyKERyb3Bkb3ducywgZGF0ZXMpIC0tPlxyXG4gIDxkaXYgKm5nSWY9XCJpc0NhbGVuZGFyT3BlblwiIGNsYXNzPVwiY2FsZW5kYXJcIiAjY2FsZW5kYXJDb250YWluZXJcclxuICAgICAgIFtzdHlsZS50b3BdPVwidG9wT2Zmc2V0XCJcclxuICAgICAgIFtzdHlsZS5sZWZ0XT1cImxlZnRPZmZzZXRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoQnV0dG9uQ29udGFpbmVyXCI+XHJcbiAgICAgICAgPCEtLSBNb250aCBkcm9wZG93biAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNNb250aERyb3Bkb3duT3BlbjsgZWxzZSBtb250aExhYmVsXCI+XHJcbiAgICAgICAgICA8bWVmZGV2LXNlbGVjdFxyXG4gICAgICAgICAgICBjbGFzcz1cIm1vbnRoRHJvcGRvd25cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZU1vbnRoXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25Nb250aENoYW5nZSgpXCJcclxuICAgICAgICAgICAgW1BsYWNlSG9sZGVyXT1cIidtb250aCdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWVmZGV2LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBtb250aCBvZiBtb250aHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgICAgICAgICAgIFtWYWx1ZV09XCJpXCJcclxuICAgICAgICAgICAgICBbTGFiZWxdPVwibW9udGhcIlxyXG4gICAgICAgICAgICAgIHN0eWxlPVwiei1pbmRleDogMVwiXHJcbiAgICAgICAgICAgID57eyBtb250aCB9fTwvbWVmZGV2LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWVmZGV2LXNlbGVjdD5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI21vbnRoTGFiZWw+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlTW9udGhEcm9wZG93bigkZXZlbnQpXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS0gWWVhciBkcm9wZG93biAtLT5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNZZWFyRHJvcGRvd25PcGVuOyBlbHNlIHllYXJMYWJlbFwiPlxyXG4gICAgICAgICAgPG1lZmRldi1zZWxlY3RcclxuICAgICAgICAgICAgY2xhc3M9XCJ5ZWFyRHJvcGRvd25cIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlbGVjdGVkRGF0ZVllYXJcIlxyXG4gICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvblllYXJDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgIFtQbGFjZUhvbGRlcl09XCIneWVhcidcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWVmZGV2LW9wdGlvblxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB5ZWFyIG9mIHllYXJzXCJcclxuICAgICAgICAgICAgICBbTGFiZWxdPVwieWVhclwiXHJcbiAgICAgICAgICAgICAgW1ZhbHVlXT1cInllYXJcIlxyXG4gICAgICAgICAgICA+e3t5ZWFyfX08L21lZmRldi1vcHRpb24+XHJcbiAgICAgICAgICA8L21lZmRldi1zZWxlY3Q+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICN5ZWFyTGFiZWw+XHJcbiAgICAgICAgICA8c3BhbiAoY2xpY2spPVwidG9nZ2xlWWVhckRyb3Bkb3duKCRldmVudClcIj57eyBzZWxlY3RlZERhdGVZZWFyIH19PC9zcGFuPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIENhbGVuZGFyIGV4aXQgYnV0dG9uIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXMgdG9nZ2xlQ2FsZW5kYXJCdXR0b25cIiAoY2xpY2spPVwiaXNDYWxlbmRhck9wZW4gPSBmYWxzZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPlxyXG4gICAgICA8dGFibGU+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgPHRoIGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdGb3I9XCJsZXQgd2Vla2RheSBvZiB3ZWVrZGF5c1wiPnt7IHdlZWtkYXkgfX08L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGNhbGVuZGFyRGF5c1wiPlxyXG4gICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBkYXlEYXRhIG9mIHdlZWtcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheURhdGEuZGF0ZSlcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3NlbGVjdGVkJzogaXNEYXRlU2VsZWN0ZWQoZGF5RGF0YS5kYXRlKSwgJ3ByZXYtbW9udGgnOiAhZGF5RGF0YS5pc0N1cnJlbnRNb250aCB9XCI+XHJcblxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGVcIiBbY2xhc3MucHJldi1tb250aF09XCIhZGF5RGF0YS5pc0N1cnJlbnRNb250aFwiPlxyXG4gICAgICAgICAgICAgIHt7IGRheURhdGEuZGF0ZS5nZXREYXRlKCkgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -5,11 +5,11 @@ import { FormsModule } from '@angular/forms';
|
|
|
5
5
|
import { MefDevSelectModule } from '../../../pg-components/select';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export class MefDevDatepickerModule {
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
9
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.
|
|
10
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.
|
|
8
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: MefDevDatepickerModule, declarations: [DatepickerComponent], imports: [CommonModule, FormsModule, DatePipe, MefDevSelectModule], exports: [DatepickerComponent] });
|
|
10
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevDatepickerModule, providers: [DatePipe], imports: [CommonModule, FormsModule, MefDevSelectModule] });
|
|
11
11
|
}
|
|
12
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevDatepickerModule, decorators: [{
|
|
13
13
|
type: NgModule,
|
|
14
14
|
args: [{
|
|
15
15
|
declarations: [DatepickerComponent],
|
|
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
18
18
|
providers: [DatePipe]
|
|
19
19
|
}]
|
|
20
20
|
}] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9kYXRlcGlja2VyL2RhdGVwaWNrZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBVW5FLE1BQU0sT0FBTyxzQkFBc0I7d0dBQXRCLHNCQUFzQjt5R0FBdEIsc0JBQXNCLGlCQUxsQixtQkFBbUIsYUFFeEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLGFBRHZELG1CQUFtQjt5R0FJbEIsc0JBQXNCLGFBRnZCLENBQUMsUUFBUSxDQUFDLFlBRFYsWUFBWSxFQUFFLFdBQVcsRUFBWSxrQkFBa0I7OzRGQUd0RCxzQkFBc0I7a0JBTmxDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUM5QixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQztvQkFDbEUsU0FBUyxFQUFDLENBQUMsUUFBUSxDQUFDO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9kYXRlcGlja2VyL2RhdGVwaWNrZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1lZkRldlNlbGVjdE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL3BnLWNvbXBvbmVudHMvc2VsZWN0JztcclxuXHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBkZWNsYXJhdGlvbnM6IFtEYXRlcGlja2VyQ29tcG9uZW50XSxcclxuICBleHBvcnRzOiBbRGF0ZXBpY2tlckNvbXBvbmVudF0sXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIERhdGVQaXBlLCBNZWZEZXZTZWxlY3RNb2R1bGVdLFxyXG4gIHByb3ZpZGVyczpbRGF0ZVBpcGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWZEZXZEYXRlcGlja2VyTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -62,11 +62,11 @@ export class FilteredFieldContainerComponent {
|
|
|
62
62
|
this.items.push(item);
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
66
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
65
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldContainerComponent, deps: [{ token: i1.FilteredFieldService }], target: i0.ɵɵFactoryTarget.Component });
|
|
66
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilteredFieldContainerComponent, selector: "mefdev-filtered-field-container", ngImport: i0, template: "<div class=\"item-container\">\r\n <mefdev-filtered-field-item *ngFor=\"let item of items\" [item]=\"item\" (discard)=\"onDiscard(item)\" (openFilter)=\"onOpenFilter(item)\"></mefdev-filtered-field-item>\r\n</div>\r\n", styles: [".item-container{display:flex;cursor:context-menu}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: i3.FilteredFieldItemComponent, selector: "mefdev-filtered-field-item", inputs: ["item"], outputs: ["discard", "openFilter"] }] });
|
|
67
67
|
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
68
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldContainerComponent, decorators: [{
|
|
69
69
|
type: Component,
|
|
70
70
|
args: [{ selector: 'mefdev-filtered-field-container', template: "<div class=\"item-container\">\r\n <mefdev-filtered-field-item *ngFor=\"let item of items\" [item]=\"item\" (discard)=\"onDiscard(item)\" (openFilter)=\"onOpenFilter(item)\"></mefdev-filtered-field-item>\r\n</div>\r\n", styles: [".item-container{display:flex;cursor:context-menu}\n"] }]
|
|
71
71
|
}], ctorParameters: function () { return [{ type: i1.FilteredFieldService }]; } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyZWQtZmllbGQtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL2xpYi9tYXJrdXAta2l0L3V0aWxzL2ZpbHRlcmVkLWZpZWxkL2ZpbHRlcmVkLWZpZWxkLWNvbnRhaW5lci9maWx0ZXJlZC1maWVsZC1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkta2l0LWxpYi9zcmMvbGliL21hcmt1cC1raXQvdXRpbHMvZmlsdGVyZWQtZmllbGQvZmlsdGVyZWQtZmllbGQtY29udGFpbmVyL2ZpbHRlcmVkLWZpZWxkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDOzs7OztBQUloRDs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQU1KLE1BQU0sT0FBTywrQkFBK0I7SUFRaEM7SUFOVjs7T0FFRztJQUNILEtBQUssR0FBdUIsRUFBRSxDQUFDO0lBRS9CLFlBQ1UsT0FBNkI7UUFBN0IsWUFBTyxHQUFQLE9BQU8sQ0FBc0I7SUFDakMsQ0FBQztJQUVQOzs7O09BSUc7SUFDSCxZQUFZLENBQUMsSUFBc0I7UUFDakMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVDOzs7O0tBSUM7SUFDSCxTQUFTLENBQUMsSUFBc0I7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUVsRCxJQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUM7Z0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLE9BQU87YUFDUjtZQUVELElBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLEVBQUU7Z0JBQzFFLE9BQU87YUFDUjtZQUVELElBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDO2dCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO2dCQUNyQixPQUFPO2FBQ1I7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7d0dBcERVLCtCQUErQjs0RkFBL0IsK0JBQStCLHVFQ3hCNUMsOE5BR0E7OzRGRHFCYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0UsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdGVyZWRGaWVsZFNlcnZpY2UgfSBmcm9tICcuLi9maWx0ZXJlZC1maWVsZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRmlsdHJlZEl0ZW1Nb2RlbCB9IGZyb20gJy4uL2ZpbHRyZWQtaXRlbS5tb2RlbCc7XHJcblxyXG4gIC8qKlxyXG4gICogQSBjb250YWluZXIgY29tcG9uZW50IGZvciBmaWx0ZXJlZCBmaWVsZHMuXHJcbiAgKlxyXG4gICogRXhhbXBsZSBvZiB1c2FnZTpcclxuICAqIGBgYFxyXG4gICogPG1lZmRldi1maWx0ZXJlZC1maWVsZC1jb250YWluZXI+XHJcbiAgKiBcclxuICAqIDxtZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbSBbaXRlbV09XCJmaWx0ZXJJdGVtXCIgKGRpc2NhcmQpPVwib25EaXNjYXJkRmlsdGVyKCRldmVudClcIiAob3BlbkZpbHRlcik9XCJvbk9wZW5GaWx0ZXIoKVwiPlxyXG4gICogPC9tZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbT5cclxuICAqXHJcbiAgKiA8L21lZmRldi1maWx0ZXJlZC1maWVsZC1jb250YWluZXI+XHJcbiAgKiBgYGBcclxuICAqIEV4YW1wbGUgb2YgdXNhZ2U6XHJcbiAgKiA8ZXhhbXBsZS11cmw+aHR0cHM6Ly9tZWYuZGV2L3VpX2tpdF9kZW1vL3ZpZXcvdXRpbHMvZmlsdGVyZWRfZmllbGQ8L2V4YW1wbGUtdXJsPlxyXG4gICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWZpbHRlcmVkLWZpZWxkLWNvbnRhaW5lcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbHRlcmVkLWZpZWxkLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmlsdGVyZWQtZmllbGQtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcmVkRmllbGRDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhcnJheSBvZiBmaWx0ZXJlZCBpdGVtIG1vZGVscy5cclxuICAgKi9cclxuICBpdGVtczogRmlsdHJlZEl0ZW1Nb2RlbFtdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBGaWx0ZXJlZEZpZWxkU2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgaGFuZGxlciBmb3Igb3BlbmluZyB0aGUgZmlsdGVyLlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGZpbHRlcmVkIGl0ZW0gbW9kZWwuXHJcbiAgICovXHJcbiAgb25PcGVuRmlsdGVyKGl0ZW06IEZpbHRyZWRJdGVtTW9kZWwpe1xyXG4gICAgdGhpcy5zZXJ2aWNlLnNlbmRPcGVuRmlsdGVyKGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBFdmVudCBoYW5kbGVyIGZvciBkaXNjYXJkaW5nIHRoZSBmaWx0ZXIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgZmlsdGVyZWQgaXRlbSBtb2RlbC5cclxuICAgKi9cclxuICBvbkRpc2NhcmQoaXRlbTogRmlsdHJlZEl0ZW1Nb2RlbCl7XHJcbiAgICBpdGVtLmRpc2NhcmQoaXRlbS5zdGFuZGFydFZhbHVlKTtcclxuICAgIHRoaXMuaXRlbXMuc3BsaWNlKHRoaXMuaXRlbXMuZmluZEluZGV4KHggPT4geC5pZCA9PSBpdGVtLmlkKSwgMSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VydmljZS5nZXROZXdGaWx0ZXJJdGVtKCkuc3Vic2NyaWJlKGl0ZW0gPT4ge1xyXG4gICAgICBsZXQgaSA9IHRoaXMuaXRlbXMuZmluZEluZGV4KHggPT4geC5pZCA9PSBpdGVtLmlkKVxyXG5cclxuICAgICAgaWYoaSAhPSAtMSAmJiBpdGVtLm5ld1ZhbHVlID09IGl0ZW0uc3RhbmRhcnRWYWx1ZSl7XHJcbiAgICAgICAgdGhpcy5pdGVtc1tpXSA9IGl0ZW07XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaSwgMSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZihpID09IC0xICYmIChpdGVtLm5ld1ZhbHVlID09IGl0ZW0uc3RhbmRhcnRWYWx1ZSB8fCBpdGVtLm5ld1ZhbHVlID09ICcnKSApe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoaSAhPSAtMSl7XHJcbiAgICAgICAgdGhpcy5pdGVtc1tpXSA9IGl0ZW07XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLml0ZW1zLnB1c2goaXRlbSk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIml0ZW0tY29udGFpbmVyXCI+XHJcbiAgICA8bWVmZGV2LWZpbHRlcmVkLWZpZWxkLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIiBbaXRlbV09XCJpdGVtXCIgKGRpc2NhcmQpPVwib25EaXNjYXJkKGl0ZW0pXCIgKG9wZW5GaWx0ZXIpPVwib25PcGVuRmlsdGVyKGl0ZW0pXCI+PC9tZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbT5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -55,10 +55,10 @@ export class FilteredFieldItemComponent {
|
|
|
55
55
|
onDiscard() {
|
|
56
56
|
this.discard.next(this.item);
|
|
57
57
|
}
|
|
58
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
59
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
58
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: FilteredFieldItemComponent, selector: "mefdev-filtered-field-item", inputs: { item: "item" }, outputs: { discard: "discard", openFilter: "openFilter" }, ngImport: i0, template: "<div class=\"item\">\r\n <i class=\"fa fa-times\" (click)=\"onDiscard()\" style=\"margin-right: 3px; cursor: pointer;\"></i> \r\n <span (click)=\"onOpenFilter()\">{{item.newValue}}</span>\r\n</div>\r\n", styles: [".color-black{color:#000!important}.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.color-dark-link{color:#50c0ff!important}.b-color-black{background-color:#000!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.b-color-dark-link{background-color:#50c0ff!important}.item{background-color:#4d4d4d;color:#fff;border-radius:5px;margin-right:7px;padding:3px 7px}\n"] });
|
|
60
60
|
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
61
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldItemComponent, decorators: [{
|
|
62
62
|
type: Component,
|
|
63
63
|
args: [{ selector: 'mefdev-filtered-field-item', template: "<div class=\"item\">\r\n <i class=\"fa fa-times\" (click)=\"onDiscard()\" style=\"margin-right: 3px; cursor: pointer;\"></i> \r\n <span (click)=\"onOpenFilter()\">{{item.newValue}}</span>\r\n</div>\r\n", styles: [".color-black{color:#000!important}.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.color-dark-link{color:#50c0ff!important}.b-color-black{background-color:#000!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.b-color-dark-link{background-color:#50c0ff!important}.item{background-color:#4d4d4d;color:#fff;border-radius:5px;margin-right:7px;padding:3px 7px}\n"] }]
|
|
64
64
|
}], ctorParameters: function () { return []; }, propDecorators: { item: [{
|
|
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
68
68
|
}], openFilter: [{
|
|
69
69
|
type: Output
|
|
70
70
|
}] } });
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyZWQtZmllbGQtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9maWx0ZXJlZC1maWVsZC9maWx0ZXJlZC1maWVsZC1pdGVtL2ZpbHRlcmVkLWZpZWxkLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkta2l0LWxpYi9zcmMvbGliL21hcmt1cC1raXQvdXRpbHMvZmlsdGVyZWQtZmllbGQvZmlsdGVyZWQtZmllbGQtaXRlbS9maWx0ZXJlZC1maWVsZC1pdGVtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRy9FOzs7Ozs7Ozs7RUFTRTtBQU1GLE1BQU0sT0FBTywwQkFBMEI7SUFFckM7Ozs7Ozs7T0FPRztJQUNNLElBQUksQ0FBbUI7SUFFaEM7Ozs7Ozs7T0FPRztJQUNPLE9BQU8sR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztJQUV6RDs7Ozs7OztPQU9HO0lBQ08sVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFFL0MsZ0JBQWdCLENBQUM7SUFFakIsUUFBUTtJQUNSLENBQUM7SUFHRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUdEOzs7T0FHRztJQUNILFNBQVM7UUFDUCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQzt3R0FyRFUsMEJBQTBCOzRGQUExQiwwQkFBMEIsdUpDbEJ2QyxpTkFJQTs7NEZEY2EsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLDRCQUE0QjswRUFjN0IsSUFBSTtzQkFBWixLQUFLO2dCQVVJLE9BQU87c0JBQWhCLE1BQU07Z0JBVUcsVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRmlsdHJlZEl0ZW1Nb2RlbCB9IGZyb20gJy4uL2ZpbHRyZWQtaXRlbS5tb2RlbCc7XHJcblxyXG4vKipcclxuICAqIENvbXBvbmVudCByZXByZXNlbnRpbmcgYSBmaWx0ZXJlZCBmaWVsZCBpdGVtLlxyXG4gICogXHJcbiAgKiBFeGFtcGxlIG9mIHVzYWdlOlxyXG4gICogYGBgXHJcbiAgKiA8bWVmZGV2LWZpbHRlcmVkLWZpZWxkLWl0ZW0gW2l0ZW1dPVwiZmlsdGVySXRlbVwiIChkaXNjYXJkKT1cIm9uRGlzY2FyZEZpbHRlcigkZXZlbnQpXCIgKG9wZW5GaWx0ZXIpPVwib25PcGVuRmlsdGVyKClcIj5cclxuICAqIDwvbWVmZGV2LWZpbHRlcmVkLWZpZWxkLWl0ZW0+XHJcbiAgKmBgYCBcclxuICAqXHJcbiovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWZpbHRlcmVkLWZpZWxkLWl0ZW0nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9maWx0ZXJlZC1maWVsZC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9maWx0ZXJlZC1maWVsZC1pdGVtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcmVkRmllbGRJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZpbHRlcmVkIGl0ZW0gbW9kZWwuXHJcbiAgICogYGBgXHJcbiAgICogPG1lZmRldi1maWx0ZXJlZC1maWVsZC1pdGVtIFtpdGVtXT1cImZpbHRlckl0ZW1cIj5cclxuICAgKiBDb250ZW50IGdvZXMgaGVyZS4uLlxyXG4gICAqIDwvbWVmZGV2LWZpbHRlcmVkLWZpZWxkLWl0ZW0+XHJcbiAgICogYGBgXHJcbiAgICovXHJcbiAgQElucHV0KCkgaXRlbTogRmlsdHJlZEl0ZW1Nb2RlbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmaWx0ZXIgaXMgZGlzY2FyZGVkLlxyXG4gICAqIGBgYFxyXG4gICAqIDxtZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbSAoZGlzY2FyZCk9XCJvbkRpc2NhcmRGaWx0ZXIoJGV2ZW50KVwiPlxyXG4gICAqIENvbnRlbnQgZ29lcyBoZXJlLi4uXHJcbiAgICogPC9tZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbT5cclxuICAgKiBgYGBcclxuICAgKi9cclxuICBAT3V0cHV0KCkgZGlzY2FyZCA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdHJlZEl0ZW1Nb2RlbD4oKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBmaWx0ZXIgaXMgb3BlbmVkLlxyXG4gICAqIGBgYFxyXG4gICAqIDxtZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbSAob3BlbkZpbHRlcik9XCJvbk9wZW5GaWx0ZXIoKVwiPlxyXG4gICAqIENvbnRlbnQgZ29lcyBoZXJlLi4uXHJcbiAgICogPC9tZWZkZXYtZmlsdGVyZWQtZmllbGQtaXRlbT5cclxuICAgKiBgYGBcclxuICAgKi9cclxuICBAT3V0cHV0KCkgb3BlbkZpbHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICB9XHJcblxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIG9wZW5pbmcgdGhlIGZpbHRlci5cclxuICAgKiBFbWl0cyB0aGUgYG9wZW5GaWx0ZXJgIGV2ZW50LlxyXG4gICAqL1xyXG4gIG9uT3BlbkZpbHRlcigpe1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyLm5leHQoe30pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEV2ZW50IGhhbmRsZXIgZm9yIGRpc2NhcmRpbmcgdGhlIGZpbHRlci5cclxuICAgKiBFbWl0cyB0aGUgYGRpc2NhcmRgIGV2ZW50IHdpdGggdGhlIGBpdGVtYCBhcyB0aGUgcGF5bG9hZC5cclxuICAgKi9cclxuICBvbkRpc2NhcmQoKXtcclxuICAgIHRoaXMuZGlzY2FyZC5uZXh0KHRoaXMuaXRlbSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaXRlbVwiPlxyXG4gICAgPGkgY2xhc3M9XCJmYSBmYS10aW1lc1wiIChjbGljayk9XCJvbkRpc2NhcmQoKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAzcHg7IGN1cnNvcjogcG9pbnRlcjtcIj48L2k+IFxyXG4gICAgPHNwYW4gKGNsaWNrKT1cIm9uT3BlbkZpbHRlcigpXCI+e3tpdGVtLm5ld1ZhbHVlfX08L3NwYW4+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -4,13 +4,13 @@ import { FilteredFieldContainerComponent } from './filtered-field-container/filt
|
|
|
4
4
|
import { FilteredFieldItemComponent } from './filtered-field-item/filtered-field-item.component';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
6
|
export class MefDevFilteredFieldModule {
|
|
7
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
8
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.
|
|
7
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevFilteredFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
8
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: MefDevFilteredFieldModule, declarations: [FilteredFieldContainerComponent,
|
|
9
9
|
FilteredFieldItemComponent], imports: [CommonModule], exports: [FilteredFieldItemComponent,
|
|
10
10
|
FilteredFieldContainerComponent] });
|
|
11
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.
|
|
11
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevFilteredFieldModule, imports: [CommonModule] });
|
|
12
12
|
}
|
|
13
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MefDevFilteredFieldModule, decorators: [{
|
|
14
14
|
type: NgModule,
|
|
15
15
|
args: [{
|
|
16
16
|
declarations: [
|
|
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
26
26
|
]
|
|
27
27
|
}]
|
|
28
28
|
}] });
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyZWQtZmllbGQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkta2l0LWxpYi9zcmMvbGliL21hcmt1cC1raXQvdXRpbHMvZmlsdGVyZWQtZmllbGQvZmlsdGVyZWQtZmllbGQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQ2hILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQWVqRyxNQUFNLE9BQU8seUJBQXlCO3dHQUF6Qix5QkFBeUI7eUdBQXpCLHlCQUF5QixpQkFYbEMsK0JBQStCO1lBQy9CLDBCQUEwQixhQU8xQixZQUFZLGFBSlosMEJBQTBCO1lBQzFCLCtCQUErQjt5R0FNdEIseUJBQXlCLFlBSGxDLFlBQVk7OzRGQUdILHlCQUF5QjtrQkFickMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osK0JBQStCO3dCQUMvQiwwQkFBMEI7cUJBQzNCO29CQUNELE9BQU8sRUFBQzt3QkFDTiwwQkFBMEI7d0JBQzFCLCtCQUErQjtxQkFDaEM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7cUJBQ2I7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGaWx0ZXJlZEZpZWxkQ29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXJlZC1maWVsZC1jb250YWluZXIvZmlsdGVyZWQtZmllbGQtY29udGFpbmVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlcmVkRmllbGRJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9maWx0ZXJlZC1maWVsZC1pdGVtL2ZpbHRlcmVkLWZpZWxkLWl0ZW0uY29tcG9uZW50JztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBGaWx0ZXJlZEZpZWxkQ29udGFpbmVyQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyZWRGaWVsZEl0ZW1Db21wb25lbnQsXHJcbiAgXSxcclxuICBleHBvcnRzOltcclxuICAgIEZpbHRlcmVkRmllbGRJdGVtQ29tcG9uZW50LFxyXG4gICAgRmlsdGVyZWRGaWVsZENvbnRhaW5lckNvbXBvbmVudFxyXG4gIF0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWVmRGV2RmlsdGVyZWRGaWVsZE1vZHVsZSB7IH1cclxuIl19
|
|
@@ -31,13 +31,13 @@ export class FilteredFieldService {
|
|
|
31
31
|
sendNewFilterItem(item) {
|
|
32
32
|
this.newFilterItem.next(item);
|
|
33
33
|
}
|
|
34
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
35
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.
|
|
34
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
35
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldService, providedIn: 'root' });
|
|
36
36
|
}
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilteredFieldService, decorators: [{
|
|
38
38
|
type: Injectable,
|
|
39
39
|
args: [{
|
|
40
40
|
providedIn: 'root'
|
|
41
41
|
}]
|
|
42
42
|
}], ctorParameters: function () { return []; } });
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyZWQtZmllbGQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLWtpdC1saWIvc3JjL2xpYi9tYXJrdXAta2l0L3V0aWxzL2ZpbHRlcmVkLWZpZWxkL2ZpbHRlcmVkLWZpZWxkLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQU0zQyxNQUFNLE9BQU8sb0JBQW9CO0lBRXZCLGFBQWEsR0FBOEIsSUFBSSxPQUFPLEVBQW9CLENBQUM7SUFDM0UsVUFBVSxHQUE4QixJQUFJLE9BQU8sRUFBb0IsQ0FBQztJQUVoRixnQkFBZSxDQUFDO0lBRWQ7O0tBRUM7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUM7OztLQUdDO0lBQ0ksY0FBYyxDQUFDLElBQXNCO1FBQzFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFQzs7S0FFQztJQUNJLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVDOzs7S0FHQztJQUNJLGlCQUFpQixDQUFDLElBQXNCO1FBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7d0dBbkNVLG9CQUFvQjs0R0FBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRmlsdHJlZEl0ZW1Nb2RlbCB9IGZyb20gJy4vZmlsdHJlZC1pdGVtLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcmVkRmllbGRTZXJ2aWNlIHtcclxuXHJcbiAgcHJpdmF0ZSBuZXdGaWx0ZXJJdGVtOiBTdWJqZWN0PEZpbHRyZWRJdGVtTW9kZWw+ID0gbmV3IFN1YmplY3Q8RmlsdHJlZEl0ZW1Nb2RlbD4oKTtcclxuICBwcml2YXRlIG9wZW5GaWx0ZXI6IFN1YmplY3Q8RmlsdHJlZEl0ZW1Nb2RlbD4gPSBuZXcgU3ViamVjdDxGaWx0cmVkSXRlbU1vZGVsPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gICAgLyoqXHJcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIG9wZW4gZmlsdGVyIGV2ZW50cy5cclxuICAgKi9cclxuICBwdWJsaWMgZ2V0T3BlbkZpbHRlcigpOiBPYnNlcnZhYmxlPEZpbHRyZWRJdGVtTW9kZWw+e1xyXG4gICAgcmV0dXJuIHRoaXMub3BlbkZpbHRlcjtcclxuICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICogU2VuZHMgYW4gb3BlbiBmaWx0ZXIgZXZlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGl0ZW0uXHJcbiAgICogQHBhcmFtIGl0ZW0gVGhlIGZpbHRlcmVkIGl0ZW0gbW9kZWwuXHJcbiAgICovXHJcbiAgcHVibGljIHNlbmRPcGVuRmlsdGVyKGl0ZW06IEZpbHRyZWRJdGVtTW9kZWwpe1xyXG4gICAgdGhpcy5vcGVuRmlsdGVyLm5leHQoaXRlbSk7XHJcbiAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBuZXcgZmlsdGVyIGl0ZW0gZXZlbnRzLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBnZXROZXdGaWx0ZXJJdGVtKCk6IE9ic2VydmFibGU8RmlsdHJlZEl0ZW1Nb2RlbD57XHJcbiAgICByZXR1cm4gdGhpcy5uZXdGaWx0ZXJJdGVtO1xyXG4gIH1cclxuXHJcbiAgICAvKipcclxuICAgKiBTZW5kcyBhIG5ldyBmaWx0ZXIgaXRlbSBldmVudCB3aXRoIHRoZSBzcGVjaWZpZWQgaXRlbS5cclxuICAgKiBAcGFyYW0gaXRlbSBUaGUgZmlsdGVyZWQgaXRlbSBtb2RlbC5cclxuICAgKi9cclxuICBwdWJsaWMgc2VuZE5ld0ZpbHRlckl0ZW0oaXRlbTogRmlsdHJlZEl0ZW1Nb2RlbCl7XHJcbiAgICB0aGlzLm5ld0ZpbHRlckl0ZW0ubmV4dChpdGVtKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -35,8 +35,8 @@ export class HelpBlockComponent {
|
|
|
35
35
|
constructor() { }
|
|
36
36
|
ngOnInit() {
|
|
37
37
|
}
|
|
38
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.
|
|
39
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HelpBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
39
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: HelpBlockComponent, selector: "mefdev-help-block", inputs: { title: "title" }, ngImport: i0, template: "<div class=\"card-simple\" *ngIf=\"isVisible\">\r\n <div class=\"row m-1 body-1\" (click)=\"expanded = !expanded\" style=\"cursor: pointer;\">\r\n <div class=\"col-10\" style=\"color: white;\">\r\n {{ title }}\r\n </div>\r\n <div class=\"col-2\">\r\n <i class=\"fa fa-window-close\" aria-hidden=\"true\" style=\"float: right; margin-left: 20px;\" (click)=\"isVisible = !isVisible;\"></i>\r\n \r\n <i class=\"fa fa-angle-down \" *ngIf=\"!expanded\" aria-hidden=\"true\" style=\"float: right;\"></i>\r\n <i class=\"fa fa-angle-up\" *ngIf=\"expanded\" aria-hidden=\"true\" style=\"float: right;\"></i> \r\n </div>\r\n </div>\r\n\r\n <div class=\"card-body row\" [@smothExpand]=\"expanded ? 'open' : 'close'\">\r\n <div class=\"col-12\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>", styles: [".color-black{color:#000!important}.color-Dark-Gray-1{color:#373737!important}.color-Dark-Gray-2{color:#4d4d4d!important}.color-Red{color:#cf0106!important}.color-Green{color:#28b446!important}.color-Light-Gray-1{color:#929292!important}.color-Light-Gray-2{color:#eaeaea!important}.color-Light-Gray-3{color:#f3f3f3!important}.color-White{color:#fff!important}.color-Link{color:#0185cf!important}.color-dark-link{color:#50c0ff!important}.b-color-black{background-color:#000!important}.b-color-Dark-Gray-1{background-color:#373737!important}.b-color-Dark-Gray-2{background-color:#4d4d4d!important}.b-color-Red{background-color:#cf0106!important}.b-color-Green{background-color:#28b446!important}.b-color-Light-Gray-1{background-color:#929292!important}.b-color-Light-Gray-2{background-color:#eaeaea!important}.b-color-Light-Gray-3{background-color:#f3f3f3!important}.b-color-White{background-color:#fff!important}.b-color-Link{background-color:#0185cf!important}.b-color-dark-link{background-color:#50c0ff!important}.card-simple{opacity:.7;background-color:#28b446;padding:2px;border-radius:5px;margin-top:.3em;margin-bottom:.5em}.card-body{opacity:1;margin-left:2px;margin-right:2px;margin-bottom:2px;border-radius:5px;padding-top:15px;padding-bottom:15px;background-color:#f3f3f3;color:#000}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
|
|
40
40
|
trigger('smothExpand', [
|
|
41
41
|
state('close', style({
|
|
42
42
|
height: '0',
|
|
@@ -50,7 +50,7 @@ export class HelpBlockComponent {
|
|
|
50
50
|
])
|
|
51
51
|
] });
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: HelpBlockComponent, decorators: [{
|
|
54
54
|
type: Component,
|
|
55
55
|
args: [{ selector: 'mefdev-help-block', animations: [
|
|
56
56
|
trigger('smothExpand', [
|
|
@@ -69,4 +69,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
69
69
|
type: Input,
|
|
70
70
|
args: ['title']
|
|
71
71
|
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC1ibG9jay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1raXQtbGliL3NyYy9saWIvbWFya3VwLWtpdC91dGlscy9oZWxwLWJsb2NrL2hlbHAtYmxvY2suY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWkta2l0LWxpYi9zcmMvbGliL21hcmt1cC1raXQvdXRpbHMvaGVscC1ibG9jay9oZWxwLWJsb2NrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWdCLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDcEYsT0FBTyxFQUNMLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sRUFDUCxVQUFVLEdBQ1gsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBRzNCOzs7Ozs7Ozs7OztFQVdDO0FBbUJILE1BQU0sT0FBTyxrQkFBa0I7SUFFN0I7O09BRUc7SUFDSCxTQUFTLEdBQVcsSUFBSSxDQUFDO0lBRXpCOztNQUVFO0lBQ0YsUUFBUSxHQUFXLEtBQUssQ0FBQztJQUd6Qjs7Ozs7OztRQU9JO0lBQ1ksS0FBSyxHQUFVLE1BQU0sQ0FBQztJQUV0QyxnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzt3R0ExQlUsa0JBQWtCOzRGQUFsQixrQkFBa0IscUZDeEMvQiwwNUJBa0JNLDQ1Q0RRTztZQUNULE9BQU8sQ0FBQyxhQUFhLEVBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO29CQUNuQixNQUFNLEVBQUUsR0FBRztvQkFDWCxNQUFNLEVBQUUsR0FBRztvQkFDWCxPQUFPLEVBQUUsR0FBRztvQkFDWixPQUFPLEVBQUUsR0FBRztvQkFDWixVQUFVLEVBQUUsUUFBUTtpQkFDckIsQ0FBQyxDQUFDO2dCQUNILEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4QixVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN6QyxDQUFDO1NBQ0g7OzRGQUVVLGtCQUFrQjtrQkFsQjlCLFNBQVM7K0JBQ0UsbUJBQW1CLGNBR2xCO3dCQUNULE9BQU8sQ0FBQyxhQUFhLEVBQUM7NEJBQ3BCLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDO2dDQUNuQixNQUFNLEVBQUUsR0FBRztnQ0FDWCxNQUFNLEVBQUUsR0FBRztnQ0FDWCxPQUFPLEVBQUUsR0FBRztnQ0FDWixPQUFPLEVBQUUsR0FBRztnQ0FDWixVQUFVLEVBQUUsUUFBUTs2QkFDckIsQ0FBQyxDQUFDOzRCQUNILEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzRCQUN4QixVQUFVLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQzt5QkFDekMsQ0FBQztxQkFDSDswRUF1QmUsS0FBSztzQkFBcEIsS0FBSzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgdHJpZ2dlcixcclxuICBzdGF0ZSxcclxuICBzdHlsZSxcclxuICBhbmltYXRlLFxyXG4gIHRyYW5zaXRpb24sXHJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcblxyXG5cclxuICAvKipcclxuICAqIEEgY29tcG9uZW50IHJlcHJlc2VudGluZyBhIGhlbHAgYmxvY2sgd2l0aCBzbW9vdGggZXhwYW5kIGFuaW1hdGlvbi5cclxuICAqXHJcbiAgKiAgRXhhbXBsZSBvZiB1c2FnZTpcclxuICAqYGBgXHJcbiAgKiA8bWVmZGV2LWhlbHAtYmxvY2sgW3RpdGxlXT1cIidIZWxwJ1wiPlxyXG4gICogIENvbnRlbnQgZ29lcyBoZXJlLi4uXHJcbiAgKiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgKiA8L21lZmRldi1oZWxwLWJsb2NrPlxyXG4gICpgYGBcclxuICAqIDxleGFtcGxlLXVybD5odHRwczovL21lZi5kZXYvdWlfa2l0X2RlbW8vdmlldy91dGlscy9oZWxwX2Jsb2NrPC9leGFtcGxlLXVybD5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbWVmZGV2LWhlbHAtYmxvY2snLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWxwLWJsb2NrLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWxwLWJsb2NrLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgYW5pbWF0aW9uczpbXHJcbiAgICB0cmlnZ2VyKCdzbW90aEV4cGFuZCcsW1xyXG4gICAgICBzdGF0ZSgnY2xvc2UnLCBzdHlsZSh7XHJcbiAgICAgICAgaGVpZ2h0OiAnMCcsXHJcbiAgICAgICAgbWFyZ2luOiAnMCcsXHJcbiAgICAgICAgcGFkZGluZzogJzAnLFxyXG4gICAgICAgIG9wYWNpdHk6ICcwJyxcclxuICAgICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJyxcclxuICAgICAgfSkpLFxyXG4gICAgICBzdGF0ZSgnb3BlbicsIHN0eWxlKHt9KSksXHJcbiAgICAgIHRyYW5zaXRpb24oJ2Nsb3NlPD0+b3BlbicsIGFuaW1hdGUoMjAwKSlcclxuICAgIF0pXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVscEJsb2NrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIGhlbHAgYmxvY2sgaXMgdmlzaWJsZS5cclxuICAgKi9cclxuICBpc1Zpc2libGU6Ym9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8qKlxyXG4gICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgaGVscCBibG9jayBpcyBleHBhbmRlZC5cclxuICAqL1xyXG4gIGV4cGFuZGVkOmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAgKiBUaGUgdGl0bGUgb2YgdGhlIGhlbHAgYmxvY2suXHJcbiAgICAqYGBgXHJcbiAgICAqIDxtZWZkZXYtaGVscC1ibG9jayBbdGl0bGVdPVwiJ0hlbHAgQmxvY2snXCI+XHJcbiAgICAqICAgIENvbnRlbnQgZ29lcyBoZXJlLi4uXHJcbiAgICAqIDwvbWVmZGV2LWhlbHAtYmxvY2s+XHJcbiAgICAqYGBgXHJcbiAgICAqL1xyXG4gIEBJbnB1dCgndGl0bGUnKSB0aXRsZTpzdHJpbmcgPSBcIkhlbHBcIjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2FyZC1zaW1wbGVcIiAqbmdJZj1cImlzVmlzaWJsZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvdyBtLTEgYm9keS0xXCIgKGNsaWNrKT1cImV4cGFuZGVkID0gIWV4cGFuZGVkXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiIHN0eWxlPVwiY29sb3I6IHdoaXRlO1wiPlxyXG4gICAgICAgICAgICB7eyB0aXRsZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXdpbmRvdy1jbG9zZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIHN0eWxlPVwiZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tbGVmdDogMjBweDtcIiAoY2xpY2spPVwiaXNWaXNpYmxlID0gIWlzVmlzaWJsZTtcIj48L2k+XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFuZ2xlLWRvd24gXCIgKm5nSWY9XCIhZXhwYW5kZWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzdHlsZT1cImZsb2F0OiByaWdodDtcIj48L2k+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYW5nbGUtdXBcIiAqbmdJZj1cImV4cGFuZGVkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgc3R5bGU9XCJmbG9hdDogcmlnaHQ7XCI+PC9pPiAgICAgIFxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSByb3dcIiBbQHNtb3RoRXhwYW5kXT1cImV4cGFuZGVkID8gJ29wZW4nIDogJ2Nsb3NlJ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|