@tetacom/ng-components 1.3.6 → 1.3.8
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.
|
@@ -335,7 +335,7 @@ export class TableService {
|
|
|
335
335
|
this._currentEditCell = cellEvent;
|
|
336
336
|
}
|
|
337
337
|
else {
|
|
338
|
-
if (boolOrFuncCallback(
|
|
338
|
+
if (boolOrFuncCallback(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)) {
|
|
339
339
|
this._editRowStart.next(cellEvent);
|
|
340
340
|
this._currentEditCell = cellEvent;
|
|
341
341
|
}
|
|
@@ -349,10 +349,12 @@ export class TableService {
|
|
|
349
349
|
this._editCellStop.next(this._currentEditCell);
|
|
350
350
|
}
|
|
351
351
|
const column = this.getColumnByName(cellEvent?.column);
|
|
352
|
-
if (boolOrFuncCallback(
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
352
|
+
if (boolOrFuncCallback(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)
|
|
353
|
+
&&
|
|
354
|
+
boolOrFuncCallback(column?.editable)({
|
|
355
|
+
row: this.getRowByIndex(cellEvent?.row)?.data,
|
|
356
|
+
column: column,
|
|
357
|
+
})) {
|
|
356
358
|
this._editCellStart.next(cellEvent);
|
|
357
359
|
this._currentEditCell = cellEvent;
|
|
358
360
|
const key = cellEvent?.event?.key;
|
|
@@ -662,4 +664,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
662
664
|
providedIn: 'root',
|
|
663
665
|
}]
|
|
664
666
|
}], ctorParameters: () => [] });
|
|
665
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvc2VydmljZS90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxlQUFlLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSTVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUMxRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUNoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQVd0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdC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QUFDO1lBQzlCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUM7WUFDWixHQUFHLEtBQUs7WUFDUixLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBbHpCVSxZQUFZO2tIQUFaLFlBQVksY0FGWCxNQUFNOzsyRkFFUCxZQUFZO2tCQUh4QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBvYmplY3RIYXNoIGZyb20gJ29iamVjdC1oYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBJRGljdGlvbmFyeSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWRpY3Rpb25hcnknO1xuaW1wb3J0IHsgSUlkTmFtZSB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHsgQXJyYXlVdGlsIH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL3V0aWwvYXJyYXktdXRpbCc7XG5pbXBvcnQgeyBib29sT3JGdW5jQ2FsbGJhY2sgfSBmcm9tICcuLi8uLi8uLi91dGlsL2Jvb2wtb3ItZnVuYyc7XG5pbXBvcnQgeyBEYXRlVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWwvZGF0ZS11dGlsJztcbmltcG9ydCB7IERhdGVGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZGF0ZS1maWx0ZXInO1xuaW1wb3J0IHsgRGF0ZUZpbHRlclZhbHVlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2RhdGUtZmlsdGVyLXZhbHVlJztcbmltcG9ydCB7IEZpbHRlclN0YXRlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQgeyBMaXN0RmlsdGVyIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2xpc3QtZmlsdGVyJztcbmltcG9ydCB7IE51bWVyaWNGaWx0ZXIgfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvbnVtZXJpYy1maWx0ZXInO1xuaW1wb3J0IHsgTnVtZXJpY0ZpbHRlclZhbHVlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L251bWVyaWMtZmlsdGVyLXZhbHVlJztcbmltcG9ydCB7IFN0cmluZ0ZpbHRlciB9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9zdHJpbmctZmlsdGVyJztcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9maWx0ZXIvZW51bS9maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7IExpc3RGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vbGlzdC1maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7IENvbHVtblJlb3JkZXJFdmVudCB9IGZyb20gJy4uL2NvbnRyYWN0L2NvbHVtbi1yZW9yZGVyLWV2ZW50JztcbmltcG9ydCB7IENvbHVtblJlc2l6ZUV2ZW50IH0gZnJvbSAnLi4vY29udHJhY3QvY29sdW1uLXJlc2l6ZS1ldmVudCc7XG5pbXBvcnQgeyBJQ2VsbENvb3JkaW5hdGVzIH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWNvb3JkaW5hdGVzJztcbmltcG9ydCB7IElDZWxsRXZlbnQgfSBmcm9tICcuLi9jb250cmFjdC9pLWNlbGwtZXZlbnQnO1xuaW1wb3J0IHtcbiAgSUNlbGxJbnN0YW5jZSxcbiAgSUNlbGxJbnN0YW5jZVZhbHVlLFxuICBJQ29sdW1uUm93LFxufSBmcm9tICcuLi9jb250cmFjdC9pLWNlbGwtaW5zdGFuY2UnO1xuaW1wb3J0IHsgSUNlbGxWYWx1ZSB9IGZyb20gJy4uL2NvbnRyYWN0L2ktY2VsbC12YWx1ZSc7XG5pbXBvcnQgeyBTb3J0RXZlbnQgfSBmcm9tICcuLi9jb250cmFjdC9zb3J0LWV2ZW50JztcbmltcG9ydCB7IFRhYmxlQ29sdW1uIH0gZnJvbSAnLi4vY29udHJhY3QvdGFibGUtY29sdW1uJztcbmltcG9ydCB7IFRhYmxlQ29sdW1uU3RvcmUgfSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1jb2x1bW4tc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVSb3cgfSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1yb3cnO1xuaW1wb3J0IHsgRWRpdEV2ZW50IH0gZnJvbSAnLi4vZW51bS9lZGl0LWV2ZW50LmVudW0nO1xuaW1wb3J0IHsgRWRpdFR5cGUgfSBmcm9tICcuLi9lbnVtL2VkaXQtdHlwZS5lbnVtJztcbmltcG9ydCB7IFNlbGVjdFR5cGUgfSBmcm9tICcuLi9lbnVtL3NlbGVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU3RhdGVVdGlsIH0gZnJvbSAnLi4vdXRpbC9zdGF0ZS11dGlsJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlU2VydmljZTxUPiB7XG4gIGNvbHVtbnM6IE9ic2VydmFibGU8VGFibGVDb2x1bW5bXT47XG4gIGRpc3BsYXlEYXRhOiBPYnNlcnZhYmxlPFRhYmxlUm93PFQ+W10+O1xuICBkaWN0OiBPYnNlcnZhYmxlPElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj47XG4gIGZpbHRlck9wdGlvbnM6IE9ic2VydmFibGU8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+PjtcbiAgc3RhdGU6IE9ic2VydmFibGU8RmlsdGVyU3RhdGU+O1xuICBzZWxlY3RUeXBlOiBTZWxlY3RUeXBlID0gU2VsZWN0VHlwZS5tb3VzZTtcbiAgZWRpdFJvd1N0YXJ0OiBPYnNlcnZhYmxlPElDZWxsRXZlbnQgfCBudWxsPjtcbiAgZWRpdFJvd1N0b3A6IE9ic2VydmFibGU8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+O1xuICBlZGl0Q2VsbFN0YXJ0OiBPYnNlcnZhYmxlPElDZWxsRXZlbnQgfCBudWxsPjtcbiAgZWRpdENlbGxTdG9wOiBPYnNlcnZhYmxlPElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsPjtcbiAgdmFsdWVDaGFuZ2VkOiBPYnNlcnZhYmxlPElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsPjtcbiAgdmFsdWVTZXQ6IE9ic2VydmFibGU8SUNlbGxWYWx1ZT47XG4gIHN0YXRlQ2hhbmdlZDogT2JzZXJ2YWJsZTxGaWx0ZXJTdGF0ZT47XG4gIGZpbHRlckNsZWFyOiBPYnNlcnZhYmxlPFRhYmxlQ29sdW1uPjtcbiAgc2VsZWN0ZWRSb3dzOiBPYnNlcnZhYmxlPFRbXT47XG4gIGFjdGl2ZVJvdzogT2JzZXJ2YWJsZTxUIHwgbnVsbD47XG4gIGhpZGRlbkNvbHVtbnM6IE9ic2VydmFibGU8c3RyaW5nW10+O1xuICBzY3JvbGxJbmRleDogT2JzZXJ2YWJsZTxudW1iZXI+O1xuXG4gIGVkaXRUeXBlOiBFZGl0VHlwZSA9IEVkaXRUeXBlLmNlbGw7XG4gIGVkaXRFdmVudDogRWRpdEV2ZW50ID0gRWRpdEV2ZW50LmRvdWJsZUNsaWNrO1xuICByb3dFZGl0YWJsZT86IGJvb2xlYW4gfCAoKHJvdzogVCkgPT4gYm9vbGVhbik7XG4gIHRyYWNrUm93OiAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiBhbnkgPSAoaW5kZXg6IG51bWJlciwgcm93OiBUKSA9PiB7XG4gICAgY29uc3Qgcm93SWQgPSAocm93IGFzIGFueSlbJ2lkJ107XG4gICAgaWYgKHJvd0lkKSB7XG4gICAgICByZXR1cm4gcm93SWQ7XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbiAgfTtcblxuICBnZXQgZHJhZ1NvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZHJhZ1NvdXJjZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbENvbHVtbnNIYXNoID0gJyc7XG4gIHByaXZhdGUgaW5pdGlhbENvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBkaXNwbGF5Q29sdW1uczogVGFibGVDb2x1bW5bXSA9IFtdO1xuICBwcml2YXRlIF9jb2x1bW5zOiBCZWhhdmlvclN1YmplY3Q8VGFibGVDb2x1bW5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFRhYmxlQ29sdW1uW11cbiAgPihbXSk7XG4gIHByaXZhdGUgX2hpZGRlbkNvbHVtbnMgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZ1tdPihbXSk7XG4gIHByaXZhdGUgX2Rpc3BsYXlEYXRhOiBCZWhhdmlvclN1YmplY3Q8VGFibGVSb3c8VD5bXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFxuICAgIFRhYmxlUm93PFQ+W11cbiAgPihbXSk7XG4gIHByaXZhdGUgX2RpY3Q6IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj4oe30pO1xuICBwcml2YXRlIF9maWx0ZXJPcHRpb25zOiBCZWhhdmlvclN1YmplY3Q8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+KHt9KTtcbiAgcHJpdmF0ZSBfc3RhdGU6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJTdGF0ZT4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8RmlsdGVyU3RhdGU+KG5ldyBGaWx0ZXJTdGF0ZSgpKTtcbiAgcHJpdmF0ZSBfY29va2llTmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfaGlkZGVuQ29va2llTmFtZT86IHN0cmluZztcbiAgcHJpdmF0ZSBfY29sdW1uc0Nvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2VkaXRSb3dTdGFydCA9IG5ldyBTdWJqZWN0PElDZWxsRXZlbnQgfCBudWxsPigpO1xuICBwcml2YXRlIF9lZGl0Um93U3RvcCA9IG5ldyBTdWJqZWN0PElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsPigpO1xuICBwcml2YXRlIF9lZGl0Q2VsbFN0YXJ0ID0gbmV3IFN1YmplY3Q8SUNlbGxFdmVudCB8IG51bGw+KCk7XG4gIHByaXZhdGUgX2VkaXRDZWxsU3RvcCA9IG5ldyBTdWJqZWN0PElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsPigpO1xuICBwcml2YXRlIF92YWx1ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfdmFsdWVTZXQgPSBuZXcgU3ViamVjdDxJQ2VsbFZhbHVlPigpO1xuICBwcml2YXRlIF9zdGF0ZUNoYW5nZWQgPSBuZXcgU3ViamVjdDxGaWx0ZXJTdGF0ZT4oKTtcbiAgcHJpdmF0ZSBfZmlsdGVyQ2xlYXIgPSBuZXcgU3ViamVjdDxUYWJsZUNvbHVtbj4oKTtcbiAgcHJpdmF0ZSBfZHJhZ1NvdXJjZT86IFRhYmxlQ29sdW1uO1xuICBwcml2YXRlIF9zZWxlY3RlZFJvd3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRbXT4oW10pO1xuICBwcml2YXRlIF9hY3RpdmVSb3cgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBfc2Nyb2xsSW5kZXggPSBuZXcgU3ViamVjdDxudW1iZXIgfCBudWxsPigpO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRFZGl0Q2VsbD86IElDZWxsQ29vcmRpbmF0ZXM7XG5cbiAgZ2V0IGN1cnJlbnRFZGl0Q2VsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEVkaXRDZWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jb2x1bW5zID0gdGhpcy5fY29sdW1ucy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmRpc3BsYXlEYXRhID0gdGhpcy5fZGlzcGxheURhdGEuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5kaWN0ID0gdGhpcy5fZGljdC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmZpbHRlck9wdGlvbnMgPSB0aGlzLl9maWx0ZXJPcHRpb25zLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3RhdGUgPSB0aGlzLl9zdGF0ZS5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmVkaXRSb3dTdGFydCA9IHRoaXMuX2VkaXRSb3dTdGFydC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmVkaXRSb3dTdG9wID0gdGhpcy5fZWRpdFJvd1N0b3AuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Q2VsbFN0YXJ0ID0gdGhpcy5fZWRpdENlbGxTdGFydC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmVkaXRDZWxsU3RvcCA9IHRoaXMuX2VkaXRDZWxsU3RvcC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCA9IHRoaXMuX3ZhbHVlQ2hhbmdlZC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnZhbHVlU2V0ID0gdGhpcy5fdmFsdWVTZXQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZWQgPSB0aGlzLl9zdGF0ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5maWx0ZXJDbGVhciA9IHRoaXMuX2ZpbHRlckNsZWFyLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc2VsZWN0ZWRSb3dzID0gdGhpcy5fc2VsZWN0ZWRSb3dzLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuYWN0aXZlUm93ID0gdGhpcy5fYWN0aXZlUm93LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuaGlkZGVuQ29sdW1ucyA9IHRoaXMuX2hpZGRlbkNvbHVtbnMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5zY3JvbGxJbmRleCA9IHRoaXMuX3Njcm9sbEluZGV4LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2V0RGF0YShkYXRhOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNwbGF5RGF0YS5uZXh0KFxuICAgICAgZGF0YT8ubWFwKFxuICAgICAgICBpdGVtID0+XG4gICAgICAgICAgbmV3IFRhYmxlUm93PFQ+KHtcbiAgICAgICAgICAgIGRhdGE6IGl0ZW0sXG4gICAgICAgICAgfSlcbiAgICAgICkgPz8gW11cbiAgICApO1xuICB9XG5cbiAgc2V0RGljdChkaWN0OiBJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaWN0Lm5leHQoZGljdCk7XG4gIH1cblxuICBzZXRGaWx0ZXJPcHRpb25zKGZpbHRlck9wdGlvbnM6IElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPik6IHZvaWQge1xuICAgIHRoaXMuX2ZpbHRlck9wdGlvbnMubmV4dChmaWx0ZXJPcHRpb25zKTtcbiAgfVxuXG4gIHNldENvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbENvbHVtbnMgPSBjb2x1bW5zID8gY29sdW1ucy5tYXAoXyA9PiBuZXcgVGFibGVDb2x1bW4oXykpIDogW107XG4gICAgY29uc3QgZXhjbHVkZUtleXMgPSBbXG4gICAgICAnZWRpdGFibGUnLFxuICAgICAgJ2NlbGxDb21wb25lbnQnLFxuICAgICAgJ2hlYWRDZWxsQ29tcG9uZW50JyxcbiAgICAgICdoZWFkRHJvcGRvd25Db25maWcnLFxuICAgIF07XG4gICAgdGhpcy5pbml0aWFsQ29sdW1uc0hhc2ggPSBvYmplY3RIYXNoKHRoaXMuaW5pdGlhbENvbHVtbnMsIHtcbiAgICAgIGFsZ29yaXRobTogJ3NoYTEnLFxuICAgICAgaWdub3JlVW5rbm93bjogdHJ1ZSxcbiAgICAgIGV4Y2x1ZGVLZXlzOiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGV4Y2x1ZGVLZXlzLmluZGV4T2Yoa2V5KSA+PSAwO1xuICAgICAgfSxcbiAgICB9KTtcbiAgICBjb25zdCByZXN0b3JlZCA9IHRoaXMucmVzdG9yZUNvbHVtbnMoKTtcblxuICAgIGlmIChyZXN0b3JlZCkge1xuICAgICAgdGhpcy5zZXREaXNwbGF5Q29sdW1ucyhyZXN0b3JlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnModGhpcy5pbml0aWFsQ29sdW1ucyk7XG4gICAgfVxuICB9XG5cbiAgcmVzdG9yZURlZmF1bHRDb2x1bW5zKCkge1xuICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnModGhpcy5pbml0aWFsQ29sdW1ucyk7XG4gICAgdGhpcy5jbGVhckNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgdXBkYXRlQ29sdW1ucyhjb2x1bW5zOiBUYWJsZUNvbHVtbltdKTogdm9pZCB7XG4gICAgdGhpcy5zZXREaXNwbGF5Q29sdW1ucyhjb2x1bW5zKTtcbiAgICB0aGlzLnNhdmVDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIHNhdmVDb2x1bW5zU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBoYXNoOiB0aGlzLmluaXRpYWxDb2x1bW5zSGFzaCxcbiAgICAgICAgICBjb2x1bW5zOiB0aGlzLmRpc3BsYXlDb2x1bW5zLm1hcChfID0+IG5ldyBUYWJsZUNvbHVtblN0b3JlKF8pKSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJDb2x1bW5zU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgc2V0RGlzcGxheUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBjb2x1bW5zID8gY29sdW1ucy5tYXAoXyA9PiBuZXcgVGFibGVDb2x1bW4oXykpIDogW107XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgcmVzdG9yZUNvbHVtbnMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbHVtbnNDb29raWVOYW1lKSB7XG4gICAgICBjb25zdCBzYXZlZENvbHVtbnMgPSBKU09OLnBhcnNlKFxuICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSlcbiAgICAgICk7XG4gICAgICBpZiAoc2F2ZWRDb2x1bW5zICYmIHNhdmVkQ29sdW1ucy5oYXNoID09PSB0aGlzLmluaXRpYWxDb2x1bW5zSGFzaCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN0b3JlQ29sdW1uc1N0YXRlKHNhdmVkQ29sdW1ucy5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXN0b3JlQ29sdW1uc1N0YXRlKGNvbHVtbnM6IFRhYmxlQ29sdW1uU3RvcmVbXSkge1xuICAgIHJldHVybiBjb2x1bW5zLm1hcCgoY29sdW1uOiBUYWJsZUNvbHVtblN0b3JlKSA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IEFycmF5VXRpbC5maW5kUmVjdXJzaXZlKFxuICAgICAgICB0aGlzLmluaXRpYWxDb2x1bW5zLFxuICAgICAgICBpdGVtID0+IGl0ZW0ubmFtZSA9PT0gY29sdW1uLm5hbWUsXG4gICAgICAgICdjb2x1bW5zJ1xuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc3VsdENvbHVtbiA9IG5ldyBUYWJsZUNvbHVtbihmb3VuZCk7XG4gICAgICByZXN1bHRDb2x1bW4ud2lkdGggPSBjb2x1bW4ud2lkdGg7XG4gICAgICByZXN1bHRDb2x1bW4uZmxleCA9IGNvbHVtbi5mbGV4O1xuICAgICAgcmVzdWx0Q29sdW1uLmxvY2tlZCA9IGNvbHVtbi5sb2NrZWQ7XG4gICAgICBpZiAoY29sdW1uLmNvbHVtbnM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzdWx0Q29sdW1uLmNvbHVtbnMgPSB0aGlzLnJlc3RvcmVDb2x1bW5zU3RhdGUoY29sdW1uLmNvbHVtbnMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdENvbHVtbjtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFN0YXRlKHN0YXRlOiBGaWx0ZXJTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9jb29raWVOYW1lKSB7XG4gICAgICBzdGF0ZS5zYXZlKHRoaXMuX2Nvb2tpZU5hbWUpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZS5uZXh0KHN0YXRlKTtcbiAgfVxuXG4gIHNldENvb2tpZU5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fY29va2llTmFtZSA9IG5hbWU7XG4gICAgdGhpcy5faGlkZGVuQ29va2llTmFtZSA9IGAke3RoaXMuX2Nvb2tpZU5hbWV9X2hpZGRlbl9jb2x1bW5zYDtcbiAgICB0aGlzLl9jb2x1bW5zQ29va2llTmFtZSA9IGAke3RoaXMuX2Nvb2tpZU5hbWV9X2NvbHVtbnNgO1xuICB9XG5cbiAgcmVzdG9yZVN0YXRlKCk6IHZvaWQge1xuICAgIGxldCBzdGF0ZTogRmlsdGVyU3RhdGU7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fY29va2llTmFtZSAmJlxuICAgICAgdGhpcy5fY29va2llTmFtZT8ubGVuZ3RoID4gMCAmJlxuICAgICAgRmlsdGVyU3RhdGUucmVzdG9yZSh0aGlzLl9jb29raWVOYW1lKVxuICAgICkge1xuICAgICAgbGV0IG5ld1N0YXRlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgdGhpcy5fc3RhdGUudmFsdWUsXG4gICAgICAgIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSlcbiAgICAgICk7XG4gICAgICBuZXdTdGF0ZSA9IERhdGVVdGlsLmNvbnZlcnREYXRlU3RyaW5nc1RvRGF0ZXMobmV3U3RhdGUpO1xuICAgICAgc3RhdGUgPSBuZXcgRmlsdGVyU3RhdGUobmV3U3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZSA9IG5ldyBGaWx0ZXJTdGF0ZSgpO1xuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHN0YXRlKTtcbiAgfVxuXG4gIHNhdmVIaWRkZW5Db2x1bW5zKGhpZGRlbkNvbHVtbnM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2hpZGRlbkNvb2tpZU5hbWUpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICB0aGlzLl9oaWRkZW5Db29raWVOYW1lLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShoaWRkZW5Db2x1bW5zKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXN0b3JlSGlkZGVuQ29sdW1ucygpOiB2b2lkIHtcbiAgICBjb25zdCBoaWRkZW5Db2x1bW5zID1cbiAgICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2hpZGRlbkNvb2tpZU5hbWUgPz8gJycpIHx8ICdbXSc7XG4gICAgdGhpcy5faGlkZGVuQ29sdW1ucy5uZXh0KEpTT04ucGFyc2UoaGlkZGVuQ29sdW1ucykpO1xuICB9XG5cbiAgc29ydEFzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0QXNjKHNvcnRFdmVudCwgdGhpcy5fc3RhdGUudmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBzb3J0RGVzYyhzb3J0RXZlbnQ6IFNvcnRFdmVudCk6IHZvaWQge1xuICAgIGlmIChzb3J0RXZlbnQuY29sdW1uLnNvcnRhYmxlKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5zb3J0RGVzYyhzb3J0RXZlbnQsIHRoaXMuX3N0YXRlLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJTb3J0KGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5jbGVhclNvcnQoY29sdW1uLCB0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJBbGxTb3J0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhdGUoU3RhdGVVdGlsLmNsZWFyQWxsU29ydCh0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICB9XG5cbiAgY2xlYXJGaWx0ZXIoY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUudmFsdWU7XG4gICAgaWYgKGNvbHVtbiAhPT0gbnVsbCAmJiBjb2x1bW4gIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uZmlsdGVyYWJsZSkge1xuICAgICAgc3dpdGNoIChjb2x1bW4uZmlsdGVyVHlwZSkge1xuICAgICAgICBjYXNlIEZpbHRlclR5cGUuZGF0ZTpcbiAgICAgICAgICBzdGF0ZS5hZGREYXRlRmlsdGVyKFxuICAgICAgICAgICAgbmV3IERhdGVGaWx0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ldyBEYXRlRmlsdGVyVmFsdWUoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLnN0cmluZzpcbiAgICAgICAgICBzdGF0ZS5hZGRTdHJpbmdGaWx0ZXIoXG4gICAgICAgICAgICBuZXcgU3RyaW5nRmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiAnJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLm51bWJlcjpcbiAgICAgICAgICBzdGF0ZS5hZGROdW1lcmljRmlsdGVyKFxuICAgICAgICAgICAgbmV3IE51bWVyaWNGaWx0ZXIoe1xuICAgICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgICAgZmllbGQ6IGNvbHVtbi5maWx0ZXJGaWVsZCxcbiAgICAgICAgICAgICAgdmFsdWU6IG5ldyBOdW1lcmljRmlsdGVyVmFsdWUoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLmxpc3Q6XG4gICAgICAgICAgc3RhdGUuYWRkTGlzdEZpbHRlcihcbiAgICAgICAgICAgIG5ldyBMaXN0RmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICAgICAgdHlwZTogTGlzdEZpbHRlclR5cGUuTm9uZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0U3RhdGUobmV3IEZpbHRlclN0YXRlKHN0YXRlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJBbGxGaWx0ZXJzKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5fc3RhdGUudmFsdWU7XG4gICAgc3RhdGUuc3RyaW5nRmlsdGVycyA9IFtdO1xuICAgIHN0YXRlLmxpc3RGaWx0ZXJzID0gW107XG4gICAgc3RhdGUubnVtZXJpY0ZpbHRlcnMgPSBbXTtcbiAgICBzdGF0ZS5kYXRlRmlsdGVycyA9IFtdO1xuICAgIHRoaXMuc2V0U3RhdGUobmV3IEZpbHRlclN0YXRlKHN0YXRlKSk7XG4gIH1cblxuICBwaW5Db2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbik6IHZvaWQge1xuICAgIHRoaXMuZGlzcGxheUNvbHVtbnMuZm9yRWFjaCgoY29sOiBUYWJsZUNvbHVtbikgPT4ge1xuICAgICAgaWYgKGNvbC5uYW1lID09PSBjb2x1bW4ubmFtZSkge1xuICAgICAgICBjb2wubG9ja2VkID0gIWNvbC5sb2NrZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy51cGRhdGVDb2x1bW5zKHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICB9XG5cbiAgZHJhZ1N0YXJ0KGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnU291cmNlID0gY29sdW1uO1xuICB9XG5cbiAgbG9ja1ByZXZpb3VzQ29sdW1ucyhjb2x1bW46IFRhYmxlQ29sdW1uLCBlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGZsYXQgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmRpc3BsYXlDb2x1bW5zLCAnY29sdW1ucycsIHRydWUpLnNvcnQoXG4gICAgICAoYSwgYikgPT4gTnVtYmVyKGIubG9ja2VkKSAtIE51bWJlcihhLmxvY2tlZClcbiAgICApO1xuICAgIGNvbnN0IGluZGV4ID0gZmxhdC5pbmRleE9mKGNvbHVtbik7XG4gICAgY29uc3QgcHJldmlvdXMgPSBmbGF0LnNsaWNlKDAsIGluZGV4KS5maWx0ZXIoXyA9PiBfLmZsZXggPiAwKTtcbiAgICBpZiAocHJldmlvdXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuZ2V0VGFibGVFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgcHJldmlvdXMuZm9yRWFjaCgoaXRlbTogVGFibGVDb2x1bW4pID0+IHtcbiAgICAgICAgY29uc3QgaXRlbUNvbCA9IHRhYmxlRWxlbWVudD8ucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICBgdGV0YS1oZWFkLWNlbGxbZGF0YS1jb2x1bW49XCIke2l0ZW0ubmFtZX1cIl1gXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgIGlmIChpdGVtQ29sKSB7XG4gICAgICAgICAgaXRlbS5mbGV4ID0gMDtcbiAgICAgICAgICBpdGVtLndpZHRoID0gaXRlbUNvbC5jbGllbnRXaWR0aDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVzaXplQ29sdW1uKGV2ZW50OiBDb2x1bW5SZXNpemVFdmVudCkge1xuICAgIGlmIChldmVudC5jb2x1bW4gIT09IG51bGwgJiYgZXZlbnQuY29sdW1uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGV2ZW50LmNvbHVtbi53aWR0aCA9IGV2ZW50Lm5ld1dpZHRoIDwgNTAgPyA1MCA6IGV2ZW50Lm5ld1dpZHRoO1xuICAgICAgZXZlbnQuY29sdW1uLmZsZXggPSAwO1xuICAgIH1cbiAgICB0aGlzLl9jb2x1bW5zLm5leHQodGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgdGhpcy5zYXZlQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICBhdXRvc2l6ZUNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCB0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5nZXRUYWJsZUVsZW1lbnQodGFyZ2V0KTtcbiAgICB0aGlzLnNldENvbHVtbkF1dG9XaWR0aChjb2x1bW4sIHRhYmxlRWxlbWVudCBhcyBIVE1MRWxlbWVudCk7XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgYXV0b3NpemVBbGxDb2x1bW5zKHRhcmdldDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCB0YWJsZUVsZW1lbnQgPSB0aGlzLmdldFRhYmxlRWxlbWVudCh0YXJnZXQpO1xuICAgIGNvbnN0IGZsYXQgPSBBcnJheVV0aWwuZmxhdHRlbih0aGlzLmRpc3BsYXlDb2x1bW5zLCAnY29sdW1ucycsIHRydWUpO1xuICAgIGZsYXQuZm9yRWFjaChjb2wgPT5cbiAgICAgIHRoaXMuc2V0Q29sdW1uQXV0b1dpZHRoKGNvbCwgdGFibGVFbGVtZW50IGFzIEhUTUxFbGVtZW50KVxuICAgICk7XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgcmVvcmRlckNvbHVtbihjb2x1bW46IFRhYmxlQ29sdW1uLCBpbnNlcnRCZWZvcmU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2RyYWdTb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ29sdW1uUmVvcmRlckV2ZW50KHRoaXMuX2RyYWdTb3VyY2UsIGNvbHVtbik7XG4gICAgaWYgKGV2ZW50LnNvdXJjZSAhPT0gZXZlbnQudGFyZ2V0KSB7XG4gICAgICBjb25zdCBzb3VyY2VQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQoZXZlbnQuc291cmNlLCB0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICAgIGNvbnN0IHRhcmdldFBhcmVudCA9IHRoaXMuZmluZFBhcmVudChldmVudC50YXJnZXQsIHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuXG4gICAgICBpZiAoc291cmNlUGFyZW50ICYmIHRhcmdldFBhcmVudCkge1xuICAgICAgICBjb25zdCBzb3VyY2VJbmRleCA9IHNvdXJjZVBhcmVudC5pbmRleE9mKGV2ZW50LnNvdXJjZSk7XG4gICAgICAgIHNvdXJjZVBhcmVudC5zcGxpY2Uoc291cmNlSW5kZXgsIDEpO1xuICAgICAgICBsZXQgdGFyZ2V0SW5kZXggPSB0YXJnZXRQYXJlbnQuaW5kZXhPZihldmVudC50YXJnZXQpO1xuICAgICAgICBpZiAoIWluc2VydEJlZm9yZSkge1xuICAgICAgICAgIHRhcmdldEluZGV4ID0gdGFyZ2V0SW5kZXggKyAxO1xuICAgICAgICB9XG4gICAgICAgIHRhcmdldFBhcmVudC5zcGxpY2UodGFyZ2V0SW5kZXgsIDAsIGV2ZW50LnNvdXJjZSk7XG4gICAgICAgIGV2ZW50LnNvdXJjZS5sb2NrZWQgPSBldmVudC50YXJnZXQubG9ja2VkO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ29sdW1ucyh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRDb2x1bW5QYXJlbnQoY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiB0aGlzLmZpbmRQYXJlbnRDb2x1bW4oY29sdW1uLCB0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgfVxuXG4gIHN0YXJ0RWRpdFJvdyhjZWxsRXZlbnQ6IElDZWxsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY3VycmVudEVkaXRDZWxsPy5yb3cgIT09IGNlbGxFdmVudD8ucm93KSB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudEVkaXRDZWxsICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZWRpdFJvd1N0b3AubmV4dCh0aGlzLl9jdXJyZW50RWRpdENlbGwpO1xuICAgICAgfVxuICAgICAgaWYgKGNlbGxFdmVudCA9PT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9lZGl0Um93U3RhcnQubmV4dChjZWxsRXZlbnQpO1xuICAgICAgICB0aGlzLl9jdXJyZW50RWRpdENlbGwgPSBjZWxsRXZlbnQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPFQ+KCEhdGhpcy5yb3dFZGl0YWJsZSkoXG4gICAgICAgICAgICB0aGlzLmdldFJvd0J5SW5kZXgoY2VsbEV2ZW50Py5yb3cpPy5kYXRhXG4gICAgICAgICAgKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLl9lZGl0Um93U3RhcnQubmV4dChjZWxsRXZlbnQpO1xuICAgICAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCA9IGNlbGxFdmVudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHN0YXJ0RWRpdENlbGwoY2VsbEV2ZW50OiBJQ2VsbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsPy5jb2x1bW4gIT09IGNlbGxFdmVudD8uY29sdW1uIHx8XG4gICAgICB0aGlzLl9jdXJyZW50RWRpdENlbGw/LnJvdyAhPT0gY2VsbEV2ZW50Py5yb3dcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50RWRpdENlbGwgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLl9lZGl0Q2VsbFN0b3AubmV4dCh0aGlzLl9jdXJyZW50RWRpdENlbGwpO1xuICAgICAgfVxuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUoY2VsbEV2ZW50Py5jb2x1bW4pO1xuICAgICAgaWYgKFxuICAgICAgICBib29sT3JGdW5jQ2FsbGJhY2s8SUNvbHVtblJvdzxUPj4oY29sdW1uPy5lZGl0YWJsZSkoe1xuICAgICAgICAgIHJvdzogdGhpcy5nZXRSb3dCeUluZGV4KGNlbGxFdmVudD8ucm93KT8uZGF0YSxcbiAgICAgICAgICBjb2x1bW46IGNvbHVtbixcbiAgICAgICAgfSlcbiAgICAgICkge1xuICAgICAgICB0aGlzLl9lZGl0Q2VsbFN0YXJ0Lm5leHQoY2VsbEV2ZW50KTtcbiAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgICBjb25zdCBrZXkgPSAoY2VsbEV2ZW50Py5ldmVudCBhcyBLZXlib2FyZEV2ZW50KT8ua2V5O1xuICAgICAgICBpZiAoXG4gICAgICAgICAga2V5ICYmXG4gICAgICAgICAgKGtleS5sZW5ndGggPT09IDEgfHwgKGtleSA9PT0gJ0RlbGV0ZScgJiYgIWNvbHVtbi5yZXF1aXJlZCkpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2xlYXJWYWx1ZShjZWxsRXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0QWN0aXZlUm93KHJvdzogVCk6IHZvaWQge1xuICAgIHRoaXMuX2FjdGl2ZVJvdy5uZXh0KHJvdyk7XG4gIH1cblxuICBzZWxlY3RSb3dzKHJvd3M6IFRbXSk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHJvd3MpO1xuICB9XG5cbiAgc2VsZWN0T3JEZXNlbGVjdFJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmluZGV4T2Yocm93KSA+PSAwKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dCh0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUuZmlsdGVyKF8gPT4gXyAhPT0gcm93KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFsuLi50aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUsIHJvd10pO1xuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFJhbmdlKHJvdzogVCk6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZmluZEluZGV4KF8gPT4gXy5kYXRhID09PSByb3cpO1xuICAgIGxldCBtaW5JbmRleCA9IHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgIGNvbnN0IG5ld0luZGV4ID0gdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZmluZEluZGV4KF8gPT4gXy5kYXRhID09PSBjdXJyKTtcbiAgICAgIGlmIChuZXdJbmRleCA8IHByZXYpIHtcbiAgICAgICAgcmV0dXJuIG5ld0luZGV4O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgdGhpcy5fZGlzcGxheURhdGEudmFsdWUubGVuZ3RoKTtcbiAgICBsZXQgbWF4SW5kZXggPSB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleChfID0+IF8uZGF0YSA9PT0gY3Vycik7XG4gICAgICBpZiAobmV3SW5kZXggPiBwcmV2KSB7XG4gICAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIDApO1xuICAgIGlmIChpbmRleCA+IG1heEluZGV4KSB7XG4gICAgICBtYXhJbmRleCA9IGluZGV4O1xuICAgIH1cbiAgICBpZiAoaW5kZXggPCBtaW5JbmRleCkge1xuICAgICAgbWluSW5kZXggPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKG1pbkluZGV4IDwgaW5kZXggJiYgaW5kZXggPCBtYXhJbmRleCkge1xuICAgICAgbWF4SW5kZXggPSBpbmRleDtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoW1xuICAgICAgLi4udGhpcy5fZGlzcGxheURhdGEudmFsdWUuc2xpY2UobWluSW5kZXgsIG1heEluZGV4ICsgMSkubWFwKF8gPT4gXy5kYXRhKSxcbiAgICBdKTtcbiAgfVxuXG4gIHNlbGVjdFJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RUeXBlID09PSBTZWxlY3RUeXBlLm5vbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoWy4uLnRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZSwgcm93XSk7XG4gIH1cblxuICBkZXNlbGVjdFJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RUeXBlID09PSBTZWxlY3RUeXBlLm5vbmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQodGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmZpbHRlcihfID0+IF8gIT09IHJvdykpO1xuICB9XG5cbiAgc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLm1hcChfID0+IF8uZGF0YSkpO1xuICB9XG5cbiAgZGVzZWxlY3RBbGwoKSB7XG4gICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQoW10pO1xuICB9XG5cbiAgYWxsUm93c1NlbGVjdGVkKCk6IGJvb2xlYW4gfCBudWxsIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZT8ubGVuZ3RoICYmXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZXZlcnkoXG4gICAgICAgIF8gPT5cbiAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUuZmluZEluZGV4KHNlbGVjdGVkID0+IHNlbGVjdGVkID09PSBfLmRhdGEpID49XG4gICAgICAgICAgMFxuICAgICAgKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZSA9PSBudWxsIHx8XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc2V0SGlkZGVuQ29sdW1ucyh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLnNhdmVIaWRkZW5Db2x1bW5zKHZhbHVlKTtcbiAgICB0aGlzLl9oaWRkZW5Db2x1bW5zLm5leHQodmFsdWUpO1xuICB9XG5cbiAgY29sdW1uSXNIaWRkZW4oY29sdW1uOiBUYWJsZUNvbHVtbikge1xuICAgIHJldHVybiB0aGlzLl9oaWRkZW5Db2x1bW5zLnZhbHVlLmluZGV4T2YoY29sdW1uLm5hbWUpID49IDA7XG4gIH1cblxuICBjaGFuZ2VWYWx1ZShjb29yZGluYXRlczogSUNlbGxDb29yZGluYXRlcyk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlZC5uZXh0KGNvb3JkaW5hdGVzKTtcbiAgfVxuXG4gIHNldFZhbHVlKGNlbGxWYWx1ZTogSUNlbGxWYWx1ZSk6IHZvaWQ7XG4gIHNldFZhbHVlKGNlbGxWYWx1ZTogSUNlbGxJbnN0YW5jZVZhbHVlPFQ+KTogdm9pZDtcbiAgc2V0VmFsdWUoY2VsbFZhbHVlOiBJQ2VsbFZhbHVlIHwgSUNlbGxJbnN0YW5jZVZhbHVlPFQ+KTogdm9pZCB7XG4gICAgbGV0IHZhbHVlOiBJQ2VsbFZhbHVlO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjZWxsVmFsdWUucm93ID09PSAnb2JqZWN0JyAmJlxuICAgICAgdHlwZW9mIGNlbGxWYWx1ZS5jb2x1bW4gPT09ICdvYmplY3QnXG4gICAgKSB7XG4gICAgICB2YWx1ZSA9IHtcbiAgICAgICAgcm93OiB0aGlzLmdldFJvd0luZGV4KGNlbGxWYWx1ZS5yb3cuZGF0YSksXG4gICAgICAgIGNvbHVtbjogY2VsbFZhbHVlLmNvbHVtbi5uYW1lLFxuICAgICAgICB2YWx1ZTogY2VsbFZhbHVlLnZhbHVlLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFsdWUgPSBjZWxsVmFsdWUgYXMgSUNlbGxWYWx1ZTtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWVTZXQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBnZXRSb3dCeUluZGV4KHJvd0luZGV4PzogbnVtYmVyKTogVGFibGVSb3c8VD4gfCB1bmRlZmluZWQge1xuICAgIGlmIChyb3dJbmRleCAhPT0gbnVsbCAmJiByb3dJbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZGlzcGxheURhdGE/LnZhbHVlW3Jvd0luZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldFJvd0luZGV4KHJvdzogVCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoXyA9PiBfLmRhdGEgPT09IHJvdyk7XG4gIH1cblxuICBnZXRFdmVudENlbGwoZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB0YXJnZXQudGFnTmFtZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3RldGEtY2VsbCc7XG4gICAgfSkgYXMgSFRNTEVsZW1lbnQ7XG4gIH1cblxuICBnZXRFdmVudFJvdyhldmVudDogRXZlbnQpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIHJldHVybiBldmVudC5jb21wb3NlZFBhdGgoKS5maW5kKCh0YXJnZXQ6IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHRhcmdldD8uZ2V0QXR0cmlidXRlICYmIHRhcmdldD8uZ2V0QXR0cmlidXRlKCdkYXRhLXJvdycpO1xuICAgIH0pIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgZ2V0TmV4dEVkaXRhYmxlQ2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbCB7XG4gICAgY29uc3QgbmV4dENlbGwgPSB0aGlzLmdldE5leHRDZWxsKGNvb3Jkcyk7XG4gICAgaWYgKCFuZXh0Q2VsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uQnlOYW1lKG5leHRDZWxsPy5jb2x1bW4pO1xuICAgIGlmIChcbiAgICAgIGJvb2xPckZ1bmNDYWxsYmFjazxJQ2VsbEluc3RhbmNlPFQ+Pihjb2x1bW4uZWRpdGFibGUpKHtcbiAgICAgICAgcm93OiB0aGlzLmdldFJvd0J5SW5kZXgobmV4dENlbGwucm93KSxcbiAgICAgICAgY29sdW1uLFxuICAgICAgfSlcbiAgICApIHtcbiAgICAgIHJldHVybiBuZXh0Q2VsbDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZ2V0TmV4dEVkaXRhYmxlQ2VsbChuZXh0Q2VsbCk7XG4gIH1cblxuICBnZXRQcmV2aW91c0VkaXRhYmxlQ2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbCB7XG4gICAgY29uc3QgcHJldkNlbGwgPSB0aGlzLmdldFByZXZpb3VzQ2VsbChjb29yZHMpO1xuICAgIGlmICghcHJldkNlbGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShwcmV2Q2VsbD8uY29sdW1uKTtcbiAgICBpZiAoXG4gICAgICBib29sT3JGdW5jQ2FsbGJhY2s8SUNlbGxJbnN0YW5jZTxUPj4oY29sdW1uLmVkaXRhYmxlKSh7XG4gICAgICAgIHJvdzogdGhpcy5nZXRSb3dCeUluZGV4KHByZXZDZWxsLnJvdyksXG4gICAgICAgIGNvbHVtbixcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm4gcHJldkNlbGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldFByZXZpb3VzRWRpdGFibGVDZWxsKHByZXZDZWxsKTtcbiAgfVxuXG4gIGdldE5leHRDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGxldCBjb2xJbmRleCA9IGNvbHVtbnMuZmluZEluZGV4KFxuICAgICAgKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtblxuICAgICk7XG4gICAgbGV0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKGNvbEluZGV4ID49IDAgJiYgcm93SW5kZXggPj0gMCkge1xuICAgICAgaWYgKGNvbEluZGV4ID09PSBjb2x1bW5zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgY29sSW5kZXggPSAwO1xuICAgICAgICByb3dJbmRleCA9IHJvd0luZGV4ICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sSW5kZXggKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGxldCBjb2xJbmRleCA9IGNvbHVtbnMuZmluZEluZGV4KFxuICAgICAgKGNvbDogVGFibGVDb2x1bW4pID0+IGNvbC5uYW1lID09PSBjb29yZHM/LmNvbHVtblxuICAgICk7XG4gICAgbGV0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKGNvbEluZGV4ID49IDAgJiYgcm93SW5kZXggPj0gMCkge1xuICAgICAgaWYgKGNvbEluZGV4ID09PSAwKSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sdW1ucy5sZW5ndGggLSAxO1xuICAgICAgICByb3dJbmRleCA9IHJvd0luZGV4IC0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbEluZGV4ID0gY29sSW5kZXggLSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0TmV4dFJvd0NlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2w6IFRhYmxlQ29sdW1uKSA9PiBjb2wubmFtZSA9PT0gY29vcmRzPy5jb2x1bW5cbiAgICApO1xuICAgIGNvbnN0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKFxuICAgICAgY29sSW5kZXggPj0gMCAmJlxuICAgICAgcm93SW5kZXggPj0gMCAmJlxuICAgICAgcm93SW5kZXggPCB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5sZW5ndGggLSAxXG4gICAgKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW46IGNvbHVtbnNbY29sSW5kZXhdPy5uYW1lLFxuICAgICAgICByb3c6IHJvd0luZGV4ICsgMSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNSb3dDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcykge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEZsYXRDb2x1bW5zKCk7XG4gICAgY29uc3QgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2w6IFRhYmxlQ29sdW1uKSA9PiBjb2wubmFtZSA9PT0gY29vcmRzPy5jb2x1bW5cbiAgICApO1xuICAgIGNvbnN0IHJvd0luZGV4ID0gY29vcmRzPy5yb3c7XG4gICAgaWYgKGNvbEluZGV4ID49IDAgJiYgcm93SW5kZXggPiAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb2x1bW46IGNvbHVtbnNbY29sSW5kZXhdPy5uYW1lLFxuICAgICAgICByb3c6IHJvd0luZGV4IC0gMSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0Q29sdW1uQnlOYW1lKGNvbHVtbk5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiBBcnJheVV0aWwuZmluZFJlY3Vyc2l2ZShcbiAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMsXG4gICAgICBpdGVyYWJsZU5vZGUgPT4gY29sdW1uTmFtZSA9PT0gaXRlcmFibGVOb2RlLm5hbWUsXG4gICAgICAnY29sdW1ucydcbiAgICApO1xuICB9XG5cbiAgc2Nyb2xsVG9JbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2Nyb2xsSW5kZXgubmV4dChudWxsKTtcbiAgICB0aGlzLl9zY3JvbGxJbmRleC5uZXh0KGluZGV4KTtcbiAgfVxuXG4gIGdldFZpc2libGVDb2x1bW5zKCkge1xuICAgIGNvbnN0IHZpc2libGUgPSBBcnJheVV0aWwuZmxhdHRlbihcbiAgICAgIHRoaXMuX2NvbHVtbnMudmFsdWUsXG4gICAgICAnY29sdW1ucycsXG4gICAgICB0cnVlXG4gICAgKS5maWx0ZXIoXyA9PiB0aGlzLl9oaWRkZW5Db2x1bW5zLnZhbHVlLmluZGV4T2YoXy5uYW1lKSA8IDApO1xuICAgIHJldHVybiB2aXNpYmxlLnNvcnQoKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpKTtcbiAgfVxuXG4gIGdldENlbGxJbnN0YW5jZShjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbEluc3RhbmNlPFQ+IHwgbnVsbCB7XG4gICAgcmV0dXJuIGNvb3Jkc1xuICAgICAgPyB7XG4gICAgICAgICAgcm93OiB0aGlzLmdldFJvd0J5SW5kZXgoY29vcmRzLnJvdyksXG4gICAgICAgICAgY29sdW1uOiB0aGlzLmdldENvbHVtbkJ5TmFtZShjb29yZHMuY29sdW1uKSxcbiAgICAgICAgfVxuICAgICAgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbGF0Q29sdW1ucygpIHtcbiAgICByZXR1cm4gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5zb3J0KFxuICAgICAgKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudChcbiAgICBjb2x1bW46IFRhYmxlQ29sdW1uLFxuICAgIGNvbHVtbnM6IFRhYmxlQ29sdW1uW11cbiAgKTogVGFibGVDb2x1bW5bXSB8IG51bGwge1xuICAgIGNvbnN0IGZvdW5kID0gY29sdW1ucy5maW5kKHggPT4geC5uYW1lID09PSBjb2x1bW4ubmFtZSk7XG4gICAgaWYgKGZvdW5kICE9PSBudWxsICYmIGZvdW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2ldO1xuICAgICAgaWYgKGNvbC5jb2x1bW5zICYmIGNvbC5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRQYXJlbnQoY29sdW1uLCBjb2wuY29sdW1ucyk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUGFyZW50Q29sdW1uKFxuICAgIGNvbHVtbjogVGFibGVDb2x1bW4sXG4gICAgY29sdW1uczogVGFibGVDb2x1bW5bXVxuICApOiBUYWJsZUNvbHVtbiB8IG51bGwge1xuICAgIGNvbnN0IGZvdW5kID0gY29sdW1ucy5maW5kKHggPT4geC5jb2x1bW5zLmluZGV4T2YoY29sdW1uKSA+PSAwKTtcbiAgICBpZiAoZm91bmQgIT09IG51bGwgJiYgZm91bmQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IGNvbHVtbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCBjb2wgPSBjb2x1bW5zW2ldO1xuICAgICAgaWYgKGNvbC5jb2x1bW5zICYmIGNvbC5jb2x1bW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRQYXJlbnRDb2x1bW4oY29sdW1uLCBjb2wuY29sdW1ucyk7XG4gICAgICAgIGlmIChyZXN1bHQgIT09IG51bGwgJiYgcmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0VGFibGVFbGVtZW50KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xvc2VzdCgndGV0YS10YWJsZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDb2x1bW5BdXRvV2lkdGgoY29sdW1uOiBUYWJsZUNvbHVtbiwgdGFibGU6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgY2VsbHMgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYHRldGEtY2VsbFtkYXRhLWNvbHVtbj1cIiR7Y29sdW1uLm5hbWV9XCJdIC5jZWxsLXRleHRgXG4gICAgKTtcbiAgICBsZXQgbWF4V2lkdGggPSAwO1xuICAgIGNlbGxzLmZvckVhY2goY2VsbCA9PiB7XG4gICAgICBpZiAoY2VsbC5zY3JvbGxXaWR0aCA+IG1heFdpZHRoKSB7XG4gICAgICAgIG1heFdpZHRoID0gY2VsbC5zY3JvbGxXaWR0aDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBhZ2dDZWxscyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICBgLmFnZ3JlZ2F0ZS1jZWxsW2RhdGEtY29sdW1uPVwiJHtjb2x1bW4ubmFtZX1cIl0gLmNlbGwtdGV4dGBcbiAgICApO1xuICAgIGFnZ0NlbGxzPy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgaWYgKGNlbGwuc2Nyb2xsV2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgICBtYXhXaWR0aCA9IGNlbGwuc2Nyb2xsV2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29sdW1uLmZsZXggPSAwO1xuICAgIGNvbHVtbi53aWR0aCA9IG1heFdpZHRoICsgMjA7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyVmFsdWUoZXZlbnQ6IElDZWxsRXZlbnQpIHtcbiAgICB0aGlzLnNldFZhbHVlKHtcbiAgICAgIC4uLmV2ZW50LFxuICAgICAgdmFsdWU6IG51bGwsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
667
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnQvdGFibGUvc2VydmljZS90YWJsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxVQUFVLE1BQU0sYUFBYSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxlQUFlLEVBQWMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBSTFELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUMxRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzdELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDakUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQzlELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN2RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQVdwRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFDLGdC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QUksQ0FBQyxFQUFFO1lBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLEVBQUUsQ0FBQztnQkFDaEMsUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7UUFDaEIsTUFBTSxDQUFDLEtBQUssR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxVQUFVLENBQUMsS0FBaUI7UUFDbEMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNaLEdBQUcsS0FBSztZQUNSLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0F0ekJVLFlBQVk7a0hBQVosWUFBWSxjQUZYLE1BQU07OzJGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCBvYmplY3RIYXNoIGZyb20gJ29iamVjdC1oYXNoJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtJRGljdGlvbmFyeX0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2NvbnRyYWN0L2ktZGljdGlvbmFyeSc7XG5pbXBvcnQge0lJZE5hbWV9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9jb250cmFjdC9pLWlkLW5hbWUnO1xuaW1wb3J0IHtBcnJheVV0aWx9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi91dGlsL2FycmF5LXV0aWwnO1xuaW1wb3J0IHtib29sT3JGdW5jQ2FsbGJhY2t9IGZyb20gJy4uLy4uLy4uL3V0aWwvYm9vbC1vci1mdW5jJztcbmltcG9ydCB7RGF0ZVV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWwvZGF0ZS11dGlsJztcbmltcG9ydCB7RGF0ZUZpbHRlcn0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2RhdGUtZmlsdGVyJztcbmltcG9ydCB7RGF0ZUZpbHRlclZhbHVlfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3QvZGF0ZS1maWx0ZXItdmFsdWUnO1xuaW1wb3J0IHtGaWx0ZXJTdGF0ZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L2ZpbHRlci1zdGF0ZSc7XG5pbXBvcnQge0xpc3RGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9saXN0LWZpbHRlcic7XG5pbXBvcnQge051bWVyaWNGaWx0ZXJ9IGZyb20gJy4uLy4uL2ZpbHRlci9jb250YXJjdC9udW1lcmljLWZpbHRlcic7XG5pbXBvcnQge051bWVyaWNGaWx0ZXJWYWx1ZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2NvbnRhcmN0L251bWVyaWMtZmlsdGVyLXZhbHVlJztcbmltcG9ydCB7U3RyaW5nRmlsdGVyfSBmcm9tICcuLi8uLi9maWx0ZXIvY29udGFyY3Qvc3RyaW5nLWZpbHRlcic7XG5pbXBvcnQge0ZpbHRlclR5cGV9IGZyb20gJy4uLy4uL2ZpbHRlci9lbnVtL2ZpbHRlci10eXBlLmVudW0nO1xuaW1wb3J0IHtMaXN0RmlsdGVyVHlwZX0gZnJvbSAnLi4vLi4vZmlsdGVyL2VudW0vbGlzdC1maWx0ZXItdHlwZS5lbnVtJztcbmltcG9ydCB7Q29sdW1uUmVvcmRlckV2ZW50fSBmcm9tICcuLi9jb250cmFjdC9jb2x1bW4tcmVvcmRlci1ldmVudCc7XG5pbXBvcnQge0NvbHVtblJlc2l6ZUV2ZW50fSBmcm9tICcuLi9jb250cmFjdC9jb2x1bW4tcmVzaXplLWV2ZW50JztcbmltcG9ydCB7SUNlbGxDb29yZGluYXRlc30gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWNvb3JkaW5hdGVzJztcbmltcG9ydCB7SUNlbGxFdmVudH0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWV2ZW50JztcbmltcG9ydCB7XG4gIElDZWxsSW5zdGFuY2UsXG4gIElDZWxsSW5zdGFuY2VWYWx1ZSxcbiAgSUNvbHVtblJvdyxcbn0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLWluc3RhbmNlJztcbmltcG9ydCB7SUNlbGxWYWx1ZX0gZnJvbSAnLi4vY29udHJhY3QvaS1jZWxsLXZhbHVlJztcbmltcG9ydCB7U29ydEV2ZW50fSBmcm9tICcuLi9jb250cmFjdC9zb3J0LWV2ZW50JztcbmltcG9ydCB7VGFibGVDb2x1bW59IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbic7XG5pbXBvcnQge1RhYmxlQ29sdW1uU3RvcmV9IGZyb20gJy4uL2NvbnRyYWN0L3RhYmxlLWNvbHVtbi1zdG9yZSc7XG5pbXBvcnQge1RhYmxlUm93fSBmcm9tICcuLi9jb250cmFjdC90YWJsZS1yb3cnO1xuaW1wb3J0IHtFZGl0RXZlbnR9IGZyb20gJy4uL2VudW0vZWRpdC1ldmVudC5lbnVtJztcbmltcG9ydCB7RWRpdFR5cGV9IGZyb20gJy4uL2VudW0vZWRpdC10eXBlLmVudW0nO1xuaW1wb3J0IHtTZWxlY3RUeXBlfSBmcm9tICcuLi9lbnVtL3NlbGVjdC10eXBlLmVudW0nO1xuaW1wb3J0IHtTdGF0ZVV0aWx9IGZyb20gJy4uL3V0aWwvc3RhdGUtdXRpbCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZVNlcnZpY2U8VD4ge1xuICBjb2x1bW5zOiBPYnNlcnZhYmxlPFRhYmxlQ29sdW1uW10+O1xuICBkaXNwbGF5RGF0YTogT2JzZXJ2YWJsZTxUYWJsZVJvdzxUPltdPjtcbiAgZGljdDogT2JzZXJ2YWJsZTxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+O1xuICBmaWx0ZXJPcHRpb25zOiBPYnNlcnZhYmxlPElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj47XG4gIHN0YXRlOiBPYnNlcnZhYmxlPEZpbHRlclN0YXRlPjtcbiAgc2VsZWN0VHlwZTogU2VsZWN0VHlwZSA9IFNlbGVjdFR5cGUubW91c2U7XG4gIGVkaXRSb3dTdGFydDogT2JzZXJ2YWJsZTxJQ2VsbEV2ZW50IHwgbnVsbD47XG4gIGVkaXRSb3dTdG9wOiBPYnNlcnZhYmxlPElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsPjtcbiAgZWRpdENlbGxTdGFydDogT2JzZXJ2YWJsZTxJQ2VsbEV2ZW50IHwgbnVsbD47XG4gIGVkaXRDZWxsU3RvcDogT2JzZXJ2YWJsZTxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD47XG4gIHZhbHVlQ2hhbmdlZDogT2JzZXJ2YWJsZTxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD47XG4gIHZhbHVlU2V0OiBPYnNlcnZhYmxlPElDZWxsVmFsdWU+O1xuICBzdGF0ZUNoYW5nZWQ6IE9ic2VydmFibGU8RmlsdGVyU3RhdGU+O1xuICBmaWx0ZXJDbGVhcjogT2JzZXJ2YWJsZTxUYWJsZUNvbHVtbj47XG4gIHNlbGVjdGVkUm93czogT2JzZXJ2YWJsZTxUW10+O1xuICBhY3RpdmVSb3c6IE9ic2VydmFibGU8VCB8IG51bGw+O1xuICBoaWRkZW5Db2x1bW5zOiBPYnNlcnZhYmxlPHN0cmluZ1tdPjtcbiAgc2Nyb2xsSW5kZXg6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBlZGl0VHlwZTogRWRpdFR5cGUgPSBFZGl0VHlwZS5jZWxsO1xuICBlZGl0RXZlbnQ6IEVkaXRFdmVudCA9IEVkaXRFdmVudC5kb3VibGVDbGljaztcbiAgcm93RWRpdGFibGU/OiBib29sZWFuIHwgKChyb3c6IFQpID0+IGJvb2xlYW4pO1xuICB0cmFja1JvdzogKGluZGV4OiBudW1iZXIsIHJvdzogVCkgPT4gYW55ID0gKGluZGV4OiBudW1iZXIsIHJvdzogVCkgPT4ge1xuICAgIGNvbnN0IHJvd0lkID0gKHJvdyBhcyBhbnkpWydpZCddO1xuICAgIGlmIChyb3dJZCkge1xuICAgICAgcmV0dXJuIHJvd0lkO1xuICAgIH1cbiAgICByZXR1cm4gaW5kZXg7XG4gIH07XG5cbiAgZ2V0IGRyYWdTb3VyY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RyYWdTb3VyY2U7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxDb2x1bW5zSGFzaCA9ICcnO1xuICBwcml2YXRlIGluaXRpYWxDb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIHByaXZhdGUgZGlzcGxheUNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgcHJpdmF0ZSBfY29sdW1uczogQmVoYXZpb3JTdWJqZWN0PFRhYmxlQ29sdW1uW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBUYWJsZUNvbHVtbltdXG4gID4oW10pO1xuICBwcml2YXRlIF9oaWRkZW5Db2x1bW5zID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuICBwcml2YXRlIF9kaXNwbGF5RGF0YTogQmVoYXZpb3JTdWJqZWN0PFRhYmxlUm93PFQ+W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxcbiAgICBUYWJsZVJvdzxUPltdXG4gID4oW10pO1xuICBwcml2YXRlIF9kaWN0OiBCZWhhdmlvclN1YmplY3Q8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+PiA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4+KHt9KTtcbiAgcHJpdmF0ZSBfZmlsdGVyT3B0aW9uczogQmVoYXZpb3JTdWJqZWN0PElEaWN0aW9uYXJ5PElJZE5hbWU8YW55PltdPj4gPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8SURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+Pih7fSk7XG4gIHByaXZhdGUgX3N0YXRlOiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyU3RhdGU+ID1cbiAgICBuZXcgQmVoYXZpb3JTdWJqZWN0PEZpbHRlclN0YXRlPihuZXcgRmlsdGVyU3RhdGUoKSk7XG4gIHByaXZhdGUgX2Nvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hpZGRlbkNvb2tpZU5hbWU/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbHVtbnNDb29raWVOYW1lPzogc3RyaW5nO1xuICBwcml2YXRlIF9lZGl0Um93U3RhcnQgPSBuZXcgU3ViamVjdDxJQ2VsbEV2ZW50IHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdFJvd1N0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfZWRpdENlbGxTdGFydCA9IG5ldyBTdWJqZWN0PElDZWxsRXZlbnQgfCBudWxsPigpO1xuICBwcml2YXRlIF9lZGl0Q2VsbFN0b3AgPSBuZXcgU3ViamVjdDxJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbD4oKTtcbiAgcHJpdmF0ZSBfdmFsdWVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8SUNlbGxDb29yZGluYXRlcyB8IG51bGw+KCk7XG4gIHByaXZhdGUgX3ZhbHVlU2V0ID0gbmV3IFN1YmplY3Q8SUNlbGxWYWx1ZT4oKTtcbiAgcHJpdmF0ZSBfc3RhdGVDaGFuZ2VkID0gbmV3IFN1YmplY3Q8RmlsdGVyU3RhdGU+KCk7XG4gIHByaXZhdGUgX2ZpbHRlckNsZWFyID0gbmV3IFN1YmplY3Q8VGFibGVDb2x1bW4+KCk7XG4gIHByaXZhdGUgX2RyYWdTb3VyY2U/OiBUYWJsZUNvbHVtbjtcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRSb3dzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUW10+KFtdKTtcbiAgcHJpdmF0ZSBfYWN0aXZlUm93ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgX3Njcm9sbEluZGV4ID0gbmV3IFN1YmplY3Q8bnVtYmVyIHwgbnVsbD4oKTtcblxuICBwcml2YXRlIF9jdXJyZW50RWRpdENlbGw/OiBJQ2VsbENvb3JkaW5hdGVzO1xuXG4gIGdldCBjdXJyZW50RWRpdENlbGwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuX2NvbHVtbnMuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5kaXNwbGF5RGF0YSA9IHRoaXMuX2Rpc3BsYXlEYXRhLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZGljdCA9IHRoaXMuX2RpY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5maWx0ZXJPcHRpb25zID0gdGhpcy5fZmlsdGVyT3B0aW9ucy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnN0YXRlID0gdGhpcy5fc3RhdGUuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RhcnQgPSB0aGlzLl9lZGl0Um93U3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Um93U3RvcCA9IHRoaXMuX2VkaXRSb3dTdG9wLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZWRpdENlbGxTdGFydCA9IHRoaXMuX2VkaXRDZWxsU3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5lZGl0Q2VsbFN0b3AgPSB0aGlzLl9lZGl0Q2VsbFN0b3AuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZWQgPSB0aGlzLl92YWx1ZUNoYW5nZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy52YWx1ZVNldCA9IHRoaXMuX3ZhbHVlU2V0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VkID0gdGhpcy5fc3RhdGVDaGFuZ2VkLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuZmlsdGVyQ2xlYXIgPSB0aGlzLl9maWx0ZXJDbGVhci5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnNlbGVjdGVkUm93cyA9IHRoaXMuX3NlbGVjdGVkUm93cy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmFjdGl2ZVJvdyA9IHRoaXMuX2FjdGl2ZVJvdy5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLmhpZGRlbkNvbHVtbnMgPSB0aGlzLl9oaWRkZW5Db2x1bW5zLmFzT2JzZXJ2YWJsZSgpO1xuICAgIHRoaXMuc2Nyb2xsSW5kZXggPSB0aGlzLl9zY3JvbGxJbmRleC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHNldERhdGEoZGF0YTogVFtdKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzcGxheURhdGEubmV4dChcbiAgICAgIGRhdGE/Lm1hcChcbiAgICAgICAgaXRlbSA9PlxuICAgICAgICAgIG5ldyBUYWJsZVJvdzxUPih7XG4gICAgICAgICAgICBkYXRhOiBpdGVtLFxuICAgICAgICAgIH0pXG4gICAgICApID8/IFtdXG4gICAgKTtcbiAgfVxuXG4gIHNldERpY3QoZGljdDogSURpY3Rpb25hcnk8SUlkTmFtZTxhbnk+W10+KTogdm9pZCB7XG4gICAgdGhpcy5fZGljdC5uZXh0KGRpY3QpO1xuICB9XG5cbiAgc2V0RmlsdGVyT3B0aW9ucyhmaWx0ZXJPcHRpb25zOiBJRGljdGlvbmFyeTxJSWROYW1lPGFueT5bXT4pOiB2b2lkIHtcbiAgICB0aGlzLl9maWx0ZXJPcHRpb25zLm5leHQoZmlsdGVyT3B0aW9ucyk7XG4gIH1cblxuICBzZXRDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLmluaXRpYWxDb2x1bW5zID0gY29sdW1ucyA/IGNvbHVtbnMubWFwKF8gPT4gbmV3IFRhYmxlQ29sdW1uKF8pKSA6IFtdO1xuICAgIGNvbnN0IGV4Y2x1ZGVLZXlzID0gW1xuICAgICAgJ2VkaXRhYmxlJyxcbiAgICAgICdjZWxsQ29tcG9uZW50JyxcbiAgICAgICdoZWFkQ2VsbENvbXBvbmVudCcsXG4gICAgICAnaGVhZERyb3Bkb3duQ29uZmlnJyxcbiAgICBdO1xuICAgIHRoaXMuaW5pdGlhbENvbHVtbnNIYXNoID0gb2JqZWN0SGFzaCh0aGlzLmluaXRpYWxDb2x1bW5zLCB7XG4gICAgICBhbGdvcml0aG06ICdzaGExJyxcbiAgICAgIGlnbm9yZVVua25vd246IHRydWUsXG4gICAgICBleGNsdWRlS2V5czogKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBleGNsdWRlS2V5cy5pbmRleE9mKGtleSkgPj0gMDtcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgY29uc3QgcmVzdG9yZWQgPSB0aGlzLnJlc3RvcmVDb2x1bW5zKCk7XG5cbiAgICBpZiAocmVzdG9yZWQpIHtcbiAgICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnMocmVzdG9yZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKHRoaXMuaW5pdGlhbENvbHVtbnMpO1xuICAgIH1cbiAgfVxuXG4gIHJlc3RvcmVEZWZhdWx0Q29sdW1ucygpIHtcbiAgICB0aGlzLnNldERpc3BsYXlDb2x1bW5zKHRoaXMuaW5pdGlhbENvbHVtbnMpO1xuICAgIHRoaXMuY2xlYXJDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZUNvbHVtbnMoY29sdW1uczogVGFibGVDb2x1bW5bXSk6IHZvaWQge1xuICAgIHRoaXMuc2V0RGlzcGxheUNvbHVtbnMoY29sdW1ucyk7XG4gICAgdGhpcy5zYXZlQ29sdW1uc1N0YXRlKCk7XG4gIH1cblxuICBzYXZlQ29sdW1uc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgIHRoaXMuX2NvbHVtbnNDb29raWVOYW1lLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgaGFzaDogdGhpcy5pbml0aWFsQ29sdW1uc0hhc2gsXG4gICAgICAgICAgY29sdW1uczogdGhpcy5kaXNwbGF5Q29sdW1ucy5tYXAoXyA9PiBuZXcgVGFibGVDb2x1bW5TdG9yZShfKSksXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQ29sdW1uc1N0YXRlKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIHNldERpc3BsYXlDb2x1bW5zKGNvbHVtbnM6IFRhYmxlQ29sdW1uW10pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gY29sdW1ucyA/IGNvbHVtbnMubWFwKF8gPT4gbmV3IFRhYmxlQ29sdW1uKF8pKSA6IFtdO1xuICAgIHRoaXMuX2NvbHVtbnMubmV4dCh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgfVxuXG4gIHJlc3RvcmVDb2x1bW5zKCkge1xuICAgIGlmICh0aGlzLl9jb2x1bW5zQ29va2llTmFtZSkge1xuICAgICAgY29uc3Qgc2F2ZWRDb2x1bW5zID0gSlNPTi5wYXJzZShcbiAgICAgICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUpXG4gICAgICApO1xuICAgICAgaWYgKHNhdmVkQ29sdW1ucyAmJiBzYXZlZENvbHVtbnMuaGFzaCA9PT0gdGhpcy5pbml0aWFsQ29sdW1uc0hhc2gpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdG9yZUNvbHVtbnNTdGF0ZShzYXZlZENvbHVtbnMuY29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmVzdG9yZUNvbHVtbnNTdGF0ZShjb2x1bW5zOiBUYWJsZUNvbHVtblN0b3JlW10pIHtcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoKGNvbHVtbjogVGFibGVDb2x1bW5TdG9yZSkgPT4ge1xuICAgICAgY29uc3QgZm91bmQgPSBBcnJheVV0aWwuZmluZFJlY3Vyc2l2ZShcbiAgICAgICAgdGhpcy5pbml0aWFsQ29sdW1ucyxcbiAgICAgICAgaXRlbSA9PiBpdGVtLm5hbWUgPT09IGNvbHVtbi5uYW1lLFxuICAgICAgICAnY29sdW1ucydcbiAgICAgICk7XG4gICAgICBjb25zdCByZXN1bHRDb2x1bW4gPSBuZXcgVGFibGVDb2x1bW4oZm91bmQpO1xuICAgICAgcmVzdWx0Q29sdW1uLndpZHRoID0gY29sdW1uLndpZHRoO1xuICAgICAgcmVzdWx0Q29sdW1uLmZsZXggPSBjb2x1bW4uZmxleDtcbiAgICAgIHJlc3VsdENvbHVtbi5sb2NrZWQgPSBjb2x1bW4ubG9ja2VkO1xuICAgICAgaWYgKGNvbHVtbi5jb2x1bW5zPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHJlc3VsdENvbHVtbi5jb2x1bW5zID0gdGhpcy5yZXN0b3JlQ29sdW1uc1N0YXRlKGNvbHVtbi5jb2x1bW5zKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRDb2x1bW47XG4gICAgfSk7XG4gIH1cblxuICBzZXRTdGF0ZShzdGF0ZTogRmlsdGVyU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fY29va2llTmFtZSkge1xuICAgICAgc3RhdGUuc2F2ZSh0aGlzLl9jb29raWVOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5fc3RhdGUubmV4dChzdGF0ZSk7XG4gIH1cblxuICBzZXRDb29raWVOYW1lKG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuX2Nvb2tpZU5hbWUgPSBuYW1lO1xuICAgIHRoaXMuX2hpZGRlbkNvb2tpZU5hbWUgPSBgJHt0aGlzLl9jb29raWVOYW1lfV9oaWRkZW5fY29sdW1uc2A7XG4gICAgdGhpcy5fY29sdW1uc0Nvb2tpZU5hbWUgPSBgJHt0aGlzLl9jb29raWVOYW1lfV9jb2x1bW5zYDtcbiAgfVxuXG4gIHJlc3RvcmVTdGF0ZSgpOiB2b2lkIHtcbiAgICBsZXQgc3RhdGU6IEZpbHRlclN0YXRlO1xuICAgIGlmIChcbiAgICAgIHRoaXMuX2Nvb2tpZU5hbWUgJiZcbiAgICAgIHRoaXMuX2Nvb2tpZU5hbWU/Lmxlbmd0aCA+IDAgJiZcbiAgICAgIEZpbHRlclN0YXRlLnJlc3RvcmUodGhpcy5fY29va2llTmFtZSlcbiAgICApIHtcbiAgICAgIGxldCBuZXdTdGF0ZSA9IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHRoaXMuX3N0YXRlLnZhbHVlLFxuICAgICAgICBGaWx0ZXJTdGF0ZS5yZXN0b3JlKHRoaXMuX2Nvb2tpZU5hbWUpXG4gICAgICApO1xuICAgICAgbmV3U3RhdGUgPSBEYXRlVXRpbC5jb252ZXJ0RGF0ZVN0cmluZ3NUb0RhdGVzKG5ld1N0YXRlKTtcbiAgICAgIHN0YXRlID0gbmV3IEZpbHRlclN0YXRlKG5ld1N0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUgPSBuZXcgRmlsdGVyU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRTdGF0ZShzdGF0ZSk7XG4gIH1cblxuICBzYXZlSGlkZGVuQ29sdW1ucyhoaWRkZW5Db2x1bW5zOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9oaWRkZW5Db29raWVOYW1lKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgdGhpcy5faGlkZGVuQ29va2llTmFtZSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoaGlkZGVuQ29sdW1ucylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmVzdG9yZUhpZGRlbkNvbHVtbnMoKTogdm9pZCB7XG4gICAgY29uc3QgaGlkZGVuQ29sdW1ucyA9XG4gICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9oaWRkZW5Db29raWVOYW1lID8/ICcnKSB8fCAnW10nO1xuICAgIHRoaXMuX2hpZGRlbkNvbHVtbnMubmV4dChKU09OLnBhcnNlKGhpZGRlbkNvbHVtbnMpKTtcbiAgfVxuXG4gIHNvcnRBc2Moc29ydEV2ZW50OiBTb3J0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoc29ydEV2ZW50LmNvbHVtbi5zb3J0YWJsZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShTdGF0ZVV0aWwuc29ydEFzYyhzb3J0RXZlbnQsIHRoaXMuX3N0YXRlLnZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgc29ydERlc2Moc29ydEV2ZW50OiBTb3J0RXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoc29ydEV2ZW50LmNvbHVtbi5zb3J0YWJsZSkge1xuICAgICAgdGhpcy5zZXRTdGF0ZShTdGF0ZVV0aWwuc29ydERlc2Moc29ydEV2ZW50LCB0aGlzLl9zdGF0ZS52YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyU29ydChjb2x1bW46IFRhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgdGhpcy5zZXRTdGF0ZShTdGF0ZVV0aWwuY2xlYXJTb3J0KGNvbHVtbiwgdGhpcy5fc3RhdGUudmFsdWUpKTtcbiAgfVxuXG4gIGNsZWFyQWxsU29ydCgpOiB2b2lkIHtcbiAgICB0aGlzLnNldFN0YXRlKFN0YXRlVXRpbC5jbGVhckFsbFNvcnQodGhpcy5fc3RhdGUudmFsdWUpKTtcbiAgfVxuXG4gIGNsZWFyRmlsdGVyKGNvbHVtbjogVGFibGVDb2x1bW4pIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlLnZhbHVlO1xuICAgIGlmIChjb2x1bW4gIT09IG51bGwgJiYgY29sdW1uICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLmZpbHRlcmFibGUpIHtcbiAgICAgIHN3aXRjaCAoY29sdW1uLmZpbHRlclR5cGUpIHtcbiAgICAgICAgY2FzZSBGaWx0ZXJUeXBlLmRhdGU6XG4gICAgICAgICAgc3RhdGUuYWRkRGF0ZUZpbHRlcihcbiAgICAgICAgICAgIG5ldyBEYXRlRmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiBuZXcgRGF0ZUZpbHRlclZhbHVlKCksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5zdHJpbmc6XG4gICAgICAgICAgc3RhdGUuYWRkU3RyaW5nRmlsdGVyKFxuICAgICAgICAgICAgbmV3IFN0cmluZ0ZpbHRlcih7XG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmZpbHRlckZpZWxkLFxuICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5udW1iZXI6XG4gICAgICAgICAgc3RhdGUuYWRkTnVtZXJpY0ZpbHRlcihcbiAgICAgICAgICAgIG5ldyBOdW1lcmljRmlsdGVyKHtcbiAgICAgICAgICAgICAgbmFtZTogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICAgIGZpZWxkOiBjb2x1bW4uZmlsdGVyRmllbGQsXG4gICAgICAgICAgICAgIHZhbHVlOiBuZXcgTnVtZXJpY0ZpbHRlclZhbHVlKCksXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgRmlsdGVyVHlwZS5saXN0OlxuICAgICAgICAgIHN0YXRlLmFkZExpc3RGaWx0ZXIoXG4gICAgICAgICAgICBuZXcgTGlzdEZpbHRlcih7XG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICAgICAgICBmaWVsZDogY29sdW1uLmZpbHRlckZpZWxkLFxuICAgICAgICAgICAgICB2YWx1ZTogW10sXG4gICAgICAgICAgICAgIHR5cGU6IExpc3RGaWx0ZXJUeXBlLk5vbmUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICB0aGlzLnNldFN0YXRlKG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSkpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyQWxsRmlsdGVycygpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuX3N0YXRlLnZhbHVlO1xuICAgIHN0YXRlLnN0cmluZ0ZpbHRlcnMgPSBbXTtcbiAgICBzdGF0ZS5saXN0RmlsdGVycyA9IFtdO1xuICAgIHN0YXRlLm51bWVyaWNGaWx0ZXJzID0gW107XG4gICAgc3RhdGUuZGF0ZUZpbHRlcnMgPSBbXTtcbiAgICB0aGlzLnNldFN0YXRlKG5ldyBGaWx0ZXJTdGF0ZShzdGF0ZSkpO1xuICB9XG5cbiAgcGluQ29sdW1uKGNvbHVtbjogVGFibGVDb2x1bW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXlDb2x1bW5zLmZvckVhY2goKGNvbDogVGFibGVDb2x1bW4pID0+IHtcbiAgICAgIGlmIChjb2wubmFtZSA9PT0gY29sdW1uLm5hbWUpIHtcbiAgICAgICAgY29sLmxvY2tlZCA9ICFjb2wubG9ja2VkO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMudXBkYXRlQ29sdW1ucyh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgfVxuXG4gIGRyYWdTdGFydChjb2x1bW46IFRhYmxlQ29sdW1uKTogdm9pZCB7XG4gICAgdGhpcy5fZHJhZ1NvdXJjZSA9IGNvbHVtbjtcbiAgfVxuXG4gIGxvY2tQcmV2aW91c0NvbHVtbnMoY29sdW1uOiBUYWJsZUNvbHVtbiwgZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBmbGF0ID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKS5zb3J0KFxuICAgICAgKGEsIGIpID0+IE51bWJlcihiLmxvY2tlZCkgLSBOdW1iZXIoYS5sb2NrZWQpXG4gICAgKTtcbiAgICBjb25zdCBpbmRleCA9IGZsYXQuaW5kZXhPZihjb2x1bW4pO1xuICAgIGNvbnN0IHByZXZpb3VzID0gZmxhdC5zbGljZSgwLCBpbmRleCkuZmlsdGVyKF8gPT4gXy5mbGV4ID4gMCk7XG4gICAgaWYgKHByZXZpb3VzPy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB0YWJsZUVsZW1lbnQgPSB0aGlzLmdldFRhYmxlRWxlbWVudChlbGVtZW50KTtcbiAgICAgIHByZXZpb3VzLmZvckVhY2goKGl0ZW06IFRhYmxlQ29sdW1uKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1Db2wgPSB0YWJsZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgYHRldGEtaGVhZC1jZWxsW2RhdGEtY29sdW1uPVwiJHtpdGVtLm5hbWV9XCJdYFxuICAgICAgICApIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBpZiAoaXRlbUNvbCkge1xuICAgICAgICAgIGl0ZW0uZmxleCA9IDA7XG4gICAgICAgICAgaXRlbS53aWR0aCA9IGl0ZW1Db2wuY2xpZW50V2lkdGg7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlc2l6ZUNvbHVtbihldmVudDogQ29sdW1uUmVzaXplRXZlbnQpIHtcbiAgICBpZiAoZXZlbnQuY29sdW1uICE9PSBudWxsICYmIGV2ZW50LmNvbHVtbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBldmVudC5jb2x1bW4ud2lkdGggPSBldmVudC5uZXdXaWR0aCA8IDUwID8gNTAgOiBldmVudC5uZXdXaWR0aDtcbiAgICAgIGV2ZW50LmNvbHVtbi5mbGV4ID0gMDtcbiAgICB9XG4gICAgdGhpcy5fY29sdW1ucy5uZXh0KHRoaXMuZGlzcGxheUNvbHVtbnMpO1xuICAgIHRoaXMuc2F2ZUNvbHVtbnNTdGF0ZSgpO1xuICB9XG5cbiAgYXV0b3NpemVDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgdGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHRhYmxlRWxlbWVudCA9IHRoaXMuZ2V0VGFibGVFbGVtZW50KHRhcmdldCk7XG4gICAgdGhpcy5zZXRDb2x1bW5BdXRvV2lkdGgoY29sdW1uLCB0YWJsZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpO1xuICAgIHRoaXMuX2NvbHVtbnMubmV4dCh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICB0aGlzLnNhdmVDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIGF1dG9zaXplQWxsQ29sdW1ucyh0YXJnZXQ6IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgdGFibGVFbGVtZW50ID0gdGhpcy5nZXRUYWJsZUVsZW1lbnQodGFyZ2V0KTtcbiAgICBjb25zdCBmbGF0ID0gQXJyYXlVdGlsLmZsYXR0ZW4odGhpcy5kaXNwbGF5Q29sdW1ucywgJ2NvbHVtbnMnLCB0cnVlKTtcbiAgICBmbGF0LmZvckVhY2goY29sID0+XG4gICAgICB0aGlzLnNldENvbHVtbkF1dG9XaWR0aChjb2wsIHRhYmxlRWxlbWVudCBhcyBIVE1MRWxlbWVudClcbiAgICApO1xuICAgIHRoaXMuX2NvbHVtbnMubmV4dCh0aGlzLmRpc3BsYXlDb2x1bW5zKTtcbiAgICB0aGlzLnNhdmVDb2x1bW5zU3RhdGUoKTtcbiAgfVxuXG4gIHJlb3JkZXJDb2x1bW4oY29sdW1uOiBUYWJsZUNvbHVtbiwgaW5zZXJ0QmVmb3JlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9kcmFnU291cmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IENvbHVtblJlb3JkZXJFdmVudCh0aGlzLl9kcmFnU291cmNlLCBjb2x1bW4pO1xuICAgIGlmIChldmVudC5zb3VyY2UgIT09IGV2ZW50LnRhcmdldCkge1xuICAgICAgY29uc3Qgc291cmNlUGFyZW50ID0gdGhpcy5maW5kUGFyZW50KGV2ZW50LnNvdXJjZSwgdGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgICBjb25zdCB0YXJnZXRQYXJlbnQgPSB0aGlzLmZpbmRQYXJlbnQoZXZlbnQudGFyZ2V0LCB0aGlzLmRpc3BsYXlDb2x1bW5zKTtcblxuICAgICAgaWYgKHNvdXJjZVBhcmVudCAmJiB0YXJnZXRQYXJlbnQpIHtcbiAgICAgICAgY29uc3Qgc291cmNlSW5kZXggPSBzb3VyY2VQYXJlbnQuaW5kZXhPZihldmVudC5zb3VyY2UpO1xuICAgICAgICBzb3VyY2VQYXJlbnQuc3BsaWNlKHNvdXJjZUluZGV4LCAxKTtcbiAgICAgICAgbGV0IHRhcmdldEluZGV4ID0gdGFyZ2V0UGFyZW50LmluZGV4T2YoZXZlbnQudGFyZ2V0KTtcbiAgICAgICAgaWYgKCFpbnNlcnRCZWZvcmUpIHtcbiAgICAgICAgICB0YXJnZXRJbmRleCA9IHRhcmdldEluZGV4ICsgMTtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXRQYXJlbnQuc3BsaWNlKHRhcmdldEluZGV4LCAwLCBldmVudC5zb3VyY2UpO1xuICAgICAgICBldmVudC5zb3VyY2UubG9ja2VkID0gZXZlbnQudGFyZ2V0LmxvY2tlZDtcblxuICAgICAgICB0aGlzLnVwZGF0ZUNvbHVtbnModGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0Q29sdW1uUGFyZW50KGNvbHVtbjogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgdGhpcy5kaXNwbGF5Q29sdW1ucyk7XG4gIH1cblxuICBzdGFydEVkaXRSb3coY2VsbEV2ZW50OiBJQ2VsbEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbD8ucm93ICE9PSBjZWxsRXZlbnQ/LnJvdykge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRSb3dTdG9wLm5leHQodGhpcy5fY3VycmVudEVkaXRDZWxsKTtcbiAgICAgIH1cbiAgICAgIGlmIChjZWxsRXZlbnQgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5fZWRpdFJvd1N0YXJ0Lm5leHQoY2VsbEV2ZW50KTtcbiAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGJvb2xPckZ1bmNDYWxsYmFjazxUPih0aGlzLnJvd0VkaXRhYmxlKShcbiAgICAgICAgICAgIHRoaXMuZ2V0Um93QnlJbmRleChjZWxsRXZlbnQ/LnJvdyk/LmRhdGFcbiAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuX2VkaXRSb3dTdGFydC5uZXh0KGNlbGxFdmVudCk7XG4gICAgICAgICAgdGhpcy5fY3VycmVudEVkaXRDZWxsID0gY2VsbEV2ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhcnRFZGl0Q2VsbChjZWxsRXZlbnQ6IElDZWxsRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9jdXJyZW50RWRpdENlbGw/LmNvbHVtbiAhPT0gY2VsbEV2ZW50Py5jb2x1bW4gfHxcbiAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbD8ucm93ICE9PSBjZWxsRXZlbnQ/LnJvd1xuICAgICkge1xuICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2VkaXRDZWxsU3RvcC5uZXh0KHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCk7XG4gICAgICB9XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShjZWxsRXZlbnQ/LmNvbHVtbik7XG4gICAgICBpZiAoXG4gICAgICAgIGJvb2xPckZ1bmNDYWxsYmFjazxUPih0aGlzLnJvd0VkaXRhYmxlKShcbiAgICAgICAgICB0aGlzLmdldFJvd0J5SW5kZXgoY2VsbEV2ZW50Py5yb3cpPy5kYXRhXG4gICAgICAgIClcbiAgICAgICAgJiZcbiAgICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPElDb2x1bW5Sb3c8VD4+KGNvbHVtbj8uZWRpdGFibGUpKHtcbiAgICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChjZWxsRXZlbnQ/LnJvdyk/LmRhdGEsXG4gICAgICAgICAgY29sdW1uOiBjb2x1bW4sXG4gICAgICAgIH0pXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5fZWRpdENlbGxTdGFydC5uZXh0KGNlbGxFdmVudCk7XG4gICAgICAgIHRoaXMuX2N1cnJlbnRFZGl0Q2VsbCA9IGNlbGxFdmVudDtcbiAgICAgICAgY29uc3Qga2V5ID0gKGNlbGxFdmVudD8uZXZlbnQgYXMgS2V5Ym9hcmRFdmVudCk/LmtleTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGtleSAmJlxuICAgICAgICAgIChrZXkubGVuZ3RoID09PSAxIHx8IChrZXkgPT09ICdEZWxldGUnICYmICFjb2x1bW4ucmVxdWlyZWQpKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmNsZWFyVmFsdWUoY2VsbEV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEFjdGl2ZVJvdyhyb3c6IFQpOiB2b2lkIHtcbiAgICB0aGlzLl9hY3RpdmVSb3cubmV4dChyb3cpO1xuICB9XG5cbiAgc2VsZWN0Um93cyhyb3dzOiBUW10pOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChyb3dzKTtcbiAgfVxuXG4gIHNlbGVjdE9yRGVzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5pbmRleE9mKHJvdykgPj0gMCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLm5leHQodGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmZpbHRlcihfID0+IF8gIT09IHJvdykpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dChbLi4udGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLCByb3ddKTtcbiAgICB9XG4gIH1cblxuICBzZWxlY3RSYW5nZShyb3c6IFQpOiB2b2lkIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleChfID0+IF8uZGF0YSA9PT0gcm93KTtcbiAgICBsZXQgbWluSW5kZXggPSB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XG4gICAgICBjb25zdCBuZXdJbmRleCA9IHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmZpbmRJbmRleChfID0+IF8uZGF0YSA9PT0gY3Vycik7XG4gICAgICBpZiAobmV3SW5kZXggPCBwcmV2KSB7XG4gICAgICAgIHJldHVybiBuZXdJbmRleDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmxlbmd0aCk7XG4gICAgbGV0IG1heEluZGV4ID0gdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5maW5kSW5kZXgoXyA9PiBfLmRhdGEgPT09IGN1cnIpO1xuICAgICAgaWYgKG5ld0luZGV4ID4gcHJldikge1xuICAgICAgICByZXR1cm4gbmV3SW5kZXg7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCAwKTtcbiAgICBpZiAoaW5kZXggPiBtYXhJbmRleCkge1xuICAgICAgbWF4SW5kZXggPSBpbmRleDtcbiAgICB9XG4gICAgaWYgKGluZGV4IDwgbWluSW5kZXgpIHtcbiAgICAgIG1pbkluZGV4ID0gaW5kZXg7XG4gICAgfVxuICAgIGlmIChtaW5JbmRleCA8IGluZGV4ICYmIGluZGV4IDwgbWF4SW5kZXgpIHtcbiAgICAgIG1heEluZGV4ID0gaW5kZXg7XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFtcbiAgICAgIC4uLnRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLnNsaWNlKG1pbkluZGV4LCBtYXhJbmRleCArIDEpLm1hcChfID0+IF8uZGF0YSksXG4gICAgXSk7XG4gIH1cblxuICBzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0VHlwZSA9PT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFsuLi50aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUsIHJvd10pO1xuICB9XG5cbiAgZGVzZWxlY3RSb3cocm93OiBUKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0VHlwZSA9PT0gU2VsZWN0VHlwZS5ub25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KHRoaXMuX3NlbGVjdGVkUm93cy52YWx1ZS5maWx0ZXIoXyA9PiBfICE9PSByb3cpKTtcbiAgfVxuXG4gIHNlbGVjdEFsbCgpIHtcbiAgICB0aGlzLl9zZWxlY3RlZFJvd3MubmV4dCh0aGlzLl9kaXNwbGF5RGF0YS52YWx1ZS5tYXAoXyA9PiBfLmRhdGEpKTtcbiAgfVxuXG4gIGRlc2VsZWN0QWxsKCkge1xuICAgIHRoaXMuX3NlbGVjdGVkUm93cy5uZXh0KFtdKTtcbiAgfVxuXG4gIGFsbFJvd3NTZWxlY3RlZCgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fZGlzcGxheURhdGEudmFsdWU/Lmxlbmd0aCAmJlxuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlPy5sZW5ndGggJiZcbiAgICAgIHRoaXMuX2Rpc3BsYXlEYXRhLnZhbHVlLmV2ZXJ5KFxuICAgICAgICBfID0+XG4gICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmZpbmRJbmRleChzZWxlY3RlZCA9PiBzZWxlY3RlZCA9PT0gXy5kYXRhKSA+PVxuICAgICAgICAgIDBcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0aGlzLl9zZWxlY3RlZFJvd3MudmFsdWUgPT0gbnVsbCB8fFxuICAgICAgdGhpcy5fc2VsZWN0ZWRSb3dzLnZhbHVlLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHNldEhpZGRlbkNvbHVtbnModmFsdWU6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5zYXZlSGlkZGVuQ29sdW1ucyh2YWx1ZSk7XG4gICAgdGhpcy5faGlkZGVuQ29sdW1ucy5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIGNvbHVtbklzSGlkZGVuKGNvbHVtbjogVGFibGVDb2x1bW4pIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZGVuQ29sdW1ucy52YWx1ZS5pbmRleE9mKGNvbHVtbi5uYW1lKSA+PSAwO1xuICB9XG5cbiAgY2hhbmdlVmFsdWUoY29vcmRpbmF0ZXM6IElDZWxsQ29vcmRpbmF0ZXMpOiB2b2lkIHtcbiAgICB0aGlzLl92YWx1ZUNoYW5nZWQubmV4dChjb29yZGluYXRlcyk7XG4gIH1cblxuICBzZXRWYWx1ZShjZWxsVmFsdWU6IElDZWxsVmFsdWUpOiB2b2lkO1xuICBzZXRWYWx1ZShjZWxsVmFsdWU6IElDZWxsSW5zdGFuY2VWYWx1ZTxUPik6IHZvaWQ7XG4gIHNldFZhbHVlKGNlbGxWYWx1ZTogSUNlbGxWYWx1ZSB8IElDZWxsSW5zdGFuY2VWYWx1ZTxUPik6IHZvaWQge1xuICAgIGxldCB2YWx1ZTogSUNlbGxWYWx1ZTtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgY2VsbFZhbHVlLnJvdyA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBjZWxsVmFsdWUuY29sdW1uID09PSAnb2JqZWN0J1xuICAgICkge1xuICAgICAgdmFsdWUgPSB7XG4gICAgICAgIHJvdzogdGhpcy5nZXRSb3dJbmRleChjZWxsVmFsdWUucm93LmRhdGEpLFxuICAgICAgICBjb2x1bW46IGNlbGxWYWx1ZS5jb2x1bW4ubmFtZSxcbiAgICAgICAgdmFsdWU6IGNlbGxWYWx1ZS52YWx1ZSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gY2VsbFZhbHVlIGFzIElDZWxsVmFsdWU7XG4gICAgfVxuICAgIHRoaXMuX3ZhbHVlU2V0Lm5leHQodmFsdWUpO1xuICB9XG5cbiAgZ2V0Um93QnlJbmRleChyb3dJbmRleD86IG51bWJlcik6IFRhYmxlUm93PFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAocm93SW5kZXggIT09IG51bGwgJiYgcm93SW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEYXRhPy52YWx1ZVtyb3dJbmRleF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRSb3dJbmRleChyb3c6IFQpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzcGxheURhdGEudmFsdWUuZmluZEluZGV4KF8gPT4gXy5kYXRhID09PSByb3cpO1xuICB9XG5cbiAgZ2V0RXZlbnRDZWxsKGV2ZW50OiBFdmVudCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGV2ZW50LmNvbXBvc2VkUGF0aCgpLmZpbmQoKHRhcmdldDogYW55KSA9PiB7XG4gICAgICByZXR1cm4gdGFyZ2V0LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCkgPT09ICd0ZXRhLWNlbGwnO1xuICAgIH0pIGFzIEhUTUxFbGVtZW50O1xuICB9XG5cbiAgZ2V0RXZlbnRSb3coZXZlbnQ6IEV2ZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gZXZlbnQuY29tcG9zZWRQYXRoKCkuZmluZCgodGFyZ2V0OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB0YXJnZXQ/LmdldEF0dHJpYnV0ZSAmJiB0YXJnZXQ/LmdldEF0dHJpYnV0ZSgnZGF0YS1yb3cnKTtcbiAgICB9KSBhcyBIVE1MRWxlbWVudDtcbiAgfVxuXG4gIGdldE5leHRFZGl0YWJsZUNlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IG5leHRDZWxsID0gdGhpcy5nZXROZXh0Q2VsbChjb29yZHMpO1xuICAgIGlmICghbmV4dENlbGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbkJ5TmFtZShuZXh0Q2VsbD8uY29sdW1uKTtcbiAgICBpZiAoXG4gICAgICBib29sT3JGdW5jQ2FsbGJhY2s8SUNlbGxJbnN0YW5jZTxUPj4oY29sdW1uLmVkaXRhYmxlKSh7XG4gICAgICAgIHJvdzogdGhpcy5nZXRSb3dCeUluZGV4KG5leHRDZWxsLnJvdyksXG4gICAgICAgIGNvbHVtbixcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICByZXR1cm4gbmV4dENlbGw7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldE5leHRFZGl0YWJsZUNlbGwobmV4dENlbGwpO1xuICB9XG5cbiAgZ2V0UHJldmlvdXNFZGl0YWJsZUNlbGwoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxDb29yZGluYXRlcyB8IG51bGwge1xuICAgIGNvbnN0IHByZXZDZWxsID0gdGhpcy5nZXRQcmV2aW91c0NlbGwoY29vcmRzKTtcbiAgICBpZiAoIXByZXZDZWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW5CeU5hbWUocHJldkNlbGw/LmNvbHVtbik7XG4gICAgaWYgKFxuICAgICAgYm9vbE9yRnVuY0NhbGxiYWNrPElDZWxsSW5zdGFuY2U8VD4+KGNvbHVtbi5lZGl0YWJsZSkoe1xuICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChwcmV2Q2VsbC5yb3cpLFxuICAgICAgICBjb2x1bW4sXG4gICAgICB9KVxuICAgICkge1xuICAgICAgcmV0dXJuIHByZXZDZWxsO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5nZXRQcmV2aW91c0VkaXRhYmxlQ2VsbChwcmV2Q2VsbCk7XG4gIH1cblxuICBnZXROZXh0Q2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbCB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0RmxhdENvbHVtbnMoKTtcbiAgICBsZXQgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2w6IFRhYmxlQ29sdW1uKSA9PiBjb2wubmFtZSA9PT0gY29vcmRzPy5jb2x1bW5cbiAgICApO1xuICAgIGxldCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID49IDApIHtcbiAgICAgIGlmIChjb2xJbmRleCA9PT0gY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNvbEluZGV4ID0gMDtcbiAgICAgICAgcm93SW5kZXggPSByb3dJbmRleCArIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xJbmRleCA9IGNvbEluZGV4ICsgMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbjogY29sdW1uc1tjb2xJbmRleF0/Lm5hbWUsXG4gICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzQ2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpOiBJQ2VsbENvb3JkaW5hdGVzIHwgbnVsbCB7XG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuZ2V0RmxhdENvbHVtbnMoKTtcbiAgICBsZXQgY29sSW5kZXggPSBjb2x1bW5zLmZpbmRJbmRleChcbiAgICAgIChjb2w6IFRhYmxlQ29sdW1uKSA9PiBjb2wubmFtZSA9PT0gY29vcmRzPy5jb2x1bW5cbiAgICApO1xuICAgIGxldCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID49IDApIHtcbiAgICAgIGlmIChjb2xJbmRleCA9PT0gMCkge1xuICAgICAgICBjb2xJbmRleCA9IGNvbHVtbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgcm93SW5kZXggPSByb3dJbmRleCAtIDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2xJbmRleCA9IGNvbEluZGV4IC0gMTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbHVtbjogY29sdW1uc1tjb2xJbmRleF0/Lm5hbWUsXG4gICAgICAgIHJvdzogcm93SW5kZXgsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldE5leHRSb3dDZWxsKGNvb3JkczogSUNlbGxDb29yZGluYXRlcyk6IElDZWxsQ29vcmRpbmF0ZXMgfCBudWxsIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGNvbnN0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAoY29sOiBUYWJsZUNvbHVtbikgPT4gY29sLm5hbWUgPT09IGNvb3Jkcz8uY29sdW1uXG4gICAgKTtcbiAgICBjb25zdCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChcbiAgICAgIGNvbEluZGV4ID49IDAgJiZcbiAgICAgIHJvd0luZGV4ID49IDAgJiZcbiAgICAgIHJvd0luZGV4IDwgdGhpcy5fZGlzcGxheURhdGEudmFsdWUubGVuZ3RoIC0gMVxuICAgICkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCArIDEsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFByZXZpb3VzUm93Q2VsbChjb29yZHM6IElDZWxsQ29vcmRpbmF0ZXMpIHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy5nZXRGbGF0Q29sdW1ucygpO1xuICAgIGNvbnN0IGNvbEluZGV4ID0gY29sdW1ucy5maW5kSW5kZXgoXG4gICAgICAoY29sOiBUYWJsZUNvbHVtbikgPT4gY29sLm5hbWUgPT09IGNvb3Jkcz8uY29sdW1uXG4gICAgKTtcbiAgICBjb25zdCByb3dJbmRleCA9IGNvb3Jkcz8ucm93O1xuICAgIGlmIChjb2xJbmRleCA+PSAwICYmIHJvd0luZGV4ID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29sdW1uOiBjb2x1bW5zW2NvbEluZGV4XT8ubmFtZSxcbiAgICAgICAgcm93OiByb3dJbmRleCAtIDEsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldENvbHVtbkJ5TmFtZShjb2x1bW5OYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gQXJyYXlVdGlsLmZpbmRSZWN1cnNpdmUoXG4gICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zLFxuICAgICAgaXRlcmFibGVOb2RlID0+IGNvbHVtbk5hbWUgPT09IGl0ZXJhYmxlTm9kZS5uYW1lLFxuICAgICAgJ2NvbHVtbnMnXG4gICAgKTtcbiAgfVxuXG4gIHNjcm9sbFRvSW5kZXgoaW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuX3Njcm9sbEluZGV4Lm5leHQobnVsbCk7XG4gICAgdGhpcy5fc2Nyb2xsSW5kZXgubmV4dChpbmRleCk7XG4gIH1cblxuICBnZXRWaXNpYmxlQ29sdW1ucygpIHtcbiAgICBjb25zdCB2aXNpYmxlID0gQXJyYXlVdGlsLmZsYXR0ZW4oXG4gICAgICB0aGlzLl9jb2x1bW5zLnZhbHVlLFxuICAgICAgJ2NvbHVtbnMnLFxuICAgICAgdHJ1ZVxuICAgICkuZmlsdGVyKF8gPT4gdGhpcy5faGlkZGVuQ29sdW1ucy52YWx1ZS5pbmRleE9mKF8ubmFtZSkgPCAwKTtcbiAgICByZXR1cm4gdmlzaWJsZS5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKSk7XG4gIH1cblxuICBnZXRDZWxsSW5zdGFuY2UoY29vcmRzOiBJQ2VsbENvb3JkaW5hdGVzKTogSUNlbGxJbnN0YW5jZTxUPiB8IG51bGwge1xuICAgIHJldHVybiBjb29yZHNcbiAgICAgID8ge1xuICAgICAgICByb3c6IHRoaXMuZ2V0Um93QnlJbmRleChjb29yZHMucm93KSxcbiAgICAgICAgY29sdW1uOiB0aGlzLmdldENvbHVtbkJ5TmFtZShjb29yZHMuY29sdW1uKSxcbiAgICAgIH1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmxhdENvbHVtbnMoKSB7XG4gICAgcmV0dXJuIEFycmF5VXRpbC5mbGF0dGVuKHRoaXMuZGlzcGxheUNvbHVtbnMsICdjb2x1bW5zJywgdHJ1ZSkuc29ydChcbiAgICAgIChhLCBiKSA9PiBOdW1iZXIoYi5sb2NrZWQpIC0gTnVtYmVyKGEubG9ja2VkKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRQYXJlbnQoXG4gICAgY29sdW1uOiBUYWJsZUNvbHVtbixcbiAgICBjb2x1bW5zOiBUYWJsZUNvbHVtbltdXG4gICk6IFRhYmxlQ29sdW1uW10gfCBudWxsIHtcbiAgICBjb25zdCBmb3VuZCA9IGNvbHVtbnMuZmluZCh4ID0+IHgubmFtZSA9PT0gY29sdW1uLm5hbWUpO1xuICAgIGlmIChmb3VuZCAhPT0gbnVsbCAmJiBmb3VuZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gY29sdW1uc1tpXTtcbiAgICAgIGlmIChjb2wuY29sdW1ucyAmJiBjb2wuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kUGFyZW50KGNvbHVtbiwgY29sLmNvbHVtbnMpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZmluZFBhcmVudENvbHVtbihcbiAgICBjb2x1bW46IFRhYmxlQ29sdW1uLFxuICAgIGNvbHVtbnM6IFRhYmxlQ29sdW1uW11cbiAgKTogVGFibGVDb2x1bW4gfCBudWxsIHtcbiAgICBjb25zdCBmb3VuZCA9IGNvbHVtbnMuZmluZCh4ID0+IHguY29sdW1ucy5pbmRleE9mKGNvbHVtbikgPj0gMCk7XG4gICAgaWYgKGZvdW5kICE9PSBudWxsICYmIGZvdW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjb2x1bW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3QgY29sID0gY29sdW1uc1tpXTtcbiAgICAgIGlmIChjb2wuY29sdW1ucyAmJiBjb2wuY29sdW1ucy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5maW5kUGFyZW50Q29sdW1uKGNvbHVtbiwgY29sLmNvbHVtbnMpO1xuICAgICAgICBpZiAocmVzdWx0ICE9PSBudWxsICYmIHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGdldFRhYmxlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmNsb3Nlc3QoJ3RldGEtdGFibGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Q29sdW1uQXV0b1dpZHRoKGNvbHVtbjogVGFibGVDb2x1bW4sIHRhYmxlOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IGNlbGxzID0gdGFibGUucXVlcnlTZWxlY3RvckFsbChcbiAgICAgIGB0ZXRhLWNlbGxbZGF0YS1jb2x1bW49XCIke2NvbHVtbi5uYW1lfVwiXSAuY2VsbC10ZXh0YFxuICAgICk7XG4gICAgbGV0IG1heFdpZHRoID0gMDtcbiAgICBjZWxscy5mb3JFYWNoKGNlbGwgPT4ge1xuICAgICAgaWYgKGNlbGwuc2Nyb2xsV2lkdGggPiBtYXhXaWR0aCkge1xuICAgICAgICBtYXhXaWR0aCA9IGNlbGwuc2Nyb2xsV2lkdGg7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgYWdnQ2VsbHMgPSB0YWJsZS5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgYC5hZ2dyZWdhdGUtY2VsbFtkYXRhLWNvbHVtbj1cIiR7Y29sdW1uLm5hbWV9XCJdIC5jZWxsLXRleHRgXG4gICAgKTtcbiAgICBhZ2dDZWxscz8uZm9yRWFjaChjZWxsID0+IHtcbiAgICAgIGlmIChjZWxsLnNjcm9sbFdpZHRoID4gbWF4V2lkdGgpIHtcbiAgICAgICAgbWF4V2lkdGggPSBjZWxsLnNjcm9sbFdpZHRoO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbHVtbi5mbGV4ID0gMDtcbiAgICBjb2x1bW4ud2lkdGggPSBtYXhXaWR0aCArIDIwO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhclZhbHVlKGV2ZW50OiBJQ2VsbEV2ZW50KSB7XG4gICAgdGhpcy5zZXRWYWx1ZSh7XG4gICAgICAuLi5ldmVudCxcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -7594,7 +7594,7 @@ class TableService {
|
|
|
7594
7594
|
this._currentEditCell = cellEvent;
|
|
7595
7595
|
}
|
|
7596
7596
|
else {
|
|
7597
|
-
if (boolOrFuncCallback(
|
|
7597
|
+
if (boolOrFuncCallback(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)) {
|
|
7598
7598
|
this._editRowStart.next(cellEvent);
|
|
7599
7599
|
this._currentEditCell = cellEvent;
|
|
7600
7600
|
}
|
|
@@ -7608,10 +7608,12 @@ class TableService {
|
|
|
7608
7608
|
this._editCellStop.next(this._currentEditCell);
|
|
7609
7609
|
}
|
|
7610
7610
|
const column = this.getColumnByName(cellEvent?.column);
|
|
7611
|
-
if (boolOrFuncCallback(
|
|
7612
|
-
|
|
7613
|
-
|
|
7614
|
-
|
|
7611
|
+
if (boolOrFuncCallback(this.rowEditable)(this.getRowByIndex(cellEvent?.row)?.data)
|
|
7612
|
+
&&
|
|
7613
|
+
boolOrFuncCallback(column?.editable)({
|
|
7614
|
+
row: this.getRowByIndex(cellEvent?.row)?.data,
|
|
7615
|
+
column: column,
|
|
7616
|
+
})) {
|
|
7615
7617
|
this._editCellStart.next(cellEvent);
|
|
7616
7618
|
this._currentEditCell = cellEvent;
|
|
7617
7619
|
const key = cellEvent?.event?.key;
|