ngx-diagrams
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.2.0.
457 lines • 25.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: lib/models/link.model.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { BaseModel } from './base.model';
import { PointModel } from './point.model';
import { BehaviorSubject } from 'rxjs';
var LinkModel = /** @class */ (function (_super) {
tslib_1.__extends(LinkModel, _super);
function LinkModel(linkType, id) {
if (linkType === void 0) { linkType = 'default'; }
var _this = _super.call(this, linkType, id) || this;
_this.label = new BehaviorSubject(null);
_this.points = [new PointModel(_this, { x: 0, y: 0 }), new PointModel(_this, { x: 0, y: 0 })];
_this.extras = {};
_this.sourcePort = null;
_this.targetPort = null;
return _this;
}
/**
* @param {?} name
* @return {?}
*/
LinkModel.prototype.setName = /**
* @param {?} name
* @return {?}
*/
function (name) {
this.name = name;
};
/**
* @return {?}
*/
LinkModel.prototype.getName = /**
* @return {?}
*/
function () {
return this.name;
};
/**
* @return {?}
*/
LinkModel.prototype.getExtras = /**
* @return {?}
*/
function () {
return this.extras;
};
/**
* @param {?} extras
* @return {?}
*/
LinkModel.prototype.setExtras = /**
* @param {?} extras
* @return {?}
*/
function (extras) {
this.extras = extras;
};
/**
* @param {?=} options
* @return {?}
*/
LinkModel.prototype.destroy = /**
* @param {?=} options
* @return {?}
*/
function (options) {
if (this.sourcePort) {
this.sourcePort.removeLink(this);
}
if (this.targetPort) {
this.targetPort.removeLink(this);
}
_super.prototype.destroy.call(this, options);
};
/**
* @param {?=} lookupTable
* @param {?=} clone
* @return {?}
*/
LinkModel.prototype.doClone = /**
* @param {?=} lookupTable
* @param {?=} clone
* @return {?}
*/
function (lookupTable, clone) {
if (lookupTable === void 0) { lookupTable = {}; }
clone.setPoints(this.getPoints().map((/**
* @param {?} point
* @return {?}
*/
function (point) {
return point.clone(lookupTable);
})));
if (this.sourcePort) {
clone.setSourcePort(this.sourcePort.clone(lookupTable));
}
if (this.targetPort) {
clone.setTargetPort(this.targetPort.clone(lookupTable));
}
};
/**
* @param {?} point
* @return {?}
*/
LinkModel.prototype.isLastPoint = /**
* @param {?} point
* @return {?}
*/
function (point) {
/** @type {?} */
var index = this.getPointIndex(point);
return index === this.points.length - 1;
};
/**
* @param {?} point
* @return {?}
*/
LinkModel.prototype.getPointIndex = /**
* @param {?} point
* @return {?}
*/
function (point) {
return this.points.indexOf(point);
};
/**
* @param {?} id
* @return {?}
*/
LinkModel.prototype.getPointModel = /**
* @param {?} id
* @return {?}
*/
function (id) {
var e_1, _a;
try {
for (var _b = tslib_1.__values(this.points), _c = _b.next(); !_c.done; _c = _b.next()) {
var point = _c.value;
if (point.id === id) {
return point;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return null;
};
/**
* @param {?} point
* @return {?}
*/
LinkModel.prototype.getPortForPoint = /**
* @param {?} point
* @return {?}
*/
function (point) {
if (this.sourcePort !== null && this.getFirstPoint().id === point.id) {
return this.sourcePort;
}
if (this.targetPort !== null && this.getLastPoint().id === point.id) {
return this.targetPort;
}
return null;
};
/**
* @param {?} port
* @return {?}
*/
LinkModel.prototype.getPointForPort = /**
* @param {?} port
* @return {?}
*/
function (port) {
if (this.sourcePort !== null && this.sourcePort.id === port.id) {
return this.getFirstPoint();
}
if (this.targetPort !== null && this.targetPort.id === port.id) {
return this.getLastPoint();
}
return null;
};
/**
* @return {?}
*/
LinkModel.prototype.getFirstPoint = /**
* @return {?}
*/
function () {
return this.points[0];
};
/**
* @return {?}
*/
LinkModel.prototype.getLastPoint = /**
* @return {?}
*/
function () {
return this.points[this.points.length - 1];
};
/**
* @param {?} port
* @return {?}
*/
LinkModel.prototype.setSourcePort = /**
* @param {?} port
* @return {?}
*/
function (port) {
if (port !== null) {
port.addLink(this);
}
if (this.sourcePort !== null) {
this.sourcePort.removeLink(this);
}
this.sourcePort = port;
};
/**
* @return {?}
*/
LinkModel.prototype.getSourcePort = /**
* @return {?}
*/
function () {
return this.sourcePort;
};
/**
* @return {?}
*/
LinkModel.prototype.getTargetPort = /**
* @return {?}
*/
function () {
return this.targetPort;
};
/**
* @param {?} port
* @return {?}
*/
LinkModel.prototype.setTargetPort = /**
* @param {?} port
* @return {?}
*/
function (port) {
if (port !== null) {
port.addLink(this);
}
if (this.targetPort !== null) {
this.targetPort.removeLink(this);
}
this.targetPort = port;
};
/**
* @param {?} __0
* @return {?}
*/
LinkModel.prototype.point = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var x = _a.x, y = _a.y;
return this.addPoint(this.generatePoint({ x: x, y: y }));
};
/**
* @return {?}
*/
LinkModel.prototype.getPoints = /**
* @return {?}
*/
function () {
return this.points;
};
/**
* @param {?} points
* @return {?}
*/
LinkModel.prototype.setPoints = /**
* @param {?} points
* @return {?}
*/
function (points) {
var _this = this;
points.forEach((/**
* @param {?} point
* @return {?}
*/
function (point) {
point.setParent(_this);
}));
this.points = points;
};
/**
* @param {?} label
* @return {?}
*/
LinkModel.prototype.setLabel = /**
* @param {?} label
* @return {?}
*/
function (label) {
label.setParent(this);
this.label.next(label);
label.setPainted();
};
/**
* @return {?}
*/
LinkModel.prototype.selectLabel = /**
* @return {?}
*/
function () {
return this.label.asObservable();
};
/**
* @return {?}
*/
LinkModel.prototype.getLabel = /**
* @return {?}
*/
function () {
return this.label.getValue();
};
/**
* @return {?}
*/
LinkModel.prototype.resetLabel = /**
* @return {?}
*/
function () {
/** @type {?} */
var currentLabel = this.label.getValue();
if (currentLabel) {
currentLabel.setParent(null);
currentLabel.setPainted(false);
}
this.label.next(null);
};
/**
* @param {?} pointModel
* @return {?}
*/
LinkModel.prototype.removePoint = /**
* @param {?} pointModel
* @return {?}
*/
function (pointModel) {
this.points.splice(this.getPointIndex(pointModel), 1);
};
/**
* @param {?} pointModel
* @return {?}
*/
LinkModel.prototype.removePointsBefore = /**
* @param {?} pointModel
* @return {?}
*/
function (pointModel) {
this.points.splice(0, this.getPointIndex(pointModel));
};
/**
* @param {?} pointModel
* @return {?}
*/
LinkModel.prototype.removePointsAfter = /**
* @param {?} pointModel
* @return {?}
*/
function (pointModel) {
this.points.splice(this.getPointIndex(pointModel) + 1);
};
/**
* @return {?}
*/
LinkModel.prototype.removeMiddlePoints = /**
* @return {?}
*/
function () {
if (this.points.length > 2) {
this.points.splice(0, this.points.length - 2);
}
};
/**
* @template P
* @param {?} pointModel
* @param {?=} index
* @return {?}
*/
LinkModel.prototype.addPoint = /**
* @template P
* @param {?} pointModel
* @param {?=} index
* @return {?}
*/
function (pointModel, index) {
if (index === void 0) { index = 1; }
pointModel.setParent(this);
this.points.splice(index, 0, pointModel);
return pointModel;
};
/**
* @param {?} __0
* @return {?}
*/
LinkModel.prototype.generatePoint = /**
* @param {?} __0
* @return {?}
*/
function (_a) {
var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c;
return new PointModel(this, { x: x, y: y });
};
return LinkModel;
}(BaseModel));
export { LinkModel };
if (false) {
/** @type {?} */
LinkModel.prototype.diagramEngine;
/**
* @type {?}
* @private
*/
LinkModel.prototype.name;
/**
* @type {?}
* @private
*/
LinkModel.prototype.sourcePort;
/**
* @type {?}
* @private
*/
LinkModel.prototype.targetPort;
/**
* @type {?}
* @private
*/
LinkModel.prototype.points;
/**
* @type {?}
* @private
*/
LinkModel.prototype.extras;
/**
* @type {?}
* @private
*/
LinkModel.prototype.label;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1kaWFncmFtcy8iLCJzb3VyY2VzIjpbImxpYi9tb2RlbHMvbGluay5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBR3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQU9uRDtJQUErQixxQ0FBdUI7SUFZckQsbUJBQVksUUFBNEIsRUFBRSxFQUFXO1FBQXpDLHlCQUFBLEVBQUEsb0JBQTRCO1FBQXhDLFlBQ0Msa0JBQU0sUUFBUSxFQUFFLEVBQUUsQ0FBQyxTQUtuQjtRQVJnQixXQUFLLEdBQWdDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBSS9FLEtBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksVUFBVSxDQUFDLEtBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRixLQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztRQUN2QixLQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzs7SUFDeEIsQ0FBQzs7Ozs7SUFFRCwyQkFBTzs7OztJQUFQLFVBQVEsSUFBWTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNsQixDQUFDOzs7O0lBRUQsMkJBQU87OztJQUFQO1FBQ0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2xCLENBQUM7Ozs7SUFFRCw2QkFBUzs7O0lBQVQ7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QUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsT0FBTyxVQUFVLENBQUM7SUFDbkIsQ0FBQzs7Ozs7SUFFRCxpQ0FBYTs7OztJQUFiLFVBQWMsRUFBd0I7WUFBdEIsU0FBSyxFQUFMLDBCQUFLLEVBQUUsU0FBSyxFQUFMLDBCQUFLO1FBQzNCLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxHQUFBLEVBQUUsQ0FBQyxHQUFBLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRixnQkFBQztBQUFELENBQUMsQUEzTUQsQ0FBK0IsU0FBUyxHQTJNdkM7Ozs7SUExTUEsa0NBQTZCOzs7OztJQUc3Qix5QkFBcUI7Ozs7O0lBQ3JCLCtCQUFxQzs7Ozs7SUFDckMsK0JBQXFDOzs7OztJQUNyQywyQkFBNkI7Ozs7O0lBQzdCLDJCQUFvQjs7Ozs7SUFFcEIsMEJBQWdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1vZGVsIH0gZnJvbSAnLi9iYXNlLm1vZGVsJztcbmltcG9ydCB7IERpYWdyYW1Nb2RlbCB9IGZyb20gJy4vZGlhZ3JhbS5tb2RlbCc7XG5pbXBvcnQgeyBQb3J0TW9kZWwgfSBmcm9tICcuL3BvcnQubW9kZWwnO1xuaW1wb3J0IHsgUG9pbnRNb2RlbCB9IGZyb20gJy4vcG9pbnQubW9kZWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJRCB9IGZyb20gJy4uL3V0aWxzL3Rvb2wta2l0LnV0aWwnO1xuaW1wb3J0IHsgQ29vcmRzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb29yZHMuaW50ZXJmYWNlJztcbmltcG9ydCB7IExhYmVsTW9kZWwgfSBmcm9tICcuL2xhYmVsLm1vZGVsJztcbmltcG9ydCB7IERpYWdyYW1FbmdpbmUgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbmdpbmUuc2VydmljZSc7XG5pbXBvcnQgeyBEZXN0cm95T3B0aW9ucyB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgTGlua01vZGVsIGV4dGVuZHMgQmFzZU1vZGVsPERpYWdyYW1Nb2RlbD4ge1xuXHRkaWFncmFtRW5naW5lOiBEaWFncmFtRW5naW5lO1xuXG5cdC8vIFRPRE86IGRlY2lkZSB3aGF0IHNob3VsZCBiZSByZWFjdGl2ZSB1c2luZyBSWEpTXG5cdHByaXZhdGUgbmFtZTogc3RyaW5nO1xuXHRwcml2YXRlIHNvdXJjZVBvcnQ6IFBvcnRNb2RlbCB8IG51bGw7XG5cdHByaXZhdGUgdGFyZ2V0UG9ydDogUG9ydE1vZGVsIHwgbnVsbDtcblx0cHJpdmF0ZSBwb2ludHM6IFBvaW50TW9kZWxbXTtcblx0cHJpdmF0ZSBleHRyYXM6IGFueTtcblxuXHRwcml2YXRlIHJlYWRvbmx5IGxhYmVsOiBCZWhhdmlvclN1YmplY3Q8TGFiZWxNb2RlbD4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xuXG5cdGNvbnN0cnVjdG9yKGxpbmtUeXBlOiBzdHJpbmcgPSAnZGVmYXVsdCcsIGlkPzogc3RyaW5nKSB7XG5cdFx0c3VwZXIobGlua1R5cGUsIGlkKTtcblx0XHR0aGlzLnBvaW50cyA9IFtuZXcgUG9pbnRNb2RlbCh0aGlzLCB7IHg6IDAsIHk6IDAgfSksIG5ldyBQb2ludE1vZGVsKHRoaXMsIHsgeDogMCwgeTogMCB9KV07XG5cdFx0dGhpcy5leHRyYXMgPSB7fTtcblx0XHR0aGlzLnNvdXJjZVBvcnQgPSBudWxsO1xuXHRcdHRoaXMudGFyZ2V0UG9ydCA9IG51bGw7XG5cdH1cblxuXHRzZXROYW1lKG5hbWU6IHN0cmluZykge1xuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdH1cblxuXHRnZXROYW1lKCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIHRoaXMubmFtZTtcblx0fVxuXG5cdGdldEV4dHJhcygpOiBhbnkge1xuXHRcdHJldHVybiB0aGlzLmV4dHJhcztcblx0fVxuXG5cdHNldEV4dHJhcyhleHRyYXM6IGFueSkge1xuXHRcdHRoaXMuZXh0cmFzID0gZXh0cmFzO1xuXHR9XG5cblx0ZGVzdHJveShvcHRpb25zPzogRGVzdHJveU9wdGlvbnMpIHtcblx0XHRpZiAodGhpcy5zb3VyY2VQb3J0KSB7XG5cdFx0XHR0aGlzLnNvdXJjZVBvcnQucmVtb3ZlTGluayh0aGlzKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50YXJnZXRQb3J0KSB7XG5cdFx0XHR0aGlzLnRhcmdldFBvcnQucmVtb3ZlTGluayh0aGlzKTtcblx0XHR9XG5cblx0XHRzdXBlci5kZXN0cm95KG9wdGlvbnMpO1xuXHR9XG5cblx0ZG9DbG9uZShsb29rdXBUYWJsZSA9IHt9LCBjbG9uZSkge1xuXHRcdGNsb25lLnNldFBvaW50cyhcblx0XHRcdHRoaXMuZ2V0UG9pbnRzKCkubWFwKChwb2ludDogUG9pbnRNb2RlbCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gcG9pbnQuY2xvbmUobG9va3VwVGFibGUpO1xuXHRcdFx0fSlcblx0XHQpO1xuXHRcdGlmICh0aGlzLnNvdXJjZVBvcnQpIHtcblx0XHRcdGNsb25lLnNldFNvdXJjZVBvcnQodGhpcy5zb3VyY2VQb3J0LmNsb25lKGxvb2t1cFRhYmxlKSk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRhcmdldFBvcnQpIHtcblx0XHRcdGNsb25lLnNldFRhcmdldFBvcnQodGhpcy50YXJnZXRQb3J0LmNsb25lKGxvb2t1cFRhYmxlKSk7XG5cdFx0fVxuXHR9XG5cblx0aXNMYXN0UG9pbnQocG9pbnQ6IFBvaW50TW9kZWwpIHtcblx0XHRjb25zdCBpbmRleCA9IHRoaXMuZ2V0UG9pbnRJbmRleChwb2ludCk7XG5cdFx0cmV0dXJuIGluZGV4ID09PSB0aGlzLnBvaW50cy5sZW5ndGggLSAxO1xuXHR9XG5cblx0Z2V0UG9pbnRJbmRleChwb2ludDogUG9pbnRNb2RlbCkge1xuXHRcdHJldHVybiB0aGlzLnBvaW50cy5pbmRleE9mKHBvaW50KTtcblx0fVxuXG5cdGdldFBvaW50TW9kZWwoaWQ6IElEKTogUG9pbnRNb2RlbCB8IG51bGwge1xuXHRcdGZvciAoY29uc3QgcG9pbnQgb2YgdGhpcy5wb2ludHMpIHtcblx0XHRcdGlmIChwb2ludC5pZCA9PT0gaWQpIHtcblx0XHRcdFx0cmV0dXJuIHBvaW50O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGdldFBvcnRGb3JQb2ludChwb2ludDogUG9pbnRNb2RlbCk6IFBvcnRNb2RlbCB7XG5cdFx0aWYgKHRoaXMuc291cmNlUG9ydCAhPT0gbnVsbCAmJiB0aGlzLmdldEZpcnN0UG9pbnQoKS5pZCA9PT0gcG9pbnQuaWQpIHtcblx0XHRcdHJldHVybiB0aGlzLnNvdXJjZVBvcnQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRhcmdldFBvcnQgIT09IG51bGwgJiYgdGhpcy5nZXRMYXN0UG9pbnQoKS5pZCA9PT0gcG9pbnQuaWQpIHtcblx0XHRcdHJldHVybiB0aGlzLnRhcmdldFBvcnQ7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0Z2V0UG9pbnRGb3JQb3J0KHBvcnQ6IFBvcnRNb2RlbCk6IFBvaW50TW9kZWwge1xuXHRcdGlmICh0aGlzLnNvdXJjZVBvcnQgIT09IG51bGwgJiYgdGhpcy5zb3VyY2VQb3J0LmlkID09PSBwb3J0LmlkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRGaXJzdFBvaW50KCk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnRhcmdldFBvcnQgIT09IG51bGwgJiYgdGhpcy50YXJnZXRQb3J0LmlkID09PSBwb3J0LmlkKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy5nZXRMYXN0UG9pbnQoKTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRnZXRGaXJzdFBvaW50KCk6IFBvaW50TW9kZWwge1xuXHRcdHJldHVybiB0aGlzLnBvaW50c1swXTtcblx0fVxuXG5cdGdldExhc3RQb2ludCgpOiBQb2ludE1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5wb2ludHNbdGhpcy5wb2ludHMubGVuZ3RoIC0gMV07XG5cdH1cblxuXHRzZXRTb3VyY2VQb3J0KHBvcnQ6IFBvcnRNb2RlbCkge1xuXHRcdGlmIChwb3J0ICE9PSBudWxsKSB7XG5cdFx0XHRwb3J0LmFkZExpbmsodGhpcyk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnNvdXJjZVBvcnQgIT09IG51bGwpIHtcblx0XHRcdHRoaXMuc291cmNlUG9ydC5yZW1vdmVMaW5rKHRoaXMpO1xuXHRcdH1cblx0XHR0aGlzLnNvdXJjZVBvcnQgPSBwb3J0O1xuXHR9XG5cblx0Z2V0U291cmNlUG9ydCgpOiBQb3J0TW9kZWwge1xuXHRcdHJldHVybiB0aGlzLnNvdXJjZVBvcnQ7XG5cdH1cblxuXHRnZXRUYXJnZXRQb3J0KCk6IFBvcnRNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMudGFyZ2V0UG9ydDtcblx0fVxuXG5cdHNldFRhcmdldFBvcnQocG9ydDogUG9ydE1vZGVsKSB7XG5cdFx0aWYgKHBvcnQgIT09IG51bGwpIHtcblx0XHRcdHBvcnQuYWRkTGluayh0aGlzKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMudGFyZ2V0UG9ydCAhPT0gbnVsbCkge1xuXHRcdFx0dGhpcy50YXJnZXRQb3J0LnJlbW92ZUxpbmsodGhpcyk7XG5cdFx0fVxuXHRcdHRoaXMudGFyZ2V0UG9ydCA9IHBvcnQ7XG5cdH1cblxuXHRwb2ludCh7IHgsIHkgfTogQ29vcmRzKTogUG9pbnRNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuYWRkUG9pbnQodGhpcy5nZW5lcmF0ZVBvaW50KHsgeCwgeSB9KSk7XG5cdH1cblxuXHRnZXRQb2ludHMoKTogUG9pbnRNb2RlbFtdIHtcblx0XHRyZXR1cm4gdGhpcy5wb2ludHM7XG5cdH1cblxuXHRzZXRQb2ludHMocG9pbnRzOiBQb2ludE1vZGVsW10pIHtcblx0XHRwb2ludHMuZm9yRWFjaChwb2ludCA9PiB7XG5cdFx0XHRwb2ludC5zZXRQYXJlbnQodGhpcyk7XG5cdFx0fSk7XG5cdFx0dGhpcy5wb2ludHMgPSBwb2ludHM7XG5cdH1cblxuXHRzZXRMYWJlbChsYWJlbDogTGFiZWxNb2RlbCkge1xuXHRcdGxhYmVsLnNldFBhcmVudCh0aGlzKTtcblx0XHR0aGlzLmxhYmVsLm5leHQobGFiZWwpO1xuXHRcdGxhYmVsLnNldFBhaW50ZWQoKTtcblx0fVxuXG5cdHNlbGVjdExhYmVsKCk6IE9ic2VydmFibGU8TGFiZWxNb2RlbCB8IG51bGw+IHtcblx0XHRyZXR1cm4gdGhpcy5sYWJlbC5hc09ic2VydmFibGUoKTtcblx0fVxuXG5cdGdldExhYmVsKCk6IExhYmVsTW9kZWwge1xuXHRcdHJldHVybiB0aGlzLmxhYmVsLmdldFZhbHVlKCk7XG5cdH1cblxuXHRyZXNldExhYmVsKCkge1xuXHRcdGNvbnN0IGN1cnJlbnRMYWJlbCA9IHRoaXMubGFiZWwuZ2V0VmFsdWUoKTtcblxuXHRcdGlmIChjdXJyZW50TGFiZWwpIHtcblx0XHRcdGN1cnJlbnRMYWJlbC5zZXRQYXJlbnQobnVsbCk7XG5cdFx0XHRjdXJyZW50TGFiZWwuc2V0UGFpbnRlZChmYWxzZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5sYWJlbC5uZXh0KG51bGwpO1xuXHR9XG5cblx0cmVtb3ZlUG9pbnQocG9pbnRNb2RlbDogUG9pbnRNb2RlbCkge1xuXHRcdHRoaXMucG9pbnRzLnNwbGljZSh0aGlzLmdldFBvaW50SW5kZXgocG9pbnRNb2RlbCksIDEpO1xuXHR9XG5cblx0cmVtb3ZlUG9pbnRzQmVmb3JlKHBvaW50TW9kZWw6IFBvaW50TW9kZWwpIHtcblx0XHR0aGlzLnBvaW50cy5zcGxpY2UoMCwgdGhpcy5nZXRQb2ludEluZGV4KHBvaW50TW9kZWwpKTtcblx0fVxuXG5cdHJlbW92ZVBvaW50c0FmdGVyKHBvaW50TW9kZWw6IFBvaW50TW9kZWwpIHtcblx0XHR0aGlzLnBvaW50cy5zcGxpY2UodGhpcy5nZXRQb2ludEluZGV4KHBvaW50TW9kZWwpICsgMSk7XG5cdH1cblxuXHRyZW1vdmVNaWRkbGVQb2ludHMoKSB7XG5cdFx0aWYgKHRoaXMucG9pbnRzLmxlbmd0aCA+IDIpIHtcblx0XHRcdHRoaXMucG9pbnRzLnNwbGljZSgwLCB0aGlzLnBvaW50cy5sZW5ndGggLSAyKTtcblx0XHR9XG5cdH1cblxuXHRhZGRQb2ludDxQIGV4dGVuZHMgUG9pbnRNb2RlbD4ocG9pbnRNb2RlbDogUCwgaW5kZXggPSAxKTogUCB7XG5cdFx0cG9pbnRNb2RlbC5zZXRQYXJlbnQodGhpcyk7XG5cdFx0dGhpcy5wb2ludHMuc3BsaWNlKGluZGV4LCAwLCBwb2ludE1vZGVsKTtcblx0XHRyZXR1cm4gcG9pbnRNb2RlbDtcblx0fVxuXG5cdGdlbmVyYXRlUG9pbnQoeyB4ID0gMCwgeSA9IDAgfTogQ29vcmRzKTogUG9pbnRNb2RlbCB7XG5cdFx0cmV0dXJuIG5ldyBQb2ludE1vZGVsKHRoaXMsIHsgeCwgeSB9KTtcblx0fVxufVxuIl19