dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
293 lines • 24.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { NodeTypeEnum } from './model';
export class Node {
/**
* @param {?} data
* @return {?}
*/
static fromInterface(data) {
/** @type {?} */
const rev = new Node();
rev.NodeType = NodeTypeEnum.unknow;
if (data) {
rev.NodeType = data.NodeType;
rev.Field = data.Field;
rev.Operate = data.Operate;
rev.Value = data.Value;
rev.PlainText = data.PlainText;
if (data.Children) {
rev.Children = data.Children.map((/**
* @param {?} v
* @return {?}
*/
v => {
/** @type {?} */
const n = Node.fromInterface(v);
n.parent = rev;
return n;
}));
}
}
return rev;
}
/**
* @param {?} src
* @return {?}
*/
assign(src) {
this.NodeType = src.NodeType;
this.Field = src.Field;
this.Operate = src.Operate;
this.Value = src.Value;
this.PlainText = src.PlainText;
if (src.Children) {
this.Children = src.Children.map((/**
* @param {?} v
* @return {?}
*/
v => {
/** @type {?} */
const rev = Node.fromInterface(v);
rev.parent = this;
return rev;
}));
}
}
/**
* @return {?}
*/
toInterface() {
// empty node
if (this.NodeType === NodeTypeEnum.unknow) {
return null;
}
/** @type {?} */
const rev = {
NodeType: this.NodeType,
Field: this.Field,
Operate: this.Operate,
Value: this.Value,
PlainText: this.PlainText
};
if (this.Children) {
rev.Children = this.Children.map((/**
* @param {?} v
* @return {?}
*/
v => v.toInterface()));
}
return rev;
}
/**
* @param {?} index
* @param {?} node
* @return {?}
*/
insertChild(index, node) {
this.Children = this.Children || [];
/** @type {?} */
const n = Node.fromInterface(node);
n.parent = this;
if (index >= this.Children.length) {
this.Children.push(n);
}
else {
this.Children.splice(index, 0, n);
}
}
/**
* @param {?} node
* @param {?} newNode
* @return {?}
*/
replaceChild(node, newNode) {
newNode.parent = this;
this.Children.splice(this.Children.findIndex((/**
* @param {?} v
* @return {?}
*/
v => v === node)), 1, newNode);
}
// 添加兄弟,在当前节点之上
/**
* @param {?} node
* @return {?}
*/
addTopSibling(node) {
if (!this.parent) {
this.addChildSibling(node);
return;
}
this.parent.insertChild(this.parent.Children.findIndex((/**
* @param {?} v
* @return {?}
*/
v => v === this)), node);
}
// 添加兄弟,在当前节点之下
/**
* @param {?} node
* @return {?}
*/
addBottomSibling(node) {
if (!this.parent) {
this.addChildSibling(node);
return;
}
this.parent.insertChild(this.parent.Children.findIndex((/**
* @param {?} v
* @return {?}
*/
v => v === this)) + 1, node);
}
// 当前节点和该节点形成一个新的and节点,取代当前节点的位置
/**
* @param {?} node
* @return {?}
*/
addChildSibling(node) {
if (this.parent) {
/** @type {?} */
const andNode = Node.fromInterface({ NodeType: NodeTypeEnum.NodeAnd });
andNode.insertChild(0, node);
this.parent.replaceChild(this, andNode);
andNode.insertChild(0, this);
}
else {
// 如果只有一个条件节点,则需要对内容进行替换,因为组件引用用到是指针
/** @type {?} */
const newThis = Node.fromInterface({
NodeType: this.NodeType,
Field: this.Field,
Operate: this.Operate,
Value: this.Value,
PlainText: this.PlainText
});
newThis.parent = this;
this.NodeType = NodeTypeEnum.NodeAnd;
this.Field = undefined;
this.Operate = undefined;
this.Value = undefined;
this.PlainText = undefined;
this.Children = [newThis];
this.insertChild(1, node);
}
}
// 返回扁平化后的总体高度,每个子节点算1
/**
* @return {?}
*/
flatHeight() {
if (NodeTypeEnum.NodeCondition === this.NodeType || NodeTypeEnum.NodePlain === this.NodeType) {
return 1;
}
/** @type {?} */
let rev = 0;
if (this.Children) {
this.Children.forEach((/**
* @param {?} v
* @return {?}
*/
v => (rev += v.flatHeight())));
}
return rev;
}
// 收集单节点,提升到上级
/**
* @return {?}
*/
collection() {
if (!this.Children) {
return;
}
if (this.Children.length === 1) {
this.NodeType = this.Children[0].NodeType;
this.Field = this.Children[0].Field;
this.Operate = this.Children[0].Operate;
this.Value = this.Children[0].Value;
this.PlainText = this.Children[0].PlainText;
this.Children = this.Children[0].Children;
this.collection();
}
else {
this.Children.forEach((/**
* @param {?} v
* @return {?}
*/
v => v.collection()));
}
}
/**
* @return {?}
*/
findRoot() {
/** @type {?} */
let find;
for (find = this; find.parent; find = find.parent) { }
return find;
}
/**
* @param {?} node
* @return {?}
*/
removeChild(node) {
if (this.Children.length > 1) {
this.Children.splice(this.Children.findIndex((/**
* @param {?} v
* @return {?}
*/
v => v === node)), 1);
// root开始检查,提取到上级
this.findRoot().collection();
}
else {
if (this.parent) {
this.parent.removeChild(this);
}
else {
this.NodeType = NodeTypeEnum.unknow;
this.Field = undefined;
this.Operate = undefined;
this.Value = undefined;
this.PlainText = undefined;
this.Children = undefined;
}
}
}
/**
* @return {?}
*/
remove() {
if (this.parent) {
this.parent.removeChild(this);
}
else {
this.NodeType = NodeTypeEnum.unknow;
this.Field = undefined;
this.Operate = undefined;
this.Value = undefined;
this.PlainText = undefined;
this.Children = undefined;
}
}
}
if (false) {
/** @type {?} */
Node.prototype.parent;
/** @type {?} */
Node.prototype.NodeType;
/** @type {?} */
Node.prototype.Field;
/** @type {?} */
Node.prototype.Operate;
/** @type {?} */
Node.prototype.Value;
/** @type {?} */
Node.prototype.Children;
/** @type {?} */
Node.prototype.PlainText;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9lbGV2aWV3L3R5cGVzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUMsTUFBTSxPQUFPLElBQUk7Ozs7O0lBUWhCLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBVzs7Y0FDekIsR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUNuQyxJQUFJLElBQUksRUFBRTtZQUNULEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM3QixHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDdkIsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQzNCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QixHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNsQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRzs7OztnQkFBQyxDQUFDLENBQUMsRUFBRTs7MEJBQzlCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7b0JBQ2YsT0FBTyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQyxFQUFDLENBQUM7YUFDSDtTQUNEO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDOzs7OztJQUNELE1BQU0sQ0FBQyxHQUFVO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFB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Q0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO2dCQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO2FBQzFCO1NBQ0Q7SUFDRixDQUFDOzs7O0lBQ0QsTUFBTTtRQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjthQUFNO1lBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDO1NBQzFCO0lBQ0YsQ0FBQztDQUNEOzs7SUFoTEEsc0JBQWE7O0lBQ2Isd0JBQXVCOztJQUN2QixxQkFBZTs7SUFDZix1QkFBaUI7O0lBQ2pCLHFCQUFlOztJQUNmLHdCQUFrQjs7SUFDbEIseUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSU5vZGUsIE5vZGVUeXBlRW51bSB9IGZyb20gJy4vbW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCBjbGFzcyBOb2RlIGltcGxlbWVudHMgSU5vZGUge1xyXG5cdHBhcmVudDogTm9kZTtcclxuXHROb2RlVHlwZTogTm9kZVR5cGVFbnVtO1xyXG5cdEZpZWxkPzogc3RyaW5nO1xyXG5cdE9wZXJhdGU/OiBzdHJpbmc7XHJcblx0VmFsdWU/OiBzdHJpbmc7XHJcblx0Q2hpbGRyZW4/OiBOb2RlW107XHJcblx0UGxhaW5UZXh0Pzogc3RyaW5nO1xyXG5cdHN0YXRpYyBmcm9tSW50ZXJmYWNlKGRhdGE6IElOb2RlKTogTm9kZSB7XHJcblx0XHRjb25zdCByZXYgPSBuZXcgTm9kZSgpO1xyXG5cdFx0cmV2Lk5vZGVUeXBlID0gTm9kZVR5cGVFbnVtLnVua25vdztcclxuXHRcdGlmIChkYXRhKSB7XHJcblx0XHRcdHJldi5Ob2RlVHlwZSA9IGRhdGEuTm9kZVR5cGU7XHJcblx0XHRcdHJldi5GaWVsZCA9IGRhdGEuRmllbGQ7XHJcblx0XHRcdHJldi5PcGVyYXRlID0gZGF0YS5PcGVyYXRlO1xyXG5cdFx0XHRyZXYuVmFsdWUgPSBkYXRhLlZhbHVlO1xyXG5cdFx0XHRyZXYuUGxhaW5UZXh0ID0gZGF0YS5QbGFpblRleHQ7XHJcblx0XHRcdGlmIChkYXRhLkNoaWxkcmVuKSB7XHJcblx0XHRcdFx0cmV2LkNoaWxkcmVuID0gZGF0YS5DaGlsZHJlbi5tYXAodiA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBuID0gTm9kZS5mcm9tSW50ZXJmYWNlKHYpO1xyXG5cdFx0XHRcdFx0bi5wYXJlbnQgPSByZXY7XHJcblx0XHRcdFx0XHRyZXR1cm4gbjtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJldjtcclxuXHR9XHJcblx0YXNzaWduKHNyYzogSU5vZGUpIHtcclxuXHRcdHRoaXMuTm9kZVR5cGUgPSBzcmMuTm9kZVR5cGU7XHJcblx0XHR0aGlzLkZpZWxkID0gc3JjLkZpZWxkO1xyXG5cdFx0dGhpcy5PcGVyYXRlID0gc3JjLk9wZXJhdGU7XHJcblx0XHR0aGlzLlZhbHVlID0gc3JjLlZhbHVlO1xyXG5cdFx0dGhpcy5QbGFpblRleHQgPSBzcmMuUGxhaW5UZXh0O1xyXG5cdFx0aWYgKHNyYy5DaGlsZHJlbikge1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuID0gc3JjLkNoaWxkcmVuLm1hcCh2ID0+IHtcclxuXHRcdFx0XHRjb25zdCByZXYgPSBOb2RlLmZyb21JbnRlcmZhY2Uodik7XHJcblx0XHRcdFx0cmV2LnBhcmVudCA9IHRoaXM7XHJcblx0XHRcdFx0cmV0dXJuIHJldjtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHRvSW50ZXJmYWNlKCk6IElOb2RlIHtcclxuXHRcdC8vIGVtcHR5IG5vZGVcclxuXHRcdGlmICh0aGlzLk5vZGVUeXBlID09PSBOb2RlVHlwZUVudW0udW5rbm93KSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0Y29uc3QgcmV2OiBJTm9kZSA9IHtcclxuXHRcdFx0Tm9kZVR5cGU6IHRoaXMuTm9kZVR5cGUsXHJcblx0XHRcdEZpZWxkOiB0aGlzLkZpZWxkLFxyXG5cdFx0XHRPcGVyYXRlOiB0aGlzLk9wZXJhdGUsXHJcblx0XHRcdFZhbHVlOiB0aGlzLlZhbHVlLFxyXG5cdFx0XHRQbGFpblRleHQ6IHRoaXMuUGxhaW5UZXh0XHJcblx0XHR9O1xyXG5cdFx0aWYgKHRoaXMuQ2hpbGRyZW4pIHtcclxuXHRcdFx0cmV2LkNoaWxkcmVuID0gdGhpcy5DaGlsZHJlbi5tYXAodiA9PiB2LnRvSW50ZXJmYWNlKCkpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHJldjtcclxuXHR9XHJcblx0aW5zZXJ0Q2hpbGQoaW5kZXg6IG51bWJlciwgbm9kZTogSU5vZGUpIHtcclxuXHRcdHRoaXMuQ2hpbGRyZW4gPSB0aGlzLkNoaWxkcmVuIHx8IFtdO1xyXG5cdFx0Y29uc3QgbiA9IE5vZGUuZnJvbUludGVyZmFjZShub2RlKTtcclxuXHRcdG4ucGFyZW50ID0gdGhpcztcclxuXHRcdGlmIChpbmRleCA+PSB0aGlzLkNoaWxkcmVuLmxlbmd0aCkge1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuLnB1c2gobik7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuLnNwbGljZShpbmRleCwgMCwgbik7XHJcblx0XHR9XHJcblx0fVxyXG5cdHJlcGxhY2VDaGlsZChub2RlOiBOb2RlLCBuZXdOb2RlOiBOb2RlKSB7XHJcblx0XHRuZXdOb2RlLnBhcmVudCA9IHRoaXM7XHJcblx0XHR0aGlzLkNoaWxkcmVuLnNwbGljZSh0aGlzLkNoaWxkcmVuLmZpbmRJbmRleCh2ID0+IHYgPT09IG5vZGUpLCAxLCBuZXdOb2RlKTtcclxuXHR9XHJcblx0Ly8g5re75Yqg5YWE5byf77yM5Zyo5b2T5YmN6IqC54K55LmL5LiKXHJcblx0YWRkVG9wU2libGluZyhub2RlOiBJTm9kZSkge1xyXG5cdFx0aWYgKCF0aGlzLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLmFkZENoaWxkU2libGluZyhub2RlKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYXJlbnQuaW5zZXJ0Q2hpbGQodGhpcy5wYXJlbnQuQ2hpbGRyZW4uZmluZEluZGV4KHYgPT4gdiA9PT0gdGhpcyksIG5vZGUpO1xyXG5cdH1cclxuXHQvLyDmt7vliqDlhYTlvJ/vvIzlnKjlvZPliY3oioLngrnkuYvkuItcclxuXHRhZGRCb3R0b21TaWJsaW5nKG5vZGU6IElOb2RlKSB7XHJcblx0XHRpZiAoIXRoaXMucGFyZW50KSB7XHJcblx0XHRcdHRoaXMuYWRkQ2hpbGRTaWJsaW5nKG5vZGUpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR0aGlzLnBhcmVudC5pbnNlcnRDaGlsZCh0aGlzLnBhcmVudC5DaGlsZHJlbi5maW5kSW5kZXgodiA9PiB2ID09PSB0aGlzKSArIDEsIG5vZGUpO1xyXG5cdH1cclxuXHQvLyDlvZPliY3oioLngrnlkozor6XoioLngrnlvaLmiJDkuIDkuKrmlrDnmoRhbmToioLngrnvvIzlj5bku6PlvZPliY3oioLngrnnmoTkvY3nva5cclxuXHRhZGRDaGlsZFNpYmxpbmcobm9kZTogSU5vZGUpIHtcclxuXHRcdGlmICh0aGlzLnBhcmVudCkge1xyXG5cdFx0XHRjb25zdCBhbmROb2RlID0gTm9kZS5mcm9tSW50ZXJmYWNlKHsgTm9kZVR5cGU6IE5vZGVUeXBlRW51bS5Ob2RlQW5kIH0pO1xyXG5cdFx0XHRhbmROb2RlLmluc2VydENoaWxkKDAsIG5vZGUpO1xyXG5cdFx0XHR0aGlzLnBhcmVudC5yZXBsYWNlQ2hpbGQodGhpcywgYW5kTm9kZSk7XHJcblx0XHRcdGFuZE5vZGUuaW5zZXJ0Q2hpbGQoMCwgdGhpcyk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyDlpoLmnpzlj6rmnInkuIDkuKrmnaHku7boioLngrnvvIzliJnpnIDopoHlr7nlhoXlrrnov5vooYzmm7/mjaLvvIzlm6DkuLrnu4Tku7blvJXnlKjnlKjliLDmmK/mjIfpkohcclxuXHRcdFx0Y29uc3QgbmV3VGhpcyA9IE5vZGUuZnJvbUludGVyZmFjZSh7XHJcblx0XHRcdFx0Tm9kZVR5cGU6IHRoaXMuTm9kZVR5cGUsXHJcblx0XHRcdFx0RmllbGQ6IHRoaXMuRmllbGQsXHJcblx0XHRcdFx0T3BlcmF0ZTogdGhpcy5PcGVyYXRlLFxyXG5cdFx0XHRcdFZhbHVlOiB0aGlzLlZhbHVlLFxyXG5cdFx0XHRcdFBsYWluVGV4dDogdGhpcy5QbGFpblRleHRcclxuXHRcdFx0fSk7XHJcblx0XHRcdG5ld1RoaXMucGFyZW50ID0gdGhpcztcclxuXHRcdFx0dGhpcy5Ob2RlVHlwZSA9IE5vZGVUeXBlRW51bS5Ob2RlQW5kO1xyXG5cdFx0XHR0aGlzLkZpZWxkID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLk9wZXJhdGUgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuVmFsdWUgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuUGxhaW5UZXh0ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuID0gW25ld1RoaXNdO1xyXG5cdFx0XHR0aGlzLmluc2VydENoaWxkKDEsIG5vZGUpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHQvLyDov5Tlm57miYHlubPljJblkI7nmoTmgLvkvZPpq5jluqbvvIzmr4/kuKrlrZDoioLngrnnrpcxXHJcblx0ZmxhdEhlaWdodCgpOiBudW1iZXIge1xyXG5cdFx0aWYgKE5vZGVUeXBlRW51bS5Ob2RlQ29uZGl0aW9uID09PSB0aGlzLk5vZGVUeXBlIHx8IE5vZGVUeXBlRW51bS5Ob2RlUGxhaW4gPT09IHRoaXMuTm9kZVR5cGUpIHtcclxuXHRcdFx0cmV0dXJuIDE7XHJcblx0XHR9XHJcblx0XHRsZXQgcmV2ID0gMDtcclxuXHRcdGlmICh0aGlzLkNoaWxkcmVuKSB7XHJcblx0XHRcdHRoaXMuQ2hpbGRyZW4uZm9yRWFjaCh2ID0+IChyZXYgKz0gdi5mbGF0SGVpZ2h0KCkpKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXY7XHJcblx0fVxyXG5cdC8vIOaUtumbhuWNleiKgueCue+8jOaPkOWNh+WIsOS4iue6p1xyXG5cdGNvbGxlY3Rpb24oKSB7XHJcblx0XHRpZiAoIXRoaXMuQ2hpbGRyZW4pIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0aWYgKHRoaXMuQ2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XHJcblx0XHRcdHRoaXMuTm9kZVR5cGUgPSB0aGlzLkNoaWxkcmVuWzBdLk5vZGVUeXBlO1xyXG5cdFx0XHR0aGlzLkZpZWxkID0gdGhpcy5DaGlsZHJlblswXS5GaWVsZDtcclxuXHRcdFx0dGhpcy5PcGVyYXRlID0gdGhpcy5DaGlsZHJlblswXS5PcGVyYXRlO1xyXG5cdFx0XHR0aGlzLlZhbHVlID0gdGhpcy5DaGlsZHJlblswXS5WYWx1ZTtcclxuXHRcdFx0dGhpcy5QbGFpblRleHQgPSB0aGlzLkNoaWxkcmVuWzBdLlBsYWluVGV4dDtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbiA9IHRoaXMuQ2hpbGRyZW5bMF0uQ2hpbGRyZW47XHJcblx0XHRcdHRoaXMuY29sbGVjdGlvbigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbi5mb3JFYWNoKHYgPT4gdi5jb2xsZWN0aW9uKCkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRmaW5kUm9vdCgpIHtcclxuXHRcdGxldCBmaW5kOiBOb2RlO1xyXG5cdFx0Zm9yIChmaW5kID0gdGhpczsgZmluZC5wYXJlbnQ7IGZpbmQgPSBmaW5kLnBhcmVudCkge31cclxuXHRcdHJldHVybiBmaW5kO1xyXG5cdH1cclxuXHRyZW1vdmVDaGlsZChub2RlOiBOb2RlKSB7XHJcblx0XHRpZiAodGhpcy5DaGlsZHJlbi5sZW5ndGggPiAxKSB7XHJcblx0XHRcdHRoaXMuQ2hpbGRyZW4uc3BsaWNlKHRoaXMuQ2hpbGRyZW4uZmluZEluZGV4KHYgPT4gdiA9PT0gbm9kZSksIDEpO1xyXG5cdFx0XHQvLyByb2905byA5aeL5qOA5p+l77yM5o+Q5Y+W5Yiw5LiK57qnXHJcblx0XHRcdHRoaXMuZmluZFJvb3QoKS5jb2xsZWN0aW9uKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRpZiAodGhpcy5wYXJlbnQpIHtcclxuXHRcdFx0XHR0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHR0aGlzLk5vZGVUeXBlID0gTm9kZVR5cGVFbnVtLnVua25vdztcclxuXHRcdFx0XHR0aGlzLkZpZWxkID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdHRoaXMuT3BlcmF0ZSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHR0aGlzLlZhbHVlID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdHRoaXMuUGxhaW5UZXh0ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHRcdHRoaXMuQ2hpbGRyZW4gPSB1bmRlZmluZWQ7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0cmVtb3ZlKCkge1xyXG5cdFx0aWYgKHRoaXMucGFyZW50KSB7XHJcblx0XHRcdHRoaXMucGFyZW50LnJlbW92ZUNoaWxkKHRoaXMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5Ob2RlVHlwZSA9IE5vZGVUeXBlRW51bS51bmtub3c7XHJcblx0XHRcdHRoaXMuRmllbGQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuT3BlcmF0ZSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0dGhpcy5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0dGhpcy5QbGFpblRleHQgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuQ2hpbGRyZW4gPSB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==