ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
318 lines • 21.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, HostBinding, ViewEncapsulation } from '@angular/core';
var SliderMarksComponent = /** @class */ (function () {
function SliderMarksComponent(_elf) {
this._elf = _elf;
this.markArray = [];
this._min = 0;
this._max = 100;
this._marks = {};
this._included = true;
this._className = 'am-slider-mark';
this.onChange = new EventEmitter();
this.onAfterChange = new EventEmitter();
}
Object.defineProperty(SliderMarksComponent.prototype, "min", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value <= this._max) {
this._min = value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "max", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value >= this._min) {
this._max = value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "marks", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._marks = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "included", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._included = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "upperBound", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value !== this._upperBound) {
this._upperBound = value;
this.setActiveCls();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "lowerBound", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value !== this.lowerBound) {
this._lowerBound = value;
this.setActiveCls();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarksComponent.prototype, "class", {
get: /**
* @return {?}
*/
function () {
return this._className;
},
enumerable: true,
configurable: true
});
/**
* @param {?} marksKeys
* @return {?}
*/
SliderMarksComponent.prototype.getMarks = /**
* @param {?} marksKeys
* @return {?}
*/
function (marksKeys) {
var _this = this;
this.markArray = [];
marksKeys
.map(parseFloat)
.sort((/**
* @param {?} a
* @param {?} b
* @return {?}
*/
function (a, b) { return a - b; }))
.map((/**
* @param {?} point
* @return {?}
*/
function (point) {
var _a;
/** @type {?} */
var markItem = {
markLabel: '',
point: '',
className: {},
style: {}
};
/** @type {?} */
var markPoint = _this._marks[point];
/** @type {?} */
var markPointIsObject = typeof markPoint === 'object';
/** @type {?} */
var markLabel = markPointIsObject ? markPoint.label : markPoint;
if (!markLabel && markLabel !== 0) {
return null;
}
/** @type {?} */
var isActive = (!_this._included && point === _this._upperBound) ||
(_this._included && point <= _this._upperBound && point >= _this._lowerBound);
/** @type {?} */
var markClassName = (_a = {},
_a[_this._className + "-text"] = true,
_a[_this._className + "-text-active"] = isActive,
_a);
/** @type {?} */
var bottomStyle = {
marginBottom: '-50%',
bottom: ((point - _this._min) / _this._range) * 100 + "%"
};
/** @type {?} */
var leftStyle = {
width: _this._markWidth + "%",
marginLeft: -_this._markWidth / 2 + "%",
left: ((point - _this._min) / _this._range) * 100 + "%"
};
/** @type {?} */
var style = leftStyle;
/** @type {?} */
var markStyle = markPointIsObject ? tslib_1.__assign({}, style, markPoint.style) : style;
markItem.markLabel = markLabel;
markItem.point = point;
markItem.className = Object.keys(markClassName).join(' ');
markItem.style = markStyle;
_this.markArray.push(markItem);
}));
};
/**
* @return {?}
*/
SliderMarksComponent.prototype.setActiveCls = /**
* @return {?}
*/
function () {
var _a;
for (var i = 0; i < this.markArray.length; i++) {
/** @type {?} */
var point = this.markArray[i].point;
/** @type {?} */
var isActive = (!this._included && point === this._upperBound) ||
(this._included && point <= this._upperBound && point >= this._lowerBound);
this.markArray[i].className = (_a = {},
_a[this._className + "-text"] = true,
_a[this._className + "-text-active"] = isActive,
_a);
}
};
/**
* @return {?}
*/
SliderMarksComponent.prototype.setMarksLable = /**
* @return {?}
*/
function () {
for (var i = 0; i < this.markArray.length; i++) {
/** @type {?} */
var markEle = this._elf.nativeElement.getElementsByClassName(this._className + '-text')[i];
markEle.innerHTML = this.markArray[i].markLabel;
}
};
/**
* @return {?}
*/
SliderMarksComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
/** @type {?} */
var marksKeys = Object.keys(this._marks);
/** @type {?} */
var marksCount = marksKeys.length;
/** @type {?} */
var unit = marksCount > 1 ? 100 / (marksCount - 1) : 100;
this._markWidth = unit * 0.9;
this._range = this._max - this._min;
this.getMarks(marksKeys);
};
/**
* @return {?}
*/
SliderMarksComponent.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.setMarksLable();
};
SliderMarksComponent.decorators = [
{ type: Component, args: [{
selector: 'SliderMarks, nzm-slider-marks',
template: "<span *ngFor=\"let item of markArray\" [ngClass]=\"item.className\" [ngStyle]=\"item.style\"> </span>\n",
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
SliderMarksComponent.ctorParameters = function () { return [
{ type: ElementRef }
]; };
SliderMarksComponent.propDecorators = {
min: [{ type: Input }],
max: [{ type: Input }],
marks: [{ type: Input }],
included: [{ type: Input }],
upperBound: [{ type: Input }],
lowerBound: [{ type: Input }],
onChange: [{ type: Output }],
onAfterChange: [{ type: Output }],
class: [{ type: HostBinding }]
};
return SliderMarksComponent;
}());
export { SliderMarksComponent };
if (false) {
/** @type {?} */
SliderMarksComponent.prototype.markArray;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._min;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._max;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._marks;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._included;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._className;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._upperBound;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._lowerBound;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._range;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._markWidth;
/** @type {?} */
SliderMarksComponent.prototype.onChange;
/** @type {?} */
SliderMarksComponent.prototype.onAfterChange;
/**
* @type {?}
* @private
*/
SliderMarksComponent.prototype._elf;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLW1hcmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1tYXJrcy9zbGlkZXItbWFya3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQThERSw4QkFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQXhEcEMsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLFNBQUksR0FBVyxHQUFHLENBQUM7UUFDbkIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxnQkFBZ0IsQ0FBQztRQXlDOUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBT0QsQ0FBQztJQTVDeEMsc0JBQ0kscUNBQUc7Ozs7O1FBRFAsVUFDUSxLQUFhO1lBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtRQUNILENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0kscUNBQUc7Ozs7O1FBRFAsVUFDUSxLQUFhO1lBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtRQUNILENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0ksdUNBQUs7Ozs7O1FBRFQsVUFDVSxLQUFhO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0ksMENBQVE7Ozs7O1FBRFosVUFDYSxLQUFjO1lBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0ksNENBQVU7Ozs7O1FBRGQsVUFDZSxLQUFhO1lBQzFCLElBQUksS0FBSyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztnQkFDekIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ3JCO1FBQ0gsQ0FBQzs7O09BQUE7SUFDRCxzQkFDSSw0Q0FBVTs7Ozs7UUFEZCxVQUNlLEtBQWE7WUFDMUIsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQyxVQUFVLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7YUFDckI7UUFDSCxDQUFDOzs7T0FBQTtJQU1ELHNCQUNJLHVDQUFLOzs7O1FBRFQ7WUFFRSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekIsQ0FBQzs7O09BQUE7Ozs7O0lBSUQsdUNBQVE7Ozs7SUFBUixVQUFTLFNBQVM7UUFBbEIsaUJBMENDO1FBekNDLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLFNBQVM7YUFDTixHQUFHLENBQUMsVUFBVSxDQUFDO2FBQ2YsSUFBSTs7Ozs7UUFBQyxVQUFDLENBQUMsRUFBRSxDQUFDLElBQUssT0FBQSxDQUFDLEdBQUcsQ0FBQyxFQUFMLENBQUssRUFBQzthQUNyQixHQUFHOzs7O1FBQUMsVUFBQSxLQUFLOzs7Z0JBQ0YsUUFBUSxHQUFHO2dCQUNmLFNBQVMsRUFBRSxFQUFFO2dCQUNiLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxFQUFFO2dCQUNiLEtBQUssRUFBRSxFQUFFO2FBQ1Y7O2dCQUNLLFNBQVMsR0FBRyxLQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Z0JBQzlCLGlCQUFpQixHQUFHLE9BQU8sU0FBUyxLQUFLLFFBQVE7O2dCQUNqRCxTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDakUsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTLEtBQUssQ0FBQyxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQzthQUNiOztnQkFDSyxRQUFRLEdBQ1osQ0FBQyxDQUFDLEtBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxLQUFLLEtBQUksQ0FBQyxXQUFXLENBQUM7Z0JBQy9DLENBQUMsS0FBSSxDQUFDLFNBQVMsSUFBSSxLQUFLLElBQUksS0FBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLElBQUksS0FBSSxDQUFDLFdBQVcsQ0FBQzs7Z0JBQ3RFLGFBQWE7Z0JBQ2pCLEdBQUksS0FBSSxDQUFDLFVBQVUsVUFBTyxJQUFHLElBQUk7Z0JBQ2pDLEdBQUksS0FBSSxDQUFDLFVBQVUsaUJBQWMsSUFBRyxRQUFRO21CQUM3Qzs7Z0JBQ0ssV0FBVyxHQUFHO2dCQUNsQixZQUFZLEVBQUUsTUFBTTtnQkFDcEIsTUFBTSxFQUFLLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLE1BQUc7YUFDeEQ7O2dCQUNLLFNBQVMsR0FBRztnQkFDaEIsS0FBSyxFQUFLLEtBQUksQ0FBQyxVQUFVLE1BQUc7Z0JBQzVCLFVBQVUsRUFBSyxDQUFDLEtBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxNQUFHO2dCQUN0QyxJQUFJLEVBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBRzthQUN0RDs7Z0JBQ0ssS0FBSyxHQUFHLFNBQVM7O2dCQUNqQixTQUFTLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxzQkFBTSxLQUFLLEVBQUssU0FBUyxDQUFDLEtBQUssRUFBRyxDQUFDLENBQUMsS0FBSztZQUM5RSxRQUFRLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztZQUMvQixRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztZQUN2QixRQUFRLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFELFFBQVEsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQzNCLEtBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsRUFBQyxDQUFDO0lBQ1AsQ0FBQzs7OztJQUVELDJDQUFZOzs7SUFBWjs7UUFDRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2dCQUN4QyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLOztnQkFDL0IsUUFBUSxHQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUMvQyxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDNUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN6QixHQUFJLElBQUksQ0FBQyxVQUFVLFVBQU8sSUFBRyxJQUFJO2dCQUNqQyxHQUFJLElBQUksQ0FBQyxVQUFVLGlCQUFjLElBQUcsUUFBUTttQkFDN0MsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7OztJQUVELDRDQUFhOzs7SUFBYjtRQUNFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTs7Z0JBQ3hDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RixPQUFPLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ2pEO0lBQ0gsQ0FBQzs7OztJQUVELHVDQUFROzs7SUFBUjs7WUFDUSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDOztZQUNwQyxVQUFVLEdBQUcsU0FBUyxDQUFDLE1BQU07O1lBQzdCLElBQUksR0FBRyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUc7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7OztJQUVELDhDQUFlOzs7SUFBZjtRQUNFLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDOztnQkEzSUYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSwrQkFBK0I7b0JBQ3pDLG1IQUE0QztvQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7aUJBQ3RDOzs7O2dCQWJDLFVBQVU7OztzQkEyQlQsS0FBSztzQkFNTCxLQUFLO3dCQU1MLEtBQUs7MkJBSUwsS0FBSzs2QkFJTCxLQUFLOzZCQU9MLEtBQUs7MkJBT0wsTUFBTTtnQ0FFTixNQUFNO3dCQUdOLFdBQVc7O0lBbUZkLDJCQUFDO0NBQUEsQUE1SUQsSUE0SUM7U0F2SVksb0JBQW9COzs7SUFDL0IseUNBQTJCOzs7OztJQUUzQixvQ0FBeUI7Ozs7O0lBQ3pCLG9DQUEyQjs7Ozs7SUFDM0Isc0NBQTRCOzs7OztJQUM1Qix5Q0FBa0M7Ozs7O0lBQ2xDLDBDQUE4Qzs7Ozs7SUFDOUMsMkNBQTRCOzs7OztJQUM1QiwyQ0FBNEI7Ozs7O0lBQzVCLHNDQUF1Qjs7Ozs7SUFDdkIsMENBQTJCOztJQW9DM0Isd0NBQ21DOztJQUNuQyw2Q0FDd0M7Ozs7O0lBTzVCLG9DQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RCaW5kaW5nLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnU2xpZGVyTWFya3MsIG56bS1zbGlkZXItbWFya3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLW1hcmtzLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJNYXJrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG1hcmtBcnJheTogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX21hcmtzOiBvYmplY3QgPSB7fTtcbiAgcHJpdmF0ZSBfaW5jbHVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIF9jbGFzc05hbWU6IHN0cmluZyA9ICdhbS1zbGlkZXItbWFyayc7XG4gIHByaXZhdGUgX3VwcGVyQm91bmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbG93ZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9yYW5nZTogbnVtYmVyO1xuICBwcml2YXRlIF9tYXJrV2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgPD0gdGhpcy5fbWF4KSB7XG4gICAgICB0aGlzLl9taW4gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlID49IHRoaXMuX21pbikge1xuICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBtYXJrcyh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fbWFya3MgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB1cHBlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMuX3VwcGVyQm91bmQpIHtcbiAgICAgIHRoaXMuX3VwcGVyQm91bmQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2xzKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBsb3dlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMubG93ZXJCb3VuZCkge1xuICAgICAgdGhpcy5fbG93ZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKVxuICBvbkFmdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgZ2V0TWFya3MobWFya3NLZXlzKSB7XG4gICAgdGhpcy5tYXJrQXJyYXkgPSBbXTtcbiAgICBtYXJrc0tleXNcbiAgICAgIC5tYXAocGFyc2VGbG9hdClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgIC5tYXAocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBtYXJrSXRlbSA9IHtcbiAgICAgICAgICBtYXJrTGFiZWw6ICcnLFxuICAgICAgICAgIHBvaW50OiAnJyxcbiAgICAgICAgICBjbGFzc05hbWU6IHt9LFxuICAgICAgICAgIHN0eWxlOiB7fVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtYXJrUG9pbnQgPSB0aGlzLl9tYXJrc1twb2ludF07XG4gICAgICAgIGNvbnN0IG1hcmtQb2ludElzT2JqZWN0ID0gdHlwZW9mIG1hcmtQb2ludCA9PT0gJ29iamVjdCc7XG4gICAgICAgIGNvbnN0IG1hcmtMYWJlbCA9IG1hcmtQb2ludElzT2JqZWN0ID8gbWFya1BvaW50LmxhYmVsIDogbWFya1BvaW50O1xuICAgICAgICBpZiAoIW1hcmtMYWJlbCAmJiBtYXJrTGFiZWwgIT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9XG4gICAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgICAgY29uc3QgbWFya0NsYXNzTmFtZSA9IHtcbiAgICAgICAgICBbYCR7dGhpcy5fY2xhc3NOYW1lfS10ZXh0YF06IHRydWUsXG4gICAgICAgICAgW2Ake3RoaXMuX2NsYXNzTmFtZX0tdGV4dC1hY3RpdmVgXTogaXNBY3RpdmVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm90dG9tU3R5bGUgPSB7XG4gICAgICAgICAgbWFyZ2luQm90dG9tOiAnLTUwJScsXG4gICAgICAgICAgYm90dG9tOiBgJHsoKHBvaW50IC0gdGhpcy5fbWluKSAvIHRoaXMuX3JhbmdlKSAqIDEwMH0lYFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBsZWZ0U3R5bGUgPSB7XG4gICAgICAgICAgd2lkdGg6IGAke3RoaXMuX21hcmtXaWR0aH0lYCxcbiAgICAgICAgICBtYXJnaW5MZWZ0OiBgJHstdGhpcy5fbWFya1dpZHRoIC8gMn0lYCxcbiAgICAgICAgICBsZWZ0OiBgJHsoKHBvaW50IC0gdGhpcy5fbWluKSAvIHRoaXMuX3JhbmdlKSAqIDEwMH0lYFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzdHlsZSA9IGxlZnRTdHlsZTtcbiAgICAgICAgY29uc3QgbWFya1N0eWxlID0gbWFya1BvaW50SXNPYmplY3QgPyB7IC4uLnN0eWxlLCAuLi5tYXJrUG9pbnQuc3R5bGUgfSA6IHN0eWxlO1xuICAgICAgICBtYXJrSXRlbS5tYXJrTGFiZWwgPSBtYXJrTGFiZWw7XG4gICAgICAgIG1hcmtJdGVtLnBvaW50ID0gcG9pbnQ7XG4gICAgICAgIG1hcmtJdGVtLmNsYXNzTmFtZSA9IE9iamVjdC5rZXlzKG1hcmtDbGFzc05hbWUpLmpvaW4oJyAnKTtcbiAgICAgICAgbWFya0l0ZW0uc3R5bGUgPSBtYXJrU3R5bGU7XG4gICAgICAgIHRoaXMubWFya0FycmF5LnB1c2gobWFya0l0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRBY3RpdmVDbHMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcmtBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcG9pbnQgPSB0aGlzLm1hcmtBcnJheVtpXS5wb2ludDtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID1cbiAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgKHRoaXMuX2luY2x1ZGVkICYmIHBvaW50IDw9IHRoaXMuX3VwcGVyQm91bmQgJiYgcG9pbnQgPj0gdGhpcy5fbG93ZXJCb3VuZCk7XG4gICAgICB0aGlzLm1hcmtBcnJheVtpXS5jbGFzc05hbWUgPSB7XG4gICAgICAgIFtgJHt0aGlzLl9jbGFzc05hbWV9LXRleHRgXTogdHJ1ZSxcbiAgICAgICAgW2Ake3RoaXMuX2NsYXNzTmFtZX0tdGV4dC1hY3RpdmVgXTogaXNBY3RpdmVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgc2V0TWFya3NMYWJsZSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFya0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtYXJrRWxlID0gdGhpcy5fZWxmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLl9jbGFzc05hbWUgKyAnLXRleHQnKVtpXTtcbiAgICAgIG1hcmtFbGUuaW5uZXJIVE1MID0gdGhpcy5tYXJrQXJyYXlbaV0ubWFya0xhYmVsO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG1hcmtzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuX21hcmtzKTtcbiAgICBjb25zdCBtYXJrc0NvdW50ID0gbWFya3NLZXlzLmxlbmd0aDtcbiAgICBjb25zdCB1bml0ID0gbWFya3NDb3VudCA+IDEgPyAxMDAgLyAobWFya3NDb3VudCAtIDEpIDogMTAwO1xuICAgIHRoaXMuX21hcmtXaWR0aCA9IHVuaXQgKiAwLjk7XG4gICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9tYXggLSB0aGlzLl9taW47XG4gICAgdGhpcy5nZXRNYXJrcyhtYXJrc0tleXMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0TWFya3NMYWJsZSgpO1xuICB9XG59XG4iXX0=