You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by sc...@apache.org on 2018/04/30 21:02:59 UTC

[03/51] [partial] nifi-fds git commit: gh-pages update

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/d07dd0f2/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js b/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js
index 122dcc3..9c601f6 100644
--- a/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js
+++ b/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js
@@ -1,15 +1,20 @@
 /**
  * @license
- * Copyright Google Inc. All Rights Reserved.
+ * 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
  */
 (function (global, factory) {
-	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/cdk/platform'), require('rxjs/Subject'), require('rxjs/Subscription'), require('rxjs/observable/fromEvent'), require('rxjs/operator/auditTime'), require('rxjs/observable/merge'), require('rxjs/observable/of')) :
-	typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/cdk/platform', 'rxjs/Subject', 'rxjs/Subscription', 'rxjs/observable/fromEvent', 'rxjs/operator/auditTime', 'rxjs/observable/merge', 'rxjs/observable/of'], factory) :
-	(factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.scrolling = global.ng.cdk.scrolling || {}),global.ng.core,global.ng.cdk.platform,global.Rx,global.Rx,global.Rx.Observable,global.Rx.Observable.prototype,global.Rx.Observable,global.Rx.Observable));
-}(this, (function (exports,_angular_core,_angular_cdk_platform,rxjs_Subject,rxjs_Subscription,rxjs_observable_fromEvent,rxjs_operator_auditTime,rxjs_observable_merge,rxjs_observable_of) { 'use strict';
+	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/cdk/platform'), require('rxjs/Subject'), require('rxjs/Observable'), require('rxjs/observable/of'), require('rxjs/observable/fromEvent'), require('rxjs/operators/auditTime'), require('rxjs/operators/filter'), require('rxjs/observable/merge')) :
+	typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/cdk/platform', 'rxjs/Subject', 'rxjs/Observable', 'rxjs/observable/of', 'rxjs/observable/fromEvent', 'rxjs/operators/auditTime', 'rxjs/operators/filter', 'rxjs/observable/merge'], factory) :
+	(factory((global.ng = global.ng || {}, global.ng.cdk = global.ng.cdk || {}, global.ng.cdk.scrolling = global.ng.cdk.scrolling || {}),global.ng.core,global.ng.cdk.platform,global.Rx,global.Rx,global.Rx.Observable,global.Rx.Observable,global.Rx.operators,global.Rx.operators,global.Rx.Observable));
+}(this, (function (exports,_angular_core,_angular_cdk_platform,rxjs_Subject,rxjs_Observable,rxjs_observable_of,rxjs_observable_fromEvent,rxjs_operators_auditTime,rxjs_operators_filter,rxjs_observable_merge) { 'use strict';
+
+/**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
 
 /**
  * Time in ms to throttle the scrolling events by default.
@@ -19,11 +24,7 @@ var DEFAULT_SCROLL_TIME = 20;
  * Service contained all registered Scrollable references and emits an event when any one of the
  * Scrollable references emit a scrolled event.
  */
-var ScrollDispatcher = (function () {
-    /**
-     * @param {?} _ngZone
-     * @param {?} _platform
-     */
+var ScrollDispatcher = /** @class */ (function () {
     function ScrollDispatcher(_ngZone, _platform) {
         this._ngZone = _ngZone;
         this._platform = _platform;
@@ -43,79 +44,161 @@ var ScrollDispatcher = (function () {
          * Map of all the scrollable references that are registered with the service and their
          * scroll event subscriptions.
          */
-        this.scrollableReferences = new Map();
+        this.scrollContainers = new Map();
     }
     /**
-     * Registers a Scrollable with the service and listens for its scrolled events. When the
-     * scrollable is scrolled, the service emits the event in its scrolled observable.
+     * Registers a scrollable instance with the service and listens for its scrolled events. When the
+     * scrollable is scrolled, the service emits the event to its scrolled observable.
+     * @param scrollable Scrollable instance to be registered.
+     */
+    /**
+     * Registers a scrollable instance with the service and listens for its scrolled events. When the
+     * scrollable is scrolled, the service emits the event to its scrolled observable.
+     * @param {?} scrollable Scrollable instance to be registered.
+     * @return {?}
+     */
+    ScrollDispatcher.prototype.register = /**
+     * Registers a scrollable instance with the service and listens for its scrolled events. When the
+     * scrollable is scrolled, the service emits the event to its scrolled observable.
      * @param {?} scrollable Scrollable instance to be registered.
      * @return {?}
      */
-    ScrollDispatcher.prototype.register = function (scrollable) {
+    function (scrollable) {
         var _this = this;
-        var /** @type {?} */ scrollSubscription = scrollable.elementScrolled().subscribe(function () { return _this._notify(); });
-        this.scrollableReferences.set(scrollable, scrollSubscription);
+        var /** @type {?} */ scrollSubscription = scrollable.elementScrolled()
+            .subscribe(function () { return _this._scrolled.next(scrollable); });
+        this.scrollContainers.set(scrollable, scrollSubscription);
     };
     /**
      * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.
+     * @param scrollable Scrollable instance to be deregistered.
+     */
+    /**
+     * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.
+     * @param {?} scrollable Scrollable instance to be deregistered.
+     * @return {?}
+     */
+    ScrollDispatcher.prototype.deregister = /**
+     * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.
      * @param {?} scrollable Scrollable instance to be deregistered.
      * @return {?}
      */
-    ScrollDispatcher.prototype.deregister = function (scrollable) {
-        var /** @type {?} */ scrollableReference = this.scrollableReferences.get(scrollable);
+    function (scrollable) {
+        var /** @type {?} */ scrollableReference = this.scrollContainers.get(scrollable);
         if (scrollableReference) {
             scrollableReference.unsubscribe();
-            this.scrollableReferences.delete(scrollable);
+            this.scrollContainers.delete(scrollable);
         }
     };
     /**
-     * Subscribes to an observable that emits an event whenever any of the registered Scrollable
+     * Returns an observable that emits an event whenever any of the registered Scrollable
+     * references (or window, document, or body) fire a scrolled event. Can provide a time in ms
+     * to override the default "throttle" time.
+     *
+     * **Note:** in order to avoid hitting change detection for every scroll event,
+     * all of the events emitted from this stream will be run outside the Angular zone.
+     * If you need to update any data bindings as a result of a scroll event, you have
+     * to run the callback using `NgZone.run`.
+     */
+    /**
+     * Returns an observable that emits an event whenever any of the registered Scrollable
+     * references (or window, document, or body) fire a scrolled event. Can provide a time in ms
+     * to override the default "throttle" time.
+     *
+     * **Note:** in order to avoid hitting change detection for every scroll event,
+     * all of the events emitted from this stream will be run outside the Angular zone.
+     * If you need to update any data bindings as a result of a scroll event, you have
+     * to run the callback using `NgZone.run`.
+     * @param {?=} auditTimeInMs
+     * @return {?}
+     */
+    ScrollDispatcher.prototype.scrolled = /**
+     * Returns an observable that emits an event whenever any of the registered Scrollable
      * references (or window, document, or body) fire a scrolled event. Can provide a time in ms
      * to override the default "throttle" time.
+     *
+     * **Note:** in order to avoid hitting change detection for every scroll event,
+     * all of the events emitted from this stream will be run outside the Angular zone.
+     * If you need to update any data bindings as a result of a scroll event, you have
+     * to run the callback using `NgZone.run`.
      * @param {?=} auditTimeInMs
-     * @param {?=} callback
      * @return {?}
      */
-    ScrollDispatcher.prototype.scrolled = function (auditTimeInMs, callback) {
+    function (auditTimeInMs) {
         var _this = this;
         if (auditTimeInMs === void 0) { auditTimeInMs = DEFAULT_SCROLL_TIME; }
-        // Scroll events can only happen on the browser, so do nothing if we're not on the browser.
-        if (!this._platform.isBrowser) {
-            return rxjs_Subscription.Subscription.EMPTY;
-        }
-        // In the case of a 0ms delay, use an observable without auditTime
-        // since it does add a perceptible delay in processing overhead.
-        var /** @type {?} */ observable = auditTimeInMs > 0 ?
-            rxjs_operator_auditTime.auditTime.call(this._scrolled.asObservable(), auditTimeInMs) :
-            this._scrolled.asObservable();
-        this._scrolledCount++;
-        if (!this._globalSubscription) {
-            this._globalSubscription = this._ngZone.runOutsideAngular(function () {
-                return rxjs_observable_fromEvent.fromEvent(window.document, 'scroll').subscribe(function () { return _this._notify(); });
-            });
-        }
-        // Note that we need to do the subscribing from here, in order to be able to remove
-        // the global event listeners once there are no more subscriptions.
-        var /** @type {?} */ subscription = observable.subscribe(callback);
-        subscription.add(function () {
-            _this._scrolledCount--;
-            if (_this._globalSubscription && !_this.scrollableReferences.size && !_this._scrolledCount) {
-                _this._globalSubscription.unsubscribe();
-                _this._globalSubscription = null;
+        return this._platform.isBrowser ? rxjs_Observable.Observable.create(function (observer) {
+            if (!_this._globalSubscription) {
+                _this._addGlobalListener();
             }
-        });
-        return subscription;
+            // In the case of a 0ms delay, use an observable without auditTime
+            // since it does add a perceptible delay in processing overhead.
+            var /** @type {?} */ subscription = auditTimeInMs > 0 ?
+                _this._scrolled.pipe(rxjs_operators_auditTime.auditTime(auditTimeInMs)).subscribe(observer) :
+                _this._scrolled.subscribe(observer);
+            _this._scrolledCount++;
+            return function () {
+                subscription.unsubscribe();
+                _this._scrolledCount--;
+                if (!_this._scrolledCount) {
+                    _this._removeGlobalListener();
+                }
+            };
+        }) : rxjs_observable_of.of();
     };
     /**
+     * @return {?}
+     */
+    ScrollDispatcher.prototype.ngOnDestroy = /**
+     * @return {?}
+     */
+    function () {
+        var _this = this;
+        this._removeGlobalListener();
+        this.scrollContainers.forEach(function (_, container) { return _this.deregister(container); });
+    };
+    /**
+     * Returns an observable that emits whenever any of the
+     * scrollable ancestors of an element are scrolled.
+     * @param elementRef Element whose ancestors to listen for.
+     * @param auditTimeInMs Time to throttle the scroll events.
+     */
+    /**
+     * Returns an observable that emits whenever any of the
+     * scrollable ancestors of an element are scrolled.
+     * @param {?} elementRef Element whose ancestors to listen for.
+     * @param {?=} auditTimeInMs Time to throttle the scroll events.
+     * @return {?}
+     */
+    ScrollDispatcher.prototype.ancestorScrolled = /**
+     * Returns an observable that emits whenever any of the
+     * scrollable ancestors of an element are scrolled.
+     * @param {?} elementRef Element whose ancestors to listen for.
+     * @param {?=} auditTimeInMs Time to throttle the scroll events.
+     * @return {?}
+     */
+    function (elementRef, auditTimeInMs) {
+        var /** @type {?} */ ancestors = this.getAncestorScrollContainers(elementRef);
+        return this.scrolled(auditTimeInMs).pipe(rxjs_operators_filter.filter(function (target) {
+            return !target || ancestors.indexOf(target) > -1;
+        }));
+    };
+    /** Returns all registered Scrollables that contain the provided element. */
+    /**
      * Returns all registered Scrollables that contain the provided element.
      * @param {?} elementRef
      * @return {?}
      */
-    ScrollDispatcher.prototype.getScrollContainers = function (elementRef) {
+    ScrollDispatcher.prototype.getAncestorScrollContainers = /**
+     * Returns all registered Scrollables that contain the provided element.
+     * @param {?} elementRef
+     * @return {?}
+     */
+    function (elementRef) {
         var _this = this;
         var /** @type {?} */ scrollingContainers = [];
-        this.scrollableReferences.forEach(function (_subscription, scrollable) {
-            if (_this.scrollableContainsElement(scrollable, elementRef)) {
+        this.scrollContainers.forEach(function (_subscription, scrollable) {
+            if (_this._scrollableContainsElement(scrollable, elementRef)) {
                 scrollingContainers.push(scrollable);
             }
         });
@@ -127,7 +210,13 @@ var ScrollDispatcher = (function () {
      * @param {?} elementRef
      * @return {?}
      */
-    ScrollDispatcher.prototype.scrollableContainsElement = function (scrollable, elementRef) {
+    ScrollDispatcher.prototype._scrollableContainsElement = /**
+     * Returns true if the element is contained within the provided Scrollable.
+     * @param {?} scrollable
+     * @param {?} elementRef
+     * @return {?}
+     */
+    function (scrollable, elementRef) {
         var /** @type {?} */ element = elementRef.nativeElement;
         var /** @type {?} */ scrollableElement = scrollable.getElementRef().nativeElement;
         // Traverse through the element parents until we reach null, checking if any of the elements
@@ -140,18 +229,37 @@ var ScrollDispatcher = (function () {
         return false;
     };
     /**
-     * Sends a notification that a scroll event has been fired.
+     * Sets up the global scroll listeners.
+     * @return {?}
+     */
+    ScrollDispatcher.prototype._addGlobalListener = /**
+     * Sets up the global scroll listeners.
+     * @return {?}
+     */
+    function () {
+        var _this = this;
+        this._globalSubscription = this._ngZone.runOutsideAngular(function () {
+            return rxjs_observable_fromEvent.fromEvent(window.document, 'scroll').subscribe(function () { return _this._scrolled.next(); });
+        });
+    };
+    /**
+     * Cleans up the global scroll listener.
+     * @return {?}
+     */
+    ScrollDispatcher.prototype._removeGlobalListener = /**
+     * Cleans up the global scroll listener.
      * @return {?}
      */
-    ScrollDispatcher.prototype._notify = function () {
-        this._scrolled.next();
+    function () {
+        if (this._globalSubscription) {
+            this._globalSubscription.unsubscribe();
+            this._globalSubscription = null;
+        }
     };
     ScrollDispatcher.decorators = [
         { type: _angular_core.Injectable },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     ScrollDispatcher.ctorParameters = function () { return [
         { type: _angular_core.NgZone, },
         { type: _angular_cdk_platform.Platform, },
@@ -179,77 +287,92 @@ var SCROLL_DISPATCHER_PROVIDER = {
 };
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
  * Sends an event when the directive's element is scrolled. Registers itself with the
  * ScrollDispatcher service to include itself as part of its collection of scrolling events that it
  * can be listened to through the service.
  */
-var Scrollable = (function () {
-    /**
-     * @param {?} _elementRef
-     * @param {?} _scroll
-     * @param {?} _ngZone
-     * @param {?} _renderer
-     */
-    function Scrollable(_elementRef, _scroll, _ngZone, _renderer) {
+var CdkScrollable = /** @class */ (function () {
+    function CdkScrollable(_elementRef, _scroll, _ngZone) {
+        var _this = this;
         this._elementRef = _elementRef;
         this._scroll = _scroll;
         this._ngZone = _ngZone;
-        this._renderer = _renderer;
         this._elementScrolled = new rxjs_Subject.Subject();
+        this._scrollListener = function (event) { return _this._elementScrolled.next(event); };
     }
     /**
      * @return {?}
      */
-    Scrollable.prototype.ngOnInit = function () {
+    CdkScrollable.prototype.ngOnInit = /**
+     * @return {?}
+     */
+    function () {
         var _this = this;
-        this._scrollListener = this._ngZone.runOutsideAngular(function () {
-            return _this._renderer.listen(_this.getElementRef().nativeElement, 'scroll', function (event) {
-                _this._elementScrolled.next(event);
-            });
+        this._ngZone.runOutsideAngular(function () {
+            _this.getElementRef().nativeElement.addEventListener('scroll', _this._scrollListener);
         });
         this._scroll.register(this);
     };
     /**
      * @return {?}
      */
-    Scrollable.prototype.ngOnDestroy = function () {
+    CdkScrollable.prototype.ngOnDestroy = /**
+     * @return {?}
+     */
+    function () {
         this._scroll.deregister(this);
         if (this._scrollListener) {
-            this._scrollListener();
-            this._scrollListener = null;
+            this.getElementRef().nativeElement.removeEventListener('scroll', this._scrollListener);
         }
     };
     /**
      * Returns observable that emits when a scroll event is fired on the host element.
+     */
+    /**
+     * Returns observable that emits when a scroll event is fired on the host element.
+     * @return {?}
+     */
+    CdkScrollable.prototype.elementScrolled = /**
+     * Returns observable that emits when a scroll event is fired on the host element.
      * @return {?}
      */
-    Scrollable.prototype.elementScrolled = function () {
+    function () {
         return this._elementScrolled.asObservable();
     };
     /**
      * @return {?}
      */
-    Scrollable.prototype.getElementRef = function () {
+    CdkScrollable.prototype.getElementRef = /**
+     * @return {?}
+     */
+    function () {
         return this._elementRef;
     };
-    Scrollable.decorators = [
+    CdkScrollable.decorators = [
         { type: _angular_core.Directive, args: [{
                     selector: '[cdk-scrollable], [cdkScrollable]'
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
-    Scrollable.ctorParameters = function () { return [
+    /** @nocollapse */
+    CdkScrollable.ctorParameters = function () { return [
         { type: _angular_core.ElementRef, },
         { type: ScrollDispatcher, },
         { type: _angular_core.NgZone, },
-        { type: _angular_core.Renderer2, },
     ]; };
-    return Scrollable;
+    return CdkScrollable;
 }());
 
 /**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+/**
  * Time in ms to throttle the resize events by default.
  */
 var DEFAULT_RESIZE_TIME = 20;
@@ -257,41 +380,48 @@ var DEFAULT_RESIZE_TIME = 20;
  * Simple utility for getting the bounds of the browser viewport.
  * \@docs-private
  */
-var ViewportRuler = (function () {
-    /**
-     * @param {?} platform
-     * @param {?} ngZone
-     * @param {?} scrollDispatcher
-     */
-    function ViewportRuler(platform, ngZone, scrollDispatcher) {
+var ViewportRuler = /** @class */ (function () {
+    function ViewportRuler(platform, ngZone) {
         var _this = this;
         this._change = platform.isBrowser ? ngZone.runOutsideAngular(function () {
             return rxjs_observable_merge.merge(rxjs_observable_fromEvent.fromEvent(window, 'resize'), rxjs_observable_fromEvent.fromEvent(window, 'orientationchange'));
         }) : rxjs_observable_of.of();
-        // Subscribe to scroll and resize events and update the document rectangle on changes.
-        this._invalidateCacheSubscriptions = [
-            scrollDispatcher.scrolled(0, function () { return _this._cacheViewportGeometry(); }),
-            this.change().subscribe(function () { return _this._cacheViewportGeometry(); })
-        ];
+        this._invalidateCache = this.change().subscribe(function () { return _this._updateViewportSize(); });
     }
     /**
      * @return {?}
      */
-    ViewportRuler.prototype.ngOnDestroy = function () {
-        this._invalidateCacheSubscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });
+    ViewportRuler.prototype.ngOnDestroy = /**
+     * @return {?}
+     */
+    function () {
+        this._invalidateCache.unsubscribe();
     };
+    /** Returns the viewport's width and height. */
     /**
-     * Gets a ClientRect for the viewport's bounds.
-     * @param {?=} documentRect
+     * Returns the viewport's width and height.
      * @return {?}
      */
-    ViewportRuler.prototype.getViewportRect = function (documentRect) {
-        if (documentRect === void 0) { documentRect = this._documentRect; }
-        // Cache the document bounding rect so that we don't recompute it for multiple calls.
-        if (!documentRect) {
-            this._cacheViewportGeometry();
-            documentRect = this._documentRect;
+    ViewportRuler.prototype.getViewportSize = /**
+     * Returns the viewport's width and height.
+     * @return {?}
+     */
+    function () {
+        if (!this._viewportSize) {
+            this._updateViewportSize();
         }
+        return { width: this._viewportSize.width, height: this._viewportSize.height };
+    };
+    /** Gets a ClientRect for the viewport's bounds. */
+    /**
+     * Gets a ClientRect for the viewport's bounds.
+     * @return {?}
+     */
+    ViewportRuler.prototype.getViewportRect = /**
+     * Gets a ClientRect for the viewport's bounds.
+     * @return {?}
+     */
+    function () {
         // Use the document element's bounding rect rather than the window scroll properties
         // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll
         // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different
@@ -301,9 +431,8 @@ var ViewportRuler = (function () {
         // We use the documentElement instead of the body because, by default (without a css reset)
         // browsers typically give the document body an 8px margin, which is not included in
         // getBoundingClientRect().
-        var /** @type {?} */ scrollPosition = this.getViewportScrollPosition(documentRect);
-        var /** @type {?} */ height = window.innerHeight;
-        var /** @type {?} */ width = window.innerWidth;
+        var /** @type {?} */ scrollPosition = this.getViewportScrollPosition();
+        var _a = this.getViewportSize(), width = _a.width, height = _a.height;
         return {
             top: scrollPosition.top,
             left: scrollPosition.left,
@@ -313,56 +442,65 @@ var ViewportRuler = (function () {
             width: width,
         };
     };
+    /** Gets the (top, left) scroll position of the viewport. */
     /**
      * Gets the (top, left) scroll position of the viewport.
-     * @param {?=} documentRect
      * @return {?}
      */
-    ViewportRuler.prototype.getViewportScrollPosition = function (documentRect) {
-        if (documentRect === void 0) { documentRect = this._documentRect; }
-        // Cache the document bounding rect so that we don't recompute it for multiple calls.
-        if (!documentRect) {
-            this._cacheViewportGeometry();
-            documentRect = this._documentRect;
-        }
+    ViewportRuler.prototype.getViewportScrollPosition = /**
+     * Gets the (top, left) scroll position of the viewport.
+     * @return {?}
+     */
+    function () {
         // The top-left-corner of the viewport is determined by the scroll position of the document
         // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about
         // whether `document.body` or `document.documentElement` is the scrolled element, so reading
         // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of
         // `document.documentElement` works consistently, where the `top` and `left` values will
         // equal negative the scroll position.
-        var /** @type {?} */ top = -((documentRect)).top || document.body.scrollTop || window.scrollY ||
+        var /** @type {?} */ documentRect = document.documentElement.getBoundingClientRect();
+        var /** @type {?} */ top = -documentRect.top || document.body.scrollTop || window.scrollY ||
             document.documentElement.scrollTop || 0;
-        var /** @type {?} */ left = -((documentRect)).left || document.body.scrollLeft || window.scrollX ||
+        var /** @type {?} */ left = -documentRect.left || document.body.scrollLeft || window.scrollX ||
             document.documentElement.scrollLeft || 0;
         return { top: top, left: left };
     };
     /**
      * Returns a stream that emits whenever the size of the viewport changes.
+     * @param throttle Time in milliseconds to throttle the stream.
+     */
+    /**
+     * Returns a stream that emits whenever the size of the viewport changes.
+     * @param {?=} throttleTime
+     * @return {?}
+     */
+    ViewportRuler.prototype.change = /**
+     * Returns a stream that emits whenever the size of the viewport changes.
      * @param {?=} throttleTime
      * @return {?}
      */
-    ViewportRuler.prototype.change = function (throttleTime) {
+    function (throttleTime) {
         if (throttleTime === void 0) { throttleTime = DEFAULT_RESIZE_TIME; }
-        return throttleTime > 0 ? rxjs_operator_auditTime.auditTime.call(this._change, throttleTime) : this._change;
+        return throttleTime > 0 ? this._change.pipe(rxjs_operators_auditTime.auditTime(throttleTime)) : this._change;
     };
     /**
-     * Caches the latest client rectangle of the document element.
+     * Updates the cached viewport size.
+     * @return {?}
+     */
+    ViewportRuler.prototype._updateViewportSize = /**
+     * Updates the cached viewport size.
      * @return {?}
      */
-    ViewportRuler.prototype._cacheViewportGeometry = function () {
-        this._documentRect = document.documentElement.getBoundingClientRect();
+    function () {
+        this._viewportSize = { width: window.innerWidth, height: window.innerHeight };
     };
     ViewportRuler.decorators = [
         { type: _angular_core.Injectable },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     ViewportRuler.ctorParameters = function () { return [
         { type: _angular_cdk_platform.Platform, },
         { type: _angular_core.NgZone, },
-        { type: ScrollDispatcher, },
     ]; };
     return ViewportRuler;
 }());
@@ -371,11 +509,10 @@ var ViewportRuler = (function () {
  * @param {?} parentRuler
  * @param {?} platform
  * @param {?} ngZone
- * @param {?} scrollDispatcher
  * @return {?}
  */
-function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone, scrollDispatcher) {
-    return parentRuler || new ViewportRuler(platform, ngZone, scrollDispatcher);
+function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone) {
+    return parentRuler || new ViewportRuler(platform, ngZone);
 }
 /**
  * \@docs-private
@@ -383,24 +520,27 @@ function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone, scrollDi
 var VIEWPORT_RULER_PROVIDER = {
     // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.
     provide: ViewportRuler,
-    deps: [[new _angular_core.Optional(), new _angular_core.SkipSelf(), ViewportRuler], _angular_cdk_platform.Platform, _angular_core.NgZone, ScrollDispatcher],
+    deps: [[new _angular_core.Optional(), new _angular_core.SkipSelf(), ViewportRuler], _angular_cdk_platform.Platform, _angular_core.NgZone],
     useFactory: VIEWPORT_RULER_PROVIDER_FACTORY
 };
 
-var ScrollDispatchModule = (function () {
+/**
+ * @fileoverview added by tsickle
+ * @suppress {checkTypes} checked by tsc
+ */
+
+var ScrollDispatchModule = /** @class */ (function () {
     function ScrollDispatchModule() {
     }
     ScrollDispatchModule.decorators = [
         { type: _angular_core.NgModule, args: [{
                     imports: [_angular_cdk_platform.PlatformModule],
-                    exports: [Scrollable],
-                    declarations: [Scrollable],
+                    exports: [CdkScrollable],
+                    declarations: [CdkScrollable],
                     providers: [SCROLL_DISPATCHER_PROVIDER],
                 },] },
     ];
-    /**
-     * @nocollapse
-     */
+    /** @nocollapse */
     ScrollDispatchModule.ctorParameters = function () { return []; };
     return ScrollDispatchModule;
 }());
@@ -409,7 +549,7 @@ exports.DEFAULT_SCROLL_TIME = DEFAULT_SCROLL_TIME;
 exports.ScrollDispatcher = ScrollDispatcher;
 exports.SCROLL_DISPATCHER_PROVIDER_FACTORY = SCROLL_DISPATCHER_PROVIDER_FACTORY;
 exports.SCROLL_DISPATCHER_PROVIDER = SCROLL_DISPATCHER_PROVIDER;
-exports.Scrollable = Scrollable;
+exports.CdkScrollable = CdkScrollable;
 exports.DEFAULT_RESIZE_TIME = DEFAULT_RESIZE_TIME;
 exports.ViewportRuler = ViewportRuler;
 exports.VIEWPORT_RULER_PROVIDER_FACTORY = VIEWPORT_RULER_PROVIDER_FACTORY;

http://git-wip-us.apache.org/repos/asf/nifi-fds/blob/d07dd0f2/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js.map
----------------------------------------------------------------------
diff --git a/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js.map b/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js.map
index 6a22073..14105c2 100644
--- a/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js.map
+++ b/node_modules/@angular/cdk/bundles/cdk-scrolling.umd.js.map
@@ -1 +1 @@
-{"version":3,"file":"cdk-scrolling.umd.js","sources":["cdk/scrolling.es5.js"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport { Directive, ElementRef, Injectable, NgModule, NgZone, Optional, Renderer2, SkipSelf } from '@angular/core';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport { Subject } from 'rxjs/Subject';\nimport { Subscription } from 'rxjs/Subscription';\nimport { fromEvent } from 'rxjs/observable/fromEvent';\nimport { auditTime } from 'rxjs/operator/auditTime';\nimport { merge } from 'rxjs/observable/merge';\nimport { of } from 'rxjs/observable/of';\n\n/**\n * Time in ms to throttle the scrolling events by default.\n */\nvar DEFAULT_SCROLL_TIME = 20;\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrol
 lable references emit a scrolled event.\n */\nvar ScrollDispatcher = (function () {\n    /**\n     * @param {?} _ngZone\n     * @param {?} _platform\n     */\n    function ScrollDispatcher(_ngZone, _platform) {\n        this._ngZone = _ngZone;\n        this._platform = _platform;\n        /**\n         * Subject for notifying that a registered scrollable reference element has been scrolled.\n         */\n        this._scrolled = new Subject();\n        /**\n         * Keeps track of the global `scroll` and `resize` subscriptions.\n         */\n        this._globalSubscription = null;\n        /**\n         * Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards.\n         */\n        this._scrolledCount = 0;\n        /**\n         * Map of all the scrollable references that are registered with the service and their\n         * scroll event subscriptions.\n         */\n        this.scrollableReferences = new Map();\n    }\n    /**\n     * Registers
  a Scrollable with the service and listens for its scrolled events. When the\n     * scrollable is scrolled, the service emits the event in its scrolled observable.\n     * @param {?} scrollable Scrollable instance to be registered.\n     * @return {?}\n     */\n    ScrollDispatcher.prototype.register = function (scrollable) {\n        var _this = this;\n        var /** @type {?} */ scrollSubscription = scrollable.elementScrolled().subscribe(function () { return _this._notify(); });\n        this.scrollableReferences.set(scrollable, scrollSubscription);\n    };\n    /**\n     * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n     * @param {?} scrollable Scrollable instance to be deregistered.\n     * @return {?}\n     */\n    ScrollDispatcher.prototype.deregister = function (scrollable) {\n        var /** @type {?} */ scrollableReference = this.scrollableReferences.get(scrollable);\n        if (scrollableReference) {\n            scrollableRefe
 rence.unsubscribe();\n            this.scrollableReferences.delete(scrollable);\n        }\n    };\n    /**\n     * Subscribes to an observable that emits an event whenever any of the registered Scrollable\n     * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n     * to override the default \"throttle\" time.\n     * @param {?=} auditTimeInMs\n     * @param {?=} callback\n     * @return {?}\n     */\n    ScrollDispatcher.prototype.scrolled = function (auditTimeInMs, callback) {\n        var _this = this;\n        if (auditTimeInMs === void 0) { auditTimeInMs = DEFAULT_SCROLL_TIME; }\n        // Scroll events can only happen on the browser, so do nothing if we're not on the browser.\n        if (!this._platform.isBrowser) {\n            return Subscription.EMPTY;\n        }\n        // In the case of a 0ms delay, use an observable without auditTime\n        // since it does add a perceptible delay in processing overhead.\n        var /** @t
 ype {?} */ observable = auditTimeInMs > 0 ?\n            auditTime.call(this._scrolled.asObservable(), auditTimeInMs) :\n            this._scrolled.asObservable();\n        this._scrolledCount++;\n        if (!this._globalSubscription) {\n            this._globalSubscription = this._ngZone.runOutsideAngular(function () {\n                return fromEvent(window.document, 'scroll').subscribe(function () { return _this._notify(); });\n            });\n        }\n        // Note that we need to do the subscribing from here, in order to be able to remove\n        // the global event listeners once there are no more subscriptions.\n        var /** @type {?} */ subscription = observable.subscribe(callback);\n        subscription.add(function () {\n            _this._scrolledCount--;\n            if (_this._globalSubscription && !_this.scrollableReferences.size && !_this._scrolledCount) {\n                _this._globalSubscription.unsubscribe();\n                _this._globalSubscription =
  null;\n            }\n        });\n        return subscription;\n    };\n    /**\n     * Returns all registered Scrollables that contain the provided element.\n     * @param {?} elementRef\n     * @return {?}\n     */\n    ScrollDispatcher.prototype.getScrollContainers = function (elementRef) {\n        var _this = this;\n        var /** @type {?} */ scrollingContainers = [];\n        this.scrollableReferences.forEach(function (_subscription, scrollable) {\n            if (_this.scrollableContainsElement(scrollable, elementRef)) {\n                scrollingContainers.push(scrollable);\n            }\n        });\n        return scrollingContainers;\n    };\n    /**\n     * Returns true if the element is contained within the provided Scrollable.\n     * @param {?} scrollable\n     * @param {?} elementRef\n     * @return {?}\n     */\n    ScrollDispatcher.prototype.scrollableContainsElement = function (scrollable, elementRef) {\n        var /** @type {?} */ element = elementRef.nativ
 eElement;\n        var /** @type {?} */ scrollableElement = scrollable.getElementRef().nativeElement;\n        // Traverse through the element parents until we reach null, checking if any of the elements\n        // are the scrollable's element.\n        do {\n            if (element == scrollableElement) {\n                return true;\n            }\n        } while (element = element.parentElement);\n        return false;\n    };\n    /**\n     * Sends a notification that a scroll event has been fired.\n     * @return {?}\n     */\n    ScrollDispatcher.prototype._notify = function () {\n        this._scrolled.next();\n    };\n    ScrollDispatcher.decorators = [\n        { type: Injectable },\n    ];\n    /**\n     * @nocollapse\n     */\n    ScrollDispatcher.ctorParameters = function () { return [\n        { type: NgZone, },\n        { type: Platform, },\n    ]; };\n    return ScrollDispatcher;\n}());\n/**\n * \\@docs-private\n * @param {?} parentDispatcher\n * @param {?} ngZone\
 n * @param {?} platform\n * @return {?}\n */\nfunction SCROLL_DISPATCHER_PROVIDER_FACTORY(parentDispatcher, ngZone, platform) {\n    return parentDispatcher || new ScrollDispatcher(ngZone, platform);\n}\n/**\n * \\@docs-private\n */\nvar SCROLL_DISPATCHER_PROVIDER = {\n    // If there is already a ScrollDispatcher available, use that. Otherwise, provide a new one.\n    provide: ScrollDispatcher,\n    deps: [[new Optional(), new SkipSelf(), ScrollDispatcher], NgZone, Platform],\n    useFactory: SCROLL_DISPATCHER_PROVIDER_FACTORY\n};\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\nvar Scrollable = (function () {\n    /**\n     * @param {?} _elementRef\n     * @param {?} _scroll\n     * @param {?} _ngZone\n     * @param {?} _renderer\n     */\n    function Scrollable(_elementRef, _scroll, _ng
 Zone, _renderer) {\n        this._elementRef = _elementRef;\n        this._scroll = _scroll;\n        this._ngZone = _ngZone;\n        this._renderer = _renderer;\n        this._elementScrolled = new Subject();\n    }\n    /**\n     * @return {?}\n     */\n    Scrollable.prototype.ngOnInit = function () {\n        var _this = this;\n        this._scrollListener = this._ngZone.runOutsideAngular(function () {\n            return _this._renderer.listen(_this.getElementRef().nativeElement, 'scroll', function (event) {\n                _this._elementScrolled.next(event);\n            });\n        });\n        this._scroll.register(this);\n    };\n    /**\n     * @return {?}\n     */\n    Scrollable.prototype.ngOnDestroy = function () {\n        this._scroll.deregister(this);\n        if (this._scrollListener) {\n            this._scrollListener();\n            this._scrollListener = null;\n        }\n    };\n    /**\n     * Returns observable that emits when a scroll event is fired on th
 e host element.\n     * @return {?}\n     */\n    Scrollable.prototype.elementScrolled = function () {\n        return this._elementScrolled.asObservable();\n    };\n    /**\n     * @return {?}\n     */\n    Scrollable.prototype.getElementRef = function () {\n        return this._elementRef;\n    };\n    Scrollable.decorators = [\n        { type: Directive, args: [{\n                    selector: '[cdk-scrollable], [cdkScrollable]'\n                },] },\n    ];\n    /**\n     * @nocollapse\n     */\n    Scrollable.ctorParameters = function () { return [\n        { type: ElementRef, },\n        { type: ScrollDispatcher, },\n        { type: NgZone, },\n        { type: Renderer2, },\n    ]; };\n    return Scrollable;\n}());\n\n/**\n * Time in ms to throttle the resize events by default.\n */\nvar DEFAULT_RESIZE_TIME = 20;\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * \\@docs-private\n */\nvar ViewportRuler = (function () {\n    /**\n     * @param {?} pla
 tform\n     * @param {?} ngZone\n     * @param {?} scrollDispatcher\n     */\n    function ViewportRuler(platform, ngZone, scrollDispatcher) {\n        var _this = this;\n        this._change = platform.isBrowser ? ngZone.runOutsideAngular(function () {\n            return merge(fromEvent(window, 'resize'), fromEvent(window, 'orientationchange'));\n        }) : of();\n        // Subscribe to scroll and resize events and update the document rectangle on changes.\n        this._invalidateCacheSubscriptions = [\n            scrollDispatcher.scrolled(0, function () { return _this._cacheViewportGeometry(); }),\n            this.change().subscribe(function () { return _this._cacheViewportGeometry(); })\n        ];\n    }\n    /**\n     * @return {?}\n     */\n    ViewportRuler.prototype.ngOnDestroy = function () {\n        this._invalidateCacheSubscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });\n    };\n    /**\n     * Gets a ClientRect for the viewport'
 s bounds.\n     * @param {?=} documentRect\n     * @return {?}\n     */\n    ViewportRuler.prototype.getViewportRect = function (documentRect) {\n        if (documentRect === void 0) { documentRect = this._documentRect; }\n        // Cache the document bounding rect so that we don't recompute it for multiple calls.\n        if (!documentRect) {\n            this._cacheViewportGeometry();\n            documentRect = this._documentRect;\n        }\n        // Use the document element's bounding rect rather than the window scroll properties\n        // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll\n        // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n        // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n        // can disagree when the page is pinch-zoomed (on devices that support touch).\n        // See https://bugs.chromium.org/p/chromium/issues/detail?id=4
 89206#c4\n        // We use the documentElement instead of the body because, by default (without a css reset)\n        // browsers typically give the document body an 8px margin, which is not included in\n        // getBoundingClientRect().\n        var /** @type {?} */ scrollPosition = this.getViewportScrollPosition(documentRect);\n        var /** @type {?} */ height = window.innerHeight;\n        var /** @type {?} */ width = window.innerWidth;\n        return {\n            top: scrollPosition.top,\n            left: scrollPosition.left,\n            bottom: scrollPosition.top + height,\n            right: scrollPosition.left + width,\n            height: height,\n            width: width,\n        };\n    };\n    /**\n     * Gets the (top, left) scroll position of the viewport.\n     * @param {?=} documentRect\n     * @return {?}\n     */\n    ViewportRuler.prototype.getViewportScrollPosition = function (documentRect) {\n        if (documentRect === void 0) { documentRect = this.
 _documentRect; }\n        // Cache the document bounding rect so that we don't recompute it for multiple calls.\n        if (!documentRect) {\n            this._cacheViewportGeometry();\n            documentRect = this._documentRect;\n        }\n        // The top-left-corner of the viewport is determined by the scroll position of the document\n        // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n        // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n        // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n        // `document.documentElement` works consistently, where the `top` and `left` values will\n        // equal negative the scroll position.\n        var /** @type {?} */ top = -((documentRect)).top || document.body.scrollTop || window.scrollY ||\n            document.documentElement.scrollTop || 0;\n        var /** @type {?} */ left = -((documentR
 ect)).left || document.body.scrollLeft || window.scrollX ||\n            document.documentElement.scrollLeft || 0;\n        return { top: top, left: left };\n    };\n    /**\n     * Returns a stream that emits whenever the size of the viewport changes.\n     * @param {?=} throttleTime\n     * @return {?}\n     */\n    ViewportRuler.prototype.change = function (throttleTime) {\n        if (throttleTime === void 0) { throttleTime = DEFAULT_RESIZE_TIME; }\n        return throttleTime > 0 ? auditTime.call(this._change, throttleTime) : this._change;\n    };\n    /**\n     * Caches the latest client rectangle of the document element.\n     * @return {?}\n     */\n    ViewportRuler.prototype._cacheViewportGeometry = function () {\n        this._documentRect = document.documentElement.getBoundingClientRect();\n    };\n    ViewportRuler.decorators = [\n        { type: Injectable },\n    ];\n    /**\n     * @nocollapse\n     */\n    ViewportRuler.ctorParameters = function () { return [\n     
    { type: Platform, },\n        { type: NgZone, },\n        { type: ScrollDispatcher, },\n    ]; };\n    return ViewportRuler;\n}());\n/**\n * \\@docs-private\n * @param {?} parentRuler\n * @param {?} platform\n * @param {?} ngZone\n * @param {?} scrollDispatcher\n * @return {?}\n */\nfunction VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler, platform, ngZone, scrollDispatcher) {\n    return parentRuler || new ViewportRuler(platform, ngZone, scrollDispatcher);\n}\n/**\n * \\@docs-private\n */\nvar VIEWPORT_RULER_PROVIDER = {\n    // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.\n    provide: ViewportRuler,\n    deps: [[new Optional(), new SkipSelf(), ViewportRuler], Platform, NgZone, ScrollDispatcher],\n    useFactory: VIEWPORT_RULER_PROVIDER_FACTORY\n};\n\nvar ScrollDispatchModule = (function () {\n    function ScrollDispatchModule() {\n    }\n    ScrollDispatchModule.decorators = [\n        { type: NgModule, args: [{\n                    import
 s: [PlatformModule],\n                    exports: [Scrollable],\n                    declarations: [Scrollable],\n                    providers: [SCROLL_DISPATCHER_PROVIDER],\n                },] },\n    ];\n    /**\n     * @nocollapse\n     */\n    ScrollDispatchModule.ctorParameters = function () { return []; };\n    return ScrollDispatchModule;\n}());\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DEFAULT_SCROLL_TIME, ScrollDispatcher, SCROLL_DISPATCHER_PROVIDER_FACTORY, SCROLL_DISPATCHER_PROVIDER, Scrollable, DEFAULT_RESIZE_TIME, ViewportRuler, VIEWPORT_RULER_PROVIDER_FACTORY, VIEWPORT_RULER_PROVIDER, ScrollDispatchModule };\n//# sourceMappingURL=scrolling.es5.js.map\n"],"names":["Subject","Subscription","auditTime","fromEvent","Injectable","NgZone","Platform","Optional","SkipSelf","Directive","ElementRef","Renderer2","merge","of","NgModule","PlatformModule"],"mappings":";;;;;;;;;;;;;AAgBA;;;AAGA,IAAI,mBAAmB,GAAG,EAAE,CAAC;;;;;AAK7B,IAAI,gBAAgB,IAAI,YAAY;;;;;I
 AKhC,SAAS,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;;;;QAI3B,IAAI,CAAC,SAAS,GAAG,IAAIA,oBAAO,EAAE,CAAC;;;;QAI/B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;;;;QAIhC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;;;;;QAKxB,IAAI,CAAC,oBAAoB,GAAG,IAAI,GAAG,EAAE,CAAC;KACzC;;;;;;;IAOD,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,UAAU,EAAE;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,qBAAqB,kBAAkB,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1H,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;KACjE,CAAC;;;;;;IAMF,gBAAgB,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,UAAU,EAAE;QAC1D,qBAAqB,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrF,IAAI,mBAAmB,EAAE;YACrB,mBAAmB,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAChD;KACJ,CAAC;;;;;;;;;IASF,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,UAAU,aAAa,EAAE,QAAQ,EAAE;QACrE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,aAAa,KAAK,KAAK,CAAC,EAAE,EAAE,aAAa,GAAG,mBAAmB,C
 AAC,EAAE;;QAEtE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE;YAC3B,OAAOC,8BAAY,CAAC,KAAK,CAAC;SAC7B;;;QAGD,qBAAqB,UAAU,GAAG,aAAa,GAAG,CAAC;YAC/CC,iCAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC;YAC5D,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY;gBAClE,OAAOC,mCAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;aAClG,CAAC,CAAC;SACN;;;QAGD,qBAAqB,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnE,YAAY,CAAC,GAAG,CAAC,YAAY;YACzB,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBACxF,KAAK,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;gBACxC,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACpC;SACJ,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;KACvB,CAAC;;;;;;IAMF,gBAAgB,CAAC,SAAS,CAAC,mBAAmB,GAAG,UAAU,UAAU,EAAE;QACnE,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,qBAAqB,mBAAmB,GAAG,EAAE
 ,CAAC;QAC9C,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,aAAa,EAAE,UAAU,EAAE;YACnE,IAAI,KAAK,CAAC,yBAAyB,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;gBACzD,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACxC;SACJ,CAAC,CAAC;QACH,OAAO,mBAAmB,CAAC;KAC9B,CAAC;;;;;;;IAOF,gBAAgB,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,UAAU,EAAE,UAAU,EAAE;QACrF,qBAAqB,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;QACxD,qBAAqB,iBAAiB,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;;;QAGlF,GAAG;YACC,IAAI,OAAO,IAAI,iBAAiB,EAAE;gBAC9B,OAAO,IAAI,CAAC;aACf;SACJ,QAAQ,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;QAC1C,OAAO,KAAK,CAAC;KAChB,CAAC;;;;;IAKF,gBAAgB,CAAC,SAAS,CAAC,OAAO,GAAG,YAAY;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB,CAAC;IACF,gBAAgB,CAAC,UAAU,GAAG;QAC1B,EAAE,IAAI,EAAEC,wBAAU,EAAE;KACvB,CAAC;;;;IAIF,gBAAgB,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO;QACnD,EAAE,IAAI,EAAEC,oBAAM,GAAG;QACjB,EAAE,IAAI,EAAEC,8BAAQ,GAAG;KACtB,CAAC,EAAE,CAAC;IACL,OAAO,gBAAgB,CAAC;CAC3B,EAAE,CAAC,CAAC;;;;;;;;AAQL,SAAS,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC5E,OAAO,gBAAgB,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE,
 QAAQ,CAAC,CAAC;CACrE;;;;AAID,IAAI,0BAA0B,GAAG;;IAE7B,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,CAAC,IAAIC,sBAAQ,EAAE,EAAE,IAAIC,sBAAQ,EAAE,EAAE,gBAAgB,CAAC,EAAEH,oBAAM,EAAEC,8BAAQ,CAAC;IAC5E,UAAU,EAAE,kCAAkC;CACjD,CAAC;;;;;;;AAOF,IAAI,UAAU,IAAI,YAAY;;;;;;;IAO1B,SAAS,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE;QAC1D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAIN,oBAAO,EAAE,CAAC;KACzC;;;;IAID,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,YAAY;QACxC,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY;YAC9D,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,KAAK,EAAE;gBAC1F,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC,CAAC,CAAC;SACN,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC/B,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,
 IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC/B;KACJ,CAAC;;;;;IAKF,UAAU,CAAC,SAAS,CAAC,eAAe,GAAG,YAAY;QAC/C,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC/C,CAAC;;;;IAIF,UAAU,CAAC,SAAS,CAAC,aAAa,GAAG,YAAY;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B,CAAC;IACF,UAAU,CAAC,UAAU,GAAG;QACpB,EAAE,IAAI,EAAES,uBAAS,EAAE,IAAI,EAAE,CAAC;oBACd,QAAQ,EAAE,mCAAmC;iBAChD,EAAE,EAAE;KAChB,CAAC;;;;IAIF,UAAU,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO;QAC7C,EAAE,IAAI,EAAEC,wBAAU,GAAG;QACrB,EAAE,IAAI,EAAE,gBAAgB,GAAG;QAC3B,EAAE,IAAI,EAAEL,oBAAM,GAAG;QACjB,EAAE,IAAI,EAAEM,uBAAS,GAAG;KACvB,CAAC,EAAE,CAAC;IACL,OAAO,UAAU,CAAC;CACrB,EAAE,CAAC,CAAC;;;;;AAKL,IAAI,mBAAmB,GAAG,EAAE,CAAC;;;;;AAK7B,IAAI,aAAa,IAAI,YAAY;;;;;;IAM7B,SAAS,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,YAAY;YACrE,OAAOC,2BAAK,CAACT,mCAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAEA,mCAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;SACrF,CA
 AC,GAAGU,qBAAE,EAAE,CAAC;;QAEV,IAAI,CAAC,6BAA6B,GAAG;YACjC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,KAAK,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC;SAClF,CAAC;KACL;;;;IAID,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY;QAC9C,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE,EAAE,OAAO,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;KAC9G,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,eAAe,GAAG,UAAU,YAAY,EAAE;QAC9D,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;;QAEnE,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;SACrC;;;;;;;;;;QAUD,qBAAqB,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC;QACnF,qBAAqB,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC;QACjD,qBAAqB,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/C,OAAO;YACH,GAAG,EAAE,cAAc,CAAC,GAAG;YACvB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,MAAM;YACnC,KAAK,EAAE,cAAc,CAAC,IAAI,GAAG,KAAK;YAClC,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,KAAK;SACf,CA
 AC;KACL,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,yBAAyB,GAAG,UAAU,YAAY,EAAE;QACxE,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE;;QAEnE,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;SACrC;;;;;;;QAOD,qBAAqB,GAAG,GAAG,CAAC,EAAE,YAAY,GAAG,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO;YACzF,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,CAAC;QAC5C,qBAAqB,IAAI,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO;YAC5F,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACnC,CAAC;;;;;;IAMF,aAAa,CAAC,SAAS,CAAC,MAAM,GAAG,UAAU,YAAY,EAAE;QACrD,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,YAAY,GAAG,mBAAmB,CAAC,EAAE;QACpE,OAAO,YAAY,GAAG,CAAC,GAAGX,iCAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;KACvF,CAAC;;;;;IAKF,aAAa,CAAC,SAAS,CAAC,sBAAsB,GAAG,YAAY;QACzD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;KACzE,CAAC;IACF,aAAa,CAAC,UAAU,GAA
 G;QACvB,EAAE,IAAI,EAAEE,wBAAU,EAAE;KACvB,CAAC;;;;IAIF,aAAa,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO;QAChD,EAAE,IAAI,EAAEE,8BAAQ,GAAG;QACnB,EAAE,IAAI,EAAED,oBAAM,GAAG;QACjB,EAAE,IAAI,EAAE,gBAAgB,GAAG;KAC9B,CAAC,EAAE,CAAC;IACL,OAAO,aAAa,CAAC;CACxB,EAAE,CAAC,CAAC;;;;;;;;;AASL,SAAS,+BAA+B,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;IACtF,OAAO,WAAW,IAAI,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC/E;;;;AAID,IAAI,uBAAuB,GAAG;;IAE1B,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,CAAC,CAAC,IAAIE,sBAAQ,EAAE,EAAE,IAAIC,sBAAQ,EAAE,EAAE,aAAa,CAAC,EAAEF,8BAAQ,EAAED,oBAAM,EAAE,gBAAgB,CAAC;IAC3F,UAAU,EAAE,+BAA+B;CAC9C,CAAC;;AAEF,IAAI,oBAAoB,IAAI,YAAY;IACpC,SAAS,oBAAoB,GAAG;KAC/B;IACD,oBAAoB,CAAC,UAAU,GAAG;QAC9B,EAAE,IAAI,EAAES,sBAAQ,EAAE,IAAI,EAAE,CAAC;oBACb,OAAO,EAAE,CAACC,oCAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,UAAU,CAAC;oBACrB,YAAY,EAAE,CAAC,UAAU,CAAC;oBAC1B,SAAS,EAAE,CAAC,0BAA0B,CAAC;iBAC1C,EAAE,EAAE;KAChB,CAAC;;;;IAIF,oBAAoB,CAAC,cAAc,GAAG,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACjE,OAAO,oBAAoB,CAAC;CAC/B,EAAE,CAAC
 ,CAAC,AAEL,AAIiP,AACjP,AAAyC;;;;;;;;;;;;;;;"}
\ No newline at end of file
+{"version":3,"file":"cdk-scrolling.umd.js","sources":["../../src/cdk/scrolling/scrolling-module.ts","../../src/cdk/scrolling/viewport-ruler.ts","../../src/cdk/scrolling/scrollable.ts","../../src/cdk/scrolling/scroll-dispatcher.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\nimport {SCROLL_DISPATCHER_PROVIDER} from './scroll-dispatcher';\nimport {CdkScrollable} from  './scrollable';\nimport {PlatformModule} from '@angular/cdk/platform';\n\n@NgModule({\n  imports: [PlatformModule],\n  exports: [CdkScrollable],\n  declarations: [CdkScrollable],\n  providers: [SCROLL_DISPATCHER_PROVIDER],\n})\nexport class ScrollDispatchModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license 
 that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Injectable, Optional, SkipSelf, NgZone, OnDestroy} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Observable} from 'rxjs/Observable';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {merge} from 'rxjs/observable/merge';\nimport {auditTime} from 'rxjs/operators/auditTime';\nimport {Subscription} from 'rxjs/Subscription';\nimport {of as observableOf} from 'rxjs/observable/of';\n\n/** Time in ms to throttle the resize events by default. */\nexport const DEFAULT_RESIZE_TIME = 20;\n\n/**\n * Simple utility for getting the bounds of the browser viewport.\n * @docs-private\n */\n@Injectable()\nexport class ViewportRuler implements OnDestroy {\n  /** Cached viewport dimensions. */\n  private _viewportSize: {width: number; height: number};\n\n  /** Stream of viewport change events. */\n  private _change: Observable<Event>;\n\n  /** Subscription to streams tha
 t invalidate the cached viewport dimensions. */\n  private _invalidateCache: Subscription;\n\n  constructor(platform: Platform, ngZone: NgZone) {\n    this._change = platform.isBrowser ? ngZone.runOutsideAngular(() => {\n      return merge<Event>(fromEvent(window, 'resize'), fromEvent(window, 'orientationchange'));\n    }) : observableOf();\n\n    this._invalidateCache = this.change().subscribe(() => this._updateViewportSize());\n  }\n\n  ngOnDestroy() {\n    this._invalidateCache.unsubscribe();\n  }\n\n  /** Returns the viewport's width and height. */\n  getViewportSize(): Readonly<{width: number, height: number}> {\n    if (!this._viewportSize) {\n      this._updateViewportSize();\n    }\n\n    return {width: this._viewportSize.width, height: this._viewportSize.height};\n  }\n\n  /** Gets a ClientRect for the viewport's bounds. */\n  getViewportRect(): ClientRect {\n    // Use the document element's bounding rect rather than the window scroll properties\n    // (e.g. pageYOffset, 
 scrollY) due to in issue in Chrome and IE where window scroll\n    // properties and client coordinates (boundingClientRect, clientX/Y, etc.) are in different\n    // conceptual viewports. Under most circumstances these viewports are equivalent, but they\n    // can disagree when the page is pinch-zoomed (on devices that support touch).\n    // See https://bugs.chromium.org/p/chromium/issues/detail?id=489206#c4\n    // We use the documentElement instead of the body because, by default (without a css reset)\n    // browsers typically give the document body an 8px margin, which is not included in\n    // getBoundingClientRect().\n    const scrollPosition = this.getViewportScrollPosition();\n    const {width, height} = this.getViewportSize();\n\n    return {\n      top: scrollPosition.top,\n      left: scrollPosition.left,\n      bottom: scrollPosition.top + height,\n      right: scrollPosition.left + width,\n      height,\n      width,\n    };\n  }\n\n  /** Gets the (top, left) scroll
  position of the viewport. */\n  getViewportScrollPosition() {\n    // The top-left-corner of the viewport is determined by the scroll position of the document\n    // body, normally just (scrollLeft, scrollTop). However, Chrome and Firefox disagree about\n    // whether `document.body` or `document.documentElement` is the scrolled element, so reading\n    // `scrollTop` and `scrollLeft` is inconsistent. However, using the bounding rect of\n    // `document.documentElement` works consistently, where the `top` and `left` values will\n    // equal negative the scroll position.\n    const documentRect = document.documentElement.getBoundingClientRect();\n\n    const top = -documentRect.top || document.body.scrollTop || window.scrollY ||\n                 document.documentElement.scrollTop || 0;\n\n    const left = -documentRect.left || document.body.scrollLeft || window.scrollX ||\n                  document.documentElement.scrollLeft || 0;\n\n    return {top, left};\n  }\n\n  /**\n   *
  Returns a stream that emits whenever the size of the viewport changes.\n   * @param throttle Time in milliseconds to throttle the stream.\n   */\n  change(throttleTime: number = DEFAULT_RESIZE_TIME): Observable<Event> {\n    return throttleTime > 0 ? this._change.pipe(auditTime(throttleTime)) : this._change;\n  }\n\n  /** Updates the cached viewport size. */\n  private _updateViewportSize() {\n    this._viewportSize = {width: window.innerWidth, height: window.innerHeight};\n  }\n}\n\n/** @docs-private */\nexport function VIEWPORT_RULER_PROVIDER_FACTORY(parentRuler: ViewportRuler,\n                                                platform: Platform,\n                                                ngZone: NgZone) {\n  return parentRuler || new ViewportRuler(platform, ngZone);\n}\n\n/** @docs-private */\nexport const VIEWPORT_RULER_PROVIDER = {\n  // If there is already a ViewportRuler available, use that. Otherwise, provide a new one.\n  provide: ViewportRuler,\n  deps: [[new Optiona
 l(), new SkipSelf(), ViewportRuler], Platform, NgZone],\n  useFactory: VIEWPORT_RULER_PROVIDER_FACTORY\n};\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {Directive, ElementRef, OnInit, OnDestroy, NgZone} from '@angular/core';\nimport {Observable} from 'rxjs/Observable';\nimport {Subject} from 'rxjs/Subject';\nimport {ScrollDispatcher} from './scroll-dispatcher';\n\n\n/**\n * Sends an event when the directive's element is scrolled. Registers itself with the\n * ScrollDispatcher service to include itself as part of its collection of scrolling events that it\n * can be listened to through the service.\n */\n@Directive({\n  selector: '[cdk-scrollable], [cdkScrollable]'\n})\nexport class CdkScrollable implements OnInit, OnDestroy {\n  private _elementScrolled: Subject<Event> = new Subject();\n  private _scrollListe
 ner = (event: Event) => this._elementScrolled.next(event);\n\n  constructor(private _elementRef: ElementRef,\n              private _scroll: ScrollDispatcher,\n              private _ngZone: NgZone) {}\n\n  ngOnInit() {\n    this._ngZone.runOutsideAngular(() => {\n      this.getElementRef().nativeElement.addEventListener('scroll', this._scrollListener);\n    });\n\n    this._scroll.register(this);\n  }\n\n  ngOnDestroy() {\n    this._scroll.deregister(this);\n\n    if (this._scrollListener) {\n      this.getElementRef().nativeElement.removeEventListener('scroll', this._scrollListener);\n    }\n  }\n\n  /**\n   * Returns observable that emits when a scroll event is fired on the host element.\n   */\n  elementScrolled(): Observable<any> {\n    return this._elementScrolled.asObservable();\n  }\n\n  getElementRef(): ElementRef {\n    return this._elementRef;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-s
 tyle license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {ElementRef, Injectable, NgZone, Optional, SkipSelf, OnDestroy} from '@angular/core';\nimport {Platform} from '@angular/cdk/platform';\nimport {Subject} from 'rxjs/Subject';\nimport {Subscription} from 'rxjs/Subscription';\nimport {Observable} from 'rxjs/Observable';\nimport {of as observableOf} from 'rxjs/observable/of';\nimport {fromEvent} from 'rxjs/observable/fromEvent';\nimport {auditTime} from 'rxjs/operators/auditTime';\nimport {filter} from 'rxjs/operators/filter';\nimport {CdkScrollable} from './scrollable';\n\n\n/** Time in ms to throttle the scrolling events by default. */\nexport const DEFAULT_SCROLL_TIME = 20;\n\n/**\n * Service contained all registered Scrollable references and emits an event when any one of the\n * Scrollable references emit a scrolled event.\n */\n@Injectable()\nexport class ScrollDispatcher implements OnDestroy {\n  constructor(private _ngZone: NgZone
 , private _platform: Platform) { }\n\n  /** Subject for notifying that a registered scrollable reference element has been scrolled. */\n  private _scrolled = new Subject<CdkScrollable|void>();\n\n  /** Keeps track of the global `scroll` and `resize` subscriptions. */\n  _globalSubscription: Subscription | null = null;\n\n  /** Keeps track of the amount of subscriptions to `scrolled`. Used for cleaning up afterwards. */\n  private _scrolledCount = 0;\n\n  /**\n   * Map of all the scrollable references that are registered with the service and their\n   * scroll event subscriptions.\n   */\n  scrollContainers: Map<CdkScrollable, Subscription> = new Map();\n\n  /**\n   * Registers a scrollable instance with the service and listens for its scrolled events. When the\n   * scrollable is scrolled, the service emits the event to its scrolled observable.\n   * @param scrollable Scrollable instance to be registered.\n   */\n  register(scrollable: CdkScrollable): void {\n    const scrollSubscri
 ption = scrollable.elementScrolled()\n        .subscribe(() => this._scrolled.next(scrollable));\n\n    this.scrollContainers.set(scrollable, scrollSubscription);\n  }\n\n  /**\n   * Deregisters a Scrollable reference and unsubscribes from its scroll event observable.\n   * @param scrollable Scrollable instance to be deregistered.\n   */\n  deregister(scrollable: CdkScrollable): void {\n    const scrollableReference = this.scrollContainers.get(scrollable);\n\n    if (scrollableReference) {\n      scrollableReference.unsubscribe();\n      this.scrollContainers.delete(scrollable);\n    }\n  }\n\n  /**\n   * Returns an observable that emits an event whenever any of the registered Scrollable\n   * references (or window, document, or body) fire a scrolled event. Can provide a time in ms\n   * to override the default \"throttle\" time.\n   *\n   * **Note:** in order to avoid hitting change detection for every scroll event,\n   * all of the events emitted from this stream will be run outsi
 de the Angular zone.\n   * If you need to update any data bindings as a result of a scroll event, you have\n   * to run the callback using `NgZone.run`.\n   */\n  scrolled(auditTimeInMs: number = DEFAULT_SCROLL_TIME): Observable<CdkScrollable|void> {\n    return this._platform.isBrowser ? Observable.create(observer => {\n      if (!this._globalSubscription) {\n        this._addGlobalListener();\n      }\n\n      // In the case of a 0ms delay, use an observable without auditTime\n      // since it does add a perceptible delay in processing overhead.\n      const subscription = auditTimeInMs > 0 ?\n        this._scrolled.pipe(auditTime(auditTimeInMs)).subscribe(observer) :\n        this._scrolled.subscribe(observer);\n\n      this._scrolledCount++;\n\n      return () => {\n        subscription.unsubscribe();\n        this._scrolledCount--;\n\n        if (!this._scrolledCount) {\n          this._removeGlobalListener();\n        }\n      };\n    }) : observableOf<void>();\n  }\n\n  ngOn
 Destroy() {\n    this._removeGlobalListener();\n    this.scrollContainers.forEach((_, container) => this.deregister(container));\n  }\n\n  /**\n   * Returns an observable that emits whenever any of the\n   * scrollable ancestors of an element are scrolled.\n   * @param elementRef Element whose ancestors to listen for.\n   * @param auditTimeInMs Time to throttle the scroll events.\n   */\n  ancestorScrolled(elementRef: ElementRef, auditTimeInMs?: number): Observable<CdkScrollable|void> {\n    const ancestors = this.getAncestorScrollContainers(elementRef);\n\n    return this.scrolled(auditTimeInMs).pipe(filter(target => {\n      return !target || ancestors.indexOf(target) > -1;\n    }));\n  }\n\n  /** Returns all registered Scrollables that contain the provided element. */\n  getAncestorScrollContainers(elementRef: ElementRef): CdkScrollable[] {\n    const scrollingContainers: CdkScrollable[] = [];\n\n    this.scrollContainers.forEach((_subscription: Subscription, scrollable: CdkScrol
 lable) => {\n      if (this._scrollableContainsElement(scrollable, elementRef)) {\n        scrollingContainers.push(scrollable);\n      }\n    });\n\n    return scrollingContainers;\n  }\n\n  /** Returns true if the element is contained within the provided Scrollable. */\n  private _scrollableContainsElement(scrollable: CdkScrollable, elementRef: ElementRef): boolean {\n    let element = elementRef.nativeElement;\n    let scrollableElement = scrollable.getElementRef().nativeElement;\n\n    // Traverse through the element parents until we reach null, checking if any of the elements\n    // are the scrollable's element.\n    do {\n      if (element == scrollableElement) { return true; }\n    } while (element = element.parentElement);\n\n    return false;\n  }\n\n  /** Sets up the global scroll listeners. */\n  private _addGlobalListener() {\n    this._globalSubscription = this._ngZone.runOutsideAngular(() => {\n      return fromEvent(window.document, 'scroll').subscribe(() => this._sc
 rolled.next());\n    });\n  }\n\n  /** Cleans up the global scroll listener. */\n  private _removeGlobalListener() {\n    if (this._globalSubscription) {\n      this._globalSubscription.unsubscribe();\n      this._globalSubscription = null;\n    }\n  }\n}\n\n/** @docs-private */\nexport function SCROLL_DISPATCHER_PROVIDER_FACTORY(\n    parentDispatcher: ScrollDispatcher, ngZone: NgZone, platform: Platform) {\n  return parentDispatcher || new ScrollDispatcher(ngZone, platform);\n}\n\n/** @docs-private */\nexport const SCROLL_DISPATCHER_PROVIDER = {\n  // If there is already a ScrollDispatcher available, use that. Otherwise, provide a new one.\n  provide: ScrollDispatcher,\n  deps: [[new Optional(), new SkipSelf(), ScrollDispatcher], NgZone, Platform],\n  useFactory: SCROLL_DISPATCHER_PROVIDER_FACTORY\n};\n"],"names":["PlatformModule","NgModule","Optional","SkipSelf","Platform","NgZone","Injectable","auditTime","observableOf","merge","fromEvent","ElementRef","Directive","Subject","fil
 ter","Observable"],"mappings":";;;;;;;;;;;;;;;;;;;;;AGqBA,IAAa,mBAAmB,GAAG,EAAE,CAAC;;;;;;IAQpC,SAAF,gBAAA,CAAsB,OAAe,EAAU,SAAmB,EAAlE;QAAsB,IAAtB,CAAA,OAA6B,GAAP,OAAO,CAAQ;QAAU,IAA/C,CAAA,SAAwD,GAAT,SAAS,CAAU;;;;QAGlE,IAAA,CAAA,SAAA,GAAsB,IAAIa,oBAAO,EAAsB,CAAvD;;;;QAGA,IAAA,CAAA,mBAAA,GAA6C,IAAI,CAAjD;;;;QAGA,IAAA,CAAA,cAAA,GAA2B,CAAC,CAA5B;;;;;QAMA,IAAA,CAAA,gBAAA,GAAuD,IAAI,GAAG,EAAE,CAAhE;KAfuE;;;;;;;;;;;;IAsBrE,gBAAF,CAAA,SAAA,CAAA,QAAU;;;;;;IAAR,UAAS,UAAyB,EAApC;QAAE,IAAF,KAAA,GAAA,IAAA,CAKG;QAJC,qBAAM,kBAAkB,GAAG,UAAU,CAAC,eAAe,EAAE;aAClD,SAAS,CAAC,YAAnB,EAAyB,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAxD,EAAwD,CAAC,CAAC;QAEtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;KAC3D,CAAH;;;;;;;;;;IAME,gBAAF,CAAA,SAAA,CAAA,UAAY;;;;;IAAV,UAAW,UAAyB,EAAtC;QACI,qBAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAElE,IAAI,mBAAmB,EAAE;YACvB,mBAAmB,CAAC,WAAW,EAAE,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC1C;KACF,CAAH;;;;;;;;;;;;;;;;;;;
 ;;;;IAYE,gBAAF,CAAA,SAAA,CAAA,QAAU;;;;;;;;;;;;IAAR,UAAS,aAA2C,EAAtD;QAAE,IAAF,KAAA,GAAA,IAAA,CAuBG;QAvBQ,IAAX,aAAA,KAAA,KAAA,CAAA,EAAW,EAAA,aAAX,GAAA,mBAAsD,CAAtD,EAAA;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,GAAGE,0BAAU,CAAC,MAAM,CAAC,UAAA,QAAQ,EAAhE;YACM,IAAI,CAAC,KAAI,CAAC,mBAAmB,EAAE;gBAC7B,KAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;;;YAID,qBAAM,YAAY,GAAG,aAAa,GAAG,CAAC;gBACpC,KAAI,CAAC,SAAS,CAAC,IAAI,CAACR,kCAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACjE,KAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAErC,KAAI,CAAC,cAAc,EAAE,CAAC;YAEtB,OAAO,YAAb;gBACQ,YAAY,CAAC,WAAW,EAAE,CAAC;gBAC3B,KAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,CAAC,KAAI,CAAC,cAAc,EAAE;oBACxB,KAAI,CAAC,qBAAqB,EAAE,CAAC;iBAC9B;aACF,CAAC;SACH,CAAC,GAAGC,qBAAY,EAAQ,CAAC;KAC3B,CAAH;;;;IAEE,gBAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAGG;QAFC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,SAAS,EAA/C,EAAoD,OAAA,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAA9E,EAA8E,CAAC,CAAC;KAC7E,CAAH;;;;;;;;;
 ;;;;;IAQE,gBAAF,CAAA,SAAA,CAAA,gBAAkB;;;;;;;IAAhB,UAAiB,UAAsB,EAAE,aAAsB,EAAjE;QACI,qBAAM,SAAS,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,CAACM,4BAAM,CAAC,UAAA,MAAM,EAA1D;YACM,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAClD,CAAC,CAAC,CAAC;KACL,CAAH;;;;;;;IAGE,gBAAF,CAAA,SAAA,CAAA,2BAA6B;;;;;IAA3B,UAA4B,UAAsB,EAApD;QAAE,IAAF,KAAA,GAAA,IAAA,CAUG;QATC,qBAAM,mBAAmB,GAAoB,EAAE,CAAC;QAEhD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAC,aAA2B,EAAE,UAAyB,EAAzF;YACM,IAAI,KAAI,CAAC,0BAA0B,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE;gBAC3D,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACtC;SACF,CAAC,CAAC;QAEH,OAAO,mBAAmB,CAAC;KAC5B,CAAH;;;;;;;IAGU,gBAAV,CAAA,SAAA,CAAA,0BAAoC;;;;;;IAApC,UAAqC,UAAyB,EAAE,UAAsB,EAAtF;QACI,qBAAI,OAAO,GAAG,UAAU,CAAC,aAAa,CAAC;QACvC,qBAAI,iBAAiB,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC;;;QAIjE,GAAG;YACD,IAAI,OAAO,IAAI,iBAAiB,EAAE;gBAAE,OAAO,IAAI,CAAC;aAAE;SACnD,QAAQ,OAAO,GAAG,OAAO,CAAC,aAAa,EAAE;QAE1C,OAAO,KAAK,CAAC;;;;;;I
 AIP,gBAAV,CAAA,SAAA,CAAA,kBAA4B;;;;;;QACxB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAA9D;YACM,OAAOJ,mCAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,SAAS,CAAC,YAA5D,EAAkE,OAAA,KAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAvF,EAAuF,CAAC,CAAC;SACpF,CAAC,CAAC;;;;;;IAIG,gBAAV,CAAA,SAAA,CAAA,qBAA+B;;;;;QAC3B,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;;;QAzIL,EAAA,IAAA,EAACJ,wBAAU,EAAX;;;;QAnBA,EAAA,IAAA,EAAgCD,oBAAM,GAAtC;QACA,EAAA,IAAA,EAAQD,8BAAQ,GAAhB;;IATA,OAAA,gBAAA,CAAA;;;;;;;;;AAyKA,SAAA,kCAAA,CACI,gBAAkC,EAAE,MAAc,EAAE,QAAkB,EAD1E;IAEE,OAAO,gBAAgB,IAAI,IAAI,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnE;;;;AAGD,IAAa,0BAA0B,GAAG;;IAExC,OAAO,EAAE,gBAAgB;IACzB,IAAI,EAAE,CAAC,CAAC,IAAIF,sBAAQ,EAAE,EAAE,IAAIC,sBAAQ,EAAE,EAAE,gBAAgB,CAAC,EAAEE,oBAAM,EAAED,8BAAQ,CAAC;IAC5E,UAAU,EAAE,kCAAkC;CAC/C,CAAC;;;;;;;;;;;;;ID1JA,SAAF,aAAA,CAAsB,WAAuB,EACvB,OADtB,EAEsB,OAFtB,EAAA;QAAE,IAAF,KAAA,GAAA,IAAA,CAEyC;QAFnB,IAAtB,CAAA,WAAiC,G
 AAX,WAAW,CAAY;QACvB,IAAtB,CAAA,OAA6B,GAAP,OAAO,CAA7B;QACsB,IAAtB,CAAA,OAA6B,GAAP,OAAO,CAA7B;QALA,IAAA,CAAA,gBAAA,GAA6C,IAAIS,oBAAO,EAAE,CAA1D;QACA,IAAA,CAAA,eAAA,GAA4B,UAAC,KAAY,EAAzC,EAA8C,OAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAA/E,EAA+E,CAA/E;KAIyC;;;;IAEvC,aAAF,CAAA,SAAA,CAAA,QAAU;;;IAAR,YAAF;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAnC;YACM,KAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAI,CAAC,eAAe,CAAC,CAAC;SACrF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC7B,CAAH;;;;IAEE,aAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;SACxF;KACF,CAAH;;;;;;;;IAKE,aAAF,CAAA,SAAA,CAAA,eAAiB;;;;IAAf,YAAF;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C,CAAH;;;;IAEE,aAAF,CAAA,SAAA,CAAA,aAAe;;;IAAb,YAAF;QACI,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB,CAAH;;QApCA,EAAA,IAAA,EAACD,uBAAS
 ,EAAV,IAAA,EAAA,CAAW;oBACT,QAAQ,EAAE,mCAAmC;iBAC9C,EAAD,EAAA;;;;QAbA,EAAA,IAAA,EAAmBD,wBAAU,GAA7B;QAGA,EAAA,IAAA,EAAQ,gBAAgB,GAAxB;QAHA,EAAA,IAAA,EAAkDN,oBAAM,GAAxD;;IARA,OAAA,aAAA,CAAA;CAsBA,EAAA,CAAA,CAAA;;;;;;;;;;ADJA,IAAa,mBAAmB,GAAG,EAAE,CAAC;;;;;;IAiBpC,SAAF,aAAA,CAAc,QAAkB,EAAE,MAAc,EAAhD;QAAE,IAAF,KAAA,GAAA,IAAA,CAMG;QALC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,iBAAiB,CAAC,YAAjE;YACM,OAAOI,2BAAK,CAAQC,mCAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAEA,mCAAS,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;SAC1F,CAAC,GAAGF,qBAAY,EAAE,CAAC;QAEpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,YAApD,EAA0D,OAAA,KAAI,CAAC,mBAAmB,EAAE,CAApF,EAAoF,CAAC,CAAC;KACnF;;;;IAED,aAAF,CAAA,SAAA,CAAA,WAAa;;;IAAX,YAAF;QACI,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KACrC,CAAH;;;;;;IAGE,aAAF,CAAA,SAAA,CAAA,eAAiB;;;;IAAf,YAAF;QACI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;QAED,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,EAAC,CAAC;KAC7E,CAAH
 ;;;;;;IAGE,aAAF,CAAA,SAAA,CAAA,eAAiB;;;;IAAf,YAAF;;;;;;;;;;QAUI,qBAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACxD,IAAJ,EAAA,GAAA,IAAA,CAAA,eAAA,EAAA,EAAW,KAAX,GAAA,EAAA,CAAA,KAAgB,EAAE,MAAlB,GAAA,EAAA,CAAA,MAAwB,CAA2B;QAE/C,OAAO;YACL,GAAG,EAAE,cAAc,CAAC,GAAG;YACvB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,MAAM,EAAE,cAAc,CAAC,GAAG,GAAG,MAAM;YACnC,KAAK,EAAE,cAAc,CAAC,IAAI,GAAG,KAAK;YAClC,MAAM,EAAZ,MAAY;YACN,KAAK,EAAX,KAAW;SACN,CAAC;KACH,CAAH;;;;;;IAGE,aAAF,CAAA,SAAA,CAAA,yBAA2B;;;;IAAzB,YAAF;;;;;;;QAOI,qBAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,qBAAqB,EAAE,CAAC;QAEtE,qBAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO;YAC7D,QAAQ,CAAC,eAAe,CAAC,SAAS,IAAI,CAAC,CAAC;QAErD,qBAAM,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO;YAC/D,QAAQ,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,CAAC;QAEvD,OAAO,EAAC,GAAG,EAAf,GAAe,EAAE,IAAI,EAArB,IAAqB,EAAC,CAAC;KACpB,CAAH;;;;;;;;;;IAME,aAAF,CAAA,SAAA,CAAA,MAAQ;;;;;IAAN,UAAO,YAA0C,EAAnD;QAAS,IAAT,YAAA,KAAA,KAAA,CAAA,EAAS,
 EAAA,YAAT,GAAA,mBAAmD,CAAnD,EAAA;QACI,OAAO,YAAY,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAACD,kCAAS,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;KACrF,CAAH;;;;;IAGU,aAAV,CAAA,SAAA,CAAA,mBAA6B;;;;;QACzB,IAAI,CAAC,aAAa,GAAG,EAAC,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,EAAC,CAAC;;;QArFhF,EAAA,IAAA,EAACD,wBAAU,EAAX;;;;QAfA,EAAA,IAAA,EAAQF,8BAAQ,GAAhB;QADA,EAAA,IAAA,EAAwCC,oBAAM,GAA9C;;IARA,OAAA,aAAA,CAAA;;;;;;;;;AAkHA,SAAA,+BAAA,CAAgD,WAA0B,EAC1B,QAAkB,EAClB,MAAc,EAF9D;IAGE,OAAO,WAAW,IAAI,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CAC3D;;;;AAGD,IAAa,uBAAuB,GAAG;;IAErC,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,CAAC,CAAC,IAAIH,sBAAQ,EAAE,EAAE,IAAIC,sBAAQ,EAAE,EAAE,aAAa,CAAC,EAAEC,8BAAQ,EAAEC,oBAAM,CAAC;IACzE,UAAU,EAAE,+BAA+B;CAC5C,CAAC;;;;;;;ADtHF,IAAA,oBAAA,kBAAA,YAAA;;;;QAKA,EAAA,IAAA,EAACJ,sBAAQ,EAAT,IAAA,EAAA,CAAU;oBACR,OAAO,EAAE,CAACD,oCAAc,CAAC;oBACzB,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,YAAY,EAAE,CAAC,aAAa,CAAC;oBAC7B,SAAS,EAAE,CAAC,0BAA0B,CAAC;iBACxC,EAAD,EAAA;;;;IAlBA,OAAA,oBAAA,CAAA
 ;CAmBA,EAAA,CAAA,CAAA;;;;;;;;;;;;;;;"}
\ No newline at end of file