angular-admin-lte-teliqo
Version:
npm# angular-admin-lte
520 lines (519 loc) • 37.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { BehaviorSubject } from 'rxjs';
import { distinctUntilChanged, pluck } from 'rxjs/operators';
var LayoutStore = /** @class */ (function () {
/**
* @method constructor
* @param layoutConfig [description]
*/
function LayoutStore(layoutConfig) {
this.initialLayoutState = {
isSidebarLeftCollapsed: false,
isSidebarLeftExpandOnOver: false,
isSidebarLeftMouseOver: false,
isSidebarLeftMini: true,
sidebarRightSkin: 'dark',
isSidebarRightCollapsed: true,
isSidebarRightOverContent: true,
layout: 'normal',
sidebarLeftMenu: [],
sidebarLeftMenuActiveUrl: '',
skin: 'blue'
};
if (layoutConfig) {
this.initialLayoutState = Object.assign(this.initialLayoutState, layoutConfig);
}
this._layoutState = new BehaviorSubject(this.initialLayoutState);
this.layoutState = this._layoutState.asObservable();
}
Object.defineProperty(LayoutStore.prototype, "windowInnerHeight", {
/**
* [windowInnerHeight description]
* @method windowInnerHeight
* @return [description]
*/
get: /**
* [windowInnerHeight description]
* \@method windowInnerHeight
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('windowInnerHeight'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "windowInnerWidth", {
/**
* [windowInnerWidth description]
* @method windowInnerWidth
* @return [description]
*/
get: /**
* [windowInnerWidth description]
* \@method windowInnerWidth
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('windowInnerWidth'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftCollapsed", {
/**
* [isSidebarLeftCollapsed description]
* @return [description]
*/
get: /**
* [isSidebarLeftCollapsed description]
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftCollapsed'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftExpandOnOver", {
/**
* [isSidebarLeftExpandOnOver description]
* @method isSidebarLeftExpandOnOver
* @return [description]
*/
get: /**
* [isSidebarLeftExpandOnOver description]
* \@method isSidebarLeftExpandOnOver
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftExpandOnOver'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftMouseOver", {
/**
* [isSidebarLeftMouseOver description]
* @method isSidebarLeftMouseOver
* @return [description]
*/
get: /**
* [isSidebarLeftMouseOver description]
* \@method isSidebarLeftMouseOver
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMouseOver'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarLeftMini", {
/**
* [isSidebarLeftMini description]
* @method isSidebarLeftMini
* @return [description]
*/
get: /**
* [isSidebarLeftMini description]
* \@method isSidebarLeftMini
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarLeftMini'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarRightSkin", {
/**
* [sidebarRightSkin description]
* @method sidebarRightSkin
* @return [description]
*/
get: /**
* [sidebarRightSkin description]
* \@method sidebarRightSkin
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('sidebarRightSkin'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarRightCollapsed", {
/**
* [isSidebarRightCollapsed description]
* @return [description]
*/
get: /**
* [isSidebarRightCollapsed description]
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightCollapsed'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "isSidebarRightOverContent", {
/**
* [isSidebarRightOverContent description]
* @method isSidebarRightOverContent
* @return [description]
*/
get: /**
* [isSidebarRightOverContent description]
* \@method isSidebarRightOverContent
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('isSidebarRightOverContent'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftMenu", {
/**
* [sidebarLeftMenu description]
* @method sidebarLeftMenu
* @return [description]
*/
get: /**
* [sidebarLeftMenu description]
* \@method sidebarLeftMenu
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenu'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftMenuActiveUrl", {
/**
* [sidebarLeftMenuActiveUrl description]
* @method sidebarLeftMenuActiveUrl
* @return [description]
*/
get: /**
* [sidebarLeftMenuActiveUrl description]
* \@method sidebarLeftMenuActiveUrl
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftMenuActiveUrl'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "sidebarLeftElementHeight", {
/**
* [sidebarLeftElementHeight description]
* @method sidebarLeftElementHeight
* @return [description]
*/
get: /**
* [sidebarLeftElementHeight description]
* \@method sidebarLeftElementHeight
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('sidebarLeftElementHeight'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "layout", {
/**
* [layoutType description]
* @method layoutType
* @return [description]
*/
get: /**
* [layoutType description]
* \@method layoutType
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('layout'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "skin", {
/**
* [skin description]
* @method skin
* @return [description]
*/
get: /**
* [skin description]
* \@method skin
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('skin'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
Object.defineProperty(LayoutStore.prototype, "wrapperClasses", {
/**
* [wrapperClasses description]
* @method wrapperClasses
* @return [description]
*/
get: /**
* [wrapperClasses description]
* \@method wrapperClasses
* @return {?} [description]
*/
function () {
return /** @type {?} */ (this.layoutState.pipe(pluck('wrapperClasses'), distinctUntilChanged()));
},
enumerable: true,
configurable: true
});
/**
* [sidebarLeftCollapsed description]
* \@method sidebarLeftCollapsed
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftCollapsed = /**
* [sidebarLeftCollapsed description]
* \@method sidebarLeftCollapsed
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftCollapsed: value }));
};
/**
* [sidebarLeftExpandOnOver description]
* \@method sidebarLeftExpandOnOver
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftExpandOnOver = /**
* [sidebarLeftExpandOnOver description]
* \@method sidebarLeftExpandOnOver
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftExpandOnOver: value }));
};
/**
* [setSidebarLeftElementHeight description]
* \@method setSidebarLeftElementHeight
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftElementHeight = /**
* [setSidebarLeftElementHeight description]
* \@method setSidebarLeftElementHeight
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftElementHeight: value }));
};
/**
* [setSidebarRightSkin description]
* \@method setSidebarRightSkin
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarRightSkin = /**
* [setSidebarRightSkin description]
* \@method setSidebarRightSkin
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarRightSkin: value }));
};
/**
* [sidebarLeftMouseOver description]
* \@method sidebarLeftMouseOver
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftMouseOver = /**
* [sidebarLeftMouseOver description]
* \@method sidebarLeftMouseOver
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMouseOver: value }));
};
/**
* [sidebarLeftMini description]
* \@method sidebarLeftMini
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarLeftMini = /**
* [sidebarLeftMini description]
* \@method sidebarLeftMini
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarLeftMini: value }));
};
/**
* [sidebarRightCollapsed description]
* \@method sidebarRightCollapsed
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarRightCollapsed = /**
* [sidebarRightCollapsed description]
* \@method sidebarRightCollapsed
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightCollapsed: value }));
};
/**
* [sidebarRightOverContent description]
* \@method sidebarRightOverContent
* @param {?=} value [description]
* @return {?}
*/
LayoutStore.prototype.sidebarRightOverContent = /**
* [sidebarRightOverContent description]
* \@method sidebarRightOverContent
* @param {?=} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { isSidebarRightOverContent: value }));
};
/**
* [setSidebarLeftMenu description]
* \@method setSidebarLeftMenu
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftMenu = /**
* [setSidebarLeftMenu description]
* \@method setSidebarLeftMenu
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenu: value }));
};
/**
* [setSidebarLeftMenuActiveUrl description]
* \@method setSidebarLeftMenuActiveUrl
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSidebarLeftMenuActiveUrl = /**
* [setSidebarLeftMenuActiveUrl description]
* \@method setSidebarLeftMenuActiveUrl
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { sidebarLeftMenuActiveUrl: value }));
};
/**
* [setLayout description]
* \@method setLayout
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setLayout = /**
* [setLayout description]
* \@method setLayout
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { layout: value }));
};
/**
* [setSkin description]
* \@method setSkin
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setSkin = /**
* [setSkin description]
* \@method setSkin
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { skin: value }));
};
/**
* [setWrapperClasses description]
* \@method setWrapperClasses
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWrapperClasses = /**
* [setWrapperClasses description]
* \@method setWrapperClasses
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { wrapperClasses: value }));
};
/**
* [setWindowInnerHeight description]
* \@method setWindowInnerHeight
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWindowInnerHeight = /**
* [setWindowInnerHeight description]
* \@method setWindowInnerHeight
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerHeight: value }));
};
/**
* [setWindowInnerWidth description]
* \@method setWindowInnerWidth
* @param {?} value [description]
* @return {?}
*/
LayoutStore.prototype.setWindowInnerWidth = /**
* [setWindowInnerWidth description]
* \@method setWindowInnerWidth
* @param {?} value [description]
* @return {?}
*/
function (value) {
this._layoutState.next(Object.assign(this._layoutState.value, { windowInnerWidth: value }));
};
return LayoutStore;
}());
export { LayoutStore };
function LayoutStore_tsickle_Closure_declarations() {
/** @type {?} */
LayoutStore.prototype.layoutState;
/** @type {?} */
LayoutStore.prototype._layoutState;
/** @type {?} */
LayoutStore.prototype.initialLayoutState;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LnN0b3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYW5ndWxhci1hZG1pbi1sdGUtdGVsaXFvLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9sYXlvdXQuc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU83RCxJQUFBO0lBa0JFOzs7T0FHRztJQUNILHFCQUFZLFlBQXlCO2tDQWxCYztZQUNqRCxzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLHlCQUF5QixFQUFFLEtBQUs7WUFDaEMsc0JBQXNCLEVBQUUsS0FBSztZQUM3QixpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLGdCQUFnQixFQUFFLE1BQU07WUFDeEIsdUJBQXVCLEVBQUUsSUFBSTtZQUM3Qix5QkFBeUIsRUFBRSxJQUFJO1lBQy9CLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLGVBQWUsRUFBRSxFQUFFO1lBQ25CLHdCQUF3QixFQUFFLEVBQUU7WUFDNUIsSUFBSSxFQUFFLE1BQU07U0FDYjtRQU9DLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVksQ0FBQyxDQUFDO1NBQ2hGO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUM7S0FDckQ7SUFPRCxzQkFBSSwwQ0FBaUI7UUFMckI7Ozs7V0FJRzs7Ozs7O1FBQ0g7WUFDRSxNQUFNLG1CQUFxQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FB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QUFZLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUMsZ0JBQWdCLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FDbEUsQ0FBQzs7c0JBN1VOO0lBK1VDLENBQUE7QUF2VUQsdUJBdVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0ICwgIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBwbHVjayB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgTGF5b3V0U3RhdGUgfSBmcm9tICcuL2xheW91dC5zdGF0ZSc7XG5cbi8qXG4gKlxuICovXG5leHBvcnQgY2xhc3MgTGF5b3V0U3RvcmUge1xuICBwdWJsaWMgcmVhZG9ubHkgbGF5b3V0U3RhdGU6IE9ic2VydmFibGU8TGF5b3V0U3RhdGU+O1xuXG4gIHByaXZhdGUgX2xheW91dFN0YXRlOiBCZWhhdmlvclN1YmplY3Q8TGF5b3V0U3RhdGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxMYXlvdXRTdGF0ZTogTGF5b3V0U3RhdGUgPSB7XG4gICAgaXNTaWRlYmFyTGVmdENvbGxhcHNlZDogZmFsc2UsXG4gICAgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlcjogZmFsc2UsXG4gICAgaXNTaWRlYmFyTGVmdE1vdXNlT3ZlcjogZmFsc2UsXG4gICAgaXNTaWRlYmFyTGVmdE1pbmk6IHRydWUsXG4gICAgc2lkZWJhclJpZ2h0U2tpbjogJ2RhcmsnLFxuICAgIGlzU2lkZWJhclJpZ2h0Q29sbGFwc2VkOiB0cnVlLFxuICAgIGlzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQ6IHRydWUsXG4gICAgbGF5b3V0OiAnbm9ybWFsJyxcbiAgICBzaWRlYmFyTGVmdE1lbnU6IFtdLFxuICAgIHNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybDogJycsXG4gICAgc2tpbjogJ2JsdWUnXG4gIH07XG5cbiAgLyoqXG4gICAqIEBtZXRob2QgY29uc3RydWN0b3JcbiAgICogQHBhcmFtIGxheW91dENvbmZpZyBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBjb25zdHJ1Y3RvcihsYXlvdXRDb25maWc6IExheW91dFN0YXRlKSB7XG4gICAgaWYgKGxheW91dENvbmZpZykge1xuICAgICAgdGhpcy5pbml0aWFsTGF5b3V0U3RhdGUgPSBPYmplY3QuYXNzaWduKHRoaXMuaW5pdGlhbExheW91dFN0YXRlLCBsYXlvdXRDb25maWcpO1xuICAgIH1cbiAgICB0aGlzLl9sYXlvdXRTdGF0ZSA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5pbml0aWFsTGF5b3V0U3RhdGUpO1xuICAgIHRoaXMubGF5b3V0U3RhdGUgPSB0aGlzLl9sYXlvdXRTdGF0ZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbd2luZG93SW5uZXJIZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgd2luZG93SW5uZXJIZWlnaHRcbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgd2luZG93SW5uZXJIZWlnaHQoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8bnVtYmVyPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3dpbmRvd0lubmVySGVpZ2h0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFt3aW5kb3dJbm5lcldpZHRoIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHdpbmRvd0lubmVyV2lkdGhcbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgd2luZG93SW5uZXJXaWR0aCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiA8T2JzZXJ2YWJsZTxudW1iZXI+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnd2luZG93SW5uZXJXaWR0aCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbaXNTaWRlYmFyTGVmdENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgaXNTaWRlYmFyTGVmdENvbGxhcHNlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8Ym9vbGVhbj4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdpc1NpZGViYXJMZWZ0Q29sbGFwc2VkJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIGlzU2lkZWJhckxlZnRFeHBhbmRPbk92ZXJcbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgaXNTaWRlYmFyTGVmdEV4cGFuZE9uT3ZlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8Ym9vbGVhbj4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdpc1NpZGViYXJMZWZ0RXhwYW5kT25PdmVyJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtpc1NpZGViYXJMZWZ0TW91c2VPdmVyIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIGlzU2lkZWJhckxlZnRNb3VzZU92ZXJcbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgaXNTaWRlYmFyTGVmdE1vdXNlT3ZlcigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8Ym9vbGVhbj4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdpc1NpZGViYXJMZWZ0TW91c2VPdmVyJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtpc1NpZGViYXJMZWZ0TWluaSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBpc1NpZGViYXJMZWZ0TWluaVxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldCBpc1NpZGViYXJMZWZ0TWluaSgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8Ym9vbGVhbj4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdpc1NpZGViYXJMZWZ0TWluaScpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2lkZWJhclJpZ2h0U2tpbiBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzaWRlYmFyUmlnaHRTa2luXG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgZ2V0IHNpZGViYXJSaWdodFNraW4oKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8c3RyaW5nPj50aGlzLmxheW91dFN0YXRlLnBpcGUocGx1Y2soJ3NpZGViYXJSaWdodFNraW4nKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogW2lzU2lkZWJhclJpZ2h0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldCBpc1NpZGViYXJSaWdodENvbGxhcHNlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gPE9ic2VydmFibGU8Ym9vbGVhbj4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdpc1NpZGViYXJSaWdodENvbGxhcHNlZCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBpc1NpZGViYXJSaWdodE92ZXJDb250ZW50XG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgZ2V0IGlzU2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIDxPYnNlcnZhYmxlPGJvb2xlYW4+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnaXNTaWRlYmFyUmlnaHRPdmVyQ29udGVudCcpLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2lkZWJhckxlZnRNZW51IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0TWVudVxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldCBzaWRlYmFyTGVmdE1lbnUoKTogT2JzZXJ2YWJsZTxBcnJheTxhbnk+PiB7XG4gICAgcmV0dXJuIDxPYnNlcnZhYmxlPEFycmF5PGFueT4+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2lkZWJhckxlZnRNZW51JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmwgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsXG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgZ2V0IHNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybCgpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2lkZWJhckxlZnRNZW51QWN0aXZlVXJsJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0XG4gICAqIEByZXR1cm4gW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgZ2V0IHNpZGViYXJMZWZ0RWxlbWVudEhlaWdodCgpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiA8T2JzZXJ2YWJsZTxudW1iZXI+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnc2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0JyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFtsYXlvdXRUeXBlIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIGxheW91dFR5cGVcbiAgICogQHJldHVybiBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBnZXQgbGF5b3V0KCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIDxPYnNlcnZhYmxlPHN0cmluZz4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdsYXlvdXQnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogW3NraW4gZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2tpblxuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldCBza2luKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIDxPYnNlcnZhYmxlPHN0cmluZz4+dGhpcy5sYXlvdXRTdGF0ZS5waXBlKHBsdWNrKCdza2luJyksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFt3cmFwcGVyQ2xhc3NlcyBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCB3cmFwcGVyQ2xhc3Nlc1xuICAgKiBAcmV0dXJuIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIGdldCB3cmFwcGVyQ2xhc3NlcygpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiA8T2JzZXJ2YWJsZTxzdHJpbmc+PnRoaXMubGF5b3V0U3RhdGUucGlwZShwbHVjaygnd3JhcHBlckNsYXNzZXMnKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG4gIH1cblxuICAvKipcbiAgICogW3NpZGViYXJMZWZ0Q29sbGFwc2VkIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNpZGViYXJMZWZ0Q29sbGFwc2VkXG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2lkZWJhckxlZnRDb2xsYXBzZWQodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHtpc1NpZGViYXJMZWZ0Q29sbGFwc2VkOiB2YWx1ZX0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2lkZWJhckxlZnRFeHBhbmRPbk92ZXIgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2lkZWJhckxlZnRFeHBhbmRPbk92ZXJcbiAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBzaWRlYmFyTGVmdEV4cGFuZE9uT3Zlcih2YWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwge2lzU2lkZWJhckxlZnRFeHBhbmRPbk92ZXI6IHZhbHVlfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzZXRTaWRlYmFyTGVmdEVsZW1lbnRIZWlnaHQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0XG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2V0U2lkZWJhckxlZnRFbGVtZW50SGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwge3NpZGViYXJMZWZ0RWxlbWVudEhlaWdodDogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NldFNpZGViYXJSaWdodFNraW4gZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0U2lkZWJhclJpZ2h0U2tpblxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNldFNpZGViYXJSaWdodFNraW4odmFsdWU/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwge3NpZGViYXJSaWdodFNraW46IHZhbHVlfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzaWRlYmFyTGVmdE1vdXNlT3ZlciBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1vdXNlT3ZlclxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNpZGViYXJMZWZ0TW91c2VPdmVyKHZhbHVlPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7aXNTaWRlYmFyTGVmdE1vdXNlT3ZlcjogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NpZGViYXJMZWZ0TWluaSBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzaWRlYmFyTGVmdE1pbmlcbiAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBzaWRlYmFyTGVmdE1pbmkodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHtpc1NpZGViYXJMZWZ0TWluaTogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NpZGViYXJSaWdodENvbGxhcHNlZCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzaWRlYmFyUmlnaHRDb2xsYXBzZWRcbiAgICogQHBhcmFtIHZhbHVlIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIHB1YmxpYyBzaWRlYmFyUmlnaHRDb2xsYXBzZWQodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHtpc1NpZGViYXJSaWdodENvbGxhcHNlZDogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NpZGViYXJSaWdodE92ZXJDb250ZW50IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNpZGViYXJSaWdodE92ZXJDb250ZW50XG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2lkZWJhclJpZ2h0T3ZlckNvbnRlbnQodmFsdWU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHtpc1NpZGViYXJSaWdodE92ZXJDb250ZW50OiB2YWx1ZX0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2V0U2lkZWJhckxlZnRNZW51IGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNldFNpZGViYXJMZWZ0TWVudVxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNldFNpZGViYXJMZWZ0TWVudSh2YWx1ZTogQXJyYXk8YW55Pik6IHZvaWQge1xuICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7c2lkZWJhckxlZnRNZW51OiB2YWx1ZX0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2V0U2lkZWJhckxlZnRNZW51QWN0aXZlVXJsIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNldFNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybFxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNldFNpZGViYXJMZWZ0TWVudUFjdGl2ZVVybCh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHtzaWRlYmFyTGVmdE1lbnVBY3RpdmVVcmw6IHZhbHVlfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzZXRMYXlvdXQgZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0TGF5b3V0XG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2V0TGF5b3V0KHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwge2xheW91dDogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NldFNraW4gZGVzY3JpcHRpb25dXG4gICAqIEBtZXRob2Qgc2V0U2tpblxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNldFNraW4odmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7c2tpbjogdmFsdWV9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogW3NldFdyYXBwZXJDbGFzc2VzIGRlc2NyaXB0aW9uXVxuICAgKiBAbWV0aG9kIHNldFdyYXBwZXJDbGFzc2VzXG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2V0V3JhcHBlckNsYXNzZXModmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2xheW91dFN0YXRlLm5leHQoXG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuX2xheW91dFN0YXRlLnZhbHVlLCB7d3JhcHBlckNsYXNzZXM6IHZhbHVlfSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFtzZXRXaW5kb3dJbm5lckhlaWdodCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzZXRXaW5kb3dJbm5lckhlaWdodFxuICAgKiBAcGFyYW0gdmFsdWUgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgcHVibGljIHNldFdpbmRvd0lubmVySGVpZ2h0KHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXlvdXRTdGF0ZS5uZXh0KFxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLl9sYXlvdXRTdGF0ZS52YWx1ZSwge3dpbmRvd0lubmVySGVpZ2h0OiB2YWx1ZX0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBbc2V0V2luZG93SW5uZXJXaWR0aCBkZXNjcmlwdGlvbl1cbiAgICogQG1ldGhvZCBzZXRXaW5kb3dJbm5lcldpZHRoXG4gICAqIEBwYXJhbSB2YWx1ZSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBwdWJsaWMgc2V0V2luZG93SW5uZXJXaWR0aCh2YWx1ZTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fbGF5b3V0U3RhdGUubmV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5fbGF5b3V0U3RhdGUudmFsdWUsIHt3aW5kb3dJbm5lcldpZHRoOiB2YWx1ZX0pXG4gICAgKTtcbiAgfVxufVxuIl19