fixa-admin 0.0.41 → 0.0.42

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.
@@ -348,7 +348,7 @@ export class GridComponent {
348
348
  }
349
349
  }
350
350
  cellDoubleClicked(e) {
351
- this.onClicked.emit(e.data);
351
+ this.onClicked.emit({ ...e.data, colId: e.column.getColId() });
352
352
  }
353
353
  handleClick(item) {
354
354
  this.onToolbar.emit(item);
@@ -589,4 +589,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
589
589
  }], column: [{
590
590
  type: Input
591
591
  }] } });
592
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBeUUsY0FBYyxFQUErRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9NLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFpQmhELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFlBQ1ksVUFBNEI7UUFBNUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFNakMsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUV4QyxlQUFVLEdBQVcsaUJBQWlCLENBQUM7UUFDdkMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUF3RyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUNoSix1QkFBa0IsR0FBVztZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxHQUFHO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixrQkFBa0IsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLElB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YmxlQ2xpY2tlZEV2ZW50LCBDb2xEZWYsIEdyaWRBcGksIEdyaWRPcHRpb25zLCBJRGF0ZUZpbHRlclBhcmFtcywgSVJvd05vZGUsIElTZXJ2ZXJTaWRlRGF0YXNvdXJjZSwgSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zLCBSb3dNb2RlbFR5cGUsIFNldEZpbHRlclZhbHVlc0Z1bmNQYXJhbXMsIFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRHcmlkU3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25JdGVtcywgQ29sdW1uSXRlbXMsIERhdGFzb3VyY2VPdXRwdXRNb2RlbCwgRmlsdGVyR3JpZEl0ZW1zTW9kZWwsIEZpbHRlck9wZXJhdG9yLCBHcmlkQWN0aW9uT3V0cHV0LCBHcmlkSW5wdXRNb2RlbCwgR3JpZFJlcXVlc3RQYXJhbSwgU29ydE1vZGVsLCBUb29sYmFySXRlbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2hhcmVkLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9pbmRleC5hcGknO1xuaW1wb3J0IHsgSkRhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERhdGVGaWx0ZXIgfSBmcm9tICcuL2ZpbHRlci9pbmRleC5hcGknO1xuZXhwb3J0IGludGVyZmFjZSBJT2x5bXBpY0RhdGEge1xuICAgIGF0aGxldGU6IHN0cmluZyxcbiAgICBhZ2U6IG51bWJlcixcbiAgICBjb3VudHJ5OiBzdHJpbmcsXG4gICAgeWVhcjogbnVtYmVyLFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBzcG9ydDogc3RyaW5nLFxuICAgIGdvbGQ6IG51bWJlcixcbiAgICBzaWx2ZXI6IG51bWJlcixcbiAgICBicm9uemU6IG51bWJlcixcbiAgICB0b3RhbDogbnVtYmVyXG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5kYXRhc291cmNlID0gdGhpcy5jcmVhdGVTZXJ2ZXJTaWRlRGF0YXNvdXJjZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIGdyaWRBcGkhOiBHcmlkQXBpO1xuICAgIHB1YmxpYyBpc1NlcnZlclNpZGVHcm91cDtcbiAgICBwdWJsaWMgZ2V0U2VydmVyU2lkZUdyb3VwS2V5ID0gbnVsbDtcbiAgICBwdWJsaWMgZ3JvdXBEZWZhdWx0RXhwYW5kZWQgPSAtMTtcbiAgICBwcml2YXRlIF90cmVlR3JvdXBDb2x1bW46IHN0cmluZyA9IG51bGw7XG4gICAgZGF0YXNvdXJjZTogSVNlcnZlclNpZGVEYXRhc291cmNlO1xuICAgIHRoZW1lQ2xhc3M6IHN0cmluZyA9IFwiYWctdGhlbWUtcXVhcnR6XCI7XG4gICAgY29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcbiAgICBfY29sdW1uOiBDb2x1bW5JdGVtc1tdID0gW107XG4gICAgX2F1dG9Db2x1bW5TaXplOiBTaXplQ29sdW1uc1RvRml0R3JpZFN0cmF0ZWd5IHwgU2l6ZUNvbHVtbnNUb0ZpdFByb3ZpZGVkV2lkdGhTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3kgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgYXV0b0dyb3VwQ29sdW1uRGVmOiBDb2xEZWYgPSB7XG4gICAgICAgIGhlYWRlck5hbWU6IFwiXCIsXG4gICAgICAgIG1pbldpZHRoOiAyNTAsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgICAgICBzdXBwcmVzc0NvdW50OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XG4gICAgICAgIGZsZXg6IDEsXG4gICAgICAgIG1pbldpZHRoOiAxNTAsXG4gICAgICAgIGZpbHRlcjogJ2FnVGV4dENvbHVtbkZpbHRlcicsXG4gICAgICAgIHN1cHByZXNzSGVhZGVyTWVudUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgc3VwcHJlc3NIZWFkZXJDb250ZXh0TWVudTogdHJ1ZSxcbiAgICAgICAgc3VwcHJlc3NTaXplVG9GaXQ6IHRydWVcbiAgICB9O1xuXG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkFjdGlvbjogRXZlbnRFbWl0dGVyPEdyaWRBY3Rpb25PdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25Ub29sYmFyOiBFdmVudEVtaXR0ZXI8VG9vbGJhckl0ZW1zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcblxuICAgIEBJbnB1dCgpXG4gICAgc2VydmVyU2lkZVNvcnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXJ2ZXJTaWRlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNUb29sYmFyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcnRsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnaW5hdGlvblBhZ2VTaXplID0gMjU7XG5cbiAgICBASW5wdXQoKVxuICAgIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBudW1iZXJbXSB8IGJvb2xlYW4gPSBbMjVdO1xuXG4gICAgQElucHV0KClcbiAgICBlbmFibGVBZHZhbmNlZEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0cmVlTW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNMZWFmOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHJvd0RhdGE6IGFueSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgYXV0b0NvbHVtblNpemUoKTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db2x1bW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGF1dG9Db2x1bW5TaXplKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9Db2x1bW5TaXplID0geyB0eXBlOiAnZml0Q2VsbENvbnRlbnRzJyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYXV0b0NvbHVtblNpemUgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZHZhbmNlZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICAgIGFsdDogJ9mI24zYsdin24zYtCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICAgICAgYWx0OiAn2K3YsNmBJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbXNbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2luc2VydCcsXG4gICAgICAgICAgICBpY29uOiAncGx1cycsXG4gICAgICAgICAgICB0ZXh0OiAn2KfbjNis2KfYryDYrNiv24zYrycsXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeSdcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgY29kZTogJ3JlZnJlc2gnLFxuICAgICAgICAvLyAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICAvLyAgICAgdGV4dDogJ9io2LHZiNiy2LHYs9in2YbbjCcsXG4gICAgICAgIC8vICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgLy8gfVxuICAgIF07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHJlZUdyb3VwQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlR3JvdXBDb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJlZUdyb3VwQ29sdW1uKHY6IHN0cmluZykge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fdHJlZUdyb3VwQ29sdW1uID0gdjtcbiAgICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlR3JvdXAgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUl0ZW0ubGFzdE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmhlYWRlck5hbWUgPSB2O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBmZXRjaERhdGE6IChmaWx0ZXJHcmlkOiBHcmlkSW5wdXRNb2RlbCwgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSkgPT4gUHJvbWlzZTxEYXRhc291cmNlT3V0cHV0TW9kZWw+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGNvbHVtbih2OiBDb2x1bW5JdGVtc1tdKSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtdO1xuICAgICAgICBpZiAodiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW4gPSB2O1xuICAgICAgICAgICAgdi5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBmaWx0ZXI6IGFueSA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgIHZhciBzb3J0YWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlclBhcmFtczogSURhdGVGaWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWwudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnWUVTJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUtleTogJ2ZhbHNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdOTycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5wdXRzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlbC5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiBlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5wdXRzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnU2V0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLmZpbHRlciAhPSB1bmRlZmluZWQgJiYgIWVsLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLnNvcnRhYmxlICE9IHVuZGVmaW5lZCAmJiAhZWwuc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc29ydGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLmZpZWxkICE9IHRoaXMuX3RyZWVHcm91cENvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhZy1ib29sZWFuLWNlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlID8gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHN0cm9rZT1cImdyZWVuXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWNoZWNrXCI+PHBhdGggZD1cIk0yMCA2TDkgMTdMNCAxMlwiLz48L3N2Zz4nIDogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0cm9rZT1cInJlZFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci14XCI+PGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIiAvPjxsaW5lIHgxPVwiNlwiIHkxPVwiNlwiIHgyPVwiMThcIiB5Mj1cIjE4XCIgLz48L3N2Zz4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KHBhcmFtcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBEYXRlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogRGF0ZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAncHJpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxpbWcgY2xhc3M9XCJyb3VuZGVkLWZ1bGwgbXQtMVwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHNyYz1cIiR7cGFyYW1zLnZhbHVlfVwiLz5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZmllbGQgPSBlbC5maWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbkl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2FjdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFjdGlvbnNDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKHBhcmFtczogR3JpZEFjdGlvbk91dHB1dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25BY3Rpb24uZW1pdChwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNlbGxEb3VibGVDbGlja2VkKGU6IENlbGxEb3VibGVDbGlja2VkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrZWQuZW1pdChlLmRhdGEpO1xuICAgIH1cblxuICAgIGhhbmRsZUNsaWNrKGl0ZW06IFRvb2xiYXJJdGVtcykge1xuICAgICAgICB0aGlzLm9uVG9vbGJhci5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWZyZXNoKHB1cmdlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMucm93TW9kZWxUeXBlID09ICdzZXJ2ZXJTaWRlJykge1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hTZXJ2ZXJTaWRlKHsgcHVyZ2UgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hDZWxscygpO1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ2NvbHVtbkRlZnMnLCB0aGlzLmNvbHVtbkRlZnMpO1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ2xvYWRpbmcnLCB0cnVlKTtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hEYXRhKG51bGwsIG51bGwpLnRoZW4oZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dEYXRhID0gZGF0YS5pdGVtcztcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRBcGkuc2V0R3JpZE9wdGlvbignbG9hZGluZycsIGZhbHNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25HcmlkUmVhZHkocGFyYW1zOiBhbnkpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpID0gcGFyYW1zLmFwaTtcbiAgICAgICAgaWYgKHRoaXMucm93TW9kZWxUeXBlID09ICdjbGllbnRTaWRlJykge1xuICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEobnVsbCwgbnVsbCkudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSBkYXRhLml0ZW1zO1xuICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5mYWlsKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkdmFuY2VkRmlsdGVyKCkge1xuICAgICAgICB0aGlzLmVuYWJsZUFkdmFuY2VkRmlsdGVyID0gIXRoaXMuZW5hYmxlQWR2YW5jZWRGaWx0ZXI7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNob3dBZHZhbmNlZEZpbHRlckJ1aWxkZXIoKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdhZy1pY29uLW1heGltaXplJylbMF0gYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9LCAxMCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSb3V0ZVRvTm9kZShyb3dOb2RlOiBJUm93Tm9kZSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKCFyb3dOb2RlLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50aGlzLmdldFJvdXRlVG9Ob2RlKHJvd05vZGUucGFyZW50KSxcbiAgICAgICAgICAgIHJvd05vZGUua2V5ID8gcm93Tm9kZS5rZXkgOiByb3dOb2RlLmRhdGEuZW1wbG95ZWVOYW1lLFxuICAgICAgICBdO1xuICAgIH1cblxuICAgIHJlZnJlc2hOb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzKTtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnJlZnJlc2hTZXJ2ZXJTaWRlKHtcbiAgICAgICAgICAgIHB1cmdlOiB0cnVlLFxuICAgICAgICAgICAgcm91dGU6IHJvdXRlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNsZWFyRmlsdGVyKCkge1xuICAgICAgICB0aGlzLmdyaWRBcGkuc2V0RmlsdGVyTW9kZWwobnVsbCk7XG4gICAgICAgIHRoaXMucmVmcmVzaCgpO1xuICAgIH1cblxuICAgIHJlZnJlc2hQYXJlbnROb2RlKGlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5ncmlkQXBpLmdldFJvd05vZGUoaWQpO1xuICAgICAgICBjb25zdCByb3V0ZSA9IHRoaXMuZ2V0Um91dGVUb05vZGUoc2VsZWN0ZWRSb3dzLnBhcmVudCk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjcmVhdGVTZXJ2ZXJTaWRlRGF0YXNvdXJjZSgpOiBJU2VydmVyU2lkZURhdGFzb3VyY2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZ2V0Um93czogKHBhcmFtczogSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zKSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbHRlcjogRmlsdGVyR3JpZEl0ZW1zTW9kZWwgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlclR5cGUgPT0gJ2N1c3RvbS1kYXRlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tICYmIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDoga2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nID8gdGhpcy5fdHJlZUdyb3VwQ29sdW1uIDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLmJldHdlZW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW3BhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20sIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBrZXkgPT0gJ2FnLUdyaWQtQXV0b0NvbHVtbicgPyB0aGlzLl90cmVlR3JvdXBDb2x1bW4gOiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IudHJ1bmNHcmVhdGVyVGhhbkVxdWFsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZUZyb20sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8gJiYgcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8gIT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJyA/IHRoaXMuX3RyZWVHcm91cENvbHVtbiA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci50cnVuY0xlc3NUaGFuT3JFcXVhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRlRGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb24gPSBGaWx0ZXJPcGVyYXRvcltwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLnR5cGVdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpZ25vcmVDYXNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBmaW5kRWwgPSB0aGlzLl9jb2x1bW4uZmluZCgoZWwpID0+IGVsLmZpZWxkID09IGtleSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gdGhpcy5fdHJlZUdyb3VwQ29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0ga2V5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsLnNlYXJjaEZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0gZmluZEVsLnNlYXJjaEZpZWxkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5kRWwgJiYgZmluZEVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0aW9uID8gb3BlcmF0aW9uIDogRmlsdGVyT3BlcmF0b3IuZXF1YWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciA/IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZmlsdGVyIDogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgc29ydHM6IFNvcnRNb2RlbFtdID0gW107XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGVsKSA9PiBlbC5maWVsZCA9PSBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uY29sSWQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsLnNlYXJjaEZpZWxkICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5zb3J0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaW5kRWwuc2VhcmNoRmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgc29ydHMgPSBbe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcjogcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsWzBdLnNvcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5jb2xJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZ3JpZEZpbHRlcjogR3JpZElucHV0TW9kZWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIHRha2U6IHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCksXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgc2tpcDogcGFyYW1zLmFwaS5wYWdpbmF0aW9uR2V0Q3VycmVudFBhZ2UoKSAqIHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldFBhZ2VTaXplKCksXG4gICAgICAgICAgICAgICAgICAgIHNvcnRzXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCByZXF1ZXN0UGFyYW1zOiBHcmlkUmVxdWVzdFBhcmFtID0ge1xuICAgICAgICAgICAgICAgICAgICBwYXJlbnROb2RlOiBwYXJhbXMucGFyZW50Tm9kZS5kYXRhXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoRGF0YShncmlkRmlsdGVyLCByZXF1ZXN0UGFyYW1zKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc3VjY2Vzcyh7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3dEYXRhOiBkYXRhLml0ZW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgcm93Q291bnQ6IGRhdGEudG90YWxDb3VudCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZmFpbCgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQgeyB9XG59IiwiPCEtLSA8YnV0dG9uIChjbGljayk9XCJlbmFibGVBZHZhbmNlZEZpbHRlcj0hZW5hYmxlQWR2YW5jZWRGaWx0ZXJcIj5hZHZhbmNlZDwvYnV0dG9uPiAtLT5cbjxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXIgbWItNCBwYi00IGJvcmRlci1iIGJvcmRlci1iLXNsYXRlLTIwMFwiICpuZ0lmPVwiaXNUb29sYmFyXCI+XG4gICAgPGRpdj5cbiAgICAgICAgPGg0IGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LTJ4bFwiPnt7bGFiZWx9fTwvaDQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZ2FwLTNcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiB0b29sYmFySXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiBbbnpMb2FkaW5nXT1cIml0ZW0ubG9hZGluZyA/IGl0ZW0ubG9hZGluZyA6IGZhbHNlXCIgKGNsaWNrKT1cImhhbmRsZUNsaWNrKGl0ZW0pXCJcbiAgICAgICAgICAgIFtuelR5cGVdPVwiaXRlbS50eXBlXCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIFtuelR5cGVdPVwiaXRlbS5pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAge3tpdGVtLnRleHR9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwicmVmcmVzaCgpXCIgbnpUeXBlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJzeW5jXCI+PC9zcGFuPlxuICAgICAgICAgICAg2KjYsdmI2LLYsdiz2KfZhtuMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwiY2xlYXJGaWx0ZXIoKVwiIG56VHlwZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiY2xlYXJcIj48L3NwYW4+XG4gICAgICAgICAgICDZvtin2qnYs9in2LLbjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPCEtLSA8YnV0dG9uIG56LWJ1dHRvbiAoY2xpY2spPVwiYWR2YW5jZWRGaWx0ZXIoKVwiICpuZ0lmPVwic2hvd0FkdmFuY2VkQnV0dG9uXCIgbnpUeXBlPVwiZGVmYXVsdFwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJmaWx0ZXJcIj48L3NwYW4+XG4gICAgICAgICAgICDYrNiz2KrYrNmI24wg2b7bjNi02LHZgdiq2YdcbiAgICAgICAgPC9idXR0b24+IC0tPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48YWctZ3JpZC1hbmd1bGFyIHN0eWxlPVwid2lkdGg6IDEwMCU7XCIgW3N0eWxlXT1cIihpc1Rvb2xiYXIpID8gJ2hlaWdodDogY2FsYygxMDAlIC0gMXJlbSAtIDQ4cHgpOyc6J2hlaWdodDogMTAwJTsnXCJcbiAgICBbY29sdW1uRGVmc109XCJjb2x1bW5EZWZzXCIgW3BhZ2luYXRpb25dPVwidHJ1ZVwiIFtwYWdpbmF0aW9uUGFnZVNpemVdPVwicGFnaW5hdGlvblBhZ2VTaXplXCJcbiAgICBbcGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JdPVwicGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JcIiBbY2xhc3NdPVwidGhlbWVDbGFzc1wiIFtkZWZhdWx0Q29sRGVmXT1cImRlZmF1bHRDb2xEZWZcIlxuICAgIFtlbmFibGVBZHZhbmNlZEZpbHRlcl09XCJlbmFibGVBZHZhbmNlZEZpbHRlclwiIFtlbmFibGVSdGxdPVwicnRsXCIgW3RyZWVEYXRhXT1cInRyZWVNb2RlbFwiXG4gICAgW2F1dG9Hcm91cENvbHVtbkRlZl09XCJhdXRvR3JvdXBDb2x1bW5EZWZcIiBbaXNTZXJ2ZXJTaWRlR3JvdXBdPVwiaXNTZXJ2ZXJTaWRlR3JvdXBcIlxuICAgIFtnZXRTZXJ2ZXJTaWRlR3JvdXBLZXldPVwiZ2V0U2VydmVyU2lkZUdyb3VwS2V5XCIgW3Jvd01vZGVsVHlwZV09XCJyb3dNb2RlbFR5cGVcIiBbcm93RGF0YV09XCJyb3dEYXRhXCIgW3NlcnZlclNpZGVEYXRhc291cmNlXT1cImRhdGFzb3VyY2VcIlxuICAgIChncmlkUmVhZHkpPVwib25HcmlkUmVhZHkoJGV2ZW50KVwiIFtjYWNoZUJsb2NrU2l6ZV09XCJwYWdpbmF0aW9uUGFnZVNpemVcIiBbbWF4QmxvY2tzSW5DYWNoZV09XCIyXCJcbiAgICBbY29udGV4dF09XCJ7YWN0aW9uSXRlbXM6IGFjdGlvbkl0ZW1zfVwiIChjZWxsRG91YmxlQ2xpY2tlZCk9XCJjZWxsRG91YmxlQ2xpY2tlZCgkZXZlbnQpXCJcbiAgICBbYXV0b1NpemVTdHJhdGVneV09XCJfYXV0b0NvbHVtblNpemVcIiAjZ3JpZCAvPiJdfQ==
592
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21wb25lbnRzL2dyaWQvZ3JpZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBeUUsY0FBYyxFQUErRSxNQUFNLDJCQUEyQixDQUFDO0FBQy9NLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFpQmhELE1BQU0sT0FBTyxhQUFhO0lBQ3RCLFlBQ1ksVUFBNEI7UUFBNUIsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFNakMsMEJBQXFCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLHlCQUFvQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLHFCQUFnQixHQUFXLElBQUksQ0FBQztRQUV4QyxlQUFVLEdBQVcsaUJBQWlCLENBQUM7UUFDdkMsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQWtCLEVBQUUsQ0FBQztRQUM1QixvQkFBZSxHQUF3RyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUNoSix1QkFBa0IsR0FBVztZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLFFBQVEsRUFBRSxHQUFHO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixrQkFBa0IsRUFBRTtnQkFDaEIsYUFBYSxFQUFFLElB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O2dCQUlLLE1BQU07c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsRG91YmxlQ2xpY2tlZEV2ZW50LCBDb2xEZWYsIEdyaWRBcGksIEdyaWRPcHRpb25zLCBJRGF0ZUZpbHRlclBhcmFtcywgSVJvd05vZGUsIElTZXJ2ZXJTaWRlRGF0YXNvdXJjZSwgSVNlcnZlclNpZGVHZXRSb3dzUGFyYW1zLCBSb3dNb2RlbFR5cGUsIFNldEZpbHRlclZhbHVlc0Z1bmNQYXJhbXMsIFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRHcmlkU3RyYXRlZ3ksIFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfSBmcm9tICdAYWctZ3JpZC1jb21tdW5pdHkvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25JdGVtcywgQ29sdW1uSXRlbXMsIERhdGFzb3VyY2VPdXRwdXRNb2RlbCwgRmlsdGVyR3JpZEl0ZW1zTW9kZWwsIEZpbHRlck9wZXJhdG9yLCBHcmlkQWN0aW9uT3V0cHV0LCBHcmlkSW5wdXRNb2RlbCwgR3JpZFJlcXVlc3RQYXJhbSwgU29ydE1vZGVsLCBUb29sYmFySXRlbXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2hhcmVkLm1vZGVsJztcbmltcG9ydCB7IEFjdGlvbnNDZWxsUmVuZGVyZXIgfSBmcm9tICcuLi9pbmRleC5hcGknO1xuaW1wb3J0IHsgSkRhdGVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvZGF0ZS5waXBlJztcbmltcG9ydCB7IERhdGVGaWx0ZXIgfSBmcm9tICcuL2ZpbHRlci9pbmRleC5hcGknO1xuZXhwb3J0IGludGVyZmFjZSBJT2x5bXBpY0RhdGEge1xuICAgIGF0aGxldGU6IHN0cmluZyxcbiAgICBhZ2U6IG51bWJlcixcbiAgICBjb3VudHJ5OiBzdHJpbmcsXG4gICAgeWVhcjogbnVtYmVyLFxuICAgIGRhdGU6IHN0cmluZyxcbiAgICBzcG9ydDogc3RyaW5nLFxuICAgIGdvbGQ6IG51bWJlcixcbiAgICBzaWx2ZXI6IG51bWJlcixcbiAgICBicm9uemU6IG51bWJlcixcbiAgICB0b3RhbDogbnVtYmVyXG59XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1ncmlkJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZ3JpZC5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEdyaWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5kYXRhc291cmNlID0gdGhpcy5jcmVhdGVTZXJ2ZXJTaWRlRGF0YXNvdXJjZSgpO1xuICAgIH1cbiAgICBwcml2YXRlIGdyaWRBcGkhOiBHcmlkQXBpO1xuICAgIHB1YmxpYyBpc1NlcnZlclNpZGVHcm91cDtcbiAgICBwdWJsaWMgZ2V0U2VydmVyU2lkZUdyb3VwS2V5ID0gbnVsbDtcbiAgICBwdWJsaWMgZ3JvdXBEZWZhdWx0RXhwYW5kZWQgPSAtMTtcbiAgICBwcml2YXRlIF90cmVlR3JvdXBDb2x1bW46IHN0cmluZyA9IG51bGw7XG4gICAgZGF0YXNvdXJjZTogSVNlcnZlclNpZGVEYXRhc291cmNlO1xuICAgIHRoZW1lQ2xhc3M6IHN0cmluZyA9IFwiYWctdGhlbWUtcXVhcnR6XCI7XG4gICAgY29sdW1uRGVmczogQ29sRGVmW10gPSBbXTtcbiAgICBfY29sdW1uOiBDb2x1bW5JdGVtc1tdID0gW107XG4gICAgX2F1dG9Db2x1bW5TaXplOiBTaXplQ29sdW1uc1RvRml0R3JpZFN0cmF0ZWd5IHwgU2l6ZUNvbHVtbnNUb0ZpdFByb3ZpZGVkV2lkdGhTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9Db250ZW50U3RyYXRlZ3kgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgYXV0b0dyb3VwQ29sdW1uRGVmOiBDb2xEZWYgPSB7XG4gICAgICAgIGhlYWRlck5hbWU6IFwiXCIsXG4gICAgICAgIG1pbldpZHRoOiAyNTAsXG4gICAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICAgICAgY2VsbFJlbmRlcmVyUGFyYW1zOiB7XG4gICAgICAgICAgICBzdXBwcmVzc0NvdW50OiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBmaWx0ZXJQYXJhbXM6IHtcbiAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZWZhdWx0Q29sRGVmOiBDb2xEZWYgPSB7XG4gICAgICAgIGZsZXg6IDEsXG4gICAgICAgIG1pbldpZHRoOiAxNTAsXG4gICAgICAgIGZpbHRlcjogJ2FnVGV4dENvbHVtbkZpbHRlcicsXG4gICAgICAgIHN1cHByZXNzSGVhZGVyTWVudUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgc3VwcHJlc3NIZWFkZXJDb250ZXh0TWVudTogdHJ1ZSxcbiAgICAgICAgc3VwcHJlc3NTaXplVG9GaXQ6IHRydWVcbiAgICB9O1xuXG5cbiAgICBAT3V0cHV0KClcbiAgICBvbkFjdGlvbjogRXZlbnRFbWl0dGVyPEdyaWRBY3Rpb25PdXRwdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgb25Ub29sYmFyOiBFdmVudEVtaXR0ZXI8VG9vbGJhckl0ZW1zPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKVxuICAgIG9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBASW5wdXQoKVxuICAgIGxhYmVsOiBzdHJpbmcgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICByb3dNb2RlbFR5cGU6IFJvd01vZGVsVHlwZSA9ICdzZXJ2ZXJTaWRlJztcblxuICAgIEBJbnB1dCgpXG4gICAgc2VydmVyU2lkZVNvcnQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICBzZXJ2ZXJTaWRlRmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNUb29sYmFyOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcnRsOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcGFnaW5hdGlvblBhZ2VTaXplID0gMjU7XG5cbiAgICBASW5wdXQoKVxuICAgIHBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yOiBudW1iZXJbXSB8IGJvb2xlYW4gPSBbMjVdO1xuXG4gICAgQElucHV0KClcbiAgICBlbmFibGVBZHZhbmNlZEZpbHRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICB0cmVlTW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgaXNMZWFmOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHJvd0RhdGE6IGFueSA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgYXV0b0NvbHVtblNpemUoKTogU2l6ZUNvbHVtbnNUb0ZpdEdyaWRTdHJhdGVneSB8IFNpemVDb2x1bW5zVG9GaXRQcm92aWRlZFdpZHRoU3RyYXRlZ3kgfCBTaXplQ29sdW1uc1RvQ29udGVudFN0cmF0ZWd5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db2x1bW5TaXplO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGF1dG9Db2x1bW5TaXplKHY6IGJvb2xlYW4pIHtcbiAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgIHRoaXMuX2F1dG9Db2x1bW5TaXplID0geyB0eXBlOiAnZml0Q2VsbENvbnRlbnRzJyB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fYXV0b0NvbHVtblNpemUgPSB7IHR5cGU6ICdmaXRHcmlkV2lkdGgnIH07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHNob3dBZHZhbmNlZEJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtc1tdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZWRpdCcsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtcGVuJyxcbiAgICAgICAgICAgIGFsdDogJ9mI24zYsdin24zYtCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICBpY29uOiAnZmEtbGlnaHQgZmEtdHJhc2gnLFxuICAgICAgICAgICAgYWx0OiAn2K3YsNmBJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBJbnB1dCgpXG4gICAgdG9vbGJhckl0ZW1zOiBUb29sYmFySXRlbXNbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2luc2VydCcsXG4gICAgICAgICAgICBpY29uOiAncGx1cycsXG4gICAgICAgICAgICB0ZXh0OiAn2KfbjNis2KfYryDYrNiv24zYrycsXG4gICAgICAgICAgICB0eXBlOiAncHJpbWFyeSdcbiAgICAgICAgfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgY29kZTogJ3JlZnJlc2gnLFxuICAgICAgICAvLyAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICAvLyAgICAgdGV4dDogJ9io2LHZiNiy2LHYs9in2YbbjCcsXG4gICAgICAgIC8vICAgICB0eXBlOiAnZGVmYXVsdCdcbiAgICAgICAgLy8gfVxuICAgIF07XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHJlZUdyb3VwQ29sdW1uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50cmVlR3JvdXBDb2x1bW47XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgdHJlZUdyb3VwQ29sdW1uKHY6IHN0cmluZykge1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgdGhpcy5fdHJlZUdyb3VwQ29sdW1uID0gdjtcbiAgICAgICAgICAgIHRoaXMuaXNTZXJ2ZXJTaWRlR3JvdXAgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNMZWFmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGF0YUl0ZW0ubGFzdE5vZGUpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUl0ZW1bdl07XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhSXRlbVt2XTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5nZXRTZXJ2ZXJTaWRlR3JvdXBLZXkgPSBkYXRhSXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFJdGVtW3ZdO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMuYXV0b0dyb3VwQ29sdW1uRGVmLmhlYWRlck5hbWUgPSB2O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBmZXRjaERhdGE6IChmaWx0ZXJHcmlkOiBHcmlkSW5wdXRNb2RlbCwgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSkgPT4gUHJvbWlzZTxEYXRhc291cmNlT3V0cHV0TW9kZWw+O1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGNvbHVtbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGNvbHVtbih2OiBDb2x1bW5JdGVtc1tdKSB7XG4gICAgICAgIHRoaXMuY29sdW1uRGVmcyA9IFtdO1xuICAgICAgICBpZiAodiAhPSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLl9jb2x1bW4gPSB2O1xuICAgICAgICAgICAgdi5mb3JFYWNoKChlbCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBmaWx0ZXI6IGFueSA9ICdhZ1RleHRDb2x1bW5GaWx0ZXInO1xuICAgICAgICAgICAgICAgIHZhciBzb3J0YWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgdmFyIGZpbHRlclBhcmFtczogSURhdGVGaWx0ZXJQYXJhbXMgPSB7XG4gICAgICAgICAgICAgICAgICAgIG1heE51bUNvbmRpdGlvbnM6IDFcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZWwudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMuZmlsdGVyT3B0aW9ucyA9IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImVtcHR5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudCgnWUVTJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZTogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyT2ZJbnB1dHM6IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUtleTogJ2ZhbHNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KCdOTycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6ICgpID0+IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5wdXRzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciA9ICdhZ051bWJlckNvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlbC5maWx0ZXJJdGVtcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5S2V5OiBlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiB0aGlzLl90cmFuc2xhdGUuaW5zdGFudChlbC5maWx0ZXJJdGVtc1twcm9wZXJ0eV0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlck9mSW5wdXRzOiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcy5maWx0ZXJPcHRpb25zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZW1wdHlcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtc1xuICAgICAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnTnVtYmVyQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnU2V0Q29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSAnYWdEYXRlQ29sdW1uRmlsdGVyJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0gJ2FnVGV4dENvbHVtbkZpbHRlcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLmZpbHRlciAhPSB1bmRlZmluZWQgJiYgIWVsLmZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLnNvcnRhYmxlICE9IHVuZGVmaW5lZCAmJiAhZWwuc29ydGFibGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc29ydGFibGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGVsLmZpZWxkICE9IHRoaXMuX3RyZWVHcm91cENvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6IGZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsQ2xhc3M6ICdhZy1ib29sZWFuLWNlbGwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1zLnZhbHVlID8gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHN0cm9rZT1cImdyZWVuXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIGNsYXNzPVwiZmVhdGhlciBmZWF0aGVyLWNoZWNrXCI+PHBhdGggZD1cIk0yMCA2TDkgMTdMNCAxMlwiLz48L3N2Zz4nIDogJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHN0cm9rZT1cInJlZFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjFcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBjbGFzcz1cImZlYXRoZXIgZmVhdGhlci14XCI+PGxpbmUgeDE9XCIxOFwiIHkxPVwiNlwiIHgyPVwiNlwiIHkyPVwiMThcIiAvPjxsaW5lIHgxPVwiNlwiIHkxPVwiNlwiIHgyPVwiMThcIiB5Mj1cIjE4XCIgLz48L3N2Zz4nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3RyYW5zbGF0ZS5pbnN0YW50KHBhcmFtcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAnZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyOiBEYXRlRmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKRGF0ZVBpcGUoKS50cmFuc2Zvcm0ocGFyYW1zLnZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZWwudHlwZSAmJiBlbC50eXBlID09ICdkYXRlLXRpbWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogRGF0ZUZpbHRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3J0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0YWJsZTogZWwuZWRpdGFibGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlclBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5uZWQ6IGVsLnBpbm5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IHBhcmFtcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbXMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSkRhdGVQaXBlKCkudHJhbnNmb3JtKHBhcmFtcy52YWx1ZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVsLnR5cGUgJiYgZWwudHlwZSA9PSAncHJpY2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGVsLmZpZWxkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6IGVsLmxhYmVsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogZWwubWluV2lkdGggPyBlbC5taW5XaWR0aCA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbm5lZDogZWwucGlubmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlcjogcGFyYW1zID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFtcy52YWx1ZS50b0xvY2FsZVN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbC50eXBlICYmIGVsLnR5cGUgPT0gJ2ltYWdlJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EZWZzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBlbC5maWVsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJOYW1lOiBlbC5sYWJlbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogODAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VsbFJlbmRlcmVyOiBwYXJhbXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxpbWcgY2xhc3M9XCJyb3VuZGVkLWZ1bGwgbXQtMVwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIHNyYz1cIiR7cGFyYW1zLnZhbHVlfVwiLz5gO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGVmcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZWwuZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyTmFtZTogZWwubGFiZWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBlbC5lZGl0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJQYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlubmVkOiBlbC5waW5uZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluV2lkdGg6IGVsLm1pbldpZHRoID8gZWwubWluV2lkdGggOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvR3JvdXBDb2x1bW5EZWYuZmllbGQgPSBlbC5maWVsZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbkl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRlZnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZpbHRlcjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlck5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogMTAwLFxuICAgICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBpbm5lZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc29ydGFibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDogJ2FjdGlvbnMnLFxuICAgICAgICAgICAgICAgICAgICBjZWxsUmVuZGVyZXI6IEFjdGlvbnNDZWxsUmVuZGVyZXIsXG4gICAgICAgICAgICAgICAgICAgIGNlbGxSZW5kZXJlclBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKHBhcmFtczogR3JpZEFjdGlvbk91dHB1dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25BY3Rpb24uZW1pdChwYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNlbGxEb3VibGVDbGlja2VkKGU6IENlbGxEb3VibGVDbGlja2VkRXZlbnQpIHtcbiAgICAgICAgdGhpcy5vbkNsaWNrZWQuZW1pdCh7Li4uZS5kYXRhLGNvbElkOmUuY29sdW1uLmdldENvbElkKCl9KTtcbiAgICB9XG5cbiAgICBoYW5kbGVDbGljayhpdGVtOiBUb29sYmFySXRlbXMpIHtcbiAgICAgICAgdGhpcy5vblRvb2xiYXIuZW1pdChpdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVmcmVzaChwdXJnZSA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLnJvd01vZGVsVHlwZSA9PSAnc2VydmVyU2lkZScpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7IHB1cmdlIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJvd0RhdGEgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoQ2VsbHMoKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdjb2x1bW5EZWZzJywgdGhpcy5jb2x1bW5EZWZzKTtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zZXRHcmlkT3B0aW9uKCdsb2FkaW5nJywgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmZldGNoRGF0YShudWxsLCBudWxsKS50aGVuKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucm93RGF0YSA9IGRhdGEuaXRlbXM7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkQXBpLnNldEdyaWRPcHRpb24oJ2xvYWRpbmcnLCBmYWxzZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uR3JpZFJlYWR5KHBhcmFtczogYW55KSB7XG4gICAgICAgIHRoaXMuZ3JpZEFwaSA9IHBhcmFtcy5hcGk7XG4gICAgICAgIGlmICh0aGlzLnJvd01vZGVsVHlwZSA9PSAnY2xpZW50U2lkZScpIHtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hEYXRhKG51bGwsIG51bGwpLnRoZW4oZGF0YSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yb3dEYXRhID0gZGF0YS5pdGVtcztcbiAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICBwYXJhbXMuZmFpbCgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZHZhbmNlZEZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5lbmFibGVBZHZhbmNlZEZpbHRlciA9ICF0aGlzLmVuYWJsZUFkdmFuY2VkRmlsdGVyO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ3JpZEFwaS5zaG93QWR2YW5jZWRGaWx0ZXJCdWlsZGVyKCk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYWctaWNvbi1tYXhpbWl6ZScpWzBdIGFzIEhUTUxFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0Um91dGVUb05vZGUocm93Tm9kZTogSVJvd05vZGUpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghcm93Tm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgLi4udGhpcy5nZXRSb3V0ZVRvTm9kZShyb3dOb2RlLnBhcmVudCksXG4gICAgICAgICAgICByb3dOb2RlLmtleSA/IHJvd05vZGUua2V5IDogcm93Tm9kZS5kYXRhLmVtcGxveWVlTmFtZSxcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICByZWZyZXNoTm9kZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldFJvdXRlVG9Ob2RlKHNlbGVjdGVkUm93cyk7XG4gICAgICAgIHRoaXMuZ3JpZEFwaS5yZWZyZXNoU2VydmVyU2lkZSh7XG4gICAgICAgICAgICBwdXJnZTogdHJ1ZSxcbiAgICAgICAgICAgIHJvdXRlOiByb3V0ZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjbGVhckZpbHRlcigpIHtcbiAgICAgICAgdGhpcy5ncmlkQXBpLnNldEZpbHRlck1vZGVsKG51bGwpO1xuICAgICAgICB0aGlzLnJlZnJlc2goKTtcbiAgICB9XG5cbiAgICByZWZyZXNoUGFyZW50Tm9kZShpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuZ3JpZEFwaS5nZXRSb3dOb2RlKGlkKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldFJvdXRlVG9Ob2RlKHNlbGVjdGVkUm93cy5wYXJlbnQpO1xuICAgICAgICB0aGlzLmdyaWRBcGkucmVmcmVzaFNlcnZlclNpZGUoe1xuICAgICAgICAgICAgcHVyZ2U6IHRydWUsXG4gICAgICAgICAgICByb3V0ZTogcm91dGVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY3JlYXRlU2VydmVyU2lkZURhdGFzb3VyY2UoKTogSVNlcnZlclNpZGVEYXRhc291cmNlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdldFJvd3M6IChwYXJhbXM6IElTZXJ2ZXJTaWRlR2V0Um93c1BhcmFtcykgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXI6IEZpbHRlckdyaWRJdGVtc01vZGVsID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWwpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXJUeXBlID09ICdjdXN0b20tZGF0ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlRnJvbSAmJiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIuZmlsdGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJyA/IHRoaXMuX3RyZWVHcm91cENvbHVtbiA6IGtleSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvci5iZXR3ZWVuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFtwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tLCBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVUb11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDoga2V5ID09ICdhZy1HcmlkLUF1dG9Db2x1bW4nID8gdGhpcy5fdHJlZUdyb3VwQ29sdW1uIDoga2V5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naWM6ICdBTkQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLnRydW5jR3JlYXRlclRoYW5FcXVhbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydW5jYXRlRGF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmRhdGVGcm9tLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvICYmIHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0uZGF0ZVRvICE9IFwiXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyLmZpbHRlcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBrZXkgPT0gJ2FnLUdyaWQtQXV0b0NvbHVtbicgPyB0aGlzLl90cmVlR3JvdXBDb2x1bW4gOiBrZXksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpYzogJ0FORCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IudHJ1bmNMZXNzVGhhbk9yRXF1YWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZURhdGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5kYXRlVG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uID0gRmlsdGVyT3BlcmF0b3JbcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS50eXBlXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWdub3JlQ2FzZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluZEVsID0gdGhpcy5fY29sdW1uLmZpbmQoKGVsKSA9PiBlbC5maWVsZCA9PSBrZXkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAnYWctR3JpZC1BdXRvQ29sdW1uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX3RyZWVHcm91cENvbHVtbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGtleTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbC5zZWFyY2hGaWVsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IGZpbmRFbC5zZWFyY2hGaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluZEVsICYmIGZpbmRFbC50eXBlID09ICdlbnVtJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci5maWx0ZXJzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljOiAnQU5EJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlQ2FzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdGlvbiA/IG9wZXJhdGlvbiA6IEZpbHRlck9wZXJhdG9yLmVxdWFscyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVEYXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyYW1zLnJlcXVlc3QuZmlsdGVyTW9kZWxba2V5XS5maWx0ZXIgPyBwYXJhbXMucmVxdWVzdC5maWx0ZXJNb2RlbFtrZXldLmZpbHRlciA6IHBhcmFtcy5yZXF1ZXN0LmZpbHRlck1vZGVsW2tleV0udHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHNvcnRzOiBTb3J0TW9kZWxbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGlmIChwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWwubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmRFbCA9IHRoaXMuX2NvbHVtbi5maW5kKChlbCkgPT4gZWwuZmllbGQgPT0gcGFyYW1zLnJlcXVlc3Quc29ydE1vZGVsWzBdLmNvbElkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmRFbC5zZWFyY2hGaWVsZCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzb3J0cyA9IFt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uc29ydCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZDogZmluZEVsLnNlYXJjaEZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICB9XTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI6IHBhcmFtcy5yZXF1ZXN0LnNvcnRNb2RlbFswXS5zb3J0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBwYXJhbXMucmVxdWVzdC5zb3J0TW9kZWxbMF0uY29sSWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1dO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGdyaWRGaWx0ZXI6IEdyaWRJbnB1dE1vZGVsID0ge1xuICAgICAgICAgICAgICAgICAgICB0YWtlOiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpLFxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICAgICAgICAgIHNraXA6IHBhcmFtcy5hcGkucGFnaW5hdGlvbkdldEN1cnJlbnRQYWdlKCkgKiBwYXJhbXMuYXBpLnBhZ2luYXRpb25HZXRQYWdlU2l6ZSgpLFxuICAgICAgICAgICAgICAgICAgICBzb3J0c1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVxdWVzdFBhcmFtczogR3JpZFJlcXVlc3RQYXJhbSA9IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Tm9kZTogcGFyYW1zLnBhcmVudE5vZGUuZGF0YVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaERhdGEoZ3JpZEZpbHRlciwgcmVxdWVzdFBhcmFtcykudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAgcm93RGF0YTogZGF0YS5pdGVtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd0NvdW50OiBkYXRhLnRvdGFsQ291bnQsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmZhaWwoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHsgfVxufSIsIjwhLS0gPGJ1dHRvbiAoY2xpY2spPVwiZW5hYmxlQWR2YW5jZWRGaWx0ZXI9IWVuYWJsZUFkdmFuY2VkRmlsdGVyXCI+YWR2YW5jZWQ8L2J1dHRvbj4gLS0+XG48ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gaXRlbXMtY2VudGVyIG1iLTQgcGItNCBib3JkZXItYiBib3JkZXItYi1zbGF0ZS0yMDBcIiAqbmdJZj1cImlzVG9vbGJhclwiPlxuICAgIDxkaXY+XG4gICAgICAgIDxoNCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC0yeGxcIj57e2xhYmVsfX08L2g0PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGdhcC0zXCI+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgdG9vbGJhckl0ZW1zOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gW256TG9hZGluZ109XCJpdGVtLmxvYWRpbmcgPyBpdGVtLmxvYWRpbmcgOiBmYWxzZVwiIChjbGljayk9XCJoYW5kbGVDbGljayhpdGVtKVwiXG4gICAgICAgICAgICBbbnpUeXBlXT1cIml0ZW0udHlwZVwiPlxuICAgICAgICAgICAgPHNwYW4gbnotaWNvbiBbbnpUeXBlXT1cIml0ZW0uaWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIHt7aXRlbS50ZXh0fX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cInJlZnJlc2goKVwiIG56VHlwZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwic3luY1wiPjwvc3Bhbj5cbiAgICAgICAgICAgINio2LHZiNiy2LHYs9in2YbbjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cImNsZWFyRmlsdGVyKClcIiBuelR5cGU9XCJkZWZhdWx0XCI+XG4gICAgICAgICAgICA8c3BhbiBuei1pY29uIG56VHlwZT1cImNsZWFyXCI+PC9zcGFuPlxuICAgICAgICAgICAg2b7Yp9qp2LPYp9iy24xcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwhLS0gPGJ1dHRvbiBuei1idXR0b24gKGNsaWNrKT1cImFkdmFuY2VkRmlsdGVyKClcIiAqbmdJZj1cInNob3dBZHZhbmNlZEJ1dHRvblwiIG56VHlwZT1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxzcGFuIG56LWljb24gbnpUeXBlPVwiZmlsdGVyXCI+PC9zcGFuPlxuICAgICAgICAgICAg2KzYs9iq2KzZiNuMINm+24zYtNix2YHYqtmHXG4gICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPGFnLWdyaWQtYW5ndWxhciBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIFtzdHlsZV09XCIoaXNUb29sYmFyKSA/ICdoZWlnaHQ6IGNhbGMoMTAwJSAtIDFyZW0gLSA0OHB4KTsnOidoZWlnaHQ6IDEwMCU7J1wiXG4gICAgW2NvbHVtbkRlZnNdPVwiY29sdW1uRGVmc1wiIFtwYWdpbmF0aW9uXT1cInRydWVcIiBbcGFnaW5hdGlvblBhZ2VTaXplXT1cInBhZ2luYXRpb25QYWdlU2l6ZVwiXG4gICAgW3BhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXT1cInBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yXCIgW2NsYXNzXT1cInRoZW1lQ2xhc3NcIiBbZGVmYXVsdENvbERlZl09XCJkZWZhdWx0Q29sRGVmXCJcbiAgICBbZW5hYmxlQWR2YW5jZWRGaWx0ZXJdPVwiZW5hYmxlQWR2YW5jZWRGaWx0ZXJcIiBbZW5hYmxlUnRsXT1cInJ0bFwiIFt0cmVlRGF0YV09XCJ0cmVlTW9kZWxcIlxuICAgIFthdXRvR3JvdXBDb2x1bW5EZWZdPVwiYXV0b0dyb3VwQ29sdW1uRGVmXCIgW2lzU2VydmVyU2lkZUdyb3VwXT1cImlzU2VydmVyU2lkZUdyb3VwXCJcbiAgICBbZ2V0U2VydmVyU2lkZUdyb3VwS2V5XT1cImdldFNlcnZlclNpZGVHcm91cEtleVwiIFtyb3dNb2RlbFR5cGVdPVwicm93TW9kZWxUeXBlXCIgW3Jvd0RhdGFdPVwicm93RGF0YVwiIFtzZXJ2ZXJTaWRlRGF0YXNvdXJjZV09XCJkYXRhc291cmNlXCJcbiAgICAoZ3JpZFJlYWR5KT1cIm9uR3JpZFJlYWR5KCRldmVudClcIiBbY2FjaGVCbG9ja1NpemVdPVwicGFnaW5hdGlvblBhZ2VTaXplXCIgW21heEJsb2Nrc0luQ2FjaGVdPVwiMlwiXG4gICAgW2NvbnRleHRdPVwie2FjdGlvbkl0ZW1zOiBhY3Rpb25JdGVtc31cIiAoY2VsbERvdWJsZUNsaWNrZWQpPVwiY2VsbERvdWJsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgW2F1dG9TaXplU3RyYXRlZ3ldPVwiX2F1dG9Db2x1bW5TaXplXCIgI2dyaWQgLz4iXX0=
@@ -862,7 +862,7 @@ class GridComponent {
862
862
  }
