UNPKG

dbweb-common

Version:

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

243 lines 29.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, HostBinding, Inject, ViewChild, ElementRef } from '@angular/core'; import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; import { NodeTypeEnum } from '../../../services/eleview/types/model'; import { LabelManagerService } from '../service/label-manager.service'; import { EditLabelService } from './edit-label.service'; import { LabelHistoryComponent } from './label-history/label-history.component'; import ace from 'ace-builds'; import { ThemeService } from '../../../services/theme.service'; var EditLabelComponent = /** @class */ (function () { function EditLabelComponent(theme, dialog, lblSvr, dialogRef, svr) { var _this = this; this.theme = theme; this.dialog = dialog; this.lblSvr = lblSvr; this.dialogRef = dialogRef; this.svr = svr; this.hostClass = true; this.nodeTypeCondition = NodeTypeEnum.NodeCondition; this.nodeTypeAnd = NodeTypeEnum.NodeAnd; this.nodeTypeOr = NodeTypeEnum.NodeOr; this.nodeTypeUnknow = NodeTypeEnum.unknow; this.nodeTypePlain = NodeTypeEnum.NodePlain; this.AdditionalSQL = true; this.AdditionalSQLDisplay = true; this.options = { maxLines: 12, printMargin: false }; this.theme.theme.subscribe((/** * @param {?} v * @return {?} */ function (v) { _this.themeModel = v.model; })); } /** * @return {?} */ EditLabelComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { this.labelNode.nativeElement.ondragover = (/** * @param {?} event * @return {?} */ function (event) { // 把labelNode变成一个容器,能拖入条件 event.preventDefault(); // console.log(event); event.stopPropagation(); }); }; /** * @return {?} */ EditLabelComponent.prototype.ngOnInit = /** * @return {?} */ function () { var _this = this; ace.config.set('basePath', '/front/assets/ace-builds/src-min-noconflict'); this.lblSvr.onNodeChange.subscribe((/** * @return {?} */ function () { if (_this.svr.editLabel.Conts && _this.svr.editLabel.Conts.NodeType !== NodeTypeEnum.unknow) { _this.svr.backface .nodeToString(_this.svr.editLabel.Conts.toInterface()) .subscribe((/** * @param {?} str * @return {?} */ function (str) { return (_this.whereString = str); })); } else { _this.whereString = ''; } })); this.lblSvr.onNodeChange.emit(); this.标签定义.nativeElement.parentElement.parentElement.style = 'padding:0px;'; }; /** * @param {?} event * @return {?} */ EditLabelComponent.prototype.labelDrop = /** * @param {?} event * @return {?} */ function (event) { if (this.svr.editLabel.Conts.NodeType === this.nodeTypeUnknow) { this.svr.editLabel.Conts.assign(this.lblSvr.buildDragedNode()); this.lblSvr.onNodeChange.emit(); } else if (this.svr.editLabel.Conts.NodeType === this.nodeTypeAnd || this.svr.editLabel.Conts.NodeType === this.nodeTypeOr) { this.svr.editLabel.Conts.Children[this.svr.editLabel.Conts.Children.length - 1].addBottomSibling(this.lblSvr.buildDragedNode()); if (this.lblSvr.dragData.Type === 'node') { ((/** @type {?} */ (this.lblSvr.dragData.Data))).remove(); } this.lblSvr.onNodeChange.emit(); } else if (this.svr.editLabel.Conts.NodeType === this.nodeTypeCondition || this.svr.editLabel.Conts.NodeType === this.nodeTypePlain) { this.svr.editLabel.Conts.addChildSibling(this.lblSvr.buildDragedNode()); if (this.lblSvr.dragData.Type === 'node') { ((/** @type {?} */ (this.lblSvr.dragData.Data))).remove(); } this.lblSvr.onNodeChange.emit(); } event.stopPropagation(); }; /** * @param {?} event * @param {?} column * @return {?} */ EditLabelComponent.prototype.colDragStart = /** * @param {?} event * @param {?} column * @return {?} */ function (event, column) { this.lblSvr.dragData = { Type: 'column', Data: column }; }; /** * @return {?} */ EditLabelComponent.prototype.openHis = /** * @return {?} */ function () { this.dialog.open(LabelHistoryComponent, { width: '296px', height: '384px', data: (/** @type {?} */ ({ svr: this.svr, data: { CategoryID: this.svr.editLabel.CategoryID, ID: this.svr.editLabel.LabelID } })), autoFocus: false }); }; /** * @param {?} letter * @return {?} */ EditLabelComponent.prototype.acronymScroll = /** * @param {?} letter * @return {?} */ function (letter) { document.querySelector('#' + letter).scrollIntoView(true); }; /** * @return {?} */ EditLabelComponent.prototype.save = /** * @return {?} */ function () { var _this = this; this.svr.editLabel.save().subscribe((/** * @param {?} v * @return {?} */ function (v) { if (v) { _this.dialogRef.close(); } })); }; EditLabelComponent.decorators = [ { type: Component, args: [{ selector: 'common-edit-label', template: "<div #\u6807\u7B7E\u5B9A\u4E49 class=\"\u6807\u7B7E\u5B9A\u4E49\u5185\u5BB9\" cdkDropListGroup>\r\n\t<div class=\"\u6807\u7B7E\u5B9A\u4E49\u5DE6\">\r\n\t\t<div *ngIf=\"!svr.editLabel.titleInput\" class=\"\u6807\u7B7E\u540D\u79F0\" [matTooltip]=\"svr.editLabel.Name\">\r\n\t\t\t{{ svr.editLabel.Name }}\r\n\t\t</div>\r\n\t\t<mat-form-field *ngIf=\"svr.editLabel.titleInput\" class=\"\u540D\u79F0\u7F16\u8F91\">\r\n\t\t\t<input type=\"text\" matInput [(ngModel)]=\"svr.editLabel.title\" />\r\n\t\t</mat-form-field>\r\n\t\t<div class=\"\u6307\u6807\u529F\u80FD\u56FE\u6807\">\r\n\t\t\t<mat-icon *ngIf=\"svr.editLabel.titleInput\" (click)=\"svr.editLabel.editCancel()\" class=\"edit-cancel close\"\r\n\t\t\t\tsvgIcon=\"close\"></mat-icon>\r\n\t\t\t<mat-icon *ngIf=\"svr.editLabel.titleInput\" (click)=\"svr.editLabel.done()\" class=\"done\" svgIcon=\"done\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<mat-icon *ngIf=\"!svr.editLabel.titleInput\" (click)=\"svr.editLabel.edit()\" class=\"edit\" svgIcon=\"edit\">\r\n\t\t\t</mat-icon>\r\n\t\t\t<mat-icon svgIcon=\"alarm_on\" (click)=\"openHis()\"></mat-icon>\r\n\t\t</div>\r\n\t\t<div class=\"left-columns\">\r\n\t\t\t<div class=\"column-list\">\r\n\t\t\t\t<div *ngFor=\"let list of svr.allColumnsWithLetter\">\r\n\t\t\t\t\t<div class=\"letter-color \u6307\u6807\u9996\u5B57\u6BCD\" id=\"{{ list.Letter }}\">\r\n\t\t\t\t\t\t{{ list.Letter | uppercase }}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t\t<div mat-button class=\"\u6307\u6807\" (dragstart)=\"colDragStart($event, column)\"\r\n\t\t\t\t\t\t*ngFor=\"let column of list.Columns\" [draggable]=\"true\">\r\n\t\t\t\t\t\t{{ column }}\r\n\t\t\t\t\t\t<mat-icon class=\"\u62D6\u52A8\" svgIcon=\"drag_indicator\" [cdkDragHandle]=\"true\"> </mat-icon>\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=\"letter-list\">\r\n\t\t\t\t<div *ngFor=\"let list of svr.allColumnsWithLetter\">\r\n\t\t\t\t\t<div class=\"letter-color \u5C45\u4E2D\" (click)=\"acronymScroll(list.Letter)\">\r\n\t\t\t\t\t\t{{ list.Letter | uppercase }}\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</div>\r\n\t</div>\r\n\t<div class=\"\u6807\u7B7E\u5B9A\u4E49\u53F3\">\r\n\t\t<div #labelNode class=\"node-content\" (drop)=\"labelDrop($event)\" onselectstart=\"return false;\">\r\n\t\t\t<common-node class=\"node\" [data]=\"svr.editLabel.Conts\"\r\n\t\t\t\t[ngClass]=\"{ empty: svr.editLabel.Conts.NodeType === '' }\">\r\n\t\t\t</common-node>\r\n\t\t</div>\r\n\t\t<div class=\"\u9644\u52A0\u529F\u80FD\">\r\n\t\t\t<div class=\"\u9644\u52A0\u529F\u80FD\u5BFC\u822A\">\r\n\t\t\t\t<span [class.\u9009\u4E2D\u7684\u9644\u52A0\u5BFC\u822A]=\"AdditionalSQL\" (click)=\"AdditionalSQL = true\">SQL\u4EE3\u7801\u663E\u793A</span><span\r\n\t\t\t\t\t[class.\u9009\u4E2D\u7684\u9644\u52A0\u5BFC\u822A]=\"!AdditionalSQL\" (click)=\"AdditionalSQL = false\">\u9644\u52A0\u9AD8\u7EA7\u6761\u4EF6</span>\r\n\t\t\t\t<mat-icon (click)=\"AdditionalSQLDisplay = !AdditionalSQLDisplay\"\r\n\t\t\t\t\tsvgIcon=\"{{ AdditionalSQLDisplay ? 'expand_more' : 'expand_less' }}\">\r\n\t\t\t\t</mat-icon>\r\n\t\t\t</div>\r\n\t\t\t<div *ngIf=\"AdditionalSQLDisplay\" class=\"\u9644\u52A0\u529F\u80FD\u5185\u5BB9\">\r\n\t\t\t\t<div ace-editor class=\"where-string\" *ngIf=\"AdditionalSQL\" [readOnly]=\"true\" [text]=\"whereString\" mode=\"text\"\r\n\t\t\t\t\t[theme]=\"themeModel === 'dark' ? 'tomorrow_night' : 'eclipse'\" [options]=\"options\" [autoUpdateContent]=\"true\"\r\n\t\t\t\t\t[durationBeforeCallback]=\"1000\" style=\"min-height: 172px; width:100%; overflow: auto;\">\r\n\t\t\t\t</div>\r\n\t\t\t\t<div ace-editor class=\"where-string\" *ngIf=\"!AdditionalSQL\" [text]=\"svr.editLabel.PlainText\" mode=\"text\"\r\n\t\t\t\t\t[theme]=\"themeModel === 'dark' ? 'tomorrow_night' : 'eclipse'\" [options]=\"options\" [autoUpdateContent]=\"true\"\r\n\t\t\t\t\t[durationBeforeCallback]=\"1000\" style=\"min-height: 172px; width:100%; overflow: auto;\">\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<div class=\"\u6807\u7B7E\u5B9A\u4E49\u5E95\u90E8\">\r\n\t<button mat-button (click)=\"dialogRef.close()\">\u53D6\u6D88</button>\r\n\t<button mat-button class=\"\u786E\u5B9A\" (click)=\"save()\">\u786E\u5B9A</button>\r\n</div>", providers: [EditLabelService], styles: ["@charset \"UTF-8\";:host{width:800px;height:100%;padding:0;display:flex;box-sizing:border-box;flex-direction:column}.\u6807\u7B7E\u5B9A\u4E49\u5185\u5BB9{height:calc(100% - 40px);width:100%;flex-grow:1;display:flex}.\u6807\u7B7E\u5B9A\u4E49\u5DE6{width:232px;height:100%;box-sizing:border-box;position:relative}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u6807\u7B7E\u540D\u79F0{padding-left:16px;font-weight:700;width:110px;height:24px;margin:9px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u540D\u79F0\u7F16\u8F91{padding-left:16px;font-weight:700;width:110px;height:40px}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u540D\u79F0\u7F16\u8F91 ::ng-deep .mat-form-field-wrapper{padding:0 0 12px}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u540D\u79F0\u7F16\u8F91 ::ng-deep .mat-form-field-infix{border:0;padding:12px 0}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u6307\u6807\u529F\u80FD\u56FE\u6807{height:24px;position:absolute;right:8px;top:12px}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .\u6307\u6807\u529F\u80FD\u56FE\u6807 .mat-icon{width:24px;height:24px;margin-right:4px;vertical-align:middle;cursor:pointer}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns{width:100%;height:calc(100% - 60px);position:relative}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .column-list{width:100%;height:100%;box-sizing:border-box;overflow-y:auto}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .letter-list{height:100%;position:absolute;top:0;right:0;overflow-y:auto}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .letter-color{width:20px;font-size:12px;text-align:center}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u6307\u6807{width:calc(100% - 20px);height:32px;line-height:32px;padding:0 24px;font-size:14px;box-sizing:border-box;text-align:left;position:relative}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u6307\u6807 .\u62D6\u52A8{width:16px;height:16px;line-height:16px;cursor:pointer;position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:none}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u6307\u6807:hover{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12),0 1px 5px 0 rgba(0,0,0,.2)}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u6307\u6807:hover .\u62D6\u52A8{display:block}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u6307\u6807\u9996\u5B57\u6BCD{margin:8px 8px 4px}.\u6807\u7B7E\u5B9A\u4E49\u5DE6 .left-columns .\u5C45\u4E2D{text-align:center;cursor:pointer}.\u6807\u7B7E\u5B9A\u4E49\u5E95\u90E8{width:100%;height:40px;line-height:40px;text-align:right;position:relative}.\u6807\u7B7E\u5B9A\u4E49\u5E95\u90E8 button{margin-right:16px}.\u6807\u7B7E\u5B9A\u4E49\u53F3{width:0;flex-grow:1;height:100%;display:flex;flex-direction:column}.node-content{width:100%;height:0;flex-grow:1;padding:16px 16px 0;box-sizing:border-box}.node-content .node{width:100%;height:100%;overflow-x:auto;overflow-y:auto;display:block}.node-drag{display:flex;width:104px;height:36px;border-radius:4px;font-size:14px;color:#2679a0;background:#7fc3e2;align-items:center;justify-content:center}.empty{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.\u9644\u52A0\u529F\u80FD{width:100%}.\u9644\u52A0\u529F\u80FD .\u9644\u52A0\u529F\u80FD\u5BFC\u822A{width:100%;height:32px;font-size:14px;line-height:32px}.\u9644\u52A0\u529F\u80FD .\u9644\u52A0\u529F\u80FD\u5BFC\u822A span{line-height:32px;margin:0 12px 0 4px;cursor:pointer}.\u9644\u52A0\u529F\u80FD .\u9644\u52A0\u529F\u80FD\u5BFC\u822A .mat-icon{float:right;margin:4px;cursor:pointer}.\u9644\u52A0\u529F\u80FD .\u9644\u52A0\u529F\u80FD\u5185\u5BB9{width:100%;height:204px;padding:16px 8px;box-sizing:border-box}.where-string{border-radius:4px}"] }] } ]; /** @nocollapse */ EditLabelComponent.ctorParameters = function () { return [ { type: ThemeService }, { type: MatDialog }, { type: EditLabelService }, { type: MatDialogRef }, { type: LabelManagerService, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] } ]; }; EditLabelComponent.propDecorators = { hostClass: [{ type: HostBinding, args: ['class.edit-label',] }], 标签定义: [{ type: ViewChild, args: ['标签定义', { static: true },] }], labelNode: [{ type: ViewChild, args: ['labelNode', { static: false },] }] }; return EditLabelComponent; }()); export { EditLabelComponent }; if (false) { /** @type {?} */ EditLabelComponent.prototype.hostClass; /** @type {?} */ EditLabelComponent.prototype.nodeTypeCondition; /** @type {?} */ EditLabelComponent.prototype.nodeTypeAnd; /** @type {?} */ EditLabelComponent.prototype.nodeTypeOr; /** @type {?} */ EditLabelComponent.prototype.nodeTypeUnknow; /** @type {?} */ EditLabelComponent.prototype.nodeTypePlain; /** @type {?} */ EditLabelComponent.prototype.AdditionalSQL; /** @type {?} */ EditLabelComponent.prototype.AdditionalSQLDisplay; /** @type {?} */ EditLabelComponent.prototype.whereString; /** @type {?} */ EditLabelComponent.prototype.options; /** @type {?} */ EditLabelComponent.prototype.themeModel; /** @type {?} */ EditLabelComponent.prototype.标签定义; /** @type {?} */ EditLabelComponent.prototype.labelNode; /** * @type {?} * @private */ EditLabelComponent.prototype.theme; /** @type {?} */ EditLabelComponent.prototype.dialog; /** * @type {?} * @private */ EditLabelComponent.prototype.lblSvr; /** @type {?} */ EditLabelComponent.prototype.dialogRef; /** @type {?} */ EditLabelComponent.prototype.svr; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1sYWJlbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9kYndlYi1jb21tb24vIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9sYWJlbC1tYW5hZ2VyL2VkaXQtbGFiZWwvZWRpdC1sYWJlbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFVLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUEwQixNQUFNLHlDQUF5QyxDQUFDO0FBQ3hHLE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEVBQWMsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFM0U7SUF1QkMsNEJBQ1MsS0FBbUIsRUFDcEIsTUFBaUIsRUFDaEIsTUFBd0IsRUFDekIsU0FBMkMsRUFDbEIsR0FBd0I7UUFMekQsaUJBVUM7UUFUUSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBa0M7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBcUI7UUFyQnhCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMvQyxnQkFBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7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QU0sRUFBRSxJQUFJLEVBQUU7NEJBRWxDLFNBQVMsU0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFOztJQXVGMUMseUJBQUM7Q0FBQSxBQTNHRCxJQTJHQztTQXJHWSxrQkFBa0I7OztJQUM5Qix1Q0FBa0Q7O0lBQ2xELCtDQUF3RDs7SUFDeEQseUNBQTRDOztJQUM1Qyx3Q0FBMEM7O0lBQzFDLDRDQUE4Qzs7SUFDOUMsMkNBQWdEOztJQUNoRCwyQ0FBcUI7O0lBQ3JCLGtEQUE0Qjs7SUFDNUIseUNBQW9COztJQUNwQixxQ0FBb0Q7O0lBQ3BELHdDQUF1Qjs7SUFDdkIsa0NBQ2lCOztJQUNqQix1Q0FDc0I7Ozs7O0lBR3JCLG1DQUEyQjs7SUFDM0Isb0NBQXdCOzs7OztJQUN4QixvQ0FBZ0M7O0lBQ2hDLHVDQUFrRDs7SUFDbEQsaUNBQXdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25Jbml0LCBJbmplY3QsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwnO1xyXG5pbXBvcnQgeyBOb2RlVHlwZUVudW0gfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lbGV2aWV3L3R5cGVzL21vZGVsJztcclxuaW1wb3J0IHsgTGFiZWxNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvbGFiZWwtbWFuYWdlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTm9kZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2VsZXZpZXcvdHlwZXMvbm9kZSc7XHJcbmltcG9ydCB7IEVkaXRMYWJlbFNlcnZpY2UgfSBmcm9tICcuL2VkaXQtbGFiZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IExhYmVsSGlzdG9yeUNvbXBvbmVudCwgTGFiZWxIaXN0b3J5RGlhbG9nRGF0YSB9IGZyb20gJy4vbGFiZWwtaGlzdG9yeS9sYWJlbC1oaXN0b3J5LmNvbXBvbmVudCc7XHJcbmltcG9ydCBhY2UgZnJvbSAnYWNlLWJ1aWxkcyc7XHJcbmltcG9ydCB7IFRoZW1lTW9kZWwsIFRoZW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RoZW1lLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdjb21tb24tZWRpdC1sYWJlbCcsXHJcblx0dGVtcGxhdGVVcmw6ICcuL2VkaXQtbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxyXG5cdHN0eWxlVXJsczogWycuL2VkaXQtbGFiZWwuY29tcG9uZW50LnNjc3MnXSxcclxuXHRwcm92aWRlcnM6IFtFZGl0TGFiZWxTZXJ2aWNlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdExhYmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuXHRASG9zdEJpbmRpbmcoJ2NsYXNzLmVkaXQtbGFiZWwnKSBob3N0Q2xhc3MgPSB0cnVlO1xyXG5cdHJlYWRvbmx5IG5vZGVUeXBlQ29uZGl0aW9uID0gTm9kZVR5cGVFbnVtLk5vZGVDb25kaXRpb247XHJcblx0cmVhZG9ubHkgbm9kZVR5cGVBbmQgPSBOb2RlVHlwZUVudW0uTm9kZUFuZDtcclxuXHRyZWFkb25seSBub2RlVHlwZU9yID0gTm9kZVR5cGVFbnVtLk5vZGVPcjtcclxuXHRyZWFkb25seSBub2RlVHlwZVVua25vdyA9IE5vZGVUeXBlRW51bS51bmtub3c7XHJcblx0cmVhZG9ubHkgbm9kZVR5cGVQbGFpbiA9IE5vZGVUeXBlRW51bS5Ob2RlUGxhaW47XHJcblx0QWRkaXRpb25hbFNRTCA9IHRydWU7XHJcblx0QWRkaXRpb25hbFNRTERpc3BsYXkgPSB0cnVlO1xyXG5cdHdoZXJlU3RyaW5nOiBzdHJpbmc7XHJcblx0b3B0aW9uczogYW55ID0geyBtYXhMaW5lczogMTIsIHByaW50TWFyZ2luOiBmYWxzZSB9O1xyXG5cdHRoZW1lTW9kZWw6IFRoZW1lTW9kZWw7XHJcblx0QFZpZXdDaGlsZCgn5qCH562+5a6a5LmJJywgeyBzdGF0aWM6IHRydWUgfSlcclxuXHTmoIfnrb7lrprkuYk6IEVsZW1lbnRSZWY7XHJcblx0QFZpZXdDaGlsZCgnbGFiZWxOb2RlJywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0bGFiZWxOb2RlOiBFbGVtZW50UmVmO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdHByaXZhdGUgdGhlbWU6IFRoZW1lU2VydmljZSxcclxuXHRcdHB1YmxpYyBkaWFsb2c6IE1hdERpYWxvZyxcclxuXHRcdHByaXZhdGUgbGJsU3ZyOiBFZGl0TGFiZWxTZXJ2aWNlLFxyXG5cdFx0cHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEVkaXRMYWJlbENvbXBvbmVudD4sXHJcblx0XHRASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIHN2cjogTGFiZWxNYW5hZ2VyU2VydmljZVxyXG5cdCkge1xyXG5cdFx0dGhpcy50aGVtZS50aGVtZS5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdHRoaXMudGhlbWVNb2RlbCA9IHYubW9kZWw7XHJcblx0XHR9KTtcclxuXHR9XHJcblx0bmdBZnRlclZpZXdJbml0KCkge1xyXG5cdFx0dGhpcy5sYWJlbE5vZGUubmF0aXZlRWxlbWVudC5vbmRyYWdvdmVyID0gKGV2ZW50OiBEcmFnRXZlbnQpID0+IHtcclxuXHRcdFx0Ly8g5oqKbGFiZWxOb2Rl5Y+Y5oiQ5LiA5Liq5a655ZmoLOiDveaLluWFpeadoeS7tlxyXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhldmVudCk7XHJcblx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cdFx0fTtcclxuXHR9XHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRhY2UuY29uZmlnLnNldCgnYmFzZVBhdGgnLCAnL2Zyb250L2Fzc2V0cy9hY2UtYnVpbGRzL3NyYy1taW4tbm9jb25mbGljdCcpO1xyXG5cdFx0dGhpcy5sYmxTdnIub25Ob2RlQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XHJcblx0XHRcdGlmICh0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMgJiYgdGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLk5vZGVUeXBlICE9PSBOb2RlVHlwZUVudW0udW5rbm93KSB7XHJcblx0XHRcdFx0dGhpcy5zdnIuYmFja2ZhY2VcclxuXHRcdFx0XHRcdC5ub2RlVG9TdHJpbmcodGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLnRvSW50ZXJmYWNlKCkpXHJcblx0XHRcdFx0XHQuc3Vic2NyaWJlKHN0ciA9PiAodGhpcy53aGVyZVN0cmluZyA9IHN0cikpO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHRoaXMud2hlcmVTdHJpbmcgPSAnJztcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0XHR0aGlzLmxibFN2ci5vbk5vZGVDaGFuZ2UuZW1pdCgpO1xyXG5cdFx0dGhpcy7moIfnrb7lrprkuYkubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuc3R5bGUgPSAncGFkZGluZzowcHg7JztcclxuXHR9XHJcblx0bGFiZWxEcm9wKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuXHRcdGlmICh0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMuTm9kZVR5cGUgPT09IHRoaXMubm9kZVR5cGVVbmtub3cpIHtcclxuXHRcdFx0dGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLmFzc2lnbih0aGlzLmxibFN2ci5idWlsZERyYWdlZE5vZGUoKSk7XHJcblx0XHRcdHRoaXMubGJsU3ZyLm9uTm9kZUNoYW5nZS5lbWl0KCk7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHR0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMuTm9kZVR5cGUgPT09IHRoaXMubm9kZVR5cGVBbmQgfHxcclxuXHRcdFx0dGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLk5vZGVUeXBlID09PSB0aGlzLm5vZGVUeXBlT3JcclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMuQ2hpbGRyZW5bdGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLkNoaWxkcmVuLmxlbmd0aCAtIDFdLmFkZEJvdHRvbVNpYmxpbmcoXHJcblx0XHRcdFx0dGhpcy5sYmxTdnIuYnVpbGREcmFnZWROb2RlKClcclxuXHRcdFx0KTtcclxuXHRcdFx0aWYgKHRoaXMubGJsU3ZyLmRyYWdEYXRhLlR5cGUgPT09ICdub2RlJykge1xyXG5cdFx0XHRcdCh0aGlzLmxibFN2ci5kcmFnRGF0YS5EYXRhIGFzIE5vZGUpLnJlbW92ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMubGJsU3ZyLm9uTm9kZUNoYW5nZS5lbWl0KCk7XHJcblx0XHR9IGVsc2UgaWYgKFxyXG5cdFx0XHR0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMuTm9kZVR5cGUgPT09IHRoaXMubm9kZVR5cGVDb25kaXRpb24gfHxcclxuXHRcdFx0dGhpcy5zdnIuZWRpdExhYmVsLkNvbnRzLk5vZGVUeXBlID09PSB0aGlzLm5vZGVUeXBlUGxhaW5cclxuXHRcdCkge1xyXG5cdFx0XHR0aGlzLnN2ci5lZGl0TGFiZWwuQ29udHMuYWRkQ2hpbGRTaWJsaW5nKHRoaXMubGJsU3ZyLmJ1aWxkRHJhZ2VkTm9kZSgpKTtcclxuXHRcdFx0aWYgKHRoaXMubGJsU3ZyLmRyYWdEYXRhLlR5cGUgPT09ICdub2RlJykge1xyXG5cdFx0XHRcdCh0aGlzLmxibFN2ci5kcmFnRGF0YS5EYXRhIGFzIE5vZGUpLnJlbW92ZSgpO1xyXG5cdFx0XHR9XHJcblx0XHRcdHRoaXMubGJsU3ZyLm9uTm9kZUNoYW5nZS5lbWl0KCk7XHJcblx0XHR9XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHR9XHJcblx0Y29sRHJhZ1N0YXJ0KGV2ZW50OiBEcmFnRXZlbnQsIGNvbHVtbjogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmxibFN2ci5kcmFnRGF0YSA9IHsgVHlwZTogJ2NvbHVtbicsIERhdGE6IGNvbHVtbiB9O1xyXG5cdH1cclxuXHRvcGVuSGlzKCkge1xyXG5cdFx0dGhpcy5kaWFsb2cub3BlbihMYWJlbEhpc3RvcnlDb21wb25lbnQsIHtcclxuXHRcdFx0d2lkdGg6ICcyOTZweCcsXHJcblx0XHRcdGhlaWdodDogJzM4NHB4JyxcclxuXHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdHN2cjogdGhpcy5zdnIsXHJcblx0XHRcdFx0ZGF0YTogeyBDYXRlZ29yeUlEOiB0aGlzLnN2ci5lZGl0TGFiZWwuQ2F0ZWdvcnlJRCwgSUQ6IHRoaXMuc3ZyLmVkaXRMYWJlbC5MYWJlbElEIH1cclxuXHRcdFx0fSBhcyBMYWJlbEhpc3RvcnlEaWFsb2dEYXRhLFxyXG5cdFx0XHRhdXRvRm9jdXM6IGZhbHNlXHJcblx0XHR9KTtcclxuXHR9XHJcblx0YWNyb255bVNjcm9sbChsZXR0ZXI6IHN0cmluZykge1xyXG5cdFx0ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignIycgKyBsZXR0ZXIpLnNjcm9sbEludG9WaWV3KHRydWUpO1xyXG5cdH1cclxuXHRzYXZlKCkge1xyXG5cdFx0dGhpcy5zdnIuZWRpdExhYmVsLnNhdmUoKS5zdWJzY3JpYmUodiA9PiB7XHJcblx0XHRcdGlmICh2KSB7XHJcblx0XHRcdFx0dGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==