UNPKG

dbweb-common

Version:

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

359 lines 27.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable } from '@angular/core'; import { ElementsService, CurrentService, ProjectService } from 'dbweb-core'; var NavtreeService = /** @class */ (function () { // get data(): NavItem[] { // console.log(this.dataChange.value); // return this.dataChange.value; // } function NavtreeService(eles, project) { this.eles = eles; this.project = project; this.root = { children: [] }; // dataChange = new BehaviorSubject<NavItem[]>([]); this.icons = ['security', 'dns', 'gamepad']; // 图标 // this.initialize(); this.init(); for (var i = 0; i < Math.min(this.root.children.length, this.icons.length); i++) { this.root.children[i].iconName = this.icons[i]; } } /** * @return {?} */ NavtreeService.prototype.init = /** * @return {?} */ function () { var _this = this; // 设置项目图标 if (this.project.categoryIcons && this.project.categoryIcons.length > 0) { this.icons = this.project.categoryIcons; } // 如果已经初始化过,则跳出 if (this.root.children.length > 0) { return; } this.eles.getElesAsArray().forEach((/** * @param {?} element * @return {?} */ function (element) { // 后端api或者子级工作元素的,不需要加入到node列表中 if (!element.NotMenu) { _this.addElement(element, _this.root, element.Category.split('/'), 0, null, element.Icon); } })); // console.log(this.root.children[0].iconName); // console.log(this.root); }; /** * @private * @param {?} str * @return {?} */ NavtreeService.prototype.clearText = /** * @private * @param {?} str * @return {?} */ function (str) { if (str.search(/[0-9]{2}\./) > -1) { return str.substr(3); } return str; }; // 采用插入排序方法逐条插入 // 采用插入排序方法逐条插入 /** * @private * @param {?} ele * @param {?} parent * @param {?} paths * @param {?} level * @param {?} parents * @param {?} iconName * @return {?} */ NavtreeService.prototype.addElement = // 采用插入排序方法逐条插入 /** * @private * @param {?} ele * @param {?} parent * @param {?} paths * @param {?} level * @param {?} parents * @param {?} iconName * @return {?} */ function (ele, parent, paths, level, parents, iconName) { if (paths.length === 0) { // 实际插入的菜单项,也需要排序 /** @type {?} */ var idx = parent.children.findIndex((/** * @param {?} item * @return {?} */ function (item) { return (ele.Label || ele.Name).localeCompare(item.fullTitle || item.name) <= 0; })); /** @type {?} */ var node = { name: ele.Name, fullTitle: ele.Label, title: this.clearText(ele.Label || ele.Name), url: this.eles.frontElementURL(ele.Name, decodeURI(ele.URL)), level: level, parent: parents, iconName: iconName }; if (idx === -1) { parent.children.push(node); } else { parent.children.splice(idx, 0, node); } return; } /** @type {?} */ var findIdx = parent.children.findIndex((/** * @param {?} item * @return {?} */ function (item) { return paths[0].localeCompare(item.name) <= 0; })); /** @type {?} */ var categoryNode; if (findIdx !== -1 && parent.children[findIdx].name === paths[0]) { categoryNode = parent.children[findIdx]; } else { categoryNode = { name: paths[0], fullTitle: paths[0], title: this.clearText(paths[0]), level: level, parent: parents, iconName: iconName, children: [] }; // 如果找不到,则说明比里面任何一个都大,则是追加到最后一个 if (findIdx === -1) { parent.children.push(categoryNode); } else { parent.children.splice(findIdx, 0, categoryNode); } } this.addElement(ele, categoryNode, paths.slice(1), level + 1, categoryNode, iconName); }; NavtreeService.decorators = [ { type: Injectable } ]; /** @nocollapse */ NavtreeService.ctorParameters = function () { return [ { type: ElementsService }, { type: ProjectService } ]; }; return NavtreeService; }()); export { NavtreeService }; if (false) { /** @type {?} */ NavtreeService.prototype.root; /** @type {?} */ NavtreeService.prototype.icons; /** * @type {?} * @private */ NavtreeService.prototype.eles; /** * @type {?} * @private */ NavtreeService.prototype.project; } var NavHome = /** @class */ (function () { function NavHome(current, database, prj) { this.current = current; this.database = database; this.prj = prj; this.chatMessages = []; this.unread = null; // 未读信息数 // 未读信息数 this.openNodeCurrent = []; this.activeNode = []; this.subs = []; } /** * @param {?} node * @return {?} */ NavHome.prototype.recursionFun = /** * @param {?} node * @return {?} */ function (node) { if (node.level <= 0) { return this.openNodeCurrent.push(node); } if (node.level >= 1) { this.openNodeCurrent.push(node); this.recursionFun(node.parent); } }; /** * @param {?} node * @return {?} */ NavHome.prototype.recursionFuns = /** * @param {?} node * @return {?} */ function (node) { if (node.level <= 0) { return this.activeNode.push(node); } if (node.level >= 1) { this.activeNode.push(node); this.recursionFuns(node.parent); } }; /** * @param {?} node * @return {?} */ NavHome.prototype.gradually = /** * @param {?} node * @return {?} */ function (node) { if (this.activeNode.length !== 0) { this.activeNode.splice(0, this.activeNode.length); } this.recursionFuns(node); }; /** * @param {?} node * @return {?} */ NavHome.prototype.openNode = /** * @param {?} node * @return {?} */ function (node) { /** @type {?} */ var openboolean = this.openNodeCurrent.includes(node); if (this.openNodeCurrent.length !== 0) { this.openNodeCurrent.splice(0, this.openNodeCurrent.length); } if (openboolean) { if (node.level >= 1) { this.recursionFun(node.parent); } if (node.level === 0) { this.recursionFun(this.database.root); } } else { this.recursionFun(node); } }; /** * @return {?} */ NavHome.prototype.messages = /** * @return {?} */ function () { var _this = this; /** @type {?} */ var chatData = JSON.parse(this.prj.loadData('chatdata')); if (chatData == null) { this.prj.saveData('chatdata', JSON.stringify(this.chatMessages)); } this.subs.push(this.current.wsChat.observable.subscribe((/** * @param {?} n * @return {?} */ function (n) { _this.chatMessages.push(n); _this.prj.saveData('chatdata', JSON.stringify(_this.chatMessages)); if (n != null) { _this.unread = _this.unread + 1; } // console.log(JSON.parse(localStorage.getItem('chatdata'))); }), (/** * @param {?} err * @return {?} */ function (err) { return console.log(err); }), (/** * @return {?} */ function () { return console.log('component'); }))); this.chatMessages = chatData; }; /** * @param {?} item * @return {?} */ NavHome.prototype.fromChildFunc = /** * @param {?} item * @return {?} */ function (item) { if (this.activeNode.length !== 0) { this.activeNode.splice(0, this.activeNode.length); } this.recursionFuns(item); if (this.openNodeCurrent.length !== 0) { this.openNodeCurrent.splice(0, this.openNodeCurrent.length); } this.recursionFun(item); }; NavHome.decorators = [ { type: Injectable } ]; /** @nocollapse */ NavHome.ctorParameters = function () { return [ { type: CurrentService }, { type: NavtreeService }, { type: ProjectService } ]; }; return NavHome; }()); export { NavHome }; if (false) { /** @type {?} */ NavHome.prototype.portraitURL; /** @type {?} */ NavHome.prototype.chatMessages; /** @type {?} */ NavHome.prototype.messageBody; /** @type {?} */ NavHome.prototype.unread; /** @type {?} */ NavHome.prototype.openNodeCurrent; /** @type {?} */ NavHome.prototype.activeNode; /** @type {?} */ NavHome.prototype.subs; /** * @type {?} * @private */ NavHome.prototype.current; /** * @type {?} * @private */ NavHome.prototype.database; /** * @type {?} * @private */ NavHome.prototype.prj; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2dHJlZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vZGJ3ZWItY29tbW9uLyIsInNvdXJjZXMiOlsibGliL2hvbWUvbmF2LWl0ZW1uL25hdnRyZWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQVksZUFBZSxFQUFlLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHcEc7SUFNQywwQkFBMEI7SUFDMUIsdUNBQXVDO0lBQ3ZDLGlDQUFpQztJQUNqQyxJQUFJO0lBRUosd0JBQW9CLElBQXFCLEVBQVUsT0FBdUI7UUFBdEQsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQVQxRSxTQUFJLEdBQVksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUM7O1FBRWpDLFVBQUssR0FBRyxDQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLO1FBUTVDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNoRixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvQztJQUNGLENBQUM7Ozs7SUFDRCw2QkFBSTs7O0lBQUo7UUFBQSxpQkFpQkM7UUFoQkEsU0FBUztRQUNULElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUks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WUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pCLENBQUM7O2dCQWhGRCxVQUFVOzs7O2dCQW5Hc0MsY0FBYztnQkE0R0MsY0FBYztnQkE1R2IsY0FBYzs7SUFvTC9FLGNBQUM7Q0FBQSxBQWpGRCxJQWlGQztTQWhGWSxPQUFPOzs7SUFDbkIsOEJBQW9COztJQUNwQiwrQkFBaUM7O0lBQ2pDLDhCQUFvQjs7SUFDcEIseUJBQXNCOztJQUN0QixrQ0FBZ0M7O0lBQ2hDLDZCQUEyQjs7SUFDM0IsdUJBQTBCOzs7OztJQUNkLDBCQUErQjs7Ozs7SUFBRSwyQkFBZ0M7Ozs7O0lBQUUsc0JBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgSUVsZW1lbnQsIEVsZW1lbnRzU2VydmljZSwgQ2hhdE1lc3NhZ2UsIEN1cnJlbnRTZXJ2aWNlLCBQcm9qZWN0U2VydmljZSB9IGZyb20gJ2Rid2ViLWNvcmUnO1xyXG5pbXBvcnQgeyBOYXZJdGVtIH0gZnJvbSAnLi9uYXYtaXRlbSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBOYXZ0cmVlU2VydmljZSB7XHJcblx0cm9vdDogTmF2SXRlbSA9IHsgY2hpbGRyZW46IFtdIH07XHJcblx0Ly8gZGF0YUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TmF2SXRlbVtdPihbXSk7XHJcblx0aWNvbnMgPSBbJ3NlY3VyaXR5JywgJ2RucycsICdnYW1lcGFkJ107IC8vIOWbvuagh1xyXG5cclxuXHQvLyBnZXQgZGF0YSgpOiBOYXZJdGVtW10ge1xyXG5cdC8vIFx0Y29uc29sZS5sb2codGhpcy5kYXRhQ2hhbmdlLnZhbHVlKTtcclxuXHQvLyBcdHJldHVybiB0aGlzLmRhdGFDaGFuZ2UudmFsdWU7XHJcblx0Ly8gfVxyXG5cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSwgcHJpdmF0ZSBwcm9qZWN0OiBQcm9qZWN0U2VydmljZSkge1xyXG5cdFx0Ly8gdGhpcy5pbml0aWFsaXplKCk7XHJcblx0XHR0aGlzLmluaXQoKTtcclxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4odGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCwgdGhpcy5pY29ucy5sZW5ndGgpOyBpKyspIHtcclxuXHRcdFx0dGhpcy5yb290LmNoaWxkcmVuW2ldLmljb25OYW1lID0gdGhpcy5pY29uc1tpXTtcclxuXHRcdH1cclxuXHR9XHJcblx0aW5pdCgpIHtcclxuXHRcdC8vIOiuvue9rumhueebruWbvuagh1xyXG5cdFx0aWYgKHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zICYmIHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5pY29ucyA9IHRoaXMucHJvamVjdC5jYXRlZ29yeUljb25zO1xyXG5cdFx0fVxyXG5cdFx0Ly8g5aaC5p6c5bey57uP5Yid5aeL5YyW6L+H77yM5YiZ6Lez5Ye6XHJcblx0XHRpZiAodGhpcy5yb290LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5lbGVzLmdldEVsZXNBc0FycmF5KCkuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuXHRcdFx0Ly8g5ZCO56uvYXBp5oiW6ICF5a2Q57qn5bel5L2c5YWD57Sg55qE77yM5LiN6ZyA6KaB5Yqg5YWl5Yiwbm9kZeWIl+ihqOS4rVxyXG5cdFx0XHRpZiAoIWVsZW1lbnQuTm90TWVudSkge1xyXG5cdFx0XHRcdHRoaXMuYWRkRWxlbWVudChlbGVtZW50LCB0aGlzLnJvb3QsIGVsZW1lbnQuQ2F0ZWdvcnkuc3BsaXQoJy8nKSwgMCwgbnVsbCwgZWxlbWVudC5JY29uKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLnJvb3QuY2hpbGRyZW5bMF0uaWNvbk5hbWUpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2codGhpcy5yb290KTtcclxuXHR9XHJcblx0cHJpdmF0ZSBjbGVhclRleHQoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG5cdFx0aWYgKHN0ci5zZWFyY2goL1swLTldezJ9XFwuLykgPiAtMSkge1xyXG5cdFx0XHRyZXR1cm4gc3RyLnN1YnN0cigzKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBzdHI7XHJcblx0fVxyXG5cdC8vIOmHh+eUqOaPkuWFpeaOkuW6j+aWueazlemAkOadoeaPkuWFpVxyXG5cdHByaXZhdGUgYWRkRWxlbWVudChcclxuXHRcdGVsZTogSUVsZW1lbnQsXHJcblx0XHRwYXJlbnQ6IE5hdkl0ZW0sXHJcblx0XHRwYXRoczogc3RyaW5nW10sXHJcblx0XHRsZXZlbDogbnVtYmVyLFxyXG5cdFx0cGFyZW50czogTmF2SXRlbSxcclxuXHRcdGljb25OYW1lOiBzdHJpbmdcclxuXHQpIHtcclxuXHRcdGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0Ly8g5a6e6ZmF5o+S5YWl55qE6I+c5Y2V6aG577yM5Lmf6ZyA6KaB5o6S5bqPXHJcblx0XHRcdGNvbnN0IGlkeCA9IHBhcmVudC5jaGlsZHJlbi5maW5kSW5kZXgoXHJcblx0XHRcdFx0aXRlbSA9PiAoZWxlLkxhYmVsIHx8IGVsZS5OYW1lKS5sb2NhbGVDb21wYXJlKGl0ZW0uZnVsbFRpdGxlIHx8IGl0ZW0ubmFtZSkgPD0gMFxyXG5cdFx0XHQpO1xyXG5cdFx0XHRjb25zdCBub2RlID0ge1xyXG5cdFx0XHRcdG5hbWU6IGVsZS5OYW1lLFxyXG5cdFx0XHRcdGZ1bGxUaXRsZTogZWxlLkxhYmVsLFxyXG5cdFx0XHRcdHRpdGxlOiB0aGlzLmNsZWFyVGV4dChlbGUuTGFiZWwgfHwgZWxlLk5hbWUpLFxyXG5cdFx0XHRcdHVybDogdGhpcy5lbGVzLmZyb250RWxlbWVudFVSTChlbGUuTmFtZSwgZGVjb2RlVVJJKGVsZS5VUkwpKSxcclxuXHRcdFx0XHRsZXZlbDogbGV2ZWwsXHJcblx0XHRcdFx0cGFyZW50OiBwYXJlbnRzLFxyXG5cdFx0XHRcdGljb25OYW1lOiBpY29uTmFtZVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRpZiAoaWR4ID09PSAtMSkge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoaWR4LCAwLCBub2RlKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRjb25zdCBmaW5kSWR4ID0gcGFyZW50LmNoaWxkcmVuLmZpbmRJbmRleChpdGVtID0+IHBhdGhzWzBdLmxvY2FsZUNvbXBhcmUoaXRlbS5uYW1lKSA8PSAwKTtcclxuXHRcdGxldCBjYXRlZ29yeU5vZGU6IE5hdkl0ZW07XHJcblx0XHRpZiAoZmluZElkeCAhPT0gLTEgJiYgcGFyZW50LmNoaWxkcmVuW2ZpbmRJZHhdLm5hbWUgPT09IHBhdGhzWzBdKSB7XHJcblx0XHRcdGNhdGVnb3J5Tm9kZSA9IHBhcmVudC5jaGlsZHJlbltmaW5kSWR4XTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdGNhdGVnb3J5Tm9kZSA9IHtcclxuXHRcdFx0XHRuYW1lOiBwYXRoc1swXSxcclxuXHRcdFx0XHRmdWxsVGl0bGU6IHBhdGhzWzBdLFxyXG5cdFx0XHRcdHRpdGxlOiB0aGlzLmNsZWFyVGV4dChwYXRoc1swXSksXHJcblx0XHRcdFx0bGV2ZWw6IGxldmVsLFxyXG5cdFx0XHRcdHBhcmVudDogcGFyZW50cyxcclxuXHRcdFx0XHRpY29uTmFtZTogaWNvbk5hbWUsXHJcblx0XHRcdFx0Y2hpbGRyZW46IFtdXHJcblx0XHRcdH07XHJcblx0XHRcdC8vIOWmguaenOaJvuS4jeWIsO+8jOWImeivtOaYjuavlOmHjOmdouS7u+S9leS4gOS4qumDveWkp++8jOWImeaYr+i/veWKoOWIsOacgOWQjuS4gOS4qlxyXG5cdFx0XHRpZiAoZmluZElkeCA9PT0gLTEpIHtcclxuXHRcdFx0XHRwYXJlbnQuY2hpbGRyZW4ucHVzaChjYXRlZ29yeU5vZGUpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5zcGxpY2UoZmluZElkeCwgMCwgY2F0ZWdvcnlOb2RlKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0dGhpcy5hZGRFbGVtZW50KGVsZSwgY2F0ZWdvcnlOb2RlLCBwYXRocy5zbGljZSgxKSwgbGV2ZWwgKyAxLCBjYXRlZ29yeU5vZGUsIGljb25OYW1lKTtcclxuXHR9XHJcbn1cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTmF2SG9tZSB7XHJcblx0cG9ydHJhaXRVUkw6IHN0cmluZztcclxuXHRjaGF0TWVzc2FnZXM6IENoYXRNZXNzYWdlW10gPSBbXTtcclxuXHRtZXNzYWdlQm9keTogc3RyaW5nO1xyXG5cdHVucmVhZDogbnVtYmVyID0gbnVsbDsgLy8g5pyq6K+75L+h5oGv5pWwXHJcblx0b3Blbk5vZGVDdXJyZW50OiBOYXZJdGVtW10gPSBbXTtcclxuXHRhY3RpdmVOb2RlOiBOYXZJdGVtW10gPSBbXTtcclxuXHRzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgY3VycmVudDogQ3VycmVudFNlcnZpY2UsIHByaXZhdGUgZGF0YWJhc2U6IE5hdnRyZWVTZXJ2aWNlLCBwcml2YXRlIHByajogUHJvamVjdFNlcnZpY2UpIHt9XHJcblx0cmVjdXJzaW9uRnVuKG5vZGU6IE5hdkl0ZW0pIHtcclxuXHRcdGlmIChub2RlLmxldmVsIDw9IDApIHtcclxuXHRcdFx0cmV0dXJuIHRoaXMub3Blbk5vZGVDdXJyZW50LnB1c2gobm9kZSk7XHJcblx0XHR9XHJcblx0XHRpZiAobm9kZS5sZXZlbCA+PSAxKSB7XHJcblx0XHRcdHRoaXMub3Blbk5vZGVDdXJyZW50LnB1c2gobm9kZSk7XHJcblx0XHRcdHRoaXMucmVjdXJzaW9uRnVuKG5vZGUucGFyZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmVjdXJzaW9uRnVucyhub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAobm9kZS5sZXZlbCA8PSAwKSB7XHJcblx0XHRcdHJldHVybiB0aGlzLmFjdGl2ZU5vZGUucHVzaChub2RlKTtcclxuXHRcdH1cclxuXHRcdGlmIChub2RlLmxldmVsID49IDEpIHtcclxuXHRcdFx0dGhpcy5hY3RpdmVOb2RlLnB1c2gobm9kZSk7XHJcblx0XHRcdHRoaXMucmVjdXJzaW9uRnVucyhub2RlLnBhcmVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGdyYWR1YWxseShub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVOb2RlLmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLmFjdGl2ZU5vZGUuc3BsaWNlKDAsIHRoaXMuYWN0aXZlTm9kZS5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZWN1cnNpb25GdW5zKG5vZGUpO1xyXG5cdH1cclxuXHRvcGVuTm9kZShub2RlOiBOYXZJdGVtKSB7XHJcblx0XHRjb25zdCBvcGVuYm9vbGVhbiA9IHRoaXMub3Blbk5vZGVDdXJyZW50LmluY2x1ZGVzKG5vZGUpO1xyXG5cdFx0aWYgKHRoaXMub3Blbk5vZGVDdXJyZW50Lmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLm9wZW5Ob2RlQ3VycmVudC5zcGxpY2UoMCwgdGhpcy5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdGlmIChvcGVuYm9vbGVhbikge1xyXG5cdFx0XHRpZiAobm9kZS5sZXZlbCA+PSAxKSB7XHJcblx0XHRcdFx0dGhpcy5yZWN1cnNpb25GdW4obm9kZS5wYXJlbnQpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChub2RlLmxldmVsID09PSAwKSB7XHJcblx0XHRcdFx0dGhpcy5yZWN1cnNpb25GdW4odGhpcy5kYXRhYmFzZS5yb290KTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5yZWN1cnNpb25GdW4obm9kZSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdG1lc3NhZ2VzKCkge1xyXG5cdFx0Y29uc3QgY2hhdERhdGEgPSBKU09OLnBhcnNlKHRoaXMucHJqLmxvYWREYXRhKCdjaGF0ZGF0YScpKTtcclxuXHRcdGlmIChjaGF0RGF0YSA9PSBudWxsKSB7XHJcblx0XHRcdHRoaXMucHJqLnNhdmVEYXRhKCdjaGF0ZGF0YScsIEpTT04uc3RyaW5naWZ5KHRoaXMuY2hhdE1lc3NhZ2VzKSk7XHJcblx0XHR9XHJcblx0XHR0aGlzLnN1YnMucHVzaChcclxuXHRcdFx0dGhpcy5jdXJyZW50LndzQ2hhdC5vYnNlcnZhYmxlLnN1YnNjcmliZShcclxuXHRcdFx0XHRuID0+IHtcclxuXHRcdFx0XHRcdHRoaXMuY2hhdE1lc3NhZ2VzLnB1c2gobik7XHJcblx0XHRcdFx0XHR0aGlzLnByai5zYXZlRGF0YSgnY2hhdGRhdGEnLCBKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXRNZXNzYWdlcykpO1xyXG5cdFx0XHRcdFx0aWYgKG4gIT0gbnVsbCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnVucmVhZCA9IHRoaXMudW5yZWFkICsgMTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2NoYXRkYXRhJykpKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdGVyciA9PiBjb25zb2xlLmxvZyhlcnIpLFxyXG5cdFx0XHRcdCgpID0+IGNvbnNvbGUubG9nKCdjb21wb25lbnQnKVxyXG5cdFx0XHQpXHJcblx0XHQpO1xyXG5cdFx0dGhpcy5jaGF0TWVzc2FnZXMgPSBjaGF0RGF0YTtcclxuXHR9XHJcblx0ZnJvbUNoaWxkRnVuYyhpdGVtOiBOYXZJdGVtKSB7XHJcblx0XHRpZiAodGhpcy5hY3RpdmVOb2RlLmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLmFjdGl2ZU5vZGUuc3BsaWNlKDAsIHRoaXMuYWN0aXZlTm9kZS5sZW5ndGgpO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy5yZWN1cnNpb25GdW5zKGl0ZW0pO1xyXG5cdFx0aWYgKHRoaXMub3Blbk5vZGVDdXJyZW50Lmxlbmd0aCAhPT0gMCkge1xyXG5cdFx0XHR0aGlzLm9wZW5Ob2RlQ3VycmVudC5zcGxpY2UoMCwgdGhpcy5vcGVuTm9kZUN1cnJlbnQubGVuZ3RoKTtcclxuXHRcdH1cclxuXHRcdHRoaXMucmVjdXJzaW9uRnVuKGl0ZW0pO1xyXG5cdH1cclxufVxyXG4iXX0=