ng-virtual-list 18.12.1 → 18.12.3
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/README.md +2 -2
- package/esm2022/lib/components/ng-list-item/base/base-virtual-list-item-component.mjs +9 -5
- package/esm2022/lib/components/ng-list-item/const/index.mjs +2 -1
- package/esm2022/lib/components/ng-list-item/ng-virtual-list-item.component.mjs +14 -8
- package/esm2022/lib/components/ng-prerender-container/components/ng-prerender-list-item/ng-prerender-list-item.component.mjs +3 -3
- package/esm2022/lib/components/ng-scroll-bar/ng-scroll-bar.component.mjs +6 -6
- package/esm2022/lib/components/ng-scroll-view/const/index.mjs +2 -2
- package/esm2022/lib/components/ng-scroll-view/ng-scroll-view.component.mjs +24 -18
- package/esm2022/lib/components/ng-scroller/ng-scroller.component.mjs +6 -2
- package/esm2022/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.mjs +2 -0
- package/esm2022/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.mjs +2 -0
- package/esm2022/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.mjs +2 -0
- package/esm2022/lib/components/ng-scroller/utils/interfaces/index.mjs +2 -0
- package/esm2022/lib/components/ng-scroller/utils/scroll-box.mjs +1 -1
- package/esm2022/lib/const/index.mjs +6 -3
- package/esm2022/lib/core/track-box.mjs +31 -9
- package/esm2022/lib/directives/virtual-click/virtual-click.directive.mjs +35 -16
- package/esm2022/lib/models/display-object-config.model.mjs +1 -1
- package/esm2022/lib/ng-virtual-list.component.mjs +43 -11
- package/esm2022/lib/ng-virtual-list.service.mjs +31 -2
- package/esm2022/lib/utils/animator/animator.mjs +31 -8
- package/fesm2022/ng-virtual-list.mjs +223 -76
- package/fesm2022/ng-virtual-list.mjs.map +1 -1
- package/lib/components/ng-list-item/base/base-virtual-list-item-component.d.ts +1 -1
- package/lib/components/ng-list-item/ng-virtual-list-item.component.d.ts +3 -1
- package/lib/components/ng-scroll-view/const/index.d.ts +1 -1
- package/lib/components/ng-scroll-view/ng-scroll-view.component.d.ts +5 -2
- package/lib/components/ng-scroller/ng-scroller.component.d.ts +1 -1
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-metrics.d.ts +11 -0
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-params.d.ts +19 -0
- package/lib/components/ng-scroller/utils/interfaces/calculate-scroll-position-params.d.ts +10 -0
- package/lib/components/ng-scroller/utils/interfaces/index.d.ts +4 -0
- package/lib/components/ng-scroller/utils/scroll-box.d.ts +1 -18
- package/lib/const/index.d.ts +3 -1
- package/lib/directives/virtual-click/virtual-click.directive.d.ts +11 -6
- package/lib/models/display-object-config.model.d.ts +4 -0
- package/lib/ng-virtual-list.component.d.ts +2 -1
- package/lib/ng-virtual-list.service.d.ts +13 -0
- package/lib/utils/animator/animator.d.ts +10 -2
- package/package.json +1 -1
|
@@ -82,13 +82,13 @@ export class NgPrerenderVirtualListItemComponent extends NgVirtualListItemCompon
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderVirtualListItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
85
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgPrerenderVirtualListItemComponent, selector: "ng-prerender-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"
|
|
85
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NgPrerenderVirtualListItemComponent, selector: "ng-prerender-virtual-list-item", host: { attributes: { "role": "listitem" }, classAttribute: "ngvl__item" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"\r\n [attr.ngvl-index]=\"($index | async)!\" [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"($maxClickDistance | async)!\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\"\r\n (onVirtualClickPress)=\"onClickPressHandler()\" (onVirtualClickCancel)=\"onClickCancelHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.VirtualClickDirective, selector: "[virtualClick]", inputs: ["maxClickDistance"], outputs: ["onVirtualClick", "onVirtualClickPress", "onVirtualClickCancel"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
86
86
|
}
|
|
87
87
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NgPrerenderVirtualListItemComponent, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
89
|
args: [{ selector: 'ng-prerender-virtual-list-item', host: {
|
|
90
90
|
'class': 'ngvl__item',
|
|
91
91
|
'role': 'listitem',
|
|
92
|
-
}, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"
|
|
92
|
+
}, standalone: false, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"($data | async) as data\">\r\n <div #item class=\"ngvl-item\" [ngClass]=\"($classes | async)!\" [part]=\"($part | async)!\"\r\n [attr.ngvl-index]=\"($index | async)!\" [attr.ngvl-visibility]=\"visibility\" tabindex=\"-1\">\r\n <div *ngIf=\"_blendColor\" class=\"ngvl-item__blend-color\" [style.--blend-color]=\"_blendColor\"></div>\r\n <div #container virtualClick [part]=\"$fxPart | async\" [maxClickDistance]=\"($maxClickDistance | async)!\"\r\n class=\"ngvl-item__container\" [ngClass]=\"($classes | async)!\" (onVirtualClick)=\"onClickHandler()\"\r\n (onVirtualClickPress)=\"onClickPressHandler()\" (onVirtualClickCancel)=\"onClickCancelHandler()\">\r\n <ng-container [ngTemplateOutlet]=\"itemRenderer ?? null\"\r\n [ngTemplateOutletContext]=\"$templateContext | async\"></ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [":host{display:block;position:absolute;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;text-rendering:optimizeSpeed;image-rendering:auto}.ngvl-item{position:relative;margin:0;padding:0;overflow:hidden;outline:none;width:inherit;height:inherit;box-sizing:border-box}.ngvl-item__blend-color{position:absolute;left:0;top:0;width:100%;height:100%;background-color:var(--blend-color);z-index:-1}.ngvl-item__container{margin:0;padding:0;width:100%;height:100%;box-sizing:border-box}\n", ":host{display:block;position:absolute!important;left:0;top:0;box-sizing:border-box;overflow:hidden;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-moz-user-drag:none;pointer-events:none;-webkit-user-select:none;user-select:none;text-rendering:optimizeSpeed;image-rendering:pixelated}\n"] }]
|
|
93
93
|
}] });
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQ25ILE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFMUU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwwQkFBMEI7SUFDNUQsTUFBTTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQy9ELEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0csTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pHLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ25GLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBRW5GLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pLLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMs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QztZQUNmLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7d0dBeEVRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHlLQzFCaEQscXpCQVVlOzs0RkRnQkYsbUNBQW1DO2tCQVgvQyxTQUFTOytCQUNJLGdDQUFnQyxRQUdwQzt3QkFDRixPQUFPLEVBQUUsWUFBWTt3QkFDckIsTUFBTSxFQUFFLFVBQVU7cUJBQ3JCLGNBQ1csS0FBSyxtQkFDQSx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1xyXG4gICAgREVGQVVMVF9aSU5ERVgsIERJU1BMQVlfQkxPQ0ssIERJU1BMQVlfTk9ORSwgSElEREVOX1pJTkRFWCwgUFgsIFNJWkVfQVVUTywgVklTSUJJTElUWV9ISURERU4sIFZJU0lCSUxJVFlfVklTSUJMRSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IElELCBQT1NJVElPTiwgUE9TSVRJT05fWkVSTyB9IGZyb20gJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9jb25zdCc7XHJcblxyXG4vKipcclxuICogTmdQcmVyZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnRcclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25nLXByZXJlbmRlci12aXJ0dWFsLWxpc3QtaXRlbScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4uLy4uLy4uL25nLWxpc3QtaXRlbS9uZy12aXJ0dWFsLWxpc3QtaXRlbS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJywgJy4vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgaG9zdDoge1xyXG4gICAgICAgICdjbGFzcyc6ICduZ3ZsX19pdGVtJyxcclxuICAgICAgICAncm9sZSc6ICdsaXN0aXRlbScsXHJcbiAgICB9LFxyXG4gICAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIE5nUHJlcmVuZGVyVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IGV4dGVuZHMgTmdWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQge1xyXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHVwZGF0ZSgpIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gdGhpcy5fZGF0YSwgcmVndWxhciA9IHRoaXMucmVndWxhciwgbGVuZ3RoID0gdGhpcy5fcmVndWxhckxlbmd0aCwgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXHJcbiAgICAgICAgICAgIGl0ZW1FbGVtZW50ID0gdGhpcy5faXRlbT8ubmF0aXZlRWxlbWVudCwgY29udGFpbmVyRWxlbWVudCA9IHRoaXMuX2NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAoISFkYXRhICYmICEhZWwgJiYgISFpdGVtRWxlbWVudCAmJiAhIWNvbnRhaW5lckVsZW1lbnQpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3R5bGVzID0gZWwuc3R5bGUsIGl0ZW1FbGVtZW50U3R5bGVzID0gaXRlbUVsZW1lbnQuc3R5bGU7XHJcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShJRCwgYCR7ZGF0YS5pZH1gKTtcclxuICAgICAgICAgICAgc3R5bGVzLnpJbmRleCA9IGRhdGEuY29uZmlnLnpJbmRleDtcclxuICAgICAgICAgICAgaWYgKHJlZ3VsYXIpIHtcclxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgUE9TSVRJT05fWkVSTyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbC5zZXRBdHRyaWJ1dGUoUE9TSVRJT04sIGAke2RhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLm1lYXN1cmVzLnkgOiBkYXRhLm1lYXN1cmVzLnh9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGRhdGEuY29uZmlnLmRpdmlkZXMgPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMuaGVpZ2h0ID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMucm93LnNpemV9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5taW5XaWR0aCA9IHN0eWxlcy5taW5XaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWluV2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWF4V2lkdGggPSBzdHlsZXMubWF4V2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1heFdpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1pbkhlaWdodCA9IHN0eWxlcy5taW5IZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5tYXhIZWlnaHQgPSBzdHlsZXMubWF4SGVpZ2h0ID0gYCR7ZGF0YS5tZWFzdXJlcy5tYXhIZWlnaHR9JHtQWH1gO1xyXG5cclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLndpZHRoID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IHJlZ3VsYXIgPyBsZW5ndGggOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YCA6IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLndpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YCA6IHJlZ3VsYXIgPyBsZW5ndGggOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLm1pbldpZHRoID0gYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWF4V2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1heFdpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5taW5IZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1pbkhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWF4SGVpZ2h0ID0gYCR7ZGF0YS5tZWFzdXJlcy5tYXhIZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKElEKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgc2hvdygpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IHRoaXMuX2RhdGE/LmNvbmZpZz8uekluZGV4ID8/IERFRkFVTFRfWklOREVYO1xyXG4gICAgICAgIGlmICh0aGlzLnJlZ3VsYXIpIHtcclxuICAgICAgICAgICAgaWYgKHN0eWxlcy5kaXNwbGF5ID09PSBESVNQTEFZX0JMT0NLKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9CTE9DSztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfVklTSUJMRSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMudmlzaWJpbGl0eSA9IFZJU0lCSUxJVFlfVklTSUJMRTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3ZlcnJpZGUgaGlkZSgpIHtcclxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgc3R5bGVzID0gZWwuc3R5bGU7XHJcbiAgICAgICAgc3R5bGVzLnpJbmRleCA9IEhJRERFTl9aSU5ERVg7XHJcbiAgICAgICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfTk9ORSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBzdHlsZXMuZGlzcGxheSA9IERJU1BMQVlfTk9ORTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLnZpc2liaWxpdHkgPT09IFZJU0lCSUxJVFlfSElEREVOKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9ISURERU47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIigkZGF0YSB8IGFzeW5jKSBhcyBkYXRhXCI+XHJcbiAgICA8ZGl2ICNpdGVtIGNsYXNzPVwibmd2bC1pdGVtXCIgW25nQ2xhc3NdPVwiKCRjbGFzc2VzIHwgYXN5bmMpIVwiIFtwYXJ0XT1cIigkcGFydCB8IGFzeW5jKSFcIiBbYXR0ci5uZ3ZsLWluZGV4XT1cIigkaW5kZXggfCBhc3luYykhXCJcclxuICAgICAgICBbYXR0ci5uZ3ZsLXZpc2liaWxpdHldPVwidmlzaWJpbGl0eVwiIHRhYmluZGV4PVwiLTFcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX2JsZW5kQ29sb3JcIiBjbGFzcz1cIm5ndmwtaXRlbV9fYmxlbmQtY29sb3JcIiBbc3R5bGUuLS1ibGVuZC1jb2xvcl09XCJfYmxlbmRDb2xvclwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgI2NvbnRhaW5lciB2aXJ0dWFsQ2xpY2sgW3BhcnRdPVwiJGZ4UGFydCB8IGFzeW5jXCIgW21heENsaWNrRGlzdGFuY2VdPVwiJG1heENsaWNrRGlzdGFuY2UgfCBhc3luY1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwibmd2bC1pdGVtX19jb250YWluZXJcIiBbbmdDbGFzc109XCIoJGNsYXNzZXMgfCBhc3luYykhXCIgKG9uVmlydHVhbENsaWNrKT1cIm9uQ2xpY2tIYW5kbGVyKClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtUmVuZGVyZXIgPz8gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiJHRlbXBsYXRlQ29udGV4dCB8IGFzeW5jXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXByZXJlbmRlci1jb250YWluZXIvY29tcG9uZW50cy9uZy1wcmVyZW5kZXItbGlzdC1pdGVtL25nLXByZXJlbmRlci1saXN0LWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUNsRyxPQUFPLEVBQ0gsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEdBQ25ILE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7QUFFMUU7Ozs7Ozs7R0FPRztBQVlILE1BQU0sT0FBTyxtQ0FBb0MsU0FBUSwwQkFBMEI7SUFDNUQsTUFBTTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDOUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDO1FBQy9GLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDeEQsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQy9ELEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUNuQyxJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNWLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDSixFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDM0csTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pHLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ2hGLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ25GLGlCQUFpQixDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBRW5GLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsRUFBRSxFQUFFLENBQUM7Z0JBQ3pLLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMs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QztZQUNmLElBQUksTUFBTSxDQUFDLE9BQU8sS0FBSyxZQUFZLEVBQUUsQ0FBQztnQkFDbEMsT0FBTztZQUNYLENBQUM7WUFFRCxNQUFNLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQztRQUNsQyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksTUFBTSxDQUFDLFVBQVUsS0FBSyxpQkFBaUIsRUFBRSxDQUFDO2dCQUMxQyxPQUFPO1lBQ1gsQ0FBQztZQUVELE1BQU0sQ0FBQyxVQUFVLEdBQUcsaUJBQWlCLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7d0dBeEVRLG1DQUFtQzs0RkFBbkMsbUNBQW1DLHlLQzFCaEQseTZCQVdlOzs0RkRlRixtQ0FBbUM7a0JBWC9DLFNBQVM7K0JBQ0ksZ0NBQWdDLFFBR3BDO3dCQUNGLE9BQU8sRUFBRSxZQUFZO3dCQUNyQixNQUFNLEVBQUUsVUFBVTtxQkFDckIsY0FDVyxLQUFLLG1CQUNBLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nVmlydHVhbExpc3RJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7XHJcbiAgICBERUZBVUxUX1pJTkRFWCwgRElTUExBWV9CTE9DSywgRElTUExBWV9OT05FLCBISURERU5fWklOREVYLCBQWCwgU0laRV9BVVRPLCBWSVNJQklMSVRZX0hJRERFTiwgVklTSUJJTElUWV9WSVNJQkxFLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgSUQsIFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPIH0gZnJvbSAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL2NvbnN0JztcclxuXHJcbi8qKlxyXG4gKiBOZ1ByZXJlbmRlclZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudFxyXG4gKiBNYXhpbXVtIHBlcmZvcm1hbmNlIGZvciBleHRyZW1lbHkgbGFyZ2UgbGlzdHMuXHJcbiAqIEl0IGlzIGJhc2VkIG9uIGFsZ29yaXRobXMgZm9yIHZpcnR1YWxpemF0aW9uIG9mIHNjcmVlbiBvYmplY3RzLlxyXG4gKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vRGpvbm55WC9uZy12aXJ0dWFsLWxpc3QvYmxvYi8xOC54L3Byb2plY3RzL25nLXZpcnR1YWwtbGlzdC9zcmMvbGliL2NvbXBvbmVudHMvbmctcHJlcmVuZGVyLWNvbnRhaW5lci9jb21wb25lbnRzL25nLXByZXJlbmRlci1saXN0LWl0ZW0vbmctcHJlcmVuZGVyLWxpc3QtaXRlbS5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnbmctcHJlcmVuZGVyLXZpcnR1YWwtbGlzdC1pdGVtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi4vLi4vLi4vbmctbGlzdC1pdGVtL25nLXZpcnR1YWwtbGlzdC1pdGVtLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuLi8uLi8uLi9uZy1saXN0LWl0ZW0vbmctdmlydHVhbC1saXN0LWl0ZW0uY29tcG9uZW50LnNjc3MnLCAnLi9uZy1wcmVyZW5kZXItbGlzdC1pdGVtLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBob3N0OiB7XHJcbiAgICAgICAgJ2NsYXNzJzogJ25ndmxfX2l0ZW0nLFxyXG4gICAgICAgICdyb2xlJzogJ2xpc3RpdGVtJyxcclxuICAgIH0sXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdQcmVyZW5kZXJWaXJ0dWFsTGlzdEl0ZW1Db21wb25lbnQgZXh0ZW5kcyBOZ1ZpcnR1YWxMaXN0SXRlbUNvbXBvbmVudCB7XHJcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgdXBkYXRlKCkge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLl9kYXRhLCByZWd1bGFyID0gdGhpcy5yZWd1bGFyLCBsZW5ndGggPSB0aGlzLl9yZWd1bGFyTGVuZ3RoLCBlbCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcclxuICAgICAgICAgICAgaXRlbUVsZW1lbnQgPSB0aGlzLl9pdGVtPy5uYXRpdmVFbGVtZW50LCBjb250YWluZXJFbGVtZW50ID0gdGhpcy5fY29udGFpbmVyPy5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICghIWRhdGEgJiYgISFlbCAmJiAhIWl0ZW1FbGVtZW50ICYmICEhY29udGFpbmVyRWxlbWVudCkge1xyXG4gICAgICAgICAgICBjb25zdCBzdHlsZXMgPSBlbC5zdHlsZSwgaXRlbUVsZW1lbnRTdHlsZXMgPSBpdGVtRWxlbWVudC5zdHlsZTtcclxuICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKElELCBgJHtkYXRhLmlkfWApO1xyXG4gICAgICAgICAgICBzdHlsZXMuekluZGV4ID0gZGF0YS5jb25maWcuekluZGV4O1xyXG4gICAgICAgICAgICBpZiAocmVndWxhcikge1xyXG4gICAgICAgICAgICAgICAgZWwuc2V0QXR0cmlidXRlKFBPU0lUSU9OLCBQT1NJVElPTl9aRVJPKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShQT1NJVElPTiwgYCR7ZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEubWVhc3VyZXMueSA6IGRhdGEubWVhc3VyZXMueH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZGF0YS5jb25maWcuZGl2aWRlcyA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5oZWlnaHQgPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy5yb3cuc2l6ZX0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBgJHtkYXRhLm1lYXN1cmVzLnJvdy5zaXplfSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1pbldpZHRoID0gc3R5bGVzLm1pbldpZHRoID0gYCR7ZGF0YS5tZWFzdXJlcy5taW5XaWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBpdGVtRWxlbWVudFN0eWxlcy5tYXhXaWR0aCA9IHN0eWxlcy5tYXhXaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWF4V2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMubWluSGVpZ2h0ID0gc3R5bGVzLm1pbkhlaWdodCA9IGAke2RhdGEubWVhc3VyZXMubWluSGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50U3R5bGVzLm1heEhlaWdodCA9IHN0eWxlcy5tYXhIZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMuaGVpZ2h0ID0gZGF0YS5jb25maWcuaXNWZXJ0aWNhbCA/IGRhdGEuY29uZmlnLmR5bmFtaWMgPyBTSVpFX0FVVE8gOiBgJHtkYXRhLm1lYXN1cmVzLmhlaWdodH0ke1BYfWAgOiByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgaXRlbUVsZW1lbnRTdHlsZXMud2lkdGggPSBkYXRhLmNvbmZpZy5pc1ZlcnRpY2FsID8gcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gIDogZGF0YS5jb25maWcuZHluYW1pYyA/IFNJWkVfQVVUTyA6IGAke2RhdGEubWVhc3VyZXMud2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLmhlaWdodCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy5oZWlnaHR9JHtQWH1gIDogcmVndWxhciA/IGxlbmd0aCA6IGAke2RhdGEubWVhc3VyZXMuaGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy53aWR0aCA9IGRhdGEuY29uZmlnLmlzVmVydGljYWwgPyByZWd1bGFyID8gbGVuZ3RoIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWAgOiBkYXRhLmNvbmZpZy5keW5hbWljID8gU0laRV9BVVRPIDogYCR7ZGF0YS5tZWFzdXJlcy53aWR0aH0ke1BYfWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZXMubWluV2lkdGggPSBgJHtkYXRhLm1lYXN1cmVzLm1pbldpZHRofSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5tYXhXaWR0aCA9IGAke2RhdGEubWVhc3VyZXMubWF4V2lkdGh9JHtQWH1gO1xyXG4gICAgICAgICAgICAgICAgc3R5bGVzLm1pbkhlaWdodCA9IGAke2RhdGEubWVhc3VyZXMubWluSGVpZ2h0fSR7UFh9YDtcclxuICAgICAgICAgICAgICAgIHN0eWxlcy5tYXhIZWlnaHQgPSBgJHtkYXRhLm1lYXN1cmVzLm1heEhlaWdodH0ke1BYfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVBdHRyaWJ1dGUoSUQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBzaG93KCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50LFxyXG4gICAgICAgICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gdGhpcy5fZGF0YT8uY29uZmlnPy56SW5kZXggPz8gREVGQVVMVF9aSU5ERVg7XHJcbiAgICAgICAgaWYgKHRoaXMucmVndWxhcikge1xyXG4gICAgICAgICAgICBpZiAoc3R5bGVzLmRpc3BsYXkgPT09IERJU1BMQVlfQkxPQ0spIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3R5bGVzLmRpc3BsYXkgPSBESVNQTEFZX0JMT0NLO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9WSVNJQkxFKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy52aXNpYmlsaXR5ID0gVklTSUJJTElUWV9WSVNJQkxFO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvdmVycmlkZSBoaWRlKCkge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICAgICAgICBzdHlsZXMgPSBlbC5zdHlsZTtcclxuICAgICAgICBzdHlsZXMuekluZGV4ID0gSElEREVOX1pJTkRFWDtcclxuICAgICAgICBpZiAodGhpcy5yZWd1bGFyKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMuZGlzcGxheSA9PT0gRElTUExBWV9OT05FKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHN0eWxlcy5kaXNwbGF5ID0gRElTUExBWV9OT05FO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChzdHlsZXMudmlzaWJpbGl0eSA9PT0gVklTSUJJTElUWV9ISURERU4pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgc3R5bGVzLnZpc2liaWxpdHkgPSBWSVNJQklMSVRZX0hJRERFTjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiKCRkYXRhIHwgYXN5bmMpIGFzIGRhdGFcIj5cclxuICAgIDxkaXYgI2l0ZW0gY2xhc3M9XCJuZ3ZsLWl0ZW1cIiBbbmdDbGFzc109XCIoJGNsYXNzZXMgfCBhc3luYykhXCIgW3BhcnRdPVwiKCRwYXJ0IHwgYXN5bmMpIVwiXHJcbiAgICAgICAgW2F0dHIubmd2bC1pbmRleF09XCIoJGluZGV4IHwgYXN5bmMpIVwiIFthdHRyLm5ndmwtdmlzaWJpbGl0eV09XCJ2aXNpYmlsaXR5XCIgdGFiaW5kZXg9XCItMVwiPlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJfYmxlbmRDb2xvclwiIGNsYXNzPVwibmd2bC1pdGVtX19ibGVuZC1jb2xvclwiIFtzdHlsZS4tLWJsZW5kLWNvbG9yXT1cIl9ibGVuZENvbG9yXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiAjY29udGFpbmVyIHZpcnR1YWxDbGljayBbcGFydF09XCIkZnhQYXJ0IHwgYXN5bmNcIiBbbWF4Q2xpY2tEaXN0YW5jZV09XCIoJG1heENsaWNrRGlzdGFuY2UgfCBhc3luYykhXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJuZ3ZsLWl0ZW1fX2NvbnRhaW5lclwiIFtuZ0NsYXNzXT1cIigkY2xhc3NlcyB8IGFzeW5jKSFcIiAob25WaXJ0dWFsQ2xpY2spPVwib25DbGlja0hhbmRsZXIoKVwiXHJcbiAgICAgICAgICAgIChvblZpcnR1YWxDbGlja1ByZXNzKT1cIm9uQ2xpY2tQcmVzc0hhbmRsZXIoKVwiIChvblZpcnR1YWxDbGlja0NhbmNlbCk9XCJvbkNsaWNrQ2FuY2VsSGFuZGxlcigpXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVJlbmRlcmVyID8/IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIiR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luY1wiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPiJdfQ==
|
|
@@ -244,13 +244,13 @@ export class NgScrollBarComponent extends NgScrollView {
|
|
|
244
244
|
})).subscribe();
|
|
245
245
|
}
|
|
246
246
|
createDragEvent(userAction) {
|
|
247
|
-
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollContent = this.scrollContent?.nativeElement, scrollViewport = this.scrollViewport?.nativeElement;
|
|
247
|
+
const isVertical = this._$isVertical.getValue(), scrollSize = isVertical ? this.scrollHeight : this.scrollWidth, scrollPosition = isVertical ? this.scrollTop : this.scrollLeft, startOffset = this.startOffset, endOffset = this.endOffset, scrollContent = this.scrollContent?.nativeElement, scrollViewport = this.scrollViewport?.nativeElement;
|
|
248
248
|
if (!!scrollViewport && !!scrollContent) {
|
|
249
|
-
const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth, viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth;
|
|
249
|
+
const contentSize = isVertical ? scrollContent.offsetHeight : scrollContent.offsetWidth, viewportSize = isVertical ? scrollViewport.offsetHeight : scrollViewport.offsetWidth, offsetSize = (scrollSize !== 0 ? (startOffset / scrollSize) : 0), positionSize = (scrollSize !== 0 ? (scrollPosition / scrollSize) : 0), maxSize = 1 - offsetSize, pos = (positionSize - offsetSize);
|
|
250
250
|
const event = {
|
|
251
|
-
position:
|
|
252
|
-
min: scrollSize !== 0 ? (
|
|
253
|
-
max: scrollSize !== 0 ? ((viewportSize -
|
|
251
|
+
position: pos / maxSize,
|
|
252
|
+
min: scrollSize !== 0 ? (startOffset / scrollSize) : 0,
|
|
253
|
+
max: scrollSize !== 0 ? ((viewportSize - endOffset - contentSize) / scrollSize) : 0,
|
|
254
254
|
animation: !this._isMoving,
|
|
255
255
|
userAction,
|
|
256
256
|
};
|
|
@@ -321,4 +321,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
321
321
|
}], renderer: [{
|
|
322
322
|
type: Input
|
|
323
323
|
}] } });
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQ3RILGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFV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QUFFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFO3dCQUM1RCxrQkFBa0I7d0JBQ2xCLHdCQUF3QjtxQkFDekIsY0FDVyxLQUFLO3dEQU1QLGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFBLFdBQWdCLENBQUEsRUFBRTtnQkFXcEQsT0FBTztzQkFEVixLQUFLO2dCQU9OLE1BQU07c0JBREwsTUFBTTtnQkFJUCxTQUFTO3NCQURSLE1BQU07Z0JBT0gsc0JBQXNCO3NCQUR6QixLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixTQUFTO3NCQURaLEtBQUs7Z0JBWUYsZ0JBQWdCO3NCQURuQixLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRixJQUFJO3NCQURQLEtBQUs7Z0JBWUYsTUFBTTtzQkFEVCxLQUFLO2dCQVlGLFFBQVE7c0JBRFgsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPdXRwdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIGZyb21FdmVudCwgb2YsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHcmFkaWVudENvbG9yUG9zaXRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMvZ3JhZGllbnQtY29sb3ItcG9zaXRpb25zJztcclxuaW1wb3J0IHsgTmdTY3JvbGxWaWV3LCBTQ1JPTExfVklFV19JTlZFUlNJT04gfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldyc7XHJcbmltcG9ydCB7IElTY3JvbGxCYXJEcmFnRXZlbnQsIElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfTEFOR19URVhUX0RJUiwgREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIsIERFRkFVTFRfU0NST0xMQkFSX0lOVEVSQUNUSVZFLCBMRUZULCBQT1NJVElPTiwgUE9TSVRJT05fQUJTT0xVVEUsXHJcbiAgUE9TSVRJT05fUkVMQVRJVkUsIFJJR0hULCBTSVpFXzEwMF9QRVJTRU5ULCBTSVpFX0FVVE8sIFVOU0VULFxyXG59IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHtcclxuICBERUZBVUxUX1NDUk9MTEJBUl9URU1QTEFURV9DT05URVhULFxyXG4gIERFRkFVTFRfU0laRSwgREVGQVVMVF9USElDS05FU1MsIEhFSUdIVCwgTk9ORSwgT1BBQ0lUWSwgT1BBQ0lUWV8wLCBPUEFDSVRZXzEsIFBYLCBUUkFOU0lUSU9OLCBUUkFOU0lUSU9OX0ZBREVfSU4sIFdJRFRILFxyXG59IGZyb20gJy4vY29uc3QnO1xyXG5pbXBvcnQgeyBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQgfSBmcm9tICcuLi9uZy1zY3JvbGwtdmlldy9jb25zdCc7XHJcbmltcG9ydCB7IE5nU2Nyb2xsQmFyU2VydmljZSB9IGZyb20gJy4vbmctc2Nyb2xsLWJhci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlIH0gZnJvbSAnLi9uZy1zY3JvbGwtYmFyLXB1YmxpYy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2Nyb2xsYmFyU3RhdGVzIH0gZnJvbSAnLi9lbnVtcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XHJcbmltcG9ydCB7IFRleHREaXJlY3Rpb25zIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xyXG5cclxuLyoqXHJcbiAqIFNjcm9sbEJhciBjb21wb25lbnQuXHJcbiAqIE1heGltdW0gcGVyZm9ybWFuY2UgZm9yIGV4dHJlbWVseSBsYXJnZSBsaXN0cy5cclxuICogSXQgaXMgYmFzZWQgb24gYWxnb3JpdGhtcyBmb3IgdmlydHVhbGl6YXRpb24gb2Ygc2NyZWVuIG9iamVjdHMuXHJcbiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Eam9ubnlYL25nLXZpcnR1YWwtbGlzdC9ibG9iLzE4LngvcHJvamVjdHMvbmctdmlydHVhbC1saXN0L3NyYy9saWIvY29tcG9uZW50cy9uZy1zY3JvbGwtYmFyL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnRzXHJcbiAqIEBhdXRob3IgRXZnZW5paSBBbGV4YW5kcm92aWNoIEdyZWJlbm5pa292XHJcbiAqIEBlbWFpbCBkam9ubnl4QGdtYWlsLmNvbVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduZy1zY3JvbGwtYmFyJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfSU5WRVJTSU9OLCB1c2VWYWx1ZTogdHJ1ZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPLCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIHsgcHJvdmlkZTogU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVELCB1c2VWYWx1ZTogZmFsc2UgfSxcclxuICAgIE5nU2Nyb2xsQmFyU2VydmljZSxcclxuICAgIE5nU2Nyb2xsQmFyUHVibGljU2VydmljZSxcclxuICBdLFxyXG4gIHN0YW5kYWxvbmU6IGZhbHNlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZy1zY3JvbGwtYmFyLmNvbXBvbmVudC5zY3NzJyxdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ1Njcm9sbEJhckNvbXBvbmVudCBleHRlbmRzIE5nU2Nyb2xsVmlldyB7XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdFJlbmRlcmVyJywgeyByZWFkOiBUZW1wbGF0ZVJlZjxhbnk+IH0pXHJcbiAgcHJvdGVjdGVkIF9kZWZhdWx0UmVuZGVyZXI6IFRlbXBsYXRlUmVmPGFueT4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gIHByb3RlY3RlZCBfc2Nyb2xsQmFyU2VydmljZSA9IGluamVjdChOZ1Njcm9sbEJhclNlcnZpY2UpO1xyXG5cclxuICBwcml2YXRlIF9hcGlTZXJ2aWNlID0gaW5qZWN0KE5nU2Nyb2xsQmFyUHVibGljU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgXyRsb2FkaW5nID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJGxvYWRpbmcgPSB0aGlzLl8kbG9hZGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgbG9hZGluZyh2OiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl8kbG9hZGluZy5uZXh0KHYpO1xyXG4gIH1cclxuICBnZXQgbG9hZGluZygpIHsgcmV0dXJuIHRoaXMuXyRsb2FkaW5nLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgb25EcmFnID0gbmV3IEV2ZW50RW1pdHRlcjxJU2Nyb2xsQmFyRHJhZ0V2ZW50PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkRyYWdFbmQgPSBuZXcgRXZlbnRFbWl0dGVyPElTY3JvbGxCYXJEcmFnRXZlbnQ+KCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxHcmFkaWVudENvbG9yUG9zaXRpb25zPihbMCwgMF0pO1xyXG4gIHJlYWRvbmx5ICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHRodW1iR3JhZGllbnRQb3NpdGlvbnModjogR3JhZGllbnRDb2xvclBvc2l0aW9ucykge1xyXG4gICAgaWYgKHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHRodW1iR3JhZGllbnRQb3NpdGlvbnMoKSB7IHJldHVybiB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRzaXplID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfU0laRSk7XHJcbiAgcmVhZG9ubHkgJHNpemUgPSB0aGlzLl8kc2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2l6ZSh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2l6ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzaXplLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzaXplKCkgeyByZXR1cm4gdGhpcy5fJHNpemUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kdGhpY2tuZXNzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KERFRkFVTFRfVEhJQ0tORVNTKTtcclxuICByZWFkb25seSAkdGhpY2tuZXNzID0gdGhpcy5fJHRoaWNrbmVzcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGhpY2tuZXNzKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyR0aGlja25lc3MuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kdGhpY2tuZXNzLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCB0aGlja25lc3MoKSB7IHJldHVybiB0aGlzLl8kdGhpY2tuZXNzLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNjcm9sbGJhck1pblNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJHNjcm9sbGJhck1pblNpemUgPSB0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgc2Nyb2xsYmFyTWluU2l6ZSh2OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLl8kc2Nyb2xsYmFyTWluU2l6ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzY3JvbGxiYXJNaW5TaXplKCkgeyByZXR1cm4gdGhpcy5fJGVuZE9mZnNldC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRwcmVwYXJlZCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRwcmVwYXJlZCA9IHRoaXMuXyRwcmVwYXJlZC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcHJlcGFyZWQodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRwcmVwYXJlZC5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRwcmVwYXJlZC5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcHJlcGFyZWQoKSB7IHJldHVybiB0aGlzLl8kcHJlcGFyZWQuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kbGFuZ1RleHREaXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRleHREaXJlY3Rpb24+KERFRkFVTFRfTEFOR19URVhUX0RJUik7XHJcbiAgcmVhZG9ubHkgJGxhbmdUZXh0RGlyID0gdGhpcy5fJGxhbmdUZXh0RGlyLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsYW5nVGV4dERpcih2OiBUZXh0RGlyZWN0aW9uKSB7XHJcbiAgICBpZiAodGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGxhbmdUZXh0RGlyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBsYW5nVGV4dERpcigpIHsgcmV0dXJuIHRoaXMuXyRsYW5nVGV4dERpci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRpbnRlcmFjdGl2ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUpO1xyXG4gIHJlYWRvbmx5ICRpbnRlcmFjdGl2ZSA9IHRoaXMuXyRpbnRlcmFjdGl2ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgaW50ZXJhY3RpdmUodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRpbnRlcmFjdGl2ZS5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgaW50ZXJhY3RpdmUoKSB7IHJldHVybiB0aGlzLl8kaW50ZXJhY3RpdmUuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kb3ZlcmxhcHBpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KERFRkFVTFRfT1ZFUkxBUFBJTkdfU0NST0xMQkFSKTtcclxuICByZWFkb25seSAkb3ZlcmxhcHBpbmcgPSB0aGlzLl8kb3ZlcmxhcHBpbmcuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IG92ZXJsYXBwaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kb3ZlcmxhcHBpbmcubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IG92ZXJsYXBwaW5nKCkgeyByZXR1cm4gdGhpcy5fJG92ZXJsYXBwaW5nLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNob3cgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkc2hvdyA9IHRoaXMuXyRzaG93LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaG93KHY6IGJvb2xlYW4pIHtcclxuICAgIGlmICh0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRzaG93Lm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBzaG93KCkgeyByZXR1cm4gdGhpcy5fJHNob3cuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kcGFyYW1zID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsPih7fSk7XHJcbiAgcmVhZG9ubHkgJHBhcmFtcyA9IHRoaXMuXyRwYXJhbXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHBhcmFtcyh2OiB7IFtwcm9wTmFtZTogc3RyaW5nXTogYW55IH0gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRwYXJhbXMubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuXyRwYXJhbXMuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kcmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPihudWxsKTtcclxuICByZWFkb25seSAkcmVuZGVyZXIgPSB0aGlzLl8kcmVuZGVyZXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHJlbmRlcmVyKHY6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHJlbmRlcmVyLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCByZW5kZXJlcigpIHsgcmV0dXJuIHRoaXMuXyRyZW5kZXJlci5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYlJlbmRlcmVyID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbD4odGhpcy5fZGVmYXVsdFJlbmRlcmVyID8/IG51bGwpO1xyXG4gIHJlYWRvbmx5ICR0aHVtYlJlbmRlcmVyID0gdGhpcy5fJHRodW1iUmVuZGVyZXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRob3ZlclN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJGhvdmVyU3RhdGUgPSB0aGlzLl8kaG92ZXJTdGF0ZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHByZXNzZWRTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRwcmVzc2VkU3RhdGUgPSB0aGlzLl8kcHJlc3NlZFN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGVtcGxhdGVDb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxJU2Nyb2xsQmFyVGVtcGxhdGVDb250ZXh0PihERUZBVUxUX1NDUk9MTEJBUl9URU1QTEFURV9DT05URVhUKTtcclxuICByZWFkb25seSAkdGVtcGxhdGVDb250ZXh0ID0gdGhpcy5fJHRlbXBsYXRlQ29udGV4dC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHN0eWxlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBbc3R5bGVOYW1lOiBzdHJpbmddOiBhbnkgfT4oe30pO1xyXG4gIHJlYWRvbmx5ICRzdHlsZXMgPSB0aGlzLl8kc3R5bGVzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJXaWR0aCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJXaWR0aCA9IHRoaXMuXyR0aHVtYldpZHRoLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kdGh1bWJIZWlnaHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iSGVpZ2h0ID0gdGhpcy5fJHRodW1iSGVpZ2h0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsaW5nQ2FuY2VsID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgJHNjcm9sbGluZ0NhbmNlbCA9IHRoaXMuXyRzY3JvbGxpbmdDYW5jZWwuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuXHJcbiAgICBjb25zdCAkdGh1bWJXaWR0aCA9IHRoaXMuJHRodW1iV2lkdGgsXHJcbiAgICAgICR0aHVtYkhlaWdodCA9IHRoaXMuJHRodW1iSGVpZ2h0LFxyXG4gICAgICAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucyA9IHRoaXMuJHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICRwYXJhbXMgPSB0aGlzLiRwYXJhbXM7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJHRodW1iV2lkdGgsICR0aHVtYkhlaWdodCwgJHRodW1iR3JhZGllbnRQb3NpdGlvbnMsICRwYXJhbXNdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICB0YXAoKFt0aHVtYldpZHRoLCB0aHVtYkhlaWdodCwgdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgcGFyYW1zXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGNvbnRleHQ6IElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQgPSB7XHJcbiAgICAgICAgICBhcGk6IHRoaXMuX2FwaVNlcnZpY2UsXHJcbiAgICAgICAgICB3aWR0aDogdGh1bWJXaWR0aCxcclxuICAgICAgICAgIGhlaWdodDogdGh1bWJIZWlnaHQsXHJcbiAgICAgICAgICBmaWxsUG9zaXRpb25zOiB0aHVtYkdyYWRpZW50UG9zaXRpb25zLFxyXG4gICAgICAgICAgcGFyYW1zOiBwYXJhbXMgPz8ge30sXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLl8kdGVtcGxhdGVDb250ZXh0Lm5leHQoY29udGV4dCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcmVuZGVyZXIgPSB0aGlzLiRyZW5kZXJlci5waXBlKFxyXG4gICAgICBzdGFydFdpdGgobnVsbCksXHJcbiAgICApLFxyXG4gICAgICAkZGVmYXVsdFJlbmRlcmVyID0gb2YodGhpcy5fZGVmYXVsdFJlbmRlcmVyKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXJdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgc3dpdGNoTWFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICByZXR1cm4gb2YoKHJlbmRlcmVyID8/IGRlZmF1bHRSZW5kZXJlcikgPz8gbnVsbCk7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHYpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHByZXBhcmVkID0gdGhpcy4kcHJlcGFyZWQ7XHJcbiAgICAkcHJlcGFyZWQucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGZpbHRlcih2ID0+ICEhdiksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxMaW1pdHMoKTtcclxuICAgICAgICB0aGlzLnJlZnJlc2hDb29yZGluYXRlKHRoaXMuX3gsIHRoaXMuX3kpO1xyXG4gICAgICAgIHRoaXMuZmlyZVNjcm9sbEV2ZW50KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuJGlzVmVydGljYWwsIHRoaXMuJHRoaWNrbmVzcywgdGhpcy4kc2l6ZV0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtpc1ZlcnRpY2FsLCB0aGlja25lc3MsIHNpemVdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iV2lkdGgubmV4dChpc1ZlcnRpY2FsID8gdGhpY2tuZXNzIDogc2l6ZSk7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iSGVpZ2h0Lm5leHQoaXNWZXJ0aWNhbCA/IHNpemUgOiB0aGlja25lc3MpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuXHJcbiAgICBjb25zdCAkd2hlZWwgPSB0aGlzLiR3aGVlbDtcclxuICAgICR3aGVlbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDEwMCksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh0cnVlKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHBvaW50ZXJEb3duID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmRvd24nKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRwb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVydXAnKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRkb2NQb2ludGVyVXAgPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJFbnRlciA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJlbnRlcicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJMZWF2ZSA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJsZWF2ZScpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICAkcG9pbnRlckRvd24ucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcChlID0+IHtcclxuICAgICAgICB0aGlzLl8kcHJlc3NlZFN0YXRlLm5leHQodGhpcy50aHVtYkhpdChlLmNsaWVudFgsIGUuY2xpZW50WSkpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbJGRvY1BvaW50ZXJVcCwgJHBvaW50ZXJVcF0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkcG9pbnRlckVudGVyLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRob3ZlclN0YXRlLm5leHQodHJ1ZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICAkcG9pbnRlckxlYXZlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRob3ZlclN0YXRlLm5leHQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHByZXNzZWRTdGF0ZSA9IHRoaXMuJHByZXNzZWRTdGF0ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICksICRob3ZlclN0YXRlID0gdGhpcy4kaG92ZXJTdGF0ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbXHJcbiAgICAgICRwcmVzc2VkU3RhdGUsICRob3ZlclN0YXRlLFxyXG4gICAgXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKChbcHJlc3NlZCwgaG92ZXJdKSA9PiB7XHJcbiAgICAgICAgaWYgKHByZXNzZWQpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuUFJFU1NFRDtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKGhvdmVyKSB7XHJcbiAgICAgICAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLnN0YXRlID0gU2Nyb2xsYmFyU3RhdGVzLkhPVkVSO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLnN0YXRlID0gU2Nyb2xsYmFyU3RhdGVzLk5PUk1BTDtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRzaXplLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAodiA9PiB7XHJcbiAgICAgICAgdGhpcy50b3RhbFNpemUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgdGhpcy4kaW50ZXJhY3RpdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLmludGVyYWN0aXZlID0gdjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuJHNob3csIHRoaXMuJGlzVmVydGljYWwsIHRoaXMuJHRoaWNrbmVzc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtzaG93LCBpc1ZlcnRpY2FsLCB0aGlja25lc3NdKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgc2l6ZVByb3BOYW1lID0gaXNWZXJ0aWNhbCA/IFdJRFRIIDogSEVJR0hUO1xyXG4gICAgICAgIHRoaXMuXyRzdHlsZXMubmV4dCh7XHJcbiAgICAgICAgICBbc2l6ZVByb3BOYW1lXTogYCR7c2hvdyA/IHRoaWNrbmVzcyA6IDB9JHtQWH1gLFxyXG4gICAgICAgICAgW09QQUNJVFldOiBzaG93ID8gT1BBQ0lUWV8xIDogT1BBQ0lUWV8wLCBbVFJBTlNJVElPTl06IHNob3cgPyBUUkFOU0lUSU9OX0ZBREVfSU4gOiBOT05FLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJG92ZXJsYXBwaW5nID0gdGhpcy4kb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpciA9IHRoaXMuJGxhbmdUZXh0RGlyO1xyXG4gICAgY29tYmluZUxhdGVzdChbJG92ZXJsYXBwaW5nLCAkbGFuZ1RleHREaXJdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKChbb3ZlcmxhcHBpbmcsIGxhbmdUZXh0RGlyXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgIGlmICghIWVsKSB7XHJcbiAgICAgICAgICBlbC5zdHlsZVtQT1NJVElPTl0gPSBvdmVybGFwcGluZyA/IFBPU0lUSU9OX0FCU09MVVRFIDogUE9TSVRJT05fUkVMQVRJVkU7XHJcbiAgICAgICAgICBlbC5zdHlsZVtMRUZUXSA9IG92ZXJsYXBwaW5nICYmIGxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5SVEwgPyAnMCcgOiBVTlNFVDtcclxuICAgICAgICAgIGVsLnN0eWxlW1JJR0hUXSA9IG92ZXJsYXBwaW5nICYmIGxhbmdUZXh0RGlyID09PSBUZXh0RGlyZWN0aW9ucy5MVFIgPyAnMCcgOiBVTlNFVDtcclxuICAgICAgICAgIGVsLnN0eWxlW1dJRFRIXSA9IG92ZXJsYXBwaW5nID8gU0laRV9BVVRPIDogU0laRV8xMDBfUEVSU0VOVDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRzY3JvbGwucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHYpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZy5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkc2Nyb2xsRW5kID0gdGhpcy4kc2Nyb2xsRW5kO1xyXG4gICAgJHNjcm9sbEVuZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHVzZXJBY3Rpb24gPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnRW5kLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyID0gb2YodGhpcy5fZGVmYXVsdFJlbmRlcmVyKTtcclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3JlbmRlcmVyLCBkZWZhdWx0UmVuZGVyZXJdKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHRodW1iUmVuZGVyZXIubmV4dChyZW5kZXJlciB8fCBkZWZhdWx0UmVuZGVyZXIgfHwgbnVsbCk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRHJhZ0V2ZW50KHVzZXJBY3Rpb246IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IGlzVmVydGljYWwgPSB0aGlzLl8kaXNWZXJ0aWNhbC5nZXRWYWx1ZSgpLCBzY3JvbGxTaXplID0gaXNWZXJ0aWNhbCA/IHRoaXMuc2Nyb2xsSGVpZ2h0IDogdGhpcy5zY3JvbGxXaWR0aCxcclxuICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKCEhc2Nyb2xsVmlld3BvcnQgJiYgISFzY3JvbGxDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IGV2ZW50OiBJU2Nyb2xsQmFyRHJhZ0V2ZW50ID0ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBzY3JvbGxTaXplICE9PSAwID8gKChpc1ZlcnRpY2FsID8gdGhpcy5feSA6IHRoaXMuX3gpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIG1pbjogc2Nyb2xsU2l6ZSAhPT0gMCA/ICh0aGlzLnN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIG1heDogc2Nyb2xsU2l6ZSAhPT0gMCA/ICgodmlld3BvcnRTaXplIC0gdGhpcy5lbmRPZmZzZXQgLSBjb250ZW50U2l6ZSkgLyBzY3JvbGxTaXplKSA6IDAsXHJcbiAgICAgICAgYW5pbWF0aW9uOiAhdGhpcy5faXNNb3ZpbmcsXHJcbiAgICAgICAgdXNlckFjdGlvbixcclxuICAgICAgfTtcclxuICAgICAgcmV0dXJuIGV2ZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRodW1iSGl0KHg6IG51bWJlciwgeTogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB0aHVtYiA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGlmICghIXRodW1iKSB7XHJcbiAgICAgIGNvbnN0IHsgeDogdFgsIHk6IHRZLCB3aWR0aDogdFdpZHRoLCBoZWlnaHQ6IHRIZWlnaHQgfSA9IHRodW1iLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICBpZiAoKHggPj0gdFggJiYgeCA8PSB0WCArIHRXaWR0aCkgJiYgKHkgPj0gdFkgJiYgeSA8PSB0WSArIHRIZWlnaHQpKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGNsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSB7XHJcbiAgICB0aGlzLl9zY3JvbGxCYXJTZXJ2aWNlLmNsaWNrKGV2ZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiAjc2Nyb2xsVmlld3BvcnQgY2xhc3M9XCJ0cmFja1wiIHBhcnQ9XCJzY3JvbGxiYXItdHJhY2tcIiBbbmdTdHlsZV09XCIkc3R5bGVzIHwgYXN5bmNcIlxyXG4gICAgW25nQ2xhc3NdPVwie2dyYWJiaW5nOiAkZ3JhYmJpbmcgfCBhc3luY31cIj5cclxuICAgIDxkaXYgI3Njcm9sbENvbnRlbnQgY2xhc3M9XCJ0aHVtYlwiIHBhcnQ9XCJzY3JvbGxiYXItdGh1bWJcIiBbY2xhc3MuaG9yaXpvbnRhbF09XCIoJGlzVmVydGljYWwgfCBhc3luYykhID09IGZhbHNlXCJcclxuICAgICAgICAocG9pbnRlcmRvd24pPVwiY2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiKCR0aHVtYlJlbmRlcmVyIHwgYXN5bmMpIVwiXHJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCIoJHRlbXBsYXRlQ29udGV4dCB8IGFzeW5jKSFcIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJlbmRlcmVyIGxldC1hcGk9XCJhcGlcIiBsZXQtd2lkdGg9XCJ3aWR0aFwiIGxldC1oZWlnaHQ9XCJoZWlnaHRcIiBsZXQtZmlsbFBvc2l0aW9ucz1cImZpbGxQb3NpdGlvbnNcIlxyXG4gICAgbGV0LXBhcmFtcz1cInBhcmFtc1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNoYXBlXCIgcGFydD1cInNjcm9sbGJhci10aHVtYl9fc2hhcGVcIiBbc3R5bGUud2lkdGgucHhdPVwid2lkdGhcIiBbc3R5bGUuaGVpZ2h0LnB4XT1cImhlaWdodFwiPjwvZGl2PlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsLWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuSCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVoSyxPQUFPLEVBQUUsWUFBWSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFeEUsT0FBTyxFQUNMLHFCQUFxQixFQUFFLDZCQUE2QixFQUFFLDZCQUE2QixFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQ3RILGlCQUFpQixFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsS0FBSyxHQUM3RCxNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsa0NBQWtDLEVBQ2xDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsa0JBQWtCLEVBQUUsS0FBSyxHQUN4SCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUscUNBQXFDLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNoSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUU3Qzs7Ozs7OztHQU9HO0FBY0gsTUFBTSxPQUFPLG9CQUFxQixTQUFRLFlBQVk7SUFFMUMsZ0JBQWdCLEdBQWlDLFNBQVMsQ0FBQztJQUUzRCxpQkFBaUIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUVqRCxXQUFXLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFL0MsU0FBUyxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQy9DLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELElBQ0ksT0FBTyxDQUFDLENBQVU7UUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFHbkQsTUFBTSxHQUFHLElBQUksWUFBWSxFQUF1QixDQUFDO0lBR2pELFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBdUIsQ0FBQztJQUU1Qyx3QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBeUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSx1QkFBdUIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFaEYsSUFDSSxzQkFBc0IsQ0FBQyxDQUF5QjtRQUNsRCxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxzQkFBc0IsS0FBSyxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekUsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFTLFlBQVksQ0FBQyxDQUFDO0lBQ2xELEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTVDLElBQ0ksSUFBSSxDQUFDLENBQVM7UUFDaEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVyQyxXQUFXLEdBQUcsSUFBSSxlQUFlLENBQVMsaUJBQWlCLENBQUMsQ0FBQztJQUM1RCxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV0RCxJQUNJLFNBQVMsQ0FBQyxDQUFTO1FBQ3JCLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksU0FBUyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0Msa0JBQWtCLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXBFLElBQ0ksZ0JBQWdCLENBQUMsQ0FBUztRQUM1QixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxnQkFBZ0IsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXRELFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNoRCxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRCxJQUNJLFFBQVEsQ0FBQyxDQUFVO1FBQ3JCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0MsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFnQixxQkFBcUIsQ0FBQyxDQUFDO0lBQ3pFLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFELElBQ0ksV0FBVyxDQUFDLENBQWdCO1FBQzlCLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkQsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFVLDZCQUE2QixDQUFDLENBQUM7SUFDM0UsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFMUQsSUFDSSxXQUFXLENBQUMsQ0FBVTtRQUN4QixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5ELGFBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBVSw2QkFBNkIsQ0FBQyxDQUFDO0lBQzNFLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRTFELElBQ0ksV0FBVyxDQUFDLENBQVU7UUFDeEIsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRCxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDNUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFNUMsSUFDSSxJQUFJLENBQUMsQ0FBVTtRQUNqQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXJDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBcUMsRUFBRSxDQUFDLENBQUM7SUFDdEUsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFaEQsSUFDSSxNQUFNLENBQUMsQ0FBcUM7UUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV6QyxVQUFVLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO0lBQy9ELFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXBELElBQ0ksUUFBUSxDQUFDLENBQTBCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUksUUFBUSxLQUFLLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFN0MsZUFBZSxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsZ0JBQWdCLElBQUksSUFBSSxDQUFDLENBQUM7SUFDN0YsY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdEQsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ2xELFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWhELGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNwRCxhQUFhLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUVwRCxpQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBNEIsa0NBQWtDLENBQUMsQ0FBQztJQUN0RyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFMUQsUUFBUSxHQUFHLElBQUksZUFBZSxDQUErQixFQUFFLENBQUMsQ0FBQztJQUNoRSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUV4QyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQVMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFaEQsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRWxELGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDN0IsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXBFLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekM7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQUVSLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQ2xDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxFQUNoQyx1QkFBdUIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQ3RELE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRXpCLGFBQWEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsdUJBQXVCLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9FLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtZQUNoRSxNQUFNLE9BQU8sR0FBOEI7Z0JBQ3pDLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVztnQkFDckIsS0FBSyxFQUFFLFVBQVU7Z0JBQ2pCLE1BQU0sRUFBRSxXQUFXO2dCQUNuQixhQUFhLEVBQUUsc0JBQXNCO2dCQUNyQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUU7YUFDckIsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNuQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQ2hCLEVBQ0MsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRS9DLGFBQWEsQ0FBQyxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQyxFQUNGLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNqQyxTQUFTLENBQUMsSUFBSSxDQUNaLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEIsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDakUsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0Isb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDcEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFUSxlQUFlO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUV4QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQ1QsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUNqQixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBZSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzlGLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQzlCLEVBQUUsVUFBVSxHQUFHLFNBQVMsQ0FBZSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3ZGLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQzlCLEVBQUUsYUFBYSxHQUFHLFNBQVMsQ0FBZSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUNwRSxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUM5QixFQUFFLGFBQWEsR0FBRyxTQUFTLENBQWUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUM3RixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUM5QixFQUFFLGFBQWEsR0FBRyxTQUFTLENBQWUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUM3RixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUM5QixDQUFDO1FBRUYsWUFBWSxDQUFDLElBQUksQ0FDZixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDN0MsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7UUFFZCxhQUFhLENBQUMsSUFBSSxDQUNoQixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLGFBQWEsQ0FBQyxJQUFJLENBQ2hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQzNDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQzlCLEVBQUUsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNwQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUM5QixDQUFDO1FBRUYsYUFBYSxDQUFDO1lBQ1osYUFBYSxFQUFFLFdBQVc7U0FDM0IsQ0FBQyxDQUFDLElBQUksQ0FDTCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2Ysb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUN2QixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztnQkFDdkQsT0FBTztZQUNULENBQUM7aUJBQU0sSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO2dCQUNyRCxPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUN0RCxPQUFPO1FBQ1QsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFLENBQUM7UUFFZCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FDcEIsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0Isb0JBQW9CLEVBQUUsRUFDdEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ04sSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ2pFLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLG9CQUFvQixFQUFFLEVBQ3RCLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDakQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLENBQUMsWUFBWSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDOUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSTthQUN4RixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN6RSxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUU7WUFDakMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7WUFDMUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ1QsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDekUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxXQUFXLElBQUksV0FBVyxLQUFLLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNqRixFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFdBQVcsSUFBSSxXQUFXLEtBQUssY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Z0JBQ2xGLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ2YsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDN0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ04sTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUVkLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkMsVUFBVSxDQUFDLElBQUksQ0FDYixTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUNaLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBRWQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDL0UsYUFBYSxDQUFDLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQy9DLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQzdCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO1lBQ2xDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxlQUFlLElBQUksSUFBSSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRU8sZUFBZSxDQUFDLFVBQW1CO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFDN0csY0FBYyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFDOUQsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQzFELGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLGFBQTRCLEVBQ2hFLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQStCLENBQUM7UUFDeEUsSUFBSSxDQUFDLENBQUMsY0FBYyxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN4QyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQ3JGLFlBQVksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxXQUFXLEVBQ3BGLFVBQVUsR0FBRyxDQUFDLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDaEUsWUFBWSxHQUFHLENBQUMsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNyRSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFVBQVUsRUFDeEIsR0FBRyxHQUFHLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sS0FBSyxHQUF3QjtnQkFDakMsUUFBUSxFQUFFLEdBQUcsR0FBRyxPQUFPO2dCQUN2QixHQUFHLEVBQUUsVUFBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsRUFBRSxVQUFVLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDbkYsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVM7Z0JBQzFCLFVBQVU7YUFDWCxDQUFDO1lBQ0YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sUUFBUSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFDO1FBQ2hELElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1osTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBZ0M7UUFDcEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO3dHQXJhVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw2WkFYcEI7WUFDVCxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ2xELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7WUFDbkUsRUFBRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRTtZQUM1RCxrQkFBa0I7WUFDbEIsd0JBQXdCO1NBQ3pCLDBIQU1xQyxDQUFBLFdBQWdCLENBQUEsb0RDMUN4RCxpeUJBWWM7OzRGRDZCRCxvQkFBb0I7a0JBYmhDLFNBQVM7K0JBQ0UsZUFBZSxhQUNkO3dCQUNULEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7d0JBQ2xELEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQ25FLEVBQUUsT0FBTyxFQUFFLDhCQUE4QixFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7d0JBQzVELGtCQUFrQjt3QkFDbEIsd0JBQXdCO3FCQUN6QixjQUNXLEtBQUs7d0RBTVAsZ0JBQWdCO3NCQUR6QixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUEsV0FBZ0IsQ0FBQSxFQUFFO2dCQVdwRCxPQUFPO3NCQURWLEtBQUs7Z0JBT04sTUFBTTtzQkFETCxNQUFNO2dCQUlQLFNBQVM7c0JBRFIsTUFBTTtnQkFPSCxzQkFBc0I7c0JBRHpCLEtBQUs7Z0JBWUYsSUFBSTtzQkFEUCxLQUFLO2dCQVlGLFNBQVM7c0JBRFosS0FBSztnQkFZRixnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLO2dCQVlGLFdBQVc7c0JBRGQsS0FBSztnQkFZRixXQUFXO3NCQURkLEtBQUs7Z0JBWUYsV0FBVztzQkFEZCxLQUFLO2dCQVlGLElBQUk7c0JBRFAsS0FBSztnQkFZRixNQUFNO3NCQURULEtBQUs7Z0JBWUYsUUFBUTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE91dHB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgZnJvbUV2ZW50LCBvZiwgc3RhcnRXaXRoLCBTdWJqZWN0LCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEdyYWRpZW50Q29sb3JQb3NpdGlvbnMgfSBmcm9tICcuLi8uLi90eXBlcy9ncmFkaWVudC1jb2xvci1wb3NpdGlvbnMnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbFZpZXcsIFNDUk9MTF9WSUVXX0lOVkVSU0lPTiB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3JztcclxuaW1wb3J0IHsgSVNjcm9sbEJhckRyYWdFdmVudCwgSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7XHJcbiAgREVGQVVMVF9MQU5HX1RFWFRfRElSLCBERUZBVUxUX09WRVJMQVBQSU5HX1NDUk9MTEJBUiwgREVGQVVMVF9TQ1JPTExCQVJfSU5URVJBQ1RJVkUsIExFRlQsIFBPU0lUSU9OLCBQT1NJVElPTl9BQlNPTFVURSxcclxuICBQT1NJVElPTl9SRUxBVElWRSwgUklHSFQsIFNJWkVfMTAwX1BFUlNFTlQsIFNJWkVfQVVUTywgVU5TRVQsXHJcbn0gZnJvbSAnLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQge1xyXG4gIERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQsXHJcbiAgREVGQVVMVF9TSVpFLCBERUZBVUxUX1RISUNLTkVTUywgSEVJR0hULCBOT05FLCBPUEFDSVRZLCBPUEFDSVRZXzAsIE9QQUNJVFlfMSwgUFgsIFRSQU5TSVRJT04sIFRSQU5TSVRJT05fRkFERV9JTiwgV0lEVEgsXHJcbn0gZnJvbSAnLi9jb25zdCc7XHJcbmltcG9ydCB7IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIFNDUk9MTF9WSUVXX09WRVJTQ1JPTExfRU5BQkxFRCB9IGZyb20gJy4uL25nLXNjcm9sbC12aWV3L2NvbnN0JztcclxuaW1wb3J0IHsgTmdTY3JvbGxCYXJTZXJ2aWNlIH0gZnJvbSAnLi9uZy1zY3JvbGwtYmFyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ1Njcm9sbEJhclB1YmxpY1NlcnZpY2UgfSBmcm9tICcuL25nLXNjcm9sbC1iYXItcHVibGljLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTY3JvbGxiYXJTdGF0ZXMgfSBmcm9tICcuL2VudW1zJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcclxuaW1wb3J0IHsgVGV4dERpcmVjdGlvbnMgfSBmcm9tICcuLi8uLi9lbnVtcyc7XHJcblxyXG4vKipcclxuICogU2Nyb2xsQmFyIGNvbXBvbmVudC5cclxuICogTWF4aW11bSBwZXJmb3JtYW5jZSBmb3IgZXh0cmVtZWx5IGxhcmdlIGxpc3RzLlxyXG4gKiBJdCBpcyBiYXNlZCBvbiBhbGdvcml0aG1zIGZvciB2aXJ0dWFsaXphdGlvbiBvZiBzY3JlZW4gb2JqZWN0cy5cclxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0Rqb25ueVgvbmctdmlydHVhbC1saXN0L2Jsb2IvMTgueC9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC1iYXIvbmctc2Nyb2xsLWJhci5jb21wb25lbnQudHNcclxuICogQGF1dGhvciBFdmdlbmlpIEFsZXhhbmRyb3ZpY2ggR3JlYmVubmlrb3ZcclxuICogQGVtYWlsIGRqb25ueXhAZ21haWwuY29tXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ25nLXNjcm9sbC1iYXInLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19JTlZFUlNJT04sIHVzZVZhbHVlOiB0cnVlIH0sXHJcbiAgICB7IHByb3ZpZGU6IFNDUk9MTF9WSUVXX05PUk1BTElaRV9WQUxVRV9GUk9NX1pFUk8sIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgeyBwcm92aWRlOiBTQ1JPTExfVklFV19PVkVSU0NST0xMX0VOQUJMRUQsIHVzZVZhbHVlOiBmYWxzZSB9LFxyXG4gICAgTmdTY3JvbGxCYXJTZXJ2aWNlLFxyXG4gICAgTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlLFxyXG4gIF0sXHJcbiAgc3RhbmRhbG9uZTogZmFsc2UsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL25nLXNjcm9sbC1iYXIuY29tcG9uZW50LnNjc3MnLF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nU2Nyb2xsQmFyQ29tcG9uZW50IGV4dGVuZHMgTmdTY3JvbGxWaWV3IHtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0UmVuZGVyZXInLCB7IHJlYWQ6IFRlbXBsYXRlUmVmPGFueT4gfSlcclxuICBwcm90ZWN0ZWQgX2RlZmF1bHRSZW5kZXJlcjogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgcHJvdGVjdGVkIF9zY3JvbGxCYXJTZXJ2aWNlID0gaW5qZWN0KE5nU2Nyb2xsQmFyU2VydmljZSk7XHJcblxyXG4gIHByaXZhdGUgX2FwaVNlcnZpY2UgPSBpbmplY3QoTmdTY3JvbGxCYXJQdWJsaWNTZXJ2aWNlKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkbG9hZGluZyA9IHRoaXMuXyRsb2FkaW5nLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBsb2FkaW5nKHY6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuXyRsb2FkaW5nLm5leHQodik7XHJcbiAgfVxyXG4gIGdldCBsb2FkaW5nKCkgeyByZXR1cm4gdGhpcy5fJGxvYWRpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBvbkRyYWcgPSBuZXcgRXZlbnRFbWl0dGVyPElTY3JvbGxCYXJEcmFnRXZlbnQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIG9uRHJhZ0VuZCA9IG5ldyBFdmVudEVtaXR0ZXI8SVNjcm9sbEJhckRyYWdFdmVudD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEdyYWRpZW50Q29sb3JQb3NpdGlvbnM+KFswLCAwXSk7XHJcbiAgcmVhZG9ubHkgJHRodW1iR3JhZGllbnRQb3NpdGlvbnMgPSB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucyh2OiBHcmFkaWVudENvbG9yUG9zaXRpb25zKSB7XHJcbiAgICBpZiAodGhpcy5fJHRodW1iR3JhZGllbnRQb3NpdGlvbnMuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kdGh1bWJHcmFkaWVudFBvc2l0aW9ucy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdGh1bWJHcmFkaWVudFBvc2l0aW9ucygpIHsgcmV0dXJuIHRoaXMuXyR0aHVtYkdyYWRpZW50UG9zaXRpb25zLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHNpemUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9TSVpFKTtcclxuICByZWFkb25seSAkc2l6ZSA9IHRoaXMuXyRzaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLl8kc2l6ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyR0aGlja25lc3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oREVGQVVMVF9USElDS05FU1MpO1xyXG4gIHJlYWRvbmx5ICR0aGlja25lc3MgPSB0aGlzLl8kdGhpY2tuZXNzLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCB0aGlja25lc3ModjogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5fJHRoaWNrbmVzcy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyR0aGlja25lc3MubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHRoaWNrbmVzcygpIHsgcmV0dXJuIHRoaXMuXyR0aGlja25lc3MuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2Nyb2xsYmFyTWluU2l6ZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkc2Nyb2xsYmFyTWluU2l6ZSA9IHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBzY3JvbGxiYXJNaW5TaXplKHY6IG51bWJlcikge1xyXG4gICAgaWYgKHRoaXMuXyRzY3JvbGxiYXJNaW5TaXplLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNjcm9sbGJhck1pblNpemUubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNjcm9sbGJhck1pblNpemUoKSB7IHJldHVybiB0aGlzLl8kZW5kT2Zmc2V0LmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHByZXBhcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXBhcmVkID0gdGhpcy5fJHByZXBhcmVkLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBwcmVwYXJlZCh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJHByZXBhcmVkLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHByZXBhcmVkLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBwcmVwYXJlZCgpIHsgcmV0dXJuIHRoaXMuXyRwcmVwYXJlZC5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRsYW5nVGV4dERpciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGV4dERpcmVjdGlvbj4oREVGQVVMVF9MQU5HX1RFWFRfRElSKTtcclxuICByZWFkb25seSAkbGFuZ1RleHREaXIgPSB0aGlzLl8kbGFuZ1RleHREaXIuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGxhbmdUZXh0RGlyKHY6IFRleHREaXJlY3Rpb24pIHtcclxuICAgIGlmICh0aGlzLl8kbGFuZ1RleHREaXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kbGFuZ1RleHREaXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IGxhbmdUZXh0RGlyKCkgeyByZXR1cm4gdGhpcy5fJGxhbmdUZXh0RGlyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJGludGVyYWN0aXZlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihERUZBVUxUX1NDUk9MTEJBUl9JTlRFUkFDVElWRSk7XHJcbiAgcmVhZG9ubHkgJGludGVyYWN0aXZlID0gdGhpcy5fJGludGVyYWN0aXZlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNldCBpbnRlcmFjdGl2ZSh2OiBib29sZWFuKSB7XHJcbiAgICBpZiAodGhpcy5fJGludGVyYWN0aXZlLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJGludGVyYWN0aXZlLm5leHQodik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldCBpbnRlcmFjdGl2ZSgpIHsgcmV0dXJuIHRoaXMuXyRpbnRlcmFjdGl2ZS5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRvdmVybGFwcGluZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oREVGQVVMVF9PVkVSTEFQUElOR19TQ1JPTExCQVIpO1xyXG4gIHJlYWRvbmx5ICRvdmVybGFwcGluZyA9IHRoaXMuXyRvdmVybGFwcGluZy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgb3ZlcmxhcHBpbmcodjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRvdmVybGFwcGluZy5nZXRWYWx1ZSgpICE9PSB2KSB7XHJcbiAgICAgIHRoaXMuXyRvdmVybGFwcGluZy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgb3ZlcmxhcHBpbmcoKSB7IHJldHVybiB0aGlzLl8kb3ZlcmxhcHBpbmcuZ2V0VmFsdWUoKTsgfVxyXG5cclxuICBwcml2YXRlIF8kc2hvdyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHJlYWRvbmx5ICRzaG93ID0gdGhpcy5fJHNob3cuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IHNob3codjogYm9vbGVhbikge1xyXG4gICAgaWYgKHRoaXMuXyRzaG93LmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHNob3cubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHNob3coKSB7IHJldHVybiB0aGlzLl8kc2hvdy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRwYXJhbXMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGw+KHt9KTtcclxuICByZWFkb25seSAkcGFyYW1zID0gdGhpcy5fJHBhcmFtcy5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyYW1zKHY6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnkgfSB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcGFyYW1zLmdldFZhbHVlKCkgIT09IHYpIHtcclxuICAgICAgdGhpcy5fJHBhcmFtcy5uZXh0KHYpO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fJHBhcmFtcy5nZXRWYWx1ZSgpOyB9XHJcblxyXG4gIHByaXZhdGUgXyRyZW5kZXJlciA9IG5ldyBCZWhhdmlvclN1YmplY3Q8VGVtcGxhdGVSZWY8YW55PiB8IG51bGw+KG51bGwpO1xyXG4gIHJlYWRvbmx5ICRyZW5kZXJlciA9IHRoaXMuXyRyZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcmVuZGVyZXIodjogVGVtcGxhdGVSZWY8YW55PiB8IG51bGwpIHtcclxuICAgIGlmICh0aGlzLl8kcmVuZGVyZXIuZ2V0VmFsdWUoKSAhPT0gdikge1xyXG4gICAgICB0aGlzLl8kcmVuZGVyZXIubmV4dCh2KTtcclxuICAgIH1cclxuICB9XHJcbiAgZ2V0IHJlbmRlcmVyKCkgeyByZXR1cm4gdGhpcy5fJHJlbmRlcmVyLmdldFZhbHVlKCk7IH1cclxuXHJcbiAgcHJpdmF0ZSBfJHRodW1iUmVuZGVyZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRlbXBsYXRlUmVmPGFueT4gfCBudWxsPih0aGlzLl9kZWZhdWx0UmVuZGVyZXIgPz8gbnVsbCk7XHJcbiAgcmVhZG9ubHkgJHRodW1iUmVuZGVyZXIgPSB0aGlzLl8kdGh1bWJSZW5kZXJlci5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfJGhvdmVyU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICByZWFkb25seSAkaG92ZXJTdGF0ZSA9IHRoaXMuXyRob3ZlclN0YXRlLmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kcHJlc3NlZFN0YXRlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgcmVhZG9ubHkgJHByZXNzZWRTdGF0ZSA9IHRoaXMuXyRwcmVzc2VkU3RhdGUuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0ZW1wbGF0ZUNvbnRleHQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElTY3JvbGxCYXJUZW1wbGF0ZUNvbnRleHQ+KERFRkFVTFRfU0NST0xMQkFSX1RFTVBMQVRFX0NPTlRFWFQpO1xyXG4gIHJlYWRvbmx5ICR0ZW1wbGF0ZUNvbnRleHQgPSB0aGlzLl8kdGVtcGxhdGVDb250ZXh0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cclxuICBwcml2YXRlIF8kc3R5bGVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IFtzdHlsZU5hbWU6IHN0cmluZ106IGFueSB9Pih7fSk7XHJcbiAgcmVhZG9ubHkgJHN0eWxlcyA9IHRoaXMuXyRzdHlsZXMuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYldpZHRoID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xyXG4gIHJlYWRvbmx5ICR0aHVtYldpZHRoID0gdGhpcy5fJHRodW1iV2lkdGguYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyR0aHVtYkhlaWdodCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcclxuICByZWFkb25seSAkdGh1bWJIZWlnaHQgPSB0aGlzLl8kdGh1bWJIZWlnaHQuYXNPYnNlcnZhYmxlKCk7XHJcblxyXG4gIHByaXZhdGUgXyRzY3JvbGxpbmdDYW5jZWwgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHByb3RlY3RlZCByZWFkb25seSAkc2Nyb2xsaW5nQ2FuY2VsID0gdGhpcy5fJHNjcm9sbGluZ0NhbmNlbC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG5cclxuICAgIGNvbnN0ICR0aHVtYldpZHRoID0gdGhpcy4kdGh1bWJXaWR0aCxcclxuICAgICAgJHRodW1iSGVpZ2h0ID0gdGhpcy4kdGh1bWJIZWlnaHQsXHJcbiAgICAgICR0aHVtYkdyYWRpZW50UG9zaXRpb25zID0gdGhpcy4kdGh1bWJHcmFkaWVudFBvc2l0aW9ucyxcclxuICAgICAgJHBhcmFtcyA9IHRoaXMuJHBhcmFtcztcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskdGh1bWJXaWR0aCwgJHRodW1iSGVpZ2h0LCAkdGh1bWJHcmFkaWVudFBvc2l0aW9ucywgJHBhcmFtc10pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMCksXHJcbiAgICAgIHRhcCgoW3RodW1iV2lkdGgsIHRodW1iSGVpZ2h0LCB0aHVtYkdyYWRpZW50UG9zaXRpb25zLCBwYXJhbXNdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgY29udGV4dDogSVNjcm9sbEJhclRlbXBsYXRlQ29udGV4dCA9IHtcclxuICAgICAgICAgIGFwaTogdGhpcy5fYXBpU2VydmljZSxcclxuICAgICAgICAgIHdpZHRoOiB0aHVtYldpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiB0aHVtYkhlaWdodCxcclxuICAgICAgICAgIGZpbGxQb3NpdGlvbnM6IHRodW1iR3JhZGllbnRQb3NpdGlvbnMsXHJcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtcyA/PyB7fSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuXyR0ZW1wbGF0ZUNvbnRleHQubmV4dChjb250ZXh0KTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRyZW5kZXJlciA9IHRoaXMuJHJlbmRlcmVyLnBpcGUoXHJcbiAgICAgIHN0YXJ0V2l0aChudWxsKSxcclxuICAgICksXHJcbiAgICAgICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG5cclxuICAgIGNvbWJpbmVMYXRlc3QoWyRyZW5kZXJlciwgJGRlZmF1bHRSZW5kZXJlcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFtyZW5kZXJlciwgZGVmYXVsdFJlbmRlcmVyXSkgPT4ge1xyXG4gICAgICAgIHJldHVybiBvZigocmVuZGVyZXIgPz8gZGVmYXVsdFJlbmRlcmVyKSA/PyBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuXyR0aHVtYlJlbmRlcmVyLm5leHQodik7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlcGFyZWQgPSB0aGlzLiRwcmVwYXJlZDtcclxuICAgICRwcmVwYXJlZC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZmlsdGVyKHYgPT4gISF2KSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbExpbWl0cygpO1xyXG4gICAgICAgIHRoaXMucmVmcmVzaENvb3JkaW5hdGUodGhpcy5feCwgdGhpcy5feSk7XHJcbiAgICAgICAgdGhpcy5maXJlU2Nyb2xsRXZlbnQoZmFsc2UpO1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzLCB0aGlzLiRzaXplXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW2lzVmVydGljYWwsIHRoaWNrbmVzcywgc2l6ZV0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJXaWR0aC5uZXh0KGlzVmVydGljYWwgPyB0aGlja25lc3MgOiBzaXplKTtcclxuICAgICAgICB0aGlzLl8kdGh1bWJIZWlnaHQubmV4dChpc1ZlcnRpY2FsID8gc2l6ZSA6IHRoaWNrbmVzcyk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG5cclxuICAgIGNvbnN0ICR3aGVlbCA9IHRoaXMuJHdoZWVsO1xyXG4gICAgJHdoZWVsLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICBkZWJvdW5jZVRpbWUoMTAwKSxcclxuICAgICAgdGFwKCgpID0+IHtcclxuICAgICAgICBjb25zdCBldmVudCA9IHRoaXMuY3JlYXRlRHJhZ0V2ZW50KHRydWUpO1xyXG4gICAgICAgIGlmICghIWV2ZW50KSB7XHJcbiAgICAgICAgICB0aGlzLm9uRHJhZ0VuZC5lbWl0KGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcG9pbnRlckRvd24gPSBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50Pih0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdwb2ludGVyZG93bicpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJHBvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3BvaW50ZXJ1cCcpLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGRvY1BvaW50ZXJVcCA9IGZyb21FdmVudDxQb2ludGVyRXZlbnQ+KGRvY3VtZW50LCAncG9pbnRlcnVwJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckVudGVyID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmVudGVyJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApLCAkcG9pbnRlckxlYXZlID0gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAncG9pbnRlcmxlYXZlJykucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICApO1xyXG5cclxuICAgICRwb2ludGVyRG93bi5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuXyRwcmVzc2VkU3RhdGUubmV4dCh0aGlzLnRodW1iSGl0KGUuY2xpZW50WCwgZS5jbGllbnRZKSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFskZG9jUG9pbnRlclVwLCAkcG9pbnRlclVwXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJHByZXNzZWRTdGF0ZS5uZXh0KGZhbHNlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyRW50ZXIucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dCh0cnVlKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgICRwb2ludGVyTGVhdmUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIHRhcCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fJGhvdmVyU3RhdGUubmV4dChmYWxzZSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkcHJlc3NlZFN0YXRlID0gdGhpcy4kcHJlc3NlZFN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKSwgJGhvdmVyU3RhdGUgPSB0aGlzLiRob3ZlclN0YXRlLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgKTtcclxuXHJcbiAgICBjb21iaW5lTGF0ZXN0KFtcclxuICAgICAgJHByZXNzZWRTdGF0ZSwgJGhvdmVyU3RhdGUsXHJcbiAgICBdKS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGVib3VuY2VUaW1lKDApLFxyXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICB0YXAoKFtwcmVzc2VkLCBob3Zlcl0pID0+IHtcclxuICAgICAgICBpZiAocHJlc3NlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5zdGF0ZSA9IFNjcm9sbGJhclN0YXRlcy5QUkVTU0VEO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaG92ZXIpIHtcclxuICAgICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuSE9WRVI7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX3Njcm9sbEJhclNlcnZpY2Uuc3RhdGUgPSBTY3JvbGxiYXJTdGF0ZXMuTk9STUFMO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNpemUucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCh2ID0+IHtcclxuICAgICAgICB0aGlzLnRvdGFsU2l6ZSA9IHY7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICB0aGlzLiRpbnRlcmFjdGl2ZS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIHRoaXMuaW50ZXJhY3RpdmUgPSB2O1xyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy4kc2hvdywgdGhpcy4kaXNWZXJ0aWNhbCwgdGhpcy4kdGhpY2tuZXNzXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgIHRhcCgoW3Nob3csIGlzVmVydGljYWwsIHRoaWNrbmVzc10pID0+IHtcclxuICAgICAgICBjb25zdCBzaXplUHJvcE5hbWUgPSBpc1ZlcnRpY2FsID8gV0lEVEggOiBIRUlHSFQ7XHJcbiAgICAgICAgdGhpcy5fJHN0eWxlcy5uZXh0KHtcclxuICAgICAgICAgIFtzaXplUHJvcE5hbWVdOiBgJHtzaG93ID8gdGhpY2tuZXNzIDogMH0ke1BYfWAsXHJcbiAgICAgICAgICBbT1BBQ0lUWV06IHNob3cgPyBPUEFDSVRZXzEgOiBPUEFDSVRZXzAsIFtUUkFOU0lUSU9OXTogc2hvdyA/IFRSQU5TSVRJT05fRkFERV9JTiA6IE5PTkUsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pLFxyXG4gICAgKS5zdWJzY3JpYmUoKTtcclxuXHJcbiAgICBjb25zdCAkb3ZlcmxhcHBpbmcgPSB0aGlzLiRvdmVybGFwcGluZywgJGxhbmdUZXh0RGlyID0gdGhpcy4kbGFuZ1RleHREaXI7XHJcbiAgICBjb21iaW5lTGF0ZXN0KFskb3ZlcmxhcHBpbmcsICRsYW5nVGV4dERpcl0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAoKFtvdmVybGFwcGluZywgbGFuZ1RleHREaXJdKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWwgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKCEhZWwpIHtcclxuICAgICAgICAgIGVsLnN0eWxlW1BPU0lUSU9OXSA9IG92ZXJsYXBwaW5nID8gUE9TSVRJT05fQUJTT0xVVEUgOiBQT1NJVElPTl9SRUxBVElWRTtcclxuICAgICAgICAgIGVsLnN0eWxlW0xFRlRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLlJUTCA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbUklHSFRdID0gb3ZlcmxhcHBpbmcgJiYgbGFuZ1RleHREaXIgPT09IFRleHREaXJlY3Rpb25zLkxUUiA/ICcwJyA6IFVOU0VUO1xyXG4gICAgICAgICAgZWwuc3R5bGVbV0lEVEhdID0gb3ZlcmxhcHBpbmcgPyBTSVpFX0FVVE8gOiBTSVpFXzEwMF9QRVJTRU5UO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIHRoaXMuJHNjcm9sbC5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5fJHVuc3Vic2NyaWJlKSxcclxuICAgICAgdGFwKHYgPT4ge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5jcmVhdGVEcmFnRXZlbnQodik7XHJcbiAgICAgICAgaWYgKCEhZXZlbnQpIHtcclxuICAgICAgICAgIHRoaXMub25EcmFnLmVtaXQoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG5cclxuICAgIGNvbnN0ICRzY3JvbGxFbmQgPSB0aGlzLiRzY3JvbGxFbmQ7XHJcbiAgICAkc2Nyb2xsRW5kLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLl8kdW5zdWJzY3JpYmUpLFxyXG4gICAgICB0YXAodXNlckFjdGlvbiA9PiB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQgPSB0aGlzLmNyZWF0ZURyYWdFdmVudCh1c2VyQWN0aW9uKTtcclxuICAgICAgICBpZiAoISFldmVudCkge1xyXG4gICAgICAgICAgdGhpcy5vbkRyYWdFbmQuZW1pdChldmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcblxyXG4gICAgY29uc3QgJHJlbmRlcmVyID0gdGhpcy4kcmVuZGVyZXIsICRkZWZhdWx0UmVuZGVyZXIgPSBvZih0aGlzLl9kZWZhdWx0UmVuZGVyZXIpO1xyXG4gICAgY29tYmluZUxhdGVzdChbJHJlbmRlcmVyLCAkZGVmYXVsdFJlbmRlcmVyXSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuXyR1bnN1YnNjcmliZSksXHJcbiAgICAgIGRlYm91bmNlVGltZSgwKSxcclxuICAgICAgdGFwKChbcmVuZGVyZXIsIGRlZmF1bHRSZW5kZXJlcl0pID0+IHtcclxuICAgICAgICB0aGlzLl8kdGh1bWJSZW5kZXJlci5uZXh0KHJlbmRlcmVyIHx8IGRlZmF1bHRSZW5kZXJlciB8fCBudWxsKTtcclxuICAgICAgfSksXHJcbiAgICApLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVEcmFnRXZlbnQodXNlckFjdGlvbjogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaXNWZXJ0aWNhbCA9IHRoaXMuXyRpc1ZlcnRpY2FsLmdldFZhbHVlKCksIHNjcm9sbFNpemUgPSBpc1ZlcnRpY2FsID8gdGhpcy5zY3JvbGxIZWlnaHQgOiB0aGlzLnNjcm9sbFdpZHRoLFxyXG4gICAgICBzY3JvbGxQb3NpdGlvbiA9IGlzVmVydGljYWwgPyB0aGlzLnNjcm9sbFRvcCA6IHRoaXMuc2Nyb2xsTGVmdCxcclxuICAgICAgc3RhcnRPZmZzZXQgPSB0aGlzLnN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgPSB0aGlzLmVuZE9mZnNldCxcclxuICAgICAgc2Nyb2xsQ29udGVudCA9IHRoaXMuc2Nyb2xsQ29udGVudD8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudCxcclxuICAgICAgc2Nyb2xsVmlld3BvcnQgPSB0aGlzLnNjcm9sbFZpZXdwb3J0Py5uYXRpdmVFbGVtZW50IGFzIEhUTUxEaXZFbGVtZW50O1xyXG4gICAgaWYgKCEhc2Nyb2xsVmlld3BvcnQgJiYgISFzY3JvbGxDb250ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvbnRlbnRTaXplID0gaXNWZXJ0aWNhbCA/IHNjcm9sbENvbnRlbnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsQ29udGVudC5vZmZzZXRXaWR0aCxcclxuICAgICAgICB2aWV3cG9ydFNpemUgPSBpc1ZlcnRpY2FsID8gc2Nyb2xsVmlld3BvcnQub2Zmc2V0SGVpZ2h0IDogc2Nyb2xsVmlld3BvcnQub2Zmc2V0V2lkdGgsXHJcbiAgICAgICAgb2Zmc2V0U2l6ZSA9IChzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwKSxcclxuICAgICAgICBwb3NpdGlvblNpemUgPSAoc2Nyb2xsU2l6ZSAhPT0gMCA/IChzY3JvbGxQb3NpdGlvbiAvIHNjcm9sbFNpemUpIDogMCksXHJcbiAgICAgICAgbWF4U2l6ZSA9IDEgLSBvZmZzZXRTaXplLFxyXG4gICAgICAgIHBvcyA9IChwb3NpdGlvblNpemUgLSBvZmZzZXRTaXplKTtcclxuICAgICAgY29uc3QgZXZlbnQ6IElTY3JvbGxCYXJEcmFnRXZlbnQgPSB7XHJcbiAgICAgICAgcG9zaXRpb246IHBvcyAvIG1heFNpemUsXHJcbiAgICAgICAgbWluOiBzY3JvbGxTaXplICE9PSAwID8gKHN0YXJ0T2Zmc2V0IC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIG1heDogc2Nyb2xsU2l6ZSAhPT0gMCA/ICgodmlld3BvcnRTaXplIC0gZW5kT2Zmc2V0IC0gY29udGVudFNpemUpIC8gc2Nyb2xsU2l6ZSkgOiAwLFxyXG4gICAgICAgIGFuaW1hdGlvbjogIXRoaXMuX2lzTW92aW5nLFxyXG4gICAgICAgIHVzZXJBY3Rpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIHJldHVybiBldmVudDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0aHVtYkhpdCh4OiBudW1iZXIsIHk6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgdGh1bWIgPSB0aGlzLnNjcm9sbENvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBpZiAoISF0aHVtYikge1xyXG4gICAgICBjb25zdCB7IHg6IHRYLCB5OiB0WSwgd2lkdGg6IHRXaWR0aCwgaGVpZ2h0OiB0SGVpZ2h0IH0gPSB0aHVtYi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgaWYgKCh4ID49IHRYICYmIHggPD0gdFggKyB0V2lkdGgpICYmICh5ID49IHRZICYmIHkgPD0gdFkgKyB0SGVpZ2h0KSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBjbGljayhldmVudDogUG9pbnRlckV2ZW50IHwgTW91c2VFdmVudCkge1xyXG4gICAgdGhpcy5fc2Nyb2xsQmFyU2VydmljZS5jbGljayhldmVudCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgI3Njcm9sbFZpZXdwb3J0IGNsYXNzPVwidHJhY2tcIiBwYXJ0PVwic2Nyb2xsYmFyLXRyYWNrXCIgW25nU3R5bGVdPVwiJHN0eWxlcyB8IGFzeW5jXCJcclxuICAgIFtuZ0NsYXNzXT1cIntncmFiYmluZzogJGdyYWJiaW5nIHwgYXN5bmN9XCI+XHJcbiAgICA8ZGl2ICNzY3JvbGxDb250ZW50IGNsYXNzPVwidGh1bWJcIiBwYXJ0PVwic2Nyb2xsYmFyLXRodW1iXCIgW2NsYXNzLmhvcml6b250YWxdPVwiKCRpc1ZlcnRpY2FsIHwgYXN5bmMpISA9PSBmYWxzZVwiXHJcbiAgICAgICAgKHBvaW50ZXJkb3duKT1cImNsaWNrKCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIigkdGh1bWJSZW5kZXJlciB8IGFzeW5jKSFcIlxyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwiKCR0ZW1wbGF0ZUNvbnRleHQgfCBhc3luYykhXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHRSZW5kZXJlciBsZXQtYXBpPVwiYXBpXCIgbGV0LXdpZHRoPVwid2lkdGhcIiBsZXQtaGVpZ2h0PVwiaGVpZ2h0XCIgbGV0LWZpbGxQb3NpdGlvbnM9XCJmaWxsUG9zaXRpb25zXCJcclxuICAgIGxldC1wYXJhbXM9XCJwYXJhbXNcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGFwZVwiIHBhcnQ9XCJzY3JvbGxiYXItdGh1bWJfX3NoYXBlXCIgW3N0eWxlLndpZHRoLnB4XT1cIndpZHRoXCIgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIj48L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
@@ -3,7 +3,7 @@ import { SCROLLER_SCROLL } from "../../../const";
|
|
|
3
3
|
export const SCROLL_VIEW_INVERSION = new InjectionToken('ScrollViewInversion');
|
|
4
4
|
export const SCROLL_VIEW_OVERSCROLL_ENABLED = new InjectionToken('ScrollViewOverscrollEnabled');
|
|
5
5
|
export const SCROLL_VIEW_NORMALIZE_VALUE_FROM_ZERO = new InjectionToken('ScrollViewNormalizeValueFromZero');
|
|
6
|
-
export const TOP = 'top', LEFT = 'left', INSTANT = 'instant', AUTO = 'auto', SMOOTH = 'smooth', DURATION = 2000, FRICTION_FORCE = .035, MAX_DURATION = 4000, ANIMATION_DURATION = 50, MASS = .005, MAX_DIST = 12500, MAX_VELOCITY_TIMESTAMP = 100, SPEED_SCALE = 15, OVERSCROLL_START_ITERATION = 2
|
|
6
|
+
export const TOP = 'top', LEFT = 'left', INSTANT = 'instant', AUTO = 'auto', SMOOTH = 'smooth', DURATION = 2000, FRICTION_FORCE = .035, MAX_DURATION = 4000, ANIMATION_DURATION = 50, MASS = .005, ACCELERATION_SCALE = 40, MAX_DIST = 12500, MAX_VELOCITY_TIMESTAMP = 100, SPEED_SCALE = 15, OVERSCROLL_START_ITERATION = 2;
|
|
7
7
|
export const MAX_ITERATIONS_FOR_AVERAGE_CALCULATIONS = 5, INSTANT_VELOCITY_SCALE = 1000;
|
|
8
8
|
export const SCROLL_EVENT = new Event(SCROLLER_SCROLL);
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy12aXJ0dWFsLWxpc3Qvc3JjL2xpYi9jb21wb25lbnRzL25nLXNjcm9sbC12aWV3L2NvbnN0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLElBQUksY0FBYyxDQUFVLHFCQUFxQixDQUFDLENBQUM7QUFFeEYsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsSUFBSSxjQUFjLENBQVUsNkJBQTZCLENBQUMsQ0FBQztBQUV6RyxNQUFNLENBQUMsTUFBTSxxQ0FBcUMsR0FBRyxJQUFJLGNBQWMsQ0FBVSxrQ0FBa0MsQ0FBQyxDQUFDO0FBRXJILE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3BCLElBQUksR0FBRyxNQUFNLEVBQ2IsT0FBTyxHQUFHLFNBQVMsRUFDbkIsSUFBSSxHQUFHLE1BQU0sRUFDYixNQUFNLEdBQUcsUUFBUSxFQUNqQixRQUFRLEdBQUcsSUFBSSxFQUNmLGNBQWMsR0FBRyxJQUFJLEVBQ3JCLFlBQVksR0FBRyxJQUFJLEVBQ25CLGtCQUFrQixHQUFHLEVBQUUsRUFDdkIsSUFBSSxHQUFHLElBQUksRUFDWCxrQkFBa0IsR0FBRyxFQUFFLEVBQ3ZCLFFBQVEsR0FBRyxLQUFLLEVBQ2hCLHNCQUFzQixHQUFHLEdBQUcsRUFDNUIsV0FBVyxHQUFHLEVBQUUsRUFDaEIsMEJBQTBCLEdBQUcsQ0FBQyxDQUFDO0FBRW5DLE1BQU0sQ0FBQyxNQUFNLHVDQUF1QyxHQUFHLENBQUMsRUFDcEQsc0JBQXNCLEdBQUcsSUFBSSxDQUFDO0FBRWxDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgU0NST0xMRVJfU0NST0xMIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0XCI7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfSU5WRVJTSU9OID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3SW52ZXJzaW9uJyk7XHJcblxyXG5leHBvcnQgY29uc3QgU0NST0xMX1ZJRVdfT1ZFUlNDUk9MTF9FTkFCTEVEID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3T3ZlcnNjcm9sbEVuYWJsZWQnKTtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTExfVklFV19OT1JNQUxJWkVfVkFMVUVfRlJPTV9aRVJPID0gbmV3IEluamVjdGlvblRva2VuPGJvb2xlYW4+KCdTY3JvbGxWaWV3Tm9ybWFsaXplVmFsdWVGcm9tWmVybycpO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRPUCA9ICd0b3AnLFxyXG4gICAgTEVGVCA9ICdsZWZ0JyxcclxuICAgIElOU1RBTlQgPSAnaW5zdGFudCcsXHJcbiAgICBBVVRPID0gJ2F1dG8nLFxyXG4gICAgU01PT1RIID0gJ3Ntb290aCcsXHJcbiAgICBEVVJBVElPTiA9IDIwMDAsXHJcbiAgICBGUklDVElPTl9GT1JDRSA9IC4wMzUsXHJcbiAgICBNQVhfRFVSQVRJT04gPSA0MDAwLFxyXG4gICAgQU5JTUFUSU9OX0RVUkFUSU9OID0gNTAsXHJcbiAgICBNQVNTID0gLjAwNSxcclxuICAgIEFDQ0VMRVJBVElPTl9TQ0FMRSA9IDQwLFxyXG4gICAgTUFYX0RJU1QgPSAxMjUwMCxcclxuICAgIE1BWF9WRUxPQ0lUWV9USU1FU1RBTVAgPSAxMDAsXHJcbiAgICBTUEVFRF9TQ0FMRSA9IDE1LFxyXG4gICAgT1ZFUlNDUk9MTF9TVEFSVF9JVEVSQVRJT04gPSAyO1xyXG5cclxuZXhwb3J0IGNvbnN0IE1BWF9JVEVSQVRJT05TX0ZPUl9BVkVSQUdFX0NBTENVTEFUSU9OUyA9IDUsXHJcbiAgICBJTlNUQU5UX1ZFTE9DSVRZX1NDQUxFID0gMTAwMDtcclxuXHJcbmV4cG9ydCBjb25zdCBTQ1JPTExfRVZFTlQgPSBuZXcgRXZlbnQoU0NST0xMRVJfU0NST0xMKTtcclxuIl19
|