/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ import { Direction, Directionality } from 'cdk/bidi'; import { BooleanInput } from 'cdk/coercion'; import { ElementRef, EventEmitter, InjectionToken, OnChanges, OnDestroy, SimpleChanges, TemplateRef, ViewContainerRef, } from '@angular/core'; import { Overlay } from './overlay'; import { OverlayRef } from './overlay-ref'; import { ConnectedOverlayPositionChange } from './position/connected-position'; import { ConnectedPosition, FlexibleConnectedPositionStrategy, } from './position/flexible-connected-position-strategy'; import { RepositionScrollStrategy, ScrollStrategy } from './scroll/index'; /** Injection token that determines the scroll handling while the connected overlay is open. */ import * as ɵngcc0 from '@angular/core'; export declare const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY: InjectionToken< () => ScrollStrategy >; /** * Directive applied to an element to make it usable as an origin for an Overlay using a * ConnectedPositionStrategy. */ export declare class CdkOverlayOrigin { /** Reference to the element on which the directive is applied. */ elementRef: ElementRef; constructor( /** Reference to the element on which the directive is applied. */ elementRef: ElementRef ); static ɵfac: ɵngcc0.ɵɵFactoryDef; static ɵdir: ɵngcc0.ɵɵDirectiveDefWithMeta< CdkOverlayOrigin, '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]', ['cdkOverlayOrigin'], {}, {}, never >; } /** * Directive to facilitate declarative creation of an * Overlay using a FlexibleConnectedPositionStrategy. */ export declare class CdkConnectedOverlay implements OnDestroy, OnChanges { private _overlay; private _dir; private _overlayRef; private _templatePortal; private _hasBackdrop; private _lockPosition; private _growAfterOpen; private _flexibleDimensions; private _push; private _backdropSubscription; private _attachSubscription; private _detachSubscription; private _positionSubscription; private _offsetX; private _offsetY; private _position; private _scrollStrategyFactory; /** Origin for the connected overlay. */ origin: CdkOverlayOrigin; /** Registered connected position pairs. */ positions: ConnectedPosition[]; /** * This input overrides the positions input if specified. It lets users pass * in arbitrary positioning strategies. */ positionStrategy: FlexibleConnectedPositionStrategy; /** The offset in pixels for the overlay connection point on the x-axis */ get offsetX(): number; set offsetX(offsetX: number); /** The offset in pixels for the overlay connection point on the y-axis */ get offsetY(): number; set offsetY(offsetY: number); /** The width of the overlay panel. */ width: number | string; /** The height of the overlay panel. */ height: number | string; /** The min width of the overlay panel. */ minWidth: number | string; /** The min height of the overlay panel. */ minHeight: number | string; /** The custom class to be set on the backdrop element. */ backdropClass: string; /** The custom class to add to the overlay pane element. */ panelClass: string | string[]; /** Margin between the overlay and the viewport edges. */ viewportMargin: number; /** Strategy to be used when handling scroll events while the overlay is open. */ scrollStrategy: ScrollStrategy; /** Whether the overlay is open. */ open: boolean; /** Whether the overlay can be closed by user interaction. */ disableClose: boolean; /** CSS selector which to set the transform origin. */ transformOriginSelector: string; /** Whether or not the overlay should attach a backdrop. */ get hasBackdrop(): any; set hasBackdrop(value: any); /** Whether or not the overlay should be locked when scrolling. */ get lockPosition(): any; set lockPosition(value: any); /** Whether the overlay's width and height can be constrained to fit within the viewport. */ get flexibleDimensions(): boolean; set flexibleDimensions(value: boolean); /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */ get growAfterOpen(): boolean; set growAfterOpen(value: boolean); /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */ get push(): boolean; set push(value: boolean); /** Event emitted when the backdrop is clicked. */ readonly backdropClick: EventEmitter; /** Event emitted when the position has changed. */ readonly positionChange: EventEmitter; /** Event emitted when the overlay has been attached. */ readonly attach: EventEmitter; /** Event emitted when the overlay has been detached. */ readonly detach: EventEmitter; /** Emits when there are keyboard events that are targeted at the overlay. */ readonly overlayKeydown: EventEmitter; /** Emits when there are mouse outside click events that are targeted at the overlay. */ readonly overlayOutsideClick: EventEmitter; constructor( _overlay: Overlay, templateRef: TemplateRef, viewContainerRef: ViewContainerRef, scrollStrategyFactory: any, _dir: Directionality ); /** The associated overlay reference. */ get overlayRef(): OverlayRef; /** The element's layout direction. */ get dir(): Direction; ngOnDestroy(): void; ngOnChanges(changes: SimpleChanges): void; /** Creates an overlay */ private _createOverlay; /** Builds the overlay config based on the directive's inputs */ private _buildConfig; /** Updates the state of a position strategy, based on the values of the directive inputs. */ private _updatePositionStrategy; /** Returns the position strategy of the overlay to be set on the overlay config */ private _createPositionStrategy; /** Attaches the overlay and subscribes to backdrop clicks if backdrop exists */ private _attachOverlay; /** Detaches the overlay and unsubscribes to backdrop clicks if backdrop exists */ private _detachOverlay; static ngAcceptInputType_hasBackdrop: BooleanInput; static ngAcceptInputType_lockPosition: BooleanInput; static ngAcceptInputType_flexibleDimensions: BooleanInput; static ngAcceptInputType_growAfterOpen: BooleanInput; static ngAcceptInputType_push: BooleanInput; static ɵfac: ɵngcc0.ɵɵFactoryDef< CdkConnectedOverlay, [null, null, null, null, { optional: true }] >; static ɵdir: ɵngcc0.ɵɵDirectiveDefWithMeta< CdkConnectedOverlay, '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]', ['cdkConnectedOverlay'], { viewportMargin: 'cdkConnectedOverlayViewportMargin'; open: 'cdkConnectedOverlayOpen'; disableClose: 'cdkConnectedOverlayDisableClose'; scrollStrategy: 'cdkConnectedOverlayScrollStrategy'; offsetX: 'cdkConnectedOverlayOffsetX'; offsetY: 'cdkConnectedOverlayOffsetY'; hasBackdrop: 'cdkConnectedOverlayHasBackdrop'; lockPosition: 'cdkConnectedOverlayLockPosition'; flexibleDimensions: 'cdkConnectedOverlayFlexibleDimensions'; growAfterOpen: 'cdkConnectedOverlayGrowAfterOpen'; push: 'cdkConnectedOverlayPush'; positions: 'cdkConnectedOverlayPositions'; origin: 'cdkConnectedOverlayOrigin'; positionStrategy: 'cdkConnectedOverlayPositionStrategy'; width: 'cdkConnectedOverlayWidth'; height: 'cdkConnectedOverlayHeight'; minWidth: 'cdkConnectedOverlayMinWidth'; minHeight: 'cdkConnectedOverlayMinHeight'; backdropClass: 'cdkConnectedOverlayBackdropClass'; panelClass: 'cdkConnectedOverlayPanelClass'; transformOriginSelector: 'cdkConnectedOverlayTransformOriginOn'; }, { backdropClick: 'backdropClick'; positionChange: 'positionChange'; attach: 'attach'; detach: 'detach'; overlayKeydown: 'overlayKeydown'; overlayOutsideClick: 'overlayOutsideClick'; }, never >; } /** @docs-private */ export declare function CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY( overlay: Overlay ): () => RepositionScrollStrategy; /** @docs-private */ export declare const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER: { provide: InjectionToken<() => ScrollStrategy>; deps: typeof Overlay[]; useFactory: typeof CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY; }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcmxheS1kaXJlY3RpdmVzLmQudHMiLCJzb3VyY2VzIjpbIm92ZXJsYXktZGlyZWN0aXZlcy5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQgeyBEaXJlY3Rpb24sIERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0aW9uVG9rZW4sIE9uQ2hhbmdlcywgT25EZXN0cm95LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT3ZlcmxheSB9IGZyb20gJy4vb3ZlcmxheSc7XG5pbXBvcnQgeyBPdmVybGF5UmVmIH0gZnJvbSAnLi9vdmVybGF5LXJlZic7XG5pbXBvcnQgeyBDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25DaGFuZ2UgfSBmcm9tICcuL3Bvc2l0aW9uL2Nvbm5lY3RlZC1wb3NpdGlvbic7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnLi9wb3NpdGlvbi9mbGV4aWJsZS1jb25uZWN0ZWQtcG9zaXRpb24tc3RyYXRlZ3knO1xuaW1wb3J0IHsgUmVwb3NpdGlvblNjcm9sbFN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneSB9IGZyb20gJy4vc2Nyb2xsL2luZGV4Jztcbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgaGFuZGxpbmcgd2hpbGUgdGhlIGNvbm5lY3RlZCBvdmVybGF5IGlzIG9wZW4uICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBDREtfQ09OTkVDVEVEX09WRVJMQVlfU0NST0xMX1NUUkFURUdZOiBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT47XG4vKipcbiAqIERpcmVjdGl2ZSBhcHBsaWVkIHRvIGFuIGVsZW1lbnQgdG8gbWFrZSBpdCB1c2FibGUgYXMgYW4gb3JpZ2luIGZvciBhbiBPdmVybGF5IHVzaW5nIGFcbiAqIENvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kuXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIENka092ZXJsYXlPcmlnaW4ge1xuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGVsZW1lbnQgb24gd2hpY2ggdGhlIGRpcmVjdGl2ZSBpcyBhcHBsaWVkLiAqL1xuICAgIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XG4gICAgY29uc3RydWN0b3IoXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgZWxlbWVudCBvbiB3aGljaCB0aGUgZGlyZWN0aXZlIGlzIGFwcGxpZWQuICovXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZik7XG59XG4vKipcbiAqIERpcmVjdGl2ZSB0byBmYWNpbGl0YXRlIGRlY2xhcmF0aXZlIGNyZWF0aW9uIG9mIGFuXG4gKiBPdmVybGF5IHVzaW5nIGEgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LlxuICovXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDZGtDb25uZWN0ZWRPdmVybGF5IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuICAgIHByaXZhdGUgX292ZXJsYXk7XG4gICAgcHJpdmF0ZSBfZGlyO1xuICAgIHByaXZhdGUgX292ZXJsYXlSZWY7XG4gICAgcHJpdmF0ZSBfdGVtcGxhdGVQb3J0YWw7XG4gICAgcHJpdmF0ZSBfaGFzQmFja2Ryb3A7XG4gICAgcHJpdmF0ZSBfbG9ja1Bvc2l0aW9uO1xuICAgIHByaXZhdGUgX2dyb3dBZnRlck9wZW47XG4gICAgcHJpdmF0ZSBfZmxleGlibGVEaW1lbnNpb25zO1xuICAgIHByaXZhdGUgX3B1c2g7XG4gICAgcHJpdmF0ZSBfYmFja2Ryb3BTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfYXR0YWNoU3Vic2NyaXB0aW9uO1xuICAgIHByaXZhdGUgX2RldGFjaFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9wb3NpdGlvblN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9vZmZzZXRYO1xuICAgIHByaXZhdGUgX29mZnNldFk7XG4gICAgcHJpdmF0ZSBfcG9zaXRpb247XG4gICAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5O1xuICAgIC8qKiBPcmlnaW4gZm9yIHRoZSBjb25uZWN0ZWQgb3ZlcmxheS4gKi9cbiAgICBvcmlnaW46IENka092ZXJsYXlPcmlnaW47XG4gICAgLyoqIFJlZ2lzdGVyZWQgY29ubmVjdGVkIHBvc2l0aW9uIHBhaXJzLiAqL1xuICAgIHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXTtcbiAgICAvKipcbiAgICAgKiBUaGlzIGlucHV0IG92ZXJyaWRlcyB0aGUgcG9zaXRpb25zIGlucHV0IGlmIHNwZWNpZmllZC4gSXQgbGV0cyB1c2VycyBwYXNzXG4gICAgICogaW4gYXJiaXRyYXJ5IHBvc2l0aW9uaW5nIHN0cmF0ZWdpZXMuXG4gICAgICovXG4gICAgcG9zaXRpb25TdHJhdGVneTogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5O1xuICAgIC8qKiBUaGUgb2Zmc2V0IGluIHBpeGVscyBmb3IgdGhlIG92ZXJsYXkgY29ubmVjdGlvbiBwb2ludCBvbiB0aGUgeC1heGlzICovXG4gICAgZ2V0IG9mZnNldFgoKTogbnVtYmVyO1xuICAgIHNldCBvZmZzZXRYKG9mZnNldFg6IG51bWJlcik7XG4gICAgLyoqIFRoZSBvZmZzZXQgaW4gcGl4ZWxzIGZvciB0aGUgb3ZlcmxheSBjb25uZWN0aW9uIHBvaW50IG9uIHRoZSB5LWF4aXMgKi9cbiAgICBnZXQgb2Zmc2V0WSgpOiBudW1iZXI7XG4gICAgc2V0IG9mZnNldFkob2Zmc2V0WTogbnVtYmVyKTtcbiAgICAvKiogVGhlIHdpZHRoIG9mIHRoZSBvdmVybGF5IHBhbmVsLiAqL1xuICAgIHdpZHRoOiBudW1iZXIgfCBzdHJpbmc7XG4gICAgLyoqIFRoZSBoZWlnaHQgb2YgdGhlIG92ZXJsYXkgcGFuZWwuICovXG4gICAgaGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgLyoqIFRoZSBtaW4gd2lkdGggb2YgdGhlIG92ZXJsYXkgcGFuZWwuICovXG4gICAgbWluV2lkdGg6IG51bWJlciB8IHN0cmluZztcbiAgICAvKiogVGhlIG1pbiBoZWlnaHQgb2YgdGhlIG92ZXJsYXkgcGFuZWwuICovXG4gICAgbWluSGVpZ2h0OiBudW1iZXIgfCBzdHJpbmc7XG4gICAgLyoqIFRoZSBjdXN0b20gY2xhc3MgdG8gYmUgc2V0IG9uIHRoZSBiYWNrZHJvcCBlbGVtZW50LiAqL1xuICAgIGJhY2tkcm9wQ2xhc3M6IHN0cmluZztcbiAgICAvKiogVGhlIGN1c3RvbSBjbGFzcyB0byBhZGQgdG8gdGhlIG92ZXJsYXkgcGFuZSBlbGVtZW50LiAqL1xuICAgIHBhbmVsQ2xhc3M6IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIC8qKiBNYXJnaW4gYmV0d2VlbiB0aGUgb3ZlcmxheSBhbmQgdGhlIHZpZXdwb3J0IGVkZ2VzLiAqL1xuICAgIHZpZXdwb3J0TWFyZ2luOiBudW1iZXI7XG4gICAgLyoqIFN0cmF0ZWd5IHRvIGJlIHVzZWQgd2hlbiBoYW5kbGluZyBzY3JvbGwgZXZlbnRzIHdoaWxlIHRoZSBvdmVybGF5IGlzIG9wZW4uICovXG4gICAgc2Nyb2xsU3RyYXRlZ3k6IFNjcm9sbFN0cmF0ZWd5O1xuICAgIC8qKiBXaGV0aGVyIHRoZSBvdmVybGF5IGlzIG9wZW4uICovXG4gICAgb3BlbjogYm9vbGVhbjtcbiAgICAvKiogV2hldGhlciB0aGUgb3ZlcmxheSBjYW4gYmUgY2xvc2VkIGJ5IHVzZXIgaW50ZXJhY3Rpb24uICovXG4gICAgZGlzYWJsZUNsb3NlOiBib29sZWFuO1xuICAgIC8qKiBDU1Mgc2VsZWN0b3Igd2hpY2ggdG8gc2V0IHRoZSB0cmFuc2Zvcm0gb3JpZ2luLiAqL1xuICAgIHRyYW5zZm9ybU9yaWdpblNlbGVjdG9yOiBzdHJpbmc7XG4gICAgLyoqIFdoZXRoZXIgb3Igbm90IHRoZSBvdmVybGF5IHNob3VsZCBhdHRhY2ggYSBiYWNrZHJvcC4gKi9cbiAgICBnZXQgaGFzQmFja2Ryb3AoKTogYW55O1xuICAgIHNldCBoYXNCYWNrZHJvcCh2YWx1ZTogYW55KTtcbiAgICAvKiogV2hldGhlciBvciBub3QgdGhlIG92ZXJsYXkgc2hvdWxkIGJlIGxvY2tlZCB3aGVuIHNjcm9sbGluZy4gKi9cbiAgICBnZXQgbG9ja1Bvc2l0aW9uKCk6IGFueTtcbiAgICBzZXQgbG9ja1Bvc2l0aW9uKHZhbHVlOiBhbnkpO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBvdmVybGF5J3Mgd2lkdGggYW5kIGhlaWdodCBjYW4gYmUgY29uc3RyYWluZWQgdG8gZml0IHdpdGhpbiB0aGUgdmlld3BvcnQuICovXG4gICAgZ2V0IGZsZXhpYmxlRGltZW5zaW9ucygpOiBib29sZWFuO1xuICAgIHNldCBmbGV4aWJsZURpbWVuc2lvbnModmFsdWU6IGJvb2xlYW4pO1xuICAgIC8qKiBXaGV0aGVyIHRoZSBvdmVybGF5IGNhbiBncm93IGFmdGVyIHRoZSBpbml0aWFsIG9wZW4gd2hlbiBmbGV4aWJsZSBwb3NpdGlvbmluZyBpcyB0dXJuZWQgb24uICovXG4gICAgZ2V0IGdyb3dBZnRlck9wZW4oKTogYm9vbGVhbjtcbiAgICBzZXQgZ3Jvd0FmdGVyT3Blbih2YWx1ZTogYm9vbGVhbik7XG4gICAgLyoqIFdoZXRoZXIgdGhlIG92ZXJsYXkgY2FuIGJlIHB1c2hlZCBvbi1zY3JlZW4gaWYgbm9uZSBvZiB0aGUgcHJvdmlkZWQgcG9zaXRpb25zIGZpdC4gKi9cbiAgICBnZXQgcHVzaCgpOiBib29sZWFuO1xuICAgIHNldCBwdXNoKHZhbHVlOiBib29sZWFuKTtcbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBiYWNrZHJvcCBpcyBjbGlja2VkLiAqL1xuICAgIHJlYWRvbmx5IGJhY2tkcm9wQ2xpY2s6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PjtcbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBwb3NpdGlvbiBoYXMgY2hhbmdlZC4gKi9cbiAgICByZWFkb25seSBwb3NpdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPENvbm5lY3RlZE92ZXJsYXlQb3NpdGlvbkNoYW5nZT47XG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgb3ZlcmxheSBoYXMgYmVlbiBhdHRhY2hlZC4gKi9cbiAgICByZWFkb25seSBhdHRhY2g6IEV2ZW50RW1pdHRlcjx2b2lkPjtcbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBvdmVybGF5IGhhcyBiZWVuIGRldGFjaGVkLiAqL1xuICAgIHJlYWRvbmx5IGRldGFjaDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAgIC8qKiBFbWl0cyB3aGVuIHRoZXJlIGFyZSBrZXlib2FyZCBldmVudHMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgdGhlIG92ZXJsYXkuICovXG4gICAgcmVhZG9ubHkgb3ZlcmxheUtleWRvd246IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PjtcbiAgICAvKiogRW1pdHMgd2hlbiB0aGVyZSBhcmUgbW91c2Ugb3V0c2lkZSBjbGljayBldmVudHMgdGhhdCBhcmUgdGFyZ2V0ZWQgYXQgdGhlIG92ZXJsYXkuICovXG4gICAgcmVhZG9ubHkgb3ZlcmxheU91dHNpZGVDbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+O1xuICAgIGNvbnN0cnVjdG9yKF9vdmVybGF5OiBPdmVybGF5LCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgc2Nyb2xsU3RyYXRlZ3lGYWN0b3J5OiBhbnksIF9kaXI6IERpcmVjdGlvbmFsaXR5KTtcbiAgICAvKiogVGhlIGFzc29jaWF0ZWQgb3ZlcmxheSByZWZlcmVuY2UuICovXG4gICAgZ2V0IG92ZXJsYXlSZWYoKTogT3ZlcmxheVJlZjtcbiAgICAvKiogVGhlIGVsZW1lbnQncyBsYXlvdXQgZGlyZWN0aW9uLiAqL1xuICAgIGdldCBkaXIoKTogRGlyZWN0aW9uO1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQ7XG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQ7XG4gICAgLyoqIENyZWF0ZXMgYW4gb3ZlcmxheSAqL1xuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXk7XG4gICAgLyoqIEJ1aWxkcyB0aGUgb3ZlcmxheSBjb25maWcgYmFzZWQgb24gdGhlIGRpcmVjdGl2ZSdzIGlucHV0cyAqL1xuICAgIHByaXZhdGUgX2J1aWxkQ29uZmlnO1xuICAgIC8qKiBVcGRhdGVzIHRoZSBzdGF0ZSBvZiBhIHBvc2l0aW9uIHN0cmF0ZWd5LCBiYXNlZCBvbiB0aGUgdmFsdWVzIG9mIHRoZSBkaXJlY3RpdmUgaW5wdXRzLiAqL1xuICAgIHByaXZhdGUgX3VwZGF0ZVBvc2l0aW9uU3RyYXRlZ3k7XG4gICAgLyoqIFJldHVybnMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IG9mIHRoZSBvdmVybGF5IHRvIGJlIHNldCBvbiB0aGUgb3ZlcmxheSBjb25maWcgKi9cbiAgICBwcml2YXRlIF9jcmVhdGVQb3NpdGlvblN0cmF0ZWd5O1xuICAgIC8qKiBBdHRhY2hlcyB0aGUgb3ZlcmxheSBhbmQgc3Vic2NyaWJlcyB0byBiYWNrZHJvcCBjbGlja3MgaWYgYmFja2Ryb3AgZXhpc3RzICovXG4gICAgcHJpdmF0ZSBfYXR0YWNoT3ZlcmxheTtcbiAgICAvKiogRGV0YWNoZXMgdGhlIG92ZXJsYXkgYW5kIHVuc3Vic2NyaWJlcyB0byBiYWNrZHJvcCBjbGlja3MgaWYgYmFja2Ryb3AgZXhpc3RzICovXG4gICAgcHJpdmF0ZSBfZGV0YWNoT3ZlcmxheTtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGFzQmFja2Ryb3A6IEJvb2xlYW5JbnB1dDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfbG9ja1Bvc2l0aW9uOiBCb29sZWFuSW5wdXQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2ZsZXhpYmxlRGltZW5zaW9uczogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9ncm93QWZ0ZXJPcGVuOiBCb29sZWFuSW5wdXQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX3B1c2g6IEJvb2xlYW5JbnB1dDtcbn1cbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBDREtfQ09OTkVDVEVEX09WRVJMQVlfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSX0ZBQ1RPUlkob3ZlcmxheTogT3ZlcmxheSk6ICgpID0+IFJlcG9zaXRpb25TY3JvbGxTdHJhdGVneTtcbi8qKiBAZG9jcy1wcml2YXRlICovXG5leHBvcnQgZGVjbGFyZSBjb25zdCBDREtfQ09OTkVDVEVEX09WRVJMQVlfU0NST0xMX1NUUkFURUdZX1BST1ZJREVSOiB7XG4gICAgcHJvdmlkZTogSW5qZWN0aW9uVG9rZW48KCkgPT4gU2Nyb2xsU3RyYXRlZ3k+O1xuICAgIGRlcHM6ICh0eXBlb2YgT3ZlcmxheSlbXTtcbiAgICB1c2VGYWN0b3J5OiB0eXBlb2YgQ0RLX0NPTk5FQ1RFRF9PVkVSTEFZX1NDUk9MTF9TVFJBVEVHWV9QUk9WSURFUl9GQUNUT1JZO1xufTtcbiJdfQ==