@geoit/ui 0.0.7 → 0.0.8
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/ai/README.md +1 -1
- package/ai/catalog.json +2 -2
- package/ai/mockup.html +2 -2
- package/esm2022/lib/figma/geo-map/chrome/geo-map-admin-filter/geo-map-admin-filter.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-basemap-switcher/geo-map-basemap-switcher.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-layers-drawer/geo-map-layers-drawer.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-legend/geo-map-legend.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-locate/geo-map-locate.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-opacity/geo-map-opacity.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-parcel-popup/geo-map-parcel-popup.component.mjs +2 -2
- package/esm2022/lib/figma/geo-map/chrome/geo-map-search/geo-map-search.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-shell/geo-map-shell.component.mjs +2 -2
- package/esm2022/lib/figma/geo-map/chrome/geo-map-snapshot/geo-map-snapshot.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-toolbar/geo-map-toolbar.component.mjs +3 -3
- package/esm2022/lib/figma/geo-map/chrome/geo-map-zoom/geo-map-zoom.component.mjs +3 -3
- package/fesm2022/geoit-ui.mjs +24 -24
- package/fesm2022/geoit-ui.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -286,10 +286,10 @@ export class GeoMapZoomComponent {
|
|
|
286
286
|
this.canZoomNext.set(idx >= 0 && idx < len - 1);
|
|
287
287
|
}
|
|
288
288
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapZoomComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
289
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapZoomComponent, isStandalone: true, selector: "geo-map-zoom", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, showFitProvince: { classPropertyName: "showFitProvince", publicName: "showFitProvince", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, fullscreenTarget: { classPropertyName: "fullscreenTarget", publicName: "fullscreenTarget", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-map-zoom-host" }, ngImport: i0, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"
|
|
289
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GeoMapZoomComponent, isStandalone: true, selector: "geo-map-zoom", inputs: { controller: { classPropertyName: "controller", publicName: "controller", isSignal: true, isRequired: false, transformFunction: null }, showNav: { classPropertyName: "showNav", publicName: "showNav", isSignal: true, isRequired: false, transformFunction: null }, showFitProvince: { classPropertyName: "showFitProvince", publicName: "showFitProvince", isSignal: true, isRequired: false, transformFunction: null }, provinceExtent: { classPropertyName: "provinceExtent", publicName: "provinceExtent", isSignal: true, isRequired: false, transformFunction: null }, fullscreenTarget: { classPropertyName: "fullscreenTarget", publicName: "fullscreenTarget", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "geo-map-zoom-host" }, ngImport: i0, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"sm\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:32px;min-height:32px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:32px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"], dependencies: [{ kind: "component", type: GeoIconComponent, selector: "geo-icon", inputs: ["type", "theme", "spin", "size", "color"] }, { kind: "ngmodule", type: NzToolTipModule }, { kind: "directive", type: i1.NzTooltipDirective, selector: "[nz-tooltip]", inputs: ["nzTooltipTitle", "nzTooltipTitleContext", "nz-tooltip", "nzTooltipTrigger", "nzTooltipPlacement", "nzTooltipOrigin", "nzTooltipVisible", "nzTooltipMouseEnterDelay", "nzTooltipMouseLeaveDelay", "nzTooltipOverlayClassName", "nzTooltipOverlayStyle", "nzTooltipArrowPointAtCenter", "cdkConnectedOverlayPush", "nzTooltipColor"], outputs: ["nzTooltipVisibleChange"], exportAs: ["nzTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
290
290
|
}
|
|
291
291
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GeoMapZoomComponent, decorators: [{
|
|
292
292
|
type: Component,
|
|
293
|
-
args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"
|
|
293
|
+
args: [{ selector: 'geo-map-zoom', standalone: true, imports: [GeoIconComponent, NzToolTipModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'geo-map-zoom-host' }, template: "<div class=\"geo-map-zoom\" role=\"group\" aria-label=\"Thu ph\u00F3ng b\u1EA3n \u0111\u1ED3\">\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Ph\u00F3ng to\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to\"\n [disabled]=\"!controller()\"\n (click)=\"zoomIn()\"\n >\n <geo-icon type=\"plus\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Thu nh\u1ECF\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF\"\n [disabled]=\"!controller()\"\n (click)=\"zoomOut()\"\n >\n <geo-icon type=\"minus\" size=\"sm\" />\n </button>\n\n @if (showNav()) {\n <span class=\"geo-map-zoom__divider\" aria-hidden=\"true\"></span>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'in'\"\n nz-tooltip=\"Ph\u00F3ng to theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Ph\u00F3ng to theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('in')\"\n >\n <geo-icon type=\"zoom-in\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"boxMode() === 'out'\"\n nz-tooltip=\"Thu nh\u1ECF theo v\u00F9ng (k\u00E9o khung)\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Thu nh\u1ECF theo v\u00F9ng\"\n [disabled]=\"!controller()\"\n (click)=\"toggleBoxZoom('out')\"\n >\n <geo-icon type=\"zoom-out\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom tr\u01B0\u1EDBc\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom tr\u01B0\u1EDBc\"\n [disabled]=\"!controller() || !canZoomPrev()\"\n (click)=\"zoomPrev()\"\n >\n <geo-icon type=\"left\" size=\"sm\" />\n </button>\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Zoom sau\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Zoom sau\"\n [disabled]=\"!controller() || !canZoomNext()\"\n (click)=\"zoomNext()\"\n >\n <geo-icon type=\"right\" size=\"sm\" />\n </button>\n @if (showFitProvince()) {\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n nz-tooltip=\"Xem to\u00E0n t\u1EC9nh\"\n nzTooltipPlacement=\"left\"\n aria-label=\"Xem to\u00E0n t\u1EC9nh\"\n [disabled]=\"!controller()\"\n (click)=\"fitProvince()\"\n >\n <geo-icon type=\"expand\" size=\"sm\" />\n </button>\n }\n <button\n type=\"button\"\n class=\"geo-map-zoom__btn\"\n [class.geo-map-zoom__btn--active]=\"isFullscreen()\"\n [nz-tooltip]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n nzTooltipPlacement=\"left\"\n [attr.aria-label]=\"\n isFullscreen() ? 'Tho\u00E1t to\u00E0n m\u00E0n h\u00ECnh' : 'Xem to\u00E0n b\u1EA3n \u0111\u1ED3'\n \"\n [disabled]=\"!controller()\"\n (click)=\"toggleFullscreen()\"\n >\n <geo-icon\n [type]=\"isFullscreen() ? 'fullscreen-exit' : 'fullscreen'\"\n size=\"sm\"\n />\n </button>\n }\n</div>\n", styles: ["@charset \"UTF-8\";.geo-map-zoom-host{display:block}.geo-map-zoom{border:1px solid var(--geo-color-border-default);border-radius:var(--geo-radius-lg);background:var(--geo-color-surface-elevated);box-shadow:var(--geo-shadow-sm);display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:4px}.geo-map-zoom__btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:32px;min-height:32px;border:0;border-radius:var(--geo-radius);background:transparent;color:var(--geo-color-neutral-700);font:inherit;font-size:var(--geo-font-size-body-small);font-weight:var(--geo-font-weight-medium);line-height:1;cursor:pointer;transition:background-color .15s ease,color .15s ease,transform .1s ease;width:32px;padding:0}.geo-map-zoom__btn:hover:not(:disabled){background:var(--geo-color-primary-soft-hover);color:var(--geo-color-primary-default)}.geo-map-zoom__btn:active:not(:disabled){transform:scale(.98)}.geo-map-zoom__btn:disabled{opacity:.45;cursor:not-allowed}.geo-map-zoom__btn--active,.geo-map-zoom__btn--checked{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__btn--icon-only{width:32px;padding:0}.geo-map-zoom__btn--active{background:var(--geo-color-primary-soft-active);color:var(--geo-color-primary-default)}.geo-map-zoom__dragbox{background:color-mix(in srgb,var(--geo-color-primary-default) 18%,transparent);border:2px solid var(--geo-color-primary-default)}.geo-map-zoom__divider{height:1px;margin:2px 6px;background:var(--geo-color-neutral-100)}\n"] }]
|
|
294
294
|
}], ctorParameters: () => [] });
|
|
295
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC16b29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtem9vbS9nZW8tbWFwLXpvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC16b29tL2dlby1tYXAtem9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLElBQUksZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3JGOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyxtQkFBbUI7SUFDYixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQSxVQUF1QixDQUFBLENBQUMsQ0FBQztJQUN2QyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVwRCxVQUFVLEdBQUcsS0FBSyxDQUEwQixJQUFJLENBQUMsQ0FBQztJQUMzRCw2REFBNkQ7SUFDcEQsT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixnRkFBZ0Y7SUFDdkUsZUFBZSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2Qzs7T0FFRztJQUNNLGNBQWMsR0FBRyxLQUFLLENBQzdCLElBQUksQ0FDTCxDQUFDO0lBQ0Y7OztPQUdHO0lBQ00sZ0JBQWdCLEdBQUcsS0FBSyxDQUFxQixJQUFJLENBQUMsQ0FBQztJQUVuRCxPQUFPLEdBQUcsTUFBTSxDQUFjLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixZQUFZLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXRDLHVFQUF1RTtJQUN0RCxPQUFPLEdBQUcsTUFBTSxDQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLFlBQVksR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFDMUIsT0FBTyxHQUFtQixJQUFJLENBQUM7SUFDL0Isa0JBQWtCLEdBQXdCLElBQUksQ0FBQztJQUMvQyxXQUFXLEdBQXlDLElBQUksQ0FBQztJQUNoRCxrQkFBa0IsR0FBRyxHQUFTLEVBQUU7UUFDL0MsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0lBRUY7UUFDRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRSw2REFBNkQ7WUFDN0QsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsTUFBTSxDQUNKLEdBQUcsRUFBRTtZQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUMvQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0IsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFFBQVE7UUFDTixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUNqQyxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDMUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxnQkFBZ0I7UUFDZCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQzNDLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksUUFBUSxDQUFDLGlCQUFpQixLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3RDLEtBQUssUUFBUTtpQkFDVixjQUFjLEVBQUU7aUJBQ2hCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3RCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxFQUFFO2FBQ0osaUJBQWlCLEVBQUUsRUFBRTthQUNyQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBa0M7UUFDOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBRUQsbUVBQW1FO0lBQ25FLG9CQUFvQjtRQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxLQUF1QztRQUMzRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBa0M7UUFDckQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUU7WUFDMUQsT0FBTyxFQUFFLElBQUk7WUFDYixlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDO1lBQ3pCLFNBQVMsRUFBRSxlQUFlO1lBQzFCLFNBQVMsRUFBRSxrQ0FBa0M7U0FDOUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRTtZQUM3QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDL0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDcEIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3ZCLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQTBDLEVBQUU7b0JBQ3pELE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDekIsUUFBUSxFQUFFLEdBQUc7aUJBQ2QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDM0IsTUFBTSxJQUFJLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3BCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDcEIsT0FBTztnQkFDVCxDQUFDO2dCQUNELElBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ1gsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pCLFVBQVUsRUFBRSxPQUFPLEdBQUcsSUFBSTtvQkFDMUIsUUFBUSxFQUFFLEdBQUc7aUJBQ2QsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVPLFlBQVk7UUFDbEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN6QyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDM0MsZ0JBQWdCLENBQ0ssQ0FBQztRQUN4QixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLENBQUM7SUFDakUsQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUMzQyxNQUFNLE1BQU0sR0FDVixPQUFPLFFBQVEsS0FBSyxXQUFXO1lBQy9CLENBQUMsQ0FBQyxFQUFFO1lBQ0osUUFBUSxDQUFDLGlCQUFpQixLQUFLLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUU5QiwyRUFBMkU7UUFDM0UsTUFBTSxLQUFLLEdBQ1QsRUFBRTtZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBd0IsQ0FBQztRQUM1RSxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFL0QsK0RBQStEO1FBQy9ELGNBQWMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sV0FBVyxDQUFDLElBQXNCO1FBQ3hDLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxJQUFzQjtRQUMzQyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxFQUFFLENBQUM7WUFDN0IsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsK0RBQStEO1FBQy9ELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFTyxhQUFhLENBQUMsSUFBc0I7UUFDMUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRU8sZUFBZTtRQUNyQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBL1NVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDAwQkN6Q2hDLHV6R0EwR0EsNGpERHhFWSxnQkFBZ0Isd0dBQUUsZUFBZTs7NEZBT2hDLG1CQUFtQjtrQkFWL0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE56VG9vbFRpcE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdG9vbHRpcCc7XG5pbXBvcnQgeyBhbHdheXMgYXMgYWx3YXlzQ29uZGl0aW9uIH0gZnJvbSAnb2wvZXZlbnRzL2NvbmRpdGlvbic7XG5pbXBvcnQgeyBnZXRDZW50ZXIgfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IERyYWdCb3ggZnJvbSAnb2wvaW50ZXJhY3Rpb24vRHJhZ0JveCc7XG5pbXBvcnQgeyBHZW9JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWljb24vZ2VvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IHN5bmNPdmVybGF5Q29udGFpbmVyVG9GdWxsc2NyZWVuLCByZXN0b3JlT3ZlcmxheUNvbnRhaW5lclRvQm9keSB9IGZyb20gJy4uLy4uL3V0aWxzL2dlby1tYXAtZnVsbHNjcmVlbi1vdmVybGF5LnV0aWwnO1xuaW1wb3J0IHsgcGF1c2VDb25mbGljdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2dlby1tYXAtaW50ZXJhY3Rpb25zLnV0aWwnO1xuaW1wb3J0IHsgR2VvTWFwQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2dlby1tYXAuY29udHJvbGxlcic7XG5cbnR5cGUgQm94Wm9vbU1vZGUgPSAnbm9uZScgfCAnaW4nIHwgJ291dCc7XG5cbi8qKlxuICogU3RhY2tlZCArLy0gem9vbSBjb250cm9sIGZvciBtYXAgY2hyb21lLlxuICpcbiAqIEBzdW1tYXJ5IFN0YWNrZWQgKy8tIHpvb20gY29udHJvbC5cbiAqIEB3aGVuVG9Vc2UgUmlnaHQtc2lkZSBtYXAgY2hyb21lLlxuICogQGRvTm90VXNlV2hlbiBCcm93c2VyL25hdGl2ZSBzY3JvbGwgem9vbSBvbmx5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLXpvb20nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbR2VvSWNvbkNvbXBvbmVudCwgTnpUb29sVGlwTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtem9vbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbWFwLXpvb20uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2dlby1tYXAtem9vbS1ob3N0JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBab29tQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlDb250YWluZXIgPSBpbmplY3QoT3ZlcmxheUNvbnRhaW5lcik7XG5cbiAgcmVhZG9ubHkgY29udHJvbGxlciA9IGlucHV0PEdlb01hcENvbnRyb2xsZXIgfCBudWxsPihudWxsKTtcbiAgLyoqIFNob3cgcHJldiAvIG5leHQgem9vbSArIGZ1bGxzY3JlZW4gKyBib3ggem9vbSAoVUMtMTUpLiAqL1xuICByZWFkb25seSBzaG93TmF2ID0gaW5wdXQodHJ1ZSk7XG4gIC8qKiBTaG93IOKAnHhlbSB0b8OgbiB04buJbmjigJ0gKFRDUUguMTQgR0Q1KSDigJQgZml0IHByb3ZpbmNlIGV4dGVudCwgbm90IGZ1bGxzY3JlZW4uICovXG4gIHJlYWRvbmx5IHNob3dGaXRQcm92aW5jZSA9IGlucHV0KHRydWUpO1xuICAvKipcbiAgICogUHJvdmluY2UgZXh0ZW50IGluIEVQU0c6NDMyNi4gRGVmYXVsdHMgdG8gTMOibSDEkOG7k25nIHBsYWNlaG9sZGVyIHdoZW4gb21pdHRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpbmNlRXh0ZW50ID0gaW5wdXQ8cmVhZG9ubHkgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsPihcbiAgICBudWxsLFxuICApO1xuICAvKipcbiAgICogRWxlbWVudCB0byBwdXQgaW4gRnVsbHNjcmVlbiBBUEkuXG4gICAqIERlZmF1bHRzIHRvIGNsb3Nlc3QgYC5nZW8tbWFwLXNoZWxsYCwgdGhlbiB0aGUgT0wgbWFwIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bGxzY3JlZW5UYXJnZXQgPSBpbnB1dDxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGJveE1vZGUgPSBzaWduYWw8Qm94Wm9vbU1vZGU+KCdub25lJyk7XG4gIHJlYWRvbmx5IGNhblpvb21QcmV2ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2FuWm9vbU5leHQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0Z1bGxzY3JlZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBWaXNpdGVkIHpvb20gbGV2ZWxzOyBgaGlzdG9yeUluZGV4YCBwb2ludHMgYXQgdGhlIGN1cnJlbnQgbGV2ZWwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlzdG9yeSA9IHNpZ25hbDxudW1iZXJbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGhpc3RvcnlJbmRleCA9IHNpZ25hbCgtMSk7XG4gIHByaXZhdGUgbmF2aWdhdGluZ0hpc3RvcnkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkcmFnQm94OiBEcmFnQm94IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVzdW1lSW50ZXJhY3Rpb25zOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21taXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkZ1bGxzY3JlZW5DaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5zeW5jRnVsbHNjcmVlblN0YXRlKCk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgICAgIC8vIEVuc3VyZSBTdG9yeWJvb2sgLyBuZXh0IHN0b3JpZXMgZ2V0IG92ZXJsYXlzIGJhY2sgb24gYm9keS5cbiAgICAgIHJlc3RvcmVPdmVybGF5Q29udGFpbmVyVG9Cb2R5KHRoaXMub3ZlcmxheUNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgICB9XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21taXRUaW1lciAhPSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jb21taXRUaW1lcik7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgfVxuXG4gIHpvb21JbigpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IGN0cmwuem9vbUluKCkpO1xuICB9XG5cbiAgem9vbU91dCgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IGN0cmwuem9vbU91dCgpKTtcbiAgfVxuXG4gIHpvb21QcmV2KCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwgfHwgIXRoaXMuY2FuWm9vbVByZXYoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgIGNvbnN0IG5leHRJZHggPSB0aGlzLmhpc3RvcnlJbmRleCgpIC0gMTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gdHJ1ZTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQobmV4dElkeCk7XG4gICAgY3RybC5zZXRab29tKHRoaXMuaGlzdG9yeSgpW25leHRJZHhdKTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gZmFsc2U7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHpvb21OZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwgfHwgIXRoaXMuY2FuWm9vbU5leHQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgIGNvbnN0IG5leHRJZHggPSB0aGlzLmhpc3RvcnlJbmRleCgpICsgMTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gdHJ1ZTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQobmV4dElkeCk7XG4gICAgY3RybC5zZXRab29tKHRoaXMuaGlzdG9yeSgpW25leHRJZHhdKTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gZmFsc2U7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIC8qKiBGaXQgdOG7iW5oIC8gdG/DoG4gY+G6o25oIChUQ1FILjE0KSDigJQgZGlzdGluY3QgZnJvbSBmdWxsc2NyZWVuLiAqL1xuICBmaXRQcm92aW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IHtcbiAgICAgIGNvbnN0IGV4dGVudCA9IHRoaXMucHJvdmluY2VFeHRlbnQoKTtcbiAgICAgIGN0cmwuZml0UHJvdmluY2UoZXh0ZW50ID8/IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVG9nZ2xlIGJyb3dzZXIgZnVsbHNjcmVlbiBmb3IgdGhlIG1hcCBzaGVsbCAvIHRhcmdldC4gKi9cbiAgdG9nZ2xlRnVsbHNjcmVlbigpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVzb2x2ZUZ1bGxzY3JlZW5FbGVtZW50KCk7XG4gICAgaWYgKCFlbCB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgaWYgKGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ID09PSBlbCkge1xuICAgICAgdm9pZCBkb2N1bWVudFxuICAgICAgICAuZXhpdEZ1bGxzY3JlZW4oKVxuICAgICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB0aGlzLnN5bmNGdWxsc2NyZWVuU3RhdGUoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgZWxcbiAgICAgIC5yZXF1ZXN0RnVsbHNjcmVlbj8uKClcbiAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgICAuZmluYWxseSgoKSA9PiB0aGlzLnN5bmNGdWxsc2NyZWVuU3RhdGUoKSk7XG4gIH1cblxuICB0b2dnbGVCb3hab29tKG1vZGU6IEV4Y2x1ZGU8Qm94Wm9vbU1vZGUsICdub25lJz4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3hNb2RlKCkgPT09IG1vZGUpIHtcbiAgICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRCb3hab29tKG1vZGUpO1xuICB9XG5cbiAgLyoqIEV4aXQgYm94LXpvb20gLyB0ZW1wb3JhcnkgaW50ZXJhY3Rpb24gc28gbWFwIHJldHVybnMgdG8gcGFuLiAqL1xuICByZXNldEludGVyYWN0aW9uTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5ab29tQWN0aW9uKGFwcGx5OiAoY3RybDogR2VvTWFwQ29udHJvbGxlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgIGFwcGx5KGN0cmwpO1xuICAgIHRoaXMuc2NoZWR1bGVDb21taXQoY3RybCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Qm94Wm9vbShtb2RlOiBFeGNsdWRlPEJveFpvb21Nb2RlLCAnbm9uZSc+KTogdm9pZCB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5jb250cm9sbGVyKCk/LmdldE1hcCgpO1xuICAgIGlmICghbWFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgdGhpcy5ib3hNb2RlLnNldChtb2RlKTtcbiAgICB0aGlzLnJlc3VtZUludGVyYWN0aW9ucyA9IHBhdXNlQ29uZmxpY3RpbmdJbnRlcmFjdGlvbnMobWFwLCB7XG4gICAgICBkcmFnUGFuOiB0cnVlLFxuICAgICAgZG91YmxlQ2xpY2tab29tOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kcmFnQm94ID0gbmV3IERyYWdCb3goe1xuICAgICAgY29uZGl0aW9uOiBhbHdheXNDb25kaXRpb24sXG4gICAgICBjbGFzc05hbWU6ICdvbC1kcmFnYm94IGdlby1tYXAtem9vbV9fZHJhZ2JveCcsXG4gICAgfSk7XG4gICAgdGhpcy5kcmFnQm94Lm9uKCdib3hlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjdHJsID0gdGhpcy5jb250cm9sbGVyKCk7XG4gICAgICBjb25zdCBleHRlbnQgPSB0aGlzLmRyYWdCb3g/LmdldEdlb21ldHJ5KCkuZ2V0RXh0ZW50KCk7XG4gICAgICBpZiAoIWN0cmwgfHwgIWV4dGVudCkge1xuICAgICAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgICAgaWYgKG1vZGUgPT09ICdpbicpIHtcbiAgICAgICAgY3RybC5maXRFeHRlbnQoZXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMjAsXG4gICAgICAgICAgcGFkZGluZzogWzE2LCAxNiwgMTYsIDE2XSxcbiAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBtYXAuZ2V0VmlldygpO1xuICAgICAgICBjb25zdCBzaXplID0gbWFwLmdldFNpemUoKTtcbiAgICAgICAgaWYgKCF2aWV3IHx8ICFzaXplKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHZpZXcuZ2V0UmVzb2x1dGlvbigpO1xuICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmlldy5hbmltYXRlKHtcbiAgICAgICAgICBjZW50ZXI6IGdldENlbnRlcihleHRlbnQpLFxuICAgICAgICAgIHJlc29sdXRpb246IGN1cnJlbnQgKiAxLjg1LFxuICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zY2hlZHVsZUNvbW1pdChjdHJsKTtcbiAgICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgfSk7XG4gICAgbWFwLmFkZEludGVyYWN0aW9uKHRoaXMuZHJhZ0JveCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm94Wm9vbSgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXAgPSB0aGlzLmNvbnRyb2xsZXIoKT8uZ2V0TWFwKCk7XG4gICAgaWYgKG1hcCAmJiB0aGlzLmRyYWdCb3gpIHtcbiAgICAgIG1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLmRyYWdCb3gpO1xuICAgIH1cbiAgICB0aGlzLmRyYWdCb3ggPSBudWxsO1xuICAgIHRoaXMucmVzdW1lSW50ZXJhY3Rpb25zPy4oKTtcbiAgICB0aGlzLnJlc3VtZUludGVyYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5ib3hNb2RlLnNldCgnbm9uZScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRnVsbHNjcmVlbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuZnVsbHNjcmVlblRhcmdldCgpO1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgcmV0dXJuIG92ZXJyaWRlO1xuICAgIH1cbiAgICBjb25zdCBzaGVsbCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoXG4gICAgICAnLmdlby1tYXAtc2hlbGwnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChzaGVsbCkge1xuICAgICAgcmV0dXJuIHNoZWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyKCk/LmdldE1hcCgpPy5nZXRUYXJnZXRFbGVtZW50KCkgPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0Z1bGxzY3JlZW5TdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVzb2x2ZUZ1bGxzY3JlZW5FbGVtZW50KCk7XG4gICAgY29uc3QgYWN0aXZlID1cbiAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICEhZWwgJiZcbiAgICAgIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ID09PSBlbDtcbiAgICB0aGlzLmlzRnVsbHNjcmVlbi5zZXQoYWN0aXZlKTtcblxuICAgIC8vIE92ZXJsYXkgcG9ydGFscyBvbiBib2R5IGFyZSBub3QgdmlzaWJsZSBkdXJpbmcgRnVsbHNjcmVlbiBBUEkg4oCUIHJlbW91bnQuXG4gICAgY29uc3Qgc2NvcGUgPVxuICAgICAgZWwgPz9cbiAgICAgICh0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuZ2VvLW1hcC1zaGVsbCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCk7XG4gICAgc3luY092ZXJsYXlDb250YWluZXJUb0Z1bGxzY3JlZW4odGhpcy5vdmVybGF5Q29udGFpbmVyLCBzY29wZSk7XG5cbiAgICAvLyBPTCBjYW52YXMgbXVzdCByZW1lYXN1cmUgYWZ0ZXIgbGF5b3V0IGNoYW5nZXMgdG8gZnVsbHNjcmVlbi5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmNvbnRyb2xsZXIoKT8udXBkYXRlU2l6ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VlZEhpc3RvcnkoY3RybDogR2VvTWFwQ29udHJvbGxlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpc3RvcnkoKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHpvb20gPSBjdHJsLmdldFpvb20oKTtcbiAgICBpZiAoem9vbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGlzdG9yeS5zZXQoW3pvb21dKTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVDb21taXQoY3RybDogR2VvTWFwQ29udHJvbGxlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbW1pdFRpbWVyICE9IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbW1pdFRpbWVyKTtcbiAgICB9XG4gICAgLy8gV2FpdCBmb3Igdmlldy5hbmltYXRlICgrIGZpdCkgdG8gc2V0dGxlIGJlZm9yZSByZWFkaW5nIHpvb20uXG4gICAgdGhpcy5jb21taXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb21taXRUaW1lciA9IG51bGw7XG4gICAgICB0aGlzLmNvbW1pdEhpc3RvcnkoY3RybCk7XG4gICAgfSwgMjQwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tbWl0SGlzdG9yeShjdHJsOiBHZW9NYXBDb250cm9sbGVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGluZ0hpc3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgem9vbSA9IGN0cmwuZ2V0Wm9vbSgpO1xuICAgIGlmICh6b29tID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSB0aGlzLmhpc3RvcnkoKS5zbGljZSgwLCB0aGlzLmhpc3RvcnlJbmRleCgpICsgMSk7XG4gICAgY29uc3QgbGFzdCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICE9IG51bGwgJiYgTWF0aC5hYnMobGFzdCAtIHpvb20pIDwgMWUtNCkge1xuICAgICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhY2sucHVzaCh6b29tKTtcbiAgICB0aGlzLmhpc3Rvcnkuc2V0KHN0YWNrKTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQoc3RhY2subGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaE5hdlN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuaGlzdG9yeUluZGV4KCk7XG4gICAgY29uc3QgbGVuID0gdGhpcy5oaXN0b3J5KCkubGVuZ3RoO1xuICAgIHRoaXMuY2FuWm9vbVByZXYuc2V0KGlkeCA+IDApO1xuICAgIHRoaXMuY2FuWm9vbU5leHQuc2V0KGlkeCA+PSAwICYmIGlkeCA8IGxlbiAtIDEpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2VvLW1hcC16b29tXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRodSBwaMOzbmcgYuG6o24gxJHhu5NcIj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgIG56LXRvb2x0aXA9XCJQaMOzbmcgdG9cIlxuICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgIGFyaWEtbGFiZWw9XCJQaMOzbmcgdG9cIlxuICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpXCJcbiAgICAoY2xpY2spPVwiem9vbUluKClcIlxuICA+XG4gICAgPGdlby1pY29uIHR5cGU9XCJwbHVzXCIgc2l6ZT1cIm1kXCIgLz5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICBuei10b29sdGlwPVwiVGh1IG5o4buPXCJcbiAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBhcmlhLWxhYmVsPVwiVGh1IG5o4buPXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgKGNsaWNrKT1cInpvb21PdXQoKVwiXG4gID5cbiAgICA8Z2VvLWljb24gdHlwZT1cIm1pbnVzXCIgc2l6ZT1cIm1kXCIgLz5cbiAgPC9idXR0b24+XG5cbiAgQGlmIChzaG93TmF2KCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtem9vbV9fZGl2aWRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgICAgW2NsYXNzLmdlby1tYXAtem9vbV9fYnRuLS1hY3RpdmVdPVwiYm94TW9kZSgpID09PSAnaW4nXCJcbiAgICAgIG56LXRvb2x0aXA9XCJQaMOzbmcgdG8gdGhlbyB2w7luZyAoa8OpbyBraHVuZylcIlxuICAgICAgbnpUb29sdGlwUGxhY2VtZW50PVwibGVmdFwiXG4gICAgICBhcmlhLWxhYmVsPVwiUGjDs25nIHRvIHRoZW8gdsO5bmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjb250cm9sbGVyKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUJveFpvb20oJ2luJylcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwiem9vbS1pblwiIHNpemU9XCJzbVwiIC8+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tbWFwLXpvb21fX2J0bi0tYWN0aXZlXT1cImJveE1vZGUoKSA9PT0gJ291dCdcIlxuICAgICAgbnotdG9vbHRpcD1cIlRodSBuaOG7jyB0aGVvIHbDuW5nIChrw6lvIGtodW5nKVwiXG4gICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUaHUgbmjhu48gdGhlbyB2w7luZ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQm94Wm9vbSgnb3V0JylcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwiem9vbS1vdXRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJnZW8tbWFwLXpvb21fX2J0blwiXG4gICAgICBuei10b29sdGlwPVwiWm9vbSB0csaw4bubY1wiXG4gICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJab29tIHRyxrDhu5tjXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpIHx8ICFjYW5ab29tUHJldigpXCJcbiAgICAgIChjbGljayk9XCJ6b29tUHJldigpXCJcbiAgICA+XG4gICAgICA8Z2VvLWljb24gdHlwZT1cImxlZnRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJnZW8tbWFwLXpvb21fX2J0blwiXG4gICAgICBuei10b29sdGlwPVwiWm9vbSBzYXVcIlxuICAgICAgbnpUb29sdGlwUGxhY2VtZW50PVwibGVmdFwiXG4gICAgICBhcmlhLWxhYmVsPVwiWm9vbSBzYXVcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjb250cm9sbGVyKCkgfHwgIWNhblpvb21OZXh0KClcIlxuICAgICAgKGNsaWNrKT1cInpvb21OZXh0KClcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwicmlnaHRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIEBpZiAoc2hvd0ZpdFByb3ZpbmNlKCkpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgICAgICBuei10b29sdGlwPVwiWGVtIHRvw6BuIHThu4luaFwiXG4gICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiWGVtIHRvw6BuIHThu4luaFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpXCJcbiAgICAgICAgKGNsaWNrKT1cImZpdFByb3ZpbmNlKClcIlxuICAgICAgPlxuICAgICAgICA8Z2VvLWljb24gdHlwZT1cImV4cGFuZFwiIHNpemU9XCJzbVwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tbWFwLXpvb21fX2J0bi0tYWN0aXZlXT1cImlzRnVsbHNjcmVlbigpXCJcbiAgICAgIFtuei10b29sdGlwXT1cIlxuICAgICAgICBpc0Z1bGxzY3JlZW4oKSA/ICdUaG/DoXQgdG/DoG4gbcOgbiBow6xuaCcgOiAnWGVtIHRvw6BuIGLhuqNuIMSR4buTJ1xuICAgICAgXCJcbiAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgaXNGdWxsc2NyZWVuKCkgPyAnVGhvw6F0IHRvw6BuIG3DoG4gaMOsbmgnIDogJ1hlbSB0b8OgbiBi4bqjbiDEkeG7kydcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICA+XG4gICAgICA8Z2VvLWljb25cbiAgICAgICAgW3R5cGVdPVwiaXNGdWxsc2NyZWVuKCkgPyAnZnVsbHNjcmVlbi1leGl0JyA6ICdmdWxsc2NyZWVuJ1wiXG4gICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvLW1hcC16b29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dlby11aS9zcmMvbGliL2ZpZ21hL2dlby1tYXAvY2hyb21lL2dlby1tYXAtem9vbS9nZW8tbWFwLXpvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ2VvLXVpL3NyYy9saWIvZmlnbWEvZ2VvLW1hcC9jaHJvbWUvZ2VvLW1hcC16b29tL2dlby1tYXAtem9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxNQUFNLElBQUksZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLE9BQU8sTUFBTSx3QkFBd0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5SCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBS3JGOzs7Ozs7R0FNRztBQVdILE1BQU0sT0FBTyxtQkFBbUI7SUFDYixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLElBQUks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QUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7d0dBL1NVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLDAwQkN6Q2hDLHV6R0EwR0EsNGpERHhFWSxnQkFBZ0Isd0dBQUUsZUFBZTs7NEZBT2hDLG1CQUFtQjtrQkFWL0IsU0FBUzsrQkFDRSxjQUFjLGNBQ1osSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLG1CQUczQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CLEVBQUUsS0FBSyxFQUFFLG1CQUFtQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgZWZmZWN0LFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBPbkRlc3Ryb3ksXG4gIHNpZ25hbCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheUNvbnRhaW5lciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IE56VG9vbFRpcE1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvdG9vbHRpcCc7XG5pbXBvcnQgeyBhbHdheXMgYXMgYWx3YXlzQ29uZGl0aW9uIH0gZnJvbSAnb2wvZXZlbnRzL2NvbmRpdGlvbic7XG5pbXBvcnQgeyBnZXRDZW50ZXIgfSBmcm9tICdvbC9leHRlbnQnO1xuaW1wb3J0IERyYWdCb3ggZnJvbSAnb2wvaW50ZXJhY3Rpb24vRHJhZ0JveCc7XG5pbXBvcnQgeyBHZW9JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vZ2VvLWljb24vZ2VvLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IHN5bmNPdmVybGF5Q29udGFpbmVyVG9GdWxsc2NyZWVuLCByZXN0b3JlT3ZlcmxheUNvbnRhaW5lclRvQm9keSB9IGZyb20gJy4uLy4uL3V0aWxzL2dlby1tYXAtZnVsbHNjcmVlbi1vdmVybGF5LnV0aWwnO1xuaW1wb3J0IHsgcGF1c2VDb25mbGljdGluZ0ludGVyYWN0aW9ucyB9IGZyb20gJy4uLy4uL3V0aWxzL2dlby1tYXAtaW50ZXJhY3Rpb25zLnV0aWwnO1xuaW1wb3J0IHsgR2VvTWFwQ29udHJvbGxlciB9IGZyb20gJy4uLy4uL2dlby1tYXAuY29udHJvbGxlcic7XG5cbnR5cGUgQm94Wm9vbU1vZGUgPSAnbm9uZScgfCAnaW4nIHwgJ291dCc7XG5cbi8qKlxuICogU3RhY2tlZCArLy0gem9vbSBjb250cm9sIGZvciBtYXAgY2hyb21lLlxuICpcbiAqIEBzdW1tYXJ5IFN0YWNrZWQgKy8tIHpvb20gY29udHJvbC5cbiAqIEB3aGVuVG9Vc2UgUmlnaHQtc2lkZSBtYXAgY2hyb21lLlxuICogQGRvTm90VXNlV2hlbiBCcm93c2VyL25hdGl2ZSBzY3JvbGwgem9vbSBvbmx5LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnZW8tbWFwLXpvb20nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbR2VvSWNvbkNvbXBvbmVudCwgTnpUb29sVGlwTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2dlby1tYXAtem9vbS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9nZW8tbWFwLXpvb20uY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDogeyBjbGFzczogJ2dlby1tYXAtem9vbS1ob3N0JyB9LFxufSlcbmV4cG9ydCBjbGFzcyBHZW9NYXBab29tQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3QgPSBpbmplY3QoRWxlbWVudFJlZjxIVE1MRWxlbWVudD4pO1xuICBwcml2YXRlIHJlYWRvbmx5IG92ZXJsYXlDb250YWluZXIgPSBpbmplY3QoT3ZlcmxheUNvbnRhaW5lcik7XG5cbiAgcmVhZG9ubHkgY29udHJvbGxlciA9IGlucHV0PEdlb01hcENvbnRyb2xsZXIgfCBudWxsPihudWxsKTtcbiAgLyoqIFNob3cgcHJldiAvIG5leHQgem9vbSArIGZ1bGxzY3JlZW4gKyBib3ggem9vbSAoVUMtMTUpLiAqL1xuICByZWFkb25seSBzaG93TmF2ID0gaW5wdXQodHJ1ZSk7XG4gIC8qKiBTaG93IOKAnHhlbSB0b8OgbiB04buJbmjigJ0gKFRDUUguMTQgR0Q1KSDigJQgZml0IHByb3ZpbmNlIGV4dGVudCwgbm90IGZ1bGxzY3JlZW4uICovXG4gIHJlYWRvbmx5IHNob3dGaXRQcm92aW5jZSA9IGlucHV0KHRydWUpO1xuICAvKipcbiAgICogUHJvdmluY2UgZXh0ZW50IGluIEVQU0c6NDMyNi4gRGVmYXVsdHMgdG8gTMOibSDEkOG7k25nIHBsYWNlaG9sZGVyIHdoZW4gb21pdHRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpbmNlRXh0ZW50ID0gaW5wdXQ8cmVhZG9ubHkgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0gfCBudWxsPihcbiAgICBudWxsLFxuICApO1xuICAvKipcbiAgICogRWxlbWVudCB0byBwdXQgaW4gRnVsbHNjcmVlbiBBUEkuXG4gICAqIERlZmF1bHRzIHRvIGNsb3Nlc3QgYC5nZW8tbWFwLXNoZWxsYCwgdGhlbiB0aGUgT0wgbWFwIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IGZ1bGxzY3JlZW5UYXJnZXQgPSBpbnB1dDxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGJveE1vZGUgPSBzaWduYWw8Qm94Wm9vbU1vZGU+KCdub25lJyk7XG4gIHJlYWRvbmx5IGNhblpvb21QcmV2ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgY2FuWm9vbU5leHQgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBpc0Z1bGxzY3JlZW4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIC8qKiBWaXNpdGVkIHpvb20gbGV2ZWxzOyBgaGlzdG9yeUluZGV4YCBwb2ludHMgYXQgdGhlIGN1cnJlbnQgbGV2ZWwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGlzdG9yeSA9IHNpZ25hbDxudW1iZXJbXT4oW10pO1xuICBwcml2YXRlIHJlYWRvbmx5IGhpc3RvcnlJbmRleCA9IHNpZ25hbCgtMSk7XG4gIHByaXZhdGUgbmF2aWdhdGluZ0hpc3RvcnkgPSBmYWxzZTtcbiAgcHJpdmF0ZSBkcmFnQm94OiBEcmFnQm94IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcmVzdW1lSW50ZXJhY3Rpb25zOiAoKCkgPT4gdm9pZCkgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBjb21taXRUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkZ1bGxzY3JlZW5DaGFuZ2UgPSAoKTogdm9pZCA9PiB7XG4gICAgdGhpcy5zeW5jRnVsbHNjcmVlblN0YXRlKCk7XG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB7XG4gICAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgICAgIC8vIEVuc3VyZSBTdG9yeWJvb2sgLyBuZXh0IHN0b3JpZXMgZ2V0IG92ZXJsYXlzIGJhY2sgb24gYm9keS5cbiAgICAgIHJlc3RvcmVPdmVybGF5Q29udGFpbmVyVG9Cb2R5KHRoaXMub3ZlcmxheUNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgICB9XG5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICAgICAgaWYgKGN0cmwpIHtcbiAgICAgICAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21taXRUaW1lciAhPSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jb21taXRUaW1lcik7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZnVsbHNjcmVlbmNoYW5nZScsIHRoaXMub25GdWxsc2NyZWVuQ2hhbmdlKTtcbiAgfVxuXG4gIHpvb21JbigpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IGN0cmwuem9vbUluKCkpO1xuICB9XG5cbiAgem9vbU91dCgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IGN0cmwuem9vbU91dCgpKTtcbiAgfVxuXG4gIHpvb21QcmV2KCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwgfHwgIXRoaXMuY2FuWm9vbVByZXYoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgIGNvbnN0IG5leHRJZHggPSB0aGlzLmhpc3RvcnlJbmRleCgpIC0gMTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gdHJ1ZTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQobmV4dElkeCk7XG4gICAgY3RybC5zZXRab29tKHRoaXMuaGlzdG9yeSgpW25leHRJZHhdKTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gZmFsc2U7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHpvb21OZXh0KCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwgfHwgIXRoaXMuY2FuWm9vbU5leHQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgIGNvbnN0IG5leHRJZHggPSB0aGlzLmhpc3RvcnlJbmRleCgpICsgMTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gdHJ1ZTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQobmV4dElkeCk7XG4gICAgY3RybC5zZXRab29tKHRoaXMuaGlzdG9yeSgpW25leHRJZHhdKTtcbiAgICB0aGlzLm5hdmlnYXRpbmdIaXN0b3J5ID0gZmFsc2U7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIC8qKiBGaXQgdOG7iW5oIC8gdG/DoG4gY+G6o25oIChUQ1FILjE0KSDigJQgZGlzdGluY3QgZnJvbSBmdWxsc2NyZWVuLiAqL1xuICBmaXRQcm92aW5jZSgpOiB2b2lkIHtcbiAgICB0aGlzLnJ1blpvb21BY3Rpb24oKGN0cmwpID0+IHtcbiAgICAgIGNvbnN0IGV4dGVudCA9IHRoaXMucHJvdmluY2VFeHRlbnQoKTtcbiAgICAgIGN0cmwuZml0UHJvdmluY2UoZXh0ZW50ID8/IHVuZGVmaW5lZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogVG9nZ2xlIGJyb3dzZXIgZnVsbHNjcmVlbiBmb3IgdGhlIG1hcCBzaGVsbCAvIHRhcmdldC4gKi9cbiAgdG9nZ2xlRnVsbHNjcmVlbigpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVzb2x2ZUZ1bGxzY3JlZW5FbGVtZW50KCk7XG4gICAgaWYgKCFlbCB8fCB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgaWYgKGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ID09PSBlbCkge1xuICAgICAgdm9pZCBkb2N1bWVudFxuICAgICAgICAuZXhpdEZ1bGxzY3JlZW4oKVxuICAgICAgICAuY2F0Y2goKCkgPT4gdW5kZWZpbmVkKVxuICAgICAgICAuZmluYWxseSgoKSA9PiB0aGlzLnN5bmNGdWxsc2NyZWVuU3RhdGUoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZvaWQgZWxcbiAgICAgIC5yZXF1ZXN0RnVsbHNjcmVlbj8uKClcbiAgICAgIC5jYXRjaCgoKSA9PiB1bmRlZmluZWQpXG4gICAgICAuZmluYWxseSgoKSA9PiB0aGlzLnN5bmNGdWxsc2NyZWVuU3RhdGUoKSk7XG4gIH1cblxuICB0b2dnbGVCb3hab29tKG1vZGU6IEV4Y2x1ZGU8Qm94Wm9vbU1vZGUsICdub25lJz4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5ib3hNb2RlKCkgPT09IG1vZGUpIHtcbiAgICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RhcnRCb3hab29tKG1vZGUpO1xuICB9XG5cbiAgLyoqIEV4aXQgYm94LXpvb20gLyB0ZW1wb3JhcnkgaW50ZXJhY3Rpb24gc28gbWFwIHJldHVybnMgdG8gcGFuLiAqL1xuICByZXNldEludGVyYWN0aW9uTW9kZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBydW5ab29tQWN0aW9uKGFwcGx5OiAoY3RybDogR2VvTWFwQ29udHJvbGxlcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IGN0cmwgPSB0aGlzLmNvbnRyb2xsZXIoKTtcbiAgICBpZiAoIWN0cmwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgIGFwcGx5KGN0cmwpO1xuICAgIHRoaXMuc2NoZWR1bGVDb21taXQoY3RybCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0Qm94Wm9vbShtb2RlOiBFeGNsdWRlPEJveFpvb21Nb2RlLCAnbm9uZSc+KTogdm9pZCB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5jb250cm9sbGVyKCk/LmdldE1hcCgpO1xuICAgIGlmICghbWFwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgdGhpcy5ib3hNb2RlLnNldChtb2RlKTtcbiAgICB0aGlzLnJlc3VtZUludGVyYWN0aW9ucyA9IHBhdXNlQ29uZmxpY3RpbmdJbnRlcmFjdGlvbnMobWFwLCB7XG4gICAgICBkcmFnUGFuOiB0cnVlLFxuICAgICAgZG91YmxlQ2xpY2tab29tOiB0cnVlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5kcmFnQm94ID0gbmV3IERyYWdCb3goe1xuICAgICAgY29uZGl0aW9uOiBhbHdheXNDb25kaXRpb24sXG4gICAgICBjbGFzc05hbWU6ICdvbC1kcmFnYm94IGdlby1tYXAtem9vbV9fZHJhZ2JveCcsXG4gICAgfSk7XG4gICAgdGhpcy5kcmFnQm94Lm9uKCdib3hlbmQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjdHJsID0gdGhpcy5jb250cm9sbGVyKCk7XG4gICAgICBjb25zdCBleHRlbnQgPSB0aGlzLmRyYWdCb3g/LmdldEdlb21ldHJ5KCkuZ2V0RXh0ZW50KCk7XG4gICAgICBpZiAoIWN0cmwgfHwgIWV4dGVudCkge1xuICAgICAgICB0aGlzLmNsZWFyQm94Wm9vbSgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNlZWRIaXN0b3J5KGN0cmwpO1xuICAgICAgaWYgKG1vZGUgPT09ICdpbicpIHtcbiAgICAgICAgY3RybC5maXRFeHRlbnQoZXh0ZW50IGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdLCB7XG4gICAgICAgICAgbWF4Wm9vbTogMjAsXG4gICAgICAgICAgcGFkZGluZzogWzE2LCAxNiwgMTYsIDE2XSxcbiAgICAgICAgICBkdXJhdGlvbjogMjAwLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSBtYXAuZ2V0VmlldygpO1xuICAgICAgICBjb25zdCBzaXplID0gbWFwLmdldFNpemUoKTtcbiAgICAgICAgaWYgKCF2aWV3IHx8ICFzaXplKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHZpZXcuZ2V0UmVzb2x1dGlvbigpO1xuICAgICAgICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5jbGVhckJveFpvb20oKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdmlldy5hbmltYXRlKHtcbiAgICAgICAgICBjZW50ZXI6IGdldENlbnRlcihleHRlbnQpLFxuICAgICAgICAgIHJlc29sdXRpb246IGN1cnJlbnQgKiAxLjg1LFxuICAgICAgICAgIGR1cmF0aW9uOiAyMDAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zY2hlZHVsZUNvbW1pdChjdHJsKTtcbiAgICAgIHRoaXMuY2xlYXJCb3hab29tKCk7XG4gICAgfSk7XG4gICAgbWFwLmFkZEludGVyYWN0aW9uKHRoaXMuZHJhZ0JveCk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyQm94Wm9vbSgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXAgPSB0aGlzLmNvbnRyb2xsZXIoKT8uZ2V0TWFwKCk7XG4gICAgaWYgKG1hcCAmJiB0aGlzLmRyYWdCb3gpIHtcbiAgICAgIG1hcC5yZW1vdmVJbnRlcmFjdGlvbih0aGlzLmRyYWdCb3gpO1xuICAgIH1cbiAgICB0aGlzLmRyYWdCb3ggPSBudWxsO1xuICAgIHRoaXMucmVzdW1lSW50ZXJhY3Rpb25zPy4oKTtcbiAgICB0aGlzLnJlc3VtZUludGVyYWN0aW9ucyA9IG51bGw7XG4gICAgdGhpcy5ib3hNb2RlLnNldCgnbm9uZScpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvbHZlRnVsbHNjcmVlbkVsZW1lbnQoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBjb25zdCBvdmVycmlkZSA9IHRoaXMuZnVsbHNjcmVlblRhcmdldCgpO1xuICAgIGlmIChvdmVycmlkZSkge1xuICAgICAgcmV0dXJuIG92ZXJyaWRlO1xuICAgIH1cbiAgICBjb25zdCBzaGVsbCA9IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmNsb3Nlc3QoXG4gICAgICAnLmdlby1tYXAtc2hlbGwnLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgIGlmIChzaGVsbCkge1xuICAgICAgcmV0dXJuIHNoZWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyKCk/LmdldE1hcCgpPy5nZXRUYXJnZXRFbGVtZW50KCkgPz8gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc3luY0Z1bGxzY3JlZW5TdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMucmVzb2x2ZUZ1bGxzY3JlZW5FbGVtZW50KCk7XG4gICAgY29uc3QgYWN0aXZlID1cbiAgICAgIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAgICEhZWwgJiZcbiAgICAgIGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ID09PSBlbDtcbiAgICB0aGlzLmlzRnVsbHNjcmVlbi5zZXQoYWN0aXZlKTtcblxuICAgIC8vIE92ZXJsYXkgcG9ydGFscyBvbiBib2R5IGFyZSBub3QgdmlzaWJsZSBkdXJpbmcgRnVsbHNjcmVlbiBBUEkg4oCUIHJlbW91bnQuXG4gICAgY29uc3Qgc2NvcGUgPVxuICAgICAgZWwgPz9cbiAgICAgICh0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuZ2VvLW1hcC1zaGVsbCcpIGFzIEhUTUxFbGVtZW50IHwgbnVsbCk7XG4gICAgc3luY092ZXJsYXlDb250YWluZXJUb0Z1bGxzY3JlZW4odGhpcy5vdmVybGF5Q29udGFpbmVyLCBzY29wZSk7XG5cbiAgICAvLyBPTCBjYW52YXMgbXVzdCByZW1lYXN1cmUgYWZ0ZXIgbGF5b3V0IGNoYW5nZXMgdG8gZnVsbHNjcmVlbi5cbiAgICBxdWV1ZU1pY3JvdGFzaygoKSA9PiB0aGlzLmNvbnRyb2xsZXIoKT8udXBkYXRlU2l6ZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VlZEhpc3RvcnkoY3RybDogR2VvTWFwQ29udHJvbGxlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmhpc3RvcnkoKS5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHpvb20gPSBjdHJsLmdldFpvb20oKTtcbiAgICBpZiAoem9vbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaGlzdG9yeS5zZXQoW3pvb21dKTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQoMCk7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2NoZWR1bGVDb21taXQoY3RybDogR2VvTWFwQ29udHJvbGxlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbW1pdFRpbWVyICE9IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNvbW1pdFRpbWVyKTtcbiAgICB9XG4gICAgLy8gV2FpdCBmb3Igdmlldy5hbmltYXRlICgrIGZpdCkgdG8gc2V0dGxlIGJlZm9yZSByZWFkaW5nIHpvb20uXG4gICAgdGhpcy5jb21taXRUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5jb21taXRUaW1lciA9IG51bGw7XG4gICAgICB0aGlzLmNvbW1pdEhpc3RvcnkoY3RybCk7XG4gICAgfSwgMjQwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29tbWl0SGlzdG9yeShjdHJsOiBHZW9NYXBDb250cm9sbGVyKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubmF2aWdhdGluZ0hpc3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgem9vbSA9IGN0cmwuZ2V0Wm9vbSgpO1xuICAgIGlmICh6b29tID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3RhY2sgPSB0aGlzLmhpc3RvcnkoKS5zbGljZSgwLCB0aGlzLmhpc3RvcnlJbmRleCgpICsgMSk7XG4gICAgY29uc3QgbGFzdCA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0ICE9IG51bGwgJiYgTWF0aC5hYnMobGFzdCAtIHpvb20pIDwgMWUtNCkge1xuICAgICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3RhY2sucHVzaCh6b29tKTtcbiAgICB0aGlzLmhpc3Rvcnkuc2V0KHN0YWNrKTtcbiAgICB0aGlzLmhpc3RvcnlJbmRleC5zZXQoc3RhY2subGVuZ3RoIC0gMSk7XG4gICAgdGhpcy5yZWZyZXNoTmF2U3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVmcmVzaE5hdlN0YXRlKCk6IHZvaWQge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuaGlzdG9yeUluZGV4KCk7XG4gICAgY29uc3QgbGVuID0gdGhpcy5oaXN0b3J5KCkubGVuZ3RoO1xuICAgIHRoaXMuY2FuWm9vbVByZXYuc2V0KGlkeCA+IDApO1xuICAgIHRoaXMuY2FuWm9vbU5leHQuc2V0KGlkeCA+PSAwICYmIGlkeCA8IGxlbiAtIDEpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZ2VvLW1hcC16b29tXCIgcm9sZT1cImdyb3VwXCIgYXJpYS1sYWJlbD1cIlRodSBwaMOzbmcgYuG6o24gxJHhu5NcIj5cbiAgPGJ1dHRvblxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgIG56LXRvb2x0aXA9XCJQaMOzbmcgdG9cIlxuICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgIGFyaWEtbGFiZWw9XCJQaMOzbmcgdG9cIlxuICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpXCJcbiAgICAoY2xpY2spPVwiem9vbUluKClcIlxuICA+XG4gICAgPGdlby1pY29uIHR5cGU9XCJwbHVzXCIgc2l6ZT1cInNtXCIgLz5cbiAgPC9idXR0b24+XG4gIDxidXR0b25cbiAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICBuei10b29sdGlwPVwiVGh1IG5o4buPXCJcbiAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICBhcmlhLWxhYmVsPVwiVGh1IG5o4buPXCJcbiAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgKGNsaWNrKT1cInpvb21PdXQoKVwiXG4gID5cbiAgICA8Z2VvLWljb24gdHlwZT1cIm1pbnVzXCIgc2l6ZT1cInNtXCIgLz5cbiAgPC9idXR0b24+XG5cbiAgQGlmIChzaG93TmF2KCkpIHtcbiAgICA8c3BhbiBjbGFzcz1cImdlby1tYXAtem9vbV9fZGl2aWRlclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgICAgW2NsYXNzLmdlby1tYXAtem9vbV9fYnRuLS1hY3RpdmVdPVwiYm94TW9kZSgpID09PSAnaW4nXCJcbiAgICAgIG56LXRvb2x0aXA9XCJQaMOzbmcgdG8gdGhlbyB2w7luZyAoa8OpbyBraHVuZylcIlxuICAgICAgbnpUb29sdGlwUGxhY2VtZW50PVwibGVmdFwiXG4gICAgICBhcmlhLWxhYmVsPVwiUGjDs25nIHRvIHRoZW8gdsO5bmdcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjb250cm9sbGVyKClcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZUJveFpvb20oJ2luJylcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwiem9vbS1pblwiIHNpemU9XCJzbVwiIC8+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tbWFwLXpvb21fX2J0bi0tYWN0aXZlXT1cImJveE1vZGUoKSA9PT0gJ291dCdcIlxuICAgICAgbnotdG9vbHRpcD1cIlRodSBuaOG7jyB0aGVvIHbDuW5nIChrw6lvIGtodW5nKVwiXG4gICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUaHUgbmjhu48gdGhlbyB2w7luZ1wiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQm94Wm9vbSgnb3V0JylcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwiem9vbS1vdXRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJnZW8tbWFwLXpvb21fX2J0blwiXG4gICAgICBuei10b29sdGlwPVwiWm9vbSB0csaw4bubY1wiXG4gICAgICBuelRvb2x0aXBQbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgIGFyaWEtbGFiZWw9XCJab29tIHRyxrDhu5tjXCJcbiAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpIHx8ICFjYW5ab29tUHJldigpXCJcbiAgICAgIChjbGljayk9XCJ6b29tUHJldigpXCJcbiAgICA+XG4gICAgICA8Z2VvLWljb24gdHlwZT1cImxlZnRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgY2xhc3M9XCJnZW8tbWFwLXpvb21fX2J0blwiXG4gICAgICBuei10b29sdGlwPVwiWm9vbSBzYXVcIlxuICAgICAgbnpUb29sdGlwUGxhY2VtZW50PVwibGVmdFwiXG4gICAgICBhcmlhLWxhYmVsPVwiWm9vbSBzYXVcIlxuICAgICAgW2Rpc2FibGVkXT1cIiFjb250cm9sbGVyKCkgfHwgIWNhblpvb21OZXh0KClcIlxuICAgICAgKGNsaWNrKT1cInpvb21OZXh0KClcIlxuICAgID5cbiAgICAgIDxnZW8taWNvbiB0eXBlPVwicmlnaHRcIiBzaXplPVwic21cIiAvPlxuICAgIDwvYnV0dG9uPlxuICAgIEBpZiAoc2hvd0ZpdFByb3ZpbmNlKCkpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzPVwiZ2VvLW1hcC16b29tX19idG5cIlxuICAgICAgICBuei10b29sdGlwPVwiWGVtIHRvw6BuIHThu4luaFwiXG4gICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICBhcmlhLWxhYmVsPVwiWGVtIHRvw6BuIHThu4luaFwiXG4gICAgICAgIFtkaXNhYmxlZF09XCIhY29udHJvbGxlcigpXCJcbiAgICAgICAgKGNsaWNrKT1cImZpdFByb3ZpbmNlKClcIlxuICAgICAgPlxuICAgICAgICA8Z2VvLWljb24gdHlwZT1cImV4cGFuZFwiIHNpemU9XCJzbVwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cImdlby1tYXAtem9vbV9fYnRuXCJcbiAgICAgIFtjbGFzcy5nZW8tbWFwLXpvb21fX2J0bi0tYWN0aXZlXT1cImlzRnVsbHNjcmVlbigpXCJcbiAgICAgIFtuei10b29sdGlwXT1cIlxuICAgICAgICBpc0Z1bGxzY3JlZW4oKSA/ICdUaG/DoXQgdG/DoG4gbcOgbiBow6xuaCcgOiAnWGVtIHRvw6BuIGLhuqNuIMSR4buTJ1xuICAgICAgXCJcbiAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJcbiAgICAgICAgaXNGdWxsc2NyZWVuKCkgPyAnVGhvw6F0IHRvw6BuIG3DoG4gaMOsbmgnIDogJ1hlbSB0b8OgbiBi4bqjbiDEkeG7kydcbiAgICAgIFwiXG4gICAgICBbZGlzYWJsZWRdPVwiIWNvbnRyb2xsZXIoKVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlRnVsbHNjcmVlbigpXCJcbiAgICA+XG4gICAgICA8Z2VvLWljb25cbiAgICAgICAgW3R5cGVdPVwiaXNGdWxsc2NyZWVuKCkgPyAnZnVsbHNjcmVlbi1leGl0JyA6ICdmdWxsc2NyZWVuJ1wiXG4gICAgICAgIHNpemU9XCJzbVwiXG4gICAgICAvPlxuICAgIDwvYnV0dG9uPlxuICB9XG48L2Rpdj5cbiJdfQ==
|