dbweb-common
Version:
用`yarn add dbweb-common`安装,不要忘记修改`angular.json`里的 `architect\build\options\assets`,加上
143 lines • 22.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, HostBinding } from '@angular/core';
import { Router } from '@angular/router';
import ace from 'ace-builds';
import { ElementsService, fullApiPath } from 'dbweb-core';
import { ThemeService } from '../services/theme.service';
import { TaskState } from './task';
import { TaskService } from './task.service';
var TaskComponent = /** @class */ (function () {
function TaskComponent(theme, tservice, eles, router, taskState) {
var _this = this;
this.theme = theme;
this.tservice = tservice;
this.eles = eles;
this.router = router;
this.taskState = taskState;
this.hostClass = true;
this.detailMode = false;
this.IsMoreProgressUrl = false;
this.options = { maxLines: 20, printMargin: false };
this.subs = [];
this.subs.push(this.theme.theme.subscribe((/**
* @param {?} v
* @return {?}
*/
function (v) {
_this.themeModel = v.model;
})));
}
/**
* @return {?}
*/
TaskComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
ace.config.set('basePath', '/front/assets/ace-builds/src-min-noconflict');
this.tservice.GetTaskMessage().subscribe((/**
* @param {?} n
* @return {?}
*/
function (n) {
_this.resultInfo = n;
if (_this.resultInfo.MoreProgressURL !== '') {
_this.eles.setURLSign(_this.resultInfo.MoreProgressURL, _this.resultInfo.MoreProgressURLSign);
_this.IsMoreProgressUrl = true;
}
if (_this.resultInfo.ZipFileURL !== '') {
_this.resultInfo.ZipFileURL = fullApiPath(_this.resultInfo.ZipFileURL);
}
}));
};
/**
* @return {?}
*/
TaskComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this.subs.forEach((/**
* @param {?} v
* @return {?}
*/
function (v) { return v.unsubscribe(); }));
};
/**
* @param {?} event
* @return {?}
*/
TaskComponent.prototype.moreProgressClick = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.router.navigateByUrl(this.resultInfo.MoreProgressURL);
};
TaskComponent.decorators = [
{ type: Component, args: [{
selector: 'common-task',
template: "<common-bill #bill>\r\n\t<div class=\"backgroundstyle\" [formGroup]=\"bill.formGroup\"\r\n\t\t*ngIf=\"bill.formGroup\">\r\n\t\t<div *ngIf=\"detailMode\" class=\"Task-public Task-open mat-elevation-z2\">\r\n\t\t\t<!-- <ng-template matStepLabel>\u4E0B\u8F7D</ng-template> -->\r\n\t\t\t<div class=\"title\">\u67E5\u770B\u4EFB\u52A1</div>\r\n\t\t\t<div class=\"task-content\">\r\n\t\t\t\t<div class=\"\u67E5\u770B\u4EFB\u52A1\">\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"link\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u540D\u79F0</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Name').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"picture_in_picture_alt\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6D41\u6C34\u53F7</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ID').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:person\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6267\u884C\u4EBA</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Executor').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"domain\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u6240\u5C5E\u90E8\u95E8</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeDept').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:router\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">IP\u5730\u5740</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeIP').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"schedule\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u5F00\u59CB\u65F6\u95F4</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('ExeTime').value | date: 'yyyy-MM-dd HH:mm:ss' }}</span>\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('CompletedTime').value | date: 'yyyy-MM-dd HH:mm:ss' }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"tabbletr\">\r\n\t\t\t\t\t\t<mat-icon svgIcon=\"outlined:flag\"></mat-icon>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u6807\u9898\">\u72B6\u6001</div>\r\n\t\t\t\t\t\t<div class=\"\u4EFB\u52A1\u53C2\u6570\">\r\n\t\t\t\t\t\t\t<span>{{ bill.formGroup.get('Status').value }}</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"\u5206\u5272\u7EBF\"></div>\r\n\t\t\t\t<div class=\"\u8BE6\u60C5\">\r\n\t\t\t\t\t<div class=\"\u8FDB\u5EA6\u62A5\u544A\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\r\n\t\t\t\t\t\t\t\u8FDB\u5EA6\u62A5\u544A\r\n\t\t\t\t\t\t\t<span *ngIf=\"IsMoreProgressUrl\"\r\n\t\t\t\t\t\t\t\t(click)=\"moreProgressClick($event)\">\u67E5\u770B\u6240\u6709\u8FDB\u5EA6\r\n\t\t\t\t\t\t\t\t<mat-icon svgIcon=\"chevron_right\"></mat-icon>\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div class=\"prTable\">\r\n\t\t\t\t\t\t\t<tr *ngFor=\"let res of resultInfo?.PROGRESS; let index = index\"\r\n\t\t\t\t\t\t\t\tclass=\"prStrip\">\r\n\t\t\t\t\t\t\t\t<td class=\"prtableID\">{{ index + 1 }}</td>\r\n\t\t\t\t\t\t\t\t<td class=\"prtableTime\">\r\n\t\t\t\t\t\t\t\t\t{{ res.LOGTIME | date: 'yyyy-MM-dd HH:mm:ss' }}\r\n\t\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t\t\t<td class=\"prtableContent\">{{ res.CONTENT }}\r\n\t\t\t\t\t\t\t\t</td>\r\n\t\t\t\t\t\t\t</tr>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"\u53C2\u6570\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\u53C2\u6570</div>\r\n\t\t\t\t\t\t<div class=\"parameterbox\">\r\n\t\t\t\t\t\t\t<div ace-editor\r\n\t\t\t\t\t\t\t\t[text]=\"bill.formGroup.get('Params').value\"\r\n\t\t\t\t\t\t\t\tmode=\"yaml\" [theme]=\"themeModel === 'dark' ? 'tomorrow_night' : 'eclipse'\"\r\n\t\t\t\t\t\t\t\t[options]=\"options\" [autoUpdateContent]=\"true\"\r\n\t\t\t\t\t\t\t\t[durationBeforeCallback]=\"1000\"\r\n\t\t\t\t\t\t\t\tstyle=\"min-height: 124px; width:100%; overflow: auto;\">\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div class=\"\u7ED3\u679C\">\r\n\t\t\t\t\t\t<div class=\"detailsTitle\">\u7ED3\u679C</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.complete\"\r\n\t\t\t\t\t\t\tclass=\"complete state-content\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"check_circle\"></mat-icon>\r\n\t\t\t\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.running\"\r\n\t\t\t\t\t\t\tclass=\"running state-content\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"info\"></mat-icon>\r\n\t\t\t\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.error\"\r\n\t\t\t\t\t\t\tclass=\"error state-content \u62A5\u9519\u8BE6\u7EC6\">\r\n\t\t\t\t\t\t\t<mat-icon svgIcon=\"warning\"></mat-icon>\r\n\t\t\t\t\t\t\t\u62A5\u9519\u8BE6\u60C5\uFF1A<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t\t\t\t\t<div class=\"\u5168\u90E8\u4FE1\u606F\"\r\n\t\t\t\t\t\t\t\t[innerHtml]=\"bill.formGroup.get('Result').value|newline\">\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"download\">\r\n\t\t\t\t<a *ngIf=\"resultInfo?.ZipFileURL\"\r\n\t\t\t\t\t[href]=\"resultInfo?.ZipFileURL\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"save_alt\"></mat-icon>\r\n\t\t\t\t\t\u4E0B\u8F7D\u7ED3\u679C ({{ resultInfo?.ZipFileSize | number }}K)\r\n\t\t\t\t</a>\r\n\t\t\t\t<div class=\"\u5C55\u5F00\u6309\u94AE\" (click)=\"detailMode = false\">\r\n\t\t\t\t\t\u6536\u8D77\u8BE6\u7EC6\u4FE1\u606F<mat-icon svgIcon=\"expand_less\"></mat-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div *ngIf=\"!detailMode\"\r\n\t\t\tclass=\"Task-narrow Task-public mat-elevation-z2\">\r\n\t\t\t<div class=\"title\">\u67E5\u770B\u4EFB\u52A1</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.complete\"\r\n\t\t\t\tclass=\"complete state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"check_circle\"></mat-icon>\r\n\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.running\"\r\n\t\t\t\tclass=\"running state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"info\"></mat-icon>\r\n\t\t\t\t<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"bill.formGroup.get('Status').value == taskState.error\"\r\n\t\t\t\tclass=\"error state-content\">\r\n\t\t\t\t<mat-icon svgIcon=\"warning\"></mat-icon>\r\n\t\t\t\t\u62A5\u9519\u8BE6\u60C5\uFF1A<div [innerHtml]=\"resultInfo?.Message|newline\"></div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"download\">\r\n\t\t\t\t<a *ngIf=\"resultInfo?.ZipFileURL\"\r\n\t\t\t\t\thref=\"{{ resultInfo?.ZipFileURL }}\">\r\n\t\t\t\t\t<mat-icon svgIcon=\"save_alt\"></mat-icon>\r\n\t\t\t\t\t\u4E0B\u8F7D\u7ED3\u679C ({{ resultInfo?.ZipFileSize | number }}K)\r\n\t\t\t\t</a>\r\n\t\t\t\t<div class=\"\u5C55\u5F00\u6309\u94AE\" (click)=\"detailMode = true\">\r\n\t\t\t\t\t\u5C55\u5F00\u8BE6\u7EC6\u4FE1\u606F<mat-icon svgIcon=\"expand_more\"></mat-icon>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</common-bill>",
providers: [TaskState],
styles: ["@charset \"UTF-8\";.backgroundstyle{width:100%;height:100%;padding:24px 0;box-sizing:border-box;overflow-y:auto}.backgroundstyle .Task-open{width:100%;height:100%;display:flex;flex-direction:column}.backgroundstyle .Task-open .task-content{flex-grow:1;width:100%;display:flex;align-items:center;overflow-y:auto}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1{width:284px;height:100%;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr{width:100%;padding-left:56px;box-sizing:border-box;margin:24px 0 0;position:relative}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .mat-icon{position:absolute;left:8px;top:8px;width:32px;height:32px;line-height:32px}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .\u4EFB\u52A1\u6807\u9898{font-size:14px;padding:8px 0}.backgroundstyle .Task-open .task-content .\u67E5\u770B\u4EFB\u52A1 .tabbletr .\u4EFB\u52A1\u53C2\u6570 span{font-size:16px;padding:0 0 8px;display:block}.backgroundstyle .Task-open .task-content .\u5206\u5272\u7EBF{width:1px;flex-shrink:0;height:calc(100% - 110px);margin:0 16px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5{width:0;flex-grow:1;height:100%}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A{width:100%;overflow:auto}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable{width:100%;overflow-x:auto;margin:16px 0 24px;max-height:176px;min-height:96px;padding:8px;box-sizing:border-box;border-radius:2px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip{height:32px;line-height:32px;font-size:16px;display:flex}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableID{width:48px;padding-left:8px;box-sizing:border-box;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableTime{width:200px;flex-shrink:0}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u8FDB\u5EA6\u62A5\u544A .prTable .prStrip .prtableContent{flex-grow:1;flex-shrink:0;padding-right:8px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u53C2\u6570{min-height:124px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u53C2\u6570 .parameterbox{max-height:300px;margin:16px 0 24px;min-height:124px;border-radius:4px;box-sizing:border-box;vertical-align:top;overflow:hidden}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .\u7ED3\u679C{min-height:80px;max-height:28%}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle{width:100%;font-size:14px}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle span{float:right}.backgroundstyle .Task-open .task-content .\u8BE6\u60C5 .detailsTitle span .mat-icon{vertical-align:middle;width:22px;height:22px}.backgroundstyle .Task-narrow{height:auto}.backgroundstyle .Task-public{max-width:960px;width:100%;margin:0 auto;overflow-y:auto;padding:24px;box-sizing:border-box;border-radius:4px}.backgroundstyle .Task-public .title{font-size:20px;font-weight:700}.backgroundstyle .Task-public .state-content{margin:16px 0 24px;padding:16px 0 16px 24px;font-size:16px}.backgroundstyle .Task-public .state-content .mat-icon{margin-right:16px;vertical-align:middle}.backgroundstyle .Task-public .state-content div{display:inline-block}.backgroundstyle .Task-public .\u62A5\u9519\u8BE6\u7EC6{padding:16px 0 16px 24px;height:156px;overflow-y:auto}.backgroundstyle .Task-public .\u62A5\u9519\u8BE6\u7EC6 .\u5168\u90E8\u4FE1\u606F{font-size:12px;margin-top:8px}.backgroundstyle .Task-public .download{text-align:right;height:24px;line-height:24px}.backgroundstyle .Task-public .download a{height:24px;font-size:14px;text-decoration:none}.backgroundstyle .Task-public .download a .mat-icon{vertical-align:middle;margin-right:4px}.backgroundstyle .Task-public .download .\u5C55\u5F00\u6309\u94AE{cursor:pointer;display:inline-block;height:24px;font-size:14px;margin-left:32px}.backgroundstyle .Task-public .download .\u5C55\u5F00\u6309\u94AE .mat-icon{vertical-align:middle;margin-left:4px}"]
}] }
];
/** @nocollapse */
TaskComponent.ctorParameters = function () { return [
{ type: ThemeService },
{ type: TaskService },
{ type: ElementsService },
{ type: Router },
{ type: TaskState }
]; };
TaskComponent.propDecorators = {
hostClass: [{ type: HostBinding, args: ['class.task',] }]
};
return TaskComponent;
}());
export { TaskComponent };
if (false) {
/** @type {?} */
TaskComponent.prototype.hostClass;
/** @type {?} */
TaskComponent.prototype.detailMode;
/** @type {?} */
TaskComponent.prototype.IsMoreProgressUrl;
/** @type {?} */
TaskComponent.prototype.moreEle;
/** @type {?} */
TaskComponent.prototype.resultInfo;
/** @type {?} */
TaskComponent.prototype.themeModel;
/** @type {?} */
TaskComponent.prototype.options;
/** @type {?} */
TaskComponent.prototype.subs;
/**
* @type {?}
* @private
*/
TaskComponent.prototype.theme;
/**
* @type {?}
* @private
*/
TaskComponent.prototype.tservice;
/**
* @type {?}
* @private
*/
TaskComponent.prototype.eles;
/**
* @type {?}
* @private
*/
TaskComponent.prototype.router;
/** @type {?} */
TaskComponent.prototype.taskState;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvdGFzay90YXNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUQsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxTQUFTLEVBQWtCLE1BQU0sUUFBUSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUc3QztJQWdCQyx1QkFDUyxLQUFtQixFQUNuQixRQUFxQixFQUNyQixJQUFxQixFQUNyQixNQUFjLEVBQ2YsU0FBb0I7UUFMNUIsaUJBWUM7UUFYUSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNmLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFkRCxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQzVDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBSzFCLFlBQU8sR0FBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ3BELFNBQUksR0FBbUIsRUFBRSxDQUFDO1FBUXpCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLENBQUM7WUFDM0IsS0FBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzNCLENBQUMsRUFBQyxDQUNGLENBQUM7SUFDSCxDQUFDOzs7O0lBQ0QsZ0NBQVE7OztJQUFSO1FBQUEsaUJBWUM7UUFYQSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsNkNBQTZDLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVM7Ozs7UUFBQyxVQUFBLENBQUM7WUFDekMsS0FBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7WUFDcEIsSUFBSSxLQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsS0FBSyxFQUFFLEVBQUU7Z0JBQzNDLEtBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLEtBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDM0YsS0FBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQzthQUM5QjtZQUNELElBQUksS0FBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssRUFBRSxFQUFFO2dCQUN0QyxLQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNyRTtRQUNGLENBQUMsRUFBQyxDQUFDO0lBQ0osQ0FBQzs7OztJQUNELG1DQUFXOzs7SUFBWDtRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTzs7OztRQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFmLENBQWUsRUFBQyxDQUFDO0lBQ3pDLENBQUM7Ozs7O0lBQ0QseUNBQWlCOzs7O0lBQWpCLFVBQWtCLEtBQWlCO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7Z0JBL0NELFNBQVMsU0FBQztvQkFDVixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsNnVQQUFvQztvQkFFcEMsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDOztpQkFDdEI7Ozs7Z0JBVm9CLFlBQVk7Z0JBRXhCLFdBQVc7Z0JBSFgsZUFBZTtnQkFGZixNQUFNO2dCQUlOLFNBQVM7Ozs0QkFXaEIsV0FBVyxTQUFDLFlBQVk7O0lBeUMxQixvQkFBQztDQUFBLEFBaERELElBZ0RDO1NBMUNZLGFBQWE7OztJQUN6QixrQ0FBNEM7O0lBQzVDLG1DQUFtQjs7SUFDbkIsMENBQTBCOztJQUMxQixnQ0FBZ0I7O0lBQ2hCLG1DQUEyQjs7SUFFM0IsbUNBQXVCOztJQUN2QixnQ0FBb0Q7O0lBQ3BELDZCQUEwQjs7Ozs7SUFFekIsOEJBQTJCOzs7OztJQUMzQixpQ0FBNkI7Ozs7O0lBQzdCLDZCQUE2Qjs7Ozs7SUFDN0IsK0JBQXNCOztJQUN0QixrQ0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgYWNlIGZyb20gJ2FjZS1idWlsZHMnO1xyXG5pbXBvcnQgeyBFbGVtZW50c1NlcnZpY2UsIGZ1bGxBcGlQYXRoIH0gZnJvbSAnZGJ3ZWItY29yZSc7XHJcbmltcG9ydCB7IFRoZW1lTW9kZWwsIFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUYXNrU3RhdGUsIFRhc2xSZXN1bHRUeXBlIH0gZnJvbSAnLi90YXNrJztcclxuaW1wb3J0IHsgVGFza1NlcnZpY2UgfSBmcm9tICcuL3Rhc2suc2VydmljZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjb21tb24tdGFzaycsXHJcblx0dGVtcGxhdGVVcmw6ICcuL3Rhc2suY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL3Rhc2suY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtUYXNrU3RhdGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYXNrQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cdEBIb3N0QmluZGluZygnY2xhc3MudGFzaycpIGhvc3RDbGFzcyA9IHRydWU7XHJcblx0ZGV0YWlsTW9kZSA9IGZhbHNlO1xyXG5cdElzTW9yZVByb2dyZXNzVXJsID0gZmFsc2U7XHJcblx0bW9yZUVsZTogc3RyaW5nO1xyXG5cdHJlc3VsdEluZm86IFRhc2xSZXN1bHRUeXBlO1xyXG5cclxuXHR0aGVtZU1vZGVsOiBUaGVtZU1vZGVsO1xyXG5cdG9wdGlvbnM6IGFueSA9IHsgbWF4TGluZXM6IDIwLCBwcmludE1hcmdpbjogZmFsc2UgfTtcclxuXHRzdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cdGNvbnN0cnVjdG9yKFxyXG5cdFx0cHJpdmF0ZSB0aGVtZTogVGhlbWVTZXJ2aWNlLFxyXG5cdFx0cHJpdmF0ZSB0c2VydmljZTogVGFza1NlcnZpY2UsXHJcblx0XHRwcml2YXRlIGVsZXM6IEVsZW1lbnRzU2VydmljZSxcclxuXHRcdHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcblx0XHRwdWJsaWMgdGFza1N0YXRlOiBUYXNrU3RhdGVcclxuXHQpIHtcclxuXHRcdHRoaXMuc3Vicy5wdXNoKFxyXG5cdFx0XHR0aGlzLnRoZW1lLnRoZW1lLnN1YnNjcmliZSh2ID0+IHtcclxuXHRcdFx0XHR0aGlzLnRoZW1lTW9kZWwgPSB2Lm1vZGVsO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRhY2UuY29uZmlnLnNldCgnYmFzZVBhdGgnLCAnL2Zyb250L2Fzc2V0cy9hY2UtYnVpbGRzL3NyYy1taW4tbm9jb25mbGljdCcpO1xyXG5cdFx0dGhpcy50c2VydmljZS5HZXRUYXNrTWVzc2FnZSgpLnN1YnNjcmliZShuID0+IHtcclxuXHRcdFx0dGhpcy5yZXN1bHRJbmZvID0gbjtcclxuXHRcdFx0aWYgKHRoaXMucmVzdWx0SW5mby5Nb3JlUHJvZ3Jlc3NVUkwgIT09ICcnKSB7XHJcblx0XHRcdFx0dGhpcy5lbGVzLnNldFVSTFNpZ24odGhpcy5yZXN1bHRJbmZvLk1vcmVQcm9ncmVzc1VSTCwgdGhpcy5yZXN1bHRJbmZvLk1vcmVQcm9ncmVzc1VSTFNpZ24pO1xyXG5cdFx0XHRcdHRoaXMuSXNNb3JlUHJvZ3Jlc3NVcmwgPSB0cnVlO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICh0aGlzLnJlc3VsdEluZm8uWmlwRmlsZVVSTCAhPT0gJycpIHtcclxuXHRcdFx0XHR0aGlzLnJlc3VsdEluZm8uWmlwRmlsZVVSTCA9IGZ1bGxBcGlQYXRoKHRoaXMucmVzdWx0SW5mby5aaXBGaWxlVVJMKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cdG5nT25EZXN0cm95KCkge1xyXG5cdFx0dGhpcy5zdWJzLmZvckVhY2godiA9PiB2LnVuc3Vic2NyaWJlKCkpO1xyXG5cdH1cclxuXHRtb3JlUHJvZ3Jlc3NDbGljayhldmVudDogTW91c2VFdmVudCkge1xyXG5cdFx0dGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybCh0aGlzLnJlc3VsdEluZm8uTW9yZVByb2dyZXNzVVJMKTtcclxuXHR9XHJcbn1cclxuIl19