ecp-ui-lib
Version:
408 lines (405 loc) • 30.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
左边导航 'ecp-nav-bar' v1.2
*/
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { animate, state, style, transition, trigger } from '@angular/animations';
import { Router } from '@angular/router';
export class NavBarComponent {
// 历史选中菜单,收缩时记录,展开时使用
/*
menus: Array<any> = [
{
'name': '基本组件',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '左边导航',
'uri': 'navBarPage',
'iconuri': '',
'child': null
},
{
'name': '顶部导航',
'uri': 'topNavPage',
'iconuri': '',
'child': null
},
{
'name': '页面左边导航',
'uri': 'pageLeftNavPage',
'iconuri': '',
'child': null
},
{
'name': '开关切换',
'uri': 'switchPage',
'iconuri': '',
'child': null
},
{
'name': '面包屑',
'uri': 'breadCrumbPage',
'iconuri': '',
'child': null
},
{
'name': '步骤条',
'uri': 'stepsInfo',
'iconuri': '',
'child': null
},
{
'name': '工具条',
'uri': 'toolBarPage',
'iconuri': '',
'child': null
}
,
{
'name': '搜索模块',
'uri': 'seachModulePage',
'iconuri': '',
'child': null
}
,
{
'name': '弹出详情',
'uri': 'openDetailsInfo',
'iconuri': '',
'child': null
}
,
{
'name': '弹出详情2',
'uri': 'openDetailsInfo2',
'iconuri': '',
'child': null
},
{
'name': '地图用组件',
'uri': 'dotRipplePage',
'iconuri': '',
'child': null
},
{
'name': '侧边栏弹出',
'uri': 'popupSidebarPage',
'iconuri': '',
'child': null
},
{
'name': '标签页',
'uri': 'tabsPage',
'iconuri': '',
'child': null
},
{
'name': '状态条',
'uri': 'statusBarPage',
'iconuri': '',
'child': null
}
]
},
{
'name': '布局组件',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '布局演示',
'uri': 'layoutDemoPage',
'iconuri': '',
'child': null
},
{
'name': '上中下',
'uri': 'flexTopCenterBottom',
'iconuri': '',
'child': null
},
{
'name': '左中右',
'uri': 'flexleftCenterRight',
'iconuri': '',
'child': null
}
]
},
{
'name': '数据展示',
'uri': '',
'iconuri': 'pipe_area',
'child': [
{
'name': '登录界面',
'uri': 'loginPage',
'iconuri': '',
'child': null
},
{
'name': '系统切换',
'uri': 'homePage',
'iconuri': '',
'child': null
},
{
'name': '页面演示1',
'uri': 'pageDemo',
'iconuri': '',
'child': null
},
{
'name': '页面演示3',
'uri': 'pageDemo3',
'iconuri': '',
'child': null
},
{
'name': '页面演示2',
'uri': 'detailsStyle1',
'iconuri': '',
'child': null
},
{
'name': '表格展示1',
'uri': 'dataDemoPage',
'iconuri': '',
'child': null
},
{
'name': '表格展示',
'uri': 'tablePage',
'iconuri': '',
'child': null
}
,
{
'name': '图标演示',
'uri': 'iconPage',
'iconuri': '',
'child': null
},
{
'name': '标签页(传递模板)',
'uri': 'ecpTabset',
'iconuri': '',
'child': null
},
{
'name': '404/500页面',
'uri': 'httpPage',
'iconuri': '',
'child': null
}
,
{
'name': '生成帐单',
'uri': 'generateBillPage',
'iconuri': '',
'child': null
},
{
'name': '弹窗演示',
'uri': 'waterConsumptionAnalysisPopup',
'iconuri': '',
'child': null
}
,
{
'name': '组件联动',
'uri': 'pageDemo2',
'iconuri': '',
'child': null
},
{
'name': '调度中心',
'uri': 'dispatchPage',
'iconuri': '',
'child': null
}
,
{
'name': '控制台主页',
'uri': 'consolePage',
'iconuri': '',
'child': null
}
]
},
{
'name': '关于',
'uri': 'about',
'iconuri': 'pipe_report',
'child': []
}
];
*/
/**
* @param {?} router
*/
constructor(router) {
this.router = router;
// 自定义伸缩,true 可以缩放,false 禁止缩放
this.customStyle = {};
this.navJson = [];
this.goTo = new EventEmitter();
this.menuStatus = 'off';
this.hoverId = 0; // 当前已选中
// 当前已选中
this.selectId = 0; // 当前鼠标选中
// 当前鼠标选中
this.thisMenuId = 0; // 当前选中子菜单
// 当前选中子菜单
this.hisHover = 0; // 历史选中菜单,收缩时记录,展开时使用
}
/**
* @return {?}
*/
ngOnInit() {
if (this.customScaling == null) {
this.customScaling = true;
}
}
// 菜单选中
/**
* @param {?} id
* @return {?}
*/
hoverMenu(id) {
if (this.hoverId === id) {
this.hoverId = null;
}
else {
this.hoverId = id;
}
}
// 移上去的
/**
* @param {?} id
* @return {?}
*/
selectMenu(id) {
this.selectId = id;
}
// 清除选中
/**
* @return {?}
*/
cleanSel() {
this.selectId = null;
}
// 展开
/**
* @return {?}
*/
on() {
/** @type {?} */
const self = this;
if (self.menuStatus === 'off') {
self.hoverId = self.hisHover;
self.menuStatus = 'on';
}
}
// 收缩
/**
* @return {?}
*/
off() {
/** @type {?} */
const self = this;
self.hisHover = self.hoverId;
if (self.customScaling == true) {
this.menuStatus = 'off';
}
}
/**
* @param {?} i
* @return {?}
*/
showChildMenu(i) {
if (i === this.hoverId && this.menuStatus === 'on') {
return 'block';
}
else {
return 'none';
}
}
/**
* @param {?} uri
* @param {?} hoverId
* @return {?}
*/
selectedApp(uri, hoverId) {
/** @type {?} */
const self = this;
this.goTo.emit(uri);
if (hoverId == null || hoverId == '') {
self.thisMenuId = 0;
}
self.thisMenuId = hoverId;
// console.log('click');
// self.router.navigate([uri]);
return false;
}
}
NavBarComponent.decorators = [
{ type: Component, args: [{
selector: 'ecp-nav-bar',
template: "<nav class=\"main-menu\" [ngClass]=\"{'on':!customScaling}\" [ngStyle]=\"customStyle\" (mouseleave)=\"off()\" (mouseover)=\"on()\">\r\n <!--\u5DE6\u8FB9\u56FE\u6807-->\r\n\r\n <ul class=\"menu-body\">\r\n <ng-container *ngFor=\"let menu of navJson;let i=index;\">\r\n <li [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\">\r\n <div class=\"menu-title\" [ngClass]=\"{'select':i==selectId,'hover':i==hoverId}\"\r\n (click)=\"hoverMenu(i);selectedApp(menu.uri,i)\" (mouseover)=\"selectMenu(i)\"\r\n (mouseout)=\"cleanSel()\">\r\n <i class=\"icon dongxiniotwater {{menu.iconuri}}\"></i>{{menu.name}}\r\n <i class=\"right\" [ngClass]=\"{'icon-fold':hoverId==i,'icon-unfold':hoverId!=i||hoverId==null}\"\r\n *ngIf=\"menu.child!=''\"></i>\r\n </div>\r\n <ul *ngIf=\"menu.child!=''\" class=\"menu-sub\" [@displayState]=\"showChildMenu(i)\">\r\n <ng-container *ngFor=\"let childmenu of menu.child; let childId = index;\">\r\n <li class=\"hover\" (click)=\"selectedApp(childmenu.uri,childId)\"\r\n [ngClass]=\"{'hover':childId==thisMenuId}\" (mouseover)=\"selectMenu(i)\" (mouseout)=\"cleanSel()\">\r\n {{childmenu.name}}\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</nav>\r\n\r\n\r\n\r\n\r\n\r\n",
animations: [
trigger('displayState', [
state('none', style({
height: 0, display: 'none', opacity: '0',
})),
state('block', style({
height: '*', display: 'block', opacity: '1',
})),
transition('none => block', animate('100ms linear')),
transition('block => none', animate('100ms linear'))
])
],
styles: [".main-menu.hover,.main-menu.on,.main-menu:hover{width:220px;overflow:hidden;opacity:1}.main-menu.off{width:60px;overflow:hidden;opacity:1}.main-menu{background:#22272e;color:#fff;position:absolute;top:0;bottom:0;left:0;width:60px;overflow:hidden;transition:width .2s linear;-webkit-transform:translateZ(0) scale(1,1);opacity:1;z-index:1000}.main-menu>ul{margin:0}.main-menu li{position:relative;display:block;width:220px;font-size:14px;cursor:pointer}nav{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}nav li,nav ul{outline:0;margin:0;padding:0}.main-menu .menu-body{height:100%}.main-menu .menu-body li{width:220px;min-height:42px;line-height:42px;clear:both}.main-menu .menu-body li .menu-title{height:42px;line-height:42px;text-align:left;cursor:pointer;color:#999;font-weight:700}.main-menu .menu-body li .menu-title i{width:60px;float:left;text-align:center;margin-right:0;font-size:18px;font-weight:400}.main-menu .menu-body li .menu-title i.on,.main-menu .menu-body li .menu-title i.right{margin-top:16px;width:13px;height:13px;float:right;margin-right:15px;font-size:12px;font-weight:400}.main-menu .menu-body li .menu-title.select{background:#1979ff;color:#fff}.main-menu .menu-body li .menu-title.hover{background:#1e5bd6;color:#fff}.main-menu .menu-body .menu-sub{overflow-x:hidden;background:#181b1f}.main-menu .menu-body .menu-sub li{height:42px;line-height:42px;color:#999;cursor:pointer;text-align:left!important;padding-left:60px!important}.main-menu .menu-body .menu-sub li:hover{background:#111214;color:#fff}.main-menu .menu-body .menu-sub li.hover{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsSAAALEgHS3X78AAAAdElEQVQY04XOwQnCQBQE0JetwApyE2Er2ALEJtKIkHtII3tNAWIBVhAC3raCgA14cA8qER/MZT58poG2m/cYcfRyxbnkeG/abj7ghp1PK1LAsHFUuyG8vd1yCv4IddAvl4C+Dvq2og8lxwUJEx41E1LJcXkCWCIYS4tT67sAAAAASUVORK5CYII=) 25px center no-repeat #111214;color:#fff}"]
}] }
];
/** @nocollapse */
NavBarComponent.ctorParameters = () => [
{ type: Router }
];
NavBarComponent.propDecorators = {
customScaling: [{ type: Input }],
customStyle: [{ type: Input }],
navJson: [{ type: Input }],
goTo: [{ type: Output }]
};
if (false) {
/** @type {?} */
NavBarComponent.prototype.customScaling;
/** @type {?} */
NavBarComponent.prototype.customStyle;
/** @type {?} */
NavBarComponent.prototype.navJson;
/** @type {?} */
NavBarComponent.prototype.goTo;
/** @type {?} */
NavBarComponent.prototype.menuStatus;
/** @type {?} */
NavBarComponent.prototype.hoverId;
/** @type {?} */
NavBarComponent.prototype.selectId;
/** @type {?} */
NavBarComponent.prototype.thisMenuId;
/** @type {?} */
NavBarComponent.prototype.hisHover;
/**
* @type {?}
* @private
*/
NavBarComponent.prototype.router;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9lY3AtdWktbGliLyIsInNvdXJjZXMiOlsibGliL25hdi1iYXIvbmF2LWJhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLE9BQU8sRUFBQyxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDN0UsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFtQnZDLE1BQU0sT0FBTyxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBc1AxQixZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTs7UUFwUHpCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLFlBQU8sR0FBZSxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDcEMsZUFBVSxHQUFXLEtBQUssQ0FBQztRQUMzQixZQUFPLEdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUTs7UUFDN0IsYUFBUSxHQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7O1FBQy9CLGVBQVUsR0FBVyxDQUFDLENBQUMsQ0FBQyxVQUFVOztRQUNsQyxhQUFRLEdBQVcsQ0FBQyxD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Qzs7SUFDcEMscUNBQTJCOztJQUMzQixrQ0FBb0I7O0lBQ3BCLG1DQUFxQjs7SUFDckIscUNBQXVCOztJQUN2QixtQ0FBcUI7Ozs7O0lBNk9ULGlDQUFzQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAgIOW3pui+ueWvvOiIqiAnZWNwLW5hdi1iYXInIHYxLjJcclxuKi9cclxuaW1wb3J0IHtDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHthbmltYXRlLCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXJ9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWNwLW5hdi1iYXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9uYXYtYmFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9uYXYtYmFyLmNvbXBvbmVudC5jc3MnXSxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICB0cmlnZ2VyKCdkaXNwbGF5U3RhdGUnLCBbXHJcbiAgICAgIHN0YXRlKCdub25lJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogMCwgZGlzcGxheTogJ25vbmUnLCBvcGFjaXR5OiAnMCcsXHJcbiAgICAgIH0pKSxcclxuICAgICAgc3RhdGUoJ2Jsb2NrJywgc3R5bGUoe1xyXG4gICAgICAgIGhlaWdodDogJyonLCBkaXNwbGF5OiAnYmxvY2snLCBvcGFjaXR5OiAnMScsXHJcbiAgICAgIH0pKSxcclxuICAgICAgdHJhbnNpdGlvbignbm9uZSA9PiBibG9jaycsIGFuaW1hdGUoJzEwMG1zIGxpbmVhcicpKSxcclxuICAgICAgdHJhbnNpdGlvbignYmxvY2sgPT4gbm9uZScsIGFuaW1hdGUoJzEwMG1zIGxpbmVhcicpKVxyXG4gICAgXSlcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYXZCYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGN1c3RvbVNjYWxpbmc6IGJvb2xlYW47Ly8g6Ieq5a6a5LmJ5Ly457ypLHRydWUg5Y+v5Lul57yp5pS+77yMZmFsc2Ug56aB5q2i57yp5pS+XHJcbiAgQElucHV0KCkgY3VzdG9tU3R5bGU6IG9iamVjdCA9IHt9O1xyXG4gIEBJbnB1dCgpIG5hdkpzb246IEFycmF5PGFueT4gPSBbXTtcclxuICBAT3V0cHV0KCkgZ29UbyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtZW51U3RhdHVzOiBzdHJpbmcgPSAnb2ZmJztcclxuICBob3ZlcklkOiBudW1iZXIgPSAwOyAvLyDlvZPliY3lt7LpgInkuK1cclxuICBzZWxlY3RJZDogbnVtYmVyID0gMDsgLy8g5b2T5YmN6byg5qCH6YCJ5LitXHJcbiAgdGhpc01lbnVJZDogbnVtYmVyID0gMDsgLy8g5b2T5YmN6YCJ5Lit5a2Q6I+c5Y2VXHJcbiAgaGlzSG92ZXI6IG51bWJlciA9IDA7IC8vIOWOhuWPsumAieS4reiPnOWNlSzmlLbnvKnml7borrDlvZXvvIzlsZXlvIDml7bkvb/nlKhcclxuXHJcblxyXG4gIC8qXHJcblxyXG4gICAgbWVudXM6IEFycmF5PGFueT4gPSBbXHJcbiAgICAgIHtcclxuICAgICAgICAnbmFtZSc6ICfln7rmnKznu4Tku7YnLFxyXG4gICAgICAgICd1cmknOiAnJyxcclxuICAgICAgICAnaWNvbnVyaSc6ICdwaXBlX2FyZWEnLFxyXG4gICAgICAgICdjaGlsZCc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5bem6L655a+86IiqJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICduYXZCYXJQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6aG26YOo5a+86IiqJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICd0b3BOYXZQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6aG16Z2i5bem6L655a+86IiqJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdwYWdlTGVmdE5hdlBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflvIDlhbPliIfmjaInLFxyXG4gICAgICAgICAgICAndXJpJzogJ3N3aXRjaFBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpnaLljIXlsZEnLFxyXG4gICAgICAgICAgICAndXJpJzogJ2JyZWFkQ3J1bWJQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5q2l6aqk5p2hJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdzdGVwc0luZm8nLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflt6XlhbfmnaEnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3Rvb2xCYXJQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfmkJzntKLmqKHlnZcnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3NlYWNoTW9kdWxlUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5by55Ye66K+m5oOFJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdvcGVuRGV0YWlsc0luZm8nLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+W8ueWHuuivpuaDhTInLFxyXG4gICAgICAgICAgICAndXJpJzogJ29wZW5EZXRhaWxzSW5mbzInLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflnLDlm77nlKjnu4Tku7YnLFxyXG4gICAgICAgICAgICAndXJpJzogJ2RvdFJpcHBsZVBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfkvqfovrnmoI/lvLnlh7onLFxyXG4gICAgICAgICAgICAndXJpJzogJ3BvcHVwU2lkZWJhclBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfmoIfnrb7pobUnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3RhYnNQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn54q25oCB5p2hJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdzdGF0dXNCYXJQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICAnbmFtZSc6ICfluIPlsYDnu4Tku7YnLFxyXG4gICAgICAgICd1cmknOiAnJyxcclxuICAgICAgICAnaWNvbnVyaSc6ICdwaXBlX2FyZWEnLFxyXG4gICAgICAgICdjaGlsZCc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn5biD5bGA5ryU56S6JyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdsYXlvdXREZW1vUGFnZScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+S4iuS4reS4iycsXHJcbiAgICAgICAgICAgICd1cmknOiAnZmxleFRvcENlbnRlckJvdHRvbScsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+W3puS4reWPsycsXHJcbiAgICAgICAgICAgICd1cmknOiAnZmxleGxlZnRDZW50ZXJSaWdodCcsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICAnbmFtZSc6ICfmlbDmja7lsZXnpLonLFxyXG4gICAgICAgICd1cmknOiAnJyxcclxuICAgICAgICAnaWNvbnVyaSc6ICdwaXBlX2FyZWEnLFxyXG4gICAgICAgICdjaGlsZCc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn55m75b2V55WM6Z2iJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdsb2dpblBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfns7vnu5/liIfmjaInLFxyXG4gICAgICAgICAgICAndXJpJzogJ2hvbWVQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6aG16Z2i5ryU56S6MScsXHJcbiAgICAgICAgICAgICd1cmknOiAncGFnZURlbW8nLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpobXpnaLmvJTnpLozJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdwYWdlRGVtbzMnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfpobXpnaLmvJTnpLoyJyxcclxuICAgICAgICAgICAgJ3VyaSc6ICdkZXRhaWxzU3R5bGUxJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6KGo5qC85bGV56S6MScsXHJcbiAgICAgICAgICAgICd1cmknOiAnZGF0YURlbW9QYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJ25hbWUnOiAn6KGo5qC85bGV56S6JyxcclxuICAgICAgICAgICAgJ3VyaSc6ICd0YWJsZVBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAsXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+Wbvuagh+a8lOekuicsXHJcbiAgICAgICAgICAgICd1cmknOiAnaWNvblBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfmoIfnrb7pobXvvIjkvKDpgJLmqKHmnb/vvIknLFxyXG4gICAgICAgICAgICAndXJpJzogJ2VjcFRhYnNldCcsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJzQwNC81MDDpobXpnaInLFxyXG4gICAgICAgICAgICAndXJpJzogJ2h0dHBQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfnlJ/miJDluJDljZUnLFxyXG4gICAgICAgICAgICAndXJpJzogJ2dlbmVyYXRlQmlsbFBhZ2UnLFxyXG4gICAgICAgICAgICAnaWNvbnVyaSc6ICcnLFxyXG4gICAgICAgICAgICAnY2hpbGQnOiBudWxsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICflvLnnqpfmvJTnpLonLFxyXG4gICAgICAgICAgICAndXJpJzogJ3dhdGVyQ29uc3VtcHRpb25BbmFseXNpc1BvcHVwJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfnu4Tku7bogZTliqgnLFxyXG4gICAgICAgICAgICAndXJpJzogJ3BhZ2VEZW1vMicsXHJcbiAgICAgICAgICAgICdpY29udXJpJzogJycsXHJcbiAgICAgICAgICAgICdjaGlsZCc6IG51bGxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICduYW1lJzogJ+iwg+W6puS4reW/gycsXHJcbiAgICAgICAgICAgICd1cmknOiAnZGlzcGF0Y2hQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgLFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICAnbmFtZSc6ICfmjqfliLblj7DkuLvpobUnLFxyXG4gICAgICAgICAgICAndXJpJzogJ2NvbnNvbGVQYWdlJyxcclxuICAgICAgICAgICAgJ2ljb251cmknOiAnJyxcclxuICAgICAgICAgICAgJ2NoaWxkJzogbnVsbFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgICduYW1lJzogJ+WFs+S6jicsXHJcbiAgICAgICAgJ3VyaSc6ICdhYm91dCcsXHJcbiAgICAgICAgJ2ljb251cmknOiAncGlwZV9yZXBvcnQnLFxyXG4gICAgICAgICdjaGlsZCc6IFtdXHJcbiAgICAgIH1cclxuICAgIF07XHJcblxyXG4gICovXHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tU2NhbGluZyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuY3VzdG9tU2NhbGluZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyDoj5zljZXpgInkuK1cclxuICBob3Zlck1lbnUoaWQpIHtcclxuICAgIGlmICh0aGlzLmhvdmVySWQgPT09IGlkKSB7XHJcbiAgICAgIHRoaXMuaG92ZXJJZCA9IG51bGw7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmhvdmVySWQgPSBpZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOenu+S4iuWOu+eahFxyXG4gIHNlbGVjdE1lbnUoaWQpIHtcclxuICAgIHRoaXMuc2VsZWN0SWQgPSBpZDtcclxuXHJcbiAgfVxyXG5cclxuICAvLyDmuIXpmaTpgInkuK1cclxuICBjbGVhblNlbCgpIHtcclxuICAgIHRoaXMuc2VsZWN0SWQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8g5bGV5byAXHJcbiAgb24oKSB7XHJcbiAgICBjb25zdCBzZWxmID0gdGhpcztcclxuICAgIGlmIChzZWxmLm1lbnVTdGF0dXMgPT09ICdvZmYnKSB7XHJcbiAgICAgIHNlbGYuaG92ZXJJZCA9IHNlbGYuaGlzSG92ZXI7XHJcblxyXG4gICAgICBzZWxmLm1lbnVTdGF0dXMgPSAnb24nO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOaUtue8qVxyXG4gIG9mZigpIHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgc2VsZi5oaXNIb3ZlciA9IHNlbGYuaG92ZXJJZDtcclxuICAgIGlmIChzZWxmLmN1c3RvbVNjYWxpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLm1lbnVTdGF0dXMgPSAnb2ZmJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dDaGlsZE1lbnUoaSkge1xyXG4gICAgaWYgKGkgPT09IHRoaXMuaG92ZXJJZCAmJiB0aGlzLm1lbnVTdGF0dXMgPT09ICdvbicpIHtcclxuICAgICAgcmV0dXJuICdibG9jayc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ25vbmUnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHNlbGVjdGVkQXBwKHVyaSwgaG92ZXJJZCkge1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLmdvVG8uZW1pdCh1cmkpO1xyXG4gICAgaWYgKGhvdmVySWQgPT0gbnVsbCB8fCBob3ZlcklkID09ICcnKSB7XHJcbiAgICAgIHNlbGYudGhpc01lbnVJZCA9IDA7XHJcbiAgICB9XHJcbiAgICBzZWxmLnRoaXNNZW51SWQgPSBob3ZlcklkO1xyXG4gICAgLy8gY29uc29sZS5sb2coJ2NsaWNrJyk7XHJcbiAgICAvLyBzZWxmLnJvdXRlci5uYXZpZ2F0ZShbdXJpXSk7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19