barsa-user-workspace 0.0.0-watch → 2.2.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const GRID_ITEM_GET_RENDER_DATA_TOKEN = new InjectionToken('GRID_ITEM_GET_RENDER_DATA_TOKEN');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvZ3JpZC5kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBNEQvQyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBbUQsSUFBSSxjQUFjLENBQzdHLGlDQUFpQyxDQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBhY3RUeXBlIH0gZnJvbSAnLi91dGlscy9yZWFjdC1ncmlkLWxheW91dC51dGlscyc7XG5pbXBvcnQgeyBLdGRDbGllbnRSZWN0IH0gZnJvbSAnLi91dGlscy9jbGllbnQtcmVjdCc7XG5pbXBvcnQgeyBFanJheU9sZ28gfSBmcm9tICdiYXJzYS1ub3Zpbi1yYXktY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3RkR3JpZExheW91dEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICB3OiBudW1iZXI7XG4gICAgaDogbnVtYmVyO1xuICAgIG1pblc/OiBudW1iZXI7XG4gICAgbWluSD86IG51bWJlcjtcbiAgICBtYXhXPzogbnVtYmVyO1xuICAgIG1heEg/OiBudW1iZXIgICAgXG59XG5cbmV4cG9ydCB0eXBlIEt0ZEdyaWRDb21wYWN0VHlwZSA9IENvbXBhY3RUeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZEdyaWRCYWNrZ3JvdW5kQ2ZnIHtcbiAgICBzaG93OiAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnd2hlbkRyYWdnaW5nJztcbiAgICBib3JkZXJDb2xvcj86IHN0cmluZztcbiAgICBnYXBDb2xvcj86IHN0cmluZztcbiAgICByb3dDb2xvcj86IHN0cmluZztcbiAgICBjb2x1bW5Db2xvcj86IHN0cmluZztcbiAgICBib3JkZXJXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdGRHcmlkQ2ZnIHtcbiAgICBjb2xzOiBudW1iZXI7XG4gICAgcm93SGVpZ2h0OiBudW1iZXIgfCAnZml0JzsgLy8gcm93IGhlaWdodCBpbiBwaXhlbHNcbiAgICBoZWlnaHQ/OiBudW1iZXIgfCBudWxsO1xuICAgIGxheW91dDogS3RkR3JpZExheW91dEl0ZW1bXTtcbiAgICBwcmV2ZW50Q29sbGlzaW9uOiBib29sZWFuO1xuICAgIGdhcDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBLdGRHcmlkTGF5b3V0ID0gS3RkR3JpZExheW91dEl0ZW1bXTtcblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgaW50ZXJmYWNlLiBJZiBjYW4ndCByZW1vdmUsIG1vdmUgYW5kIHJlbmFtZSB0aGlzIGludGVyZmFjZSBpbiB0aGUgY29yZSBtb2R1bGUgb3Igc2ltaWxhci5cbmV4cG9ydCBpbnRlcmZhY2UgS3RkR3JpZEl0ZW1SZWN0IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdGRHcmlkSXRlbVJlbmRlckRhdGE8VCA9IG51bWJlciB8IHN0cmluZz4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdG9wOiBUO1xuICAgIGxlZnQ6IFQ7XG4gICAgd2lkdGg6IFQ7XG4gICAgaGVpZ2h0OiBUO1xufVxuXG4vKipcbiAqIFdlIGluamVjdCBhIHRva2VuIGJlY2F1c2Ugb2YgdGhlICdjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3VlIHdhcm5pbmcnLiBJbiBjYXNlIHdlIGRvbid0IGhhZCB0aGlzIGlzc3VlIHdpdGggdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3ksIHdlIGNvdWxkIGp1c3RcbiAqIGltcG9ydCBLdGRHcmlkQ29tcG9uZW50IG9uIEt0ZEdyaWRJdGVtIGFuZCBleGVjdXRlIHRoZSBuZWVkZWQgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZW5kZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IHR5cGUgS3RkR3JpZEl0ZW1SZW5kZXJEYXRhVG9rZW5UeXBlID0gKGlkOiBzdHJpbmcpID0+IEt0ZEdyaWRJdGVtUmVuZGVyRGF0YTxzdHJpbmc+O1xuZXhwb3J0IGNvbnN0IEdSSURfSVRFTV9HRVRfUkVOREVSX0RBVEFfVE9LRU46IEluamVjdGlvblRva2VuPEt0ZEdyaWRJdGVtUmVuZGVyRGF0YVRva2VuVHlwZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICAgJ0dSSURfSVRFTV9HRVRfUkVOREVSX0RBVEFfVE9LRU4nXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZERyYWdnaW5nRGF0YSB7XG4gICAgcG9pbnRlckRvd25FdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQ7XG4gICAgcG9pbnRlckRyYWdFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQ7XG4gICAgZ3JpZEVsZW1DbGllbnRSZWN0OiBLdGRDbGllbnRSZWN0O1xuICAgIGRyYWdFbGVtQ2xpZW50UmVjdDogS3RkQ2xpZW50UmVjdDtcbiAgICBzY3JvbGxEaWZmZXJlbmNlOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfTtcbn1cblxuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5kZWZpbml0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvZ3JpZC5kZWZpbml0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBMkQvQyxNQUFNLENBQUMsTUFBTSwrQkFBK0IsR0FBbUQsSUFBSSxjQUFjLENBQzdHLGlDQUFpQyxDQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbXBhY3RUeXBlIH0gZnJvbSAnLi91dGlscy9yZWFjdC1ncmlkLWxheW91dC51dGlscyc7XG5pbXBvcnQgeyBLdGRDbGllbnRSZWN0IH0gZnJvbSAnLi91dGlscy9jbGllbnQtcmVjdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3RkR3JpZExheW91dEl0ZW0ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgeDogbnVtYmVyO1xuICAgIHk6IG51bWJlcjtcbiAgICB3OiBudW1iZXI7XG4gICAgaDogbnVtYmVyO1xuICAgIG1pblc/OiBudW1iZXI7XG4gICAgbWluSD86IG51bWJlcjtcbiAgICBtYXhXPzogbnVtYmVyO1xuICAgIG1heEg/OiBudW1iZXIgICAgXG59XG5cbmV4cG9ydCB0eXBlIEt0ZEdyaWRDb21wYWN0VHlwZSA9IENvbXBhY3RUeXBlO1xuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZEdyaWRCYWNrZ3JvdW5kQ2ZnIHtcbiAgICBzaG93OiAnbmV2ZXInIHwgJ2Fsd2F5cycgfCAnd2hlbkRyYWdnaW5nJztcbiAgICBib3JkZXJDb2xvcj86IHN0cmluZztcbiAgICBnYXBDb2xvcj86IHN0cmluZztcbiAgICByb3dDb2xvcj86IHN0cmluZztcbiAgICBjb2x1bW5Db2xvcj86IHN0cmluZztcbiAgICBib3JkZXJXaWR0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdGRHcmlkQ2ZnIHtcbiAgICBjb2xzOiBudW1iZXI7XG4gICAgcm93SGVpZ2h0OiBudW1iZXIgfCAnZml0JzsgLy8gcm93IGhlaWdodCBpbiBwaXhlbHNcbiAgICBoZWlnaHQ/OiBudW1iZXIgfCBudWxsO1xuICAgIGxheW91dDogS3RkR3JpZExheW91dEl0ZW1bXTtcbiAgICBwcmV2ZW50Q29sbGlzaW9uOiBib29sZWFuO1xuICAgIGdhcDogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBLdGRHcmlkTGF5b3V0ID0gS3RkR3JpZExheW91dEl0ZW1bXTtcblxuLy8gVE9ETzogUmVtb3ZlIHRoaXMgaW50ZXJmYWNlLiBJZiBjYW4ndCByZW1vdmUsIG1vdmUgYW5kIHJlbmFtZSB0aGlzIGludGVyZmFjZSBpbiB0aGUgY29yZSBtb2R1bGUgb3Igc2ltaWxhci5cbmV4cG9ydCBpbnRlcmZhY2UgS3RkR3JpZEl0ZW1SZWN0IHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdGRHcmlkSXRlbVJlbmRlckRhdGE8VCA9IG51bWJlciB8IHN0cmluZz4ge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdG9wOiBUO1xuICAgIGxlZnQ6IFQ7XG4gICAgd2lkdGg6IFQ7XG4gICAgaGVpZ2h0OiBUO1xufVxuXG4vKipcbiAqIFdlIGluamVjdCBhIHRva2VuIGJlY2F1c2Ugb2YgdGhlICdjaXJjdWxhciBkZXBlbmRlbmN5IGlzc3VlIHdhcm5pbmcnLiBJbiBjYXNlIHdlIGRvbid0IGhhZCB0aGlzIGlzc3VlIHdpdGggdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3ksIHdlIGNvdWxkIGp1c3RcbiAqIGltcG9ydCBLdGRHcmlkQ29tcG9uZW50IG9uIEt0ZEdyaWRJdGVtIGFuZCBleGVjdXRlIHRoZSBuZWVkZWQgZnVuY3Rpb24gdG8gZ2V0IHRoZSByZW5kZXJpbmcgZGF0YS5cbiAqL1xuZXhwb3J0IHR5cGUgS3RkR3JpZEl0ZW1SZW5kZXJEYXRhVG9rZW5UeXBlID0gKGlkOiBzdHJpbmcpID0+IEt0ZEdyaWRJdGVtUmVuZGVyRGF0YTxzdHJpbmc+O1xuZXhwb3J0IGNvbnN0IEdSSURfSVRFTV9HRVRfUkVOREVSX0RBVEFfVE9LRU46IEluamVjdGlvblRva2VuPEt0ZEdyaWRJdGVtUmVuZGVyRGF0YVRva2VuVHlwZT4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oXG4gICAgJ0dSSURfSVRFTV9HRVRfUkVOREVSX0RBVEFfVE9LRU4nXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZERyYWdnaW5nRGF0YSB7XG4gICAgcG9pbnRlckRvd25FdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQ7XG4gICAgcG9pbnRlckRyYWdFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQ7XG4gICAgZ3JpZEVsZW1DbGllbnRSZWN0OiBLdGRDbGllbnRSZWN0O1xuICAgIGRyYWdFbGVtQ2xpZW50UmVjdDogS3RkQ2xpZW50UmVjdDtcbiAgICBzY3JvbGxEaWZmZXJlbmNlOiB7IHRvcDogbnVtYmVyOyBsZWZ0OiBudW1iZXIgfTtcbn1cblxuIl19
@@ -194,7 +194,7 @@ export class LayoutContainerComponent extends BaseComponent {
194
194
  return this.gridBackgroundConfig?.show ?? 'never';
195
195
  }
