igniteui-angular 18.2.11 → 18.2.12
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/action-strip/action-strip.component.mjs +1 -3
- package/esm2022/lib/action-strip/grid-actions/grid-action-button.component.mjs +2 -3
- package/esm2022/lib/calendar/calendar.component.mjs +3 -3
- package/esm2022/lib/calendar/month-picker/month-picker.component.mjs +2 -3
- package/esm2022/lib/calendar/months-view/months-view.component.mjs +12 -4
- package/esm2022/lib/calendar/years-view/years-view.component.mjs +11 -3
- package/esm2022/lib/dialog/dialog.component.mjs +2 -1
- package/esm2022/lib/drop-down/drop-down.component.mjs +2 -2
- package/esm2022/lib/grids/filtering/excel-style/excel-style-header.component.mjs +2 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-header-group.component.mjs +2 -3
- package/esm2022/lib/grids/pivot-grid/pivot-row-dimension-mrl-row.component.mjs +3 -6
- package/esm2022/lib/grids/pivot-grid/pivot-row-header-group.component.mjs +2 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +3 -3
- package/esm2022/lib/grids/toolbar/grid-toolbar-exporter.component.mjs +3 -3
- package/esm2022/lib/icon/icon.component.mjs +2 -3
- package/esm2022/lib/paginator/paginator.component.mjs +3 -5
- package/esm2022/lib/services/overlay/overlay.mjs +4 -2
- package/fesm2022/igniteui-angular.mjs +37 -21
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/calendar/months-view/months-view.component.d.ts +4 -0
- package/lib/calendar/years-view/years-view.component.d.ts +4 -0
- package/package.json +1 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { Component, ContentChild, Directive, EventEmitter, Host, HostBinding, Input, Output, forwardRef } from '@angular/core';
|
|
2
2
|
import { PaginatorResourceStringsEN } from '../core/i18n/paginator-resources';
|
|
3
3
|
import { IgxSelectItemComponent } from '../select/select-item.component';
|
|
4
|
-
import { IgxLabelDirective } from '../directives/label/label.directive';
|
|
5
4
|
import { FormsModule } from '@angular/forms';
|
|
6
5
|
import { IgxSelectComponent } from '../select/select.component';
|
|
7
6
|
import { IgxIconComponent } from '../icon/icon.component';
|
|
8
7
|
import { IgxRippleDirective } from '../directives/ripple/ripple.directive';
|
|
9
|
-
import { IgxButtonDirective } from '../directives/button/button.directive';
|
|
10
8
|
import { NgIf, NgFor } from '@angular/common';
|
|
11
9
|
import { getCurrentResourceStrings } from '../core/i18n/resources';
|
|
12
10
|
import { IgxIconButtonDirective } from '../directives/button/icon-button.directive';
|
|
@@ -353,7 +351,7 @@ export class IgxPageSizeSelectorComponent {
|
|
|
353
351
|
}
|
|
354
352
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxPageSizeSelectorComponent, decorators: [{
|
|
355
353
|
type: Component,
|
|
356
|
-
args: [{ selector: 'igx-page-size', standalone: true, imports: [IgxSelectComponent, FormsModule,
|
|
354
|
+
args: [{ selector: 'igx-page-size', standalone: true, imports: [IgxSelectComponent, FormsModule, NgFor, IgxSelectItemComponent], template: "<label class=\"igx-page-size__label\">{{ paginator.resourceStrings.igx_paginator_label }}</label>\n<div class=\"igx-page-size__select\">\n <igx-select [overlaySettings]=\"paginator.overlaySettings\" [(ngModel)]=\"paginator.perPage\" type=\"border\">\n <igx-select-item [value]=\"val\" *ngFor=\"let val of paginator.selectOptions\">\n {{ val }}\n </igx-select-item>\n </igx-select>\n</div>\n" }]
|
|
357
355
|
}], ctorParameters: () => [{ type: IgxPaginatorComponent, decorators: [{
|
|
358
356
|
type: Host
|
|
359
357
|
}] }], propDecorators: { cssClass: [{
|
|
@@ -378,7 +376,7 @@ export class IgxPageNavigationComponent {
|
|
|
378
376
|
}
|
|
379
377
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxPageNavigationComponent, decorators: [{
|
|
380
378
|
type: Component,
|
|
381
|
-
args: [{ selector: 'igx-page-nav', standalone: true, imports: [
|
|
379
|
+
args: [{ selector: 'igx-page-nav', standalone: true, imports: [IgxRippleDirective, IgxIconComponent, IgxIconButtonDirective], template: "<button\n [title]=\"paginator.resourceStrings.igx_paginator_first_page_button_text\"\n [disabled]=\"paginator.isFirstPage\"\n [attr.aria-disabled]=\"paginator.isFirstPage\"\n (click)=\"paginator.paginate(0)\"\n igxIconButton=\"flat\"\n igxRipple\n [igxRippleCentered]=\"true\"\n type=\"button\"\n>\n <igx-icon family=\"default\" name=\"first_page\"></igx-icon>\n</button>\n<button\n [title]=\"paginator.resourceStrings.igx_paginator_previous_page_button_text\"\n [disabled]=\"paginator.isFirstPage\"\n [attr.aria-disabled]=\"paginator.isFirstPage\"\n (click)=\"paginator.previousPage()\"\n igxIconButton=\"flat\"\n igxRipple\n [igxRippleCentered]=\"true\"\n type=\"button\"\n>\n <igx-icon family=\"default\" name=\"prev\"></igx-icon>\n</button>\n<div class=\"igx-page-nav__text\" aria-current=\"page\">\n <span>{{ paginator.page + 1 }}</span>\n <span\n > {{\n paginator.resourceStrings.igx_paginator_pager_text\n }} </span\n >\n <span>{{ paginator.totalPages || 1 }}</span>\n</div>\n<button\n [title]=\"paginator.resourceStrings.igx_paginator_next_page_button_text\"\n [disabled]=\"paginator.isLastPage\"\n [attr.aria-disabled]=\"paginator.isLastPage\"\n (click)=\"paginator.nextPage()\"\n igxRipple\n [igxRippleCentered]=\"true\"\n igxIconButton=\"flat\"\n type=\"button\"\n>\n <igx-icon family=\"default\" name=\"next\"></igx-icon>\n</button>\n<button\n [title]=\"paginator.resourceStrings.igx_paginator_last_page_button_text\"\n [disabled]=\"paginator.isLastPage\"\n [attr.aria-disabled]=\"paginator.isLastPage\"\n (click)=\"paginator.paginate(paginator.totalPages - 1)\"\n igxIconButton=\"flat\"\n igxRipple\n [igxRippleCentered]=\"true\"\n type=\"button\"\n>\n <igx-icon family=\"default\" name=\"last_page\"></igx-icon>\n</button>\n\n" }]
|
|
382
380
|
}], ctorParameters: () => [{ type: IgxPaginatorComponent, decorators: [{
|
|
383
381
|
type: Host
|
|
384
382
|
}] }], propDecorators: { cssClass: [{
|
|
@@ -390,4 +388,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
|
|
|
390
388
|
}, {
|
|
391
389
|
type: Input
|
|
392
390
|
}] } });
|
|
393
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3BhZ2luYXRvci9wYWdlLXNpemUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvcGFnaW5hdG9yL3BhZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUosT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtC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UUFBaEMsY0FBUyxHQUFULFNBQVMsQ0FBdUI7UUFQM0Q7OztXQUdHO1FBRUksYUFBUSxHQUFHLGVBQWUsQ0FBQztJQUU2QixDQUFDOzhHQVJ2RCw0QkFBNEI7a0dBQTVCLDRCQUE0QiwySUU3V3pDLHVhQVFBLDRDRm1XYyxrQkFBa0Isb0xBQUUsV0FBVywrVkFBcUIsS0FBSyxtSEFBRSxzQkFBc0I7OzJGQUVsRiw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksZUFBZSxjQUViLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLENBQUM7OzBCQVUvRSxJQUFJO3lDQUZWLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxxQkFBcUI7O0FBYXRDLE1BQU0sT0FBTywwQkFBMEI7SUFlbkMsWUFFVyxTQUFnQztRQUFoQyxjQUFTLEdBQVQsU0FBUyxDQUF1QjtRQWhCM0M7OztXQUdHO1FBRUksYUFBUSxHQUFHLGNBQWMsQ0FBQztRQUVqQzs7V0FFRztRQUdJLFNBQUksR0FBRyxZQUFZLENBQUM7SUFJb0IsQ0FBQzs4R0FqQnZDLDBCQUEwQjtrR0FBMUIsMEJBQTBCLDZMRy9YdkMseTJEQTBEQSw0Q0htVWtDLGtCQUFrQixpS0FBRSxnQkFBZ0IsMkZBQUUsc0JBQXNCOzsyRkFFakYsMEJBQTBCO2tCQU50QyxTQUFTOytCQUNJLGNBQWMsY0FFWixJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQzs7MEJBa0J0RixJQUFJO3lDQVZGLFFBQVE7c0JBRGQsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBUTFCLElBQUk7c0JBRlYsV0FBVzt1QkFBQyxXQUFXOztzQkFDdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3QsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJUGFnZUNhbmNlbGxhYmxlRXZlbnRBcmdzLCBJUGFnZUV2ZW50QXJncyB9IGZyb20gJy4vcGFnaW5hdG9yLWludGVyZmFjZXMnO1xuaW1wb3J0IHsgSVBhZ2luYXRvclJlc291cmNlU3RyaW5ncywgUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuLi9jb3JlL2kxOG4vcGFnaW5hdG9yLXJlc291cmNlcyc7XG5pbXBvcnQgeyBPdmVybGF5U2V0dGluZ3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9vdmVybGF5L3V0aWxpdGllcyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hMYWJlbERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvbGFiZWwvbGFiZWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWd4U2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IElneEljb25CdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9pY29uLWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UGFnaW5hdG9yVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4UGFnaW5hdG9yQ29udGVudF0saWd4LXBhZ2luYXRvci1jb250ZW50JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1wYWdpbmF0b3ItY29udGVudCcpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1wYWdpbmF0b3ItY29udGVudCc7XG59XG5cbi8qIGJsYXpvckVsZW1lbnQgKi9cbi8qIG11c3RVc2VOR1BhcmVudEFuY2hvciAqL1xuLyogd2NFbGVtZW50VGFnOiBpZ2MtcGFnaW5hdG9yICovXG4vKiBibGF6b3JJbmRpcmVjdFJlbmRlciAqL1xuLyogc2luZ2xlSW5zdGFuY2VJZGVudGlmaWVyICovXG4vKiBjb250ZW50UGFyZW50OiBHcmlkQmFzZURpcmVjdGl2ZSAqL1xuLyogY29udGVudFBhcmVudDogUm93SXNsYW5kICovXG4vKiBjb250ZW50UGFyZW50OiBIaWVyYXJjaGljYWxHcmlkICovXG4vKiBqc29uQVBJTWFuYWdlQ29sbGVjdGlvbkluTWFya3VwICovXG4vKipcbiAqIFBhZ2luYXRvciBjb21wb25lbnQgZGVzY3JpcHRpb25cbiAqIEBpZ3hQYXJlbnQgSWd4R3JpZENvbXBvbmVudCwgSWd4VHJlZUdyaWRDb21wb25lbnQsIElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQsIElneFBpdm90R3JpZENvbXBvbmVudCwgKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1wYWdpbmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAncGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBmb3J3YXJkUmVmKCgpID0+IElneFBhZ2VTaXplU2VsZWN0b3JDb21wb25lbnQpLCBmb3J3YXJkUmVmKCgpID0+IElneFBhZ2VOYXZpZ2F0aW9uQ29tcG9uZW50KV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogSWd4UGFnaW5hdG9yVG9rZW4sIHVzZUV4aXN0aW5nOiBJZ3hQYWdpbmF0b3JDb21wb25lbnQgfVxuICAgIF1cbn0pXG4vLyBzd2l0Y2ggSWd4UGFnaW5hdG9yVG9rZW4gdG8gZXh0ZW5kcyBvbmNlIGRlbnNpdHkgaXMgZHJvcHBlZFxuZXhwb3J0IGNsYXNzIElneFBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIElneFBhZ2luYXRvclRva2VuIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmUpXG4gICAgcHVibGljIGN1c3RvbUNvbnRlbnQ6IElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gYHBlclBhZ2VgIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBwYWdpbmF0b3IgaXMgY2hhbmdlZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGFnaW5hdG9yIChwZXJQYWdlQ2hhbmdlKT1cIm9uUGVyUGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgb25QZXJQYWdlQ2hhbmdlKHBlclBhZ2U6IG51bWJlcikge1xuICAgICAqICAgdGhpcy5wZXJQYWdlID0gcGVyUGFnZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBlclBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZSBpcyBjaGFuZ2VkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj48L2lneC1wYWdpbmF0b3I+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBvblBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgICogICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHBhZ2luZyBpcyBwZXJmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgdGhlIGN1cnJlbnQgYW5kIG5leHQgcGFnZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2luZyk9XCJwYWdpbmdIYW5kbGVyKCRldmVudClcIj48L2lneC1wYWdpbmF0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBhZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVBhZ2VDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgcGFnaW5nIGlzIHBlcmZvcm1lZC5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogUmV0dXJucyBhbiBvYmplY3QgY29uc2lzdGluZyBvZiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgcGFnZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2luZ0RvbmUpPVwicGFnaW5nRG9uZSgkZXZlbnQpXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwYWdpbmdEb25lID0gbmV3IEV2ZW50RW1pdHRlcjxJUGFnZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIFRvdGFsIHBhZ2VzIGNhbGN1bGF0ZWQgZnJvbSB0b3RhbFJlY29yZHMgYW5kIHBlclBhZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBfcGFnZSA9IDA7XG4gICAgcHJvdGVjdGVkIF90b3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX3NlbGVjdE9wdGlvbnMgPSBbNSwgMTAsIDE1LCAyNSwgNTAsIDEwMCwgNTAwXTtcbiAgICBwcm90ZWN0ZWQgX3BlclBhZ2UgPSAxNTtcblxuICAgIHByaXZhdGUgX3Jlc291cmNlU3RyaW5ncyA9IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MoUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzRU4pO1xuICAgIHByaXZhdGUgX292ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0ge307XG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0VmFsdWVzID0gWzUsIDEwLCAxNSwgMjUsIDUwLCAxMDAsIDUwMF07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1wYWdpbmF0b3InKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtcGFnaW5hdG9yJztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgY3VycmVudCBwYWdlIG9mIHRoZSBwYWdpbmF0b3IuXG4gICAgICogVGhlIGRlZmF1bHQgaXMgMC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhZ2UgPSB0aGlzLnBhZ2luYXRvci5wYWdlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fcGFnZSA9PT0gdmFsdWUgfHwgdmFsdWUgPCAwIHx8IHZhbHVlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FuY2VsRXZlbnRBcmdzOiBJUGFnZUNhbmNlbGxhYmxlRXZlbnRBcmdzID0geyBjdXJyZW50OiB0aGlzLl9wYWdlLCBuZXh0OiB2YWx1ZSwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElQYWdlRXZlbnRBcmdzID0geyBwcmV2aW91czogdGhpcy5fcGFnZSwgY3VycmVudDogdmFsdWUgfTtcblxuICAgICAgICB0aGlzLnBhZ2luZy5lbWl0KGNhbmNlbEV2ZW50QXJncyk7XG4gICAgICAgIGlmIChjYW5jZWxFdmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGFnZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wYWdlKTtcblxuICAgICAgICB0aGlzLnBhZ2luZ0RvbmUuZW1pdChldmVudEFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgbnVtYmVyIG9mIHZpc2libGUgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIHBhZ2luYXRvci5cbiAgICAgKiBUaGUgZGVmYXVsdCBpcyAxNS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGl0ZW1zUGVyUGFnZSA9IHRoaXMucGFnaW5hdG9yLnBlclBhZ2U7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHBlclBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJQYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcGVyUGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdGhpcy5wZXJQYWdlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BlclBhZ2UgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICB0aGlzLnBlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wZXJQYWdlKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9ucyA9IHRoaXMuc29ydFVuaXF1ZU9wdGlvbnModGhpcy5kZWZhdWx0U2VsZWN0VmFsdWVzLCB0aGlzLl9wZXJQYWdlKTtcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5fcGVyUGFnZSk7XG4gICAgICAgIGlmICh0aGlzLnRvdGFsUGFnZXMgIT09IDAgJiYgdGhpcy5wYWdlID49IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy50b3RhbFBhZ2VzIC0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRvdGFsIHJlY29yZHMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b3RhbFJlY29yZHMgPSB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRvdGFsUmVjb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RvdGFsUmVjb3JkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHRvdGFsUmVjb3Jkcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnBlclBhZ2UpO1xuICAgICAgICBpZiAodGhpcy5wYWdlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGN1c3RvbSBvcHRpb25zIGluIHRoZSBzZWxlY3Qgb2YgdGhlIHBhZ2luYXRvclxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgb3B0aW9ucyA9IHRoaXMucGFnaW5hdG9yLnNlbGVjdE9wdGlvbnM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RPcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgc2VsZWN0T3B0aW9ucyh2YWx1ZTogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9zZWxlY3RPcHRpb25zID0gdGhpcy5zb3J0VW5pcXVlT3B0aW9ucyh2YWx1ZSwgdGhpcy5fcGVyUGFnZSk7XG4gICAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdFZhbHVlcyA9IFsuLi52YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBjdXN0b20gT3ZlcmxheVNldHRpbmdzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBhZ2luYXRvciBbb3ZlcmxheVNldHRpbmdzXSA9IFwiY3VzdG9tT3ZlcmxheVNldHRpbmdzXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBvdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTZXR0aW5ncztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG92ZXJsYXlTZXR0aW5ncyh2YWx1ZTogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX292ZXJsYXlTZXR0aW5ncywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qIG11c3RTZXRJbkNvZGVQbGF0Zm9ybXM6IFdlYkNvbXBvbmVudHM7Qmxhem9yO1JlYWN0ICovXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCBzZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSVBhZ2luYXRvclJlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICovXG4gICAgcHVibGljIGdldCByZXNvdXJjZVN0cmluZ3MoKTogSVBhZ2luYXRvclJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgY3VycmVudCBwYWdlIGlzIHRoZSBsYXN0IHBhZ2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGxhc3RQYWdlID0gdGhpcy5wYWdpbmF0b3IuaXNMYXN0UGFnZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2UgKyAxID49IHRoaXMudG90YWxQYWdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGZpcnN0IHBhZ2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGxhc3RQYWdlID0gdGhpcy5wYWdpbmF0b3IuaXNGaXJzdFBhZ2U7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnZSA9PT0gMDtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGZpcnN0IHBhZ2VyIGJ1dHRvbnMgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTguMS4wLiBVc2UgdGhlIGBpc0ZpcnN0UGFnZWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRmlyc3RQYWdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlyc3RQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGxhc3QgcGFnZXIgYnV0dG9ucyBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxOC4xLjAuIFVzZSB0aGUgYGlzTGFzdFBhZ2VgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0xhc3RQYWdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFBhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR29lcyB0byB0aGUgbmV4dCBwYWdlIG9mIHRoZSBgSWd4UGFnaW5hdG9yQ29tcG9uZW50YCwgaWYgdGhlIHBhZ2luYXRvciBpcyBub3QgYWxyZWFkeSBhdCB0aGUgbGFzdCBwYWdlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTGFzdFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdvZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2Ugb2YgdGhlIGBJZ3hQYWdpbmF0b3JDb21wb25lbnRgLCBpZiB0aGUgcGFnaW5hdG9yIGlzIG5vdCBhbHJlYWR5IGF0IHRoZSBmaXJzdCBwYWdlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hQYWdpbmF0b3JDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSAtPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdvZXMgdG8gdGhlIGRlc2lyZWQgcGFnZSBpbmRleC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5wYWdpbmF0b3IucGFnaW5hdGUoMSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBwYWdpbmF0ZSh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsIDwgMCB8fCB2YWwgPiB0aGlzLnRvdGFsUGFnZXMgLSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydFVuaXF1ZU9wdGlvbnModmFsdWVzOiBBcnJheTxudW1iZXI+LCBuZXdPcHRpb246IG51bWJlcik6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbLi4udmFsdWVzLCBuZXdPcHRpb25dKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1wYWdlLXNpemUnLFxuICAgIHRlbXBsYXRlVXJsOiAncGFnZS1zaXplLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBJZ3hMYWJlbERpcmVjdGl2ZSwgTmdGb3IsIElneFNlbGVjdEl0ZW1Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElneFBhZ2VTaXplU2VsZWN0b3JDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1wYWdlLXNpemUnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtcGFnZS1zaXplJztcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgcHVibGljIHBhZ2luYXRvcjogSWd4UGFnaW5hdG9yQ29tcG9uZW50KSB7IH1cbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1wYWdlLW5hdicsXG4gICAgdGVtcGxhdGVVcmw6ICdwYWdlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4QnV0dG9uRGlyZWN0aXZlLCBJZ3hSaXBwbGVEaXJlY3RpdmUsIElneEljb25Db21wb25lbnQsIElneEljb25CdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneFBhZ2VOYXZpZ2F0aW9uQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtcGFnZS1uYXYnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtcGFnZS1uYXYnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICduYXZpZ2F0aW9uJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBwYWdpbmF0b3I6IElneFBhZ2luYXRvckNvbXBvbmVudCkgeyB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4UGFnaW5hdG9yQ29udGVudF0saWd4LXBhZ2luYXRvci1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuXG48aWd4LXBhZ2Utc2l6ZSAqbmdJZj1cIiFjdXN0b21Db250ZW50XCI+PC9pZ3gtcGFnZS1zaXplPlxuPGlneC1wYWdlLW5hdiAqbmdJZj1cIiFjdXN0b21Db250ZW50XCI+PC9pZ3gtcGFnZS1uYXY+XG4iLCI8bGFiZWwgY2xhc3M9XCJpZ3gtcGFnZS1zaXplX19sYWJlbFwiPnt7IHBhZ2luYXRvci5yZXNvdXJjZVN0cmluZ3MuaWd4X3BhZ2luYXRvcl9sYWJlbCB9fTwvbGFiZWw+XG48ZGl2IGNsYXNzPVwiaWd4LXBhZ2Utc2l6ZV9fc2VsZWN0XCI+XG4gICAgPGlneC1zZWxlY3QgW292ZXJsYXlTZXR0aW5nc109XCJwYWdpbmF0b3Iub3ZlcmxheVNldHRpbmdzXCIgWyhuZ01vZGVsKV09XCJwYWdpbmF0b3IucGVyUGFnZVwiIHR5cGU9XCJib3JkZXJcIj5cbiAgICAgICAgPGlneC1zZWxlY3QtaXRlbSBbdmFsdWVdPVwidmFsXCIgKm5nRm9yPVwibGV0IHZhbCBvZiBwYWdpbmF0b3Iuc2VsZWN0T3B0aW9uc1wiPlxuICAgICAgICAgICAge3sgdmFsIH19XG4gICAgICAgIDwvaWd4LXNlbGVjdC1pdGVtPlxuICAgIDwvaWd4LXNlbGVjdD5cbjwvZGl2PlxuIiwiPGJ1dHRvblxuICAgIFt0aXRsZV09XCJwYWdpbmF0b3IucmVzb3VyY2VTdHJpbmdzLmlneF9wYWdpbmF0b3JfZmlyc3RfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0ZpcnN0UGFnZVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJwYWdpbmF0b3IuaXNGaXJzdFBhZ2VcIlxuICAgIChjbGljayk9XCJwYWdpbmF0b3IucGFnaW5hdGUoMClcIlxuICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICBpZ3hSaXBwbGVcbiAgICBbaWd4UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwiZmlyc3RfcGFnZVwiPjwvaWd4LWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX3ByZXZpb3VzX3BhZ2VfYnV0dG9uX3RleHRcIlxuICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0b3IuaXNGaXJzdFBhZ2VcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwicGFnaW5hdG9yLmlzRmlyc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCJcbiAgICBpZ3hJY29uQnV0dG9uPVwiZmxhdFwiXG4gICAgaWd4UmlwcGxlXG4gICAgW2lneFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuPlxuICAgIDxpZ3gtaWNvbiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cInByZXZcIj48L2lneC1pY29uPlxuPC9idXR0b24+XG48ZGl2IGNsYXNzPVwiaWd4LXBhZ2UtbmF2X190ZXh0XCIgYXJpYS1jdXJyZW50PVwicGFnZVwiPlxuICAgIDxzcGFuPnt7IHBhZ2luYXRvci5wYWdlICsgMSB9fTwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICA+Jm5ic3A7e3tcbiAgICAgICAgICAgIHBhZ2luYXRvci5yZXNvdXJjZVN0cmluZ3MuaWd4X3BhZ2luYXRvcl9wYWdlcl90ZXh0XG4gICAgICAgIH19Jm5ic3A7PC9zcGFuXG4gICAgPlxuICAgIDxzcGFuPnt7IHBhZ2luYXRvci50b3RhbFBhZ2VzIHx8IDEgfX08L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX25leHRfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLm5leHRQYWdlKClcIlxuICAgIGlneFJpcHBsZVxuICAgIFtpZ3hSaXBwbGVDZW50ZXJlZF09XCJ0cnVlXCJcbiAgICBpZ3hJY29uQnV0dG9uPVwiZmxhdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwibmV4dFwiPjwvaWd4LWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX2xhc3RfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLnBhZ2luYXRlKHBhZ2luYXRvci50b3RhbFBhZ2VzIC0gMSlcIlxuICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICBpZ3hSaXBwbGVcbiAgICBbaWd4UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwibGFzdF9wYWdlXCI+PC9pZ3gtaWNvbj5cbjwvYnV0dG9uPlxuXG4iXX0=
|
|
391
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9wYWdpbmF0b3IvcGFnaW5hdG9yLmNvbXBvbmVudC5odG1sIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3BhZ2luYXRvci9wYWdlLXNpemUtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvcGFnaW5hdG9yL3BhZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUosT0FBTyxFQUE2QiwwQkFBMEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXpHLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzlDLE9BQU8sRUFB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a0dBQTVCLDRCQUE0QiwySUUzV3pDLHVhQVFBLDRDRmlXYyxrQkFBa0Isb0xBQUUsV0FBVywrVkFBRSxLQUFLLG1IQUFFLHNCQUFzQjs7MkZBRS9ELDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSxlQUFlLGNBRWIsSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxzQkFBc0IsQ0FBQzs7MEJBVTVELElBQUk7eUNBRlYsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLHFCQUFxQjs7QUFhdEMsTUFBTSxPQUFPLDBCQUEwQjtJQWVuQyxZQUVXLFNBQWdDO1FBQWhDLGNBQVMsR0FBVCxTQUFTLENBQXVCO1FBaEIzQzs7O1dBR0c7UUFFSSxhQUFRLEdBQUcsY0FBYyxDQUFDO1FBRWpDOztXQUVHO1FBR0ksU0FBSSxHQUFHLFlBQVksQ0FBQztJQUlvQixDQUFDOzhHQWpCdkMsMEJBQTBCO2tHQUExQiwwQkFBMEIsNkxHN1h2Qyx5MkRBMERBLDRDSGlVYyxrQkFBa0IsaUtBQUUsZ0JBQWdCLDJGQUFFLHNCQUFzQjs7MkZBRTdELDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDSSxjQUFjLGNBRVosSUFBSSxXQUNQLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7OzBCQWtCbEUsSUFBSTt5Q0FWRixRQUFRO3NCQURkLFdBQVc7dUJBQUMsb0JBQW9CO2dCQVExQixJQUFJO3NCQUZWLFdBQVc7dUJBQUMsV0FBVzs7c0JBQ3ZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBIb3N0LCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSVBhZ2VDYW5jZWxsYWJsZUV2ZW50QXJncywgSVBhZ2VFdmVudEFyZ3MgfSBmcm9tICcuL3BhZ2luYXRvci1pbnRlcmZhY2VzJztcbmltcG9ydCB7IElQYWdpbmF0b3JSZXNvdXJjZVN0cmluZ3MsIFBhZ2luYXRvclJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi4vY29yZS9pMThuL3BhZ2luYXRvci1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvb3ZlcmxheS91dGlsaXRpZXMnO1xuaW1wb3J0IHsgSWd4U2VsZWN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL3NlbGVjdC9zZWxlY3QtaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJZ3hSaXBwbGVEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3JpcHBsZS9yaXBwbGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IE5nSWYsIE5nRm9yIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IElneEljb25CdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2J1dHRvbi9pY29uLWJ1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UGFnaW5hdG9yVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbaWd4UGFnaW5hdG9yQ29udGVudF0saWd4LXBhZ2luYXRvci1jb250ZW50JyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmUge1xuICAgIC8qKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1wYWdpbmF0b3ItY29udGVudCcpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1wYWdpbmF0b3ItY29udGVudCc7XG59XG5cbi8qIGJsYXpvckVsZW1lbnQgKi9cbi8qIG11c3RVc2VOR1BhcmVudEFuY2hvciAqL1xuLyogd2NFbGVtZW50VGFnOiBpZ2MtcGFnaW5hdG9yICovXG4vKiBibGF6b3JJbmRpcmVjdFJlbmRlciAqL1xuLyogc2luZ2xlSW5zdGFuY2VJZGVudGlmaWVyICovXG4vKiBjb250ZW50UGFyZW50OiBHcmlkQmFzZURpcmVjdGl2ZSAqL1xuLyogY29udGVudFBhcmVudDogUm93SXNsYW5kICovXG4vKiBjb250ZW50UGFyZW50OiBIaWVyYXJjaGljYWxHcmlkICovXG4vKiBqc29uQVBJTWFuYWdlQ29sbGVjdGlvbkluTWFya3VwICovXG4vKipcbiAqIFBhZ2luYXRvciBjb21wb25lbnQgZGVzY3JpcHRpb25cbiAqIEBpZ3hQYXJlbnQgSWd4R3JpZENvbXBvbmVudCwgSWd4VHJlZUdyaWRDb21wb25lbnQsIElneEhpZXJhcmNoaWNhbEdyaWRDb21wb25lbnQsIElneFBpdm90R3JpZENvbXBvbmVudCwgKlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1wYWdpbmF0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAncGFnaW5hdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBmb3J3YXJkUmVmKCgpID0+IElneFBhZ2VTaXplU2VsZWN0b3JDb21wb25lbnQpLCBmb3J3YXJkUmVmKCgpID0+IElneFBhZ2VOYXZpZ2F0aW9uQ29tcG9uZW50KV0sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHsgcHJvdmlkZTogSWd4UGFnaW5hdG9yVG9rZW4sIHVzZUV4aXN0aW5nOiBJZ3hQYWdpbmF0b3JDb21wb25lbnQgfVxuICAgIF1cbn0pXG4vLyBzd2l0Y2ggSWd4UGFnaW5hdG9yVG9rZW4gdG8gZXh0ZW5kcyBvbmNlIGRlbnNpdHkgaXMgZHJvcHBlZFxuZXhwb3J0IGNsYXNzIElneFBhZ2luYXRvckNvbXBvbmVudCBpbXBsZW1lbnRzIElneFBhZ2luYXRvclRva2VuIHtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmUpXG4gICAgcHVibGljIGN1c3RvbUNvbnRlbnQ6IElneFBhZ2luYXRvckNvbnRlbnREaXJlY3RpdmU7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gYHBlclBhZ2VgIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBwYWdpbmF0b3IgaXMgY2hhbmdlZC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtcGFnaW5hdG9yIChwZXJQYWdlQ2hhbmdlKT1cIm9uUGVyUGFnZUNoYW5nZSgkZXZlbnQpXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgb25QZXJQYWdlQ2hhbmdlKHBlclBhZ2U6IG51bWJlcikge1xuICAgICAqICAgdGhpcy5wZXJQYWdlID0gcGVyUGFnZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBlclBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgdGhlIGN1cnJlbnQgcGFnZSBpcyBjaGFuZ2VkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj48L2lneC1wYWdpbmF0b3I+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBvblBhZ2VDaGFuZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgICogICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHBhZ2luZyBpcyBwZXJmb3JtZWQuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIFJldHVybnMgYW4gb2JqZWN0IGNvbnNpc3Rpbmcgb2YgdGhlIGN1cnJlbnQgYW5kIG5leHQgcGFnZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2luZyk9XCJwYWdpbmdIYW5kbGVyKCRldmVudClcIj48L2lneC1wYWdpbmF0b3I+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHBhZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVBhZ2VDYW5jZWxsYWJsZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYWZ0ZXIgcGFnaW5nIGlzIHBlcmZvcm1lZC5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzXG4gICAgICogUmV0dXJucyBhbiBvYmplY3QgY29uc2lzdGluZyBvZiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgcGFnZXMuXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1wYWdpbmF0b3IgKHBhZ2luZ0RvbmUpPVwicGFnaW5nRG9uZSgkZXZlbnQpXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwYWdpbmdEb25lID0gbmV3IEV2ZW50RW1pdHRlcjxJUGFnZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIFRvdGFsIHBhZ2VzIGNhbGN1bGF0ZWQgZnJvbSB0b3RhbFJlY29yZHMgYW5kIHBlclBhZ2VcbiAgICAgKi9cbiAgICBwdWJsaWMgdG90YWxQYWdlczogbnVtYmVyO1xuICAgIHByb3RlY3RlZCBfcGFnZSA9IDA7XG4gICAgcHJvdGVjdGVkIF90b3RhbFJlY29yZHM6IG51bWJlcjtcbiAgICBwcm90ZWN0ZWQgX3NlbGVjdE9wdGlvbnMgPSBbNSwgMTAsIDE1LCAyNSwgNTAsIDEwMCwgNTAwXTtcbiAgICBwcm90ZWN0ZWQgX3BlclBhZ2UgPSAxNTtcblxuICAgIHByaXZhdGUgX3Jlc291cmNlU3RyaW5ncyA9IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MoUGFnaW5hdG9yUmVzb3VyY2VTdHJpbmdzRU4pO1xuICAgIHByaXZhdGUgX292ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0ge307XG4gICAgcHJpdmF0ZSBkZWZhdWx0U2VsZWN0VmFsdWVzID0gWzUsIDEwLCAxNSwgMjUsIDUwLCAxMDAsIDUwMF07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1wYWdpbmF0b3InKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtcGFnaW5hdG9yJztcblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgY3VycmVudCBwYWdlIG9mIHRoZSBwYWdpbmF0b3IuXG4gICAgICogVGhlIGRlZmF1bHQgaXMgMC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHBhZ2UgPSB0aGlzLnBhZ2luYXRvci5wYWdlO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBwYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHBhZ2UodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fcGFnZSA9PT0gdmFsdWUgfHwgdmFsdWUgPCAwIHx8IHZhbHVlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY2FuY2VsRXZlbnRBcmdzOiBJUGFnZUNhbmNlbGxhYmxlRXZlbnRBcmdzID0geyBjdXJyZW50OiB0aGlzLl9wYWdlLCBuZXh0OiB2YWx1ZSwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElQYWdlRXZlbnRBcmdzID0geyBwcmV2aW91czogdGhpcy5fcGFnZSwgY3VycmVudDogdmFsdWUgfTtcblxuICAgICAgICB0aGlzLnBhZ2luZy5lbWl0KGNhbmNlbEV2ZW50QXJncyk7XG4gICAgICAgIGlmIChjYW5jZWxFdmVudEFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGFnZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLnBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wYWdlKTtcblxuICAgICAgICB0aGlzLnBhZ2luZ0RvbmUuZW1pdChldmVudEFyZ3MpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgbnVtYmVyIG9mIHZpc2libGUgaXRlbXMgcGVyIHBhZ2UgaW4gdGhlIHBhZ2luYXRvci5cbiAgICAgKiBUaGUgZGVmYXVsdCBpcyAxNS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGl0ZW1zUGVyUGFnZSA9IHRoaXMucGFnaW5hdG9yLnBlclBhZ2U7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHBlclBhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJQYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgcGVyUGFnZSh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdGhpcy5wZXJQYWdlID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BlclBhZ2UgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICB0aGlzLnBlclBhZ2VDaGFuZ2UuZW1pdCh0aGlzLl9wZXJQYWdlKTtcbiAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9ucyA9IHRoaXMuc29ydFVuaXF1ZU9wdGlvbnModGhpcy5kZWZhdWx0U2VsZWN0VmFsdWVzLCB0aGlzLl9wZXJQYWdlKTtcbiAgICAgICAgdGhpcy50b3RhbFBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxSZWNvcmRzIC8gdGhpcy5fcGVyUGFnZSk7XG4gICAgICAgIGlmICh0aGlzLnRvdGFsUGFnZXMgIT09IDAgJiYgdGhpcy5wYWdlID49IHRoaXMudG90YWxQYWdlcykge1xuICAgICAgICAgICAgdGhpcy5wYWdlID0gdGhpcy50b3RhbFBhZ2VzIC0gMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHRvdGFsIHJlY29yZHMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCB0b3RhbFJlY29yZHMgPSB0aGlzLnBhZ2luYXRvci50b3RhbFJlY29yZHM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRvdGFsUmVjb3JkcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RvdGFsUmVjb3JkcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHRvdGFsUmVjb3Jkcyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbHVlO1xuICAgICAgICB0aGlzLnRvdGFsUGFnZXMgPSBNYXRoLmNlaWwodGhpcy50b3RhbFJlY29yZHMgLyB0aGlzLnBlclBhZ2UpO1xuICAgICAgICBpZiAodGhpcy5wYWdlID4gdGhpcy50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2UgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGN1c3RvbSBvcHRpb25zIGluIHRoZSBzZWxlY3Qgb2YgdGhlIHBhZ2luYXRvclxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgb3B0aW9ucyA9IHRoaXMucGFnaW5hdG9yLnNlbGVjdE9wdGlvbnM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAbWVtYmVyb2YgSWd4UGFnaW5hdG9yQ29tcG9uZW50XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdE9wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RPcHRpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgc2VsZWN0T3B0aW9ucyh2YWx1ZTogQXJyYXk8bnVtYmVyPikge1xuICAgICAgICB0aGlzLl9zZWxlY3RPcHRpb25zID0gdGhpcy5zb3J0VW5pcXVlT3B0aW9ucyh2YWx1ZSwgdGhpcy5fcGVyUGFnZSk7XG4gICAgICAgIHRoaXMuZGVmYXVsdFNlbGVjdFZhbHVlcyA9IFsuLi52YWx1ZV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBjdXN0b20gT3ZlcmxheVNldHRpbmdzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LXBhZ2luYXRvciBbb3ZlcmxheVNldHRpbmdzXSA9IFwiY3VzdG9tT3ZlcmxheVNldHRpbmdzXCI+PC9pZ3gtcGFnaW5hdG9yPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBvdmVybGF5U2V0dGluZ3MoKTogT3ZlcmxheVNldHRpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlTZXR0aW5ncztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG92ZXJsYXlTZXR0aW5ncyh2YWx1ZTogT3ZlcmxheVNldHRpbmdzKSB7XG4gICAgICAgIHRoaXMuX292ZXJsYXlTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX292ZXJsYXlTZXR0aW5ncywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qIG11c3RTZXRJbkNvZGVQbGF0Zm9ybXM6IFdlYkNvbXBvbmVudHM7Qmxhem9yO1JlYWN0ICovXG4gICAgLyoqXG4gICAgICogQW4gYWNjZXNzb3IgdGhhdCBzZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSVBhZ2luYXRvclJlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbiBhY2Nlc3NvciB0aGF0IHJldHVybnMgdGhlIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICovXG4gICAgcHVibGljIGdldCByZXNvdXJjZVN0cmluZ3MoKTogSVBhZ2luYXRvclJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHsgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgY3VycmVudCBwYWdlIGlzIHRoZSBsYXN0IHBhZ2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGxhc3RQYWdlID0gdGhpcy5wYWdpbmF0b3IuaXNMYXN0UGFnZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzTGFzdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2UgKyAxID49IHRoaXMudG90YWxQYWdlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSBjdXJyZW50IHBhZ2UgaXMgdGhlIGZpcnN0IHBhZ2UuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IGxhc3RQYWdlID0gdGhpcy5wYWdpbmF0b3IuaXNGaXJzdFBhZ2U7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0ZpcnN0UGFnZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFnZSA9PT0gMDtcbiAgICB9XG5cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGZpcnN0IHBhZ2VyIGJ1dHRvbnMgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAgICogQGhpZGRlblxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTguMS4wLiBVc2UgdGhlIGBpc0ZpcnN0UGFnZWAgcHJvcGVydHkgaW5zdGVhZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRmlyc3RQYWdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzRmlyc3RQYWdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGxhc3QgcGFnZXIgYnV0dG9ucyBzaG91bGQgYmUgZGlzYWJsZWRcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxOC4xLjAuIFVzZSB0aGUgYGlzTGFzdFBhZ2VgIHByb3BlcnR5IGluc3RlYWQuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc0xhc3RQYWdlRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzTGFzdFBhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR29lcyB0byB0aGUgbmV4dCBwYWdlIG9mIHRoZSBgSWd4UGFnaW5hdG9yQ29tcG9uZW50YCwgaWYgdGhlIHBhZ2luYXRvciBpcyBub3QgYWxyZWFkeSBhdCB0aGUgbGFzdCBwYWdlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnBhZ2luYXRvci5uZXh0UGFnZSgpO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBuZXh0UGFnZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTGFzdFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdvZXMgdG8gdGhlIHByZXZpb3VzIHBhZ2Ugb2YgdGhlIGBJZ3hQYWdpbmF0b3JDb21wb25lbnRgLCBpZiB0aGUgcGFnaW5hdG9yIGlzIG5vdCBhbHJlYWR5IGF0IHRoZSBmaXJzdCBwYWdlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnBhZ2luYXRvci5wcmV2aW91c1BhZ2UoKTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hQYWdpbmF0b3JDb21wb25lbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJldmlvdXNQYWdlKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNGaXJzdFBhZ2UpIHtcbiAgICAgICAgICAgIHRoaXMucGFnZSAtPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEdvZXMgdG8gdGhlIGRlc2lyZWQgcGFnZSBpbmRleC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogdGhpcy5wYWdpbmF0b3IucGFnaW5hdGUoMSk7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsXG4gICAgICogQG1lbWJlcm9mIElneFBhZ2luYXRvckNvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBwYWdpbmF0ZSh2YWw6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodmFsIDwgMCB8fCB2YWwgPiB0aGlzLnRvdGFsUGFnZXMgLSAxKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYWdlID0gdmFsO1xuICAgIH1cblxuICAgIHByaXZhdGUgc29ydFVuaXF1ZU9wdGlvbnModmFsdWVzOiBBcnJheTxudW1iZXI+LCBuZXdPcHRpb246IG51bWJlcik6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChbLi4udmFsdWVzLCBuZXdPcHRpb25dKSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgIH1cbn1cblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1wYWdlLXNpemUnLFxuICAgIHRlbXBsYXRlVXJsOiAncGFnZS1zaXplLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hTZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBOZ0ZvciwgSWd4U2VsZWN0SXRlbUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4UGFnZVNpemVTZWxlY3RvckNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogQGludGVybmFsXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LXBhZ2Utc2l6ZScpXG4gICAgcHVibGljIGNzc0NsYXNzID0gJ2lneC1wYWdlLXNpemUnO1xuXG4gICAgY29uc3RydWN0b3IoQEhvc3QoKSBwdWJsaWMgcGFnaW5hdG9yOiBJZ3hQYWdpbmF0b3JDb21wb25lbnQpIHsgfVxufVxuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXBhZ2UtbmF2JyxcbiAgICB0ZW1wbGF0ZVVybDogJ3BhZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmUsIElneEljb25Db21wb25lbnQsIElneEljb25CdXR0b25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneFBhZ2VOYXZpZ2F0aW9uQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtcGFnZS1uYXYnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtcGFnZS1uYXYnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgZWxlbWVudC5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcm9sZSA9ICduYXZpZ2F0aW9uJztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASG9zdCgpXG4gICAgICAgIHB1YmxpYyBwYWdpbmF0b3I6IElneFBhZ2luYXRvckNvbXBvbmVudCkgeyB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4UGFnaW5hdG9yQ29udGVudF0saWd4LXBhZ2luYXRvci1jb250ZW50XCI+PC9uZy1jb250ZW50PlxuXG48aWd4LXBhZ2Utc2l6ZSAqbmdJZj1cIiFjdXN0b21Db250ZW50XCI+PC9pZ3gtcGFnZS1zaXplPlxuPGlneC1wYWdlLW5hdiAqbmdJZj1cIiFjdXN0b21Db250ZW50XCI+PC9pZ3gtcGFnZS1uYXY+XG4iLCI8bGFiZWwgY2xhc3M9XCJpZ3gtcGFnZS1zaXplX19sYWJlbFwiPnt7IHBhZ2luYXRvci5yZXNvdXJjZVN0cmluZ3MuaWd4X3BhZ2luYXRvcl9sYWJlbCB9fTwvbGFiZWw+XG48ZGl2IGNsYXNzPVwiaWd4LXBhZ2Utc2l6ZV9fc2VsZWN0XCI+XG4gICAgPGlneC1zZWxlY3QgW292ZXJsYXlTZXR0aW5nc109XCJwYWdpbmF0b3Iub3ZlcmxheVNldHRpbmdzXCIgWyhuZ01vZGVsKV09XCJwYWdpbmF0b3IucGVyUGFnZVwiIHR5cGU9XCJib3JkZXJcIj5cbiAgICAgICAgPGlneC1zZWxlY3QtaXRlbSBbdmFsdWVdPVwidmFsXCIgKm5nRm9yPVwibGV0IHZhbCBvZiBwYWdpbmF0b3Iuc2VsZWN0T3B0aW9uc1wiPlxuICAgICAgICAgICAge3sgdmFsIH19XG4gICAgICAgIDwvaWd4LXNlbGVjdC1pdGVtPlxuICAgIDwvaWd4LXNlbGVjdD5cbjwvZGl2PlxuIiwiPGJ1dHRvblxuICAgIFt0aXRsZV09XCJwYWdpbmF0b3IucmVzb3VyY2VTdHJpbmdzLmlneF9wYWdpbmF0b3JfZmlyc3RfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0ZpcnN0UGFnZVwiXG4gICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJwYWdpbmF0b3IuaXNGaXJzdFBhZ2VcIlxuICAgIChjbGljayk9XCJwYWdpbmF0b3IucGFnaW5hdGUoMClcIlxuICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICBpZ3hSaXBwbGVcbiAgICBbaWd4UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwiZmlyc3RfcGFnZVwiPjwvaWd4LWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX3ByZXZpb3VzX3BhZ2VfYnV0dG9uX3RleHRcIlxuICAgIFtkaXNhYmxlZF09XCJwYWdpbmF0b3IuaXNGaXJzdFBhZ2VcIlxuICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwicGFnaW5hdG9yLmlzRmlyc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLnByZXZpb3VzUGFnZSgpXCJcbiAgICBpZ3hJY29uQnV0dG9uPVwiZmxhdFwiXG4gICAgaWd4UmlwcGxlXG4gICAgW2lneFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuPlxuICAgIDxpZ3gtaWNvbiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cInByZXZcIj48L2lneC1pY29uPlxuPC9idXR0b24+XG48ZGl2IGNsYXNzPVwiaWd4LXBhZ2UtbmF2X190ZXh0XCIgYXJpYS1jdXJyZW50PVwicGFnZVwiPlxuICAgIDxzcGFuPnt7IHBhZ2luYXRvci5wYWdlICsgMSB9fTwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgICA+Jm5ic3A7e3tcbiAgICAgICAgICAgIHBhZ2luYXRvci5yZXNvdXJjZVN0cmluZ3MuaWd4X3BhZ2luYXRvcl9wYWdlcl90ZXh0XG4gICAgICAgIH19Jm5ic3A7PC9zcGFuXG4gICAgPlxuICAgIDxzcGFuPnt7IHBhZ2luYXRvci50b3RhbFBhZ2VzIHx8IDEgfX08L3NwYW4+XG48L2Rpdj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX25leHRfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLm5leHRQYWdlKClcIlxuICAgIGlneFJpcHBsZVxuICAgIFtpZ3hSaXBwbGVDZW50ZXJlZF09XCJ0cnVlXCJcbiAgICBpZ3hJY29uQnV0dG9uPVwiZmxhdFwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwibmV4dFwiPjwvaWd4LWljb24+XG48L2J1dHRvbj5cbjxidXR0b25cbiAgICBbdGl0bGVdPVwicGFnaW5hdG9yLnJlc291cmNlU3RyaW5ncy5pZ3hfcGFnaW5hdG9yX2xhc3RfcGFnZV9idXR0b25fdGV4dFwiXG4gICAgW2Rpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cInBhZ2luYXRvci5pc0xhc3RQYWdlXCJcbiAgICAoY2xpY2spPVwicGFnaW5hdG9yLnBhZ2luYXRlKHBhZ2luYXRvci50b3RhbFBhZ2VzIC0gMSlcIlxuICAgIGlneEljb25CdXR0b249XCJmbGF0XCJcbiAgICBpZ3hSaXBwbGVcbiAgICBbaWd4UmlwcGxlQ2VudGVyZWRdPVwidHJ1ZVwiXG4gICAgdHlwZT1cImJ1dHRvblwiXG4+XG4gICAgPGlneC1pY29uIGZhbWlseT1cImRlZmF1bHRcIiBuYW1lPVwibGFzdF9wYWdlXCI+PC9pZ3gtaWNvbj5cbjwvYnV0dG9uPlxuXG4iXX0=
|