863
863
  }
864
864
  cellDoubleClicked(e) {
865
- this.onClicked.emit(e.data);
865
+ this.onClicked.emit({ ...e.data, colId: e.column.getColId() });
866
866
  }
867
867
  handleClick(item) {
868
868
  this.onToolbar.emit(item);
@@ -1 +1 @@
1
- {"version":3,"file":"fixa-admin.mjs","sources":["../../../projects/shared/src/lib/services/shared.service.ts","../../../projects/shared/src/lib/services/dialog.service.ts","../../../projects/shared/src/lib/services/toast.service.ts","../../../projects/shared/src/lib/services/form.service.ts","../../../projects/shared/src/lib/services/confirm.service.ts","../../../projects/shared/src/lib/directive/mask.ts","../../../projects/shared/src/lib/directive/mask.directive.ts","../../../projects/shared/src/lib/components/grid/filter/date-filter.component.ts","../../../projects/shared/src/lib/models/shared.model.ts","../../../projects/shared/src/lib/pipes/date.pipe.ts","../../../projects/shared/src/lib/components/grid/grid.component.ts","../../../projects/shared/src/lib/components/grid/grid.component.html","../../../projects/shared/src/lib/components/grid/render/action-button.component.ts","../../../projects/shared/src/lib/components/grid/render/action-button.component.html","../../../projects/shared/src/lib/components/captcha/captcha.component.ts","../../../projects/shared/src/lib/components/captcha/captcha.component.html","../../../projects/shared/src/lib/components/map/map.component.ts","../../../projects/shared/src/lib/components/map/map.component.html","../../../projects/shared/src/lib/components/spinner/spinner.component.ts","../../../projects/shared/src/lib/components/spinner/spinner.component.html","../../../projects/shared/src/lib/class/popover.ts","../../../projects/shared/src/lib/popover/image-cropper/image-cropper.popover.ts","../../../projects/shared/src/lib/popover/image-cropper/image-cropper.popover.html","../../../projects/shared/src/lib/components/uploader/uploader.component.ts","../../../projects/shared/src/lib/components/uploader/uploader.component.html","../../../projects/shared/src/lib/components/upload-file/upload-file.component.ts","../../../projects/shared/src/lib/components/upload-file/upload-file.component.html","../../../projects/shared/src/lib/directive/char-input.directive.ts","../../../projects/shared/src/lib/directive/numeric-input.directive.ts","../../../projects/shared/src/lib/directive/image.directive.ts","../../../projects/shared/src/lib/guard/auth.guard.ts","../../../projects/shared/src/lib/layouts/master/master.layout.ts","../../../projects/shared/src/lib/layouts/master/master.layout.html","../../../projects/shared/src/lib/layouts/blank/blank.layout.ts","../../../projects/shared/src/lib/layouts/blank/blank.layout.html","../../../projects/shared/src/lib/shared.module.ts","../../../projects/shared/src/lib/pipes/timer.pipe.ts","../../../projects/shared/src/public-api.ts","../../../projects/shared/src/fixa-admin.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { MenuItems } from '../models/shared.model';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SharedService {\n constructor(\n @Inject('environment') environment,\n private _http: HttpClient\n ) {\n this.environment = environment;\n }\n environment: any = null;\n menuItems: MenuItems[] = [];\n\n upload(file: File): Observable<string> {\n let formData: FormData = new FormData();\n formData.append('file', file, file.name);\n return this._http.post<string>(`${this.environment.apiUrl}/file`, formData, {\n responseType: 'text' as 'json',\n });\n }\n\n getFile(url: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this._http.get(`${this.environment.apiUrl}/file/${url}`, {\n responseType: 'arraybuffer'\n }).subscribe({\n next: (value) => {\n const blob = new Blob([value], { type: 'image/jpeg' });\n const url = URL.createObjectURL(blob);\n resolve(url);\n },\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { DialogBodyModel } from '../models/shared.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n constructor(\n private _modal: NzModalService,\n ) { }\n\n open<T>(component: ComponentType<any>, body: DialogBodyModel<T>): NzModalRef {\n let size = '520px';\n let height = 'auto';\n let className = null;\n switch (body.size) {\n case 'md':\n size = '640px'\n break;\n case 'lg':\n size = '780px'\n break;\n case 'xl':\n size = '1024px'\n break;\n case 'full':\n size = '100%';\n height = '100%';\n className = 'full-screen'\n break;\n default:\n size = '520px';\n break;\n }\n const modal: NzModalRef = this._modal.create({\n nzTitle: body.title,\n nzWidth: size,\n nzClassName: body.class ? body.class + ' ' + className : className,\n nzMaskClosable: body.closable != null ? body.closable : true,\n nzStyle: body.size == 'full' ? {\n height: height,\n top: '20px'\n } : null,\n nzData: {\n ...body.data\n },\n nzOnOk: () => {\n const instance = modal.getContentComponent();\n return instance.onOk();\n },\n nzOnCancel: () => {\n const instance = modal.getContentComponent();\n return instance.onCancel();\n },\n nzFooter: body.disableFooter ? null : undefined,\n nzContent: component,\n });\n\n return modal;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n constructor(\n private _message: NzMessageService\n ) { }\n\n show(message, type: \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\") {\n this._message.create(type, message)\n }\n}","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormService {\n constructor() { }\n\n validateForm(form: FormGroup) {\n Object.values(form.controls).forEach(control => {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n }\n}","import { Injectable, Input } from '@angular/core';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmService {\n constructor(\n private _modal: NzModalService\n ) { }\n\n confirm(action: () => Promise<any>, title: string = 'آیا از انجام این عملیات اطمینان دارید؟'): Promise<void> {\n return new Promise((resolve, reject) => {\n const modalRef: NzModalRef = this._modal.confirm({\n nzTitle: title,\n nzOkText: 'تائید',\n nzOkType: 'primary',\n nzOkDanger: true,\n nzOnOk: () => {\n return action()\n .then(() => {\n resolve();\n })\n .catch((error) => {\n reject(error);\n });\n },\n nzCancelText: 'لغو',\n nzOnCancel: () => { }\n });\n })\n }\n}","\nconst _formatToRegExp = {\n '0': /[0-9]/, 'a': /[a-z]/, 'A': /[A-Z]/, 'B': /[a-zA-Z]/,\n};\n\nconst _allFormatsStr = '(' +\n Object.keys(_formatToRegExp)\n .map(key => _formatToRegExp[key].toString())\n .map(regexStr => regexStr.substr(1, regexStr.length - 2))\n .join('|')\n + ')';\n\nconst _allFormatsGlobal = getAllFormatRegexp('g');\n\n/**\n * Apply format to a value string\n *\n * Format can be constructed from next symbols:\n * - '0': /[0-9]/,\n * - 'a': /[a-z]/,\n * - 'A': /[A-Z]/,\n * - 'B': /[a-zA-Z]/\n *\n * Example: 'AAA-00BB-aaaa'\n * will accept 'COD-12Rt-efww'\n *\n * @param value Current value\n * @param format Format\n * @param goingBack Indicates if change was done by BackSpace\n * @param prevValue Pass to precisely detect formatter chars\n */\nexport function valueToFormat(value: string, format: string, goingBack = false, prevValue?: string): string {\n let maskedValue = '';\n const unmaskedValue = unmaskValue(value);\n const isLastCharFormatter = !getAllFormatRegexp().test(value[value.length - 1]);\n const isPrevLastCharFormatter = prevValue && !getAllFormatRegexp().test(prevValue[prevValue.length - 1]);\n\n let formatOffset = 0;\n for (let i = 0, maxI = Math.min(unmaskedValue.length, format.length); i < maxI; ++i) {\n const valueChar = unmaskedValue[i];\n let formatChar = format[formatOffset + i];\n let formatRegex = getFormatRegexp(formatChar);\n\n if (formatChar && !formatRegex) {\n maskedValue += formatChar;\n formatChar = format[++formatOffset + i];\n formatRegex = getFormatRegexp(formatChar);\n }\n\n if (valueChar && formatRegex) {\n if (formatRegex.test(valueChar)) {\n maskedValue += valueChar;\n } else {\n break;\n }\n }\n\n const nextFormatChar = format[formatOffset + i + 1];\n const nextFormatRegex = getFormatRegexp(nextFormatChar);\n const isLastIteration = i === maxI - 1;\n\n if (isLastIteration && nextFormatChar && !nextFormatRegex) {\n if (!isLastCharFormatter && goingBack) {\n if (prevValue && !isPrevLastCharFormatter) {\n continue;\n }\n maskedValue = maskedValue.substr(0, formatOffset + i);\n } else {\n maskedValue += nextFormatChar;\n }\n }\n }\n\n return maskedValue;\n}\n\nexport function unmaskValue(value: string): string {\n const unmaskedMathes = value.match(_allFormatsGlobal);\n return unmaskedMathes ? unmaskedMathes.join('') : '';\n}\n\nfunction getAllFormatRegexp(flags?: string) {\n return new RegExp(_allFormatsStr, flags);\n}\n\nfunction getFormatRegexp(formatChar: string): RegExp | null {\n return formatChar && _formatToRegExp[formatChar] ? _formatToRegExp[formatChar] : null;\n}","import { Directive, Injector, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { valueToFormat, unmaskValue } from './mask';\n\n@Directive({\n selector: '[appMask]',\n})\nexport class MaskDirective implements OnInit {\n\n @Input() appMask: string;\n\n private control: NgControl;\n private _lastMaskedValue = '';\n\n constructor(\n private injector: Injector,\n ) { }\n\n ngOnInit() {\n this.control = this.injector.get(NgControl);\n\n if (!this.control || !this.control.valueAccessor) {\n return;\n }\n\n const originalWriteVal = this.control.valueAccessor.writeValue.bind(this.control.valueAccessor);\n this.control.valueAccessor.writeValue = (val: any) => originalWriteVal(this._maskValue(val));\n\n const originalChange = (<any>this.control.valueAccessor)['onChange'].bind(this.control.valueAccessor);\n this.control.valueAccessor.registerOnChange((val: any) => originalChange(this._unmaskValue(val)));\n\n this._setVal(this._maskValue(this.control.value));\n }\n\n private _maskValue(val: string): string {\n if (!this.appMask || val === this._lastMaskedValue) {\n return val;\n }\n if (val == null) val = \"\";\n\n const maskedVal = this._lastMaskedValue =\n valueToFormat(\n val,\n this.appMask, this._lastMaskedValue.length > val.length,\n this._lastMaskedValue);\n\n return maskedVal;\n }\n\n private _unmaskValue(val: string): string {\n const maskedVal = this._maskValue(val);\n const unmaskedVal = unmaskValue(maskedVal);\n\n if (maskedVal !== val) {\n this._setVal(maskedVal);\n }\n\n return maskedVal ? unmaskedVal : '';\n }\n\n private _setVal(val: string) {\n if (this.control.control) {\n this.control.control.setValue(val, { emitEvent: false });\n }\n }\n\n}","import { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { IAfterGuiAttachedParams, IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport moment from 'jalali-moment';\n\n\n@Component({\n template: `\n <div class=\"p-4\">\n <nz-form-item>\n <nz-form-label>از تاریخ</nz-form-label>\n <nz-form-control>\n <input nz-input appMask=\"0000-00-00\" placeholder=\"1403-01-01\" autocomplete=\"off\" class=\"w-[250px]\" dir=\"ltr\" [(ngModel)]=\"dateFrom\" #eFilterText/>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label>تا تاریخ</nz-form-label>\n <nz-form-control>\n <input nz-input appMask=\"0000-00-00\" placeholder=\"1403-12-30\" autocomplete=\"off\" class=\"w-[250px]\" dir=\"ltr\" [(ngModel)]=\"dateTo\"/>\n </nz-form-control>\n </nz-form-item>\n <hr/>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"primary\" class=\"mt-4\" (click)=\"filter()\">فیلتر</button>\n <button nz-button nzType=\"default\" class=\"mt-4\" (click)=\"clear()\">پاکسازی</button>\n </div>\n </div>\n `,\n})\nexport class DateFilter implements IFilterAngularComp {\n @ViewChild('eFilterText') eFilterText!: ElementRef;\n params!: IFilterParams;\n dateFrom = \"\";\n dateTo = \"\";\n\n agInit(params: IFilterParams): void {\n this.params = params;\n }\n\n isFilterActive(): boolean {\n return true;\n }\n\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n let passed = true;\n const { node } = params;\n\n this.dateFrom\n .toLowerCase()\n .split(' ')\n .forEach((filterWord) => {\n const value = this.params.getValue(node);\n if (value.toString().toLowerCase().indexOf(filterWord) < 0) {\n passed = false;\n }\n });\n\n return passed;\n }\n\n getModel() {\n if (!this.isFilterActive()) {\n return null;\n }\n let dateFrom = \"\";\n let dateTo = \"\";\n if (this.dateFrom != null && this.dateFrom) {\n dateFrom = `${this.dateFrom.slice(0, 4)}/${this.dateFrom.slice(4, 6)}/${this.dateFrom.slice(6, 8)}`;\n dateFrom = moment.from(dateFrom, 'fa', 'YYYY/MM/DD').format('YYYY-MM-DD');\n }\n if (this.dateTo != null && this.dateTo) {\n dateTo = `${this.dateTo.slice(0, 4)}/${this.dateTo.slice(4, 6)}/${this.dateTo.slice(6, 8)}`;\n dateTo = moment.from(dateTo, 'fa', 'YYYY/MM/DD').format('YYYY-MM-DD');\n }\n return { dateFrom, dateTo, filterType: 'custom-date' };\n }\n\n setModel(model: any) {\n this.dateFrom = model == null || model.dateFrom == null ? null : model.dateFrom;\n this.dateTo = model == null || model.dateTo == null ? null : model.dateTo;\n }\n\n filter() {\n this.params.filterChangedCallback();\n }\n\n clear() {\n this.dateFrom = this.dateTo = \"\";\n this.filter();\n }\n\n afterGuiAttached(params?: IAfterGuiAttachedParams): void {\n if (!params?.suppressFocus) {\n // focus the input element for keyboard navigation\n this.eFilterText!.nativeElement.focus();\n }\n }\n}","import { NzButtonType } from \"ng-zorro-antd/button\";\n\nexport interface ToolbarItems {\n icon?: string;\n text: string;\n code: 'insert' | 'refresh' | string;\n class?: string;\n type?: NzButtonType;\n loading?: boolean;\n}\n\nexport interface ColumnItems {\n field: string;\n label: string;\n filter?: boolean;\n sortable?: boolean;\n editable?: boolean;\n editItems?: void;\n filterItems?: any;\n minWidth?: number;\n searchField?: string;\n pinned?: boolean | \"left\" | \"right\";\n type?: 'boolean' | 'enum' | 'string' | 'number' | 'select' | 'date' | 'date-time' | 'price' | 'image';\n}\n\nexport interface ActionItems {\n icon: string;\n code: string;\n alt: string;\n}\n\nexport interface DatasourceOutputModel {\n items: any;\n totalCount: number;\n}\n\nexport interface GridActionOutput {\n event: string;\n data: any;\n id: string;\n}\n\nexport interface DialogBodyModel<T> {\n title: string;\n size?: 'sm' | 'md' | 'xl' | 'lg' | 'full';\n data?: T;\n disableFooter?: boolean;\n closable?: boolean;\n class?: string;\n}\n\nexport interface MenuItems {\n title: string;\n path: string;\n icon?: string;\n children?: MenuItems[];\n}\n\nexport interface PolygonData {\n name: string;\n coordinates: number[][];\n color: string;\n editable: boolean;\n data?: any;\n}\n\nexport interface GridInputModel {\n take: number;\n skip: number;\n filter: {\n field: string;\n value: any;\n operator: FilterOperator;\n logic: 'AND' | 'OR';\n disable: boolean;\n truncateDate: boolean;\n ignoreCase: boolean;\n filters: FilterGridItemsModel[],\n },\n sorts: SortModel[],\n data: any;\n}\n\nexport interface SortModel {\n field: string;\n dir: 'asc' | 'desc';\n}\n\nexport interface FilterGridItemsModel {\n field: string;\n value: any;\n operator: FilterOperator;\n logic: 'AND' | 'OR';\n disable: boolean;\n truncateDate: boolean;\n ignoreCase: boolean;\n filters: FilterGridItemsModel[]\n}\n\nexport enum FilterOperator {\n equals = 'EQ',\n notEqual = 'NEQ',\n lessThan = 'LT',\n lessThanOrEqual = 'LTE',\n greaterThan = 'GT',\n greaterThanOrEqual = 'GTE',\n startsWith = 'STARTSWITH',\n endsWith = 'ENDSWITH',\n inRange = 'IN',\n contains = 'LIKE',\n notContains = 'NOTLIKE',\n truncEqual = 'TRUNC_EQ',\n truncNotEqual = 'TRUNC_NEQ',\n truncGreaterThanEqual = 'TRUNC_GTE',\n truncGreaterThan = 'TRUNC_GT',\n truncLessThanOr = 'TRUNC_LT',\n truncLessThanOrEqual = 'TRUNC_LTE',\n between = 'BETWEEN'\n}\n\nexport class SelectModel {\n items: SelectItemsModel[] = [];\n loading?: boolean = false;\n page?: number = null;\n pageSize?: number = null;\n totalCount?: number = null;\n}\n\nexport interface SelectItemsModel {\n id: any;\n title: string;\n data?: any;\n}\n\nexport interface GridRequestParam {\n parentNode: any;\n}\n\nexport interface PolygonEventEmiter {\n lat: number;\n lng: number;\n}\n\nexport interface CropperInputModel {\n file: File;\n aspectRatio: number;\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'jalali-moment';\n\n@Pipe({ name: 'jdate' })\nexport class JDatePipe implements PipeTransform {\n transform(value: string, time: boolean = false, format = 'YYYY/MM/DD'): string {\n if (value != null) {\n if (!time) {\n return moment.from(value, 'YYYY/MM/DD').locale('fa').format(format);\n } else {\n return moment.from(value, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD-HH:mm');\n }\n } else {\n return value;\n }\n }\n}","import { CellDoubleClickedEvent, ColDef, GridApi, GridOptions, IDateFilterParams, IRowNode, IServerSideDatasource, IServerSideGetRowsParams, RowModelType, SetFilterValuesFuncParams, SizeColumnsToContentStrategy, SizeColumnsToFitGridStrategy, SizeColumnsToFitProvidedWidthStrategy } from '@ag-grid-community/core';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActionItems, ColumnItems, DatasourceOutputModel, FilterGridItemsModel, FilterOperator, GridActionOutput, GridInputModel, GridRequestParam, SortModel, ToolbarItems } from '../../models/shared.model';\nimport { ActionsCellRenderer } from '../index.api';\nimport { JDatePipe } from '../../pipes/date.pipe';\nimport { DateFilter } from './filter/index.api';\nexport interface IOlympicData {\n athlete: string,\n age: number,\n country: string,\n year: number,\n date: string,\n sport: string,\n gold: number,\n silver: number,\n bronze: number,\n total: number\n}\n@Component({\n selector: 'app-grid',\n templateUrl: './grid.component.html',\n})\nexport class GridComponent implements OnInit {\n constructor(\n private _translate: TranslateService\n ) {\n this.datasource = this.createServerSideDatasource();\n }\n private gridApi!: GridApi;\n public isServerSideGroup;\n public getServerSideGroupKey = null;\n public groupDefaultExpanded = -1;\n private _treeGroupColumn: string = null;\n datasource: IServerSideDatasource;\n themeClass: string = \"ag-theme-quartz\";\n columnDefs: ColDef[] = [];\n _column: ColumnItems[] = [];\n _autoColumnSize: SizeColumnsToFitGridStrategy | SizeColumnsToFitProvidedWidthStrategy | SizeColumnsToContentStrategy = { type: 'fitGridWidth' };\n autoGroupColumnDef: ColDef = {\n headerName: \"\",\n minWidth: 250,\n sortable: false,\n cellRendererParams: {\n suppressCount: true,\n },\n filterParams: {\n maxNumConditions: 1\n }\n };\n\n defaultColDef: ColDef = {\n flex: 1,\n minWidth: 150,\n filter: 'agTextColumnFilter',\n suppressHeaderMenuButton: true,\n suppressHeaderContextMenu: true,\n suppressSizeToFit: true\n };\n\n\n @Output()\n onAction: EventEmitter<GridActionOutput> = new EventEmitter();\n\n @Output()\n onToolbar: EventEmitter<ToolbarItems> = new EventEmitter();\n\n @Output()\n onClicked: EventEmitter<any> = new EventEmitter();\n\n @Input()\n label: string = null;\n\n @Input()\n rowModelType: RowModelType = 'serverSide';\n\n @Input()\n serverSideSort: boolean = true;\n\n @Input()\n serverSideFilter: boolean = true;\n\n @Input()\n isToolbar: boolean = true;\n\n @Input()\n rtl: boolean = true;\n\n @Input()\n paginationPageSize = 25;\n\n @Input()\n paginationPageSizeSelector: number[] | boolean = [25];\n\n @Input()\n enableAdvancedFilter: boolean = false;\n\n @Input()\n treeModel: boolean = false;\n\n @Input()\n isLeaf: boolean = false;\n\n @Input()\n rowData: any = null;\n\n @Input()\n public get autoColumnSize(): SizeColumnsToFitGridStrategy | SizeColumnsToFitProvidedWidthStrategy | SizeColumnsToContentStrategy {\n return this._autoColumnSize;\n }\n public set autoColumnSize(v: boolean) {\n if (v) {\n this._autoColumnSize = { type: 'fitCellContents' };\n } else {\n this._autoColumnSize = { type: 'fitGridWidth' };\n }\n }\n\n @Input()\n showAdvancedButton: boolean = true;\n\n @Input()\n actionItems: ActionItems[] = [\n {\n code: 'edit',\n icon: 'fa-light fa-pen',\n alt: 'ویرایش'\n },\n {\n code: 'delete',\n icon: 'fa-light fa-trash',\n alt: 'حذف'\n }\n ];\n\n @Input()\n toolbarItems: ToolbarItems[] = [\n {\n code: 'insert',\n icon: 'plus',\n text: 'ایجاد جدید',\n type: 'primary'\n },\n // {\n // code: 'refresh',\n // icon: 'sync',\n // text: 'بروزرسانی',\n // type: 'default'\n // }\n ];\n\n @Input()\n public get treeGroupColumn() {\n return this.treeGroupColumn;\n }\n public set treeGroupColumn(v: string) {\n if (v) {\n this._treeGroupColumn = v;\n this.isServerSideGroup = dataItem => {\n if (this.isLeaf) {\n if (!dataItem.lastNode)\n return dataItem[v];\n else\n return false\n } else {\n return dataItem[v];\n }\n };\n this.getServerSideGroupKey = dataItem => {\n return dataItem[v];\n };\n // this.autoGroupColumnDef.headerName = v;\n }\n }\n\n @Input()\n fetchData: (filterGrid: GridInputModel, requestParams: GridRequestParam) => Promise<DatasourceOutputModel>;\n\n @Input()\n public get column() {\n return this.column;\n }\n public set column(v: ColumnItems[]) {\n this.columnDefs = [];\n if (v != null) {\n this._column = v;\n v.forEach((el) => {\n var filter: any = 'agTextColumnFilter';\n var sortable: boolean = true;\n var filterParams: IDateFilterParams = {\n maxNumConditions: 1\n };\n switch (el.type) {\n case 'boolean':\n filter = 'agNumberColumnFilter';\n filterParams.filterOptions = [\n \"empty\",\n {\n displayKey: 'true',\n displayName: this._translate.instant('YES'),\n predicate: () => true,\n numberOfInputs: 0\n },\n {\n displayKey: 'false',\n displayName: this._translate.instant('NO'),\n predicate: () => true,\n numberOfInputs: 0\n }\n ];\n break;\n case 'enum':\n filter = 'agNumberColumnFilter';\n const items = [];\n for (const property in el.filterItems) {\n items.push({\n displayKey: el.filterItems[property],\n displayName: this._translate.instant(el.filterItems[property]),\n predicate: true,\n numberOfInputs: 0\n })\n }\n filterParams.filterOptions = [\n \"empty\",\n ...items\n ];\n break;\n case 'number':\n filter = 'agNumberColumnFilter';\n break;\n case 'select':\n filter = 'agSetColumnFilter';\n break;\n case 'string':\n filter = 'agTextColumnFilter';\n break;\n case 'date':\n filter = 'agDateColumnFilter';\n break;\n default:\n filter = 'agTextColumnFilter';\n break;\n }\n if (el.filter != undefined && !el.filter) {\n filter = false;\n }\n if (el.sortable != undefined && !el.sortable) {\n sortable = false;\n }\n if (el.field != this._treeGroupColumn) {\n if (el.type && el.type == 'boolean') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellClass: 'ag-boolean-cell',\n cellRenderer: params => {\n if (params.value != null) {\n return params.value ? '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" stroke=\"green\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-check\"><path d=\"M20 6L9 17L4 12\"/></svg>' : '<svg xmlns=\"http://www.w3.org/2000/svg\" stroke=\"red\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" /></svg>';\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'enum') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n pinned: el.pinned,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n cellRenderer: params => {\n if (params.value) {\n return this._translate.instant(params.value);\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'date') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: DateFilter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return new JDatePipe().transform(params.value);\n } else {\n return '';\n }\n }\n })\n }\n else if (el.type && el.type == 'date-time') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: DateFilter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return new JDatePipe().transform(params.value, true);\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'price') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return params.value.toLocaleString();\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'image') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n minWidth: 80,\n width: 80,\n filter: false,\n sortable: false,\n editable: false,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return `<img class=\"rounded-full mt-1\" width=\"32\" height=\"32\" src=\"${params.value}\"/>`;\n } else {\n return '';\n }\n }\n })\n }\n else {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter,\n sortable,\n editable: el.editable,\n filterParams,\n pinned: el.pinned,\n minWidth: el.minWidth ? el.minWidth : null\n })\n }\n } else {\n this.autoGroupColumnDef.field = el.field;\n }\n });\n if (this.actionItems.length > 0) {\n this.columnDefs.push({\n filter: false,\n headerName: '',\n minWidth: 100,\n resizable: true,\n pinned: true,\n sortable: false,\n field: 'actions',\n cellRenderer: ActionsCellRenderer,\n cellRendererParams: {\n onClick: (params: GridActionOutput) => {\n this.onAction.emit(params);\n }\n }\n })\n }\n }\n }\n\n cellDoubleClicked(e: CellDoubleClickedEvent) {\n this.onClicked.emit(e.data);\n }\n\n handleClick(item: ToolbarItems) {\n this.onToolbar.emit(item);\n }\n\n public refresh(purge = false) {\n if (this.rowModelType == 'serverSide') {\n this.gridApi.refreshServerSide({ purge })\n } else {\n this.rowData = [];\n this.gridApi.refreshCells();\n this.gridApi.setGridOption('columnDefs', this.columnDefs);\n this.gridApi.setGridOption('loading', true);\n this.fetchData(null, null).then(data => {\n this.rowData = data.items;\n this.gridApi.setGridOption('loading', false);\n });\n }\n }\n\n onGridReady(params: any) {\n this.gridApi = params.api;\n if (this.rowModelType == 'clientSide') {\n this.fetchData(null, null).then(data => {\n this.rowData = data.items;\n }).catch(() => {\n params.fail();\n });\n }\n }\n\n advancedFilter() {\n this.enableAdvancedFilter = !this.enableAdvancedFilter;\n setTimeout(() => {\n this.gridApi.showAdvancedFilterBuilder();\n setTimeout(() => {\n (document.getElementsByClassName('ag-icon-maximize')[0] as HTMLElement).click();\n })\n }, 10);\n }\n\n private getRouteToNode(rowNode: IRowNode): string[] {\n if (!rowNode.parent) {\n return [];\n }\n return [\n ...this.getRouteToNode(rowNode.parent),\n rowNode.key ? rowNode.key : rowNode.data.employeeName,\n ];\n }\n\n refreshNode(id: string): void {\n const selectedRows = this.gridApi.getRowNode(id);\n const route = this.getRouteToNode(selectedRows);\n this.gridApi.refreshServerSide({\n purge: true,\n route: route\n });\n }\n\n clearFilter() {\n this.gridApi.setFilterModel(null);\n this.refresh();\n }\n\n refreshParentNode(id: string): void {\n const selectedRows = this.gridApi.getRowNode(id);\n const route = this.getRouteToNode(selectedRows.parent);\n this.gridApi.refreshServerSide({\n purge: true,\n route: route\n });\n }\n\n createServerSideDatasource(): IServerSideDatasource {\n return {\n getRows: (params: IServerSideGetRowsParams) => {\n let filter: FilterGridItemsModel = null;\n if (Object.keys(params.request.filterModel).length > 0) {\n filter = {\n disable: false,\n field: null,\n logic: 'AND',\n filters: [],\n ignoreCase: null,\n operator: null,\n truncateDate: null,\n value: null,\n };\n for (const key in params.request.filterModel) {\n if (params.request.filterModel[key].filterType == 'custom-date') {\n if (params.request.filterModel[key].dateFrom && params.request.filterModel[key].dateTo) {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.between,\n truncateDate: true,\n value: [params.request.filterModel[key].dateFrom, params.request.filterModel[key].dateTo]\n });\n } else if (params.request.filterModel[key].dateFrom) {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.truncGreaterThanEqual,\n truncateDate: true,\n value: params.request.filterModel[key].dateFrom,\n });\n } else if (params.request.filterModel[key].dateTo && params.request.filterModel[key].dateTo != \"\") {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.truncLessThanOrEqual,\n truncateDate: true,\n value: params.request.filterModel[key].dateTo,\n });\n }\n } else {\n const operation = FilterOperator[params.request.filterModel[key].type];\n let ignoreCase = true;\n const findEl = this._column.find((el) => el.field == key);\n let field = null;\n if (key == 'ag-Grid-AutoColumn') {\n field = this._treeGroupColumn;\n } else {\n field = key;\n if (findEl.searchField != null) {\n field = findEl.searchField;\n }\n }\n if (findEl && findEl.type == 'enum') {\n ignoreCase = false;\n }\n filter.filters.push({\n disable: false,\n field,\n logic: 'AND',\n filters: null,\n ignoreCase,\n operator: operation ? operation : FilterOperator.equals,\n truncateDate: true,\n value: params.request.filterModel[key].filter ? params.request.filterModel[key].filter : params.request.filterModel[key].type\n })\n }\n }\n }\n let sorts: SortModel[] = [];\n if (params.request.sortModel.length) {\n const findEl = this._column.find((el) => el.field == params.request.sortModel[0].colId);\n if (findEl.searchField != null) {\n sorts = [{\n dir: params.request.sortModel[0].sort,\n field: findEl.searchField\n }];\n } else {\n sorts = [{\n dir: params.request.sortModel[0].sort,\n field: params.request.sortModel[0].colId\n }];\n }\n }\n const gridFilter: GridInputModel = {\n take: params.api.paginationGetPageSize(),\n data: null,\n filter,\n skip: params.api.paginationGetCurrentPage() * params.api.paginationGetPageSize(),\n sorts\n };\n const requestParams: GridRequestParam = {\n parentNode: params.parentNode.data\n };\n this.fetchData(gridFilter, requestParams).then(data => {\n params.success({\n rowData: data.items,\n rowCount: data.totalCount,\n });\n }).catch(() => {\n params.fail();\n });\n }\n };\n }\n\n ngOnInit(): void { }\n}","<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n @for (item of toolbarItems; track $index) {\n <button nz-button [nzLoading]=\"item.loading ? item.loading : false\" (click)=\"handleClick(item)\"\n [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n }\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n بروزرسانی\n </button>\n <button nz-button (click)=\"clearFilter()\" nzType=\"default\">\n <span nz-icon nzType=\"clear\"></span>\n پاکسازی\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n جستجوی پیشرفته\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\"\n [columnDefs]=\"columnDefs\" [pagination]=\"true\" [paginationPageSize]=\"paginationPageSize\"\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\" [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\"\n [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\" [treeData]=\"treeModel\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [rowData]=\"rowData\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\"\n [autoSizeStrategy]=\"_autoColumnSize\" #grid />","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\nimport { ActionItems } from '../../../models/shared.model';\n\n@Component({\n selector: 'app-button-renderer',\n templateUrl: `./action-button.component.html`\n})\nexport class ActionsCellRenderer implements ICellRendererAngularComp {\n private params!: any;\n public items: ActionItems[] = [];\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.items = params.context.actionItems;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n return true;\n }\n\n handleClick(item: ActionItems) {\n this.params.onClick({ data: this.params.data, event: item.code, id: this.params.node.id });\n }\n}\n","<div class=\"h-full flex gap-2 items-center\">\n <button mat-button class=\"min-w-[30px] min-h-[30px] h-[30px]\" *ngFor=\"let item of items\" nz-tooltip [nzTooltipTitle]=\"item.alt\" nzTooltipPlacement=\"bottom\" (click)=\"handleClick(item)\">\n <div class=\"flex justify-center items-center\">\n <i [class]=\"item.icon\"></i>\n </div>\n </button>\n \n</div>","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'app-captcha',\n templateUrl: './captcha.component.html',\n})\nexport class CaptchaComponent implements OnInit {\n constructor() { }\n @ViewChild('canvas', { static: true }) captchaCanvas!: ElementRef<HTMLCanvasElement>;\n value: string = '';\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter();\n\n generateCode(){\n this.value=Math.round((Math.random() * 1000000)).toString();\n this.drawCaptcha();\n this.valueChange.emit(this.value);\n }\n\n drawCaptcha() {\n const canvas: HTMLCanvasElement = this.captchaCanvas.nativeElement;\n const ctx = canvas.getContext('2d');\n\n if (ctx) {\n // تنظیمات اولیه Canvas\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.font = '30px Arial';\n ctx.fillStyle = '#000';\n ctx.textAlign = 'center';\n\n // وسط‌چین کردن عمودی: تعیین y براساس ارتفاع فونت\n const textX = canvas.width / 2;\n const textY = (canvas.height / 2) + 10;\n\n // رندر کردن متن کپچا\n ctx.fillText(this.value, textX, textY);\n\n // اضافه کردن نویز و خطوط برای پیچیده‌تر کردن کپچا\n for (let i = 0; i < 10; i++) {\n ctx.beginPath();\n ctx.moveTo(Math.random() * canvas.width, Math.random() * canvas.height);\n ctx.lineTo(Math.random() * canvas.width, Math.random() * canvas.height);\n ctx.strokeStyle = '#ccc';\n ctx.stroke();\n }\n }\n }\n\n ngOnInit(): void {\n this.generateCode();\n }\n}\n","<div class=\"rounded-xl border border-slate-200 relative\">\n <canvas #canvas class=\"w-full h-[80px]\"></canvas>\n <div class=\"absolute left-2 top-0 bottom-0 m-auto z-10 flex justify-center items-center\">\n <button nz-button nzShape=\"circle\" type=\"button\" (click)=\"generateCode()\">\n <span nz-icon nzType=\"undo\" nzTheme=\"outline\"></span>\n </button>\n </div>\n</div>","import { Component, AfterViewInit, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { PolygonData, PolygonEventEmiter } from '../../models/shared.model';\ndeclare let L: any;\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements AfterViewInit {\n constructor() { }\n public map: any;\n private drawnItems = new L.FeatureGroup();\n\n @Input()\n editable: boolean = false;\n\n @Input()\n polygons: PolygonData[] = [];\n\n @Input()\n drawPolygon: boolean = false;\n\n @Input()\n drawCircle: boolean = false;\n\n @Input()\n drawPolyline: boolean = false;\n\n @Input()\n drawRectangle: boolean = false;\n\n @Input()\n drawMarker: boolean = false;\n\n @Input()\n zoom: number = 13;\n\n @Input()\n center: number[] = [35.6961, 51.4231];\n\n @Output()\n onCreatePolygon: EventEmitter<PolygonEventEmiter[]> = new EventEmitter();\n\n @Output()\n onEditPolygon: EventEmitter<PolygonEventEmiter[]> = new EventEmitter();\n\n private initMap(): void {\n if (L && L.map && L.Control && L.Control.Draw) {\n if (this.center.length == 0) {\n this.center = [35.6961, 51.4231];\n }\n this.map = L.map('map').setView(this.center, this.zoom);\n\n L.tileLayer('https://raster.snappmaps.ir/styles/snapp-style/{z}/{x}/{y}@2x.webp', {\n maxZoom: 18,\n }).addTo(this.map);\n\n this.map.addLayer(this.drawnItems);\n const drawControl = new L.Control.Draw({\n edit: this.editable ? {\n featureGroup: this.drawnItems\n } : null,\n draw: {\n polygon: this.drawPolygon,\n polyline: this.drawPolyline,\n circle: this.drawCircle,\n rectangle: this.drawRectangle,\n marker: this.drawMarker,\n circlemarker: false,\n }\n });\n this.map.addControl(drawControl);\n if (L.Draw && L.Draw.Event && L.Draw.Event.CREATED) {\n this.map.on(L.Draw.Event.CREATED, (event: any) => {\n this.onCreatePolygon.emit(event.layer._latlngs[0]);\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n });\n this.map.on(L.Draw.Event.EDITED, (event: any) => {\n const polygon = [];\n event.layers.eachLayer((layer: any) => {\n layer._latlngs[0].forEach(element => {\n polygon.push({\n lat: element.lat,\n lng: element.lng\n });\n });\n });\n this.onEditPolygon.emit(polygon);\n });\n } else {\n console.error('Leaflet Draw Event is not available.');\n }\n } else {\n console.error('Leaflet or Leaflet Draw is not correctly loaded.');\n }\n }\n\n private addPolygonsToMap(): void {\n this.polygons.forEach(polygon => {\n // polygon.coordinates.forEach((el) => {\n // el.reverse();\n // });\n const layer = L.polygon(polygon.coordinates, { color: polygon.color }).addTo(this.map);\n\n // اضافه کردن لیبل به پالیگان\n layer.bindTooltip(polygon.name, { permanent: true, direction: 'center', className: 'font-[yekanBakh]' }).openTooltip();\n if (polygon.editable) {\n // اضافه کردن پالیگان به drawnItems برای ویرایش\n this.drawnItems.addLayer(layer);\n }\n });\n }\n\n clearMap() {\n this.map.eachLayer((layer) => {\n if (!(layer instanceof L.TileLayer)) {\n this.map.removeLayer(layer);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['polygons']) {\n this.clearMap();\n this.addPolygonsToMap();\n }\n if (changes['center'] || changes['zoom']) {\n if (this.map) {\n this.map.setView(this.center, this.zoom);\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.initMap();\n this.addPolygonsToMap();\n }\n}\n","<div class=\"map-container\">\n <div class=\"map-frame\">\n <div id=\"map\" #mapElement></div>\n <!-- <button mat-flat-button (click)=\"currentLocation()\" *ngIf=\"allowCurrentLocation\">\n <i class=\"fa-solid fa-location-crosshairs\"></i>\n </button> -->\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-spinner',\n templateUrl: './spinner.component.html'\n})\nexport class SpinnerComponent implements OnInit {\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"w-full h-full absolute top-0 left-0 flex justify-center items-center bg-white z-10\">\n <nz-spin nzSimple nzSize=\"large\" nzSimple></nz-spin>\n</div>","import { ComponentRef, inject, Injector, ViewContainerRef } from \"@angular/core\";\nimport { NZ_MODAL_DATA, NzModalRef } from \"ng-zorro-antd/modal\";\nimport { SpinnerComponent } from \"../components/index.api\";\n\nexport abstract class PopoverComponent<DataModel> {\n data: DataModel | null = inject(NZ_MODAL_DATA, { optional: true });\n dialogRef: NzModalRef | null = inject(NzModalRef, { optional: true });\n viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n injector: Injector = inject(Injector);\n\n private spinnerRef: ComponentRef<any> | null = null;\n public get loadingDialog() {\n return this.loadingDialog;\n }\n public set loadingDialog(value: boolean) {\n if (value) {\n this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {\n injector: this.injector,\n });\n } else {\n this.spinnerRef.destroy();\n this.spinnerRef = null;\n }\n }\n abstract onOk(): Promise<any>;\n abstract onCancel(): Promise<any>;\n\n onClose(data?: any) {\n this.dialogRef.close(data);\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { PopoverComponent } from '../../class/index.api';\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\nimport { CropperInputModel } from '../../models/shared.model';\nimport { ToastService } from '../../services/index.api';\n\n@Component({\n templateUrl: './image-cropper.popover.html',\n})\nexport class ImageCropperPopover extends PopoverComponent<CropperInputModel> implements OnInit {\n constructor(\n private _toast: ToastService\n ) {\n super()\n }\n croppedImage: File = null;\n\n imageCropped(event: ImageCroppedEvent) {\n this.croppedImage = new File([event.blob], this.data.file.name, { type: event.blob.type });\n }\n\n loadImageFailed() {\n this._toast.show('خطا در لود تصویر', 'error');\n }\n\n override onOk(): Promise<any> {\n return Promise.resolve({\n file: this.croppedImage\n });\n }\n\n override onCancel(): Promise<any> {\n return Promise.resolve();\n }\n\n ngOnInit(): void {\n }\n}\n","<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>","\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { NzUploadFile } from 'ng-zorro-antd/upload';\nimport { Observable, Observer, Subscription } from 'rxjs';\nimport { ToastService } from '../../services/toast.service';\nimport { DialogService, SharedService } from '../../services/index.api';\nimport Compressor from 'compressorjs';\nimport { ImageCropperPopover } from '../../popover/index.api';\nimport { CropperInputModel } from '../../models/shared.model';\n\n@Component({\n selector: 'app-uploader',\n templateUrl: './uploader.component.html',\n})\nexport class UploaderComponent implements OnInit {\n constructor(\n @Inject('environment') environment,\n private _toast: ToastService,\n private _http: HttpClient,\n private _sharedService: SharedService,\n private _dialog: DialogService\n ) {\n this.env = environment;\n }\n loading = false;\n env = null;\n avatarUrl?: string;\n _avatarUid: string = null;\n _fileUploaded: File = null;\n\n @Input()\n maxWithSize: number = 1024;\n\n @Input()\n cropper: boolean = false;\n\n @Input()\n aspectRatio: number = 1 / 1;\n\n @Input()\n isCompress: boolean = true;\n\n @Input()\n public get avatar() {\n return this.avatarUrl;\n }\n public set avatar(v: string) {\n if (v) {\n this._avatarUid = v;\n this.loading = true;\n this._sharedService.getFile(v).then((res) => {\n this.avatarUrl = res;\n }).finally(() => {\n this.loading = false;\n })\n }\n }\n\n @Output()\n onUploaded: EventEmitter<string> = new EventEmitter();\n\n\n customRequest = (item: any) => {\n // return Subscription\n const subscription = new Subscription();\n\n const uploadFile = (file: File) => {\n this.loading = true;\n if(this.isCompress){\n this.resizeImage(file).then((res) => {\n const isLt1M = res.size! / 1024 / 1024 < 1;\n if (!isLt1M) {\n this._toast.show('Image must smaller than 1MB!', 'error');\n subscription.unsubscribe();\n this.loading = false;\n return;\n }\n const formData = new FormData();\n formData.append('file', res as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n this._fileUploaded = res;\n subscription.add(\n this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, file, event);\n }\n },\n (err) => {\n item.onError(err, file);\n }\n )\n );\n }).catch(() => {\n this.loading = false;\n });\n } else {\n const isLt1M = file.size! / 1024 / 1024 < 1;\n if (!isLt1M) {\n this._toast.show('Image must smaller than 1MB!', 'error');\n subscription.unsubscribe();\n this.loading = false;\n return;\n }\n const formData = new FormData();\n formData.append('file', file as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n this._fileUploaded = file;\n subscription.add(\n this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, file, event);\n }\n },\n (err) => {\n item.onError(err, file);\n }\n )\n );\n }\n \n }\n\n if (this.cropper) {\n this._dialog.open<CropperInputModel>(ImageCropperPopover, {\n title: 'برش تصویر',\n data: {\n file: item.file,\n aspectRatio: this.aspectRatio\n }\n }).afterClose.subscribe((res) => {\n if (res.file) {\n uploadFile(res.file);\n }\n });\n } else {\n uploadFile(item.file);\n }\n\n return subscription;\n };\n\n beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]): Observable<boolean> =>\n new Observable((observer: Observer<boolean>) => {\n const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/webp';\n if (!isJpgOrPng) {\n this._toast.show('You can only upload JPG,PNG,WEBP file!', 'error');\n observer.complete();\n return;\n }\n observer.next(isJpgOrPng);\n observer.complete();\n });\n\n private getBase64(img: File, callback: (img: string) => void): void {\n const reader = new FileReader();\n reader.addEventListener('load', () => callback(reader.result!.toString()));\n reader.readAsDataURL(img);\n }\n\n handleChange(info: any): void {\n switch (info.file.status) {\n case 'uploading':\n this.loading = true;\n break;\n case 'done':\n debugger\n this.getBase64(this._fileUploaded, (img: string) => {\n this.loading = false;\n this.avatarUrl = img;\n this.onUploaded.emit(info.file.response);\n });\n break;\n case 'error':\n this.loading = false;\n break;\n }\n }\n\n resizeImage(base64Str): Promise<File> {\n return new Promise((resolve, reject) => {\n new Compressor(base64Str, {\n quality: 1,\n maxWidth: this.maxWithSize,\n success(result) {\n resolve(result as File);\n },\n error(err) {\n reject(err);\n }\n });\n });\n }\n\n ngOnInit(): void { }\n}\n","<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>","\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { NzUploadFile } from 'ng-zorro-antd/upload';\nimport { Observable, Observer } from 'rxjs';\nimport { ToastService } from '../../services/toast.service';\n@Component({\n selector: 'app-upload-file',\n templateUrl: './upload-file.component.html',\n})\nexport class UploadFileComponent implements OnInit {\n constructor(\n @Inject('environment') environment,\n private _toast: ToastService,\n private _http: HttpClient,\n ) {\n this.env = environment;\n }\n loading = false;\n env = null;\n avatarUrl?: string;\n _avatarUid: string = null;\n fileList: NzUploadFile[] = [];\n\n @Input()\n acceptFileType: string = null;\n\n @Input()\n type: 'serverSide' | 'clientSide' = 'serverSide';\n\n @Output()\n onUploaded: EventEmitter<string> = new EventEmitter();\n\n handleChangeClientSide(e) {\n this.onUploaded.emit(e.file);\n }\n\n customRequest = (item: any) => {\n const formData = new FormData();\n formData.append('file', item.file as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n return this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, item.file, event);\n }\n },\n (err) => {\n item.onError(err, item.file);\n }\n );\n };\n\n beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]): Observable<boolean> =>\n new Observable((observer: Observer<boolean>) => {\n let checkType = file.type === this.acceptFileType;\n if (this.acceptFileType != null) {\n if (!checkType) {\n this._toast.show('You can only upload JPG,PNG,WEBP file!', 'error');\n observer.complete();\n return;\n }\n } else {\n checkType = true;\n }\n const isLt2M = file.size! / 1024 / 1024 < 3;\n if (!isLt2M) {\n this._toast.show('Image must smaller than 2MB!', 'error');\n observer.complete();\n return;\n }\n observer.next(checkType && isLt2M);\n observer.complete();\n });\n\n handleChange(info: any): void {\n switch (info.file.status) {\n case 'uploading':\n this.loading = true;\n break;\n case 'done':\n this.onUploaded.emit(info.file.response);\n break;\n case 'error':\n this.loading = false;\n break;\n }\n }\n\n ngOnInit(): void { }\n}\n","@if(type == 'serverSide'){\n <nz-upload nzName=\"file\" nzType=\"drag\"\n [nzBeforeUpload]=\"beforeUpload\" (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n <p class=\"ant-upload-drag-icon\">\n <span nz-icon nzType=\"inbox\"></span>\n </p>\n <p class=\"ant-upload-text\">برای آپلود، روی فایل کلیک کنید یا آن را به این قسمت بکشید</p>\n <p class=\"ant-upload-hint\">\n حداکثر حجم قابل قبول برای اپلود ۳ مگابایت می باشد\n </p>\n </nz-upload>\n} @else {\n <nz-upload nzName=\"file\" nzType=\"drag\" [nzBeforeUpload]=\"beforeUpload\" (nzChange)=\"handleChangeClientSide($event)\">\n <p class=\"ant-upload-drag-icon\">\n <span nz-icon nzType=\"inbox\"></span>\n </p>\n <p class=\"ant-upload-text\">برای آپلود، روی فایل کلیک کنید یا آن را به این قسمت بکشید</p>\n <p class=\"ant-upload-hint\">\n حداکثر حجم قابل قبول برای اپلود ۳ مگابایت می باشد\n </p>\n </nz-upload>\n}","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[charInput]',\n})\nexport class CharInputDirective {\n constructor(private el: ElementRef, private control: NgControl, public renderer: Renderer2) { }\n\n @Input()\n allowPersianChar: boolean = false;\n\n @Input()\n allowEnglishChar: boolean = false;\n\n @Input()\n allowLocalChar: boolean = true;\n\n\n @HostListener('input', ['$event']) onEvent($event: InputEvent) {\n const englishPattern = /^[A-Za-z\\u0600-\\u06FF ]+$/;\n const persianPattern = /^[\\u0600-\\u06FF ]+$/;\n let value = this.el.nativeElement.value;\n if (this.allowEnglishChar) {\n if (!englishPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n } else if (!persianPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n this.el.nativeElement.value = value;\n this.control.control.setValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', value);\n return value;\n }\n}","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[englishNumberInput]',\n})\nexport class EnglishNumberInputDirective {\n constructor(private el: ElementRef, private control: NgControl, public renderer: Renderer2) { }\n\n @HostListener('input', ['$event']) onEvent($event: InputEvent) {\n var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],\n arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],\n fixNumbers = function (str) {\n if (typeof str === 'string') {\n for (var i = 0; i < 10; i++) {\n str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);\n }\n }\n return str;\n };\n const numberPattern = /^\\d+$/;\n let value = fixNumbers(this.el.nativeElement.value);\n\n if (!numberPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n this.el.nativeElement.value = value;\n this.control.control.setValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', value);\n return value;\n }\n}","import {\n Directive,\n Attribute,\n Renderer2,\n ElementRef,\n HostListener,\n Input\n} from '@angular/core';\nimport { SharedService } from '../services/index.api';\n\n@Directive({\n selector: '[imageLoader]'\n})\nexport class ImageLoaderDirective {\n constructor(\n @Attribute('loader') public loader: string,\n @Attribute('onErrorSrc') public onErrorSrc: string,\n private renderer: Renderer2,\n private el: ElementRef,\n private _http: SharedService\n ) {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.loader);\n }\n\n _imageSrc: string = null;\n\n @Input()\n public get imageSrc() {\n return this._imageSrc;\n }\n public set imageSrc(v: string) {\n if (v != null) {\n this._http.getFile(v).then((res) => {\n this.renderer.setAttribute(this.el.nativeElement, 'src', res);\n })\n }\n this._imageSrc = v;\n }\n\n // @HostListener('load') onLoad() {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.el.nativeElement.src);\n // }\n // @HostListener('error') onError() {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.onErrorSrc);\n // }\n}","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private _router: Router) { }\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n if (localStorage.getItem('userInfo')) {\n return true\n }\n this._router.navigate(['/auth']);\n return false;\n }\n}\n","import { Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { MenuItems } from '../../models/shared.model';\nimport { SharedService } from '../../services/shared.service';\nimport { ConfirmService } from '../../services/confirm.service';\n\n@Component({\n templateUrl: './master.layout.html',\n styleUrls: ['./master.layout.scss']\n})\nexport class MasterLayout implements OnInit {\n constructor(\n private _service: SharedService,\n private _confirm: ConfirmService,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n @ViewChild('dynamicComponentContainer', { read: ViewContainerRef }) container: ViewContainerRef;\n isCollapsed = false;\n menuItems: MenuItems[] = [];\n\n logout() {\n this._confirm.confirm(() => {\n localStorage.clear();\n location.reload();\n return Promise.resolve();\n })\n }\n\n loadComponent(component: any) {\n this.container.clear();\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.container.createComponent(componentFactory);\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n // this.loadComponent(this._ac.);\n }, 500)\n }\n\n ngOnInit(): void {\n this.menuItems = this._service.menuItems;\n }\n}\n","<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"درخت سرویس\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md overflow-auto\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './blank.layout.html',\n})\nexport class BlankLayout implements OnInit {\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>","import { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { AdvancedFilterModule } from '@ag-grid-enterprise/advanced-filter';\nimport { LicenseManager } from '@ag-grid-enterprise/core';\nimport { MasterDetailModule } from '@ag-grid-enterprise/master-detail';\nimport { MultiFilterModule } from '@ag-grid-enterprise/multi-filter';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { SetFilterModule } from '@ag-grid-enterprise/set-filter';\nimport { CdkMenuModule } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzMessageModule } from 'ng-zorro-antd/message';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzTreeViewModule } from 'ng-zorro-antd/tree-view';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { ImageCropperComponent } from 'ngx-image-cropper';\nimport { JDatePipe } from '../public-api';\nimport { DateFilter } from './components/grid/filter/index.api';\nimport { ActionsCellRenderer, CaptchaComponent, GridComponent, MapComponent, SpinnerComponent, UploaderComponent, UploadFileComponent } from './components/index.api';\nimport { CharInputDirective, EnglishNumberInputDirective, ImageLoaderDirective, MaskDirective } from './directive/index.api';\nimport { AuthGuard } from './guard/index.api';\nimport { BlankLayout, MasterLayout } from './layouts/index.api';\nimport { ImageCropperPopover } from './popover/image-cropper/image-cropper.popover';\nimport { ConfirmService } from './services/index.api';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());\n}\n\nLicenseManager.prototype.isDisplayWatermark = () => {\n return false;\n}\nLicenseManager.prototype.validateLicense = () => {\n\n}\n\nModuleRegistry.registerModules([\n ClientSideRowModelModule,\n SetFilterModule,\n MultiFilterModule,\n MasterDetailModule,\n AdvancedFilterModule,\n ServerSideRowModelModule,\n RowGroupingModule\n]);\n\nexport function initializeApp(): Promise<any> {\n return new Promise((resolve, reject) => {\n if (typeof window !== 'undefined') {\n resolve(true);\n } else {\n reject();\n }\n });\n}\n\nconst Layouts = [\n MasterLayout,\n BlankLayout\n];\n\nconst Components = [\n GridComponent,\n ActionsCellRenderer,\n CaptchaComponent,\n MapComponent,\n SpinnerComponent,\n UploaderComponent,\n UploadFileComponent,\n DateFilter\n];\n\nconst Popover: any[] = [\n ImageCropperPopover\n];\n\nconst Directive = [\n EnglishNumberInputDirective,\n CharInputDirective,\n MaskDirective,\n ImageLoaderDirective\n];\n\nconst Pipes = [\n JDatePipe\n]\n\nconst Guard = [\n AuthGuard\n];\n\nconst Services = [\n ConfirmService\n]\n\nconst Modules = [\n HttpClientModule,\n CommonModule,\n AgGridModule,\n HttpClientModule,\n CdkMenuModule,\n NzLayoutModule,\n NzMenuModule,\n NzIconModule,\n NzButtonModule,\n NzModalModule,\n NzMessageModule,\n NzToolTipModule,\n NzTabsModule,\n NzTreeViewModule,\n NzSpinModule,\n FormsModule,\n NzInputModule,\n NzFormModule,\n NzUploadModule,\n NzCollapseModule,\n ImageCropperComponent,\n TranslateModule.forRoot({\n defaultLanguage: 'fa',\n useDefaultLang: true,\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n })\n];\n\n@NgModule({\n declarations: [\n ...Layouts,\n ...Components,\n ...Popover,\n ...Directive,\n ...Pipes\n ],\n imports: [\n RouterModule,\n ...Modules\n ],\n exports: [\n ...Layouts,\n ...Components,\n ...Popover,\n ...Directive,\n ...Pipes\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ],\n providers: [\n ...Guard,\n ...Services,\n { provide: APP_INITIALIZER, useFactory: initializeApp, multi: true }\n ]\n})\nexport class SharedModule { }\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'timer',\n})\nexport class TimerPipe implements PipeTransform {\n transform(value: number): string {\n const hours: number = Math.floor(value / 3600);\n const minutes: number = Math.floor((value % 3600) / 60);\n const seconds: number = value % 60;\n\n if (value >= 3601) {\n return (\n ('00' + hours).slice(-2) +\n ':' +\n ('00' + minutes).slice(-2) +\n ':' +\n ('00' + seconds).slice(-2)\n );\n }\n\n else {\n return (\n ('00' + minutes).slice(-2) +\n ':' +\n ('00' + seconds).slice(-2)\n );\n }\n }\n}\n\n","/*\n * Public API Surface of shared\n */\n\nexport * from './lib/services/index.api';\nexport * from './lib/shared.module';\nexport * from './lib/layouts/index.api';\nexport * from './lib/components/index.api';\nexport * from './lib/models/index.api';\nexport * from './lib/class/index.api';\nexport * from './lib/guard/index.api';\nexport * from './lib/pipes/index.api';\nexport * from './lib/directive/index.api';\nexport * from './lib/components/grid/filter/index.api';\nexport * from './lib/popover/index.api';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","Directive","moment","i2","i4","i8.MaskDirective","i3","i5","i6","i7","i1.ToastService","i3.SharedService","i3.DialogService","i1.SharedService","i2.ConfirmService","i8"],"mappings":"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"}
1
+ {"version":3,"file":"fixa-admin.mjs","sources":["../../../projects/shared/src/lib/services/shared.service.ts","../../../projects/shared/src/lib/services/dialog.service.ts","../../../projects/shared/src/lib/services/toast.service.ts","../../../projects/shared/src/lib/services/form.service.ts","../../../projects/shared/src/lib/services/confirm.service.ts","../../../projects/shared/src/lib/directive/mask.ts","../../../projects/shared/src/lib/directive/mask.directive.ts","../../../projects/shared/src/lib/components/grid/filter/date-filter.component.ts","../../../projects/shared/src/lib/models/shared.model.ts","../../../projects/shared/src/lib/pipes/date.pipe.ts","../../../projects/shared/src/lib/components/grid/grid.component.ts","../../../projects/shared/src/lib/components/grid/grid.component.html","../../../projects/shared/src/lib/components/grid/render/action-button.component.ts","../../../projects/shared/src/lib/components/grid/render/action-button.component.html","../../../projects/shared/src/lib/components/captcha/captcha.component.ts","../../../projects/shared/src/lib/components/captcha/captcha.component.html","../../../projects/shared/src/lib/components/map/map.component.ts","../../../projects/shared/src/lib/components/map/map.component.html","../../../projects/shared/src/lib/components/spinner/spinner.component.ts","../../../projects/shared/src/lib/components/spinner/spinner.component.html","../../../projects/shared/src/lib/class/popover.ts","../../../projects/shared/src/lib/popover/image-cropper/image-cropper.popover.ts","../../../projects/shared/src/lib/popover/image-cropper/image-cropper.popover.html","../../../projects/shared/src/lib/components/uploader/uploader.component.ts","../../../projects/shared/src/lib/components/uploader/uploader.component.html","../../../projects/shared/src/lib/components/upload-file/upload-file.component.ts","../../../projects/shared/src/lib/components/upload-file/upload-file.component.html","../../../projects/shared/src/lib/directive/char-input.directive.ts","../../../projects/shared/src/lib/directive/numeric-input.directive.ts","../../../projects/shared/src/lib/directive/image.directive.ts","../../../projects/shared/src/lib/guard/auth.guard.ts","../../../projects/shared/src/lib/layouts/master/master.layout.ts","../../../projects/shared/src/lib/layouts/master/master.layout.html","../../../projects/shared/src/lib/layouts/blank/blank.layout.ts","../../../projects/shared/src/lib/layouts/blank/blank.layout.html","../../../projects/shared/src/lib/shared.module.ts","../../../projects/shared/src/lib/pipes/timer.pipe.ts","../../../projects/shared/src/public-api.ts","../../../projects/shared/src/fixa-admin.ts"],"sourcesContent":["import { Inject, Injectable } from '@angular/core';\nimport { MenuItems } from '../models/shared.model';\nimport { FormGroup } from '@angular/forms';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SharedService {\n constructor(\n @Inject('environment') environment,\n private _http: HttpClient\n ) {\n this.environment = environment;\n }\n environment: any = null;\n menuItems: MenuItems[] = [];\n\n upload(file: File): Observable<string> {\n let formData: FormData = new FormData();\n formData.append('file', file, file.name);\n return this._http.post<string>(`${this.environment.apiUrl}/file`, formData, {\n responseType: 'text' as 'json',\n });\n }\n\n getFile(url: string): Promise<string> {\n return new Promise((resolve, reject) => {\n this._http.get(`${this.environment.apiUrl}/file/${url}`, {\n responseType: 'arraybuffer'\n }).subscribe({\n next: (value) => {\n const blob = new Blob([value], { type: 'image/jpeg' });\n const url = URL.createObjectURL(blob);\n resolve(url);\n },\n });\n });\n }\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\nimport { DialogBodyModel } from '../models/shared.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n constructor(\n private _modal: NzModalService,\n ) { }\n\n open<T>(component: ComponentType<any>, body: DialogBodyModel<T>): NzModalRef {\n let size = '520px';\n let height = 'auto';\n let className = null;\n switch (body.size) {\n case 'md':\n size = '640px'\n break;\n case 'lg':\n size = '780px'\n break;\n case 'xl':\n size = '1024px'\n break;\n case 'full':\n size = '100%';\n height = '100%';\n className = 'full-screen'\n break;\n default:\n size = '520px';\n break;\n }\n const modal: NzModalRef = this._modal.create({\n nzTitle: body.title,\n nzWidth: size,\n nzClassName: body.class ? body.class + ' ' + className : className,\n nzMaskClosable: body.closable != null ? body.closable : true,\n nzStyle: body.size == 'full' ? {\n height: height,\n top: '20px'\n } : null,\n nzData: {\n ...body.data\n },\n nzOnOk: () => {\n const instance = modal.getContentComponent();\n return instance.onOk();\n },\n nzOnCancel: () => {\n const instance = modal.getContentComponent();\n return instance.onCancel();\n },\n nzFooter: body.disableFooter ? null : undefined,\n nzContent: component,\n });\n\n return modal;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NzMessageService } from 'ng-zorro-antd/message';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ToastService {\n constructor(\n private _message: NzMessageService\n ) { }\n\n show(message, type: \"success\" | \"info\" | \"warning\" | \"error\" | \"loading\") {\n this._message.create(type, message)\n }\n}","import { Injectable } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormService {\n constructor() { }\n\n validateForm(form: FormGroup) {\n Object.values(form.controls).forEach(control => {\n if (control.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n }\n}","import { Injectable, Input } from '@angular/core';\nimport { NzModalRef, NzModalService } from 'ng-zorro-antd/modal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmService {\n constructor(\n private _modal: NzModalService\n ) { }\n\n confirm(action: () => Promise<any>, title: string = 'آیا از انجام این عملیات اطمینان دارید؟'): Promise<void> {\n return new Promise((resolve, reject) => {\n const modalRef: NzModalRef = this._modal.confirm({\n nzTitle: title,\n nzOkText: 'تائید',\n nzOkType: 'primary',\n nzOkDanger: true,\n nzOnOk: () => {\n return action()\n .then(() => {\n resolve();\n })\n .catch((error) => {\n reject(error);\n });\n },\n nzCancelText: 'لغو',\n nzOnCancel: () => { }\n });\n })\n }\n}","\nconst _formatToRegExp = {\n '0': /[0-9]/, 'a': /[a-z]/, 'A': /[A-Z]/, 'B': /[a-zA-Z]/,\n};\n\nconst _allFormatsStr = '(' +\n Object.keys(_formatToRegExp)\n .map(key => _formatToRegExp[key].toString())\n .map(regexStr => regexStr.substr(1, regexStr.length - 2))\n .join('|')\n + ')';\n\nconst _allFormatsGlobal = getAllFormatRegexp('g');\n\n/**\n * Apply format to a value string\n *\n * Format can be constructed from next symbols:\n * - '0': /[0-9]/,\n * - 'a': /[a-z]/,\n * - 'A': /[A-Z]/,\n * - 'B': /[a-zA-Z]/\n *\n * Example: 'AAA-00BB-aaaa'\n * will accept 'COD-12Rt-efww'\n *\n * @param value Current value\n * @param format Format\n * @param goingBack Indicates if change was done by BackSpace\n * @param prevValue Pass to precisely detect formatter chars\n */\nexport function valueToFormat(value: string, format: string, goingBack = false, prevValue?: string): string {\n let maskedValue = '';\n const unmaskedValue = unmaskValue(value);\n const isLastCharFormatter = !getAllFormatRegexp().test(value[value.length - 1]);\n const isPrevLastCharFormatter = prevValue && !getAllFormatRegexp().test(prevValue[prevValue.length - 1]);\n\n let formatOffset = 0;\n for (let i = 0, maxI = Math.min(unmaskedValue.length, format.length); i < maxI; ++i) {\n const valueChar = unmaskedValue[i];\n let formatChar = format[formatOffset + i];\n let formatRegex = getFormatRegexp(formatChar);\n\n if (formatChar && !formatRegex) {\n maskedValue += formatChar;\n formatChar = format[++formatOffset + i];\n formatRegex = getFormatRegexp(formatChar);\n }\n\n if (valueChar && formatRegex) {\n if (formatRegex.test(valueChar)) {\n maskedValue += valueChar;\n } else {\n break;\n }\n }\n\n const nextFormatChar = format[formatOffset + i + 1];\n const nextFormatRegex = getFormatRegexp(nextFormatChar);\n const isLastIteration = i === maxI - 1;\n\n if (isLastIteration && nextFormatChar && !nextFormatRegex) {\n if (!isLastCharFormatter && goingBack) {\n if (prevValue && !isPrevLastCharFormatter) {\n continue;\n }\n maskedValue = maskedValue.substr(0, formatOffset + i);\n } else {\n maskedValue += nextFormatChar;\n }\n }\n }\n\n return maskedValue;\n}\n\nexport function unmaskValue(value: string): string {\n const unmaskedMathes = value.match(_allFormatsGlobal);\n return unmaskedMathes ? unmaskedMathes.join('') : '';\n}\n\nfunction getAllFormatRegexp(flags?: string) {\n return new RegExp(_allFormatsStr, flags);\n}\n\nfunction getFormatRegexp(formatChar: string): RegExp | null {\n return formatChar && _formatToRegExp[formatChar] ? _formatToRegExp[formatChar] : null;\n}","import { Directive, Injector, Input, OnInit } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { valueToFormat, unmaskValue } from './mask';\n\n@Directive({\n selector: '[appMask]',\n})\nexport class MaskDirective implements OnInit {\n\n @Input() appMask: string;\n\n private control: NgControl;\n private _lastMaskedValue = '';\n\n constructor(\n private injector: Injector,\n ) { }\n\n ngOnInit() {\n this.control = this.injector.get(NgControl);\n\n if (!this.control || !this.control.valueAccessor) {\n return;\n }\n\n const originalWriteVal = this.control.valueAccessor.writeValue.bind(this.control.valueAccessor);\n this.control.valueAccessor.writeValue = (val: any) => originalWriteVal(this._maskValue(val));\n\n const originalChange = (<any>this.control.valueAccessor)['onChange'].bind(this.control.valueAccessor);\n this.control.valueAccessor.registerOnChange((val: any) => originalChange(this._unmaskValue(val)));\n\n this._setVal(this._maskValue(this.control.value));\n }\n\n private _maskValue(val: string): string {\n if (!this.appMask || val === this._lastMaskedValue) {\n return val;\n }\n if (val == null) val = \"\";\n\n const maskedVal = this._lastMaskedValue =\n valueToFormat(\n val,\n this.appMask, this._lastMaskedValue.length > val.length,\n this._lastMaskedValue);\n\n return maskedVal;\n }\n\n private _unmaskValue(val: string): string {\n const maskedVal = this._maskValue(val);\n const unmaskedVal = unmaskValue(maskedVal);\n\n if (maskedVal !== val) {\n this._setVal(maskedVal);\n }\n\n return maskedVal ? unmaskedVal : '';\n }\n\n private _setVal(val: string) {\n if (this.control.control) {\n this.control.control.setValue(val, { emitEvent: false });\n }\n }\n\n}","import { IFilterAngularComp } from '@ag-grid-community/angular';\nimport { IAfterGuiAttachedParams, IDoesFilterPassParams, IFilterParams } from '@ag-grid-community/core';\nimport { Component, ElementRef, ViewChild } from '@angular/core';\nimport moment from 'jalali-moment';\n\n\n@Component({\n template: `\n <div class=\"p-4\">\n <nz-form-item>\n <nz-form-label>از تاریخ</nz-form-label>\n <nz-form-control>\n <input nz-input appMask=\"0000-00-00\" placeholder=\"1403-01-01\" autocomplete=\"off\" class=\"w-[250px]\" dir=\"ltr\" [(ngModel)]=\"dateFrom\" #eFilterText/>\n </nz-form-control>\n </nz-form-item>\n <nz-form-item>\n <nz-form-label>تا تاریخ</nz-form-label>\n <nz-form-control>\n <input nz-input appMask=\"0000-00-00\" placeholder=\"1403-12-30\" autocomplete=\"off\" class=\"w-[250px]\" dir=\"ltr\" [(ngModel)]=\"dateTo\"/>\n </nz-form-control>\n </nz-form-item>\n <hr/>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"primary\" class=\"mt-4\" (click)=\"filter()\">فیلتر</button>\n <button nz-button nzType=\"default\" class=\"mt-4\" (click)=\"clear()\">پاکسازی</button>\n </div>\n </div>\n `,\n})\nexport class DateFilter implements IFilterAngularComp {\n @ViewChild('eFilterText') eFilterText!: ElementRef;\n params!: IFilterParams;\n dateFrom = \"\";\n dateTo = \"\";\n\n agInit(params: IFilterParams): void {\n this.params = params;\n }\n\n isFilterActive(): boolean {\n return true;\n }\n\n doesFilterPass(params: IDoesFilterPassParams): boolean {\n let passed = true;\n const { node } = params;\n\n this.dateFrom\n .toLowerCase()\n .split(' ')\n .forEach((filterWord) => {\n const value = this.params.getValue(node);\n if (value.toString().toLowerCase().indexOf(filterWord) < 0) {\n passed = false;\n }\n });\n\n return passed;\n }\n\n getModel() {\n if (!this.isFilterActive()) {\n return null;\n }\n let dateFrom = \"\";\n let dateTo = \"\";\n if (this.dateFrom != null && this.dateFrom) {\n dateFrom = `${this.dateFrom.slice(0, 4)}/${this.dateFrom.slice(4, 6)}/${this.dateFrom.slice(6, 8)}`;\n dateFrom = moment.from(dateFrom, 'fa', 'YYYY/MM/DD').format('YYYY-MM-DD');\n }\n if (this.dateTo != null && this.dateTo) {\n dateTo = `${this.dateTo.slice(0, 4)}/${this.dateTo.slice(4, 6)}/${this.dateTo.slice(6, 8)}`;\n dateTo = moment.from(dateTo, 'fa', 'YYYY/MM/DD').format('YYYY-MM-DD');\n }\n return { dateFrom, dateTo, filterType: 'custom-date' };\n }\n\n setModel(model: any) {\n this.dateFrom = model == null || model.dateFrom == null ? null : model.dateFrom;\n this.dateTo = model == null || model.dateTo == null ? null : model.dateTo;\n }\n\n filter() {\n this.params.filterChangedCallback();\n }\n\n clear() {\n this.dateFrom = this.dateTo = \"\";\n this.filter();\n }\n\n afterGuiAttached(params?: IAfterGuiAttachedParams): void {\n if (!params?.suppressFocus) {\n // focus the input element for keyboard navigation\n this.eFilterText!.nativeElement.focus();\n }\n }\n}","import { NzButtonType } from \"ng-zorro-antd/button\";\n\nexport interface ToolbarItems {\n icon?: string;\n text: string;\n code: 'insert' | 'refresh' | string;\n class?: string;\n type?: NzButtonType;\n loading?: boolean;\n}\n\nexport interface ColumnItems {\n field: string;\n label: string;\n filter?: boolean;\n sortable?: boolean;\n editable?: boolean;\n editItems?: void;\n filterItems?: any;\n minWidth?: number;\n searchField?: string;\n pinned?: boolean | \"left\" | \"right\";\n type?: 'boolean' | 'enum' | 'string' | 'number' | 'select' | 'date' | 'date-time' | 'price' | 'image';\n}\n\nexport interface ActionItems {\n icon: string;\n code: string;\n alt: string;\n}\n\nexport interface DatasourceOutputModel {\n items: any;\n totalCount: number;\n}\n\nexport interface GridActionOutput {\n event: string;\n data: any;\n id: string;\n}\n\nexport interface DialogBodyModel<T> {\n title: string;\n size?: 'sm' | 'md' | 'xl' | 'lg' | 'full';\n data?: T;\n disableFooter?: boolean;\n closable?: boolean;\n class?: string;\n}\n\nexport interface MenuItems {\n title: string;\n path: string;\n icon?: string;\n children?: MenuItems[];\n}\n\nexport interface PolygonData {\n name: string;\n coordinates: number[][];\n color: string;\n editable: boolean;\n data?: any;\n}\n\nexport interface GridInputModel {\n take: number;\n skip: number;\n filter: {\n field: string;\n value: any;\n operator: FilterOperator;\n logic: 'AND' | 'OR';\n disable: boolean;\n truncateDate: boolean;\n ignoreCase: boolean;\n filters: FilterGridItemsModel[],\n },\n sorts: SortModel[],\n data: any;\n}\n\nexport interface SortModel {\n field: string;\n dir: 'asc' | 'desc';\n}\n\nexport interface FilterGridItemsModel {\n field: string;\n value: any;\n operator: FilterOperator;\n logic: 'AND' | 'OR';\n disable: boolean;\n truncateDate: boolean;\n ignoreCase: boolean;\n filters: FilterGridItemsModel[]\n}\n\nexport enum FilterOperator {\n equals = 'EQ',\n notEqual = 'NEQ',\n lessThan = 'LT',\n lessThanOrEqual = 'LTE',\n greaterThan = 'GT',\n greaterThanOrEqual = 'GTE',\n startsWith = 'STARTSWITH',\n endsWith = 'ENDSWITH',\n inRange = 'IN',\n contains = 'LIKE',\n notContains = 'NOTLIKE',\n truncEqual = 'TRUNC_EQ',\n truncNotEqual = 'TRUNC_NEQ',\n truncGreaterThanEqual = 'TRUNC_GTE',\n truncGreaterThan = 'TRUNC_GT',\n truncLessThanOr = 'TRUNC_LT',\n truncLessThanOrEqual = 'TRUNC_LTE',\n between = 'BETWEEN'\n}\n\nexport class SelectModel {\n items: SelectItemsModel[] = [];\n loading?: boolean = false;\n page?: number = null;\n pageSize?: number = null;\n totalCount?: number = null;\n}\n\nexport interface SelectItemsModel {\n id: any;\n title: string;\n data?: any;\n}\n\nexport interface GridRequestParam {\n parentNode: any;\n}\n\nexport interface PolygonEventEmiter {\n lat: number;\n lng: number;\n}\n\nexport interface CropperInputModel {\n file: File;\n aspectRatio: number;\n}","import { Pipe, PipeTransform } from '@angular/core';\nimport * as moment from 'jalali-moment';\n\n@Pipe({ name: 'jdate' })\nexport class JDatePipe implements PipeTransform {\n transform(value: string, time: boolean = false, format = 'YYYY/MM/DD'): string {\n if (value != null) {\n if (!time) {\n return moment.from(value, 'YYYY/MM/DD').locale('fa').format(format);\n } else {\n return moment.from(value, 'YYYY/MM/DD').locale('fa').format('YYYY/MM/DD-HH:mm');\n }\n } else {\n return value;\n }\n }\n}","import { CellDoubleClickedEvent, ColDef, GridApi, GridOptions, IDateFilterParams, IRowNode, IServerSideDatasource, IServerSideGetRowsParams, RowModelType, SetFilterValuesFuncParams, SizeColumnsToContentStrategy, SizeColumnsToFitGridStrategy, SizeColumnsToFitProvidedWidthStrategy } from '@ag-grid-community/core';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ActionItems, ColumnItems, DatasourceOutputModel, FilterGridItemsModel, FilterOperator, GridActionOutput, GridInputModel, GridRequestParam, SortModel, ToolbarItems } from '../../models/shared.model';\nimport { ActionsCellRenderer } from '../index.api';\nimport { JDatePipe } from '../../pipes/date.pipe';\nimport { DateFilter } from './filter/index.api';\nexport interface IOlympicData {\n athlete: string,\n age: number,\n country: string,\n year: number,\n date: string,\n sport: string,\n gold: number,\n silver: number,\n bronze: number,\n total: number\n}\n@Component({\n selector: 'app-grid',\n templateUrl: './grid.component.html',\n})\nexport class GridComponent implements OnInit {\n constructor(\n private _translate: TranslateService\n ) {\n this.datasource = this.createServerSideDatasource();\n }\n private gridApi!: GridApi;\n public isServerSideGroup;\n public getServerSideGroupKey = null;\n public groupDefaultExpanded = -1;\n private _treeGroupColumn: string = null;\n datasource: IServerSideDatasource;\n themeClass: string = \"ag-theme-quartz\";\n columnDefs: ColDef[] = [];\n _column: ColumnItems[] = [];\n _autoColumnSize: SizeColumnsToFitGridStrategy | SizeColumnsToFitProvidedWidthStrategy | SizeColumnsToContentStrategy = { type: 'fitGridWidth' };\n autoGroupColumnDef: ColDef = {\n headerName: \"\",\n minWidth: 250,\n sortable: false,\n cellRendererParams: {\n suppressCount: true,\n },\n filterParams: {\n maxNumConditions: 1\n }\n };\n\n defaultColDef: ColDef = {\n flex: 1,\n minWidth: 150,\n filter: 'agTextColumnFilter',\n suppressHeaderMenuButton: true,\n suppressHeaderContextMenu: true,\n suppressSizeToFit: true\n };\n\n\n @Output()\n onAction: EventEmitter<GridActionOutput> = new EventEmitter();\n\n @Output()\n onToolbar: EventEmitter<ToolbarItems> = new EventEmitter();\n\n @Output()\n onClicked: EventEmitter<any> = new EventEmitter();\n\n @Input()\n label: string = null;\n\n @Input()\n rowModelType: RowModelType = 'serverSide';\n\n @Input()\n serverSideSort: boolean = true;\n\n @Input()\n serverSideFilter: boolean = true;\n\n @Input()\n isToolbar: boolean = true;\n\n @Input()\n rtl: boolean = true;\n\n @Input()\n paginationPageSize = 25;\n\n @Input()\n paginationPageSizeSelector: number[] | boolean = [25];\n\n @Input()\n enableAdvancedFilter: boolean = false;\n\n @Input()\n treeModel: boolean = false;\n\n @Input()\n isLeaf: boolean = false;\n\n @Input()\n rowData: any = null;\n\n @Input()\n public get autoColumnSize(): SizeColumnsToFitGridStrategy | SizeColumnsToFitProvidedWidthStrategy | SizeColumnsToContentStrategy {\n return this._autoColumnSize;\n }\n public set autoColumnSize(v: boolean) {\n if (v) {\n this._autoColumnSize = { type: 'fitCellContents' };\n } else {\n this._autoColumnSize = { type: 'fitGridWidth' };\n }\n }\n\n @Input()\n showAdvancedButton: boolean = true;\n\n @Input()\n actionItems: ActionItems[] = [\n {\n code: 'edit',\n icon: 'fa-light fa-pen',\n alt: 'ویرایش'\n },\n {\n code: 'delete',\n icon: 'fa-light fa-trash',\n alt: 'حذف'\n }\n ];\n\n @Input()\n toolbarItems: ToolbarItems[] = [\n {\n code: 'insert',\n icon: 'plus',\n text: 'ایجاد جدید',\n type: 'primary'\n },\n // {\n // code: 'refresh',\n // icon: 'sync',\n // text: 'بروزرسانی',\n // type: 'default'\n // }\n ];\n\n @Input()\n public get treeGroupColumn() {\n return this.treeGroupColumn;\n }\n public set treeGroupColumn(v: string) {\n if (v) {\n this._treeGroupColumn = v;\n this.isServerSideGroup = dataItem => {\n if (this.isLeaf) {\n if (!dataItem.lastNode)\n return dataItem[v];\n else\n return false\n } else {\n return dataItem[v];\n }\n };\n this.getServerSideGroupKey = dataItem => {\n return dataItem[v];\n };\n // this.autoGroupColumnDef.headerName = v;\n }\n }\n\n @Input()\n fetchData: (filterGrid: GridInputModel, requestParams: GridRequestParam) => Promise<DatasourceOutputModel>;\n\n @Input()\n public get column() {\n return this.column;\n }\n public set column(v: ColumnItems[]) {\n this.columnDefs = [];\n if (v != null) {\n this._column = v;\n v.forEach((el) => {\n var filter: any = 'agTextColumnFilter';\n var sortable: boolean = true;\n var filterParams: IDateFilterParams = {\n maxNumConditions: 1\n };\n switch (el.type) {\n case 'boolean':\n filter = 'agNumberColumnFilter';\n filterParams.filterOptions = [\n \"empty\",\n {\n displayKey: 'true',\n displayName: this._translate.instant('YES'),\n predicate: () => true,\n numberOfInputs: 0\n },\n {\n displayKey: 'false',\n displayName: this._translate.instant('NO'),\n predicate: () => true,\n numberOfInputs: 0\n }\n ];\n break;\n case 'enum':\n filter = 'agNumberColumnFilter';\n const items = [];\n for (const property in el.filterItems) {\n items.push({\n displayKey: el.filterItems[property],\n displayName: this._translate.instant(el.filterItems[property]),\n predicate: true,\n numberOfInputs: 0\n })\n }\n filterParams.filterOptions = [\n \"empty\",\n ...items\n ];\n break;\n case 'number':\n filter = 'agNumberColumnFilter';\n break;\n case 'select':\n filter = 'agSetColumnFilter';\n break;\n case 'string':\n filter = 'agTextColumnFilter';\n break;\n case 'date':\n filter = 'agDateColumnFilter';\n break;\n default:\n filter = 'agTextColumnFilter';\n break;\n }\n if (el.filter != undefined && !el.filter) {\n filter = false;\n }\n if (el.sortable != undefined && !el.sortable) {\n sortable = false;\n }\n if (el.field != this._treeGroupColumn) {\n if (el.type && el.type == 'boolean') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellClass: 'ag-boolean-cell',\n cellRenderer: params => {\n if (params.value != null) {\n return params.value ? '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" stroke=\"green\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-check\"><path d=\"M20 6L9 17L4 12\"/></svg>' : '<svg xmlns=\"http://www.w3.org/2000/svg\" stroke=\"red\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" /></svg>';\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'enum') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n pinned: el.pinned,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n cellRenderer: params => {\n if (params.value) {\n return this._translate.instant(params.value);\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'date') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: DateFilter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return new JDatePipe().transform(params.value);\n } else {\n return '';\n }\n }\n })\n }\n else if (el.type && el.type == 'date-time') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: DateFilter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return new JDatePipe().transform(params.value, true);\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'price') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter: filter,\n sortable,\n editable: el.editable,\n minWidth: el.minWidth ? el.minWidth : null,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return params.value.toLocaleString();\n } else {\n return '';\n }\n }\n })\n } else if (el.type && el.type == 'image') {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n minWidth: 80,\n width: 80,\n filter: false,\n sortable: false,\n editable: false,\n filterParams,\n pinned: el.pinned,\n cellRenderer: params => {\n if (params.value) {\n return `<img class=\"rounded-full mt-1\" width=\"32\" height=\"32\" src=\"${params.value}\"/>`;\n } else {\n return '';\n }\n }\n })\n }\n else {\n this.columnDefs.push({\n field: el.field,\n headerName: el.label,\n filter,\n sortable,\n editable: el.editable,\n filterParams,\n pinned: el.pinned,\n minWidth: el.minWidth ? el.minWidth : null\n })\n }\n } else {\n this.autoGroupColumnDef.field = el.field;\n }\n });\n if (this.actionItems.length > 0) {\n this.columnDefs.push({\n filter: false,\n headerName: '',\n minWidth: 100,\n resizable: true,\n pinned: true,\n sortable: false,\n field: 'actions',\n cellRenderer: ActionsCellRenderer,\n cellRendererParams: {\n onClick: (params: GridActionOutput) => {\n this.onAction.emit(params);\n }\n }\n })\n }\n }\n }\n\n cellDoubleClicked(e: CellDoubleClickedEvent) {\n this.onClicked.emit({...e.data,colId:e.column.getColId()});\n }\n\n handleClick(item: ToolbarItems) {\n this.onToolbar.emit(item);\n }\n\n public refresh(purge = false) {\n if (this.rowModelType == 'serverSide') {\n this.gridApi.refreshServerSide({ purge })\n } else {\n this.rowData = [];\n this.gridApi.refreshCells();\n this.gridApi.setGridOption('columnDefs', this.columnDefs);\n this.gridApi.setGridOption('loading', true);\n this.fetchData(null, null).then(data => {\n this.rowData = data.items;\n this.gridApi.setGridOption('loading', false);\n });\n }\n }\n\n onGridReady(params: any) {\n this.gridApi = params.api;\n if (this.rowModelType == 'clientSide') {\n this.fetchData(null, null).then(data => {\n this.rowData = data.items;\n }).catch(() => {\n params.fail();\n });\n }\n }\n\n advancedFilter() {\n this.enableAdvancedFilter = !this.enableAdvancedFilter;\n setTimeout(() => {\n this.gridApi.showAdvancedFilterBuilder();\n setTimeout(() => {\n (document.getElementsByClassName('ag-icon-maximize')[0] as HTMLElement).click();\n })\n }, 10);\n }\n\n private getRouteToNode(rowNode: IRowNode): string[] {\n if (!rowNode.parent) {\n return [];\n }\n return [\n ...this.getRouteToNode(rowNode.parent),\n rowNode.key ? rowNode.key : rowNode.data.employeeName,\n ];\n }\n\n refreshNode(id: string): void {\n const selectedRows = this.gridApi.getRowNode(id);\n const route = this.getRouteToNode(selectedRows);\n this.gridApi.refreshServerSide({\n purge: true,\n route: route\n });\n }\n\n clearFilter() {\n this.gridApi.setFilterModel(null);\n this.refresh();\n }\n\n refreshParentNode(id: string): void {\n const selectedRows = this.gridApi.getRowNode(id);\n const route = this.getRouteToNode(selectedRows.parent);\n this.gridApi.refreshServerSide({\n purge: true,\n route: route\n });\n }\n\n createServerSideDatasource(): IServerSideDatasource {\n return {\n getRows: (params: IServerSideGetRowsParams) => {\n let filter: FilterGridItemsModel = null;\n if (Object.keys(params.request.filterModel).length > 0) {\n filter = {\n disable: false,\n field: null,\n logic: 'AND',\n filters: [],\n ignoreCase: null,\n operator: null,\n truncateDate: null,\n value: null,\n };\n for (const key in params.request.filterModel) {\n if (params.request.filterModel[key].filterType == 'custom-date') {\n if (params.request.filterModel[key].dateFrom && params.request.filterModel[key].dateTo) {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.between,\n truncateDate: true,\n value: [params.request.filterModel[key].dateFrom, params.request.filterModel[key].dateTo]\n });\n } else if (params.request.filterModel[key].dateFrom) {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.truncGreaterThanEqual,\n truncateDate: true,\n value: params.request.filterModel[key].dateFrom,\n });\n } else if (params.request.filterModel[key].dateTo && params.request.filterModel[key].dateTo != \"\") {\n filter.filters.push({\n disable: false,\n field: key == 'ag-Grid-AutoColumn' ? this._treeGroupColumn : key,\n logic: 'AND',\n filters: null,\n ignoreCase: false,\n operator: FilterOperator.truncLessThanOrEqual,\n truncateDate: true,\n value: params.request.filterModel[key].dateTo,\n });\n }\n } else {\n const operation = FilterOperator[params.request.filterModel[key].type];\n let ignoreCase = true;\n const findEl = this._column.find((el) => el.field == key);\n let field = null;\n if (key == 'ag-Grid-AutoColumn') {\n field = this._treeGroupColumn;\n } else {\n field = key;\n if (findEl.searchField != null) {\n field = findEl.searchField;\n }\n }\n if (findEl && findEl.type == 'enum') {\n ignoreCase = false;\n }\n filter.filters.push({\n disable: false,\n field,\n logic: 'AND',\n filters: null,\n ignoreCase,\n operator: operation ? operation : FilterOperator.equals,\n truncateDate: true,\n value: params.request.filterModel[key].filter ? params.request.filterModel[key].filter : params.request.filterModel[key].type\n })\n }\n }\n }\n let sorts: SortModel[] = [];\n if (params.request.sortModel.length) {\n const findEl = this._column.find((el) => el.field == params.request.sortModel[0].colId);\n if (findEl.searchField != null) {\n sorts = [{\n dir: params.request.sortModel[0].sort,\n field: findEl.searchField\n }];\n } else {\n sorts = [{\n dir: params.request.sortModel[0].sort,\n field: params.request.sortModel[0].colId\n }];\n }\n }\n const gridFilter: GridInputModel = {\n take: params.api.paginationGetPageSize(),\n data: null,\n filter,\n skip: params.api.paginationGetCurrentPage() * params.api.paginationGetPageSize(),\n sorts\n };\n const requestParams: GridRequestParam = {\n parentNode: params.parentNode.data\n };\n this.fetchData(gridFilter, requestParams).then(data => {\n params.success({\n rowData: data.items,\n rowCount: data.totalCount,\n });\n }).catch(() => {\n params.fail();\n });\n }\n };\n }\n\n ngOnInit(): void { }\n}","<!-- <button (click)=\"enableAdvancedFilter=!enableAdvancedFilter\">advanced</button> -->\n<div class=\"flex justify-between items-center mb-4 pb-4 border-b border-b-slate-200\" *ngIf=\"isToolbar\">\n <div>\n <h4 class=\"font-semibold text-2xl\">{{label}}</h4>\n </div>\n <div class=\"flex gap-3\">\n @for (item of toolbarItems; track $index) {\n <button nz-button [nzLoading]=\"item.loading ? item.loading : false\" (click)=\"handleClick(item)\"\n [nzType]=\"item.type\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n {{item.text}}\n </button>\n }\n <button nz-button (click)=\"refresh()\" nzType=\"default\">\n <span nz-icon nzType=\"sync\"></span>\n بروزرسانی\n </button>\n <button nz-button (click)=\"clearFilter()\" nzType=\"default\">\n <span nz-icon nzType=\"clear\"></span>\n پاکسازی\n </button>\n <!-- <button nz-button (click)=\"advancedFilter()\" *ngIf=\"showAdvancedButton\" nzType=\"default\">\n <span nz-icon nzType=\"filter\"></span>\n جستجوی پیشرفته\n </button> -->\n </div>\n</div>\n<ag-grid-angular style=\"width: 100%;\" [style]=\"(isToolbar) ? 'height: calc(100% - 1rem - 48px);':'height: 100%;'\"\n [columnDefs]=\"columnDefs\" [pagination]=\"true\" [paginationPageSize]=\"paginationPageSize\"\n [paginationPageSizeSelector]=\"paginationPageSizeSelector\" [class]=\"themeClass\" [defaultColDef]=\"defaultColDef\"\n [enableAdvancedFilter]=\"enableAdvancedFilter\" [enableRtl]=\"rtl\" [treeData]=\"treeModel\"\n [autoGroupColumnDef]=\"autoGroupColumnDef\" [isServerSideGroup]=\"isServerSideGroup\"\n [getServerSideGroupKey]=\"getServerSideGroupKey\" [rowModelType]=\"rowModelType\" [rowData]=\"rowData\" [serverSideDatasource]=\"datasource\"\n (gridReady)=\"onGridReady($event)\" [cacheBlockSize]=\"paginationPageSize\" [maxBlocksInCache]=\"2\"\n [context]=\"{actionItems: actionItems}\" (cellDoubleClicked)=\"cellDoubleClicked($event)\"\n [autoSizeStrategy]=\"_autoColumnSize\" #grid />","import { ICellRendererAngularComp } from '@ag-grid-community/angular';\nimport { ICellRendererParams } from '@ag-grid-community/core';\nimport { Component } from '@angular/core';\nimport { ActionItems } from '../../../models/shared.model';\n\n@Component({\n selector: 'app-button-renderer',\n templateUrl: `./action-button.component.html`\n})\nexport class ActionsCellRenderer implements ICellRendererAngularComp {\n private params!: any;\n public items: ActionItems[] = [];\n\n agInit(params: ICellRendererParams): void {\n this.params = params;\n this.items = params.context.actionItems;\n }\n\n refresh(params: ICellRendererParams): boolean {\n this.params = params;\n return true;\n }\n\n handleClick(item: ActionItems) {\n this.params.onClick({ data: this.params.data, event: item.code, id: this.params.node.id });\n }\n}\n","<div class=\"h-full flex gap-2 items-center\">\n <button mat-button class=\"min-w-[30px] min-h-[30px] h-[30px]\" *ngFor=\"let item of items\" nz-tooltip [nzTooltipTitle]=\"item.alt\" nzTooltipPlacement=\"bottom\" (click)=\"handleClick(item)\">\n <div class=\"flex justify-center items-center\">\n <i [class]=\"item.icon\"></i>\n </div>\n </button>\n \n</div>","import { Component, ElementRef, EventEmitter, OnInit, Output, ViewChild } from '@angular/core';\n\n@Component({\n selector: 'app-captcha',\n templateUrl: './captcha.component.html',\n})\nexport class CaptchaComponent implements OnInit {\n constructor() { }\n @ViewChild('canvas', { static: true }) captchaCanvas!: ElementRef<HTMLCanvasElement>;\n value: string = '';\n\n @Output()\n valueChange: EventEmitter<string> = new EventEmitter();\n\n generateCode(){\n this.value=Math.round((Math.random() * 1000000)).toString();\n this.drawCaptcha();\n this.valueChange.emit(this.value);\n }\n\n drawCaptcha() {\n const canvas: HTMLCanvasElement = this.captchaCanvas.nativeElement;\n const ctx = canvas.getContext('2d');\n\n if (ctx) {\n // تنظیمات اولیه Canvas\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.font = '30px Arial';\n ctx.fillStyle = '#000';\n ctx.textAlign = 'center';\n\n // وسط‌چین کردن عمودی: تعیین y براساس ارتفاع فونت\n const textX = canvas.width / 2;\n const textY = (canvas.height / 2) + 10;\n\n // رندر کردن متن کپچا\n ctx.fillText(this.value, textX, textY);\n\n // اضافه کردن نویز و خطوط برای پیچیده‌تر کردن کپچا\n for (let i = 0; i < 10; i++) {\n ctx.beginPath();\n ctx.moveTo(Math.random() * canvas.width, Math.random() * canvas.height);\n ctx.lineTo(Math.random() * canvas.width, Math.random() * canvas.height);\n ctx.strokeStyle = '#ccc';\n ctx.stroke();\n }\n }\n }\n\n ngOnInit(): void {\n this.generateCode();\n }\n}\n","<div class=\"rounded-xl border border-slate-200 relative\">\n <canvas #canvas class=\"w-full h-[80px]\"></canvas>\n <div class=\"absolute left-2 top-0 bottom-0 m-auto z-10 flex justify-center items-center\">\n <button nz-button nzShape=\"circle\" type=\"button\" (click)=\"generateCode()\">\n <span nz-icon nzType=\"undo\" nzTheme=\"outline\"></span>\n </button>\n </div>\n</div>","import { Component, AfterViewInit, Input, Output, EventEmitter, SimpleChanges } from '@angular/core';\nimport { PolygonData, PolygonEventEmiter } from '../../models/shared.model';\ndeclare let L: any;\n@Component({\n selector: 'app-map',\n templateUrl: './map.component.html',\n styleUrls: ['./map.component.scss']\n})\nexport class MapComponent implements AfterViewInit {\n constructor() { }\n public map: any;\n private drawnItems = new L.FeatureGroup();\n\n @Input()\n editable: boolean = false;\n\n @Input()\n polygons: PolygonData[] = [];\n\n @Input()\n drawPolygon: boolean = false;\n\n @Input()\n drawCircle: boolean = false;\n\n @Input()\n drawPolyline: boolean = false;\n\n @Input()\n drawRectangle: boolean = false;\n\n @Input()\n drawMarker: boolean = false;\n\n @Input()\n zoom: number = 13;\n\n @Input()\n center: number[] = [35.6961, 51.4231];\n\n @Output()\n onCreatePolygon: EventEmitter<PolygonEventEmiter[]> = new EventEmitter();\n\n @Output()\n onEditPolygon: EventEmitter<PolygonEventEmiter[]> = new EventEmitter();\n\n private initMap(): void {\n if (L && L.map && L.Control && L.Control.Draw) {\n if (this.center.length == 0) {\n this.center = [35.6961, 51.4231];\n }\n this.map = L.map('map').setView(this.center, this.zoom);\n\n L.tileLayer('https://raster.snappmaps.ir/styles/snapp-style/{z}/{x}/{y}@2x.webp', {\n maxZoom: 18,\n }).addTo(this.map);\n\n this.map.addLayer(this.drawnItems);\n const drawControl = new L.Control.Draw({\n edit: this.editable ? {\n featureGroup: this.drawnItems\n } : null,\n draw: {\n polygon: this.drawPolygon,\n polyline: this.drawPolyline,\n circle: this.drawCircle,\n rectangle: this.drawRectangle,\n marker: this.drawMarker,\n circlemarker: false,\n }\n });\n this.map.addControl(drawControl);\n if (L.Draw && L.Draw.Event && L.Draw.Event.CREATED) {\n this.map.on(L.Draw.Event.CREATED, (event: any) => {\n this.onCreatePolygon.emit(event.layer._latlngs[0]);\n const layer = event.layer;\n this.drawnItems.addLayer(layer);\n });\n this.map.on(L.Draw.Event.EDITED, (event: any) => {\n const polygon = [];\n event.layers.eachLayer((layer: any) => {\n layer._latlngs[0].forEach(element => {\n polygon.push({\n lat: element.lat,\n lng: element.lng\n });\n });\n });\n this.onEditPolygon.emit(polygon);\n });\n } else {\n console.error('Leaflet Draw Event is not available.');\n }\n } else {\n console.error('Leaflet or Leaflet Draw is not correctly loaded.');\n }\n }\n\n private addPolygonsToMap(): void {\n this.polygons.forEach(polygon => {\n // polygon.coordinates.forEach((el) => {\n // el.reverse();\n // });\n const layer = L.polygon(polygon.coordinates, { color: polygon.color }).addTo(this.map);\n\n // اضافه کردن لیبل به پالیگان\n layer.bindTooltip(polygon.name, { permanent: true, direction: 'center', className: 'font-[yekanBakh]' }).openTooltip();\n if (polygon.editable) {\n // اضافه کردن پالیگان به drawnItems برای ویرایش\n this.drawnItems.addLayer(layer);\n }\n });\n }\n\n clearMap() {\n this.map.eachLayer((layer) => {\n if (!(layer instanceof L.TileLayer)) {\n this.map.removeLayer(layer);\n }\n });\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['polygons']) {\n this.clearMap();\n this.addPolygonsToMap();\n }\n if (changes['center'] || changes['zoom']) {\n if (this.map) {\n this.map.setView(this.center, this.zoom);\n }\n }\n }\n\n ngAfterViewInit(): void {\n this.initMap();\n this.addPolygonsToMap();\n }\n}\n","<div class=\"map-container\">\n <div class=\"map-frame\">\n <div id=\"map\" #mapElement></div>\n <!-- <button mat-flat-button (click)=\"currentLocation()\" *ngIf=\"allowCurrentLocation\">\n <i class=\"fa-solid fa-location-crosshairs\"></i>\n </button> -->\n </div>\n</div>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-spinner',\n templateUrl: './spinner.component.html'\n})\nexport class SpinnerComponent implements OnInit {\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"w-full h-full absolute top-0 left-0 flex justify-center items-center bg-white z-10\">\n <nz-spin nzSimple nzSize=\"large\" nzSimple></nz-spin>\n</div>","import { ComponentRef, inject, Injector, ViewContainerRef } from \"@angular/core\";\nimport { NZ_MODAL_DATA, NzModalRef } from \"ng-zorro-antd/modal\";\nimport { SpinnerComponent } from \"../components/index.api\";\n\nexport abstract class PopoverComponent<DataModel> {\n data: DataModel | null = inject(NZ_MODAL_DATA, { optional: true });\n dialogRef: NzModalRef | null = inject(NzModalRef, { optional: true });\n viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\n injector: Injector = inject(Injector);\n\n private spinnerRef: ComponentRef<any> | null = null;\n public get loadingDialog() {\n return this.loadingDialog;\n }\n public set loadingDialog(value: boolean) {\n if (value) {\n this.spinnerRef = this.viewContainerRef.createComponent(SpinnerComponent, {\n injector: this.injector,\n });\n } else {\n this.spinnerRef.destroy();\n this.spinnerRef = null;\n }\n }\n abstract onOk(): Promise<any>;\n abstract onCancel(): Promise<any>;\n\n onClose(data?: any) {\n this.dialogRef.close(data);\n }\n}","import { Component, OnInit } from '@angular/core';\nimport { PopoverComponent } from '../../class/index.api';\nimport { ImageCroppedEvent } from 'ngx-image-cropper';\nimport { CropperInputModel } from '../../models/shared.model';\nimport { ToastService } from '../../services/index.api';\n\n@Component({\n templateUrl: './image-cropper.popover.html',\n})\nexport class ImageCropperPopover extends PopoverComponent<CropperInputModel> implements OnInit {\n constructor(\n private _toast: ToastService\n ) {\n super()\n }\n croppedImage: File = null;\n\n imageCropped(event: ImageCroppedEvent) {\n this.croppedImage = new File([event.blob], this.data.file.name, { type: event.blob.type });\n }\n\n loadImageFailed() {\n this._toast.show('خطا در لود تصویر', 'error');\n }\n\n override onOk(): Promise<any> {\n return Promise.resolve({\n file: this.croppedImage\n });\n }\n\n override onCancel(): Promise<any> {\n return Promise.resolve();\n }\n\n ngOnInit(): void {\n }\n}\n","<image-cropper\n [imageFile]=\"data.file\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"data.aspectRatio\"\n format=\"png\"\n (imageCropped)=\"imageCropped($event)\"\n (loadImageFailed)=\"loadImageFailed()\"\n class=\"max-h-[400px]\"\n></image-cropper>","\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { NzUploadFile } from 'ng-zorro-antd/upload';\nimport { Observable, Observer, Subscription } from 'rxjs';\nimport { ToastService } from '../../services/toast.service';\nimport { DialogService, SharedService } from '../../services/index.api';\nimport Compressor from 'compressorjs';\nimport { ImageCropperPopover } from '../../popover/index.api';\nimport { CropperInputModel } from '../../models/shared.model';\n\n@Component({\n selector: 'app-uploader',\n templateUrl: './uploader.component.html',\n})\nexport class UploaderComponent implements OnInit {\n constructor(\n @Inject('environment') environment,\n private _toast: ToastService,\n private _http: HttpClient,\n private _sharedService: SharedService,\n private _dialog: DialogService\n ) {\n this.env = environment;\n }\n loading = false;\n env = null;\n avatarUrl?: string;\n _avatarUid: string = null;\n _fileUploaded: File = null;\n\n @Input()\n maxWithSize: number = 1024;\n\n @Input()\n cropper: boolean = false;\n\n @Input()\n aspectRatio: number = 1 / 1;\n\n @Input()\n isCompress: boolean = true;\n\n @Input()\n public get avatar() {\n return this.avatarUrl;\n }\n public set avatar(v: string) {\n if (v) {\n this._avatarUid = v;\n this.loading = true;\n this._sharedService.getFile(v).then((res) => {\n this.avatarUrl = res;\n }).finally(() => {\n this.loading = false;\n })\n }\n }\n\n @Output()\n onUploaded: EventEmitter<string> = new EventEmitter();\n\n\n customRequest = (item: any) => {\n // return Subscription\n const subscription = new Subscription();\n\n const uploadFile = (file: File) => {\n this.loading = true;\n if(this.isCompress){\n this.resizeImage(file).then((res) => {\n const isLt1M = res.size! / 1024 / 1024 < 1;\n if (!isLt1M) {\n this._toast.show('Image must smaller than 1MB!', 'error');\n subscription.unsubscribe();\n this.loading = false;\n return;\n }\n const formData = new FormData();\n formData.append('file', res as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n this._fileUploaded = res;\n subscription.add(\n this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, file, event);\n }\n },\n (err) => {\n item.onError(err, file);\n }\n )\n );\n }).catch(() => {\n this.loading = false;\n });\n } else {\n const isLt1M = file.size! / 1024 / 1024 < 1;\n if (!isLt1M) {\n this._toast.show('Image must smaller than 1MB!', 'error');\n subscription.unsubscribe();\n this.loading = false;\n return;\n }\n const formData = new FormData();\n formData.append('file', file as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n this._fileUploaded = file;\n subscription.add(\n this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, file, event);\n }\n },\n (err) => {\n item.onError(err, file);\n }\n )\n );\n }\n \n }\n\n if (this.cropper) {\n this._dialog.open<CropperInputModel>(ImageCropperPopover, {\n title: 'برش تصویر',\n data: {\n file: item.file,\n aspectRatio: this.aspectRatio\n }\n }).afterClose.subscribe((res) => {\n if (res.file) {\n uploadFile(res.file);\n }\n });\n } else {\n uploadFile(item.file);\n }\n\n return subscription;\n };\n\n beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]): Observable<boolean> =>\n new Observable((observer: Observer<boolean>) => {\n const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/webp';\n if (!isJpgOrPng) {\n this._toast.show('You can only upload JPG,PNG,WEBP file!', 'error');\n observer.complete();\n return;\n }\n observer.next(isJpgOrPng);\n observer.complete();\n });\n\n private getBase64(img: File, callback: (img: string) => void): void {\n const reader = new FileReader();\n reader.addEventListener('load', () => callback(reader.result!.toString()));\n reader.readAsDataURL(img);\n }\n\n handleChange(info: any): void {\n switch (info.file.status) {\n case 'uploading':\n this.loading = true;\n break;\n case 'done':\n debugger\n this.getBase64(this._fileUploaded, (img: string) => {\n this.loading = false;\n this.avatarUrl = img;\n this.onUploaded.emit(info.file.response);\n });\n break;\n case 'error':\n this.loading = false;\n break;\n }\n }\n\n resizeImage(base64Str): Promise<File> {\n return new Promise((resolve, reject) => {\n new Compressor(base64Str, {\n quality: 1,\n maxWidth: this.maxWithSize,\n success(result) {\n resolve(result as File);\n },\n error(err) {\n reject(err);\n }\n });\n });\n }\n\n ngOnInit(): void { }\n}\n","<nz-upload class=\"w-[128px] h-[128px] overflow-hidden\" nzAction=\"{{env.apiUrl}}/file\" nzName=\"file\"\n nzListType=\"picture-card\" [nzShowUploadList]=\"false\" [nzBeforeUpload]=\"beforeUpload\"\n (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n @if (!avatarUrl) {\n <span class=\"upload-icon\" nz-icon [nzType]=\"loading ? 'loading' : 'plus'\"></span>\n <div class=\"ant-upload-text\">Upload</div>\n } @else {\n <img [src]=\"avatarUrl\" class=\"max-w-full max-h-full\" />\n }\n</nz-upload>","\nimport { HttpClient, HttpRequest, HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Inject, Input, OnInit, Output } from '@angular/core';\nimport { NzUploadFile } from 'ng-zorro-antd/upload';\nimport { Observable, Observer } from 'rxjs';\nimport { ToastService } from '../../services/toast.service';\n@Component({\n selector: 'app-upload-file',\n templateUrl: './upload-file.component.html',\n})\nexport class UploadFileComponent implements OnInit {\n constructor(\n @Inject('environment') environment,\n private _toast: ToastService,\n private _http: HttpClient,\n ) {\n this.env = environment;\n }\n loading = false;\n env = null;\n avatarUrl?: string;\n _avatarUid: string = null;\n fileList: NzUploadFile[] = [];\n\n @Input()\n acceptFileType: string = null;\n\n @Input()\n type: 'serverSide' | 'clientSide' = 'serverSide';\n\n @Output()\n onUploaded: EventEmitter<string> = new EventEmitter();\n\n handleChangeClientSide(e) {\n this.onUploaded.emit(e.file);\n }\n\n customRequest = (item: any) => {\n const formData = new FormData();\n formData.append('file', item.file as any);\n const req = new HttpRequest('POST', `${this.env.apiUrl}/file`, formData, {\n reportProgress: true,\n responseType: 'text' as 'json',\n });\n return this._http.request(req).subscribe(\n (event: any) => {\n if (event instanceof HttpResponse) {\n item.onSuccess(event.body, item.file, event);\n }\n },\n (err) => {\n item.onError(err, item.file);\n }\n );\n };\n\n beforeUpload = (file: NzUploadFile, _fileList: NzUploadFile[]): Observable<boolean> =>\n new Observable((observer: Observer<boolean>) => {\n let checkType = file.type === this.acceptFileType;\n if (this.acceptFileType != null) {\n if (!checkType) {\n this._toast.show('You can only upload JPG,PNG,WEBP file!', 'error');\n observer.complete();\n return;\n }\n } else {\n checkType = true;\n }\n const isLt2M = file.size! / 1024 / 1024 < 3;\n if (!isLt2M) {\n this._toast.show('Image must smaller than 2MB!', 'error');\n observer.complete();\n return;\n }\n observer.next(checkType && isLt2M);\n observer.complete();\n });\n\n handleChange(info: any): void {\n switch (info.file.status) {\n case 'uploading':\n this.loading = true;\n break;\n case 'done':\n this.onUploaded.emit(info.file.response);\n break;\n case 'error':\n this.loading = false;\n break;\n }\n }\n\n ngOnInit(): void { }\n}\n","@if(type == 'serverSide'){\n <nz-upload nzName=\"file\" nzType=\"drag\"\n [nzBeforeUpload]=\"beforeUpload\" (nzChange)=\"handleChange($event)\" [nzCustomRequest]=\"customRequest\">\n <p class=\"ant-upload-drag-icon\">\n <span nz-icon nzType=\"inbox\"></span>\n </p>\n <p class=\"ant-upload-text\">برای آپلود، روی فایل کلیک کنید یا آن را به این قسمت بکشید</p>\n <p class=\"ant-upload-hint\">\n حداکثر حجم قابل قبول برای اپلود ۳ مگابایت می باشد\n </p>\n </nz-upload>\n} @else {\n <nz-upload nzName=\"file\" nzType=\"drag\" [nzBeforeUpload]=\"beforeUpload\" (nzChange)=\"handleChangeClientSide($event)\">\n <p class=\"ant-upload-drag-icon\">\n <span nz-icon nzType=\"inbox\"></span>\n </p>\n <p class=\"ant-upload-text\">برای آپلود، روی فایل کلیک کنید یا آن را به این قسمت بکشید</p>\n <p class=\"ant-upload-hint\">\n حداکثر حجم قابل قبول برای اپلود ۳ مگابایت می باشد\n </p>\n </nz-upload>\n}","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[charInput]',\n})\nexport class CharInputDirective {\n constructor(private el: ElementRef, private control: NgControl, public renderer: Renderer2) { }\n\n @Input()\n allowPersianChar: boolean = false;\n\n @Input()\n allowEnglishChar: boolean = false;\n\n @Input()\n allowLocalChar: boolean = true;\n\n\n @HostListener('input', ['$event']) onEvent($event: InputEvent) {\n const englishPattern = /^[A-Za-z\\u0600-\\u06FF ]+$/;\n const persianPattern = /^[\\u0600-\\u06FF ]+$/;\n let value = this.el.nativeElement.value;\n if (this.allowEnglishChar) {\n if (!englishPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n } else if (!persianPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n this.el.nativeElement.value = value;\n this.control.control.setValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', value);\n return value;\n }\n}","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: '[englishNumberInput]',\n})\nexport class EnglishNumberInputDirective {\n constructor(private el: ElementRef, private control: NgControl, public renderer: Renderer2) { }\n\n @HostListener('input', ['$event']) onEvent($event: InputEvent) {\n var persianNumbers = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g],\n arabicNumbers = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g],\n fixNumbers = function (str) {\n if (typeof str === 'string') {\n for (var i = 0; i < 10; i++) {\n str = str.replace(persianNumbers[i], i).replace(arabicNumbers[i], i);\n }\n }\n return str;\n };\n const numberPattern = /^\\d+$/;\n let value = fixNumbers(this.el.nativeElement.value);\n\n if (!numberPattern.test(value)) {\n value = value.replaceAll($event.data, '');\n }\n this.el.nativeElement.value = value;\n this.control.control.setValue(value);\n this.renderer.setProperty(this.el.nativeElement, 'value', value);\n return value;\n }\n}","import {\n Directive,\n Attribute,\n Renderer2,\n ElementRef,\n HostListener,\n Input\n} from '@angular/core';\nimport { SharedService } from '../services/index.api';\n\n@Directive({\n selector: '[imageLoader]'\n})\nexport class ImageLoaderDirective {\n constructor(\n @Attribute('loader') public loader: string,\n @Attribute('onErrorSrc') public onErrorSrc: string,\n private renderer: Renderer2,\n private el: ElementRef,\n private _http: SharedService\n ) {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.loader);\n }\n\n _imageSrc: string = null;\n\n @Input()\n public get imageSrc() {\n return this._imageSrc;\n }\n public set imageSrc(v: string) {\n if (v != null) {\n this._http.getFile(v).then((res) => {\n this.renderer.setAttribute(this.el.nativeElement, 'src', res);\n })\n }\n this._imageSrc = v;\n }\n\n // @HostListener('load') onLoad() {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.el.nativeElement.src);\n // }\n // @HostListener('error') onError() {\n // this.renderer.setAttribute(this.el.nativeElement, 'src', this.onErrorSrc);\n // }\n}","import { Injectable } from '@angular/core';\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\nimport { Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuard implements CanActivate {\n constructor(private _router: Router) { }\n canActivate(\n route: ActivatedRouteSnapshot,\n state: RouterStateSnapshot\n ): Observable<boolean> | Promise<boolean> | boolean {\n if (localStorage.getItem('userInfo')) {\n return true\n }\n this._router.navigate(['/auth']);\n return false;\n }\n}\n","import { Component, ComponentFactoryResolver, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { MenuItems } from '../../models/shared.model';\nimport { SharedService } from '../../services/shared.service';\nimport { ConfirmService } from '../../services/confirm.service';\n\n@Component({\n templateUrl: './master.layout.html',\n styleUrls: ['./master.layout.scss']\n})\nexport class MasterLayout implements OnInit {\n constructor(\n private _service: SharedService,\n private _confirm: ConfirmService,\n private componentFactoryResolver: ComponentFactoryResolver\n ) { }\n @ViewChild('dynamicComponentContainer', { read: ViewContainerRef }) container: ViewContainerRef;\n isCollapsed = false;\n menuItems: MenuItems[] = [];\n\n logout() {\n this._confirm.confirm(() => {\n localStorage.clear();\n location.reload();\n return Promise.resolve();\n })\n }\n\n loadComponent(component: any) {\n this.container.clear();\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n this.container.createComponent(componentFactory);\n }\n\n ngAfterViewInit(): void {\n setTimeout(() => {\n // this.loadComponent(this._ac.);\n }, 500)\n }\n\n ngOnInit(): void {\n this.menuItems = this._service.menuItems;\n }\n}\n","<nz-layout class=\"app-layout\">\n <nz-sider class=\"menu-sidebar bg-white\" nzCollapsible nzWidth=\"256px\" nzBreakpoint=\"md\"\n [(nzCollapsed)]=\"isCollapsed\" [nzTrigger]=\"null\">\n <div class=\"p-4\">\n <div class=\"flex justify-center items-center border-b !border-b-slate-200 pb-4\">\n <img width=\"100\" src=\"assets/images/logo.svg\" alt=\"\">\n </div>\n </div>\n <ul nz-menu nzMode=\"inline\" [nzInlineCollapsed]=\"isCollapsed\">\n @for (item of menuItems; track item.title) {\n @if(item.children){\n <li nz-submenu [nzTitle]=\"item.title\" [nzIcon]=\"item.icon\">\n <ul nz-menu-group>\n @for (subitem of item.children; track subitem.title) {\n <li nz-menu-item [routerLink]=\"subitem.path\">{{subitem.title}}</li>\n }\n </ul>\n </li>\n } @else{\n <li nz-menu-item [routerLink]=\"item.path\">\n <span nz-icon [nzType]=\"item.icon\"></span>\n <span>{{item.title}}</span>\n </li>\n }\n }\n </ul>\n </nz-sider>\n <nz-layout>\n <nz-header>\n <div class=\"app-header p-4 flex justify-between items-center\">\n <div>\n <button nz-button nzType=\"text\" (click)=\"isCollapsed = !isCollapsed\">\n <span class=\"text-2xl\" nz-icon nzType=\"menu\"></span>\n </button>\n </div>\n <div class=\"flex gap-2\">\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"global\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"user\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\"><span nz-icon\n nzType=\"bell\"></span></button>\n <button nz-button nzType=\"text\" nzSize=\"large\" nzShape=\"circle\" (click)=\"logout()\"><span nz-icon\n nzType=\"poweroff\"></span></button>\n </div>\n </div>\n </nz-header>\n <nz-content>\n <!-- <nz-tabset nzType=\"editable-card\">\n <nz-tab nzClosable nzTitle=\"درخت سرویس\">\n <div class=\"inner-content rounded-md overflow-auto\">\n <div #dynamicComponentContainer></div>\n </div>\n </nz-tab>\n </nz-tabset> -->\n <div class=\"inner-content rounded-md overflow-auto\">\n <router-outlet></router-outlet>\n </div>\n </nz-content>\n </nz-layout>\n</nz-layout>","import { Component, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './blank.layout.html',\n})\nexport class BlankLayout implements OnInit {\n constructor() { }\n\n ngOnInit(): void { }\n}\n","<div class=\"w-full h-full\">\n <router-outlet></router-outlet>\n</div>","import { AgGridModule } from '@ag-grid-community/angular';\nimport { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model';\nimport { ModuleRegistry } from '@ag-grid-community/core';\nimport { AdvancedFilterModule } from '@ag-grid-enterprise/advanced-filter';\nimport { LicenseManager } from '@ag-grid-enterprise/core';\nimport { MasterDetailModule } from '@ag-grid-enterprise/master-detail';\nimport { MultiFilterModule } from '@ag-grid-enterprise/multi-filter';\nimport { RowGroupingModule } from '@ag-grid-enterprise/row-grouping';\nimport { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model';\nimport { SetFilterModule } from '@ag-grid-enterprise/set-filter';\nimport { CdkMenuModule } from '@angular/cdk/menu';\nimport { CommonModule } from '@angular/common';\nimport { HttpClient, HttpClientModule } from '@angular/common/http';\nimport { APP_INITIALIZER, CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { RouterModule } from \"@angular/router\";\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzFormModule } from 'ng-zorro-antd/form';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzInputModule } from 'ng-zorro-antd/input';\nimport { NzLayoutModule } from 'ng-zorro-antd/layout';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\nimport { NzMessageModule } from 'ng-zorro-antd/message';\nimport { NzModalModule } from 'ng-zorro-antd/modal';\nimport { NzSpinModule } from 'ng-zorro-antd/spin';\nimport { NzTabsModule } from 'ng-zorro-antd/tabs';\nimport { NzToolTipModule } from 'ng-zorro-antd/tooltip';\nimport { NzTreeViewModule } from 'ng-zorro-antd/tree-view';\nimport { NzUploadModule } from 'ng-zorro-antd/upload';\nimport { ImageCropperComponent } from 'ngx-image-cropper';\nimport { JDatePipe } from '../public-api';\nimport { DateFilter } from './components/grid/filter/index.api';\nimport { ActionsCellRenderer, CaptchaComponent, GridComponent, MapComponent, SpinnerComponent, UploaderComponent, UploadFileComponent } from './components/index.api';\nimport { CharInputDirective, EnglishNumberInputDirective, ImageLoaderDirective, MaskDirective } from './directive/index.api';\nimport { AuthGuard } from './guard/index.api';\nimport { BlankLayout, MasterLayout } from './layouts/index.api';\nimport { ImageCropperPopover } from './popover/image-cropper/image-cropper.popover';\nimport { ConfirmService } from './services/index.api';\nimport { NzCollapseModule } from 'ng-zorro-antd/collapse';\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '.json?v=' + Date.now());\n}\n\nLicenseManager.prototype.isDisplayWatermark = () => {\n return false;\n}\nLicenseManager.prototype.validateLicense = () => {\n\n}\n\nModuleRegistry.registerModules([\n ClientSideRowModelModule,\n SetFilterModule,\n MultiFilterModule,\n MasterDetailModule,\n AdvancedFilterModule,\n ServerSideRowModelModule,\n RowGroupingModule\n]);\n\nexport function initializeApp(): Promise<any> {\n return new Promise((resolve, reject) => {\n if (typeof window !== 'undefined') {\n resolve(true);\n } else {\n reject();\n }\n });\n}\n\nconst Layouts = [\n MasterLayout,\n BlankLayout\n];\n\nconst Components = [\n GridComponent,\n ActionsCellRenderer,\n CaptchaComponent,\n MapComponent,\n SpinnerComponent,\n UploaderComponent,\n UploadFileComponent,\n DateFilter\n];\n\nconst Popover: any[] = [\n ImageCropperPopover\n];\n\nconst Directive = [\n EnglishNumberInputDirective,\n CharInputDirective,\n MaskDirective,\n ImageLoaderDirective\n];\n\nconst Pipes = [\n JDatePipe\n]\n\nconst Guard = [\n AuthGuard\n];\n\nconst Services = [\n ConfirmService\n]\n\nconst Modules = [\n HttpClientModule,\n CommonModule,\n AgGridModule,\n HttpClientModule,\n CdkMenuModule,\n NzLayoutModule,\n NzMenuModule,\n NzIconModule,\n NzButtonModule,\n NzModalModule,\n NzMessageModule,\n NzToolTipModule,\n NzTabsModule,\n NzTreeViewModule,\n NzSpinModule,\n FormsModule,\n NzInputModule,\n NzFormModule,\n NzUploadModule,\n NzCollapseModule,\n ImageCropperComponent,\n TranslateModule.forRoot({\n defaultLanguage: 'fa',\n useDefaultLang: true,\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n }\n })\n];\n\n@NgModule({\n declarations: [\n ...Layouts,\n ...Components,\n ...Popover,\n ...Directive,\n ...Pipes\n ],\n imports: [\n RouterModule,\n ...Modules\n ],\n exports: [\n ...Layouts,\n ...Components,\n ...Popover,\n ...Directive,\n ...Pipes\n ],\n schemas: [\n CUSTOM_ELEMENTS_SCHEMA\n ],\n providers: [\n ...Guard,\n ...Services,\n { provide: APP_INITIALIZER, useFactory: initializeApp, multi: true }\n ]\n})\nexport class SharedModule { }\n","import { Pipe, PipeTransform } from \"@angular/core\";\n\n@Pipe({\n name: 'timer',\n})\nexport class TimerPipe implements PipeTransform {\n transform(value: number): string {\n const hours: number = Math.floor(value / 3600);\n const minutes: number = Math.floor((value % 3600) / 60);\n const seconds: number = value % 60;\n\n if (value >= 3601) {\n return (\n ('00' + hours).slice(-2) +\n ':' +\n ('00' + minutes).slice(-2) +\n ':' +\n ('00' + seconds).slice(-2)\n );\n }\n\n else {\n return (\n ('00' + minutes).slice(-2) +\n ':' +\n ('00' + seconds).slice(-2)\n );\n }\n }\n}\n\n","/*\n * Public API Surface of shared\n */\n\nexport * from './lib/services/index.api';\nexport * from './lib/shared.module';\nexport * from './lib/layouts/index.api';\nexport * from './lib/components/index.api';\nexport * from './lib/models/index.api';\nexport * from './lib/class/index.api';\nexport * from './lib/guard/index.api';\nexport * from './lib/pipes/index.api';\nexport * from './lib/directive/index.api';\nexport * from './lib/components/grid/filter/index.api';\nexport * from './lib/popover/index.api';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","Directive","moment","i2","i4","i8.MaskDirective","i3","i5","i6","i7","i1.ToastService","i3.SharedService","i3.DialogService","i1.SharedService","i2.ConfirmService","i8"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fixa-admin",
3
- "version": "0.0.41",
3
+ "version": "0.0.42",
4
4
  "peerDependencies": {
5
5
  "@ag-grid-community/angular": "^32.2.2",
6
6
  "@ag-grid-community/client-side-row-model": "^32.2.2",