ng-yunzai-mobile
Version:
1. 修改wechat.micro.ts
339 lines • 29.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: tree-picker/yz-tree-picker/yz-tree-picker.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, Inject } from '@angular/core';
import { treePickerParams } from "./yz-tree-picker.service";
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
var YzTreePickerComponent = /** @class */ (function () {
function YzTreePickerComponent(dialogRef, data) {
this.dialogRef = dialogRef;
this.data = data;
this.titleName = null;
this.closeBtnText = null;
this.pickerClassName = null;
// 部门/班级
this.deptNode = [];
this.deptList = [];
this.resultList = [];
this.searchValue = null;
this.searchResult = [];
}
/**
* @return {?}
*/
YzTreePickerComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
this.titleName = this.data.titleName;
this.deptNode = this.data.tree;
this.closeBtnText = this.data.closeBtnText;
this.pickerClassName = this.data.pickerClassName;
this.blTree(this.deptNode, null);
this.setDefultValue();
this.blTree(this.deptNode, null);
this.dialogRef.backdropClick().subscribe((/**
* @return {?}
*/
function () {
document.getElementsByClassName('tree-picker-panel-bg')[0].remove();
_this.closeHandle();
}));
};
// 关闭
// 关闭
/**
* @return {?}
*/
YzTreePickerComponent.prototype.closeHandle =
// 关闭
/**
* @return {?}
*/
function () {
this.dialogRef.close(this.resultList);
};
// 重置
// 重置
/**
* @return {?}
*/
YzTreePickerComponent.prototype.resetHandle =
// 重置
/**
* @return {?}
*/
function () {
this.resultList = [];
this.blTree(this.deptNode, null);
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
this.cancelSearchHandle();
};
// 回显
// 回显
/**
* @return {?}
*/
YzTreePickerComponent.prototype.setDefultValue =
// 回显
/**
* @return {?}
*/
function () {
if (this.data.value) {
this.resultList = this.familyTree(this.deptNode, this.data.value).reverse();
if (this.resultList.length == 0) {
console.error('传入参数中回显数据字段(value)值不存在于数据源中!!!');
return;
}
if (this.resultList[this.resultList.length - 1].children && this.resultList[this.resultList.length - 1].children.length > 0) {
this.deptList = this.resultList[this.resultList.length - 1].children;
}
else if (this.resultList.length >= 2) {
this.deptList = this.resultList[this.resultList.length - 2].children;
}
else {
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
}
}
else {
this.deptList = this.deptNode.length > 0 ? this.deptNode : [];
}
};
// 遍历树节点,设置父id
// 遍历树节点,设置父id
/**
* @param {?} data
* @param {?} id
* @return {?}
*/
YzTreePickerComponent.prototype.blTree =
// 遍历树节点,设置父id
/**
* @param {?} data
* @param {?} id
* @return {?}
*/
function (data, id) {
var _this = this;
if (data && data.length && data.length > 0) {
data.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
item['pid'] = id;
item['selected'] = _this.resultList.some((/**
* @param {?} item2
* @return {?}
*/
function (item2) { return item2.value == item.value; }));
_this.blTree(item.children, item.value);
}));
}
};
// 递归获取子节点所有父节点
// 递归获取子节点所有父节点
/**
* @param {?} arr1
* @param {?} id
* @return {?}
*/
YzTreePickerComponent.prototype.familyTree =
// 递归获取子节点所有父节点
/**
* @param {?} arr1
* @param {?} id
* @return {?}
*/
function (arr1, id) {
/** @type {?} */
var temp = [];
/** @type {?} */
var forFn = (/**
* @param {?} arr
* @param {?} id
* @return {?}
*/
function (arr, id) {
for (var i = 0; i < arr.length; i++) {
/** @type {?} */
var item = arr[i];
if (item.value === id) {
temp.push(item);
forFn(arr1, item.pid);
break;
}
else {
if (item.children) {
forFn(item.children, id);
}
}
}
});
forFn(arr1, id);
return temp;
};
// 搜索
// 搜索
/**
* @return {?}
*/
YzTreePickerComponent.prototype.searchHandle =
// 搜索
/**
* @return {?}
*/
function () {
var _this = this;
this.searchResult = [];
if (this.searchValue) {
this.searchResult = this.deptList.filter((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.title.indexOf(_this.searchValue) != -1; }));
}
};
// 取消搜索
// 取消搜索
/**
* @return {?}
*/
YzTreePickerComponent.prototype.cancelSearchHandle =
// 取消搜索
/**
* @return {?}
*/
function () {
this.searchResult = [];
this.searchValue = null;
};
// 选择部门
// 选择部门
/**
* @param {?} dept
* @return {?}
*/
YzTreePickerComponent.prototype.selectDeptHandle =
// 选择部门
/**
* @param {?} dept
* @return {?}
*/
function (dept) {
var _this = this;
this.cancelSearchHandle();
/** @type {?} */
var hasThis = this.resultList.some((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.value == dept.value; }));
if (!hasThis) {
if (this.resultList.length > 0) {
/** @type {?} */
var hasLastItem = this.deptList.some((/**
* @param {?} item
* @return {?}
*/
function (item) { return item.value == _this.resultList[_this.resultList.length - 1].value; }));
if (hasLastItem) { // 在最后的叶子节点上更换部门
this.resultList.splice(this.resultList.length - 1, 1);
}
}
this.resultList.push(dept);
this.deptList.forEach((/**
* @param {?} item
* @return {?}
*/
function (item) {
item['selected'] = item.value == dept.value;
}));
if (dept.children && dept.children.length > 0) {
this.deptList = dept.children;
}
}
this.setScrollTop();
};
// 在结果处更改部门
// 在结果处更改部门
/**
* @param {?} item
* @param {?} index
* @return {?}
*/
YzTreePickerComponent.prototype.selectResultDeptHandle =
// 在结果处更改部门
/**
* @param {?} item
* @param {?} index
* @return {?}
*/
function (item, index) {
if (index != this.resultList.length - 1) {
this.deptList = item.children;
this.resultList.length = index + 1;
this.blTree(this.deptList, item.value);
}
this.setScrollTop();
};
// 设置数据源列表滚动条置顶
// 设置数据源列表滚动条置顶
/**
* @return {?}
*/
YzTreePickerComponent.prototype.setScrollTop =
// 设置数据源列表滚动条置顶
/**
* @return {?}
*/
function () {
setTimeout((/**
* @return {?}
*/
function () {
document.getElementsByClassName('tree-picker-comp')[0].getElementsByTagName('ul')[0].scrollTop = 0;
}), 0);
};
YzTreePickerComponent.decorators = [
{ type: Component, args: [{
selector: 'yz-tree-picker',
template: "<div class=\"tree-picker-comp\" [ngClass]=\"pickerClassName\">\n <a class=\"tree-picker-reset-btn\" (click)=\"resetHandle()\">\u91CD\u7F6E</a>\n <h2>\u8BF7\u9009\u62E9\n <ng-container *ngIf=\"titleName\">{{titleName}}</ng-container>\n </h2>\n <Icon *ngIf=\"!closeBtnText\"\n class=\"tree-picker-close-btn\"\n [type]=\"'cross'\"\n [size]=\"'md'\"\n (click)=\"closeHandle()\"\n ></Icon>\n <a *ngIf=\"closeBtnText\" class=\"tree-picker-close-btn\" (click)=\"closeHandle()\">{{closeBtnText}}</a>\n <div class=\"tree-picker-step\" *ngIf=\"resultList.length>0\">\n <Steps [size]=\"'small'\">\n <Step *ngFor=\"let item of resultList;let i=index;\"\n [title]=\"item?.title\"\n (click)=\"selectResultDeptHandle(item,i)\"></Step>\n </Steps>\n </div>\n\n <div class=\"tree-picker-search\">\n <SearchBar [placeholder]=\"'\u641C\u7D22\u2026\u2026'\"\n [(ngModel)]=\"searchValue\"\n (ngModelChange)=\"searchHandle()\"\n (onCancel)=\"cancelSearchHandle()\"></SearchBar>\n </div>\n\n <ul *ngIf=\"!searchValue\"\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\n <li *ngFor=\"let item of deptList\"\n (click)=\"selectDeptHandle(item)\"\n [class.selected]=\"item.selected\">\n <span>{{item?.title || 'XX'}}</span>\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\n </li>\n <li *ngIf=\"deptList.length==0\" style=\"text-align: center;\">\u6682\u65E0\u6570\u636E\u2026\u2026</li>\n </ul>\n\n <ul *ngIf=\"searchValue\"\n [ngStyle]=\"{'height':resultList.length>5?'calc(100% - 364px)':'calc(100% - '+(48*resultList.length+124)+'px)'}\">\n <li *ngFor=\"let item of searchResult\"\n (click)=\"selectDeptHandle(item)\"\n [class.selected]=\"item.selected\">\n <span>{{item?.title || 'XX'}}</span>\n <Icon *ngIf=\"item.children && item.children.length>0\" [type]=\"'right'\"></Icon>\n <Icon *ngIf=\"item.selected\" [type]=\"'check'\"></Icon>\n </li>\n\n <li *ngIf=\"searchResult.length==0\" style=\"text-align: center;color: red\">\u65E0\u641C\u7D22\u7ED3\u679C\u2026\u2026</li>\n </ul>\n</div>\n\n",
styles: [".textOverflow{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}::ng-deep .tree-picker-panel-bg{background:rgba(0,0,0,.4);height:100%;position:fixed;width:100%;left:0;top:0;z-index:200}::ng-deep .tree-picker-panel{position:fixed!important;bottom:0;left:0;z-index:200;width:100%;height:80%;max-width:unset!important}::ng-deep .tree-picker-panel .mat-dialog-container{padding:0;border-radius:0;transform:none!important}.tree-picker-comp{background:#fff;width:100%;height:100%;overflow:hidden}.tree-picker-comp h2{font-size:16px;text-align:center;font-weight:700;padding:10px 42px;text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul{margin:0;overflow-y:auto}.tree-picker-comp ul li{line-height:44px;overflow:hidden;padding:0 16px;color:#333}.tree-picker-comp ul li:active{background:#eaeaea}.tree-picker-comp ul li span{float:left;max-width:calc(100% - 70px);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.tree-picker-comp ul li Icon{float:right;margin:11px 0 0 10px}.tree-picker-comp ul li.selected{color:#108ee9}.tree-picker-comp ul li.selected Icon ::ng-deep .am-icon-check{color:#108ee9}.tree-picker-close-btn,.tree-picker-reset-btn{position:absolute;right:0;top:0;padding:10px;cursor:pointer;color:#333;background:#fff}.tree-picker-close-btn:active,.tree-picker-reset-btn:active{color:#108ee9}.tree-picker-reset-btn{right:auto;left:0;line-height:24px;font-size:14px;color:#108ee9}.tree-picker-reset-btn:active{opacity:.7}::ng-deep .tree-picker-step{border-bottom:1px solid #ddd;padding:12px 16px 0;max-height:253px;overflow-y:auto}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-title{font-size:14px;max-height:36px;display:-webkit-box;text-overflow:ellipsis;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}::ng-deep .tree-picker-step .am-steps-small .am-steps-icon{display:none}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-icon{width:8px;height:8px;background:#108ee9!important;margin:5px 10px 5px 6px}::ng-deep .tree-picker-step .am-steps-small .am-steps-item-tail:after{background:#108ee9!important}::ng-deep .tree-picker-search{padding:4px 8px 0}::ng-deep .tree-picker-search .am-search{background:#fff;height:55px}::ng-deep .tree-picker-search .am-search-input{border:1px solid #ddd;height:38px}::ng-deep .tree-picker-search .am-search-input input[type=search]{height:36px;line-height:36px}::ng-deep .tree-picker-search .am-search-input .am-search-synthetic-ph{height:36px;line-height:36px;padding-left:12px!important}::ng-deep .tree-picker-search .am-search-input .am-search-clear{padding:11px 7px}::ng-deep .tree-picker-search .am-search-cancel{height:38px;line-height:38px}"]
}] }
];
/** @nocollapse */
YzTreePickerComponent.ctorParameters = function () { return [
{ type: MatDialogRef },
{ type: treePickerParams, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
]; };
return YzTreePickerComponent;
}());
export { YzTreePickerComponent };
if (false) {
/** @type {?} */
YzTreePickerComponent.prototype.titleName;
/** @type {?} */
YzTreePickerComponent.prototype.closeBtnText;
/** @type {?} */
YzTreePickerComponent.prototype.pickerClassName;
/** @type {?} */
YzTreePickerComponent.prototype.deptNode;
/** @type {?} */
YzTreePickerComponent.prototype.deptList;
/** @type {?} */
YzTreePickerComponent.prototype.resultList;
/** @type {?} */
YzTreePickerComponent.prototype.searchValue;
/** @type {?} */
YzTreePickerComponent.prototype.searchResult;
/** @type {?} */
YzTreePickerComponent.prototype.dialogRef;
/** @type {?} */
YzTreePickerComponent.prototype.data;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXotdHJlZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcteXVuemFpLW1vYmlsZS8iLCJzb3VyY2VzIjpbInRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsTUFBTSxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBYSxnQkFBZ0IsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxlQUFlLEVBQUUsWUFBWSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFFdkU7SUFtQkUsK0JBQW1CLFNBQThDLEVBQ3JCLElBQXNCO1FBRC9DLGNBQVMsR0FBVCxTQUFTLENBQXFDO1FBQ3JCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBYmxFLGNBQVMsR0FBVyxJQUFJLENBQUM7UUFDekIsaUJBQVksR0FBVyxJQUFJLENBQUM7UUFDNUIsb0JBQWUsR0FBVyxJQUFJLENBQUM7O1FBRy9CLGFBQVEsR0FBc0IsRUFBRSxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFZCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLGdCQUFXLEdBQVcsSUFBSSxDQUFDO1FBQzNCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBSWxCLENBQUM7Ozs7SUFFRCx3Q0FBUTs7O0lBQVI7UUFBQSxpQkFZQztRQVhDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMvQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENB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LElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTs7Ozs7SUFDZiw0Q0FBWTs7Ozs7SUFBWjtRQUNFLFVBQVU7OztRQUFDO1lBQ1QsUUFBUSxDQUFDLHNCQUFzQixDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNyRyxDQUFDLEdBQUUsQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDOztnQkE5SkYsU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLG16RUFBOEM7O2lCQUUvQzs7OztnQkFOd0IsWUFBWTtnQkFEakIsZ0JBQWdCLHVCQXVCckIsTUFBTSxTQUFDLGVBQWU7O0lBMklyQyw0QkFBQztDQUFBLEFBL0pELElBK0pDO1NBMUpZLHFCQUFxQjs7O0lBRWhDLDBDQUF5Qjs7SUFDekIsNkNBQTRCOztJQUM1QixnREFBK0I7O0lBRy9CLHlDQUFpQzs7SUFDakMseUNBQWM7O0lBRWQsMkNBQWdCOztJQUNoQiw0Q0FBMkI7O0lBQzNCLDZDQUFrQjs7SUFFTiwwQ0FBcUQ7O0lBQ3JELHFDQUFzRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIE9uSW5pdH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2xpc3RPcHRpb24sIHRyZWVQaWNrZXJQYXJhbXN9IGZyb20gXCIuL3l6LXRyZWUtcGlja2VyLnNlcnZpY2VcIjtcbmltcG9ydCB7TUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWZ9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3l6LXRyZWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3l6LXRyZWUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veXotdHJlZS1waWNrZXIuY29tcG9uZW50Lmxlc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBZelRyZWVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHRpdGxlTmFtZTogc3RyaW5nID0gbnVsbDtcbiAgY2xvc2VCdG5UZXh0OiBzdHJpbmcgPSBudWxsO1xuICBwaWNrZXJDbGFzc05hbWU6IHN0cmluZyA9IG51bGw7XG5cbiAgLy8g6YOo6ZeoL+ePree6p1xuICBkZXB0Tm9kZTogQXJyYXk8bGlzdE9wdGlvbj4gPSBbXTtcbiAgZGVwdExpc3QgPSBbXTtcblxuICByZXN1bHRMaXN0ID0gW107XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcgPSBudWxsO1xuICBzZWFyY2hSZXN1bHQgPSBbXTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8WXpUcmVlUGlja2VyQ29tcG9uZW50PixcbiAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB0cmVlUGlja2VyUGFyYW1zKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnRpdGxlTmFtZSA9IHRoaXMuZGF0YS50aXRsZU5hbWU7XG4gICAgdGhpcy5kZXB0Tm9kZSA9IHRoaXMuZGF0YS50cmVlO1xuICAgIHRoaXMuY2xvc2VCdG5UZXh0ID0gdGhpcy5kYXRhLmNsb3NlQnRuVGV4dDtcbiAgICB0aGlzLnBpY2tlckNsYXNzTmFtZSA9IHRoaXMuZGF0YS5waWNrZXJDbGFzc05hbWU7XG4gICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0Tm9kZSwgbnVsbCk7XG4gICAgdGhpcy5zZXREZWZ1bHRWYWx1ZSgpO1xuICAgIHRoaXMuYmxUcmVlKHRoaXMuZGVwdE5vZGUsIG51bGwpO1xuICAgIHRoaXMuZGlhbG9nUmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUoKCkgPT4geyAvLyDngrnlh7vog4zmma/pga7nvanlsYLlhbPpl63pgInmi6nlmajml7ZcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ3RyZWUtcGlja2VyLXBhbmVsLWJnJylbMF0ucmVtb3ZlKCk7XG4gICAgICB0aGlzLmNsb3NlSGFuZGxlKClcbiAgICB9KVxuICB9XG5cbiAgLy8g5YWz6ZetXG4gIGNsb3NlSGFuZGxlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHRoaXMucmVzdWx0TGlzdCk7XG4gIH1cblxuICAvLyDph43nva5cbiAgcmVzZXRIYW5kbGUoKSB7XG4gICAgdGhpcy5yZXN1bHRMaXN0ID0gW107XG4gICAgdGhpcy5ibFRyZWUodGhpcy5kZXB0Tm9kZSwgbnVsbCk7XG4gICAgdGhpcy5kZXB0TGlzdCA9IHRoaXMuZGVwdE5vZGUubGVuZ3RoID4gMCA/IHRoaXMuZGVwdE5vZGUgOiBbXVxuICAgIHRoaXMuY2FuY2VsU2VhcmNoSGFuZGxlKCk7XG4gIH1cblxuICAvLyDlm57mmL5cbiAgc2V0RGVmdWx0VmFsdWUoKSB7XG4gICAgaWYgKHRoaXMuZGF0YS52YWx1ZSkge1xuICAgICAgdGhpcy5yZXN1bHRMaXN0ID0gdGhpcy5mYW1pbHlUcmVlKHRoaXMuZGVwdE5vZGUsIHRoaXMuZGF0YS52YWx1ZSkucmV2ZXJzZSgpO1xuICAgICAgaWYgKHRoaXMucmVzdWx0TGlzdC5sZW5ndGggPT0gMCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCfkvKDlhaXlj4LmlbDkuK3lm57mmL7mlbDmja7lrZfmrrXvvIh2YWx1Ze+8ieWAvOS4jeWtmOWcqOS6juaVsOaNrua6kOS4re+8ge+8ge+8gScpO1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLmNoaWxkcmVuICYmIHRoaXMucmVzdWx0TGlzdFt0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMV0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gdGhpcy5yZXN1bHRMaXN0W3RoaXMucmVzdWx0TGlzdC5sZW5ndGggLSAxXS5jaGlsZHJlbjtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA+PSAyKSB7XG4gICAgICAgIHRoaXMuZGVwdExpc3QgPSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDJdLmNoaWxkcmVuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZXB0TGlzdCA9IHRoaXMuZGVwdE5vZGUubGVuZ3RoID4gMCA/IHRoaXMuZGVwdE5vZGUgOiBbXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXB0TGlzdCA9IHRoaXMuZGVwdE5vZGUubGVuZ3RoID4gMCA/IHRoaXMuZGVwdE5vZGUgOiBbXVxuICAgIH1cbiAgfVxuXG4gIC8vIOmBjeWOhuagkeiKgueCue+8jOiuvue9rueItmlkXG4gIGJsVHJlZShkYXRhLCBpZCkge1xuICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoICYmIGRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgZGF0YS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW1bJ3BpZCddID0gaWQ7XG4gICAgICAgIGl0ZW1bJ3NlbGVjdGVkJ10gPSB0aGlzLnJlc3VsdExpc3Quc29tZShpdGVtMiA9PiBpdGVtMi52YWx1ZSA9PSBpdGVtLnZhbHVlKTtcbiAgICAgICAgdGhpcy5ibFRyZWUoaXRlbS5jaGlsZHJlbiwgaXRlbS52YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cblxuICAvLyDpgJLlvZLojrflj5blrZDoioLngrnmiYDmnInniLboioLngrlcbiAgZmFtaWx5VHJlZShhcnIxLCBpZCkge1xuICAgIGxldCB0ZW1wID0gW11cbiAgICBjb25zdCBmb3JGbiA9IGZ1bmN0aW9uIChhcnIsIGlkKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBpdGVtID0gYXJyW2ldXG4gICAgICAgIGlmIChpdGVtLnZhbHVlID09PSBpZCkge1xuICAgICAgICAgIHRlbXAucHVzaChpdGVtKVxuICAgICAgICAgIGZvckZuKGFycjEsIGl0ZW0ucGlkKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGZvckZuKGl0ZW0uY2hpbGRyZW4sIGlkKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3JGbihhcnIxLCBpZClcbiAgICByZXR1cm4gdGVtcFxuICB9XG5cbiAgLy8g5pCc57SiXG4gIHNlYXJjaEhhbmRsZSgpIHtcbiAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IFtdO1xuICAgIGlmICh0aGlzLnNlYXJjaFZhbHVlKSB7XG4gICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHRoaXMuZGVwdExpc3QuZmlsdGVyKGl0ZW0gPT4gaXRlbS50aXRsZS5pbmRleE9mKHRoaXMuc2VhcmNoVmFsdWUpICE9IC0xKVxuICAgIH1cbiAgfVxuXG4gIC8vIOWPlua2iOaQnOe0olxuICBjYW5jZWxTZWFyY2hIYW5kbGUoKSB7XG4gICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBbXTtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gbnVsbDtcbiAgfVxuXG5cbiAgLy8g6YCJ5oup6YOo6ZeoXG4gIHNlbGVjdERlcHRIYW5kbGUoZGVwdDogYW55KSB7XG4gICAgdGhpcy5jYW5jZWxTZWFyY2hIYW5kbGUoKTtcbiAgICBjb25zdCBoYXNUaGlzID0gdGhpcy5yZXN1bHRMaXN0LnNvbWUoaXRlbSA9PiBpdGVtLnZhbHVlID09IGRlcHQudmFsdWUpO1xuICAgIGlmICghaGFzVGhpcykge1xuICAgICAgaWYgKHRoaXMucmVzdWx0TGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGhhc0xhc3RJdGVtID0gdGhpcy5kZXB0TGlzdC5zb21lKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PSB0aGlzLnJlc3VsdExpc3RbdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDFdLnZhbHVlKVxuICAgICAgICBpZiAoaGFzTGFzdEl0ZW0pIHsgLy8g5Zyo5pyA5ZCO55qE5Y+25a2Q6IqC54K55LiK5pu05o2i6YOo6ZeoXG4gICAgICAgICAgdGhpcy5yZXN1bHRMaXN0LnNwbGljZSh0aGlzLnJlc3VsdExpc3QubGVuZ3RoIC0gMSwgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMucmVzdWx0TGlzdC5wdXNoKGRlcHQpO1xuICAgICAgdGhpcy5kZXB0TGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpdGVtWydzZWxlY3RlZCddID0gaXRlbS52YWx1ZSA9PSBkZXB0LnZhbHVlO1xuICAgICAgfSlcbiAgICAgIGlmIChkZXB0LmNoaWxkcmVuICYmIGRlcHQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLmRlcHRMaXN0ID0gZGVwdC5jaGlsZHJlbjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldFNjcm9sbFRvcCgpO1xuXG4gIH1cblxuICAvLyDlnKjnu5PmnpzlpITmm7TmlLnpg6jpl6hcbiAgc2VsZWN0UmVzdWx0RGVwdEhhbmRsZShpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAoaW5kZXggIT0gdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCAtIDEpIHtcbiAgICAgIHRoaXMuZGVwdExpc3QgPSBpdGVtLmNoaWxkcmVuO1xuICAgICAgdGhpcy5yZXN1bHRMaXN0Lmxlbmd0aCA9IGluZGV4ICsgMTtcbiAgICAgIHRoaXMuYmxUcmVlKHRoaXMuZGVwdExpc3QsIGl0ZW0udmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuc2V0U2Nyb2xsVG9wKCk7XG4gIH1cblxuICAvLyDorr7nva7mlbDmja7mupDliJfooajmu5rliqjmnaHnva7pobZcbiAgc2V0U2Nyb2xsVG9wKCkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgndHJlZS1waWNrZXItY29tcCcpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd1bCcpWzBdLnNjcm9sbFRvcCA9IDA7XG4gICAgfSwgMClcbiAgfVxufVxuIl19