196
196
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutContainerComponent, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
197
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutContainerComponent, selector: "buw-layout-container", inputs: { layout: "layout", moDataList: "moDataList" }, providers: [], viewQueries: [{ propertyName: "grid", first: true, predicate: KtdGridComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-grid\r\n [cols]=\"cols\"\r\n [backgroundConfig]=\"gridBackgroundConfig\"\r\n [height]=\"rowHeightFit && gridHeight ? gridHeight : null\"\r\n [rowHeight]=\"rowHeightFit ? 'fit' : rowHeight\"\r\n [layout]=\"layout\"\r\n [compactType]=\"compactType\"\r\n [preventCollision]=\"preventCollision\"\r\n [scrollableParent]=\"autoScroll ? document : null\"\r\n [gap]=\"gap\"\r\n [scrollSpeed]=\"4\"\r\n (dragStarted)=\"onDragStarted($event)\"\r\n (resizeStarted)=\"onResizeStarted($event)\"\r\n (dragEnded)=\"onDragEnded($event)\"\r\n (resizeEnded)=\"onResizeEnded($event)\"\r\n (layoutUpdated)=\"onLayoutUpdated($event)\"\r\n >\r\n <buw-grid-item\r\n *ngFor=\"let item of layout; trackBy: trackById; let i = index\"\r\n [id]=\"item.id\"\r\n [transition]=\"currentTransition\"\r\n [dragStartThreshold]=\"dragStartThreshold\"\r\n [draggable]=\"!disableDrag\"\r\n [resizable]=\"!disableResize\"\r\n >\r\n <div class=\"grid-item-content\">\r\n @if(moDataList?.length && moDataList[i]?.EjrayOlgo ){\r\n <bnrc-dynamic-item-component [component]=\"moDataList[i].EjrayOlgo\"> </bnrc-dynamic-item-component>\r\n }\r\n \r\n </div>\r\n <div\r\n class=\"grid-item-remove-handle\"\r\n *ngIf=\"!disableRemove\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (click)=\"removeItem(item.id)\"\r\n ></div>\r\n <ng-template *ngIf=\"currentPlaceholder !== 'Default'\" buwGridItemPlaceholder>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 1'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-1\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 2'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-2\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 3'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-3\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n </ng-template>\r\n </buw-grid-item>\r\n </buw-grid>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.KtdGridComponent, selector: "buw-grid", inputs: ["scrollableParent", "compactOnPropsChange", "preventCollision", "scrollSpeed", "compactType", "rowHeight", "cols", "layout", "gap", "height", "backgroundConfig"], outputs: ["layoutUpdated", "dragStarted", "resizeStarted", "dragEnded", "resizeEnded", "gridItemResize"] }, { kind: "component", type: i4.KtdGridItemComponent, selector: "buw-grid-item", inputs: ["minW", "minH", "maxW", "maxH", "transition", "id", "dragStartThreshold", "draggable", "resizable"] }, { kind: "directive", type: i5.KtdGridItemPlaceholder, selector: "ng-template[buwGridItemPlaceholder]", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: LayoutContainerComponent, selector: "buw-layout-container", inputs: { layout: "layout", moDataList: "moDataList" }, providers: [], viewQueries: [{ propertyName: "grid", first: true, predicate: KtdGridComponent, descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-grid\r\n [cols]=\"cols\"\r\n [backgroundConfig]=\"gridBackgroundConfig\"\r\n [height]=\"rowHeightFit && gridHeight ? gridHeight : null\"\r\n [rowHeight]=\"rowHeightFit ? 'fit' : rowHeight\"\r\n [layout]=\"layout\"\r\n [compactType]=\"compactType\"\r\n [preventCollision]=\"preventCollision\"\r\n [scrollableParent]=\"autoScroll ? document : null\"\r\n [gap]=\"gap\"\r\n [scrollSpeed]=\"4\"\r\n (dragStarted)=\"onDragStarted($event)\"\r\n (resizeStarted)=\"onResizeStarted($event)\"\r\n (dragEnded)=\"onDragEnded($event)\"\r\n (resizeEnded)=\"onResizeEnded($event)\"\r\n (layoutUpdated)=\"onLayoutUpdated($event)\"\r\n >\r\n <buw-grid-item\r\n *ngFor=\"let item of layout; trackBy: trackById; let i = index\"\r\n [id]=\"item.id\"\r\n [transition]=\"currentTransition\"\r\n [dragStartThreshold]=\"dragStartThreshold\"\r\n [draggable]=\"!disableDrag\"\r\n [resizable]=\"!disableResize\"\r\n >\r\n <div class=\"grid-item-content\">\r\n @if(moDataList?.length && moDataList[i]?.EjrayOlgo ){\r\n <bnrc-dynamic-item-component [component]=\"moDataList[i].EjrayOlgo\"> </bnrc-dynamic-item-component>\r\n }\r\n \r\n </div>\r\n <div\r\n class=\"grid-item-remove-handle\"\r\n *ngIf=\"!disableRemove\"\r\n (mousedown)=\"stopEventPropagation($event)\"\r\n (click)=\"removeItem(item.id)\"\r\n ></div>\r\n <ng-template *ngIf=\"currentPlaceholder !== 'Default'\" buwGridItemPlaceholder>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 1'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-1\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 2'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-2\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n <div\r\n *ngIf=\"currentPlaceholder === 'Custom 3'\"\r\n class=\"grid-item-content custom-placeholder custom-placeholder-3\"\r\n >\r\n {{ item.id }}\r\n </div>\r\n </ng-template>\r\n </buw-grid-item>\r\n </buw-grid>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.DynamicItemComponent, selector: "bnrc-dynamic-item-component", inputs: ["mo", "allColumns", "moDataList", "columns", "column", "index", "last", "hideOpenIcon", "deviceName", "deviceSize", "rtl", "editMode", "setting", "parameters", "contextMenuItems", "canView", "showRowNumber", "rowNumber", "formSetting", "conditionalFormats", "disableOverflowContextMenu", "navigationArrow", "isCheckList", "fields", "isChecked", "layout94$", "inlineEditMode", "isNewInlineMo", "allowInlineEdit", "typeDefId", "rowIndicator", "rowIndicatorColor", "UlvMainCtrlr"] }, { kind: "directive", type: i2.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i3.KtdGridComponent, selector: "buw-grid", inputs: ["scrollableParent", "compactOnPropsChange", "preventCollision", "scrollSpeed", "compactType", "rowHeight", "cols", "layout", "gap", "height", "backgroundConfig"], outputs: ["layoutUpdated", "dragStarted", "resizeStarted", "dragEnded", "resizeEnded", "gridItemResize"] }, { kind: "component", type: i4.KtdGridItemComponent, selector: "buw-grid-item", inputs: ["minW", "minH", "maxW", "maxH", "transition", "id", "dragStartThreshold", "draggable", "resizable"] }, { kind: "directive", type: i5.KtdGridItemPlaceholder, selector: "ng-template[buwGridItemPlaceholder]", inputs: ["data"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
198
198
  }
199
199
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LayoutContainerComponent, decorators: [{
200
200
  type: Component,
@@ -6,7 +6,7 @@ import * as i2 from "../layout-container/layout-container.component";
6
6
  import * as i3 from "../layout-grid-mapper.pipe";
7
7
  export class ReportGridLayoutComponent extends ReportViewBaseComponent {
8
8
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportGridLayoutComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
9
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReportGridLayoutComponent, selector: "buw-report-grid-layout", providers: [], usesInheritance: true, ngImport: i0, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-layout-container [moDataList]=\"moDataList\" [layout]=\"moDataList | layoutGridMapper\"> </buw-layout-container>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"], dependencies: [{ kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i2.LayoutContainerComponent, selector: "buw-layout-container", inputs: ["layout", "moDataList"] }, { kind: "pipe", type: i3.LayoutGridMapperPipe, name: "layoutGridMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ReportGridLayoutComponent, selector: "buw-report-grid-layout", providers: [], usesInheritance: true, ngImport: i0, template: "<div style=\"position: relative\" dir=\"ltr\" fillEmptySpace [setMinHeight]=\"true\">\r\n <buw-layout-container [moDataList]=\"moDataList\" [layout]=\"moDataList | layoutGridMapper\"> </buw-layout-container>\r\n</div>\r\n", styles: [":host{display:block}:host ::ng-deep .grid-item-content{box-sizing:border-box;background:#ccc;border:1px solid;width:100%;height:100%;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center}:host ::ng-deep .grid-item-remove-handle{position:absolute;cursor:pointer;display:flex;justify-content:center;width:20px;height:20px;top:0;right:0}:host ::ng-deep .grid-item-remove-handle:after{content:\"x\";color:#121212;font-size:16px;font-weight:300;font-family:Arial,sans-serif}\n"], dependencies: [{ kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "height", "dontUseTopBound", "setMinHeight"], outputs: ["heightChanged"], exportAs: ["fillEmptySpace"] }, { kind: "component", type: i2.LayoutContainerComponent, selector: "buw-layout-container", inputs: ["layout", "moDataList"] }, { kind: "pipe", type: i3.LayoutGridMapperPipe, name: "layoutGridMapper" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
10
10
  }
11
11
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ReportGridLayoutComponent, decorators: [{
12
12
  type: Component,
@@ -2,16 +2,10 @@ import { Observable } from 'rxjs';
2
2
  import { filter } from 'rxjs/operators';
3
3
  /** Runs source observable outside the zone */
4
4
  export function ktdOutsideZone(zone) {
5
- return (source) => {
6
- return new Observable(observer => {
7
- return zone.runOutsideAngular(() => source.subscribe(observer));
8
- });
9
- };
5
+ return (source) => new Observable((observer) => zone.runOutsideAngular(() => source.subscribe(observer)));
10
6
  }
11
7
  /** Rxjs operator that makes source observable to no emit any data */
12
8
  export function ktdNoEmit() {
13
- return (source$) => {
14
- return source$.pipe(filter(() => false));
15
- };
9
+ return (source$) => source$.pipe(filter(() => false));
16
10
  }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdXNlci13b3Jrc3BhY2Uvc3JjL2xpYi91dGlscy9vcGVyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLDhDQUE4QztBQUM5QyxNQUFNLFVBQVUsY0FBYyxDQUFJLElBQVk7SUFDMUMsT0FBTyxDQUFDLE1BQXFCLEVBQUUsRUFBRTtRQUM3QixPQUFPLElBQUksVUFBVSxDQUFJLFFBQVEsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFlLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUMsQ0FBQztBQUNOLENBQUM7QUFHRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLFNBQVM7SUFDckIsT0FBTyxDQUFDLE9BQXdCLEVBQW1CLEVBQUU7UUFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogUnVucyBzb3VyY2Ugb2JzZXJ2YWJsZSBvdXRzaWRlIHRoZSB6b25lICovXG5leHBvcnQgZnVuY3Rpb24ga3RkT3V0c2lkZVpvbmU8VD4oem9uZTogTmdab25lKSB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlPFQ+KG9ic2VydmVyID0+IHtcbiAgICAgICAgICAgIHJldHVybiB6b25lLnJ1bk91dHNpZGVBbmd1bGFyPFN1YnNjcmlwdGlvbj4oKCkgPT4gc291cmNlLnN1YnNjcmliZShvYnNlcnZlcikpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG5cbi8qKiBSeGpzIG9wZXJhdG9yIHRoYXQgbWFrZXMgc291cmNlIG9ic2VydmFibGUgdG8gbm8gZW1pdCBhbnkgZGF0YSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZE5vRW1pdCgpIHtcbiAgICByZXR1cm4gKHNvdXJjZSQ6IE9ic2VydmFibGU8YW55Pik6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgICAgIHJldHVybiBzb3VyY2UkLnBpcGUoZmlsdGVyKCgpID0+IGZhbHNlKSk7XG4gICAgfTtcbn1cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdXNlci13b3Jrc3BhY2Uvc3JjL2xpYi91dGlscy9vcGVyYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXhDLDhDQUE4QztBQUM5QyxNQUFNLFVBQVUsY0FBYyxDQUFJLElBQVk7SUFDMUMsT0FBTyxDQUFDLE1BQXFCLEVBQUUsRUFBRSxDQUM3QixJQUFJLFVBQVUsQ0FBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFlLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hILENBQUM7QUFFRCxxRUFBcUU7QUFDckUsTUFBTSxVQUFVLFNBQVM7SUFDckIsT0FBTyxDQUFDLE9BQXdCLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG4vKiogUnVucyBzb3VyY2Ugb2JzZXJ2YWJsZSBvdXRzaWRlIHRoZSB6b25lICovXG5leHBvcnQgZnVuY3Rpb24ga3RkT3V0c2lkZVpvbmU8VD4oem9uZTogTmdab25lKSB7XG4gICAgcmV0dXJuIChzb3VyY2U6IE9ic2VydmFibGU8VD4pID0+XG4gICAgICAgIG5ldyBPYnNlcnZhYmxlPFQ+KChvYnNlcnZlcikgPT4gem9uZS5ydW5PdXRzaWRlQW5ndWxhcjxTdWJzY3JpcHRpb24+KCgpID0+IHNvdXJjZS5zdWJzY3JpYmUob2JzZXJ2ZXIpKSk7XG59XG5cbi8qKiBSeGpzIG9wZXJhdG9yIHRoYXQgbWFrZXMgc291cmNlIG9ic2VydmFibGUgdG8gbm8gZW1pdCBhbnkgZGF0YSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZE5vRW1pdCgpIHtcbiAgICByZXR1cm4gKHNvdXJjZSQ6IE9ic2VydmFibGU8YW55Pik6IE9ic2VydmFibGU8YW55PiA9PiBzb3VyY2UkLnBpcGUoZmlsdGVyKCgpID0+IGZhbHNlKSk7XG59XG5cbiJdfQ==
@@ -12,8 +12,10 @@ export function ktdIsMobileOrTablet() {
12
12
  }
13
13
  // Generic match pattern to identify mobile or tablet devices
14
14
  const isMobileDevice = /Android|webOS|BlackBerry|Windows Phone|iPad|iPhone|iPod/i.test(navigator.userAgent);
15
- // Since IOS 13 is not safe to just check for the generic solution. See: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct
16
- const isIOSMobileDevice = /iPad|iPhone|iPod/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
15
+ // Since IOS 13 is not safe to just check for the generic solution.
16
+ // See: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct
17
+ const isIOSMobileDevice = /iPad|iPhone|iPod/.test(navigator.platform) ||
18
+ (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
17
19
  isMobile = isMobileDevice || isIOSMobileDevice;
18
20
  return isMobile;
19
21
  }
@@ -36,8 +38,7 @@ export function ktdPointerClient(event) {
36
38
  };
37
39
  }
38
40
  export function ktdIsMouseEventOrMousePointerEvent(event) {
39
- return event.type === 'mousedown'
40
- || (event.type === 'pointerdown' && event.pointerType === 'mouse');
41
+ return (event.type === 'mousedown' || (event.type === 'pointerdown' && event.pointerType === 'mouse'));
41
42
  }
42
43
  /** Returns true if browser supports pointer events */
43
44
  export function ktdSupportsPointerEvents() {
@@ -49,14 +50,14 @@ export function ktdSupportsPointerEvents() {
49
50
  * @param touchNumber number of the touch to track the event, default to the first one.
50
51
  */
51
52
  function ktdMouseOrTouchDown(element, touchNumber = 1) {
52
- return iif(() => ktdIsMobileOrTablet(), fromEvent(element, 'touchstart', passiveEventListenerOptions).pipe(filter((touchEvent) => touchEvent.touches.length === touchNumber)), fromEvent(element, 'mousedown', activeEventListenerOptions).pipe(filter((mouseEvent) => {
53
- /**
54
- * 0 : Left mouse button
55
- * 1 : Wheel button or middle button (if present)
56
- * 2 : Right mouse button
57
- */
58
- return mouseEvent.button === 0; // Mouse down to be only fired if is left click
59
- })));
53
+ return iif(() => ktdIsMobileOrTablet(), fromEvent(element, 'touchstart', passiveEventListenerOptions).pipe(filter((touchEvent) => touchEvent.touches.length === touchNumber)), fromEvent(element, 'mousedown', activeEventListenerOptions).pipe(filter((mouseEvent) =>
54
+ /**
55
+ * 0 : Left mouse button
56
+ * 1 : Wheel button or middle button (if present)
57
+ * 2 : Right mouse button
58
+ */
59
+ mouseEvent.button === 0 // Mouse down to be only fired if is left click
60
+ )));
60
61
  }
61
62
  /**
62
63
  * Emits when a 'mousemove' or a 'touchmove' event gets fired.
@@ -105,6 +106,6 @@ export function ktdPointerUp(element) {
105
106
  if (!ktdSupportsPointerEvents()) {
106
107
  return ktdMouserOrTouchEnd(element);
107
108
  }
108
- return fromEvent(element, 'pointerup').pipe(filter(pointerEvent => pointerEvent.isPrimary));
109
+ return fromEvent(element, 'pointerup').pipe(filter((pointerEvent) => pointerEvent.isPrimary));
109
110
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvdXRpbHMvcG9pbnRlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpFLGlFQUFpRTtBQUNqRSxNQUFNLDJCQUEyQixHQUFHLGtDQUFrQyxDQUFDLEVBQUMsT0FBTyxFQUFFLElBQUksRUFBQyxDQUFDLENBQUM7QUFFeEYsaUVBQWlFO0FBQ2pFLE1BQU0sMEJBQTBCLEdBQUcsa0NBQWtDLENBQUMsRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQztBQUV4RixJQUFJLFFBQVEsR0FBbUIsSUFBSSxDQUFDO0FBRXBDLE1BQU0sVUFBVSxtQkFBbUI7SUFFL0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxNQUFNLGNBQWMsR0FBRywwREFBMEQsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVHLG9NQUFvTTtJQUNwTSxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxTQUFTLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRTdJLFFBQVEsR0FBRyxjQUFjLElBQUksaUJBQWlCLENBQUM7SUFFL0MsT0FBTyxRQUFRLENBQUM7QUFD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LENBQUE7QUFDTCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxPQUFPO0lBQ2xDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7UUFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQWUsT0FBTyxFQUFFLGFBQWEsRUFBRSwwQkFBcUQsQ0FBQyxDQUFDLElBQUksQ0FDOUcsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQ25ELENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFPO0lBQ2hDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7UUFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQWUsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUM5RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBpaWYsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnLi9wYXNzaXZlLWxpc3RlbmVycyc7XG5cbi8qKiBPcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gYmluZCBhIHBhc3NpdmUgZXZlbnQgbGlzdGVuZXIuICovXG5jb25zdCBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKHtwYXNzaXZlOiB0cnVlfSk7XG5cbi8qKiBPcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gYmluZCBhbiBhY3RpdmUgZXZlbnQgbGlzdGVuZXIuICovXG5jb25zdCBhY3RpdmVFdmVudExpc3RlbmVyT3B0aW9ucyA9IGt0ZE5vcm1hbGl6ZVBhc3NpdmVMaXN0ZW5lck9wdGlvbnMoe3Bhc3NpdmU6IGZhbHNlfSk7XG5cbmxldCBpc01vYmlsZTogYm9vbGVhbiB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24ga3RkSXNNb2JpbGVPclRhYmxldCgpOiBib29sZWFuIHtcblxuICAgIGlmIChpc01vYmlsZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBpc01vYmlsZTtcbiAgICB9XG5cbiAgICAvLyBHZW5lcmljIG1hdGNoIHBhdHRlcm4gdG8gaWRlbnRpZnkgbW9iaWxlIG9yIHRhYmxldCBkZXZpY2VzXG4gICAgY29uc3QgaXNNb2JpbGVEZXZpY2UgPSAvQW5kcm9pZHx3ZWJPU3xCbGFja0JlcnJ5fFdpbmRvd3MgUGhvbmV8aVBhZHxpUGhvbmV8aVBvZC9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbiAgICAvLyBTaW5jZSBJT1MgMTMgaXMgbm90IHNhZmUgdG8ganVzdCBjaGVjayBmb3IgdGhlIGdlbmVyaWMgc29sdXRpb24uIFNlZTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTgwMTk0NjMvaG93LXRvLWRldGVjdC1kZXZpY2UtbmFtZS1pbi1zYWZhcmktb24taW9zLTEzLXdoaWxlLWl0LWRvZXNudC1zaG93LXRoZS1jb3JyZWN0XG4gICAgY29uc3QgaXNJT1NNb2JpbGVEZXZpY2UgPSAvaVBhZHxpUGhvbmV8aVBvZC8udGVzdChuYXZpZ2F0b3IucGxhdGZvcm0pIHx8IChuYXZpZ2F0b3IucGxhdGZvcm0gPT09ICdNYWNJbnRlbCcgJiYgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMSk7XG5cbiAgICBpc01vYmlsZSA9IGlzTW9iaWxlRGV2aWNlIHx8IGlzSU9TTW9iaWxlRGV2aWNlO1xuXG4gICAgcmV0dXJuIGlzTW9iaWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga3RkSXNNb3VzZUV2ZW50KGV2ZW50OiBhbnkpOiBldmVudCBpcyBNb3VzZUV2ZW50IHtcbiAgICByZXR1cm4gKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmNsaWVudFggIT0gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt0ZElzVG91Y2hFdmVudChldmVudDogYW55KTogZXZlbnQgaXMgVG91Y2hFdmVudCB7XG4gICAgcmV0dXJuIChldmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzICE9IG51bGwgJiYgKGV2ZW50IGFzIFRvdWNoRXZlbnQpLnRvdWNoZXMubGVuZ3RoICE9IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRQb2ludGVyQ2xpZW50WChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIHJldHVybiBrdGRJc01vdXNlRXZlbnQoZXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJDbGllbnRZKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IG51bWJlciB7XG4gICAgcmV0dXJuIGt0ZElzTW91c2VFdmVudChldmVudCkgPyBldmVudC5jbGllbnRZIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRZO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga3RkUG9pbnRlckNsaWVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB7IGNsaWVudFg6IG51bWJlciwgY2xpZW50WTogbnVtYmVyIH0ge1xuICAgIHJldHVybiB7XG4gICAgICAgIGNsaWVudFg6IGt0ZElzTW91c2VFdmVudChldmVudCkgPyBldmVudC5jbGllbnRYIDogZXZlbnQudG91Y2hlc1swXS5jbGllbnRYLFxuICAgICAgICBjbGllbnRZOiBrdGRJc01vdXNlRXZlbnQoZXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WVxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRJc01vdXNlRXZlbnRPck1vdXNlUG9pbnRlckV2ZW50KGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IFBvaW50ZXJFdmVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBldmVudC50eXBlID09PSAnbW91c2Vkb3duJ1xuICAgICAgICB8fCAoZXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJyAmJiAoZXZlbnQgYXMgUG9pbnRlckV2ZW50KS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJyk7XG59XG5cbi8qKiBSZXR1cm5zIHRydWUgaWYgYnJvd3NlciBzdXBwb3J0cyBwb2ludGVyIGV2ZW50cyAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFN1cHBvcnRzUG9pbnRlckV2ZW50cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF3aW5kb3cuUG9pbnRlckV2ZW50O1xufVxuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSBtb3VzZWRvd24gb3IgdG91Y2hzdGFydCBlbWl0cy4gQXZvaWRzIGNvbmZsaWN0cyBiZXR3ZWVuIGJvdGggZXZlbnRzLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byAgbGlzdGVuIHRoZSBldmVudHMuXG4gKiBAcGFyYW0gdG91Y2hOdW1iZXIgbnVtYmVyIG9mIHRoZSB0b3VjaCB0byB0cmFjayB0aGUgZXZlbnQsIGRlZmF1bHQgdG8gdGhlIGZpcnN0IG9uZS5cbiAqL1xuZnVuY3Rpb24ga3RkTW91c2VPclRvdWNoRG93bihlbGVtZW50LCB0b3VjaE51bWJlciA9IDEpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50PiB7XG4gICAgcmV0dXJuIGlpZihcbiAgICAgICAgKCkgPT4ga3RkSXNNb2JpbGVPclRhYmxldCgpLFxuICAgICAgICBmcm9tRXZlbnQ8VG91Y2hFdmVudD4oZWxlbWVudCwgJ3RvdWNoc3RhcnQnLCBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKHRvdWNoRXZlbnQpID0+IHRvdWNoRXZlbnQudG91Y2hlcy5sZW5ndGggPT09IHRvdWNoTnVtYmVyKVxuICAgICAgICApLFxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlZG93bicsIGFjdGl2ZUV2ZW50TGlzdGVuZXJPcHRpb25zIGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogMCA6IExlZnQgbW91c2UgYnV0dG9uXG4gICAgICAgICAgICAgICAgICogMSA6IFdoZWVsIGJ1dHRvbiBvciBtaWRkbGUgYnV0dG9uIChpZiBwcmVzZW50KVxuICAgICAgICAgICAgICAgICAqIDIgOiBSaWdodCBtb3VzZSBidXR0b25cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICByZXR1cm4gbW91c2VFdmVudC5idXR0b24gPT09IDA7IC8vIE1vdXNlIGRvd24gdG8gYmUgb25seSBmaXJlZCBpZiBpcyBsZWZ0IGNsaWNrXG4gICAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgKTtcbn1cblxuLyoqXG4gKiBFbWl0cyB3aGVuIGEgJ21vdXNlbW92ZScgb3IgYSAndG91Y2htb3ZlJyBldmVudCBnZXRzIGZpcmVkLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byAgbGlzdGVuIHRoZSBldmVudHMuXG4gKiBAcGFyYW0gdG91Y2hOdW1iZXIgbnVtYmVyIG9mIHRoZSB0b3VjaCB0byB0cmFjayB0aGUgZXZlbnQsIGRlZmF1bHQgdG8gdGhlIGZpcnN0IG9uZS5cbiAqL1xuZnVuY3Rpb24ga3RkTW91c2VPclRvdWNoTW92ZShlbGVtZW50OiBIVE1MRWxlbWVudCwgdG91Y2hOdW1iZXIgPSAxKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4ge1xuICAgIHJldHVybiBpaWYoXG4gICAgICAgICgpID0+IGt0ZElzTW9iaWxlT3JUYWJsZXQoKSxcbiAgICAgICAgZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsZW1lbnQsICd0b3VjaG1vdmUnLCBhY3RpdmVFdmVudExpc3RlbmVyT3B0aW9ucyBhcyBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigodG91Y2hFdmVudCkgPT4gdG91Y2hFdmVudC50b3VjaGVzLmxlbmd0aCA9PT0gdG91Y2hOdW1iZXIpLFxuICAgICAgICApLFxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlbW92ZScsIGFjdGl2ZUV2ZW50TGlzdGVuZXJPcHRpb25zIGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRUb3VjaEVuZChlbGVtZW50LCB0b3VjaE51bWJlciA9IDEpOiBPYnNlcnZhYmxlPFRvdWNoRXZlbnQ+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgIGZyb21FdmVudDxUb3VjaEV2ZW50PihlbGVtZW50LCAndG91Y2hlbmQnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh0b3VjaEV2ZW50KSA9PiB0b3VjaEV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSB0b3VjaE51bWJlciAtIDEpXG4gICAgICAgICksXG4gICAgICAgIGZyb21FdmVudDxUb3VjaEV2ZW50PihlbGVtZW50LCAndG91Y2hjYW5jZWwnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh0b3VjaEV2ZW50KSA9PiB0b3VjaEV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSB0b3VjaE51bWJlciAtIDEpXG4gICAgICAgIClcbiAgICApO1xufVxuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSB0aGVyZSBpcyBhICdtb3VzZXVwJyBvciB0aGUgdG91Y2ggZW5kcy5cbiAqIEBwYXJhbSBlbGVtZW50LCBodG1sIGVsZW1lbnQgd2hlcmUgdG8gIGxpc3RlbiB0aGUgZXZlbnRzLlxuICogQHBhcmFtIHRvdWNoTnVtYmVyIG51bWJlciBvZiB0aGUgdG91Y2ggdG8gdHJhY2sgdGhlIGV2ZW50LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBvbmUuXG4gKi9cbmZ1bmN0aW9uIGt0ZE1vdXNlck9yVG91Y2hFbmQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvdWNoTnVtYmVyID0gMSk6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+IHtcbiAgICByZXR1cm4gaWlmKFxuICAgICAgICAoKSA9PiBrdGRJc01vYmlsZU9yVGFibGV0KCksXG4gICAgICAgIGt0ZFRvdWNoRW5kKGVsZW1lbnQsIHRvdWNoTnVtYmVyKSxcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZXVwJyksXG4gICAgKTtcbn1cblxuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSAncG9pbnRlcmRvd24nIGV2ZW50IG9jY3VycyAob25seSBmb3IgdGhlIHByaW1hcnkgcG9pbnRlcikuIEZhbGxiYWNrcyB0byAnbW91c2Vtb3ZlJyBvciBhICd0b3VjaG1vdmUnIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byBsaXN0ZW4gdGhlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJEb3duKGVsZW1lbnQpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgUG9pbnRlckV2ZW50PiB7XG4gICAgaWYgKCFrdGRTdXBwb3J0c1BvaW50ZXJFdmVudHMoKSkge1xuICAgICAgICByZXR1cm4ga3RkTW91c2VPclRvdWNoRG93bihlbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4oZWxlbWVudCwgJ3BvaW50ZXJkb3duJywgYWN0aXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpLnBpcGUoXG4gICAgICAgIGZpbHRlcigocG9pbnRlckV2ZW50KSA9PiBwb2ludGVyRXZlbnQuaXNQcmltYXJ5KVxuICAgIClcbn1cblxuLyoqXG4gKiBFbWl0cyB3aGVuIGEgJ3BvaW50ZXJtb3ZlJyBldmVudCBvY2N1cnMgKG9ubHkgZm9yIHRoZSBwcmltYXJ5IHBvaW50ZXIpLiBGYWxsYmFja3MgdG8gJ21vdXNlbW92ZScgb3IgYSAndG91Y2htb3ZlJyBpZiBwb2ludGVyIGV2ZW50cyBhcmUgbm90IHN1cHBvcnRlZC5cbiAqIEBwYXJhbSBlbGVtZW50LCBodG1sIGVsZW1lbnQgd2hlcmUgdG8gbGlzdGVuIHRoZSBldmVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGRQb2ludGVyTW92ZShlbGVtZW50KTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IFBvaW50ZXJFdmVudD4ge1xuICAgIGlmICgha3RkU3VwcG9ydHNQb2ludGVyRXZlbnRzKCkpIHtcbiAgICAgICAgcmV0dXJuIGt0ZE1vdXNlT3JUb3VjaE1vdmUoZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50PihlbGVtZW50LCAncG9pbnRlcm1vdmUnLCBhY3RpdmVFdmVudExpc3RlbmVyT3B0aW9ucyBhcyBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykucGlwZShcbiAgICAgICAgZmlsdGVyKChwb2ludGVyRXZlbnQpID0+IHBvaW50ZXJFdmVudC5pc1ByaW1hcnkpLFxuICAgICk7XG59XG5cbi8qKlxuICogRW1pdHMgd2hlbiBhICdwb2ludGVydXAnIGV2ZW50IG9jY3VycyAob25seSBmb3IgdGhlIHByaW1hcnkgcG9pbnRlcikuIEZhbGxiYWNrcyB0byAnbW91c2Vtb3ZlJyBvciBhICd0b3VjaG1vdmUnIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byBsaXN0ZW4gdGhlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJVcChlbGVtZW50KTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IFBvaW50ZXJFdmVudD4ge1xuICAgIGlmICgha3RkU3VwcG9ydHNQb2ludGVyRXZlbnRzKCkpIHtcbiAgICAgICAgcmV0dXJuIGt0ZE1vdXNlck9yVG91Y2hFbmQoZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50PihlbGVtZW50LCAncG9pbnRlcnVwJykucGlwZShmaWx0ZXIocG9pbnRlckV2ZW50ID0+IHBvaW50ZXJFdmVudC5pc1ByaW1hcnkpKTtcbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9pbnRlci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvdXRpbHMvcG9pbnRlci51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpFLGlFQUFpRTtBQUNqRSxNQUFNLDJCQUEyQixHQUFHLGtDQUFrQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFMUYsaUVBQWlFO0FBQ2pFLE1BQU0sMEJBQTBCLEdBQUcsa0NBQWtDLENBQUMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztBQUUxRixJQUFJLFFBQVEsR0FBbUIsSUFBSSxDQUFDO0FBRXBDLE1BQU0sVUFBVSxtQkFBbUI7SUFDL0IsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbkIsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxNQUFNLGNBQWMsR0FBRywwREFBMEQsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTVHLG1FQUFtRTtJQUNuRSxtSUFBbUk7SUFDbkksTUFBTSxpQkFBaUIsR0FDbkIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7UUFDM0MsQ0FBQyxTQUFTLENBQUMsUUFBUSxLQUFLLFVBQVUsSUFBSSxTQUFTLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXhFLFFBQVEsR0FBRyxjQUFjLElBQUksaUJBQWlCLENBQUM7SUFFL0MsT0FB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QUNuRCxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQUMsT0FBTztJQUNsQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBQzlCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFlLE9BQU8sRUFBRSxhQUFhLEVBQUUsMEJBQXFELENBQUMsQ0FBQyxJQUFJLENBQzlHLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUNuRCxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQUMsT0FBTztJQUNoQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxDQUFDO1FBQzlCLE9BQU8sbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFlLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNoSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBpaWYsIG1lcmdlLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnLi9wYXNzaXZlLWxpc3RlbmVycyc7XG5cbi8qKiBPcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgdG8gYmluZCBhIHBhc3NpdmUgZXZlbnQgbGlzdGVuZXIuICovXG5jb25zdCBwYXNzaXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgPSBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zKHsgcGFzc2l2ZTogdHJ1ZSB9KTtcblxuLyoqIE9wdGlvbnMgdGhhdCBjYW4gYmUgdXNlZCB0byBiaW5kIGFuIGFjdGl2ZSBldmVudCBsaXN0ZW5lci4gKi9cbmNvbnN0IGFjdGl2ZUV2ZW50TGlzdGVuZXJPcHRpb25zID0ga3RkTm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyh7IHBhc3NpdmU6IGZhbHNlIH0pO1xuXG5sZXQgaXNNb2JpbGU6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGt0ZElzTW9iaWxlT3JUYWJsZXQoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzTW9iaWxlICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGlzTW9iaWxlO1xuICAgIH1cblxuICAgIC8vIEdlbmVyaWMgbWF0Y2ggcGF0dGVybiB0byBpZGVudGlmeSBtb2JpbGUgb3IgdGFibGV0IGRldmljZXNcbiAgICBjb25zdCBpc01vYmlsZURldmljZSA9IC9BbmRyb2lkfHdlYk9TfEJsYWNrQmVycnl8V2luZG93cyBQaG9uZXxpUGFkfGlQaG9uZXxpUG9kL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuICAgIC8vIFNpbmNlIElPUyAxMyBpcyBub3Qgc2FmZSB0byBqdXN0IGNoZWNrIGZvciB0aGUgZ2VuZXJpYyBzb2x1dGlvbi5cbiAgICAvLyBTZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzU4MDE5NDYzL2hvdy10by1kZXRlY3QtZGV2aWNlLW5hbWUtaW4tc2FmYXJpLW9uLWlvcy0xMy13aGlsZS1pdC1kb2VzbnQtc2hvdy10aGUtY29ycmVjdFxuICAgIGNvbnN0IGlzSU9TTW9iaWxlRGV2aWNlID1cbiAgICAgICAgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnBsYXRmb3JtKSB8fFxuICAgICAgICAobmF2aWdhdG9yLnBsYXRmb3JtID09PSAnTWFjSW50ZWwnICYmIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDEpO1xuXG4gICAgaXNNb2JpbGUgPSBpc01vYmlsZURldmljZSB8fCBpc0lPU01vYmlsZURldmljZTtcblxuICAgIHJldHVybiBpc01vYmlsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt0ZElzTW91c2VFdmVudChldmVudDogYW55KTogZXZlbnQgaXMgTW91c2VFdmVudCB7XG4gICAgcmV0dXJuIChldmVudCBhcyBNb3VzZUV2ZW50KS5jbGllbnRYICE9IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRJc1RvdWNoRXZlbnQoZXZlbnQ6IGFueSk6IGV2ZW50IGlzIFRvdWNoRXZlbnQge1xuICAgIHJldHVybiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlcyAhPSBudWxsICYmIChldmVudCBhcyBUb3VjaEV2ZW50KS50b3VjaGVzLmxlbmd0aCAhPSBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga3RkUG9pbnRlckNsaWVudFgoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4ga3RkSXNNb3VzZUV2ZW50KGV2ZW50KSA/IGV2ZW50LmNsaWVudFggOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRQb2ludGVyQ2xpZW50WShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIHJldHVybiBrdGRJc01vdXNlRXZlbnQoZXZlbnQpID8gZXZlbnQuY2xpZW50WSA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJDbGllbnQoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogeyBjbGllbnRYOiBudW1iZXI7IGNsaWVudFk6IG51bWJlciB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgICBjbGllbnRYOiBrdGRJc01vdXNlRXZlbnQoZXZlbnQpID8gZXZlbnQuY2xpZW50WCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCxcbiAgICAgICAgY2xpZW50WToga3RkSXNNb3VzZUV2ZW50KGV2ZW50KSA/IGV2ZW50LmNsaWVudFkgOiBldmVudC50b3VjaGVzWzBdLmNsaWVudFlcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24ga3RkSXNNb3VzZUV2ZW50T3JNb3VzZVBvaW50ZXJFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBQb2ludGVyRXZlbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgICBldmVudC50eXBlID09PSAnbW91c2Vkb3duJyB8fCAoZXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJyAmJiAoZXZlbnQgYXMgUG9pbnRlckV2ZW50KS5wb2ludGVyVHlwZSA9PT0gJ21vdXNlJylcbiAgICApO1xufVxuXG4vKiogUmV0dXJucyB0cnVlIGlmIGJyb3dzZXIgc3VwcG9ydHMgcG9pbnRlciBldmVudHMgKi9cbmV4cG9ydCBmdW5jdGlvbiBrdGRTdXBwb3J0c1BvaW50ZXJFdmVudHMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhd2luZG93LlBvaW50ZXJFdmVudDtcbn1cblxuLyoqXG4gKiBFbWl0cyB3aGVuIGEgbW91c2Vkb3duIG9yIHRvdWNoc3RhcnQgZW1pdHMuIEF2b2lkcyBjb25mbGljdHMgYmV0d2VlbiBib3RoIGV2ZW50cy5cbiAqIEBwYXJhbSBlbGVtZW50LCBodG1sIGVsZW1lbnQgd2hlcmUgdG8gIGxpc3RlbiB0aGUgZXZlbnRzLlxuICogQHBhcmFtIHRvdWNoTnVtYmVyIG51bWJlciBvZiB0aGUgdG91Y2ggdG8gdHJhY2sgdGhlIGV2ZW50LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBvbmUuXG4gKi9cbmZ1bmN0aW9uIGt0ZE1vdXNlT3JUb3VjaERvd24oZWxlbWVudCwgdG91Y2hOdW1iZXIgPSAxKTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudD4ge1xuICAgIHJldHVybiBpaWYoXG4gICAgICAgICgpID0+IGt0ZElzTW9iaWxlT3JUYWJsZXQoKSxcbiAgICAgICAgZnJvbUV2ZW50PFRvdWNoRXZlbnQ+KGVsZW1lbnQsICd0b3VjaHN0YXJ0JywgcGFzc2l2ZUV2ZW50TGlzdGVuZXJPcHRpb25zIGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh0b3VjaEV2ZW50KSA9PiB0b3VjaEV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSB0b3VjaE51bWJlcilcbiAgICAgICAgKSxcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZWRvd24nLCBhY3RpdmVFdmVudExpc3RlbmVyT3B0aW9ucyBhcyBBZGRFdmVudExpc3RlbmVyT3B0aW9ucykucGlwZShcbiAgICAgICAgICAgIGZpbHRlcigobW91c2VFdmVudDogTW91c2VFdmVudCkgPT4gXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogMCA6IExlZnQgbW91c2UgYnV0dG9uXG4gICAgICAgICAgICAgICAgICogMSA6IFdoZWVsIGJ1dHRvbiBvciBtaWRkbGUgYnV0dG9uIChpZiBwcmVzZW50KVxuICAgICAgICAgICAgICAgICAqIDIgOiBSaWdodCBtb3VzZSBidXR0b25cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgbW91c2VFdmVudC5idXR0b24gPT09IDAgLy8gTW91c2UgZG93biB0byBiZSBvbmx5IGZpcmVkIGlmIGlzIGxlZnQgY2xpY2tcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICk7XG59XG5cbi8qKlxuICogRW1pdHMgd2hlbiBhICdtb3VzZW1vdmUnIG9yIGEgJ3RvdWNobW92ZScgZXZlbnQgZ2V0cyBmaXJlZC5cbiAqIEBwYXJhbSBlbGVtZW50LCBodG1sIGVsZW1lbnQgd2hlcmUgdG8gIGxpc3RlbiB0aGUgZXZlbnRzLlxuICogQHBhcmFtIHRvdWNoTnVtYmVyIG51bWJlciBvZiB0aGUgdG91Y2ggdG8gdHJhY2sgdGhlIGV2ZW50LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBvbmUuXG4gKi9cbmZ1bmN0aW9uIGt0ZE1vdXNlT3JUb3VjaE1vdmUoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvdWNoTnVtYmVyID0gMSk6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+IHtcbiAgICByZXR1cm4gaWlmKFxuICAgICAgICAoKSA9PiBrdGRJc01vYmlsZU9yVGFibGV0KCksXG4gICAgICAgIGZyb21FdmVudDxUb3VjaEV2ZW50PihlbGVtZW50LCAndG91Y2htb3ZlJywgYWN0aXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIoKHRvdWNoRXZlbnQpID0+IHRvdWNoRXZlbnQudG91Y2hlcy5sZW5ndGggPT09IHRvdWNoTnVtYmVyKVxuICAgICAgICApLFxuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZWxlbWVudCwgJ21vdXNlbW92ZScsIGFjdGl2ZUV2ZW50TGlzdGVuZXJPcHRpb25zIGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKVxuICAgICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBrdGRUb3VjaEVuZChlbGVtZW50LCB0b3VjaE51bWJlciA9IDEpOiBPYnNlcnZhYmxlPFRvdWNoRXZlbnQ+IHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICAgIGZyb21FdmVudDxUb3VjaEV2ZW50PihlbGVtZW50LCAndG91Y2hlbmQnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh0b3VjaEV2ZW50KSA9PiB0b3VjaEV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSB0b3VjaE51bWJlciAtIDEpXG4gICAgICAgICksXG4gICAgICAgIGZyb21FdmVudDxUb3VjaEV2ZW50PihlbGVtZW50LCAndG91Y2hjYW5jZWwnKS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKCh0b3VjaEV2ZW50KSA9PiB0b3VjaEV2ZW50LnRvdWNoZXMubGVuZ3RoID09PSB0b3VjaE51bWJlciAtIDEpXG4gICAgICAgIClcbiAgICApO1xufVxuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSB0aGVyZSBpcyBhICdtb3VzZXVwJyBvciB0aGUgdG91Y2ggZW5kcy5cbiAqIEBwYXJhbSBlbGVtZW50LCBodG1sIGVsZW1lbnQgd2hlcmUgdG8gIGxpc3RlbiB0aGUgZXZlbnRzLlxuICogQHBhcmFtIHRvdWNoTnVtYmVyIG51bWJlciBvZiB0aGUgdG91Y2ggdG8gdHJhY2sgdGhlIGV2ZW50LCBkZWZhdWx0IHRvIHRoZSBmaXJzdCBvbmUuXG4gKi9cbmZ1bmN0aW9uIGt0ZE1vdXNlck9yVG91Y2hFbmQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHRvdWNoTnVtYmVyID0gMSk6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQ+IHtcbiAgICByZXR1cm4gaWlmKFxuICAgICAgICAoKSA9PiBrdGRJc01vYmlsZU9yVGFibGV0KCksXG4gICAgICAgIGt0ZFRvdWNoRW5kKGVsZW1lbnQsIHRvdWNoTnVtYmVyKSxcbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KGVsZW1lbnQsICdtb3VzZXVwJylcbiAgICApO1xufVxuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSAncG9pbnRlcmRvd24nIGV2ZW50IG9jY3VycyAob25seSBmb3IgdGhlIHByaW1hcnkgcG9pbnRlcikuIEZhbGxiYWNrcyB0byAnbW91c2Vtb3ZlJyBvciBhICd0b3VjaG1vdmUnIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byBsaXN0ZW4gdGhlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJEb3duKGVsZW1lbnQpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50IHwgUG9pbnRlckV2ZW50PiB7XG4gICAgaWYgKCFrdGRTdXBwb3J0c1BvaW50ZXJFdmVudHMoKSkge1xuICAgICAgICByZXR1cm4ga3RkTW91c2VPclRvdWNoRG93bihlbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4oZWxlbWVudCwgJ3BvaW50ZXJkb3duJywgYWN0aXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpLnBpcGUoXG4gICAgICAgIGZpbHRlcigocG9pbnRlckV2ZW50KSA9PiBwb2ludGVyRXZlbnQuaXNQcmltYXJ5KVxuICAgICk7XG59XG5cbi8qKlxuICogRW1pdHMgd2hlbiBhICdwb2ludGVybW92ZScgZXZlbnQgb2NjdXJzIChvbmx5IGZvciB0aGUgcHJpbWFyeSBwb2ludGVyKS4gRmFsbGJhY2tzIHRvICdtb3VzZW1vdmUnIG9yIGEgJ3RvdWNobW92ZScgaWYgcG9pbnRlciBldmVudHMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gKiBAcGFyYW0gZWxlbWVudCwgaHRtbCBlbGVtZW50IHdoZXJlIHRvIGxpc3RlbiB0aGUgZXZlbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga3RkUG9pbnRlck1vdmUoZWxlbWVudCk6IE9ic2VydmFibGU8TW91c2VFdmVudCB8IFRvdWNoRXZlbnQgfCBQb2ludGVyRXZlbnQ+IHtcbiAgICBpZiAoIWt0ZFN1cHBvcnRzUG9pbnRlckV2ZW50cygpKSB7XG4gICAgICAgIHJldHVybiBrdGRNb3VzZU9yVG91Y2hNb3ZlKGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbUV2ZW50PFBvaW50ZXJFdmVudD4oZWxlbWVudCwgJ3BvaW50ZXJtb3ZlJywgYWN0aXZlRXZlbnRMaXN0ZW5lck9wdGlvbnMgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMpLnBpcGUoXG4gICAgICAgIGZpbHRlcigocG9pbnRlckV2ZW50KSA9PiBwb2ludGVyRXZlbnQuaXNQcmltYXJ5KVxuICAgICk7XG59XG5cbi8qKlxuICogRW1pdHMgd2hlbiBhICdwb2ludGVydXAnIGV2ZW50IG9jY3VycyAob25seSBmb3IgdGhlIHByaW1hcnkgcG9pbnRlcikuIEZhbGxiYWNrcyB0byAnbW91c2Vtb3ZlJyBvciBhICd0b3VjaG1vdmUnIGlmIHBvaW50ZXIgZXZlbnRzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICogQHBhcmFtIGVsZW1lbnQsIGh0bWwgZWxlbWVudCB3aGVyZSB0byBsaXN0ZW4gdGhlIGV2ZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFBvaW50ZXJVcChlbGVtZW50KTogT2JzZXJ2YWJsZTxNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCB8IFBvaW50ZXJFdmVudD4ge1xuICAgIGlmICgha3RkU3VwcG9ydHNQb2ludGVyRXZlbnRzKCkpIHtcbiAgICAgICAgcmV0dXJuIGt0ZE1vdXNlck9yVG91Y2hFbmQoZWxlbWVudCk7XG4gICAgfVxuICAgIHJldHVybiBmcm9tRXZlbnQ8UG9pbnRlckV2ZW50PihlbGVtZW50LCAncG9pbnRlcnVwJykucGlwZShmaWx0ZXIoKHBvaW50ZXJFdmVudCkgPT4gcG9pbnRlckV2ZW50LmlzUHJpbWFyeSkpO1xufVxuXG4iXX0=
@@ -77,8 +77,7 @@ function getHorizontalScrollDirection(clientRect, pointerX) {
77
77
  * @param scrollStep, scroll step in CSS pixels that would be applied in every loop.
78
78
  */
79
79
  function scrollToDirectionInterval$(scrollNode, verticalScrollDirection, horizontalScrollDirection, scrollStep = 2) {
80
- return interval(0, animationFrameScheduler)
81
- .pipe(tap(() => {
80
+ return interval(0, animationFrameScheduler).pipe(tap(() => {
82
81
  if (verticalScrollDirection === 1 /* AutoScrollVerticalDirection.UP */) {
83
82
  incrementVerticalScroll(scrollNode, -scrollStep);
84
83
  }
@@ -134,10 +133,8 @@ export function ktdScrollIfNearElementClientRect$(scrollableParent, options) {
134
133
  horizontalScrollDirection = 0 /* AutoScrollHorizontalDirection.NONE */;
135
134
  }
136
135
  return { verticalScrollDirection, horizontalScrollDirection };
137
- }), distinctUntilChanged((prev, actual) => {
138
- return prev.verticalScrollDirection === actual.verticalScrollDirection
139
- && prev.horizontalScrollDirection === actual.horizontalScrollDirection;
140
- }), switchMap(({ verticalScrollDirection, horizontalScrollDirection }) => {
136
+ }), distinctUntilChanged((prev, actual) => prev.verticalScrollDirection === actual.verticalScrollDirection &&
137
+ prev.horizontalScrollDirection === actual.horizontalScrollDirection), switchMap(({ verticalScrollDirection, horizontalScrollDirection }) => {
141
138
  if (verticalScrollDirection || horizontalScrollDirection) {
142
139
  return scrollToDirectionInterval$(scrollNode, verticalScrollDirection, horizontalScrollDirection, options?.scrollStep);
143
140
  }
@@ -188,6 +185,7 @@ function getViewportSize() {
188
185
  };
189
186
  }
190
187
  /** Gets a ClientRect for the viewport's bounds. */
188
+ // eslint-disable-next-line
191
189
  function getViewportRect() {
192
190
  // Use the document element's bounding rect rather than the window scroll properties
193
191
  // (e.g. pageYOffset, scrollY) due to in issue in Chrome and IE where window scroll
@@ -206,7 +204,7 @@ function getViewportRect() {
206
204
  bottom: scrollPosition.top + height,
207
205
  right: scrollPosition.left + width,
208
206
  height,
209
- width,
207
+ width
210
208
  };
211
209
  }
212
210
  /** Gets the (top, left) scroll position of the viewport. */
@@ -220,14 +218,12 @@ function getViewportScrollPosition() {
220
218
  const windowRef = document.defaultView || window;
221
219
  const documentElement = document.documentElement;
222
220
  const documentRect = documentElement.getBoundingClientRect();
223
- const top = -documentRect.top || document.body.scrollTop || windowRef.scrollY ||
224
- documentElement.scrollTop || 0;
225
- const left = -documentRect.left || document.body.scrollLeft || windowRef.scrollX ||
226
- documentElement.scrollLeft || 0;
221
+ const top = -documentRect.top || document.body.scrollTop || windowRef.scrollY || documentElement.scrollTop || 0;
222
+ const left = -documentRect.left || document.body.scrollLeft || windowRef.scrollX || documentElement.scrollLeft || 0;
227
223
  return { top, left };
228
224
  }
229
225
  /** Returns the document scroll width */
230
226
  function getDocumentScrollWidth() {
231
227
  return Math.max(document.body.scrollWidth, document.documentElement.scrollWidth);
232
228
  }
233
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdXNlci13b3Jrc3BhY2Uvc3JjL2xpYi91dGlscy9zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztBQWN4Qzs7OztHQUlHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxJQUEwQixFQUFFLE1BQWM7SUFDdkUsSUFBSSxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDakIsSUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQztTQUFNLENBQUM7UUFDSiwwRkFBMEY7UUFDekYsSUFBb0IsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDO0lBQzlDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMseUJBQXlCLENBQUMsSUFBMEIsRUFBRSxNQUFjO0lBQ3pFLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLElBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7U0FBTSxDQUFDO1FBQ0osMEZBQTBGO1FBQ3pGLElBQW9CLENBQUMsVUFBVSxJ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TixDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMseUJBQXlCO0lBRTlCLDJGQUEyRjtJQUMzRiwwRkFBMEY7SUFDMUYsNEZBQTRGO0lBQzVGLG9GQUFvRjtJQUNwRix3RkFBd0Y7SUFDeEYsc0NBQXNDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDO0lBQ2pELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFnQixDQUFDO0lBQ2xELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBRTdELE1BQU0sR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsT0FBTztRQUN6RSxlQUFlLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUVuQyxNQUFNLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU87UUFDNUUsZUFBZSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFFcEMsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsd0NBQXdDO0FBQ3hDLFNBQVMsc0JBQXNCO0lBQzNCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3JGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhbmltYXRpb25GcmFtZVNjaGVkdWxlciwgZnJvbUV2ZW50LCBpbnRlcnZhbCwgTkVWRVIsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsga3RkTm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyB9IGZyb20gJy4vcGFzc2l2ZS1saXN0ZW5lcnMnO1xuaW1wb3J0IHsgZ2V0TXV0YWJsZUNsaWVudFJlY3QsIEt0ZENsaWVudFJlY3QgfSBmcm9tICcuL2NsaWVudC1yZWN0JztcbmltcG9ydCB7IGt0ZE5vRW1pdCB9IGZyb20gJy4vb3BlcmF0b3JzJztcblxuLyoqXG4gKiBQcm94aW1pdHksIGFzIGEgcmF0aW8gdG8gd2lkdGgvaGVpZ2h0IGF0IHdoaWNoIHRvIHN0YXJ0IGF1dG8tc2Nyb2xsaW5nLlxuICogVGhlIHZhbHVlIGNvbWVzIGZyb20gdHJ5aW5nIGl0IG91dCBtYW51YWxseSB1bnRpbCBpdCBmZWVscyByaWdodC5cbiAqL1xuY29uc3QgU0NST0xMX1BST1hJTUlUWV9USFJFU0hPTEQgPSAwLjA1O1xuXG4vKiogVmVydGljYWwgZGlyZWN0aW9uIGluIHdoaWNoIHdlIGNhbiBhdXRvLXNjcm9sbC4gKi9cbmNvbnN0IGVudW0gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uIHtOT05FLCBVUCwgRE9XTn1cblxuLyoqIEhvcml6b250YWwgZGlyZWN0aW9uIGluIHdoaWNoIHdlIGNhbiBhdXRvLXNjcm9sbC4gKi9cbmNvbnN0IGVudW0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24ge05PTkUsIExFRlQsIFJJR0hUfVxuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZFNjcm9sbFBvc2l0aW9uIHtcbiAgICB0b3A6IG51bWJlcjtcbiAgICBsZWZ0OiBudW1iZXI7XG59XG5cblxuLyoqXG4gKiBJbmNyZW1lbnRzIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgcG9zaXRpb24gb2YgYSBub2RlLlxuICogQHBhcmFtIG5vZGUgTm9kZSB3aG9zZSBzY3JvbGwgcG9zaXRpb24gc2hvdWxkIGNoYW5nZS5cbiAqIEBwYXJhbSBhbW91bnQgQW1vdW50IG9mIHBpeGVscyB0aGF0IHRoZSBgbm9kZWAgc2hvdWxkIGJlIHNjcm9sbGVkLlxuICovXG5mdW5jdGlvbiBpbmNyZW1lbnRWZXJ0aWNhbFNjcm9sbChub2RlOiBIVE1MRWxlbWVudCB8IFdpbmRvdywgYW1vdW50OiBudW1iZXIpIHtcbiAgICBpZiAobm9kZSA9PT0gd2luZG93KSB7XG4gICAgICAgIChub2RlIGFzIFdpbmRvdykuc2Nyb2xsQnkoMCwgYW1vdW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZGVhbGx5IHdlIGNvdWxkIHVzZSBgRWxlbWVudC5zY3JvbGxCeWAgaGVyZSBhcyB3ZWxsLCBidXQgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdC5cbiAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCArPSBhbW91bnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEluY3JlbWVudHMgdGhlIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIG9mIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgd2hvc2Ugc2Nyb2xsIHBvc2l0aW9uIHNob3VsZCBjaGFuZ2UuXG4gKiBAcGFyYW0gYW1vdW50IEFtb3VudCBvZiBwaXhlbHMgdGhhdCB0aGUgYG5vZGVgIHNob3VsZCBiZSBzY3JvbGxlZC5cbiAqL1xuZnVuY3Rpb24gaW5jcmVtZW50SG9yaXpvbnRhbFNjcm9sbChub2RlOiBIVE1MRWxlbWVudCB8IFdpbmRvdywgYW1vdW50OiBudW1iZXIpIHtcbiAgICBpZiAobm9kZSA9PT0gd2luZG93KSB7XG4gICAgICAgIChub2RlIGFzIFdpbmRvdykuc2Nyb2xsQnkoYW1vdW50LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZGVhbGx5IHdlIGNvdWxkIHVzZSBgRWxlbWVudC5zY3JvbGxCeWAgaGVyZSBhcyB3ZWxsLCBidXQgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdC5cbiAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQgKz0gYW1vdW50O1xuICAgIH1cbn1cblxuXG4vKipcbiAqIEdldHMgd2hldGhlciB0aGUgdmVydGljYWwgYXV0by1zY3JvbGwgZGlyZWN0aW9uIG9mIGEgbm9kZS5cbiAqIEBwYXJhbSBjbGllbnRSZWN0IERpbWVuc2lvbnMgb2YgdGhlIG5vZGUuXG4gKiBAcGFyYW0gcG9pbnRlclkgUG9zaXRpb24gb2YgdGhlIHVzZXIncyBwb2ludGVyIGFsb25nIHRoZSB5IGF4aXMuXG4gKi9cbmZ1bmN0aW9uIGdldFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uKGNsaWVudFJlY3Q6IEt0ZENsaWVudFJlY3QsIHBvaW50ZXJZOiBudW1iZXIpIHtcbiAgICBjb25zdCB7dG9wLCBib3R0b20sIGhlaWdodH0gPSBjbGllbnRSZWN0O1xuICAgIGNvbnN0IHlUaHJlc2hvbGQgPSBoZWlnaHQgKiBTQ1JPTExfUFJPWElNSVRZX1RIUkVTSE9MRDtcblxuICAgIGlmIChwb2ludGVyWSA+PSB0b3AgLSB5VGhyZXNob2xkICYmIHBvaW50ZXJZIDw9IHRvcCArIHlUaHJlc2hvbGQpIHtcbiAgICAgICAgcmV0dXJuIEF1dG9TY3JvbGxWZXJ0aWNhbERpcmVjdGlvbi5VUDtcbiAgICB9IGVsc2UgaWYgKHBvaW50ZXJZID49IGJvdHRvbSAtIHlUaHJlc2hvbGQgJiYgcG9pbnRlclkgPD0gYm90dG9tICsgeVRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLkRPV047XG4gICAgfVxuXG4gICAgcmV0dXJuIEF1dG9TY3JvbGxWZXJ0aWNhbERpcmVjdGlvbi5OT05FO1xufVxuXG4vKipcbiAqIEdldHMgd2hldGhlciB0aGUgaG9yaXpvbnRhbCBhdXRvLXNjcm9sbCBkaXJlY3Rpb24gb2YgYSBub2RlLlxuICogQHBhcmFtIGNsaWVudFJlY3QgRGltZW5zaW9ucyBvZiB0aGUgbm9kZS5cbiAqIEBwYXJhbSBwb2ludGVyWCBQb3NpdGlvbiBvZiB0aGUgdXNlcidzIHBvaW50ZXIgYWxvbmcgdGhlIHggYXhpcy5cbiAqL1xuZnVuY3Rpb24gZ2V0SG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbihjbGllbnRSZWN0OiBLdGRDbGllbnRSZWN0LCBwb2ludGVyWDogbnVtYmVyKSB7XG4gICAgY29uc3Qge2xlZnQsIHJpZ2h0LCB3aWR0aH0gPSBjbGllbnRSZWN0O1xuICAgIGNvbnN0IHhUaHJlc2hvbGQgPSB3aWR0aCAqIFNDUk9MTF9QUk9YSU1JVFlfVEhSRVNIT0xEO1xuXG4gICAgaWYgKHBvaW50ZXJYID49IGxlZnQgLSB4VGhyZXNob2xkICYmIHBvaW50ZXJYIDw9IGxlZnQgKyB4VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5MRUZUO1xuICAgIH0gZWxzZSBpZiAocG9pbnRlclggPj0gcmlnaHQgLSB4VGhyZXNob2xkICYmIHBvaW50ZXJYIDw9IHJpZ2h0ICsgeFRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uUklHSFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLk5PTkU7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgc2NoZWR1bGVzIGEgbG9vcCBhbmQgYXBwbHkgc2Nyb2xsIG9uIHRoZSBzY3JvbGxOb2RlIGludG8gdGhlIHNwZWNpZmllZCBkaXJlY3Rpb24vcy5cbiAqIFRoaXMgb2JzZXJ2YWJsZSBkb2Vzbid0IGVtaXQsIGl0IGp1c3QgcGVyZm9ybXMgdGhlICdzY3JvbGwnIHNpZGUgZWZmZWN0LlxuICogQHBhcmFtIHNjcm9sbE5vZGUsIG5vZGUgd2hlcmUgdGhlIHNjcm9sbCB3b3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLCB2ZXJ0aWNhbCBkaXJlY3Rpb24gb2YgdGhlIHNjcm9sbC5cbiAqIEBwYXJhbSBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uLCBob3Jpem9udGFsIGRpcmVjdGlvbiBvZiB0aGUgc2Nyb2xsLlxuICogQHBhcmFtIHNjcm9sbFN0ZXAsIHNjcm9sbCBzdGVwIGluIENTUyBwaXhlbHMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIGluIGV2ZXJ5IGxvb3AuXG4gKi9cbmZ1bmN0aW9uIHNjcm9sbFRvRGlyZWN0aW9uSW50ZXJ2YWwkKHNjcm9sbE5vZGU6IEhUTUxFbGVtZW50IHwgV2luZG93LCB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbjogQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLCBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uOiBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbiwgc2Nyb2xsU3RlcDogbnVtYmVyID0gMikge1xuICAgIHJldHVybiBpbnRlcnZhbCgwLCBhbmltYXRpb25GcmFtZVNjaGVkdWxlcilcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLlVQKSB7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFZlcnRpY2FsU2Nyb2xsKHNjcm9sbE5vZGUsIC1zY3JvbGxTdGVwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID09PSBBdXRvU2Nyb2xsVmVydGljYWxEaXJlY3Rpb24uRE9XTikge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRWZXJ0aWNhbFNjcm9sbChzY3JvbGxOb2RlLCBzY3JvbGxTdGVwKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9PT0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTEVGVCkge1xuICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRIb3Jpem9udGFsU2Nyb2xsKHNjcm9sbE5vZGUsIC1zY3JvbGxTdGVwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLlJJR0hUKSB7XG4gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudEhvcml6b250YWxTY3JvbGwoc2Nyb2xsTm9kZSwgc2Nyb2xsU3RlcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBrdGROb0VtaXQoKVxuICAgICAgICApO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEt0ZFNjcm9sbElmTmVhckVsZW1lbnRPcHRpb25zIHtcbiAgICBzY3JvbGxTdGVwPzogbnVtYmVyO1xuICAgIGRpc2FibGVWZXJ0aWNhbD86IGJvb2xlYW47XG4gICAgZGlzYWJsZUhvcml6b250YWw/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgc291cmNlJCBvYnNlcnZhYmxlIHdpdGggcG9pbnRlciBsb2NhdGlvbiwgc2Nyb2xsIHRoZSBzY3JvbGxOb2RlIGlmIHRoZSBwb2ludGVyIGlzIG5lYXIgdG8gaXQuXG4gKiBUaGlzIG9ic2VydmFibGUgZG9lc24ndCBlbWl0LCBpdCBqdXN0IHBlcmZvcm1zIGEgJ3Njcm9sbCcgc2lkZSBlZmZlY3QuXG4gKiBAcGFyYW0gc2Nyb2xsYWJsZVBhcmVudCwgcGFyZW50IG5vZGUgaW4gd2hpY2ggdGhlIHNjcm9sbCB3b3VsZCBiZSBwZXJmb3JtZWQuXG4gKiBAcGFyYW0gb3B0aW9ucywgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24ga3RkU2Nyb2xsSWZOZWFyRWxlbWVudENsaWVudFJlY3QkKHNjcm9sbGFibGVQYXJlbnQ6IEhUTUxFbGVtZW50IHwgRG9jdW1lbnQsIG9wdGlvbnM/OiBLdGRTY3JvbGxJZk5lYXJFbGVtZW50T3B0aW9ucyk6IChzb3VyY2UkOiBPYnNlcnZhYmxlPHsgcG9pbnRlclg6IG51bWJlciwgcG9pbnRlclk6IG51bWJlciB9PikgPT4gT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGxldCBzY3JvbGxOb2RlOiBXaW5kb3cgfCBIVE1MRWxlbWVudDtcbiAgICBsZXQgc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3Q6IEt0ZENsaWVudFJlY3Q7XG4gICAgbGV0IHNjcm9sbGFibGVQYXJlbnRTY3JvbGxXaWR0aDogbnVtYmVyO1xuXG4gICAgaWYgKHNjcm9sbGFibGVQYXJlbnQgPT09IGRvY3VtZW50KSB7XG4gICAgICAgIHNjcm9sbE5vZGUgPSBkb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGdldFZpZXdwb3J0U2l6ZSgpO1xuICAgICAgICBzY3JvbGxhYmxlUGFyZW50Q2xpZW50UmVjdCA9IHt3aWR0aCwgaGVpZ2h0LCB0b3A6IDAsIHJpZ2h0OiB3aWR0aCwgYm90dG9tOiBoZWlnaHQsIGxlZnQ6IDB9O1xuICAgICAgICBzY3JvbGxhYmxlUGFyZW50U2Nyb2xsV2lkdGggPSBnZXREb2N1bWVudFNjcm9sbFdpZHRoKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2Nyb2xsTm9kZSA9IHNjcm9sbGFibGVQYXJlbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIHNjcm9sbGFibGVQYXJlbnRDbGllbnRSZWN0ID0gZ2V0TXV0YWJsZUNsaWVudFJlY3Qoc2Nyb2xsYWJsZVBhcmVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgICAgIHNjcm9sbGFibGVQYXJlbnRTY3JvbGxXaWR0aCA9IChzY3JvbGxhYmxlUGFyZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxXaWR0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJTVBPUlRBTlQ6IEJ5IGRlc2lnbiwgb25seSBsZXQgc2Nyb2xsIGhvcml6b250YWwgaWYgdGhlIHNjcm9sbGFibGUgcGFyZW50IGhhcyBleHBsaWNpdGx5IGFuIHNjcm9sbCBob3Jpem9udGFsLlxuICAgICAqIFRoaXMgbGF5b3V0IHNvbHV0aW9uIGlzIG5vdCBkZXNpZ25lZCBpbiBtaW5kIHRvIGhhdmUgYW55IHNjcm9sbCBob3Jpem9udGFsLCBidXQgZXhjZXB0aW9uYWxseSB3ZSBhbGxvdyBpdCBpbiB0aGlzXG4gICAgICogc3BlY2lmaWMgdXNlIGNhc2UuXG4gICAgICovXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgaWYgKG9wdGlvbnMuZGlzYWJsZUhvcml6b250YWwgPT0gbnVsbCAmJiBzY3JvbGxhYmxlUGFyZW50U2Nyb2xsV2lkdGggPD0gc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3Qud2lkdGgpIHtcbiAgICAgICAgb3B0aW9ucy5kaXNhYmxlSG9yaXpvbnRhbCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UkKSA9PiBzb3VyY2UkLnBpcGUoXG4gICAgICAgIG1hcCgoe3BvaW50ZXJYLCBwb2ludGVyWX0pID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9IGdldFZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uKHNjcm9sbGFibGVQYXJlbnRDbGllbnRSZWN0LCBwb2ludGVyWSk7XG4gICAgICAgICAgICBsZXQgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9IGdldEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24oc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3QsIHBvaW50ZXJYKTtcblxuICAgICAgICAgICAgLy8gQ2hlY2sgaWYgc2Nyb2xsIGRpcmVjdGlvbnMgYXJlIGRpc2FibGVkLlxuICAgICAgICAgICAgaWYgKG9wdGlvbnM/LmRpc2FibGVWZXJ0aWNhbCkge1xuICAgICAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLk5PTkU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9ucz8uZGlzYWJsZUhvcml6b250YWwpIHtcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTk9ORTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHt2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiwgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbn07XG4gICAgICAgIH0pLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocHJldiwgYWN0dWFsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJldi52ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiA9PT0gYWN0dWFsLnZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgJiYgcHJldi5ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBhY3R1YWwuaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbjtcbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoe3ZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLCBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9ufSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uIHx8IGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2Nyb2xsVG9EaXJlY3Rpb25JbnRlcnZhbCQoc2Nyb2xsTm9kZSwgdmVydGljYWxTY3JvbGxEaXJlY3Rpb24sIGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24sIG9wdGlvbnM/LnNjcm9sbFN0ZXApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBvbiBFVkVSWSBzY3JvbGwgZXZlbnQgYW5kIHJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHNjcm9sbCBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uLlxuICogQHBhcmFtIHNjcm9sbGFibGVQYXJlbnQsIG5vZGUgaW4gd2hpY2ggc2Nyb2xsIGV2ZW50cyB3b3VsZCBiZSBsaXN0ZW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZEdldFNjcm9sbFRvdGFsUmVsYXRpdmVEaWZmZXJlbmNlJChzY3JvbGxhYmxlUGFyZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50KTogT2JzZXJ2YWJsZTx7IHRvcDogbnVtYmVyLCBsZWZ0OiBudW1iZXIgfT4ge1xuICAgIGxldCBzY3JvbGxJbml0aWFsUG9zaXRpb247XG5cbiAgICAvLyBDYWxjdWxhdGUgaW5pdGlhbCBzY3JvbGwgcG9zaXRpb25cbiAgICBpZiAoc2Nyb2xsYWJsZVBhcmVudCA9PT0gZG9jdW1lbnQpIHtcbiAgICAgICAgc2Nyb2xsSW5pdGlhbFBvc2l0aW9uID0gZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcm9sbEluaXRpYWxQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIHRvcDogKHNjcm9sbGFibGVQYXJlbnQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCxcbiAgICAgICAgICAgIGxlZnQ6IChzY3JvbGxhYmxlUGFyZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb21FdmVudChzY3JvbGxhYmxlUGFyZW50LCAnc2Nyb2xsJywga3RkTm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyh7Y2FwdHVyZTogdHJ1ZX0pIGFzIEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IG5ld1RvcDogbnVtYmVyO1xuICAgICAgICAgICAgbGV0IG5ld0xlZnQ6IG51bWJlcjtcblxuICAgICAgICAgICAgaWYgKHNjcm9sbGFibGVQYXJlbnQgPT09IGRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgdmlld3BvcnRTY3JvbGxQb3NpdGlvbiA9IGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICBuZXdUb3AgPSB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uLnRvcDtcbiAgICAgICAgICAgICAgICBuZXdMZWZ0ID0gdmlld3BvcnRTY3JvbGxQb3NpdGlvbi5sZWZ0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdUb3AgPSAoc2Nyb2xsYWJsZVBhcmVudCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgPSAoc2Nyb2xsYWJsZVBhcmVudCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsTGVmdDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdG9wRGlmZmVyZW5jZSA9IHNjcm9sbEluaXRpYWxQb3NpdGlvbi50b3AgLSBuZXdUb3A7XG4gICAgICAgICAgICBjb25zdCBsZWZ0RGlmZmVyZW5jZSA9IHNjcm9sbEluaXRpYWxQb3NpdGlvbi5sZWZ0IC0gbmV3TGVmdDtcblxuICAgICAgICAgICAgcmV0dXJuIHt0b3A6IHRvcERpZmZlcmVuY2UsIGxlZnQ6IGxlZnREaWZmZXJlbmNlfTtcbiAgICAgICAgfSlcbiAgICApO1xuXG59XG5cbi8qKiBSZXR1cm5zIHRoZSB2aWV3cG9ydCdzIHdpZHRoIGFuZCBoZWlnaHQuICovXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFNpemUoKTogeyB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9IHtcbiAgICBjb25zdCBfd2luZG93ID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBfd2luZG93LmlubmVyV2lkdGgsXG4gICAgICAgIGhlaWdodDogX3dpbmRvdy5pbm5lckhlaWdodFxuICAgIH07XG5cbn1cblxuLyoqIEdldHMgYSBDbGllbnRSZWN0IGZvciB0aGUgdmlld3BvcnQncyBib3VuZHMuICovXG5mdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoKTogS3RkQ2xpZW50UmVjdCB7XG4gICAgLy8gVXNlIHRoZSBkb2N1bWVudCBlbGVtZW50J3MgYm91bmRpbmcgcmVjdCByYXRoZXIgdGhhbiB0aGUgd2luZG93IHNjcm9sbCBwcm9wZXJ0aWVzXG4gICAgLy8gKGUuZy4gcGFnZVlPZmZzZXQsIHNjcm9sbFkpIGR1ZSB0byBpbiBpc3N1ZSBpbiBDaHJvbWUgYW5kIElFIHdoZXJlIHdpbmRvdyBzY3JvbGxcbiAgICAvLyBwcm9wZXJ0aWVzIGFuZCBjbGllbnQgY29vcmRpbmF0ZXMgKGJvdW5kaW5nQ2xpZW50UmVjdCwgY2xpZW50WC9ZLCBldGMuKSBhcmUgaW4gZGlmZmVyZW50XG4gICAgLy8gY29uY2VwdHVhbCB2aWV3cG9ydHMuIFVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyB0aGVzZSB2aWV3cG9ydHMgYXJlIGVxdWl2YWxlbnQsIGJ1dCB0aGV5XG4gICAgLy8gY2FuIGRpc2FncmVlIHdoZW4gdGhlIHBhZ2UgaXMgcGluY2gtem9vbWVkIChvbiBkZXZpY2VzIHRoYXQgc3VwcG9ydCB0b3VjaCkuXG4gICAgLy8gU2VlIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTQ4OTIwNiNjNFxuICAgIC8vIFdlIHVzZSB0aGUgZG9jdW1lbnRFbGVtZW50IGluc3RlYWQgb2YgdGhlIGJvZHkgYmVjYXVzZSwgYnkgZGVmYXVsdCAod2l0aG91dCBhIGNzcyByZXNldClcbiAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZ2l2ZSB0aGUgZG9jdW1lbnQgYm9keSBhbiA4cHggbWFyZ2luLCB3aGljaCBpcyBub3QgaW5jbHVkZWQgaW5cbiAgICAvLyBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5cbiAgICBjb25zdCBzY3JvbGxQb3NpdGlvbiA9IGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTtcbiAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBnZXRWaWV3cG9ydFNpemUoKTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvcDogc2Nyb2xsUG9zaXRpb24udG9wLFxuICAgICAgICBsZWZ0OiBzY3JvbGxQb3NpdGlvbi5sZWZ0LFxuICAgICAgICBib3R0b206IHNjcm9sbFBvc2l0aW9uLnRvcCArIGhlaWdodCxcbiAgICAgICAgcmlnaHQ6IHNjcm9sbFBvc2l0aW9uLmxlZnQgKyB3aWR0aCxcbiAgICAgICAgaGVpZ2h0LFxuICAgICAgICB3aWR0aCxcbiAgICB9O1xufVxuXG4vKiogR2V0cyB0aGUgKHRvcCwgbGVmdCkgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSB2aWV3cG9ydC4gKi9cbmZ1bmN0aW9uIGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTogeyB0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyIH0ge1xuXG4gICAgLy8gVGhlIHRvcC1sZWZ0LWNvcm5lciBvZiB0aGUgdmlld3BvcnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBkb2N1bWVudFxuICAgIC8vIGJvZHksIG5vcm1hbGx5IGp1c3QgKHNjcm9sbExlZnQsIHNjcm9sbFRvcCkuIEhvd2V2ZXIsIENocm9tZSBhbmQgRmlyZWZveCBkaXNhZ3JlZSBhYm91dFxuICAgIC8vIHdoZXRoZXIgYGRvY3VtZW50LmJvZHlgIG9yIGBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRgIGlzIHRoZSBzY3JvbGxlZCBlbGVtZW50LCBzbyByZWFkaW5nXG4gICAgLy8gYHNjcm9sbFRvcGAgYW5kIGBzY3JvbGxMZWZ0YCBpcyBpbmNvbnNpc3RlbnQuIEhvd2V2ZXIsIHVzaW5nIHRoZSBib3VuZGluZyByZWN0IG9mXG4gICAgLy8gYGRvY3VtZW50LmRvY3VtZW50RWxlbWVudGAgd29ya3MgY29uc2lzdGVudGx5LCB3aGVyZSB0aGUgYHRvcGAgYW5kIGBsZWZ0YCB2YWx1ZXMgd2lsbFxuICAgIC8vIGVxdWFsIG5lZ2F0aXZlIHRoZSBzY3JvbGwgcG9zaXRpb24uXG4gICAgY29uc3Qgd2luZG93UmVmID0gZG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICAgIGNvbnN0IGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCE7XG4gICAgY29uc3QgZG9jdW1lbnRSZWN0ID0gZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgY29uc3QgdG9wID0gLWRvY3VtZW50UmVjdC50b3AgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgd2luZG93UmVmLnNjcm9sbFkgfHxcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCB8fCAwO1xuXG4gICAgY29uc3QgbGVmdCA9IC1kb2N1bWVudFJlY3QubGVmdCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQgfHwgd2luZG93UmVmLnNjcm9sbFggfHxcbiAgICAgICAgZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgfHwgMDtcblxuICAgIHJldHVybiB7dG9wLCBsZWZ0fTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGRvY3VtZW50IHNjcm9sbCB3aWR0aCAqL1xuZnVuY3Rpb24gZ2V0RG9jdW1lbnRTY3JvbGxXaWR0aCgpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFdpZHRoKTtcbn1cblxuIl19
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2EtdXNlci13b3Jrc3BhY2Uvc3JjL2xpYi91dGlscy9zY3JvbGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV4Qzs7O0dBR0c7QUFDSCxNQUFNLDBCQUEwQixHQUFHLElBQUksQ0FBQztBQXFCeEM7Ozs7R0FJRztBQUNILFNBQVMsdUJBQXVCLENBQUMsSUFBMEIsRUFBRSxNQUFjO0lBQ3ZFLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQ2pCLElBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7U0FBTSxDQUFDO1FBQ0osMEZBQTBGO1FBQ3pGLElBQW9CLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQztJQUM5QyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFTLHlCQUF5QixDQUFDLElBQTBCLEVBQUUsTUFBYztJQUN6RSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUNqQixJQUFlLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO1NBQU0sQ0FBQztRQUNKLDBGQUEwRjtRQUN6RixJQUFvQixDQUFDLFVBQVUs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O0FBQ04sQ0FBQztBQUVELDREQUE0RDtBQUM1RCxTQUFTLHlCQUF5QjtJQUM5QiwyRkFBMkY7SUFDM0YsMEZBQTBGO0lBQzFGLDRGQUE0RjtJQUM1RixvRkFBb0Y7SUFDcEYsd0ZBQXdGO0lBQ3hGLHNDQUFzQztJQUN0QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQztJQUNqRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZ0IsQ0FBQztJQUNsRCxNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUU3RCxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQztJQUVoSCxNQUFNLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUVwSCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsU0FBUyxzQkFBc0I7SUFDM0IsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGlvbkZyYW1lU2NoZWR1bGVyLCBmcm9tRXZlbnQsIGludGVydmFsLCBORVZFUiwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBrdGROb3JtYWxpemVQYXNzaXZlTGlzdGVuZXJPcHRpb25zIH0gZnJvbSAnLi9wYXNzaXZlLWxpc3RlbmVycyc7XG5pbXBvcnQgeyBnZXRNdXRhYmxlQ2xpZW50UmVjdCwgS3RkQ2xpZW50UmVjdCB9IGZyb20gJy4vY2xpZW50LXJlY3QnO1xuaW1wb3J0IHsga3RkTm9FbWl0IH0gZnJvbSAnLi9vcGVyYXRvcnMnO1xuXG4vKipcbiAqIFByb3hpbWl0eSwgYXMgYSByYXRpbyB0byB3aWR0aC9oZWlnaHQgYXQgd2hpY2ggdG8gc3RhcnQgYXV0by1zY3JvbGxpbmcuXG4gKiBUaGUgdmFsdWUgY29tZXMgZnJvbSB0cnlpbmcgaXQgb3V0IG1hbnVhbGx5IHVudGlsIGl0IGZlZWxzIHJpZ2h0LlxuICovXG5jb25zdCBTQ1JPTExfUFJPWElNSVRZX1RIUkVTSE9MRCA9IDAuMDU7XG5cbi8qKiBWZXJ0aWNhbCBkaXJlY3Rpb24gaW4gd2hpY2ggd2UgY2FuIGF1dG8tc2Nyb2xsLiAqL1xuY29uc3QgZW51bSBBdXRvU2Nyb2xsVmVydGljYWxEaXJlY3Rpb24ge1xuICAgIE5PTkUsXG4gICAgVVAsXG4gICAgRE9XTlxufVxuXG4vKiogSG9yaXpvbnRhbCBkaXJlY3Rpb24gaW4gd2hpY2ggd2UgY2FuIGF1dG8tc2Nyb2xsLiAqL1xuY29uc3QgZW51bSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbiB7XG4gICAgTk9ORSxcbiAgICBMRUZULFxuICAgIFJJR0hUXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3RkU2Nyb2xsUG9zaXRpb24ge1xuICAgIHRvcDogbnVtYmVyO1xuICAgIGxlZnQ6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBJbmNyZW1lbnRzIHRoZSB2ZXJ0aWNhbCBzY3JvbGwgcG9zaXRpb24gb2YgYSBub2RlLlxuICogQHBhcmFtIG5vZGUgTm9kZSB3aG9zZSBzY3JvbGwgcG9zaXRpb24gc2hvdWxkIGNoYW5nZS5cbiAqIEBwYXJhbSBhbW91bnQgQW1vdW50IG9mIHBpeGVscyB0aGF0IHRoZSBgbm9kZWAgc2hvdWxkIGJlIHNjcm9sbGVkLlxuICovXG5mdW5jdGlvbiBpbmNyZW1lbnRWZXJ0aWNhbFNjcm9sbChub2RlOiBIVE1MRWxlbWVudCB8IFdpbmRvdywgYW1vdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobm9kZSA9PT0gd2luZG93KSB7XG4gICAgICAgIChub2RlIGFzIFdpbmRvdykuc2Nyb2xsQnkoMCwgYW1vdW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZGVhbGx5IHdlIGNvdWxkIHVzZSBgRWxlbWVudC5zY3JvbGxCeWAgaGVyZSBhcyB3ZWxsLCBidXQgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdC5cbiAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbFRvcCArPSBhbW91bnQ7XG4gICAgfVxufVxuXG4vKipcbiAqIEluY3JlbWVudHMgdGhlIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIG9mIGEgbm9kZS5cbiAqIEBwYXJhbSBub2RlIE5vZGUgd2hvc2Ugc2Nyb2xsIHBvc2l0aW9uIHNob3VsZCBjaGFuZ2UuXG4gKiBAcGFyYW0gYW1vdW50IEFtb3VudCBvZiBwaXhlbHMgdGhhdCB0aGUgYG5vZGVgIHNob3VsZCBiZSBzY3JvbGxlZC5cbiAqL1xuZnVuY3Rpb24gaW5jcmVtZW50SG9yaXpvbnRhbFNjcm9sbChub2RlOiBIVE1MRWxlbWVudCB8IFdpbmRvdywgYW1vdW50OiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAobm9kZSA9PT0gd2luZG93KSB7XG4gICAgICAgIChub2RlIGFzIFdpbmRvdykuc2Nyb2xsQnkoYW1vdW50LCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJZGVhbGx5IHdlIGNvdWxkIHVzZSBgRWxlbWVudC5zY3JvbGxCeWAgaGVyZSBhcyB3ZWxsLCBidXQgSUUgYW5kIEVkZ2UgZG9uJ3Qgc3VwcG9ydCBpdC5cbiAgICAgICAgKG5vZGUgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnQgKz0gYW1vdW50O1xuICAgIH1cbn1cblxuLyoqXG4gKiBHZXRzIHdoZXRoZXIgdGhlIHZlcnRpY2FsIGF1dG8tc2Nyb2xsIGRpcmVjdGlvbiBvZiBhIG5vZGUuXG4gKiBAcGFyYW0gY2xpZW50UmVjdCBEaW1lbnNpb25zIG9mIHRoZSBub2RlLlxuICogQHBhcmFtIHBvaW50ZXJZIFBvc2l0aW9uIG9mIHRoZSB1c2VyJ3MgcG9pbnRlciBhbG9uZyB0aGUgeSBheGlzLlxuICovXG5mdW5jdGlvbiBnZXRWZXJ0aWNhbFNjcm9sbERpcmVjdGlvbihjbGllbnRSZWN0OiBLdGRDbGllbnRSZWN0LCBwb2ludGVyWTogbnVtYmVyKTogYW55IHtcbiAgICBjb25zdCB7IHRvcCwgYm90dG9tLCBoZWlnaHQgfSA9IGNsaWVudFJlY3Q7XG4gICAgY29uc3QgeVRocmVzaG9sZCA9IGhlaWdodCAqIFNDUk9MTF9QUk9YSU1JVFlfVEhSRVNIT0xEO1xuXG4gICAgaWYgKHBvaW50ZXJZID49IHRvcCAtIHlUaHJlc2hvbGQgJiYgcG9pbnRlclkgPD0gdG9wICsgeVRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLlVQO1xuICAgIH0gZWxzZSBpZiAocG9pbnRlclkgPj0gYm90dG9tIC0geVRocmVzaG9sZCAmJiBwb2ludGVyWSA8PSBib3R0b20gKyB5VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBBdXRvU2Nyb2xsVmVydGljYWxEaXJlY3Rpb24uRE9XTjtcbiAgICB9XG5cbiAgICByZXR1cm4gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLk5PTkU7XG59XG5cbi8qKlxuICogR2V0cyB3aGV0aGVyIHRoZSBob3Jpem9udGFsIGF1dG8tc2Nyb2xsIGRpcmVjdGlvbiBvZiBhIG5vZGUuXG4gKiBAcGFyYW0gY2xpZW50UmVjdCBEaW1lbnNpb25zIG9mIHRoZSBub2RlLlxuICogQHBhcmFtIHBvaW50ZXJYIFBvc2l0aW9uIG9mIHRoZSB1c2VyJ3MgcG9pbnRlciBhbG9uZyB0aGUgeCBheGlzLlxuICovXG5mdW5jdGlvbiBnZXRIb3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uKGNsaWVudFJlY3Q6IEt0ZENsaWVudFJlY3QsIHBvaW50ZXJYOiBudW1iZXIpOiBhbnkge1xuICAgIGNvbnN0IHsgbGVmdCwgcmlnaHQsIHdpZHRoIH0gPSBjbGllbnRSZWN0O1xuICAgIGNvbnN0IHhUaHJlc2hvbGQgPSB3aWR0aCAqIFNDUk9MTF9QUk9YSU1JVFlfVEhSRVNIT0xEO1xuXG4gICAgaWYgKHBvaW50ZXJYID49IGxlZnQgLSB4VGhyZXNob2xkICYmIHBvaW50ZXJYIDw9IGxlZnQgKyB4VGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5MRUZUO1xuICAgIH0gZWxzZSBpZiAocG9pbnRlclggPj0gcmlnaHQgLSB4VGhyZXNob2xkICYmIHBvaW50ZXJYIDw9IHJpZ2h0ICsgeFRocmVzaG9sZCkge1xuICAgICAgICByZXR1cm4gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uUklHSFQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLk5PTkU7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgc2NoZWR1bGVzIGEgbG9vcCBhbmQgYXBwbHkgc2Nyb2xsIG9uIHRoZSBzY3JvbGxOb2RlIGludG8gdGhlIHNwZWNpZmllZCBkaXJlY3Rpb24vcy5cbiAqIFRoaXMgb2JzZXJ2YWJsZSBkb2Vzbid0IGVtaXQsIGl0IGp1c3QgcGVyZm9ybXMgdGhlICdzY3JvbGwnIHNpZGUgZWZmZWN0LlxuICogQHBhcmFtIHNjcm9sbE5vZGUsIG5vZGUgd2hlcmUgdGhlIHNjcm9sbCB3b3VsZCBiZSBhcHBsaWVkLlxuICogQHBhcmFtIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLCB2ZXJ0aWNhbCBkaXJlY3Rpb24gb2YgdGhlIHNjcm9sbC5cbiAqIEBwYXJhbSBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uLCBob3Jpem9udGFsIGRpcmVjdGlvbiBvZiB0aGUgc2Nyb2xsLlxuICogQHBhcmFtIHNjcm9sbFN0ZXAsIHNjcm9sbCBzdGVwIGluIENTUyBwaXhlbHMgdGhhdCB3b3VsZCBiZSBhcHBsaWVkIGluIGV2ZXJ5IGxvb3AuXG4gKi9cbmZ1bmN0aW9uIHNjcm9sbFRvRGlyZWN0aW9uSW50ZXJ2YWwkKFxuICAgIHNjcm9sbE5vZGU6IEhUTUxFbGVtZW50IHwgV2luZG93LFxuICAgIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uOiBBdXRvU2Nyb2xsVmVydGljYWxEaXJlY3Rpb24sXG4gICAgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbjogQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24sXG4gICAgc2Nyb2xsU3RlcDogbnVtYmVyID0gMlxuKTogYW55IHtcbiAgICByZXR1cm4gaW50ZXJ2YWwoMCwgYW5pbWF0aW9uRnJhbWVTY2hlZHVsZXIpLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodmVydGljYWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxWZXJ0aWNhbERpcmVjdGlvbi5VUCkge1xuICAgICAgICAgICAgICAgIGluY3JlbWVudFZlcnRpY2FsU2Nyb2xsKHNjcm9sbE5vZGUsIC1zY3JvbGxTdGVwKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmVydGljYWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxWZXJ0aWNhbERpcmVjdGlvbi5ET1dOKSB7XG4gICAgICAgICAgICAgICAgaW5jcmVtZW50VmVydGljYWxTY3JvbGwoc2Nyb2xsTm9kZSwgc2Nyb2xsU3RlcCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBBdXRvU2Nyb2xsSG9yaXpvbnRhbERpcmVjdGlvbi5MRUZUKSB7XG4gICAgICAgICAgICAgICAgaW5jcmVtZW50SG9yaXpvbnRhbFNjcm9sbChzY3JvbGxOb2RlLCAtc2Nyb2xsU3RlcCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24gPT09IEF1dG9TY3JvbGxIb3Jpem9udGFsRGlyZWN0aW9uLlJJR0hUKSB7XG4gICAgICAgICAgICAgICAgaW5jcmVtZW50SG9yaXpvbnRhbFNjcm9sbChzY3JvbGxOb2RlLCBzY3JvbGxTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIGt0ZE5vRW1pdCgpXG4gICAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLdGRTY3JvbGxJZk5lYXJFbGVtZW50T3B0aW9ucyB7XG4gICAgc2Nyb2xsU3RlcD86IG51bWJlcjtcbiAgICBkaXNhYmxlVmVydGljYWw/OiBib29sZWFuO1xuICAgIGRpc2FibGVIb3Jpem9udGFsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBHaXZlbiBhIHNvdXJjZSQgb2JzZXJ2YWJsZSB3aXRoIHBvaW50ZXIgbG9jYXRpb24sIHNjcm9sbCB0aGUgc2Nyb2xsTm9kZSBpZiB0aGUgcG9pbnRlciBpcyBuZWFyIHRvIGl0LlxuICogVGhpcyBvYnNlcnZhYmxlIGRvZXNuJ3QgZW1pdCwgaXQganVzdCBwZXJmb3JtcyBhICdzY3JvbGwnIHNpZGUgZWZmZWN0LlxuICogQHBhcmFtIHNjcm9sbGFibGVQYXJlbnQsIHBhcmVudCBub2RlIGluIHdoaWNoIHRoZSBzY3JvbGwgd291bGQgYmUgcGVyZm9ybWVkLlxuICogQHBhcmFtIG9wdGlvbnMsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZFNjcm9sbElmTmVhckVsZW1lbnRDbGllbnRSZWN0JChcbiAgICBzY3JvbGxhYmxlUGFyZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50LFxuICAgIG9wdGlvbnM/OiBLdGRTY3JvbGxJZk5lYXJFbGVtZW50T3B0aW9uc1xuKTogKHNvdXJjZSQ6IE9ic2VydmFibGU8eyBwb2ludGVyWDogbnVtYmVyOyBwb2ludGVyWTogbnVtYmVyIH0+KSA9PiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCBzY3JvbGxOb2RlOiBXaW5kb3cgfCBIVE1MRWxlbWVudDtcbiAgICBsZXQgc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3Q6IEt0ZENsaWVudFJlY3Q7XG4gICAgbGV0IHNjcm9sbGFibGVQYXJlbnRTY3JvbGxXaWR0aDogbnVtYmVyO1xuXG4gICAgaWYgKHNjcm9sbGFibGVQYXJlbnQgPT09IGRvY3VtZW50KSB7XG4gICAgICAgIHNjcm9sbE5vZGUgPSBkb2N1bWVudC5kZWZhdWx0VmlldyBhcyBXaW5kb3c7XG4gICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0Vmlld3BvcnRTaXplKCk7XG4gICAgICAgIHNjcm9sbGFibGVQYXJlbnRDbGllbnRSZWN0ID0geyB3aWR0aCwgaGVpZ2h0LCB0b3A6IDAsIHJpZ2h0OiB3aWR0aCwgYm90dG9tOiBoZWlnaHQsIGxlZnQ6IDAgfTtcbiAgICAgICAgc2Nyb2xsYWJsZVBhcmVudFNjcm9sbFdpZHRoID0gZ2V0RG9jdW1lbnRTY3JvbGxXaWR0aCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNjcm9sbE5vZGUgPSBzY3JvbGxhYmxlUGFyZW50IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBzY3JvbGxhYmxlUGFyZW50Q2xpZW50UmVjdCA9IGdldE11dGFibGVDbGllbnRSZWN0KHNjcm9sbGFibGVQYXJlbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgICAgICBzY3JvbGxhYmxlUGFyZW50U2Nyb2xsV2lkdGggPSAoc2Nyb2xsYWJsZVBhcmVudCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsV2lkdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSU1QT1JUQU5UOiBCeSBkZXNpZ24sIG9ubHkgbGV0IHNjcm9sbCBob3Jpem9udGFsIGlmIHRoZSBzY3JvbGxhYmxlIHBhcmVudCBoYXMgZXhwbGljaXRseSBhbiBzY3JvbGwgaG9yaXpvbnRhbC5cbiAgICAgKiBUaGlzIGxheW91dCBzb2x1dGlvbiBpcyBub3QgZGVzaWduZWQgaW4gbWluZCB0byBoYXZlIGFueSBzY3JvbGwgaG9yaXpvbnRhbCwgYnV0IGV4Y2VwdGlvbmFsbHkgd2UgYWxsb3cgaXQgaW4gdGhpc1xuICAgICAqIHNwZWNpZmljIHVzZSBjYXNlLlxuICAgICAqL1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGlmIChvcHRpb25zLmRpc2FibGVIb3Jpem9udGFsID09IG51bGwgJiYgc2Nyb2xsYWJsZVBhcmVudFNjcm9sbFdpZHRoIDw9IHNjcm9sbGFibGVQYXJlbnRDbGllbnRSZWN0LndpZHRoKSB7XG4gICAgICAgIG9wdGlvbnMuZGlzYWJsZUhvcml6b250YWwgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiAoc291cmNlJCkgPT5cbiAgICAgICAgc291cmNlJC5waXBlKFxuICAgICAgICAgICAgbWFwKCh7IHBvaW50ZXJYLCBwb2ludGVyWSB9KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gZ2V0VmVydGljYWxTY3JvbGxEaXJlY3Rpb24oc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3QsIHBvaW50ZXJZKTtcbiAgICAgICAgICAgICAgICBsZXQgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiA9IGdldEhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24oc2Nyb2xsYWJsZVBhcmVudENsaWVudFJlY3QsIHBvaW50ZXJYKTtcblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHNjcm9sbCBkaXJlY3Rpb25zIGFyZSBkaXNhYmxlZC5cbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8uZGlzYWJsZVZlcnRpY2FsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID0gQXV0b1Njcm9sbFZlcnRpY2FsRGlyZWN0aW9uLk5PTkU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zPy5kaXNhYmxlSG9yaXpvbnRhbCkge1xuICAgICAgICAgICAgICAgICAgICBob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID0gQXV0b1Njcm9sbEhvcml6b250YWxEaXJlY3Rpb24uTk9ORTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4geyB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiwgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiB9O1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZChcbiAgICAgICAgICAgICAgICAocHJldiwgYWN0dWFsKSA9PlxuICAgICAgICAgICAgICAgICAgICBwcmV2LnZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uID09PSBhY3R1YWwudmVydGljYWxTY3JvbGxEaXJlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgcHJldi5ob3Jpem9udGFsU2Nyb2xsRGlyZWN0aW9uID09PSBhY3R1YWwuaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvblxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoeyB2ZXJ0aWNhbFNjcm9sbERpcmVjdGlvbiwgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbiB9KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uIHx8IGhvcml6b250YWxTY3JvbGxEaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjcm9sbFRvRGlyZWN0aW9uSW50ZXJ2YWwkKFxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsRGlyZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgaG9yaXpvbnRhbFNjcm9sbERpcmVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/LnNjcm9sbFN0ZXBcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gTkVWRVI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbn1cblxuLyoqXG4gKiBFbWl0cyBvbiBFVkVSWSBzY3JvbGwgZXZlbnQgYW5kIHJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHNjcm9sbCBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIGluaXRpYWwgc2Nyb2xsIHBvc2l0aW9uLlxuICogQHBhcmFtIHNjcm9sbGFibGVQYXJlbnQsIG5vZGUgaW4gd2hpY2ggc2Nyb2xsIGV2ZW50cyB3b3VsZCBiZSBsaXN0ZW5lZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGt0ZEdldFNjcm9sbFRvdGFsUmVsYXRpdmVEaWZmZXJlbmNlJChcbiAgICBzY3JvbGxhYmxlUGFyZW50OiBIVE1MRWxlbWVudCB8IERvY3VtZW50XG4pOiBPYnNlcnZhYmxlPHsgdG9wOiBudW1iZXI7IGxlZnQ6IG51bWJlciB9PiB7XG4gICAgbGV0IHNjcm9sbEluaXRpYWxQb3NpdGlvbjtcblxuICAgIC8vIENhbGN1bGF0ZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvblxuICAgIGlmIChzY3JvbGxhYmxlUGFyZW50ID09PSBkb2N1bWVudCkge1xuICAgICAgICBzY3JvbGxJbml0aWFsUG9zaXRpb24gPSBnZXRWaWV3cG9ydFNjcm9sbFBvc2l0aW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgc2Nyb2xsSW5pdGlhbFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgdG9wOiAoc2Nyb2xsYWJsZVBhcmVudCBhcyBIVE1MRWxlbWVudCkuc2Nyb2xsVG9wLFxuICAgICAgICAgICAgbGVmdDogKHNjcm9sbGFibGVQYXJlbnQgYXMgSFRNTEVsZW1lbnQpLnNjcm9sbExlZnRcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnJvbUV2ZW50KFxuICAgICAgICBzY3JvbGxhYmxlUGFyZW50LFxuICAgICAgICAnc2Nyb2xsJyxcbiAgICAgICAga3RkTm9ybWFsaXplUGFzc2l2ZUxpc3RlbmVyT3B0aW9ucyh7IGNhcHR1cmU6IHRydWUgfSkgYXMgQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnNcbiAgICApLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgbmV3VG9wOiBudW1iZXI7XG4gICAgICAgICAgICBsZXQgbmV3TGVmdDogbnVtYmVyO1xuXG4gICAgICAgICAgICBpZiAoc2Nyb2xsYWJsZVBhcmVudCA9PT0gZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uID0gZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO1xuICAgICAgICAgICAgICAgIG5ld1RvcCA9IHZpZXdwb3J0U2Nyb2xsUG9zaXRpb24udG9wO1xuICAgICAgICAgICAgICAgIG5ld0xlZnQgPSB2aWV3cG9ydFNjcm9sbFBvc2l0aW9uLmxlZnQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5ld1RvcCA9IChzY3JvbGxhYmxlUGFyZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxUb3A7XG4gICAgICAgICAgICAgICAgbmV3TGVmdCA9IChzY3JvbGxhYmxlUGFyZW50IGFzIEhUTUxFbGVtZW50KS5zY3JvbGxMZWZ0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB0b3BEaWZmZXJlbmNlID0gc2Nyb2xsSW5pdGlhbFBvc2l0aW9uLnRvcCAtIG5ld1RvcDtcbiAgICAgICAgICAgIGNvbnN0IGxlZnREaWZmZXJlbmNlID0gc2Nyb2xsSW5pdGlhbFBvc2l0aW9uLmxlZnQgLSBuZXdMZWZ0O1xuXG4gICAgICAgICAgICByZXR1cm4geyB0b3A6IHRvcERpZmZlcmVuY2UsIGxlZnQ6IGxlZnREaWZmZXJlbmNlIH07XG4gICAgICAgIH0pXG4gICAgKTtcbn1cblxuLyoqIFJldHVybnMgdGhlIHZpZXdwb3J0J3Mgd2lkdGggYW5kIGhlaWdodC4gKi9cbmZ1bmN0aW9uIGdldFZpZXdwb3J0U2l6ZSgpOiB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyIH0ge1xuICAgIGNvbnN0IF93aW5kb3cgPSBkb2N1bWVudC5kZWZhdWx0VmlldyB8fCB3aW5kb3c7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IF93aW5kb3cuaW5uZXJXaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBfd2luZG93LmlubmVySGVpZ2h0XG4gICAgfTtcbn1cblxuLyoqIEdldHMgYSBDbGllbnRSZWN0IGZvciB0aGUgdmlld3BvcnQncyBib3VuZHMuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdCgpOiBLdGRDbGllbnRSZWN0IHtcbiAgICAvLyBVc2UgdGhlIGRvY3VtZW50IGVsZW1lbnQncyBib3VuZGluZyByZWN0IHJhdGhlciB0aGFuIHRoZSB3aW5kb3cgc2Nyb2xsIHByb3BlcnRpZXNcbiAgICAvLyAoZS5nLiBwYWdlWU9mZnNldCwgc2Nyb2xsWSkgZHVlIHRvIGluIGlzc3VlIGluIENocm9tZSBhbmQgSUUgd2hlcmUgd2luZG93IHNjcm9sbFxuICAgIC8vIHByb3BlcnRpZXMgYW5kIGNsaWVudCBjb29yZGluYXRlcyAoYm91bmRpbmdDbGllbnRSZWN0LCBjbGllbnRYL1ksIGV0Yy4pIGFyZSBpbiBkaWZmZXJlbnRcbiAgICAvLyBjb25jZXB0dWFsIHZpZXdwb3J0cy4gVW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIHRoZXNlIHZpZXdwb3J0cyBhcmUgZXF1aXZhbGVudCwgYnV0IHRoZXlcbiAgICAvLyBjYW4gZGlzYWdyZWUgd2hlbiB0aGUgcGFnZSBpcyBwaW5jaC16b29tZWQgKG9uIGRldmljZXMgdGhhdCBzdXBwb3J0IHRvdWNoKS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NDg5MjA2I2M0XG4gICAgLy8gV2UgdXNlIHRoZSBkb2N1bWVudEVsZW1lbnQgaW5zdGVhZCBvZiB0aGUgYm9keSBiZWNhdXNlLCBieSBkZWZhdWx0ICh3aXRob3V0IGEgY3NzIHJlc2V0KVxuICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBnaXZlIHRoZSBkb2N1bWVudCBib2R5IGFuIDhweCBtYXJnaW4sIHdoaWNoIGlzIG5vdCBpbmNsdWRlZCBpblxuICAgIC8vIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLlxuICAgIGNvbnN0IHNjcm9sbFBvc2l0aW9uID0gZ2V0Vmlld3BvcnRTY3JvbGxQb3NpdGlvbigpO1xuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0Vmlld3BvcnRTaXplKCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0b3A6IHNjcm9sbFBvc2l0aW9uLnRvcCxcbiAgICAgICAgbGVmdDogc2Nyb2xsUG9zaXRpb24ubGVmdCxcbiAgICAgICAgYm90dG9tOiBzY3JvbGxQb3NpdGlvbi50b3AgKyBoZWlnaHQsXG4gICAgICAgIHJpZ2h0OiBzY3JvbGxQb3NpdGlvbi5sZWZ0ICsgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgd2lkdGhcbiAgICB9O1xufVxuXG4vKiogR2V0cyB0aGUgKHRvcCwgbGVmdCkgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSB2aWV3cG9ydC4gKi9cbmZ1bmN0aW9uIGdldFZpZXdwb3J0U2Nyb2xsUG9zaXRpb24oKTogeyB0b3A6IG51bWJlcjsgbGVmdDogbnVtYmVyIH0ge1xuICAgIC8vIFRoZSB0b3AtbGVmdC1jb3JuZXIgb2YgdGhlIHZpZXdwb3J0IGlzIGRldGVybWluZWQgYnkgdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgZG9jdW1lbnRcbiAgICAvLyBib2R5LCBub3JtYWxseSBqdXN0IChzY3JvbGxMZWZ0LCBzY3JvbGxUb3ApLiBIb3dldmVyLCBDaHJvbWUgYW5kIEZpcmVmb3ggZGlzYWdyZWUgYWJvdXRcbiAgICAvLyB3aGV0aGVyIGBkb2N1bWVudC5ib2R5YCBvciBgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50YCBpcyB0aGUgc2Nyb2xsZWQgZWxlbWVudCwgc28gcmVhZGluZ1xuICAgIC8vIGBzY3JvbGxUb3BgIGFuZCBgc2Nyb2xsTGVmdGAgaXMgaW5jb25zaXN0ZW50LiBIb3dldmVyLCB1c2luZyB0aGUgYm91bmRpbmcgcmVjdCBvZlxuICAgIC8vIGBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRgIHdvcmtzIGNvbnNpc3RlbnRseSwgd2hlcmUgdGhlIGB0b3BgIGFuZCBgbGVmdGAgdmFsdWVzIHdpbGxcbiAgICAvLyBlcXVhbCBuZWdhdGl2ZSB0aGUgc2Nyb2xsIHBvc2l0aW9uLlxuICAgIGNvbnN0IHdpbmRvd1JlZiA9IGRvY3VtZW50LmRlZmF1bHRWaWV3IHx8IHdpbmRvdztcbiAgICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQhO1xuICAgIGNvbnN0IGRvY3VtZW50UmVjdCA9IGRvY3VtZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IHRvcCA9IC1kb2N1bWVudFJlY3QudG9wIHx8IGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8IHdpbmRvd1JlZi5zY3JvbGxZIHx8IGRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHwgMDtcblxuICAgIGNvbnN0IGxlZnQgPSAtZG9jdW1lbnRSZWN0LmxlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IHx8IHdpbmRvd1JlZi5zY3JvbGxYIHx8IGRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IHx8IDA7XG5cbiAgICByZXR1cm4geyB0b3AsIGxlZnQgfTtcbn1cblxuLyoqIFJldHVybnMgdGhlIGRvY3VtZW50IHNjcm9sbCB3aWR0aCAqL1xuZnVuY3Rpb24gZ2V0RG9jdW1lbnRTY3JvbGxXaWR0aCgpOiBhbnkge1xuICAgIHJldHVybiBNYXRoLm1heChkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgpO1xufVxuXG4iXX0=
@@ -2,7 +2,7 @@
2
2
  * Transition duration utilities.
3
3
  * This file is taken from Angular Material repository.
4
4
  */
5
- /* eslint-disable @katoid/prefix-exported-code */
5
+ /* eslint-disable */
6
6
  /** Parses a CSS time value to milliseconds. */
7
7
  function parseCssTimeUnitsToMs(value) {
8
8
  // Some browsers will return it in seconds, whereas others will return milliseconds.
@@ -31,4 +31,4 @@ function parseCssPropertyValue(computedStyle, name) {
31
31
  const value = computedStyle.getPropertyValue(name);
32
32
  return value.split(',').map(part => part.trim());
33
33
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbi1kdXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvdXRpbHMvdHJhbnNpdGlvbi1kdXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxpREFBaUQ7QUFFakQsK0NBQStDO0FBQy9DLFNBQVMscUJBQXFCLENBQUMsS0FBYTtJQUMxQyxvRkFBb0Y7SUFDcEYsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLENBQUM7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLE9BQW9CO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDM0YsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7SUFFN0YsK0VBQStFO0lBQy9FLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSwyRUFBMkU7SUFDM0UsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBRTNFLE9BQU8scUJBQXFCLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsU0FBUyxxQkFBcUIsQ0FBQyxhQUFrQyxFQUFFLElBQVk7SUFDN0UsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2l0aW9uIGR1cmF0aW9uIHV0aWxpdGllcy5cbiAqIFRoaXMgZmlsZSBpcyB0YWtlbiBmcm9tIEFuZ3VsYXIgTWF0ZXJpYWwgcmVwb3NpdG9yeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAa2F0b2lkL3ByZWZpeC1leHBvcnRlZC1jb2RlICovXG5cbi8qKiBQYXJzZXMgYSBDU1MgdGltZSB2YWx1ZSB0byBtaWxsaXNlY29uZHMuICovXG5mdW5jdGlvbiBwYXJzZUNzc1RpbWVVbml0c1RvTXModmFsdWU6IHN0cmluZyk6IG51bWJlciB7XG4gIC8vIFNvbWUgYnJvd3NlcnMgd2lsbCByZXR1cm4gaXQgaW4gc2Vjb25kcywgd2hlcmVhcyBvdGhlcnMgd2lsbCByZXR1cm4gbWlsbGlzZWNvbmRzLlxuICBjb25zdCBtdWx0aXBsaWVyID0gdmFsdWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKCdtcycpID4gLTEgPyAxIDogMTAwMDtcbiAgcmV0dXJuIHBhcnNlRmxvYXQodmFsdWUpICogbXVsdGlwbGllcjtcbn1cblxuLyoqIEdldHMgdGhlIHRyYW5zZm9ybSB0cmFuc2l0aW9uIGR1cmF0aW9uLCBpbmNsdWRpbmcgdGhlIGRlbGF5LCBvZiBhbiBlbGVtZW50IGluIG1pbGxpc2Vjb25kcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2Zvcm1UcmFuc2l0aW9uRHVyYXRpb25Jbk1zKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogbnVtYmVyIHtcbiAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG4gIGNvbnN0IHRyYW5zaXRpb25lZFByb3BlcnRpZXMgPSBwYXJzZUNzc1Byb3BlcnR5VmFsdWUoY29tcHV0ZWRTdHlsZSwgJ3RyYW5zaXRpb24tcHJvcGVydHknKTtcbiAgY29uc3QgcHJvcGVydHkgPSB0cmFuc2l0aW9uZWRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wID09PSAndHJhbnNmb3JtJyB8fCBwcm9wID09PSAnYWxsJyk7XG5cbiAgLy8gSWYgdGhlcmUncyBubyB0cmFuc2l0aW9uIGZvciBgYWxsYCBvciBgdHJhbnNmb3JtYCwgd2Ugc2hvdWxkbid0IGRvIGFueXRoaW5nLlxuICBpZiAoIXByb3BlcnR5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBwcm9wZXJ0eSB0aGF0IHdlJ3JlIGludGVyZXN0ZWQgaW4gYW5kIG1hdGNoXG4gIC8vIGl0IHVwIHRvIHRoZSBzYW1lIGluZGV4IGluIGB0cmFuc2l0aW9uLWRlbGF5YCBhbmQgYHRyYW5zaXRpb24tZHVyYXRpb25gLlxuICBjb25zdCBwcm9wZXJ0eUluZGV4ID0gdHJhbnNpdGlvbmVkUHJvcGVydGllcy5pbmRleE9mKHByb3BlcnR5KTtcbiAgY29uc3QgcmF3RHVyYXRpb25zID0gcGFyc2VDc3NQcm9wZXJ0eVZhbHVlKGNvbXB1dGVkU3R5bGUsICd0cmFuc2l0aW9uLWR1cmF0aW9uJyk7XG4gIGNvbnN0IHJhd0RlbGF5cyA9IHBhcnNlQ3NzUHJvcGVydHlWYWx1ZShjb21wdXRlZFN0eWxlLCAndHJhbnNpdGlvbi1kZWxheScpO1xuXG4gIHJldHVybiBwYXJzZUNzc1RpbWVVbml0c1RvTXMocmF3RHVyYXRpb25zW3Byb3BlcnR5SW5kZXhdKSArXG4gICAgICAgICBwYXJzZUNzc1RpbWVVbml0c1RvTXMocmF3RGVsYXlzW3Byb3BlcnR5SW5kZXhdKTtcbn1cblxuLyoqIFBhcnNlcyBvdXQgbXVsdGlwbGUgdmFsdWVzIGZyb20gYSBjb21wdXRlZCBzdHlsZSBpbnRvIGFuIGFycmF5LiAqL1xuZnVuY3Rpb24gcGFyc2VDc3NQcm9wZXJ0eVZhbHVlKGNvbXB1dGVkU3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24sIG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgdmFsdWUgPSBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFsdWUobmFtZSk7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgnLCcpLm1hcChwYXJ0ID0+IHBhcnQudHJpbSgpKTtcbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdGlvbi1kdXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhcnNhLXVzZXItd29ya3NwYWNlL3NyYy9saWIvdXRpbHMvdHJhbnNpdGlvbi1kdXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxvQkFBb0I7QUFFcEIsK0NBQStDO0FBQy9DLFNBQVMscUJBQXFCLENBQUMsS0FBYTtJQUMxQyxvRkFBb0Y7SUFDcEYsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLENBQUM7QUFFRCxrR0FBa0c7QUFDbEcsTUFBTSxVQUFVLGtDQUFrQyxDQUFDLE9BQW9CO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELE1BQU0sc0JBQXNCLEdBQUcscUJBQXFCLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDM0YsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLFdBQVcsSUFBSSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7SUFFN0YsK0VBQStFO0lBQy9FLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELG1FQUFtRTtJQUNuRSwyRUFBMkU7SUFDM0UsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9ELE1BQU0sWUFBWSxHQUFHLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ2pGLE1BQU0sU0FBUyxHQUFHLHFCQUFxQixDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO0lBRTNFLE9BQU8scUJBQXFCLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ2xELHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3pELENBQUM7QUFFRCxzRUFBc0U7QUFDdEUsU0FBUyxxQkFBcUIsQ0FBQyxhQUFrQyxFQUFFLElBQVk7SUFDN0UsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNuRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2l0aW9uIGR1cmF0aW9uIHV0aWxpdGllcy5cbiAqIFRoaXMgZmlsZSBpcyB0YWtlbiBmcm9tIEFuZ3VsYXIgTWF0ZXJpYWwgcmVwb3NpdG9yeS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vKiogUGFyc2VzIGEgQ1NTIHRpbWUgdmFsdWUgdG8gbWlsbGlzZWNvbmRzLiAqL1xuZnVuY3Rpb24gcGFyc2VDc3NUaW1lVW5pdHNUb01zKHZhbHVlOiBzdHJpbmcpOiBudW1iZXIge1xuICAvLyBTb21lIGJyb3dzZXJzIHdpbGwgcmV0dXJuIGl0IGluIHNlY29uZHMsIHdoZXJlYXMgb3RoZXJzIHdpbGwgcmV0dXJuIG1pbGxpc2Vjb25kcy5cbiAgY29uc3QgbXVsdGlwbGllciA9IHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignbXMnKSA+IC0xID8gMSA6IDEwMDA7XG4gIHJldHVybiBwYXJzZUZsb2F0KHZhbHVlKSAqIG11bHRpcGxpZXI7XG59XG5cbi8qKiBHZXRzIHRoZSB0cmFuc2Zvcm0gdHJhbnNpdGlvbiBkdXJhdGlvbiwgaW5jbHVkaW5nIHRoZSBkZWxheSwgb2YgYW4gZWxlbWVudCBpbiBtaWxsaXNlY29uZHMuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHJhbnNmb3JtVHJhbnNpdGlvbkR1cmF0aW9uSW5NcyhlbGVtZW50OiBIVE1MRWxlbWVudCk6IG51bWJlciB7XG4gIGNvbnN0IGNvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICBjb25zdCB0cmFuc2l0aW9uZWRQcm9wZXJ0aWVzID0gcGFyc2VDc3NQcm9wZXJ0eVZhbHVlKGNvbXB1dGVkU3R5bGUsICd0cmFuc2l0aW9uLXByb3BlcnR5Jyk7XG4gIGNvbnN0IHByb3BlcnR5ID0gdHJhbnNpdGlvbmVkUHJvcGVydGllcy5maW5kKHByb3AgPT4gcHJvcCA9PT0gJ3RyYW5zZm9ybScgfHwgcHJvcCA9PT0gJ2FsbCcpO1xuXG4gIC8vIElmIHRoZXJlJ3Mgbm8gdHJhbnNpdGlvbiBmb3IgYGFsbGAgb3IgYHRyYW5zZm9ybWAsIHdlIHNob3VsZG4ndCBkbyBhbnl0aGluZy5cbiAgaWYgKCFwcm9wZXJ0eSkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBpbmRleCBvZiB0aGUgcHJvcGVydHkgdGhhdCB3ZSdyZSBpbnRlcmVzdGVkIGluIGFuZCBtYXRjaFxuICAvLyBpdCB1cCB0byB0aGUgc2FtZSBpbmRleCBpbiBgdHJhbnNpdGlvbi1kZWxheWAgYW5kIGB0cmFuc2l0aW9uLWR1cmF0aW9uYC5cbiAgY29uc3QgcHJvcGVydHlJbmRleCA9IHRyYW5zaXRpb25lZFByb3BlcnRpZXMuaW5kZXhPZihwcm9wZXJ0eSk7XG4gIGNvbnN0IHJhd0R1cmF0aW9ucyA9IHBhcnNlQ3NzUHJvcGVydHlWYWx1ZShjb21wdXRlZFN0eWxlLCAndHJhbnNpdGlvbi1kdXJhdGlvbicpO1xuICBjb25zdCByYXdEZWxheXMgPSBwYXJzZUNzc1Byb3BlcnR5VmFsdWUoY29tcHV0ZWRTdHlsZSwgJ3RyYW5zaXRpb24tZGVsYXknKTtcblxuICByZXR1cm4gcGFyc2VDc3NUaW1lVW5pdHNUb01zKHJhd0R1cmF0aW9uc1twcm9wZXJ0eUluZGV4XSkgK1xuICAgICAgICAgcGFyc2VDc3NUaW1lVW5pdHNUb01zKHJhd0RlbGF5c1twcm9wZXJ0eUluZGV4XSk7XG59XG5cbi8qKiBQYXJzZXMgb3V0IG11bHRpcGxlIHZhbHVlcyBmcm9tIGEgY29tcHV0ZWQgc3R5bGUgaW50byBhbiBhcnJheS4gKi9cbmZ1bmN0aW9uIHBhcnNlQ3NzUHJvcGVydHlWYWx1ZShjb21wdXRlZFN0eWxlOiBDU1NTdHlsZURlY2xhcmF0aW9uLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHZhbHVlID0gY29tcHV0ZWRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKG5hbWUpO1xuICByZXR1cm4gdmFsdWUuc3BsaXQoJywnKS5tYXAocGFydCA9PiBwYXJ0LnRyaW0oKSk7XG59XG4iXX0=