@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
152 lines • 17.5 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Pipe } from '@angular/core';
import { cloneArray } from '../../core/utils';
import { DataUtil } from '../../data-operations/data-util';
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
import { GridBaseAPIService } from '../api.service';
/**
*@hidden
*/
let IgxGridSortingPipe = class IgxGridSortingPipe {
constructor(gridAPI) {
this.gridAPI = gridAPI;
}
transform(collection, expressions, sorting, id, pipeTrigger) {
const grid = this.gridAPI.grid;
let result;
if (!expressions.length) {
result = collection;
}
else {
result = DataUtil.sort(cloneArray(collection), expressions, sorting);
}
grid.filteredSortedData = result;
return result;
}
};
IgxGridSortingPipe.ctorParameters = () => [
{ type: GridBaseAPIService }
];
IgxGridSortingPipe = __decorate([
Pipe({
name: 'gridSort',
pure: true
}),
__metadata("design:paramtypes", [GridBaseAPIService])
], IgxGridSortingPipe);
export { IgxGridSortingPipe };
/**
*@hidden
*/
let IgxGridGroupingPipe = class IgxGridGroupingPipe {
constructor(gridAPI) {
this.gridAPI = gridAPI;
}
transform(collection, expression, expansion, defaultExpanded, id, groupsRecords, pipeTrigger) {
const state = { expressions: [], expansion: [], defaultExpanded };
const grid = this.gridAPI.grid;
state.expressions = grid.groupingExpressions;
let result;
const fullResult = { data: [], metadata: [] };
if (!state.expressions.length) {
// empty the array without changing reference
groupsRecords.splice(0, groupsRecords.length);
result = {
data: collection,
metadata: collection
};
}
else {
state.expansion = grid.groupingExpansionState;
state.defaultExpanded = grid.groupsExpanded;
result = DataUtil.group(cloneArray(collection), state, grid, groupsRecords, fullResult);
}
grid.groupingFlatResult = result.data;
grid.groupingResult = fullResult.data;
grid.groupingMetadata = fullResult.metadata;
return result;
}
};
IgxGridGroupingPipe.ctorParameters = () => [
{ type: GridBaseAPIService }
];
IgxGridGroupingPipe = __decorate([
Pipe({
name: 'gridGroupBy',
pure: true
}),
__metadata("design:paramtypes", [GridBaseAPIService])
], IgxGridGroupingPipe);
export { IgxGridGroupingPipe };
/**
*@hidden
*/
let IgxGridPagingPipe = class IgxGridPagingPipe {
constructor(gridAPI) {
this.gridAPI = gridAPI;
}
transform(collection, page = 0, perPage = 15, id, pipeTrigger) {
if (!this.gridAPI.grid.paging) {
return collection;
}
const state = {
index: page,
recordsPerPage: perPage
};
DataUtil.correctPagingState(state, collection.data.length);
const result = {
data: DataUtil.page(cloneArray(collection.data), state),
metadata: DataUtil.page(cloneArray(collection.metadata), state)
};
if (this.gridAPI.grid.page !== state.index) {
this.gridAPI.grid.page = state.index;
}
this.gridAPI.grid.pagingState = state;
return result;
}
};
IgxGridPagingPipe.ctorParameters = () => [
{ type: GridBaseAPIService }
];
IgxGridPagingPipe = __decorate([
Pipe({
name: 'gridPaging',
pure: true
}),
__metadata("design:paramtypes", [GridBaseAPIService])
], IgxGridPagingPipe);
export { IgxGridPagingPipe };
/**
*@hidden
*/
let IgxGridFilteringPipe = class IgxGridFilteringPipe {
constructor(gridAPI) {
this.gridAPI = gridAPI;
}
transform(collection, expressionsTree, filterStrategy, advancedExpressionsTree, id, pipeTrigger) {
const grid = this.gridAPI.grid;
const state = {
expressionsTree: expressionsTree,
strategy: filterStrategy,
advancedExpressionsTree: advancedExpressionsTree
};
if (FilteringExpressionsTree.empty(state.expressionsTree) && FilteringExpressionsTree.empty(state.advancedExpressionsTree)) {
return collection;
}
const result = DataUtil.filter(cloneArray(collection), state);
grid.filteredData = result;
return result;
}
};
IgxGridFilteringPipe.ctorParameters = () => [
{ type: GridBaseAPIService }
];
IgxGridFilteringPipe = __decorate([
Pipe({
name: 'gridFiltering',
pure: true
}),
__metadata("design:paramtypes", [GridBaseAPIService])
], IgxGridFilteringPipe);
export { IgxGridFilteringPipe };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5waXBlcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvZ3JpZHMvZ3JpZC9ncmlkLnBpcGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRzNELE9BQU8sRUFBNkIsd0JBQXdCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUt2SCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1wRDs7R0FFRztBQUtILElBQWEsa0JBQWtCLEdBQS9CLE1BQWEsa0JBQWtCO0lBRzNCLFlBQVksT0FBNEQ7UUFDcEUsSUFBSSxDQUFDLE9BQU8sR0FBc0IsT0FBTyxDQUFDO0lBQzlDLENBQUM7SUFFTSxTQUFTLENBQUMsVUFBaUIsRUFBRSxXQUFpQyxFQUFFLE9BQTZCLEVBQ25GLEVBQVUsRUFBRSxXQUFtQjtRQUM1QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLE1BQWEsQ0FBQztRQUVsQixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUNyQixNQUFNLEdBQUcsVUFBVSxDQUFDO1NBQ3ZCO2FBQU07WUFDSCxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ3hFO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQztRQUVqQyxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0NBQ0osQ0FBQTs7WUFsQndCLGtCQUFrQjs7QUFIOUIsa0JBQWtCO0lBSjlCLElBQUksQ0FBQztRQUNG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QUssQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFO1lBQ3hILE9BQU8sVUFBVSxDQUFDO1NBQ3JCO1FBRUQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztDQUNKLENBQUE7O1lBcEJnQyxrQkFBa0I7O0FBRnRDLG9CQUFvQjtJQUpoQyxJQUFJLENBQUM7UUFDRixJQUFJLEVBQUUsZUFBZTtRQUNyQixJQUFJLEVBQUUsSUFBSTtLQUNiLENBQUM7cUNBRytCLGtCQUFrQjtHQUZ0QyxvQkFBb0IsQ0FzQmhDO1NBdEJZLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lQXJyYXkgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IERhdGFVdGlsIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJR3JvdXBCeUV4cGFuZFN0YXRlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwYnktZXhwYW5kLXN0YXRlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJR3JvdXBCeVJlc3VsdCB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9ncm91cGluZy1yZXN1bHQuaW50ZXJmYWNlJztcbmltcG9ydCB7IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUsIEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJU29ydGluZ0V4cHJlc3Npb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1leHByZXNzaW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQVBJU2VydmljZSB9IGZyb20gJy4vZ3JpZC1hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hHcmlkQ29tcG9uZW50IH0gZnJvbSAnLi9ncmlkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJR3JvdXBpbmdFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2dyb3VwaW5nLWV4cHJlc3Npb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRCYXNlQVBJU2VydmljZSB9IGZyb20gJy4uL2FwaS5zZXJ2aWNlJztcbmltcG9ydCB7IElneEdyaWRCYXNlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZ3JpZC1iYXNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBHcmlkVHlwZSB9IGZyb20gJy4uL2NvbW1vbi9ncmlkLmludGVyZmFjZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvZmlsdGVyaW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElHcmlkU29ydGluZ1N0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL3NvcnRpbmctc3RyYXRlZ3knO1xuXG4vKipcbiAqQGhpZGRlblxuICovXG5AUGlwZSh7XG4gICAgbmFtZTogJ2dyaWRTb3J0JyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRTb3J0aW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAgIHByaXZhdGUgZ3JpZEFQSTogSWd4R3JpZEFQSVNlcnZpY2U7XG5cbiAgICBjb25zdHJ1Y3RvcihncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHtcbiAgICAgICAgdGhpcy5ncmlkQVBJID0gPElneEdyaWRBUElTZXJ2aWNlPmdyaWRBUEk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSwgZXhwcmVzc2lvbnM6IElTb3J0aW5nRXhwcmVzc2lvbltdLCBzb3J0aW5nOiBJR3JpZFNvcnRpbmdTdHJhdGVneSxcbiAgICAgICAgICAgICAgICAgICAgIGlkOiBzdHJpbmcsIHBpcGVUcmlnZ2VyOiBudW1iZXIpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGdyaWQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgbGV0IHJlc3VsdDogYW55W107XG5cbiAgICAgICAgaWYgKCFleHByZXNzaW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGNvbGxlY3Rpb247XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBEYXRhVXRpbC5zb3J0KGNsb25lQXJyYXkoY29sbGVjdGlvbiksIGV4cHJlc3Npb25zLCBzb3J0aW5nKTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmZpbHRlcmVkU29ydGVkRGF0YSA9IHJlc3VsdDtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyoqXG4gKkBoaWRkZW5cbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdncmlkR3JvdXBCeScsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkR3JvdXBpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgcHJpdmF0ZSBncmlkQVBJOiBJZ3hHcmlkQVBJU2VydmljZTtcblxuICAgIGNvbnN0cnVjdG9yKGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikge1xuICAgICAgICB0aGlzLmdyaWRBUEkgPSA8SWd4R3JpZEFQSVNlcnZpY2U+Z3JpZEFQSTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IGFueVtdLCBleHByZXNzaW9uOiBJR3JvdXBpbmdFeHByZXNzaW9uIHwgSUdyb3VwaW5nRXhwcmVzc2lvbltdLFxuICAgICAgICBleHBhbnNpb246IElHcm91cEJ5RXhwYW5kU3RhdGUgfCBJR3JvdXBCeUV4cGFuZFN0YXRlW10sIGRlZmF1bHRFeHBhbmRlZDogYm9vbGVhbixcbiAgICAgICAgaWQ6IHN0cmluZywgZ3JvdXBzUmVjb3JkczogYW55W10sIHBpcGVUcmlnZ2VyOiBudW1iZXIpOiBJR3JvdXBCeVJlc3VsdCB7XG5cbiAgICAgICAgY29uc3Qgc3RhdGUgPSB7IGV4cHJlc3Npb25zOiBbXSwgZXhwYW5zaW9uOiBbXSwgZGVmYXVsdEV4cGFuZGVkIH07XG4gICAgICAgIGNvbnN0IGdyaWQ6IElneEdyaWRDb21wb25lbnQgPSB0aGlzLmdyaWRBUEkuZ3JpZDtcbiAgICAgICAgc3RhdGUuZXhwcmVzc2lvbnMgPSBncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnM7XG4gICAgICAgIGxldCByZXN1bHQ6IElHcm91cEJ5UmVzdWx0O1xuICAgICAgICBjb25zdCBmdWxsUmVzdWx0OiBJR3JvdXBCeVJlc3VsdCA9IHsgZGF0YTogW10sIG1ldGFkYXRhOiBbXSB9O1xuXG4gICAgICAgIGlmICghc3RhdGUuZXhwcmVzc2lvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBlbXB0eSB0aGUgYXJyYXkgd2l0aG91dCBjaGFuZ2luZyByZWZlcmVuY2VcbiAgICAgICAgICAgIGdyb3Vwc1JlY29yZHMuc3BsaWNlKDAsIGdyb3Vwc1JlY29yZHMubGVuZ3RoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBjb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgIG1ldGFkYXRhOiBjb2xsZWN0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUuZXhwYW5zaW9uID0gZ3JpZC5ncm91cGluZ0V4cGFuc2lvblN0YXRlO1xuICAgICAgICAgICAgc3RhdGUuZGVmYXVsdEV4cGFuZGVkID0gZ3JpZC5ncm91cHNFeHBhbmRlZDtcbiAgICAgICAgICAgIHJlc3VsdCA9IERhdGFVdGlsLmdyb3VwKGNsb25lQXJyYXkoY29sbGVjdGlvbiksIHN0YXRlLCBncmlkLCBncm91cHNSZWNvcmRzLCBmdWxsUmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBncmlkLmdyb3VwaW5nRmxhdFJlc3VsdCA9IHJlc3VsdC5kYXRhO1xuICAgICAgICBncmlkLmdyb3VwaW5nUmVzdWx0ID0gZnVsbFJlc3VsdC5kYXRhO1xuICAgICAgICBncmlkLmdyb3VwaW5nTWV0YWRhdGEgPSBmdWxsUmVzdWx0Lm1ldGFkYXRhO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbn1cblxuLyoqXG4gKkBoaWRkZW5cbiAqL1xuQFBpcGUoe1xuICAgIG5hbWU6ICdncmlkUGFnaW5nJyxcbiAgICBwdXJlOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneEdyaWRQYWdpbmdQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGdyaWRBUEk6IEdyaWRCYXNlQVBJU2VydmljZTxJZ3hHcmlkQmFzZURpcmVjdGl2ZSAmIEdyaWRUeXBlPikgeyB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKGNvbGxlY3Rpb246IElHcm91cEJ5UmVzdWx0LCBwYWdlID0gMCwgcGVyUGFnZSA9IDE1LCBpZDogc3RyaW5nLCBwaXBlVHJpZ2dlcjogbnVtYmVyKTogSUdyb3VwQnlSZXN1bHQge1xuXG4gICAgICAgIGlmICghdGhpcy5ncmlkQVBJLmdyaWQucGFnaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgaW5kZXg6IHBhZ2UsXG4gICAgICAgICAgICByZWNvcmRzUGVyUGFnZTogcGVyUGFnZVxuICAgICAgICB9O1xuICAgICAgICBEYXRhVXRpbC5jb3JyZWN0UGFnaW5nU3RhdGUoc3RhdGUsIGNvbGxlY3Rpb24uZGF0YS5sZW5ndGgpO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgICAgIGRhdGE6IERhdGFVdGlsLnBhZ2UoY2xvbmVBcnJheShjb2xsZWN0aW9uLmRhdGEpLCBzdGF0ZSksXG4gICAgICAgICAgICBtZXRhZGF0YTogRGF0YVV0aWwucGFnZShjbG9uZUFycmF5KGNvbGxlY3Rpb24ubWV0YWRhdGEpLCBzdGF0ZSlcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKHRoaXMuZ3JpZEFQSS5ncmlkLnBhZ2UgIT09IHN0YXRlLmluZGV4KSB7XG4gICAgICAgICAgICB0aGlzLmdyaWRBUEkuZ3JpZC5wYWdlID0gc3RhdGUuaW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkQVBJLmdyaWQucGFnaW5nU3RhdGUgPSBzdGF0ZTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG5cbi8qKlxuICpAaGlkZGVuXG4gKi9cbkBQaXBlKHtcbiAgICBuYW1lOiAnZ3JpZEZpbHRlcmluZycsXG4gICAgcHVyZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkRmlsdGVyaW5nUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBncmlkQVBJOiBHcmlkQmFzZUFQSVNlcnZpY2U8SWd4R3JpZEJhc2VEaXJlY3RpdmUgJiBHcmlkVHlwZT4pIHsgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShjb2xsZWN0aW9uOiBhbnlbXSwgZXhwcmVzc2lvbnNUcmVlOiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLFxuICAgICAgICBmaWx0ZXJTdHJhdGVneTogSUZpbHRlcmluZ1N0cmF0ZWd5LFxuICAgICAgICBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZTogSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgaWQ6IHN0cmluZywgcGlwZVRyaWdnZXI6IG51bWJlcikge1xuICAgICAgICBjb25zdCBncmlkID0gdGhpcy5ncmlkQVBJLmdyaWQ7XG4gICAgICAgIGNvbnN0IHN0YXRlID0ge1xuICAgICAgICAgICAgZXhwcmVzc2lvbnNUcmVlOiBleHByZXNzaW9uc1RyZWUsXG4gICAgICAgICAgICBzdHJhdGVneTogZmlsdGVyU3RyYXRlZ3ksXG4gICAgICAgICAgICBhZHZhbmNlZEV4cHJlc3Npb25zVHJlZTogYWR2YW5jZWRFeHByZXNzaW9uc1RyZWVcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmVtcHR5KHN0YXRlLmV4cHJlc3Npb25zVHJlZSkgJiYgRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlLmVtcHR5KHN0YXRlLmFkdmFuY2VkRXhwcmVzc2lvbnNUcmVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXN1bHQgPSBEYXRhVXRpbC5maWx0ZXIoY2xvbmVBcnJheShjb2xsZWN0aW9uKSwgc3RhdGUpO1xuICAgICAgICBncmlkLmZpbHRlcmVkRGF0YSA9IHJlc3VsdDtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59XG4iXX0=