import { OnInit, AfterViewChecked, OnDestroy, NgZone, ElementRef, EventEmitter, ChangeDetectorRef } from '@angular/core';
import { Directionality } from '@angular/cdk/bidi';
import { Observable } from 'rxjs';
import { ScrollViewport } from './scroll-viewport';
import { SmoothScrollElement, SmoothScrollManager, SmoothScrollToOptions } from 'ngx-scrollbar/smooth-scroll';
import { ScrollbarAppearance, ScrollbarTrack, ScrollbarPosition, ScrollbarVisibility, NgScrollbarState, ScrollbarPointerEventsMethod } from './ng-scrollbar.model';
import { ScrollbarManager } from './utils/scrollbar-manager';
import * as ɵngcc0 from '@angular/core';
export declare class NgScrollbar implements OnInit, AfterViewChecked, OnDestroy {
    private el;
    private zone;
    private changeDetectorRef;
    private dir;
    private smoothScroll;
    manager: ScrollbarManager;
    private _disabled;
    private _sensorDisabled;
    private _pointerEventsDisabled;
    private _viewportPropagateMouseMove;
    /** Disable custom scrollbar and switch back to native scrollbar */
    get disabled(): boolean;
    set disabled(disabled: boolean);
    /** Whether ResizeObserver is disabled */
    get sensorDisabled(): boolean;
    set sensorDisabled(disabled: boolean);
    /** A flag used to enable/disable the scrollbar thumb dragged event */
    get pointerEventsDisabled(): boolean;
    set pointerEventsDisabled(disabled: boolean);
    /** Enable viewport mousemove event propagation (only when pointerEventsMethod="viewport") */
    get viewportPropagateMouseMove(): boolean;
    set viewportPropagateMouseMove(disabled: boolean);
    /** A class forwarded to scrollable viewport element */
    viewClass: string | undefined;
    /** A class forwarded to the scrollbar track element */
    trackClass: string | undefined;
    /** A class forwarded to the scrollbar thumb element */
    thumbClass: string | undefined;
    /** Minimum scrollbar thumb size */
    minThumbSize: number | undefined;
    /** The duration which the scrolling takes to reach its target when scrollbar rail is clicked */
    trackClickScrollDuration: number | undefined;
    /**
     * Sets the pointer events method
     * Use viewport pointer events  to handle dragging and track click (This makes scrolling work when mouse is over the scrollbar)
     * Use scrollbar pointer events to handle dragging and track click
     */
    pointerEventsMethod: ScrollbarPointerEventsMethod;
    /**
     * Sets the supported scroll track of the viewport, there are 3 options:
     *
     * - `vertical` Use both vertical and horizontal scrollbar
     * - `horizontal` Use both vertical and horizontal scrollbar
     * - `all` Use both vertical and horizontal scrollbar
     */
    track: ScrollbarTrack;
    /**
     * When to show the scrollbar, and there are 3 options:
     *
     * - `native` (default) Scrollbar will be visible when viewport is scrollable like with native scrollbar
     * - `hover` Scrollbars are hidden by default, only visible on scrolling or hovering
     * - `always` Scrollbars are always shown even if the viewport is not scrollable
     */
    visibility: ScrollbarVisibility;
    /**
     *  Sets the appearance of the scrollbar, there are 2 options:
     *
     * - `standard` (default) scrollbar space will be reserved just like with native scrollbar.
     * - `compact` scrollbar doesn't reserve any space, they are placed over the viewport.
     */
    appearance: ScrollbarAppearance;
    /**
     * Sets the position of each scrollbar, there are 4 options:
     *
     * - `native` (Default) Use the default position like in native scrollbar.
     * - `invertY` Inverts vertical scrollbar position
     * - `invertX` Inverts Horizontal scrollbar position
     * - `invertAll` Inverts both scrollbar positions
     */
    position: ScrollbarPosition;
    /** Debounce interval for detecting changes via ResizeObserver */
    sensorDebounce: number | undefined;
    /** Scroll Audit Time */
    scrollAuditTime: number | undefined;
    /** Steam that emits when scrollbar is updated */
    updated: EventEmitter<void>;
    /** Default viewport reference */
    private defaultViewPort;
    /** Custom viewport reference */
    private customViewPort;
    /** Viewport Element */
    viewport: ScrollViewport;
    /** Set of attributes added on the scrollbar wrapper */
    state: NgScrollbarState;
    /** Stream that destroys components' observables */
    private readonly destroyed;
    /** Stream that emits on scroll event */
    scrolled: Observable<any>;
    /** Steam that emits scroll event for vertical scrollbar */
    verticalScrolled: Observable<any>;
    /** Steam that emits scroll event for horizontal scrollbar */
    horizontalScrolled: Observable<any>;
    get nativeElement(): HTMLElement;
    constructor(el: ElementRef, zone: NgZone, changeDetectorRef: ChangeDetectorRef, dir: Directionality, smoothScroll: SmoothScrollManager, manager: ScrollbarManager);
    /**
     * Update local state with each change detection
     */
    private updateState;
    private _updateState;
    private getScrolledByDirection;
    /**
     * Set hovered state if a scrollbar is being hovered
     */
    setHovered(hovered: ScrollbarHovered): void;
    /**
     * Set dragging state if a scrollbar is being dragged
     */
    setDragging(dragging: ScrollbarDragging): void;
    /**
     * Set clicked state if a scrollbar track is being click
     */
    setClicked(scrollbarClicked: boolean): void;
    ngOnInit(): void;
    ngAfterViewChecked(): void;
    ngOnDestroy(): void;
    /**
     * Update local state and the internal scrollbar controls
     */
    update(): void;
    /**
     * Smooth scroll functions
     */
    scrollTo(options: SmoothScrollToOptions): Promise<void>;
    /**
     * Scroll to element by reference or selector
     */
    scrollToElement(target: SmoothScrollElement, options?: any): Promise<void>;
    static ɵfac: ɵngcc0.ɵɵFactoryDef<NgScrollbar>;
    static ɵcmp: ɵngcc0.ɵɵComponentDefWithMeta<NgScrollbar, "ng-scrollbar", ["ngScrollbar"], {
    "viewClass": "viewClass";
    "trackClass": "trackClass";
    "thumbClass": "thumbClass";
    "minThumbSize": "minThumbSize";
    "trackClickScrollDuration": "trackClickScrollDuration";
    "pointerEventsMethod": "pointerEventsMethod";
    "track": "track";
    "visibility": "visibility";
    "appearance": "appearance";
    "position": "position";
    "sensorDebounce": "sensorDebounce";
    "scrollAuditTime": "scrollAuditTime";
    "disabled": "disabled";
    "sensorDisabled": "sensorDisabled";
    "pointerEventsDisabled": "pointerEventsDisabled";
    "viewportPropagateMouseMove": "viewportPropagateMouseMove";
}, {
    "updated": "updated";
}, ["customViewPort"]>;
}
interface ScrollbarDragging {
    verticalDragging?: boolean;
    horizontalDragging?: boolean;
}
interface ScrollbarHovered {
    verticalHovered?: boolean;
    horizontalHovered?: boolean;
}
export {};

