UNPKG

tolga-ng2

Version:

Angular 2/4 components and directives

86 lines 15.8 kB
import { Component, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; import * as i2 from "@angular/forms"; export class NgsmTablepagerComponent { constructor() { this.totalNumberOfRecords = 0; this.selectedPageSize = 10; this.selectedPage = 0; this.onPageSizeChange = new EventEmitter(); this.onPageChange = new EventEmitter(); this.numberOfPagesDisplayed = 5; this.totalNumberOfPages = 0; this.pageSizes = [{ title: "10 Records", value: 10 }, { title: "25 Records", value: 25 }, { title: "50 Records", value: 50 }, { title: "100 Records", value: 100 }]; } ngOnChanges(changes) { //this.ngsmService.log("ngsmTablepager", "ngOnChanges"); if (this.totalNumberOfRecords && this.selectedPageSize) this.totalNumberOfPages = Math.ceil(this.totalNumberOfRecords / this.selectedPageSize); } setPage(page) { //this.ngsmService.log("ngsmTablepager", `setPage: ${page}`); this.selectedPage = page; if (this.selectedPage < 0) this.selectedPage = 0; if (this.selectedPage >= this.totalNumberOfPages) this.selectedPage = this.totalNumberOfPages; this.onPageChange.emit(this.selectedPage); } setPageSize(pageSize) { this.selectedPageSize = pageSize; //this.ngsmService.log("ngsmTablepager", `setPageSize: ${pageSize}`); this.totalNumberOfPages = Math.ceil(this.totalNumberOfRecords / this.selectedPageSize); this.onPageSizeChange.emit(pageSize); } range() { if (this.totalNumberOfPages === 0 || this.totalNumberOfPages === 1) return []; let start = this.selectedPage - 2; if (start < 0) start = 0; let end = start + this.numberOfPagesDisplayed; if (end > this.totalNumberOfPages) { end = this.totalNumberOfPages; start = end - this.numberOfPagesDisplayed; } if (start < 0) start = 0; if (start > end) return []; let ret = []; for (var i = start; i !== end; ++i) { ret.push(i); } return ret; } } NgsmTablepagerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgsmTablepagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); NgsmTablepagerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NgsmTablepagerComponent, selector: "ngsm-tablepager", inputs: { totalNumberOfRecords: "totalNumberOfRecords", selectedPageSize: "selectedPageSize", selectedPage: "selectedPage" }, outputs: { onPageSizeChange: "onPageSizeChange", onPageChange: "onPageChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"ui pagination menu\">\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage > 0\"\r\n (click)=\"setPage(0)\">\r\n <i class=\"angle double left icon\"></i>\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage > 0\"\r\n (click)=\"setPage(selectedPage - 1)\">\r\n <i class=\"angle left icon\"></i>\r\n </a>\r\n <a class=\"item\"\r\n *ngFor=\"let r of range()\"\r\n [ngClass]=\"{active: selectedPage === r}\"\r\n (click)=\"setPage(r)\">\r\n {{r+1}}\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage < (totalNumberOfPages-1)\"\r\n (click)=\"setPage(selectedPage + 1)\">\r\n <i class=\"angle right icon\"></i>\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage < (totalNumberOfPages-1)\"\r\n (click)=\"setPage(totalNumberOfPages-1)\">\r\n <i class=\"angle double right icon\"></i>\r\n </a>\r\n <select [(ngModel)]=\"selectedPageSize\"\r\n (ngModelChange)=\"setPageSize($event)\"\r\n placeholder=\"Transactions per Page\"\r\n *ngIf=\"totalNumberOfRecords>0\"\r\n class=\"ui fluid dropdown\"\r\n style=\"border:1px solid white;\">\r\n <option *ngFor=\"let pageSize of pageSizes\"\r\n [value]=\"pageSize.value\">{{pageSize.title}}\r\n </option>\r\n </select>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgsmTablepagerComponent, decorators: [{ type: Component, args: [{ selector: 'ngsm-tablepager', template: "<div class=\"ui pagination menu\">\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage > 0\"\r\n (click)=\"setPage(0)\">\r\n <i class=\"angle double left icon\"></i>\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage > 0\"\r\n (click)=\"setPage(selectedPage - 1)\">\r\n <i class=\"angle left icon\"></i>\r\n </a>\r\n <a class=\"item\"\r\n *ngFor=\"let r of range()\"\r\n [ngClass]=\"{active: selectedPage === r}\"\r\n (click)=\"setPage(r)\">\r\n {{r+1}}\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage < (totalNumberOfPages-1)\"\r\n (click)=\"setPage(selectedPage + 1)\">\r\n <i class=\"angle right icon\"></i>\r\n </a>\r\n <a class=\"icon item\"\r\n *ngIf=\"selectedPage < (totalNumberOfPages-1)\"\r\n (click)=\"setPage(totalNumberOfPages-1)\">\r\n <i class=\"angle double right icon\"></i>\r\n </a>\r\n <select [(ngModel)]=\"selectedPageSize\"\r\n (ngModelChange)=\"setPageSize($event)\"\r\n placeholder=\"Transactions per Page\"\r\n *ngIf=\"totalNumberOfRecords>0\"\r\n class=\"ui fluid dropdown\"\r\n style=\"border:1px solid white;\">\r\n <option *ngFor=\"let pageSize of pageSizes\"\r\n [value]=\"pageSize.value\">{{pageSize.title}}\r\n </option>\r\n </select>\r\n</div>" }] }], ctorParameters: function () { return []; }, propDecorators: { totalNumberOfRecords: [{ type: Input }], selectedPageSize: [{ type: Input }], selectedPage: [{ type: Input }], onPageSizeChange: [{ type: Output }], onPageChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdzbS10YWJsZXBhZ2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbmdzbS9jb21wb25lbnRzL25nc20tdGFibGVwYWdlci9uZ3NtLXRhYmxlcGFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9uZ3NtL2NvbXBvbmVudHMvbmdzbS10YWJsZXBhZ2VyL25nc20tdGFibGVwYWdlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7O0FBT2xGLE1BQU0sT0FBTyx1QkFBdUI7SUEwQmxDO1FBeEJTLHlCQUFvQixHQUFXLENBQUMsQ0FBQztRQUNqQyxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFDOUIsaUJBQVksR0FBVyxDQUFDLENBQUM7UUFDeEIscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEUsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUUxRSwyQkFBc0IsR0FBRyxDQUFDLENBQUM7UUFDM0IsdUJBQWtCLEdBQVcsQ0FBQyxDQUFDO1FBQy9CLGNBQVMsR0FBVSxDQUFDO2dCQUNsQixLQUFLLEVBQUUsWUFBWTtnQkFDbkIsS0FBSyxFQUFFLEVBQUU7YUFDVixFQUFFO2dCQUNELEtBQUssRUFBRSxZQUFZO2dCQUNuQixLQUFLLEVBQUUsRUFBRTthQUNWLEVBQUU7Z0JBQ0QsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLEtBQUssRUFBRSxFQUFFO2FBQ1YsRUFBRTtnQkFDRCxLQUFLLEVBQUUsYUFBYTtnQkFDcEIsS0FBSyxFQUFFLEdBQUc7YUFDWCxDQUFDLENBQUM7SUFJYSxDQUFDO0lBRWpCLFdBQVcsQ0FBQyxPQUFPO1FBQ2pCLHdEQUF3RDtRQUN4RCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3BELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsT0FBTyxDQUFDLElBQUk7UUFDViw2REFBNkQ7UUFDN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUM7WUFBRSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLGtCQUFrQjtZQUFFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQzlGLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQVE7UUFDbEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztRQUNqQyxxRUFBcUU7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGtCQUFrQixLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM5RSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUVsQyxJQUFJLEtBQUssR0FBRyxDQUFDO1lBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUV6QixJQUFJLEdBQUcsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1FBQzlDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUNqQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQzlCLEtBQUssR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDO1NBQzNDO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7UUFFekIsSUFBSSxLQUFLLEdBQUcsR0FBRztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBRTNCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDbEMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNiO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztvSEF0RVUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsMlJDUHBDLHV3Q0FxQ007MkZEOUJPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxpQkFBaUI7MEVBTWxCLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmdzbS10YWJsZXBhZ2VyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmdzbS10YWJsZXBhZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uZ3NtLXRhYmxlcGFnZXIuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3NtVGFibGVwYWdlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcblxyXG4gIEBJbnB1dCgpIHRvdGFsTnVtYmVyT2ZSZWNvcmRzOiBudW1iZXIgPSAwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUGFnZVNpemU6IG51bWJlciA9IDEwO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkUGFnZTogbnVtYmVyID0gMDtcclxuICBAT3V0cHV0KCkgb25QYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBAT3V0cHV0KCkgb25QYWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICBudW1iZXJPZlBhZ2VzRGlzcGxheWVkID0gNTtcclxuICB0b3RhbE51bWJlck9mUGFnZXM6IG51bWJlciA9IDA7XHJcbiAgcGFnZVNpemVzOiBhbnlbXSA9IFt7XHJcbiAgICB0aXRsZTogXCIxMCBSZWNvcmRzXCIsXHJcbiAgICB2YWx1ZTogMTBcclxuICB9LCB7XHJcbiAgICB0aXRsZTogXCIyNSBSZWNvcmRzXCIsXHJcbiAgICB2YWx1ZTogMjVcclxuICB9LCB7XHJcbiAgICB0aXRsZTogXCI1MCBSZWNvcmRzXCIsXHJcbiAgICB2YWx1ZTogNTBcclxuICB9LCB7XHJcbiAgICB0aXRsZTogXCIxMDAgUmVjb3Jkc1wiLFxyXG4gICAgdmFsdWU6IDEwMFxyXG4gIH1dO1xyXG5cclxuICBcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlcykge1xyXG4gICAgLy90aGlzLm5nc21TZXJ2aWNlLmxvZyhcIm5nc21UYWJsZXBhZ2VyXCIsIFwibmdPbkNoYW5nZXNcIik7XHJcbiAgICBpZiAodGhpcy50b3RhbE51bWJlck9mUmVjb3JkcyAmJiB0aGlzLnNlbGVjdGVkUGFnZVNpemUpXHJcbiAgICAgIHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxOdW1iZXJPZlJlY29yZHMgLyB0aGlzLnNlbGVjdGVkUGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnZShwYWdlKSB7XHJcbiAgICAvL3RoaXMubmdzbVNlcnZpY2UubG9nKFwibmdzbVRhYmxlcGFnZXJcIiwgYHNldFBhZ2U6ICR7cGFnZX1gKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRQYWdlID0gcGFnZTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGFnZSA8IDApIHRoaXMuc2VsZWN0ZWRQYWdlID0gMDtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkUGFnZSA+PSB0aGlzLnRvdGFsTnVtYmVyT2ZQYWdlcykgdGhpcy5zZWxlY3RlZFBhZ2UgPSB0aGlzLnRvdGFsTnVtYmVyT2ZQYWdlcztcclxuICAgIHRoaXMub25QYWdlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgc2V0UGFnZVNpemUocGFnZVNpemUpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRQYWdlU2l6ZSA9IHBhZ2VTaXplO1xyXG4gICAgLy90aGlzLm5nc21TZXJ2aWNlLmxvZyhcIm5nc21UYWJsZXBhZ2VyXCIsIGBzZXRQYWdlU2l6ZTogJHtwYWdlU2l6ZX1gKTtcclxuICAgIHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzID0gTWF0aC5jZWlsKHRoaXMudG90YWxOdW1iZXJPZlJlY29yZHMgLyB0aGlzLnNlbGVjdGVkUGFnZVNpemUpO1xyXG4gICAgdGhpcy5vblBhZ2VTaXplQ2hhbmdlLmVtaXQocGFnZVNpemUpO1xyXG4gIH1cclxuXHJcbiAgcmFuZ2UoKTogYW55W10ge1xyXG4gICAgaWYgKHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzID09PSAwIHx8IHRoaXMudG90YWxOdW1iZXJPZlBhZ2VzID09PSAxKSByZXR1cm4gW107XHJcbiAgICBsZXQgc3RhcnQgPSB0aGlzLnNlbGVjdGVkUGFnZSAtIDI7XHJcblxyXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xyXG5cclxuICAgIGxldCBlbmQgPSBzdGFydCArIHRoaXMubnVtYmVyT2ZQYWdlc0Rpc3BsYXllZDtcclxuICAgIGlmIChlbmQgPiB0aGlzLnRvdGFsTnVtYmVyT2ZQYWdlcykge1xyXG4gICAgICBlbmQgPSB0aGlzLnRvdGFsTnVtYmVyT2ZQYWdlcztcclxuICAgICAgc3RhcnQgPSBlbmQgLSB0aGlzLm51bWJlck9mUGFnZXNEaXNwbGF5ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwO1xyXG5cclxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xyXG5cclxuICAgIGxldCByZXQgPSBbXTtcclxuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSAhPT0gZW5kOyArK2kpIHtcclxuICAgICAgcmV0LnB1c2goaSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0O1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInVpIHBhZ2luYXRpb24gbWVudVwiPlxyXG4gIDxhIGNsYXNzPVwiaWNvbiBpdGVtXCJcclxuICAgICpuZ0lmPVwic2VsZWN0ZWRQYWdlID4gMFwiXHJcbiAgICAoY2xpY2spPVwic2V0UGFnZSgwKVwiPlxyXG4gICAgPGkgY2xhc3M9XCJhbmdsZSBkb3VibGUgbGVmdCBpY29uXCI+PC9pPlxyXG4gIDwvYT5cclxuICA8YSBjbGFzcz1cImljb24gaXRlbVwiXHJcbiAgICAqbmdJZj1cInNlbGVjdGVkUGFnZSA+IDBcIlxyXG4gICAgKGNsaWNrKT1cInNldFBhZ2Uoc2VsZWN0ZWRQYWdlIC0gMSlcIj5cclxuICAgIDxpIGNsYXNzPVwiYW5nbGUgbGVmdCBpY29uXCI+PC9pPlxyXG4gIDwvYT5cclxuICA8YSBjbGFzcz1cIml0ZW1cIlxyXG4gICAgKm5nRm9yPVwibGV0IHIgb2YgcmFuZ2UoKVwiXHJcbiAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBzZWxlY3RlZFBhZ2UgPT09IHJ9XCJcclxuICAgIChjbGljayk9XCJzZXRQYWdlKHIpXCI+XHJcbiAgICB7e3IrMX19XHJcbiAgPC9hPlxyXG4gIDxhIGNsYXNzPVwiaWNvbiBpdGVtXCJcclxuICAgICpuZ0lmPVwic2VsZWN0ZWRQYWdlIDwgKHRvdGFsTnVtYmVyT2ZQYWdlcy0xKVwiXHJcbiAgICAoY2xpY2spPVwic2V0UGFnZShzZWxlY3RlZFBhZ2UgKyAxKVwiPlxyXG4gICAgPGkgY2xhc3M9XCJhbmdsZSByaWdodCBpY29uXCI+PC9pPlxyXG4gIDwvYT5cclxuICA8YSBjbGFzcz1cImljb24gaXRlbVwiXHJcbiAgICAqbmdJZj1cInNlbGVjdGVkUGFnZSA8ICh0b3RhbE51bWJlck9mUGFnZXMtMSlcIlxyXG4gICAgKGNsaWNrKT1cInNldFBhZ2UodG90YWxOdW1iZXJPZlBhZ2VzLTEpXCI+XHJcbiAgICA8aSBjbGFzcz1cImFuZ2xlIGRvdWJsZSByaWdodCBpY29uXCI+PC9pPlxyXG4gIDwvYT5cclxuICA8c2VsZWN0IFsobmdNb2RlbCldPVwic2VsZWN0ZWRQYWdlU2l6ZVwiXHJcbiAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRQYWdlU2l6ZSgkZXZlbnQpXCJcclxuICAgIHBsYWNlaG9sZGVyPVwiVHJhbnNhY3Rpb25zIHBlciBQYWdlXCJcclxuICAgICpuZ0lmPVwidG90YWxOdW1iZXJPZlJlY29yZHM+MFwiXHJcbiAgICBjbGFzcz1cInVpIGZsdWlkIGRyb3Bkb3duXCJcclxuICAgIHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCB3aGl0ZTtcIj5cclxuICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHBhZ2VTaXplIG9mIHBhZ2VTaXplc1wiXHJcbiAgICAgIFt2YWx1ZV09XCJwYWdlU2l6ZS52YWx1ZVwiPnt7cGFnZVNpemUudGl0bGV9fVxyXG4gICAgPC9vcHRpb24+XHJcbiAgPC9zZWxlY3Q+XHJcbjwvZGl2PiJdfQ==