UNPKG

angular-admin-lte-teliqo

Version:
311 lines (310 loc) 25.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChild, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2, TemplateRef, ViewChild } from '@angular/core'; import { removeListeners } from '../helpers'; var DropdownToggleComponent = /** @class */ (function () { function DropdownToggleComponent() { } DropdownToggleComponent.decorators = [ { type: Component, args: [{ selector: 'mk-dropdown-toggle', template: '<ng-template #templateRef><ng-content></ng-content></ng-template>', changeDetection: ChangeDetectionStrategy.OnPush },] }, ]; /** @nocollapse */ DropdownToggleComponent.propDecorators = { "templateRef": [{ type: ViewChild, args: ['templateRef',] },], "toggleElement": [{ type: ContentChild, args: ['toggleElement',] },], }; return DropdownToggleComponent; }()); export { DropdownToggleComponent }; function DropdownToggleComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DropdownToggleComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DropdownToggleComponent.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DropdownToggleComponent.propDecorators; /** @type {?} */ DropdownToggleComponent.prototype.templateRef; /** @type {?} */ DropdownToggleComponent.prototype.toggleElement; } var DropdownMenuComponent = /** @class */ (function () { function DropdownMenuComponent() { } DropdownMenuComponent.decorators = [ { type: Component, args: [{ selector: 'mk-dropdown-menu', template: '<ng-template #templateRef><ng-content></ng-content></ng-template>', changeDetection: ChangeDetectionStrategy.OnPush },] }, ]; /** @nocollapse */ DropdownMenuComponent.propDecorators = { "templateRef": [{ type: ViewChild, args: ['templateRef',] },], }; return DropdownMenuComponent; }()); export { DropdownMenuComponent }; function DropdownMenuComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DropdownMenuComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DropdownMenuComponent.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DropdownMenuComponent.propDecorators; /** @type {?} */ DropdownMenuComponent.prototype.templateRef; } var DropdownComponent = /** @class */ (function () { /** * @method constructor * @param changeDetectorRef [description] * @param elementRef [description] * @param ngZone [description] * @param renderer2 [description] */ function DropdownComponent(changeDetectorRef, elementRef, ngZone, renderer2) { this.changeDetectorRef = changeDetectorRef; this.elementRef = elementRef; this.ngZone = ngZone; this.renderer2 = renderer2; this.listeners = []; this.buttonStyleClass = 'btn dropdown-toggle'; this.buttonBackgroudColor = 'default'; this.contentStyleClass = 'dropdown-menu'; this.isCollapsed = true; this.isWrapper = true; this.styleClass = 'dropdown'; this.onCollapseStart = new EventEmitter(); this.onCollapseDone = new EventEmitter(); } /** * @method ngAfterViewInit */ /** * \@method ngAfterViewInit * @return {?} */ DropdownComponent.prototype.ngAfterViewInit = /** * \@method ngAfterViewInit * @return {?} */ function () { var _this = this; var /** @type {?} */ toggleNativeElement = this.dropdownToggleComponent && this.dropdownToggleComponent.toggleElement ? this.dropdownToggleComponent.toggleElement.nativeElement : this.toggleElement ? this.toggleElement : this.defaultToggleElement ? this.defaultToggleElement.nativeElement : null; if (toggleNativeElement) { this.ngZone.runOutsideAngular(function () { _this.listeners.push(_this.renderer2.listen(toggleNativeElement, 'click', function (event) { _this.toggleDropdown(event); _this.changeDetectorRef.detectChanges(); })); }); } }; /** * @method ngOnDestroy */ /** * \@method ngOnDestroy * @return {?} */ DropdownComponent.prototype.ngOnDestroy = /** * \@method ngOnDestroy * @return {?} */ function () { this.unBindDocumentClickListener(); removeListeners(this.listeners); }; /** * [toggle description] * \@method toggle * @param {?} event [description] * @return {?} */ DropdownComponent.prototype.toggleDropdown = /** * [toggle description] * \@method toggle * @param {?} event [description] * @return {?} */ function (event) { var _this = this; event.preventDefault(); this.isCollapsed = !this.isCollapsed; if (!this.isCollapsed) { this.ngZone.runOutsideAngular(function () { setTimeout(function () { _this.bindDocumentClickListener(); }); }); } else { this.unBindDocumentClickListener(); } }; /** * [collapseStart description] * \@method collapseStart * @param {?} event [description] * @return {?} */ DropdownComponent.prototype.collapseStart = /** * [collapseStart description] * \@method collapseStart * @param {?} event [description] * @return {?} */ function (event) { this.onCollapseStart.emit(event); }; /** * [collapseDone description] * \@method collapseDone * @param {?} event [description] * @return {?} */ DropdownComponent.prototype.collapseDone = /** * [collapseDone description] * \@method collapseDone * @param {?} event [description] * @return {?} */ function (event) { this.onCollapseStart.emit(event); }; /** * [bindDocumentClickListener description] * \@method bindDocumentClickListener * @return {?} */ DropdownComponent.prototype.bindDocumentClickListener = /** * [bindDocumentClickListener description] * \@method bindDocumentClickListener * @return {?} */ function () { var _this = this; this.ngZone.runOutsideAngular(function () { _this.documentClickListener = _this.renderer2.listen('document', 'click', function () { if (!_this.isCollapsed) { _this.isCollapsed = true; _this.unBindDocumentClickListener(); _this.changeDetectorRef.detectChanges(); } }); }); }; /** * [unBindDocumentClickListener description] * \@method unBindDocumentClickListener * @return {?} */ DropdownComponent.prototype.unBindDocumentClickListener = /** * [unBindDocumentClickListener description] * \@method unBindDocumentClickListener * @return {?} */ function () { if (this.documentClickListener) { this.documentClickListener(); } }; DropdownComponent.decorators = [ { type: Component, args: [{ selector: 'mk-dropdown, [mk-dropdown]', template: "<ng-template #innerTemplate>\n <ng-container *ngIf=\"this.dropdownToggleComponent && this.dropdownToggleComponent.toggleElement; else noToggleElement\" [ngTemplateOutlet]=\"dropdownToggleComponent.templateRef\"></ng-container>\n <ng-template #noToggleElement>\n <button *ngIf=\"toggleText || dropdownToggleComponent\" [mkColor]=\"buttonBackgroudColor\" mkColorProperty=\"background-color\" mkColorPrefix=\"btn\" [ngClass]=\"buttonStyleClass\" #toggleElement>\n {{toggleText}}\n <ng-container [ngTemplateOutlet]=\"dropdownToggleComponent?.templateRef\"></ng-container>\n </button>\n </ng-template>\n <ul [ngClass]=\"contentStyleClass\" [collapseAnimation]=\"isCollapsed\" (collapseAnimation.start)=\"collapseStart($event)\" (collapseAnimation.done)=\"collapseDone($event)\">\n <ng-container *ngIf=\"dropdownMenuComponent; else noDropdownMenuComponent\" [ngTemplateOutlet]=\"dropdownMenuComponent.templateRef\"></ng-container>\n <ng-template #noDropdownMenuComponent>\n <ng-content></ng-content>\n </ng-template>\n </ul>\n</ng-template>\n\n<div *ngIf=\"isWrapper; else noWrapper\" [ngClass]=\"styleClass\">\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n</div>\n\n<ng-template #noWrapper>\n <ng-container *ngTemplateOutlet=\"innerTemplate\"></ng-container>\n</ng-template>\n", styles: [".dropdown-menu{display:block}.dropdown-menu.collapsing:not(.un-collapse){transition-property:height,padding-top,padding-bottom;padding-top:0;padding-bottom:0}"], changeDetection: ChangeDetectionStrategy.OnPush },] }, ]; /** @nocollapse */ DropdownComponent.ctorParameters = function () { return [ { type: ChangeDetectorRef, }, { type: ElementRef, }, { type: NgZone, }, { type: Renderer2, }, ]; }; DropdownComponent.propDecorators = { "buttonStyleClass": [{ type: Input },], "buttonBackgroudColor": [{ type: Input },], "contentStyleClass": [{ type: Input },], "isCollapsed": [{ type: Input },], "isWrapper": [{ type: Input },], "styleClass": [{ type: Input },], "toggleElement": [{ type: Input },], "toggleText": [{ type: Input },], "onCollapseStart": [{ type: Output },], "onCollapseDone": [{ type: Output },], "dropdownToggleComponent": [{ type: ContentChild, args: [DropdownToggleComponent,] },], "dropdownMenuComponent": [{ type: ContentChild, args: [DropdownMenuComponent,] },], "defaultToggleElement": [{ type: ViewChild, args: ['toggleElement',] },], }; return DropdownComponent; }()); export { DropdownComponent }; function DropdownComponent_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DropdownComponent.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DropdownComponent.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DropdownComponent.propDecorators; /** @type {?} */ DropdownComponent.prototype.documentClickListener; /** @type {?} */ DropdownComponent.prototype.listeners; /** @type {?} */ DropdownComponent.prototype.buttonStyleClass; /** @type {?} */ DropdownComponent.prototype.buttonBackgroudColor; /** @type {?} */ DropdownComponent.prototype.contentStyleClass; /** @type {?} */ DropdownComponent.prototype.isCollapsed; /** @type {?} */ DropdownComponent.prototype.isWrapper; /** @type {?} */ DropdownComponent.prototype.styleClass; /** @type {?} */ DropdownComponent.prototype.toggleElement; /** @type {?} */ DropdownComponent.prototype.toggleText; /** @type {?} */ DropdownComponent.prototype.onCollapseStart; /** @type {?} */ DropdownComponent.prototype.onCollapseDone; /** @type {?} */ DropdownComponent.prototype.dropdownToggleComponent; /** @type {?} */ DropdownComponent.prototype.dropdownMenuComponent; /** @type {?} */ DropdownComponent.prototype.defaultToggleElement; /** @type {?} */ DropdownComponent.prototype.changeDetectorRef; /** @type {?} */ DropdownComponent.prototype.elementRef; /** @type {?} */ DropdownComponent.prototype.ngZone; /** @type {?} */ DropdownComponent.prototype.renderer2; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1hZG1pbi1sdGUtdGVsaXFvLyIsInNvdXJjZXMiOlsibGliL2Ryb3Bkb3duL2Ryb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sTUFBTSxFQUNOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxZQUFZLENBQUM7Ozs7O2dCQUsxQyxTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLG1FQUFtRTtvQkFDN0UsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzs7O2dDQUVFLFNBQVMsU0FBQyxhQUFhO2tDQUN2QixZQUFZLFNBQUMsZUFBZTs7a0NBL0IvQjs7U0E2QmEsdUJBQXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztnQkFTbkMsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFFBQVEsRUFBRSxtRUFBbUU7b0JBQzdFLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQ0FFRSxTQUFTLFNBQUMsYUFBYTs7Z0NBNUMxQjs7U0EyQ2EscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7SUEwRGhDOzs7Ozs7T0FNRztJQUNILDJCQUNVLG1CQUNBLFlBQ0EsUUFDQTtRQUhBLHNCQUFpQixHQUFqQixpQkFBaUI7UUFDakIsZUFBVSxHQUFWLFVBQVU7UUFDVixXQUFNLEdBQU4sTUFBTTtRQUNOLGNBQVMsR0FBVCxTQUFTO3lCQTlCQyxFQUFFO2dDQUVhLHFCQUFxQjtvQ0FDakIsU0FBUztpQ0FDWixlQUFlOzJCQUNyQixJQUFJO3lCQUNOLElBQUk7MEJBQ0gsVUFBVTsrQkFJSixJQUFJLFlBQVksRUFBRTs4QkFDbkIsSUFBSSxZQUFZLEVBQUU7S0FtQmhEO0lBRUo7O09BRUc7Ozs7O0lBQ0gsMkNBQWU7Ozs7SUFBZjtRQUFBLGlCQWFDO1FBWkMscUJBQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixJQUFJLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsdUJBQXVCLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxFQUFFLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztnQkFDNUIsS0FBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsT0FBTyxFQUFFLFVBQUMsS0FBWTtvQkFDbkYsS0FBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsS0FBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUN4QyxDQUFDLENBQUMsQ0FBQzthQUNMLENBQUMsQ0FBQztTQUNKO0tBQ0Y7SUFFRDs7T0FFRzs7Ozs7SUFDSCx1Q0FBVzs7OztJQUFYO1FBQ0UsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7UUFDbkMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNqQzs7Ozs7OztJQU9NLDBDQUFjOzs7Ozs7Y0FBQyxLQUFZOztRQUNoQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO2dCQUM1QixVQUFVLENBQUU7b0JBQ1YsS0FBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7aUJBQ2xDLENBQUMsQ0FBQzthQUNKLENBQUMsQ0FBQztTQUNKO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztTQUNwQzs7Ozs7Ozs7SUFRSSx5Q0FBYTs7Ozs7O2NBQUMsS0FBcUI7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Ozs7Ozs7O0lBUTVCLHdDQUFZOzs7Ozs7Y0FBQyxLQUFxQjtRQUN2QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs7Ozs7OztJQU8zQixxREFBeUI7Ozs7Ozs7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QixLQUFJLENBQUMscUJBQXFCLEdBQUcsS0FBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRTtnQkFDdEUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztvQkFDdEIsS0FBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLEtBQUksQ0FBQywyQkFBMkIsRUFBRSxDQUFDO29CQUNuQyxLQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7aUJBQ3hDO2FBQ0YsQ0FBQyxDQUFDO1NBQ0osQ0FBQyxDQUFDOzs7Ozs7O0lBT0csdURBQTJCOzs7Ozs7UUFDakMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztTQUM5Qjs7O2dCQXRKSixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsUUFBUSxFQUFFLHF6Q0F1Qlg7b0JBQ0MsTUFBTSxFQUFFLENBQUMsZ0tBQWdLLENBQUM7b0JBQzFLLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNoRDs7OztnQkE1RUMsaUJBQWlCO2dCQUdqQixVQUFVO2dCQUdWLE1BQU07Z0JBR04sU0FBUzs7O3FDQXdFUixLQUFLO3lDQUNMLEtBQUs7c0NBQ0wsS0FBSztnQ0FDTCxLQUFLOzhCQUNMLEtBQUs7K0JBQ0wsS0FBSztrQ0FDTCxLQUFLOytCQUNMLEtBQUs7b0NBRUwsTUFBTTttQ0FDTixNQUFNOzRDQUVOLFlBQVksU0FBQyx1QkFBdUI7MENBQ3BDLFlBQVksU0FBQyxxQkFBcUI7eUNBRWxDLFNBQVMsU0FBQyxlQUFlOzs0QkFuRzVCOztTQWdGYSxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7QW5pbWF0aW9uRXZlbnR9IGZyb20gJy4uL2FuaW1hdGlvbnMvYW5pbWF0aW9ucy5pbnRlcmZhY2UnO1xuXG5pbXBvcnQge3JlbW92ZUxpc3RlbmVyc30gZnJvbSAnLi4vaGVscGVycyc7XG5cbi8qXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtay1kcm9wZG93bi10b2dnbGUnLFxuICB0ZW1wbGF0ZTogJzxuZy10ZW1wbGF0ZSAjdGVtcGxhdGVSZWY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvbmctdGVtcGxhdGU+JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Ub2dnbGVDb21wb25lbnQge1xuICBAVmlld0NoaWxkKCd0ZW1wbGF0ZVJlZicpIHB1YmxpYyB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcbiAgQENvbnRlbnRDaGlsZCgndG9nZ2xlRWxlbWVudCcpIHB1YmxpYyB0b2dnbGVFbGVtZW50OiBFbGVtZW50UmVmO1xufVxuXG5cbi8qXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtay1kcm9wZG93bi1tZW51JyxcbiAgdGVtcGxhdGU6ICc8bmctdGVtcGxhdGUgI3RlbXBsYXRlUmVmPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duTWVudUNvbXBvbmVudCB7XG4gIEBWaWV3Q2hpbGQoJ3RlbXBsYXRlUmVmJykgcHVibGljIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xufVxuXG5cbi8qXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtay1kcm9wZG93biwgW21rLWRyb3Bkb3duXScsXG4gIHRlbXBsYXRlOiBgPG5nLXRlbXBsYXRlICNpbm5lclRlbXBsYXRlPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGhpcy5kcm9wZG93blRvZ2dsZUNvbXBvbmVudCAmJiB0aGlzLmRyb3Bkb3duVG9nZ2xlQ29tcG9uZW50LnRvZ2dsZUVsZW1lbnQ7IGVsc2Ugbm9Ub2dnbGVFbGVtZW50XCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcGRvd25Ub2dnbGVDb21wb25lbnQudGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgPG5nLXRlbXBsYXRlICNub1RvZ2dsZUVsZW1lbnQ+XG4gICAgPGJ1dHRvbiAqbmdJZj1cInRvZ2dsZVRleHQgfHwgZHJvcGRvd25Ub2dnbGVDb21wb25lbnRcIiBbbWtDb2xvcl09XCJidXR0b25CYWNrZ3JvdWRDb2xvclwiIG1rQ29sb3JQcm9wZXJ0eT1cImJhY2tncm91bmQtY29sb3JcIiBta0NvbG9yUHJlZml4PVwiYnRuXCIgW25nQ2xhc3NdPVwiYnV0dG9uU3R5bGVDbGFzc1wiICN0b2dnbGVFbGVtZW50PlxuICAgICAge3t0b2dnbGVUZXh0fX1cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHJvcGRvd25Ub2dnbGVDb21wb25lbnQ/LnRlbXBsYXRlUmVmXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDx1bCBbbmdDbGFzc109XCJjb250ZW50U3R5bGVDbGFzc1wiIFtjb2xsYXBzZUFuaW1hdGlvbl09XCJpc0NvbGxhcHNlZFwiIChjb2xsYXBzZUFuaW1hdGlvbi5zdGFydCk9XCJjb2xsYXBzZVN0YXJ0KCRldmVudClcIiAoY29sbGFwc2VBbmltYXRpb24uZG9uZSk9XCJjb2xsYXBzZURvbmUoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkcm9wZG93bk1lbnVDb21wb25lbnQ7IGVsc2Ugbm9Ecm9wZG93bk1lbnVDb21wb25lbnRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkcm9wZG93bk1lbnVDb21wb25lbnQudGVtcGxhdGVSZWZcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI25vRHJvcGRvd25NZW51Q29tcG9uZW50PlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvdWw+XG48L25nLXRlbXBsYXRlPlxuXG48ZGl2ICpuZ0lmPVwiaXNXcmFwcGVyOyBlbHNlIG5vV3JhcHBlclwiIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI25vV3JhcHBlcj5cbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlubmVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG5gLFxuICBzdHlsZXM6IFtgLmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9ja30uZHJvcGRvd24tbWVudS5jb2xsYXBzaW5nOm5vdCgudW4tY29sbGFwc2Upe3RyYW5zaXRpb24tcHJvcGVydHk6aGVpZ2h0LHBhZGRpbmctdG9wLHBhZGRpbmctYm90dG9tO3BhZGRpbmctdG9wOjA7cGFkZGluZy1ib3R0b206MH1gXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGRvY3VtZW50Q2xpY2tMaXN0ZW5lcjogRnVuY3Rpb247XG4gIHByaXZhdGUgbGlzdGVuZXJzID0gW107XG5cbiAgQElucHV0KCkgcHVibGljIGJ1dHRvblN0eWxlQ2xhc3MgPSAnYnRuIGRyb3Bkb3duLXRvZ2dsZSc7XG4gIEBJbnB1dCgpIHB1YmxpYyBidXR0b25CYWNrZ3JvdWRDb2xvciA9ICdkZWZhdWx0JztcbiAgQElucHV0KCkgcHVibGljIGNvbnRlbnRTdHlsZUNsYXNzID0gJ2Ryb3Bkb3duLW1lbnUnO1xuICBASW5wdXQoKSBwdWJsaWMgaXNDb2xsYXBzZWQgPSB0cnVlO1xuICBASW5wdXQoKSBwdWJsaWMgaXNXcmFwcGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHN0eWxlQ2xhc3MgPSAnZHJvcGRvd24nO1xuICBASW5wdXQoKSBwdWJsaWMgdG9nZ2xlRWxlbWVudDogRWxlbWVudDtcbiAgQElucHV0KCkgcHVibGljIHRvZ2dsZVRleHQ6IHN0cmluZztcblxuICBAT3V0cHV0KCkgcHVibGljIG9uQ29sbGFwc2VTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvbkNvbGxhcHNlRG9uZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBAQ29udGVudENoaWxkKERyb3Bkb3duVG9nZ2xlQ29tcG9uZW50KSBwdWJsaWMgZHJvcGRvd25Ub2dnbGVDb21wb25lbnQ6IERyb3Bkb3duVG9nZ2xlQ29tcG9uZW50O1xuICBAQ29udGVudENoaWxkKERyb3Bkb3duTWVudUNvbXBvbmVudCkgcHVibGljIGRyb3Bkb3duTWVudUNvbXBvbmVudDogRHJvcGRvd25NZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3RvZ2dsZUVsZW1lbnQnKSBwcml2YXRlIGRlZmF1bHRUb2dnbGVFbGVtZW50OiBFbGVtZW50UmVmO1xuXG4gIC8qKlxuICAgKiBAbWV0aG9kIGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBbZGVzY3JpcHRpb25dXG4gICAqIEBwYXJhbSBlbGVtZW50UmVmIFtkZXNjcmlwdGlvbl1cbiAgICogQHBhcmFtIG5nWm9uZSBbZGVzY3JpcHRpb25dXG4gICAqIEBwYXJhbSByZW5kZXJlcjIgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjI6IFJlbmRlcmVyMlxuICApIHt9XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgbmdBZnRlclZpZXdJbml0XG4gICAqL1xuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgdG9nZ2xlTmF0aXZlRWxlbWVudCA9IHRoaXMuZHJvcGRvd25Ub2dnbGVDb21wb25lbnQgJiYgdGhpcy5kcm9wZG93blRvZ2dsZUNvbXBvbmVudC50b2dnbGVFbGVtZW50ID9cbiAgICAgIHRoaXMuZHJvcGRvd25Ub2dnbGVDb21wb25lbnQudG9nZ2xlRWxlbWVudC5uYXRpdmVFbGVtZW50IDogdGhpcy50b2dnbGVFbGVtZW50ID9cbiAgICAgICAgdGhpcy50b2dnbGVFbGVtZW50IDogdGhpcy5kZWZhdWx0VG9nZ2xlRWxlbWVudCA/XG4gICAgICAgICAgdGhpcy5kZWZhdWx0VG9nZ2xlRWxlbWVudC5uYXRpdmVFbGVtZW50IDogbnVsbDtcbiAgICBpZiAodG9nZ2xlTmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmxpc3RlbmVycy5wdXNoKHRoaXMucmVuZGVyZXIyLmxpc3Rlbih0b2dnbGVOYXRpdmVFbGVtZW50LCAnY2xpY2snLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bihldmVudCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAbWV0aG9kIG5nT25EZXN0cm95XG4gICAqL1xuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnVuQmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgIHJlbW92ZUxpc3RlbmVycyh0aGlzLmxpc3RlbmVycyk7XG4gIH1cblxuICAvKipcbiAgICogW3RvZ2dsZSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCB0b2dnbGVcbiAgICogQHBhcmFtIGV2ZW50IFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIHRoaXMuaXNDb2xsYXBzZWQgPSAhdGhpcy5pc0NvbGxhcHNlZDtcbiAgICBpZiAoIXRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVuQmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBbY29sbGFwc2VTdGFydCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBjb2xsYXBzZVN0YXJ0XG4gICAqIEBwYXJhbSBldmVudCBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgY29sbGFwc2VTdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29sbGFwc2VTdGFydC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbY29sbGFwc2VEb25lIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIGNvbGxhcHNlRG9uZVxuICAgKiBAcGFyYW0gZXZlbnQgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIGNvbGxhcHNlRG9uZShldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ29sbGFwc2VTdGFydC5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbYmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lciBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBiaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyXG4gICAqL1xuICBwcml2YXRlIGJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5kb2N1bWVudENsaWNrTGlzdGVuZXIgPSB0aGlzLnJlbmRlcmVyMi5saXN0ZW4oJ2RvY3VtZW50JywgJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICB0aGlzLmlzQ29sbGFwc2VkID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnVuQmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbdW5CaW5kRG9jdW1lbnRDbGlja0xpc3RlbmVyIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHVuQmluZERvY3VtZW50Q2xpY2tMaXN0ZW5lclxuICAgKi9cbiAgcHJpdmF0ZSB1bkJpbmREb2N1bWVudENsaWNrTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKSB7XG4gICAgICB0aGlzLmRvY3VtZW50Q2xpY2tMaXN0ZW5lcigpO1xuICAgIH1cbiAgfVxufVxuIl19