//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctc2Nyb2xsYmFyLmQudHMiLCJzb3VyY2VzIjpbIm5nLXNjcm9sbGJhci5kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdJQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9uSW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95LCBOZ1pvbmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU2Nyb2xsVmlld3BvcnQgfSBmcm9tICcuL3Njcm9sbC12aWV3cG9ydCc7XG5pbXBvcnQgeyBTbW9vdGhTY3JvbGxFbGVtZW50LCBTbW9vdGhTY3JvbGxNYW5hZ2VyLCBTbW9vdGhTY3JvbGxUb09wdGlvbnMgfSBmcm9tICduZ3gtc2Nyb2xsYmFyL3Ntb290aC1zY3JvbGwnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyQXBwZWFyYW5jZSwgU2Nyb2xsYmFyVHJhY2ssIFNjcm9sbGJhclBvc2l0aW9uLCBTY3JvbGxiYXJWaXNpYmlsaXR5LCBOZ1Njcm9sbGJhclN0YXRlLCBTY3JvbGxiYXJQb2ludGVyRXZlbnRzTWV0aG9kIH0gZnJvbSAnLi9uZy1zY3JvbGxiYXIubW9kZWwnO1xuaW1wb3J0IHsgU2Nyb2xsYmFyTWFuYWdlciB9IGZyb20gJy4vdXRpbHMvc2Nyb2xsYmFyLW1hbmFnZXInO1xuZXhwb3J0IGRlY2xhcmUgY2xhc3MgTmdTY3JvbGxiYXIgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBlbDtcbiAgICBwcml2YXRlIHpvbmU7XG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjtcbiAgICBwcml2YXRlIGRpcjtcbiAgICBwcml2YXRlIHNtb290aFNjcm9sbDtcbiAgICBtYW5hZ2VyOiBTY3JvbGxiYXJNYW5hZ2VyO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkO1xuICAgIHByaXZhdGUgX3NlbnNvckRpc2FibGVkO1xuICAgIHByaXZhdGUgX3BvaW50ZXJFdmVudHNEaXNhYmxlZDtcbiAgICBwcml2YXRlIF92aWV3cG9ydFByb3BhZ2F0ZU1vdXNlTW92ZTtcbiAgICAvKiogRGlzYWJsZSBjdXN0b20gc2Nyb2xsYmFyIGFuZCBzd2l0Y2ggYmFjayB0byBuYXRpdmUgc2Nyb2xsYmFyICovXG4gICAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW47XG4gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKTtcbiAgICAvKiogV2hldGhlciBSZXNpemVPYnNlcnZlciBpcyBkaXNhYmxlZCAqL1xuICAgIGdldCBzZW5zb3JEaXNhYmxlZCgpOiBib29sZWFuO1xuICAgIHNldCBzZW5zb3JEaXNhYmxlZChkaXNhYmxlZDogYm9vbGVhbik7XG4gICAgLyoqIEEgZmxhZyB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBzY3JvbGxiYXIgdGh1bWIgZHJhZ2dlZCBldmVudCAqL1xuICAgIGdldCBwb2ludGVyRXZlbnRzRGlzYWJsZWQoKTogYm9vbGVhbjtcbiAgICBzZXQgcG9pbnRlckV2ZW50c0Rpc2FibGVkKGRpc2FibGVkOiBib29sZWFuKTtcbiAgICAvKiogRW5hYmxlIHZpZXdwb3J0IG1vdXNlbW92ZSBldmVudCBwcm9wYWdhdGlvbiAob25seSB3aGVuIHBvaW50ZXJFdmVudHNNZXRob2Q9XCJ2aWV3cG9ydFwiKSAqL1xuICAgIGdldCB2aWV3cG9ydFByb3BhZ2F0ZU1vdXNlTW92ZSgpOiBib29sZWFuO1xuICAgIHNldCB2aWV3cG9ydFByb3BhZ2F0ZU1vdXNlTW92ZShkaXNhYmxlZDogYm9vbGVhbik7XG4gICAgLyoqIEEgY2xhc3MgZm9yd2FyZGVkIHRvIHNjcm9sbGFibGUgdmlld3BvcnQgZWxlbWVudCAqL1xuICAgIHZpZXdDbGFzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBBIGNsYXNzIGZvcndhcmRlZCB0byB0aGUgc2Nyb2xsYmFyIHRyYWNrIGVsZW1lbnQgKi9cbiAgICB0cmFja0NsYXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgLyoqIEEgY2xhc3MgZm9yd2FyZGVkIHRvIHRoZSBzY3JvbGxiYXIgdGh1bWIgZWxlbWVudCAqL1xuICAgIHRodW1iQ2xhc3M6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAvKiogTWluaW11bSBzY3JvbGxiYXIgdGh1bWIgc2l6ZSAqL1xuICAgIG1pblRodW1iU2l6ZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKiBUaGUgZHVyYXRpb24gd2hpY2ggdGhlIHNjcm9sbGluZyB0YWtlcyB0byByZWFjaCBpdHMgdGFyZ2V0IHdoZW4gc2Nyb2xsYmFyIHJhaWwgaXMgY2xpY2tlZCAqL1xuICAgIHRyYWNrQ2xpY2tTY3JvbGxEdXJhdGlvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBvaW50ZXIgZXZlbnRzIG1ldGhvZFxuICAgICAqIFVzZSB2aWV3cG9ydCBwb2ludGVyIGV2ZW50cyAgdG8gaGFuZGxlIGRyYWdnaW5nIGFuZCB0cmFjayBjbGljayAoVGhpcyBtYWtlcyBzY3JvbGxpbmcgd29yayB3aGVuIG1vdXNlIGlzIG92ZXIgdGhlIHNjcm9sbGJhcilcbiAgICAgKiBVc2Ugc2Nyb2xsYmFyIHBvaW50ZXIgZXZlbnRzIHRvIGhhbmRsZSBkcmFnZ2luZyBhbmQgdHJhY2sgY2xpY2tcbiAgICAgKi9cbiAgICBwb2ludGVyRXZlbnRzTWV0aG9kOiBTY3JvbGxiYXJQb2ludGVyRXZlbnRzTWV0aG9kO1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN1cHBvcnRlZCBzY3JvbGwgdHJhY2sgb2YgdGhlIHZpZXdwb3J0LCB0aGVyZSBhcmUgMyBvcHRpb25zOlxuICAgICAqXG4gICAgICogLSBgdmVydGljYWxgIFVzZSBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjcm9sbGJhclxuICAgICAqIC0gYGhvcml6b250YWxgIFVzZSBib3RoIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNjcm9sbGJhclxuICAgICAqIC0gYGFsbGAgVXNlIGJvdGggdmVydGljYWwgYW5kIGhvcml6b250YWwgc2Nyb2xsYmFyXG4gICAgICovXG4gICAgdHJhY2s6IFNjcm9sbGJhclRyYWNrO1xuICAgIC8qKlxuICAgICAqIFdoZW4gdG8gc2hvdyB0aGUgc2Nyb2xsYmFyLCBhbmQgdGhlcmUgYXJlIDMgb3B0aW9uczpcbiAgICAgKlxuICAgICAqIC0gYG5hdGl2ZWAgKGRlZmF1bHQpIFNjcm9sbGJhciB3aWxsIGJlIHZpc2libGUgd2hlbiB2aWV3cG9ydCBpcyBzY3JvbGxhYmxlIGxpa2Ugd2l0aCBuYXRpdmUgc2Nyb2xsYmFyXG4gICAgICogLSBgaG92ZXJgIFNjcm9sbGJhcnMgYXJlIGhpZGRlbiBieSBkZWZhdWx0LCBvbmx5IHZpc2libGUgb24gc2Nyb2xsaW5nIG9yIGhvdmVyaW5nXG4gICAgICogLSBgYWx3YXlzYCBTY3JvbGxiYXJzIGFyZSBhbHdheXMgc2hvd24gZXZlbiBpZiB0aGUgdmlld3BvcnQgaXMgbm90IHNjcm9sbGFibGVcbiAgICAgKi9cbiAgICB2aXNpYmlsaXR5OiBTY3JvbGxiYXJWaXNpYmlsaXR5O1xuICAgIC8qKlxuICAgICAqICBTZXRzIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBzY3JvbGxiYXIsIHRoZXJlIGFyZSAyIG9wdGlvbnM6XG4gICAgICpcbiAgICAgKiAtIGBzdGFuZGFyZGAgKGRlZmF1bHQpIHNjcm9sbGJhciBzcGFjZSB3aWxsIGJlIHJlc2VydmVkIGp1c3QgbGlrZSB3aXRoIG5hdGl2ZSBzY3JvbGxiYXIuXG4gICAgICogLSBgY29tcGFjdGAgc2Nyb2xsYmFyIGRvZXNuJ3QgcmVzZXJ2ZSBhbnkgc3BhY2UsIHRoZXkgYXJlIHBsYWNlZCBvdmVyIHRoZSB2aWV3cG9ydC5cbiAgICAgKi9cbiAgICBhcHBlYXJhbmNlOiBTY3JvbGxiYXJBcHBlYXJhbmNlO1xuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIG9mIGVhY2ggc2Nyb2xsYmFyLCB0aGVyZSBhcmUgNCBvcHRpb25zOlxuICAgICAqXG4gICAgICogLSBgbmF0aXZlYCAoRGVmYXVsdCkgVXNlIHRoZSBkZWZhdWx0IHBvc2l0aW9uIGxpa2UgaW4gbmF0aXZlIHNjcm9sbGJhci5cbiAgICAgKiAtIGBpbnZlcnRZYCBJbnZlcnRzIHZlcnRpY2FsIHNjcm9sbGJhciBwb3NpdGlvblxuICAgICAqIC0gYGludmVydFhgIEludmVydHMgSG9yaXpvbnRhbCBzY3JvbGxiYXIgcG9zaXRpb25cbiAgICAgKiAtIGBpbnZlcnRBbGxgIEludmVydHMgYm90aCBzY3JvbGxiYXIgcG9zaXRpb25zXG4gICAgICovXG4gICAgcG9zaXRpb246IFNjcm9sbGJhclBvc2l0aW9uO1xuICAgIC8qKiBEZWJvdW5jZSBpbnRlcnZhbCBmb3IgZGV0ZWN0aW5nIGNoYW5nZXMgdmlhIFJlc2l6ZU9ic2VydmVyICovXG4gICAgc2Vuc29yRGVib3VuY2U6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKiogU2Nyb2xsIEF1ZGl0IFRpbWUgKi9cbiAgICBzY3JvbGxBdWRpdFRpbWU6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAvKiogU3RlYW0gdGhhdCBlbWl0cyB3aGVuIHNjcm9sbGJhciBpcyB1cGRhdGVkICovXG4gICAgdXBkYXRlZDogRXZlbnRFbWl0dGVyPHZvaWQ+O1xuICAgIC8qKiBEZWZhdWx0IHZpZXdwb3J0IHJlZmVyZW5jZSAqL1xuICAgIHByaXZhdGUgZGVmYXVsdFZpZXdQb3J0O1xuICAgIC8qKiBDdXN0b20gdmlld3BvcnQgcmVmZXJlbmNlICovXG4gICAgcHJpdmF0ZSBjdXN0b21WaWV3UG9ydDtcbiAgICAvKiogVmlld3BvcnQgRWxlbWVudCAqL1xuICAgIHZpZXdwb3J0OiBTY3JvbGxWaWV3cG9ydDtcbiAgICAvKiogU2V0IG9mIGF0dHJpYnV0ZXMgYWRkZWQgb24gdGhlIHNjcm9sbGJhciB3cmFwcGVyICovXG4gICAgc3RhdGU6IE5nU2Nyb2xsYmFyU3RhdGU7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGRlc3Ryb3lzIGNvbXBvbmVudHMnIG9ic2VydmFibGVzICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95ZWQ7XG4gICAgLyoqIFN0cmVhbSB0aGF0IGVtaXRzIG9uIHNjcm9sbCBldmVudCAqL1xuICAgIHNjcm9sbGVkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgLyoqIFN0ZWFtIHRoYXQgZW1pdHMgc2Nyb2xsIGV2ZW50IGZvciB2ZXJ0aWNhbCBzY3JvbGxiYXIgKi9cbiAgICB2ZXJ0aWNhbFNjcm9sbGVkOiBPYnNlcnZhYmxlPGFueT47XG4gICAgLyoqIFN0ZWFtIHRoYXQgZW1pdHMgc2Nyb2xsIGV2ZW50IGZvciBob3Jpem9udGFsIHNjcm9sbGJhciAqL1xuICAgIGhvcml6b250YWxTY3JvbGxlZDogT2JzZXJ2YWJsZTxhbnk+O1xuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50O1xuICAgIGNvbnN0cnVjdG9yKGVsOiBFbGVtZW50UmVmLCB6b25lOiBOZ1pvbmUsIGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZiwgZGlyOiBEaXJlY3Rpb25hbGl0eSwgc21vb3RoU2Nyb2xsOiBTbW9vdGhTY3JvbGxNYW5hZ2VyLCBtYW5hZ2VyOiBTY3JvbGxiYXJNYW5hZ2VyKTtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgbG9jYWwgc3RhdGUgd2l0aCBlYWNoIGNoYW5nZSBkZXRlY3Rpb25cbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVN0YXRlO1xuICAgIHByaXZhdGUgX3VwZGF0ZVN0YXRlO1xuICAgIHByaXZhdGUgZ2V0U2Nyb2xsZWRCeURpcmVjdGlvbjtcbiAgICAvKipcbiAgICAgKiBTZXQgaG92ZXJlZCBzdGF0ZSBpZiBhIHNjcm9sbGJhciBpcyBiZWluZyBob3ZlcmVkXG4gICAgICovXG4gICAgc2V0SG92ZXJlZChob3ZlcmVkOiBTY3JvbGxiYXJIb3ZlcmVkKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBTZXQgZHJhZ2dpbmcgc3RhdGUgaWYgYSBzY3JvbGxiYXIgaXMgYmVpbmcgZHJhZ2dlZFxuICAgICAqL1xuICAgIHNldERyYWdnaW5nKGRyYWdnaW5nOiBTY3JvbGxiYXJEcmFnZ2luZyk6IHZvaWQ7XG4gICAgLyoqXG4gICAgICogU2V0IGNsaWNrZWQgc3RhdGUgaWYgYSBzY3JvbGxiYXIgdHJhY2sgaXMgYmVpbmcgY2xpY2tcbiAgICAgKi9cbiAgICBzZXRDbGlja2VkKHNjcm9sbGJhckNsaWNrZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICAgIG5nT25Jbml0KCk6IHZvaWQ7XG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQ7XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBVcGRhdGUgbG9jYWwgc3RhdGUgYW5kIHRoZSBpbnRlcm5hbCBzY3JvbGxiYXIgY29udHJvbHNcbiAgICAgKi9cbiAgICB1cGRhdGUoKTogdm9pZDtcbiAgICAvKipcbiAgICAgKiBTbW9vdGggc2Nyb2xsIGZ1bmN0aW9uc1xuICAgICAqL1xuICAgIHNjcm9sbFRvKG9wdGlvbnM6IFNtb290aFNjcm9sbFRvT3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqXG4gICAgICogU2Nyb2xsIHRvIGVsZW1lbnQgYnkgcmVmZXJlbmNlIG9yIHNlbGVjdG9yXG4gICAgICovXG4gICAgc2Nyb2xsVG9FbGVtZW50KHRhcmdldDogU21vb3RoU2Nyb2xsRWxlbWVudCwgb3B0aW9ucz86IGFueSk6IFByb21pc2U8dm9pZD47XG59XG5pbnRlcmZhY2UgU2Nyb2xsYmFyRHJhZ2dpbmcge1xuICAgIHZlcnRpY2FsRHJhZ2dpbmc/OiBib29sZWFuO1xuICAgIGhvcml6b250YWxEcmFnZ2luZz86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgU2Nyb2xsYmFySG92ZXJlZCB7XG4gICAgdmVydGljYWxIb3ZlcmVkPzogYm9vbGVhbjtcbiAgICBob3Jpem9udGFsSG92ZXJlZD86IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iXX0=