air-lib
Version:
This is Air's angular component library
253 lines • 23.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, Input } from '@angular/core';
import { PagingService } from '../../services/paging.service';
import { ActivatedRoute } from '@angular/router';
var DetailsPagingComponent = /** @class */ (function () {
function DetailsPagingComponent(route) {
this.route = route;
}
/**
* @return {?}
*/
DetailsPagingComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
/** @type {?} */
var self = this;
self.setOptions();
};
/**
* @return {?}
*/
DetailsPagingComponent.prototype.setOptions = /**
* @return {?}
*/
function () {
/** @type {?} */
var self = this;
/** @type {?} */
var firstLevelActivatedRoute = self.route.children[0];
if (firstLevelActivatedRoute) {
/** @type {?} */
var localStorageValue = PagingService.readFromLocalStorage(firstLevelActivatedRoute.snapshot);
if (localStorageValue) {
self.options = localStorageValue;
}
}
if (!self.options || self.options == null || self.options.hash === 'empty') {
return;
}
self.init(self.options);
};
/**
* @param {?} options
* @return {?}
*/
DetailsPagingComponent.prototype.init = /**
* @param {?} options
* @return {?}
*/
function (options) {
/** @type {?} */
var self = this;
self.options = options;
if (!self.options || self.options == null) {
return;
}
self.options.backUrl = decodeURIComponent(self.options.backUrl);
self.isVisible = self.options
&& self.options.currentIndex !== undefined
&& self.options.startIndex !== undefined
&& self.options.total !== undefined;
if (self.isVisible) {
self.links = self.getLinks(self.options.currentIndex + 1, self.lastIndex + 1);
}
};
Object.defineProperty(DetailsPagingComponent.prototype, "lastIndex", {
get: /**
* @return {?}
*/
function () {
return this.options.startIndex + this.options.total - 1;
},
enumerable: true,
configurable: true
});
/**
* @return {?}
*/
DetailsPagingComponent.prototype.first = /**
* @return {?}
*/
function () {
this.options.currentIndex = this.options.startIndex;
this.go(this.options.currentIndex);
};
/**
* @return {?}
*/
DetailsPagingComponent.prototype.previous = /**
* @return {?}
*/
function () {
if (this.options && this.options.currentIndex === this.options.startIndex) {
return;
}
this.options.currentIndex = this.options.currentIndex - 1;
this.go(this.options.currentIndex);
};
/**
* @param {?} index
* @return {?}
*/
DetailsPagingComponent.prototype.goTo = /**
* @param {?} index
* @return {?}
*/
function (index) {
if (index < this.options.startIndex || index > this.lastIndex) {
throw Error('Out of range, should be between ' + this.options.startIndex + ' and ' + this.lastIndex);
}
this.options.previousIndex = this.options.currentIndex;
this.options.currentIndex = index;
console.log('Current index is ' + this.options.currentIndex + ', last index is ' + this.lastIndex);
this.go(this.options.currentIndex);
};
/**
* @return {?}
*/
DetailsPagingComponent.prototype.next = /**
* @return {?}
*/
function () {
if (this.options && this.options.currentIndex === this.lastIndex) {
return;
}
this.options.currentIndex++;
this.go(this.options.currentIndex);
};
/**
* @return {?}
*/
DetailsPagingComponent.prototype.last = /**
* @return {?}
*/
function () {
this.options.currentIndex = this.lastIndex;
this.go(this.options.currentIndex);
};
/**
* @param {?} index
* @return {?}
*/
DetailsPagingComponent.prototype.go = /**
* @param {?} index
* @return {?}
*/
function (index) {
this.links = this.getLinks(this.options.currentIndex + 1, this.lastIndex + 1);
console.log('fire paging event, index is ' + index);
/** @type {?} */
var masterListHashIndex = Math.floor(this.options.currentIndex / this.options.itemsOnPage);
if (PagingService.isExistsHash(this.context, masterListHashIndex)) {
this.options.hash = PagingService.getHash(this.context, masterListHashIndex);
}
PagingService.firePagingEvent(this.options);
};
/**
* @param {?} current
* @param {?} last
* @return {?}
*/
DetailsPagingComponent.prototype.getLinks = /**
* @param {?} current
* @param {?} last
* @return {?}
*/
function (current, last) {
var e_1, _a;
/** @type {?} */
var delta = 1;
/** @type {?} */
var left = current - delta;
/** @type {?} */
var right = current + delta + 1;
/** @type {?} */
var range = new Array();
/** @type {?} */
var rangeWithDots = new Array();
/** @type {?} */
var l;
for (var i = 1; i <= last; i++) {
if (i === 1 || i === last || i >= left && i < right) {
range.push(i);
}
}
try {
for (var range_1 = tslib_1.__values(range), range_1_1 = range_1.next(); !range_1_1.done; range_1_1 = range_1.next()) {
var i = range_1_1.value;
if (l) {
if (i - l === 2) {
rangeWithDots.push(l + 1);
}
else if (i - l !== 1) {
rangeWithDots.push('...');
}
}
rangeWithDots.push(i.toString());
l = i;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (range_1_1 && !range_1_1.done && (_a = range_1.return)) _a.call(range_1);
}
finally { if (e_1) throw e_1.error; }
}
return rangeWithDots;
};
DetailsPagingComponent.decorators = [
{ type: Component, args: [{
selector: 'air-details-paging',
template: "<div class=\"container-list-pagination\" [hidden]=\"!isVisible\">\r\n <div *ngIf=\"displayReturnBackUrl && options\" [routerLink]=\"[options.backUrl]\" class=\"block-list-access\">\r\n <i class=\"fa fa-list p-r-10\" aria-hidden=\"true\"></i>{{'earnings.Header.BackToList' | translate}} </div>\r\n \r\n <div class=\"dataTables_wrapper container-pagination form-inline no-footer\">\r\n <ul class=\"pagination-list clear_after\" [hidden]=\"!options || options.total === 1 || options.total === 0\">\r\n <li>\r\n <a class=\"paginate_button previous\" [ngClass]=\"{'disabled': options?.currentIndex===options?.startIndex}\" (click)=\"previous()\">\r\n <i class=\"fa fa-angle-left\" aria-hidden=\"true\"></i>\r\n </a>\r\n </li>\r\n \r\n <li class=\"button-list\" *ngFor=\"let pageNo of links;\" \r\n [ngClass]=\"{ 'active': options && options.currentIndex === pageNo-1 }\">\r\n <a *ngIf=\"pageNo!=='...'\" (click)=\"goTo(pageNo-1)\">{{pageNo}}</a>\r\n <span class=\"disabled\" *ngIf=\"pageNo=='...'\">...</span>\r\n </li>\r\n \r\n <li>\r\n <a class=\"paginate_button last\" [ngClass]=\"{'disabled': options && options.currentIndex === lastIndex}\" (click)=\"next()\">\r\n <i class=\"fa fa-angle-right\" aria-hidden=\"true\"></i>\r\n </a>\r\n </li>\r\n \r\n </ul>\r\n </div>\r\n</div>",
providers: [PagingService],
styles: [".container-list-pagination{display:flex;align-items:center;height:55px;justify-content:flex-end}.container-list-pagination .block-list-access{cursor:pointer}.container-list-pagination .container-pagination{padding:0 0 0 10px;position:relative}.container-list-pagination .pagination-list{margin:0;padding:10px 0;list-style:none;font-size:11px}.container-list-pagination .pagination-list li{float:left;list-style:none}.container-list-pagination .pagination-list li a{font-size:11px;color:#999;padding:6px 9px}.container-list-pagination .pagination-list li .paginate_button{padding:6px 5px}.container-list-pagination .pagination-list li a:hover:not(.disabled){color:#000}.container-list-pagination .pagination-list li .disabled{cursor:default}.container-list-pagination .pagination-list li a.first:hover:not(.disabled),.container-list-pagination .pagination-list li a.last:hover:not(.disabled),.container-list-pagination .pagination-list li a.next:hover:not(.disabled),.container-list-pagination .pagination-list li a.previous:hover:not(.disabled){cursor:pointer}.container-list-pagination .pagination-list li.active a{font-weight:700;color:#000}.container-list-pagination .pagination-list li .fa{font-weight:500;font-size:12px}.container-list-pagination .pagination-list .button-list{padding:0;cursor:pointer}@media (max-width:500px){.container-list-pagination{justify-content:space-between}.container-list-pagination .block-list-access{font-size:0}.container-list-pagination .block-list-access i{font-size:19px}}"]
}] }
];
DetailsPagingComponent.ctorParameters = function () { return [
{ type: ActivatedRoute }
]; };
DetailsPagingComponent.propDecorators = {
displayReturnBackUrl: [{ type: Input }],
itemsOnPage: [{ type: Input }],
context: [{ type: Input }]
};
return DetailsPagingComponent;
}());
export { DetailsPagingComponent };
if (false) {
/** @type {?} */
DetailsPagingComponent.prototype.displayReturnBackUrl;
/** @type {?} */
DetailsPagingComponent.prototype.itemsOnPage;
/** @type {?} */
DetailsPagingComponent.prototype.context;
/** @type {?} */
DetailsPagingComponent.prototype.isVisible;
/** @type {?} */
DetailsPagingComponent.prototype.links;
/** @type {?} */
DetailsPagingComponent.prototype.options;
/**
* @type {?}
* @private
*/
DetailsPagingComponent.prototype.route;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlscy1wYWdpbmcuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vYWlyLWxpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2RldGFpbHMtcGFnaW5nL2RldGFpbHMtcGFnaW5nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJakQ7SUFpQkUsZ0NBQW9CLEtBQXFCO1FBQXJCLFVBQUssR0FBTCxLQUFLLENBQWdCO0lBRXpDLENBQUM7Ozs7SUFFRCx5Q0FBUTs7O0lBQVI7O1lBRVEsSUFBSSxHQUFHLElBQUk7UUFDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7Ozs7SUFFRCwyQ0FBVTs7O0lBQVY7O1lBQ1EsSUFBSSxHQUFHLElBQUk7O1lBQ1gsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksd0JBQXdCLEVBQUU7O2dCQUN0QixpQkFBaUIsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDO1lBQy9GLElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7YUFDbEM7U0FDRjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtZQUMxRSxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQixD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Qjs7O0lBQ2pDLHNEQUF1Qzs7SUFDdkMsNkNBQTZCOztJQUM3Qix5Q0FBeUI7O0lBRXpCLDJDQUFtQjs7SUFDbkIsdUNBQWE7O0lBQ2IseUNBQXFCOzs7OztJQUdULHVDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFBhZ2luZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9wYWdpbmcuc2VydmljZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgUGFnaW5nRXZlbnQgfSBmcm9tICcuLi8uLi9lbnRpdGllcy9wYWdpbmctZXZlbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYWlyLWRldGFpbHMtcGFnaW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGV0YWlscy1wYWdpbmcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RldGFpbHMtcGFnaW5nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbUGFnaW5nU2VydmljZV1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxzUGFnaW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBASW5wdXQoKSBkaXNwbGF5UmV0dXJuQmFja1VybDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpdGVtc09uUGFnZTogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGNvbnRleHQ6IHN0cmluZztcclxuXHJcbiAgaXNWaXNpYmxlOiBib29sZWFuO1xyXG4gIGxpbmtzOiBhbnlbXTsgLy8gYXJyYXkgb2YgbGlua3NcclxuICBvcHRpb25zOiBQYWdpbmdFdmVudDtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICBzZWxmLnNldE9wdGlvbnMoKTtcclxuICB9XHJcblxyXG4gIHNldE9wdGlvbnMoKSB7XHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIGNvbnN0IGZpcnN0TGV2ZWxBY3RpdmF0ZWRSb3V0ZSA9IHNlbGYucm91dGUuY2hpbGRyZW5bMF07XHJcbiAgICBpZiAoZmlyc3RMZXZlbEFjdGl2YXRlZFJvdXRlKSB7XHJcbiAgICAgIGNvbnN0IGxvY2FsU3RvcmFnZVZhbHVlID0gUGFnaW5nU2VydmljZS5yZWFkRnJvbUxvY2FsU3RvcmFnZShmaXJzdExldmVsQWN0aXZhdGVkUm91dGUuc25hcHNob3QpO1xyXG4gICAgICBpZiAobG9jYWxTdG9yYWdlVmFsdWUpIHtcclxuICAgICAgICBzZWxmLm9wdGlvbnMgPSBsb2NhbFN0b3JhZ2VWYWx1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICghc2VsZi5vcHRpb25zIHx8IHNlbGYub3B0aW9ucyA9PSBudWxsIHx8IHNlbGYub3B0aW9ucy5oYXNoID09PSAnZW1wdHknKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHNlbGYuaW5pdChzZWxmLm9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgaW5pdCAob3B0aW9uczogUGFnaW5nRXZlbnQpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucztcclxuICAgIGlmICghc2VsZi5vcHRpb25zIHx8IHNlbGYub3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBzZWxmLm9wdGlvbnMuYmFja1VybCA9IGRlY29kZVVSSUNvbXBvbmVudChzZWxmLm9wdGlvbnMuYmFja1VybCk7XHJcblxyXG4gICAgc2VsZi5pc1Zpc2libGUgPSBzZWxmLm9wdGlvbnNcclxuICAgICAgJiYgc2VsZi5vcHRpb25zLmN1cnJlbnRJbmRleCAhPT0gdW5kZWZpbmVkXHJcbiAgICAgICYmIHNlbGYub3B0aW9ucy5zdGFydEluZGV4ICE9PSB1bmRlZmluZWRcclxuICAgICAgJiYgc2VsZi5vcHRpb25zLnRvdGFsICE9PSB1bmRlZmluZWQ7XHJcblxyXG4gICAgaWYgKHNlbGYuaXNWaXNpYmxlKSB7XHJcbiAgICAgIHNlbGYubGlua3MgPSBzZWxmLmdldExpbmtzKHNlbGYub3B0aW9ucy5jdXJyZW50SW5kZXggKyAxLCBzZWxmLmxhc3RJbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGxhc3RJbmRleCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zdGFydEluZGV4ICsgdGhpcy5vcHRpb25zLnRvdGFsIC0gMTtcclxuICB9XHJcblxyXG4gIGZpcnN0KCkge1xyXG4gICAgdGhpcy5vcHRpb25zLmN1cnJlbnRJbmRleCA9IHRoaXMub3B0aW9ucy5zdGFydEluZGV4O1xyXG4gICAgdGhpcy5nbyh0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIHByZXZpb3VzKCkge1xyXG4gICAgaWYodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXg9PT10aGlzLm9wdGlvbnMuc3RhcnRJbmRleClcclxuICAgIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmN1cnJlbnRJbmRleCA9IHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXggLSAxO1xyXG4gICAgdGhpcy5nbyh0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIGdvVG8oaW5kZXg6IG51bWJlcikge1xyXG4gICAgaWYgKGluZGV4IDwgdGhpcy5vcHRpb25zLnN0YXJ0SW5kZXggfHwgaW5kZXggPiB0aGlzLmxhc3RJbmRleCkge1xyXG4gICAgICB0aHJvdyBFcnJvcignT3V0IG9mIHJhbmdlLCBzaG91bGQgYmUgYmV0d2VlbiAnICsgdGhpcy5vcHRpb25zLnN0YXJ0SW5kZXggKyAnIGFuZCAnICsgdGhpcy5sYXN0SW5kZXgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLnByZXZpb3VzSW5kZXggPSB0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4O1xyXG4gICAgdGhpcy5vcHRpb25zLmN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgY29uc29sZS5sb2coJ0N1cnJlbnQgaW5kZXggaXMgJyArIHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXggKyAnLCBsYXN0IGluZGV4IGlzICcgKyB0aGlzLmxhc3RJbmRleCk7XHJcbiAgICB0aGlzLmdvKHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgbmV4dCgpIHtcclxuICAgIGlmKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4ID09PSB0aGlzLmxhc3RJbmRleClcclxuICAgIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcHRpb25zLmN1cnJlbnRJbmRleCsrO1xyXG4gICAgdGhpcy5nbyh0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4KTtcclxuICB9XHJcblxyXG4gIGxhc3QoKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4ID0gdGhpcy5sYXN0SW5kZXg7XHJcbiAgICB0aGlzLmdvKHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXgpO1xyXG4gIH1cclxuXHJcbiAgZ28oaW5kZXg6IG51bWJlcikge1xyXG5cclxuICAgIHRoaXMubGlua3MgPSB0aGlzLmdldExpbmtzKHRoaXMub3B0aW9ucy5jdXJyZW50SW5kZXggKyAxLCB0aGlzLmxhc3RJbmRleCArIDEpO1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdmaXJlIHBhZ2luZyBldmVudCwgaW5kZXggaXMgJyArIGluZGV4KTtcclxuXHJcbiAgICBjb25zdCBtYXN0ZXJMaXN0SGFzaEluZGV4ID0gTWF0aC5mbG9vcih0aGlzLm9wdGlvbnMuY3VycmVudEluZGV4IC8gdGhpcy5vcHRpb25zLml0ZW1zT25QYWdlKTtcclxuICAgIGlmIChQYWdpbmdTZXJ2aWNlLmlzRXhpc3RzSGFzaCh0aGlzLmNvbnRleHQsIG1hc3Rlckxpc3RIYXNoSW5kZXgpKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy5oYXNoID0gUGFnaW5nU2VydmljZS5nZXRIYXNoKHRoaXMuY29udGV4dCwgbWFzdGVyTGlzdEhhc2hJbmRleCk7XHJcbiAgICB9XHJcblxyXG4gICAgUGFnaW5nU2VydmljZS5maXJlUGFnaW5nRXZlbnQodGhpcy5vcHRpb25zKTtcclxuICB9XHJcblxyXG4gIGdldExpbmtzKGN1cnJlbnQ6IG51bWJlciwgbGFzdDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCBkZWx0YSA9IDE7XHJcbiAgICBjb25zdCBsZWZ0ID0gY3VycmVudCAtIGRlbHRhO1xyXG4gICAgY29uc3QgcmlnaHQgPSBjdXJyZW50ICsgZGVsdGEgKyAxO1xyXG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xyXG4gICAgY29uc3QgcmFuZ2VXaXRoRG90cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICBsZXQgbDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBsYXN0OyBpKyspIHtcclxuICAgICAgaWYgKGkgPT09IDEgfHwgaSA9PT0gbGFzdCB8fCBpID49IGxlZnQgJiYgaSA8IHJpZ2h0KSB7XHJcbiAgICAgICAgcmFuZ2UucHVzaChpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgaSBvZiByYW5nZSkge1xyXG4gICAgICBpZiAobCkge1xyXG4gICAgICAgIGlmIChpIC0gbCA9PT0gMikge1xyXG4gICAgICAgICAgcmFuZ2VXaXRoRG90cy5wdXNoKGwgKyAxKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGkgLSBsICE9PSAxKSB7XHJcbiAgICAgICAgICByYW5nZVdpdGhEb3RzLnB1c2goJy4uLicpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByYW5nZVdpdGhEb3RzLnB1c2goaS50b1N0cmluZygpKTtcclxuICAgICAgbCA9IGk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJhbmdlV2l0aERvdHM7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gIFRlc3QgaXQ6XHJcbiAgaHR0cHM6Ly9yZXh0ZXN0ZXIuY29tL0hVTzI1ODM3XHJcbiAgKi9cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=