UNPKG

dbweb-common

Version:

用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上

364 lines 26.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { NodeTypeEnum } from './model'; var Node = /** @class */ (function () { function Node() { } /** * @param {?} data * @return {?} */ Node.fromInterface = /** * @param {?} data * @return {?} */ function (data) { /** @type {?} */ var 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 {?} */ function (v) { /** @type {?} */ var n = Node.fromInterface(v); n.parent = rev; return n; })); } } return rev; }; /** * @param {?} src * @return {?} */ Node.prototype.assign = /** * @param {?} src * @return {?} */ function (src) { var _this = this; 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 {?} */ function (v) { /** @type {?} */ var rev = Node.fromInterface(v); rev.parent = _this; return rev; })); } }; /** * @return {?} */ Node.prototype.toInterface = /** * @return {?} */ function () { // empty node if (this.NodeType === NodeTypeEnum.unknow) { return null; } /** @type {?} */ var 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 {?} */ function (v) { return v.toInterface(); })); } return rev; }; /** * @param {?} index * @param {?} node * @return {?} */ Node.prototype.insertChild = /** * @param {?} index * @param {?} node * @return {?} */ function (index, node) { this.Children = this.Children || []; /** @type {?} */ var 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 {?} */ Node.prototype.replaceChild = /** * @param {?} node * @param {?} newNode * @return {?} */ function (node, newNode) { newNode.parent = this; this.Children.splice(this.Children.findIndex((/** * @param {?} v * @return {?} */ function (v) { return v === node; })), 1, newNode); }; // 添加兄弟,在当前节点之上 // 添加兄弟,在当前节点之上 /** * @param {?} node * @return {?} */ Node.prototype.addTopSibling = // 添加兄弟,在当前节点之上 /** * @param {?} node * @return {?} */ function (node) { var _this = this; if (!this.parent) { this.addChildSibling(node); return; } this.parent.insertChild(this.parent.Children.findIndex((/** * @param {?} v * @return {?} */ function (v) { return v === _this; })), node); }; // 添加兄弟,在当前节点之下 // 添加兄弟,在当前节点之下 /** * @param {?} node * @return {?} */ Node.prototype.addBottomSibling = // 添加兄弟,在当前节点之下 /** * @param {?} node * @return {?} */ function (node) { var _this = this; if (!this.parent) { this.addChildSibling(node); return; } this.parent.insertChild(this.parent.Children.findIndex((/** * @param {?} v * @return {?} */ function (v) { return v === _this; })) + 1, node); }; // 当前节点和该节点形成一个新的and节点,取代当前节点的位置 // 当前节点和该节点形成一个新的and节点,取代当前节点的位置 /** * @param {?} node * @return {?} */ Node.prototype.addChildSibling = // 当前节点和该节点形成一个新的and节点,取代当前节点的位置 /** * @param {?} node * @return {?} */ function (node) { if (this.parent) { /** @type {?} */ var andNode = Node.fromInterface({ NodeType: NodeTypeEnum.NodeAnd }); andNode.insertChild(0, node); this.parent.replaceChild(this, andNode); andNode.insertChild(0, this); } else { // 如果只有一个条件节点,则需要对内容进行替换,因为组件引用用到是指针 /** @type {?} */ var 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 // 返回扁平化后的总体高度,每个子节点算1 /** * @return {?} */ Node.prototype.flatHeight = // 返回扁平化后的总体高度,每个子节点算1 /** * @return {?} */ function () { if (NodeTypeEnum.NodeCondition === this.NodeType || NodeTypeEnum.NodePlain === this.NodeType) { return 1; } /** @type {?} */ var rev = 0; if (this.Children) { this.Children.forEach((/** * @param {?} v * @return {?} */ function (v) { return (rev += v.flatHeight()); })); } return rev; }; // 收集单节点,提升到上级 // 收集单节点,提升到上级 /** * @return {?} */ Node.prototype.collection = // 收集单节点,提升到上级 /** * @return {?} */ function () { 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 {?} */ function (v) { return v.collection(); })); } }; /** * @return {?} */ Node.prototype.findRoot = /** * @return {?} */ function () { /** @type {?} */ var find; for (find = this; find.parent; find = find.parent) { } return find; }; /** * @param {?} node * @return {?} */ Node.prototype.removeChild = /** * @param {?} node * @return {?} */ function (node) { if (this.Children.length > 1) { this.Children.splice(this.Children.findIndex((/** * @param {?} v * @return {?} */ function (v) { return 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 {?} */ Node.prototype.remove = /** * @return {?} */ function () { 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 Node; }()); export { Node }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Rid2ViLWNvbW1vbi8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9lbGV2aWV3L3R5cGVzL25vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBUyxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFHOUM7SUFBQTtJQWlMQSxDQUFDOzs7OztJQXpLTyxrQkFBYTs7OztJQUFwQixVQUFxQixJQUFXOztZQUN6QixHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDdEIsR0FBRyxDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ25DLElBQUksSUFBSSxFQUFFO1lBQ1QsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN2QixHQUFHLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDM0IsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQ3ZCLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2xCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHOzs7O2dCQUFDLFVBQUEsQ0FBQzs7d0JBQzNCLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztvQkFDL0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7b0JBQ2YsT0FBTyxDQUFDLENBQUM7Z0JBQ1YsQ0FBQyxFQUFDLENBQUM7YUFDSDtTQUNEO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDOzs7OztJQUNELHFCQUFNOzs7O0lBQU4sVUFBTyxHQUFVO1FBQWpCLGlCQWFDO1FBWkEsSUFBSSxDQUFDLFFBQVEs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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOb2RlLCBOb2RlVHlwZUVudW0gfSBmcm9tICcuL21vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgTm9kZSBpbXBsZW1lbnRzIElOb2RlIHtcclxuXHRwYXJlbnQ6IE5vZGU7XHJcblx0Tm9kZVR5cGU6IE5vZGVUeXBlRW51bTtcclxuXHRGaWVsZD86IHN0cmluZztcclxuXHRPcGVyYXRlPzogc3RyaW5nO1xyXG5cdFZhbHVlPzogc3RyaW5nO1xyXG5cdENoaWxkcmVuPzogTm9kZVtdO1xyXG5cdFBsYWluVGV4dD86IHN0cmluZztcclxuXHRzdGF0aWMgZnJvbUludGVyZmFjZShkYXRhOiBJTm9kZSk6IE5vZGUge1xyXG5cdFx0Y29uc3QgcmV2ID0gbmV3IE5vZGUoKTtcclxuXHRcdHJldi5Ob2RlVHlwZSA9IE5vZGVUeXBlRW51bS51bmtub3c7XHJcblx0XHRpZiAoZGF0YSkge1xyXG5cdFx0XHRyZXYuTm9kZVR5cGUgPSBkYXRhLk5vZGVUeXBlO1xyXG5cdFx0XHRyZXYuRmllbGQgPSBkYXRhLkZpZWxkO1xyXG5cdFx0XHRyZXYuT3BlcmF0ZSA9IGRhdGEuT3BlcmF0ZTtcclxuXHRcdFx0cmV2LlZhbHVlID0gZGF0YS5WYWx1ZTtcclxuXHRcdFx0cmV2LlBsYWluVGV4dCA9IGRhdGEuUGxhaW5UZXh0O1xyXG5cdFx0XHRpZiAoZGF0YS5DaGlsZHJlbikge1xyXG5cdFx0XHRcdHJldi5DaGlsZHJlbiA9IGRhdGEuQ2hpbGRyZW4ubWFwKHYgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgbiA9IE5vZGUuZnJvbUludGVyZmFjZSh2KTtcclxuXHRcdFx0XHRcdG4ucGFyZW50ID0gcmV2O1xyXG5cdFx0XHRcdFx0cmV0dXJuIG47XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdHJldHVybiByZXY7XHJcblx0fVxyXG5cdGFzc2lnbihzcmM6IElOb2RlKSB7XHJcblx0XHR0aGlzLk5vZGVUeXBlID0gc3JjLk5vZGVUeXBlO1xyXG5cdFx0dGhpcy5GaWVsZCA9IHNyYy5GaWVsZDtcclxuXHRcdHRoaXMuT3BlcmF0ZSA9IHNyYy5PcGVyYXRlO1xyXG5cdFx0dGhpcy5WYWx1ZSA9IHNyYy5WYWx1ZTtcclxuXHRcdHRoaXMuUGxhaW5UZXh0ID0gc3JjLlBsYWluVGV4dDtcclxuXHRcdGlmIChzcmMuQ2hpbGRyZW4pIHtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbiA9IHNyYy5DaGlsZHJlbi5tYXAodiA9PiB7XHJcblx0XHRcdFx0Y29uc3QgcmV2ID0gTm9kZS5mcm9tSW50ZXJmYWNlKHYpO1xyXG5cdFx0XHRcdHJldi5wYXJlbnQgPSB0aGlzO1xyXG5cdFx0XHRcdHJldHVybiByZXY7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHR0b0ludGVyZmFjZSgpOiBJTm9kZSB7XHJcblx0XHQvLyBlbXB0eSBub2RlXHJcblx0XHRpZiAodGhpcy5Ob2RlVHlwZSA9PT0gTm9kZVR5cGVFbnVtLnVua25vdykge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHRcdGNvbnN0IHJldjogSU5vZGUgPSB7XHJcblx0XHRcdE5vZGVUeXBlOiB0aGlzLk5vZGVUeXBlLFxyXG5cdFx0XHRGaWVsZDogdGhpcy5GaWVsZCxcclxuXHRcdFx0T3BlcmF0ZTogdGhpcy5PcGVyYXRlLFxyXG5cdFx0XHRWYWx1ZTogdGhpcy5WYWx1ZSxcclxuXHRcdFx0UGxhaW5UZXh0OiB0aGlzLlBsYWluVGV4dFxyXG5cdFx0fTtcclxuXHRcdGlmICh0aGlzLkNoaWxkcmVuKSB7XHJcblx0XHRcdHJldi5DaGlsZHJlbiA9IHRoaXMuQ2hpbGRyZW4ubWFwKHYgPT4gdi50b0ludGVyZmFjZSgpKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXY7XHJcblx0fVxyXG5cdGluc2VydENoaWxkKGluZGV4OiBudW1iZXIsIG5vZGU6IElOb2RlKSB7XHJcblx0XHR0aGlzLkNoaWxkcmVuID0gdGhpcy5DaGlsZHJlbiB8fCBbXTtcclxuXHRcdGNvbnN0IG4gPSBOb2RlLmZyb21JbnRlcmZhY2Uobm9kZSk7XHJcblx0XHRuLnBhcmVudCA9IHRoaXM7XHJcblx0XHRpZiAoaW5kZXggPj0gdGhpcy5DaGlsZHJlbi5sZW5ndGgpIHtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbi5wdXNoKG4pO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDAsIG4pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXBsYWNlQ2hpbGQobm9kZTogTm9kZSwgbmV3Tm9kZTogTm9kZSkge1xyXG5cdFx0bmV3Tm9kZS5wYXJlbnQgPSB0aGlzO1xyXG5cdFx0dGhpcy5DaGlsZHJlbi5zcGxpY2UodGhpcy5DaGlsZHJlbi5maW5kSW5kZXgodiA9PiB2ID09PSBub2RlKSwgMSwgbmV3Tm9kZSk7XHJcblx0fVxyXG5cdC8vIOa3u+WKoOWFhOW8n++8jOWcqOW9k+WJjeiKgueCueS5i+S4ilxyXG5cdGFkZFRvcFNpYmxpbmcobm9kZTogSU5vZGUpIHtcclxuXHRcdGlmICghdGhpcy5wYXJlbnQpIHtcclxuXHRcdFx0dGhpcy5hZGRDaGlsZFNpYmxpbmcobm9kZSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMucGFyZW50Lmluc2VydENoaWxkKHRoaXMucGFyZW50LkNoaWxkcmVuLmZpbmRJbmRleCh2ID0+IHYgPT09IHRoaXMpLCBub2RlKTtcclxuXHR9XHJcblx0Ly8g5re75Yqg5YWE5byf77yM5Zyo5b2T5YmN6IqC54K55LmL5LiLXHJcblx0YWRkQm90dG9tU2libGluZyhub2RlOiBJTm9kZSkge1xyXG5cdFx0aWYgKCF0aGlzLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLmFkZENoaWxkU2libGluZyhub2RlKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5wYXJlbnQuaW5zZXJ0Q2hpbGQodGhpcy5wYXJlbnQuQ2hpbGRyZW4uZmluZEluZGV4KHYgPT4gdiA9PT0gdGhpcykgKyAxLCBub2RlKTtcclxuXHR9XHJcblx0Ly8g5b2T5YmN6IqC54K55ZKM6K+l6IqC54K55b2i5oiQ5LiA5Liq5paw55qEYW5k6IqC54K577yM5Y+W5Luj5b2T5YmN6IqC54K555qE5L2N572uXHJcblx0YWRkQ2hpbGRTaWJsaW5nKG5vZGU6IElOb2RlKSB7XHJcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcclxuXHRcdFx0Y29uc3QgYW5kTm9kZSA9IE5vZGUuZnJvbUludGVyZmFjZSh7IE5vZGVUeXBlOiBOb2RlVHlwZUVudW0uTm9kZUFuZCB9KTtcclxuXHRcdFx0YW5kTm9kZS5pbnNlcnRDaGlsZCgwLCBub2RlKTtcclxuXHRcdFx0dGhpcy5wYXJlbnQucmVwbGFjZUNoaWxkKHRoaXMsIGFuZE5vZGUpO1xyXG5cdFx0XHRhbmROb2RlLmluc2VydENoaWxkKDAsIHRoaXMpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Ly8g5aaC5p6c5Y+q5pyJ5LiA5Liq5p2h5Lu26IqC54K577yM5YiZ6ZyA6KaB5a+55YaF5a656L+b6KGM5pu/5o2i77yM5Zug5Li657uE5Lu25byV55So55So5Yiw5piv5oyH6ZKIXHJcblx0XHRcdGNvbnN0IG5ld1RoaXMgPSBOb2RlLmZyb21JbnRlcmZhY2Uoe1xyXG5cdFx0XHRcdE5vZGVUeXBlOiB0aGlzLk5vZGVUeXBlLFxyXG5cdFx0XHRcdEZpZWxkOiB0aGlzLkZpZWxkLFxyXG5cdFx0XHRcdE9wZXJhdGU6IHRoaXMuT3BlcmF0ZSxcclxuXHRcdFx0XHRWYWx1ZTogdGhpcy5WYWx1ZSxcclxuXHRcdFx0XHRQbGFpblRleHQ6IHRoaXMuUGxhaW5UZXh0XHJcblx0XHRcdH0pO1xyXG5cdFx0XHRuZXdUaGlzLnBhcmVudCA9IHRoaXM7XHJcblx0XHRcdHRoaXMuTm9kZVR5cGUgPSBOb2RlVHlwZUVudW0uTm9kZUFuZDtcclxuXHRcdFx0dGhpcy5GaWVsZCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0dGhpcy5PcGVyYXRlID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLlZhbHVlID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLlBsYWluVGV4dCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0dGhpcy5DaGlsZHJlbiA9IFtuZXdUaGlzXTtcclxuXHRcdFx0dGhpcy5pbnNlcnRDaGlsZCgxLCBub2RlKTtcclxuXHRcdH1cclxuXHR9XHJcblx0Ly8g6L+U5Zue5omB5bmz5YyW5ZCO55qE5oC75L2T6auY5bqm77yM5q+P5Liq5a2Q6IqC54K5566XMVxyXG5cdGZsYXRIZWlnaHQoKTogbnVtYmVyIHtcclxuXHRcdGlmIChOb2RlVHlwZUVudW0uTm9kZUNvbmRpdGlvbiA9PT0gdGhpcy5Ob2RlVHlwZSB8fCBOb2RlVHlwZUVudW0uTm9kZVBsYWluID09PSB0aGlzLk5vZGVUeXBlKSB7XHJcblx0XHRcdHJldHVybiAxO1xyXG5cdFx0fVxyXG5cdFx0bGV0IHJldiA9IDA7XHJcblx0XHRpZiAodGhpcy5DaGlsZHJlbikge1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuLmZvckVhY2godiA9PiAocmV2ICs9IHYuZmxhdEhlaWdodCgpKSk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gcmV2O1xyXG5cdH1cclxuXHQvLyDmlLbpm4bljZXoioLngrnvvIzmj5DljYfliLDkuIrnuqdcclxuXHRjb2xsZWN0aW9uKCkge1xyXG5cdFx0aWYgKCF0aGlzLkNoaWxkcmVuKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmICh0aGlzLkNoaWxkcmVuLmxlbmd0aCA9PT0gMSkge1xyXG5cdFx0XHR0aGlzLk5vZGVUeXBlID0gdGhpcy5DaGlsZHJlblswXS5Ob2RlVHlwZTtcclxuXHRcdFx0dGhpcy5GaWVsZCA9IHRoaXMuQ2hpbGRyZW5bMF0uRmllbGQ7XHJcblx0XHRcdHRoaXMuT3BlcmF0ZSA9IHRoaXMuQ2hpbGRyZW5bMF0uT3BlcmF0ZTtcclxuXHRcdFx0dGhpcy5WYWx1ZSA9IHRoaXMuQ2hpbGRyZW5bMF0uVmFsdWU7XHJcblx0XHRcdHRoaXMuUGxhaW5UZXh0ID0gdGhpcy5DaGlsZHJlblswXS5QbGFpblRleHQ7XHJcblx0XHRcdHRoaXMuQ2hpbGRyZW4gPSB0aGlzLkNoaWxkcmVuWzBdLkNoaWxkcmVuO1xyXG5cdFx0XHR0aGlzLmNvbGxlY3Rpb24oKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuQ2hpbGRyZW4uZm9yRWFjaCh2ID0+IHYuY29sbGVjdGlvbigpKTtcclxuXHRcdH1cclxuXHR9XHJcblx0ZmluZFJvb3QoKSB7XHJcblx0XHRsZXQgZmluZDogTm9kZTtcclxuXHRcdGZvciAoZmluZCA9IHRoaXM7IGZpbmQucGFyZW50OyBmaW5kID0gZmluZC5wYXJlbnQpIHt9XHJcblx0XHRyZXR1cm4gZmluZDtcclxuXHR9XHJcblx0cmVtb3ZlQ2hpbGQobm9kZTogTm9kZSkge1xyXG5cdFx0aWYgKHRoaXMuQ2hpbGRyZW4ubGVuZ3RoID4gMSkge1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuLnNwbGljZSh0aGlzLkNoaWxkcmVuLmZpbmRJbmRleCh2ID0+IHYgPT09IG5vZGUpLCAxKTtcclxuXHRcdFx0Ly8gcm9vdOW8gOWni+ajgOafpe+8jOaPkOWPluWIsOS4iue6p1xyXG5cdFx0XHR0aGlzLmZpbmRSb290KCkuY29sbGVjdGlvbigpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0aWYgKHRoaXMucGFyZW50KSB7XHJcblx0XHRcdFx0dGhpcy5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcyk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0dGhpcy5Ob2RlVHlwZSA9IE5vZGVUeXBlRW51bS51bmtub3c7XHJcblx0XHRcdFx0dGhpcy5GaWVsZCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHR0aGlzLk9wZXJhdGUgPSB1bmRlZmluZWQ7XHJcblx0XHRcdFx0dGhpcy5WYWx1ZSA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHR0aGlzLlBsYWluVGV4dCA9IHVuZGVmaW5lZDtcclxuXHRcdFx0XHR0aGlzLkNoaWxkcmVuID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdHJlbW92ZSgpIHtcclxuXHRcdGlmICh0aGlzLnBhcmVudCkge1xyXG5cdFx0XHR0aGlzLnBhcmVudC5yZW1vdmVDaGlsZCh0aGlzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuTm9kZVR5cGUgPSBOb2RlVHlwZUVudW0udW5rbm93O1xyXG5cdFx0XHR0aGlzLkZpZWxkID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLk9wZXJhdGUgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuVmFsdWUgPSB1bmRlZmluZWQ7XHJcblx0XHRcdHRoaXMuUGxhaW5UZXh0ID0gdW5kZWZpbmVkO1xyXG5cdFx0XHR0aGlzLkNoaWxkcmVuID0gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH1cclxufVxyXG4iXX0=