@bizdoc/core 1.16.3 → 1.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/system/Microsoft_Azure.svg +23 -0
- package/assets/system/QAD.svg +359 -0
- package/assets/system/sap.svg +1 -0
- package/esm2020/lib/admin/configuration-designer/cube-axes-filter.component.mjs +112 -0
- package/esm2020/lib/admin/configuration-designer/designer-element.component.mjs +204 -131
- package/esm2020/lib/admin/configuration-designer/designer.base.mjs +57 -10
- package/esm2020/lib/admin/configuration-designer/designer.component.mjs +86 -56
- package/esm2020/lib/admin/configuration-designer/elements/action.component.mjs +36 -16
- package/esm2020/lib/admin/configuration-designer/elements/analysis-view.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/analysis-widget.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/anomaly-rule.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/box-form.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/configuration-datasource.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube-index-utility.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +81 -63
- package/esm2020/lib/admin/configuration-designer/elements/documents-report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/documents-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/explore-view.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/folder.component.mjs +42 -13
- package/esm2020/lib/admin/configuration-designer/elements/form.component.mjs +12 -17
- package/esm2020/lib/admin/configuration-designer/elements/guide.component.mjs +8 -13
- package/esm2020/lib/admin/configuration-designer/elements/matrix-view.component.mjs +5 -4
- package/esm2020/lib/admin/configuration-designer/elements/parallel-view.component.mjs +4 -4
- package/esm2020/lib/admin/configuration-designer/elements/performance-widget.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/pivot-view.component.mjs +4 -4
- package/esm2020/lib/admin/configuration-designer/elements/report.component.mjs +9 -14
- package/esm2020/lib/admin/configuration-designer/elements/return-to-role-action.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/role.component.mjs +13 -5
- package/esm2020/lib/admin/configuration-designer/elements/rule.component.mjs +6 -13
- package/esm2020/lib/admin/configuration-designer/elements/state.component.mjs +20 -15
- package/esm2020/lib/admin/configuration-designer/elements/sum-view.component.mjs +4 -4
- package/esm2020/lib/admin/configuration-designer/elements/tasks-report.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/type.component.mjs +8 -14
- package/esm2020/lib/admin/configuration-designer/elements/usage-report.component.mjs +4 -4
- package/esm2020/lib/admin/configuration-designer/elements/utility.component.mjs +6 -6
- package/esm2020/lib/admin/configuration-designer/elements/view.component.mjs +6 -13
- package/esm2020/lib/admin/configuration-designer/elements/widget.component.mjs +7 -12
- package/esm2020/lib/admin/configuration-designer/icon-picker.component.mjs +3 -3
- package/esm2020/lib/admin/form/workflow/node.component.mjs +2 -2
- package/esm2020/lib/bizdoc.module.mjs +1 -3
- package/esm2020/lib/core/functions.mjs +4 -3
- package/esm2020/lib/core/layout/input.base.mjs +45 -1
- package/esm2020/lib/core/layout/input.field.mjs +3 -2
- package/esm2020/lib/core/layout/layout.component.mjs +16 -58
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/slots/router.service.mjs +1 -1
- package/esm2020/lib/core/slots/slots.component.mjs +12 -7
- package/esm2020/lib/core/translations.mjs +15 -2
- package/esm2020/lib/dashboard/widget-item.component.mjs +2 -2
- package/esm2020/lib/reports/arguments-component.mjs +2 -2
- package/esm2020/lib/shared.module.mjs +3 -1
- package/esm2020/lib/system.module.mjs +10 -9
- package/esm2020/lib/views/cube/sum.component.mjs +1 -1
- package/fesm2015/bizdoc-core.mjs +1604 -1306
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +1591 -1294
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/configuration-designer/cube-axes-filter.component.d.ts +35 -0
- package/lib/admin/configuration-designer/designer-element.component.d.ts +66 -27
- package/lib/admin/configuration-designer/designer.base.d.ts +99 -38
- package/lib/admin/configuration-designer/designer.component.d.ts +8 -4
- package/lib/admin/configuration-designer/elements/action.component.d.ts +18 -4
- package/lib/admin/configuration-designer/elements/cube.component.d.ts +1 -8
- package/lib/admin/configuration-designer/elements/folder.component.d.ts +8 -4
- package/lib/admin/configuration-designer/elements/report.component.d.ts +3 -3
- package/lib/admin/configuration-designer/elements/role.component.d.ts +2 -0
- package/lib/admin/configuration-designer/elements/state.component.d.ts +4 -0
- package/lib/core/layout/input.base.d.ts +4 -1
- package/lib/core/layout/input.field.d.ts +1 -1
- package/lib/core/layout/layout.component.d.ts +5 -7
- package/lib/core/models.d.ts +5 -4
- package/lib/core/slots/router.service.d.ts +2 -0
- package/lib/core/translations.d.ts +13 -0
- package/lib/system.module.d.ts +50 -49
- package/lib/views/cube/sum.component.d.ts +3 -3
- package/package.json +16 -16
@@ -1,137 +1,143 @@
|
|
1
|
-
import { Component, EventEmitter, HostListener,
|
1
|
+
import { Component, ContentChild, ContentChildren, EventEmitter, HostListener, Inject, Input, Optional, Output, ViewChild, ViewContainerRef } from "@angular/core";
|
2
2
|
import { Validators } from "@angular/forms";
|
3
|
-
import {
|
4
|
-
import {
|
3
|
+
import { Subject, takeUntil } from "rxjs";
|
4
|
+
import { LayoutComponent } from "../../core/layout/layout.component";
|
5
|
+
import { DesignerRef, programName, FAMILY_SVG } from "./designer.base";
|
5
6
|
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "../../core/
|
7
|
-
import * as i2 from "@angular/
|
8
|
-
import * as i3 from "
|
9
|
-
import * as i4 from "
|
10
|
-
import * as i5 from "@angular/
|
11
|
-
import * as i6 from "
|
12
|
-
import * as i7 from "@angular/material/
|
13
|
-
import * as i8 from "@angular/material/
|
14
|
-
import * as i9 from "@angular/material/
|
15
|
-
import * as i10 from "@angular/material/
|
16
|
-
import * as i11 from "@angular/material/
|
17
|
-
import * as i12 from "
|
7
|
+
import * as i1 from "../../core/component-factory-resolver";
|
8
|
+
import * as i2 from "@angular/common";
|
9
|
+
import * as i3 from "../../core/pipes/sanitize-html.pipe";
|
10
|
+
import * as i4 from "./designer.base";
|
11
|
+
import * as i5 from "@angular/forms";
|
12
|
+
import * as i6 from "../system.service";
|
13
|
+
import * as i7 from "@angular/material/list";
|
14
|
+
import * as i8 from "@angular/material/toolbar";
|
15
|
+
import * as i9 from "@angular/material/form-field";
|
16
|
+
import * as i10 from "@angular/material/button";
|
17
|
+
import * as i11 from "@angular/material/input";
|
18
|
+
import * as i12 from "@angular/material/icon";
|
18
19
|
import * as i13 from "../core/ace.input";
|
19
20
|
import * as i14 from "../../core/pipes/translate.pipe";
|
20
|
-
|
21
|
-
export class
|
22
|
-
constructor(
|
23
|
-
this._injector = _injector;
|
24
|
-
this._pane = _pane;
|
25
|
-
this._fb = _fb;
|
26
|
-
this._service = _service;
|
21
|
+
import * as i15 from "../../core/slots/pane-ref";
|
22
|
+
export class DesignerElementInfoComponent {
|
23
|
+
constructor(_cfr, _ref) {
|
27
24
|
this._cfr = _cfr;
|
28
|
-
this.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
25
|
+
this._ref = _ref;
|
26
|
+
this.svg = FAMILY_SVG;
|
27
|
+
this.model = _ref.model;
|
28
|
+
}
|
29
|
+
ngOnInit() {
|
30
|
+
if (this.model.template) {
|
31
|
+
const factory = this._cfr.resolve(this.model.template);
|
32
|
+
const cRef = this._econtainer.createComponent(factory, 0);
|
33
|
+
cRef.instance.model = this.model;
|
34
|
+
cRef.instance.mode = 'widget';
|
35
|
+
}
|
36
|
+
else if (this.model.arguments?.length) {
|
36
37
|
}
|
37
38
|
}
|
38
|
-
|
39
|
-
|
40
|
-
|
39
|
+
}
|
40
|
+
DesignerElementInfoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementInfoComponent, deps: [{ token: i1.BizDocComponentFactoryResolver }, { token: DesignerRef }], target: i0.ɵɵFactoryTarget.Component });
|
41
|
+
DesignerElementInfoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementInfoComponent, selector: "bizdoc-designer-element-info", viewQueries: [{ propertyName: "_econtainer", first: true, predicate: ["econtainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_arguments", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
|
42
|
+
<div [innerHTML]="(svg[model.family]|sanitizeHtml)||model.family" *ngIf="model.family"></div>
|
43
|
+
<ng-content></ng-content>
|
44
|
+
<ng-container #econtainer></ng-container>
|
45
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.SanitizeHtmlPipe, name: "sanitizeHtml" }] });
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementInfoComponent, decorators: [{
|
47
|
+
type: Component,
|
48
|
+
args: [{
|
49
|
+
selector: 'bizdoc-designer-element-info', template: `
|
50
|
+
<div [innerHTML]="(svg[model.family]|sanitizeHtml)||model.family" *ngIf="model.family"></div>
|
51
|
+
<ng-content></ng-content>
|
52
|
+
<ng-container #econtainer></ng-container>
|
53
|
+
`
|
54
|
+
}]
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.BizDocComponentFactoryResolver }, { type: i4.DesignerRef, decorators: [{
|
56
|
+
type: Inject,
|
57
|
+
args: [DesignerRef]
|
58
|
+
}] }]; }, propDecorators: { _econtainer: [{
|
59
|
+
type: ViewChild,
|
60
|
+
args: ['econtainer', { static: true, read: ViewContainerRef }]
|
61
|
+
}], _arguments: [{
|
62
|
+
type: ViewChild,
|
63
|
+
args: ['arguments', { static: true, read: ViewContainerRef }]
|
64
|
+
}] } });
|
65
|
+
export class DesignerElementPhaseComponent {
|
66
|
+
constructor(_ref, _fb, _injector, _cfr, _componentFactoryResolver, _service, _element) {
|
67
|
+
this._ref = _ref;
|
68
|
+
this._fb = _fb;
|
69
|
+
this._injector = _injector;
|
70
|
+
this._cfr = _cfr;
|
71
|
+
this._componentFactoryResolver = _componentFactoryResolver;
|
72
|
+
this._service = _service;
|
73
|
+
this._element = _element;
|
74
|
+
this.onSave = new EventEmitter();
|
75
|
+
this._destroy = new Subject();
|
76
|
+
this.model = _ref.model;
|
77
|
+
if (_ref.mode === 'add')
|
78
|
+
this.dirty = true;
|
79
|
+
this.active = this._ref.mode !== 'widget';
|
41
80
|
}
|
42
81
|
ngOnInit() {
|
43
|
-
if (!this.
|
44
|
-
|
45
|
-
const
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
82
|
+
if (!this.active)
|
83
|
+
return;
|
84
|
+
const name = this._fb.control(null, Validators.required), title = this._fb.control(null, Validators.required);
|
85
|
+
this.model.resource && title.disable();
|
86
|
+
!this.model.draft && name.disable();
|
87
|
+
this.model.draft && title.valueChanges.pipe(takeUntil(this._destroy)).subscribe((t) => t && name.setValue(programName(t)));
|
88
|
+
this.form.addControl('name', name);
|
89
|
+
this.form.addControl('title', title);
|
90
|
+
if (this.model.privileges) {
|
91
|
+
this.form.addControl('privileges', this._fb.group({
|
92
|
+
rule: null,
|
93
|
+
roles: this._fb.control(null),
|
94
|
+
}), { emitEvent: false });
|
95
|
+
this._service.roles().subscribe(r => {
|
96
|
+
this.roles = r.concat(this._ref.designer.roles.
|
97
|
+
filter(r => !r.disabled).
|
98
|
+
map(r => ({
|
99
|
+
name: r.name,
|
100
|
+
title: r.title,
|
101
|
+
dataType: r.dataType
|
102
|
+
})));
|
103
|
+
});
|
104
|
+
}
|
55
105
|
if (this.model.template) {
|
56
|
-
|
57
|
-
|
106
|
+
const factory = this._cfr.resolve(this.model.template);
|
107
|
+
const cRef = this._econtainer.createComponent(factory, 0, this._injector);
|
58
108
|
cRef.instance.model = this.model;
|
59
|
-
cRef.instance.mode =
|
60
|
-
elementinstance = cRef.instance;
|
109
|
+
cRef.instance.mode = 'edit';
|
110
|
+
const elementinstance = cRef.instance;
|
111
|
+
elementinstance.form.patchValue(this.model.options);
|
112
|
+
this.form.addControl('options', elementinstance.form, { emitEvent: false });
|
61
113
|
}
|
62
|
-
if (this.
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
});
|
68
|
-
this._destroy = new Subject();
|
69
|
-
const { name, title } = this.form.controls;
|
70
|
-
!this.model.draft && name.disable();
|
71
|
-
this.model.draft && title.valueChanges.pipe(takeUntil(this._destroy), debounceTime(100)).subscribe((t) => t && name.setValue(programName(t)));
|
72
|
-
if (this.model.privileges) {
|
73
|
-
this.form.addControl('privileges', this._fb.group({
|
74
|
-
rule: null,
|
75
|
-
roles: this._fb.control(null),
|
76
|
-
}), { emitEvent: false });
|
77
|
-
this._service.roles().subscribe(r => {
|
78
|
-
this.roles = r.concat(this.designer.roles.
|
79
|
-
filter(r => !r.disabled).
|
80
|
-
map(r => ({
|
81
|
-
name: r.name,
|
82
|
-
title: r.title,
|
83
|
-
dataType: r.dataType
|
84
|
-
})));
|
85
|
-
});
|
86
|
-
}
|
87
|
-
if (!elementinstance && this.model.arguments?.length) {
|
88
|
-
const options = this._fb.group({});
|
89
|
-
this.model.arguments?.forEach(a => options.addControl(a.name, this._fb.control(null, a.required ? Validators.required : null)));
|
90
|
-
this.form.addControl('options', options, { emitEvent: false });
|
91
|
-
}
|
92
|
-
this.form.patchValue(this.model);
|
93
|
-
this.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(100)).
|
94
|
-
subscribe(v => {
|
95
|
-
Object.assign(this.model, v);
|
96
|
-
this.dirty = true;
|
97
|
-
});
|
98
|
-
let state, typestate, elementstate;
|
99
|
-
function validate() {
|
100
|
-
return (!typestate || typestate === 'VALID') && (!state || state === 'VALID') && (!elementstate || elementstate === 'VALID');
|
101
|
-
}
|
102
|
-
this.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
|
103
|
-
state = s;
|
104
|
-
this.valid = validate();
|
105
|
-
});
|
106
|
-
typeinstance.form.patchValue(this.model);
|
107
|
-
typeinstance.form.statusChanges.pipe(takeUntil(this._destroy), debounceTime(100)).subscribe(s => {
|
108
|
-
typestate = s;
|
109
|
-
this.valid = validate();
|
110
|
-
});
|
111
|
-
typeinstance.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(100)).subscribe(v => {
|
112
|
-
Object.assign(this.model, v);
|
113
|
-
this.dirty = true;
|
114
|
-
});
|
115
|
-
if (elementinstance) {
|
116
|
-
elementinstance.form.patchValue(this.model.options);
|
117
|
-
elementinstance.form.valueChanges.pipe(takeUntil(this._destroy), debounceTime(100)).
|
118
|
-
subscribe(v => this.assignargs(v));
|
119
|
-
elementinstance.form.statusChanges.pipe(takeUntil(this._destroy), debounceTime(100)).subscribe(s => {
|
120
|
-
typestate = s;
|
121
|
-
this.valid = validate();
|
122
|
-
});
|
123
|
-
}
|
114
|
+
else if (this.model.arguments?.length) {
|
115
|
+
const factory = this._componentFactoryResolver.resolveComponentFactory(LayoutComponent);
|
116
|
+
const cRef = this._arguments.createComponent(factory);
|
117
|
+
cRef.instance.fields = this.model.arguments;
|
118
|
+
cRef.instance.formulate();
|
119
|
+
this.form.addControl('options', cRef.instance.form, { emitEvent: false });
|
124
120
|
}
|
121
|
+
this.form.patchValue(this.model, { emitEvent: false });
|
122
|
+
this.form.statusChanges.pipe(takeUntil(this._destroy)).subscribe(s => {
|
123
|
+
this.valid = s === 'VALID';
|
124
|
+
this.dirty = true;
|
125
|
+
});
|
126
|
+
this.valid = this.form.valid;
|
125
127
|
}
|
126
|
-
|
127
|
-
this.
|
128
|
+
ngAfterViewInit() {
|
129
|
+
this._element.nativeElement.querySelector('input')?.focus();
|
128
130
|
}
|
129
|
-
|
131
|
+
unlock(evt) {
|
132
|
+
if (evt.srcElement.tagName !== 'A')
|
133
|
+
return;
|
134
|
+
this.model.resource = null;
|
130
135
|
this.form.get('title').enable();
|
136
|
+
this._ref._lock$.next(false);
|
131
137
|
}
|
132
|
-
|
133
|
-
Object.assign(this.model
|
134
|
-
this.
|
138
|
+
save() {
|
139
|
+
Object.assign(this.model, this.form.value);
|
140
|
+
this.onSave.emit(this.model);
|
135
141
|
}
|
136
142
|
/**
|
137
143
|
* Ctrl-s save
|
@@ -145,29 +151,96 @@ export class DesignerItemComponent {
|
|
145
151
|
}
|
146
152
|
ngOnDestroy() {
|
147
153
|
this._destroy?.next();
|
154
|
+
this._destroy?.complete();
|
148
155
|
}
|
149
156
|
}
|
150
|
-
|
151
|
-
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type:
|
157
|
+
DesignerElementPhaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementPhaseComponent, deps: [{ token: DesignerRef }, { token: i5.FormBuilder }, { token: i0.Injector }, { token: i1.BizDocComponentFactoryResolver }, { token: i0.ComponentFactoryResolver }, { token: i6.SystemService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
158
|
+
DesignerElementPhaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerElementPhaseComponent, selector: "bizdoc-designer-element-edit", inputs: { state: "state", form: "form" }, outputs: { onSave: "save" }, host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, viewQueries: [{ propertyName: "_econtainer", first: true, predicate: ["econtainer"], descendants: true, read: ViewContainerRef, static: true }, { propertyName: "_arguments", first: true, predicate: ["arguments"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!valid || !dirty\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<p class=\"help\">{{model.help}}</p>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <ng-container *ngIf=\"active\">\r\n\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n\r\n </div>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'Unlock'|translate\"></p>\r\n\r\n <!--<ng-container *ngTemplateOutlet=\"_template\"></ng-container>-->\r\n <ng-content></ng-content>\r\n </ng-container>\r\n\r\n <ng-container #econtainer></ng-container>\r\n\r\n <div #arguments></div>\r\n\r\n <ng-container *ngIf=\"form.controls.privileges\" formGroupName=\"privileges\">\r\n <h2 class=\"mat-title\">{{'Privileges'|translate}}</h2>\r\n <mat-selection-list formControlName=\"roles\" *ngIf=\"roles\">\r\n <mat-list-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"rule\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>\r\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: i7.MatSelectionList, selector: "mat-selection-list", inputs: ["disableRipple", "color", "compareWith", "disabled", "multiple"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i7.MatListOption, selector: "mat-list-option", inputs: ["disableRipple", "checkboxPosition", "color", "value", "disabled", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "component", type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i11.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: i14.TranslatePipe, name: "translate" }] });
|
159
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerElementPhaseComponent, decorators: [{
|
153
160
|
type: Component,
|
154
|
-
args: [{ selector: 'bizdoc-designer-element', template: "<
|
155
|
-
}], ctorParameters: function () { return [{ type:
|
156
|
-
type:
|
157
|
-
|
161
|
+
args: [{ selector: 'bizdoc-designer-element-edit', template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!valid || !dirty\"><mat-icon>save</mat-icon></button>\r\n</mat-toolbar>\r\n<p class=\"help\">{{model.help}}</p>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" class=\"column\">\r\n <ng-container *ngIf=\"active\">\r\n\r\n <div class=\"row\">\r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Title'|translate}}</mat-label>\r\n <input matInput formControlName=\"title\" required #title />\r\n </mat-form-field>\r\n \r\n <mat-form-field class=\"flex\">\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput formControlName=\"name\" required />\r\n </mat-form-field>\r\n\r\n </div>\r\n <p *ngIf=\"model.resource\" class=\"message\" (click)=\"unlock($event)\" [innerHTML]=\"'Unlock'|translate\"></p>\r\n\r\n <!--<ng-container *ngTemplateOutlet=\"_template\"></ng-container>-->\r\n <ng-content></ng-content>\r\n </ng-container>\r\n\r\n <ng-container #econtainer></ng-container>\r\n\r\n <div #arguments></div>\r\n\r\n <ng-container *ngIf=\"form.controls.privileges\" formGroupName=\"privileges\">\r\n <h2 class=\"mat-title\">{{'Privileges'|translate}}</h2>\r\n <mat-selection-list formControlName=\"roles\" *ngIf=\"roles\">\r\n <mat-list-option *ngFor=\"let r of roles\" [value]=\"r.name\">{{r.title}}</mat-list-option>\r\n </mat-selection-list>\r\n <mat-form-field>\r\n <bizdoc-ace-input [placeholder]=\"'Condition'|translate\" formControlName=\"rule\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'ProgrammableExpression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </ng-container>\r\n</form>\r\n" }]
|
162
|
+
}], ctorParameters: function () { return [{ type: i4.DesignerRef, decorators: [{
|
163
|
+
type: Inject,
|
164
|
+
args: [DesignerRef]
|
165
|
+
}] }, { type: i5.FormBuilder }, { type: i0.Injector }, { type: i1.BizDocComponentFactoryResolver }, { type: i0.ComponentFactoryResolver }, { type: i6.SystemService }, { type: i0.ElementRef }]; }, propDecorators: { state: [{
|
158
166
|
type: Input
|
159
|
-
}],
|
167
|
+
}], form: [{
|
160
168
|
type: Input
|
161
|
-
}],
|
162
|
-
type:
|
163
|
-
|
164
|
-
type: ViewChild,
|
165
|
-
args: ['container', { static: true, read: ViewContainerRef }]
|
169
|
+
}], onSave: [{
|
170
|
+
type: Output,
|
171
|
+
args: ['save']
|
166
172
|
}], _econtainer: [{
|
167
173
|
type: ViewChild,
|
168
174
|
args: ['econtainer', { static: true, read: ViewContainerRef }]
|
175
|
+
}], _arguments: [{
|
176
|
+
type: ViewChild,
|
177
|
+
args: ['arguments', { static: true, read: ViewContainerRef }]
|
169
178
|
}], handleKeyboardEvent: [{
|
170
179
|
type: HostListener,
|
171
180
|
args: ['document:keydown', ['$event']]
|
172
181
|
}] } });
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBVSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUE2QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBMkYsV0FBVyxFQUFjLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRaEssSUFBSTtBQU1KLE1BQU0sT0FDRSxxQkFBcUI7SUFhM0IsWUFDVSxTQUFtQixFQUNQLEtBQWMsRUFDMUIsR0FBZ0IsRUFDaEIsUUFBdUIsRUFDdkIsSUFBb0MsRUFDcEMsR0FBc0I7UUFMdEIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNQLFVBQUssR0FBTCxLQUFLLENBQVM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixhQUFRLEdBQVIsUUFBUSxDQUFlO1FBQ3ZCLFNBQUksR0FBSixJQUFJLENBQWdDO1FBQ3BDLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBRTlCLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxNQUFNLEVB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QjtRQUN0QyxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEdBQUcsQ0FBQyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUN4QjtJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUN4QixDQUFDOztrSEF4SksscUJBQXFCO3NHQUFyQixxQkFBcUIsdVNBT21CLGdCQUFnQixrSEFDZixnQkFBZ0IsMkNDOUJqRSx3ekRBMENBOzJGRHBCUSxxQkFBcUI7a0JBTjVCLFNBQVM7K0JBQ0UseUJBQXlCOzswQkFvQmhDLFFBQVE7K0tBWkYsUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFNEQsVUFBVTtzQkFBM0UsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDRyxXQUFXO3NCQUE3RSxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQXdJakUsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbFN0YXR1cywgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdFNlbGVjdGlvbkxpc3QgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdFwiO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlciB9IGZyb20gXCIuLi8uLi9jb3JlL2NvbXBvbmVudC1mYWN0b3J5LXJlc29sdmVyXCI7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZlwiO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSBcIi4uL3N5c3RlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmLCBFbGVtZW50TW9kZWwsIERlc2lnbmVyRWxlbWVudENvbXBvbmVudEJhc2UsIERlc2lnbmVyTW9kZWwsIERlc2lnbmVyVHlwZUVsZW1lbnRDb21wb25lbnQsIHByb2dyYW1OYW1lLCBEZXNpZ25Nb2RlIH0gZnJvbSBcIi4vZGVzaWduZXIuYmFzZVwiO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFbGVtZXREYXRhIHtcclxuICBtb2RlOiBEZXNpZ25Nb2RlO1xyXG4gIHRlbXBsYXRlOiBzdHJpbmc7XHJcbiAgbW9kZWw6IEVsZW1lbnRNb2RlbDtcclxuICBkZXNpZ25lcjogRGVzaWduZXJNb2RlbDtcclxufVxyXG4vKiovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQnLFxyXG4gIHN0eWxlVXJsczogWydkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgZm9ybTogRm9ybUdyb3VwO1xyXG4gIG1vZGU6IERlc2lnbk1vZGU7XHJcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbW9kZWwhOiBFbGVtZW50TW9kZWw7XHJcbiAgQElucHV0KCkgZGVzaWduZXIhOiBEZXNpZ25lck1vZGVsO1xyXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEVsZW1lbnRNb2RlbD47XHJcbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZjtcclxuICBAVmlld0NoaWxkKCdlY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2Vjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgdmFsaWQ6IGJvb2xlYW47XHJcbiAgZGlydHk6IGJvb2xlYW47XHJcbiAgcm9sZXM6IEVsZW1lbnRNb2RlbFtdO1xyXG4gIHByaXZhdGUgX2Rlc3Ryb3k6IFN1YmplY3Q8dm9pZD47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYW5lOiBQYW5lUmVmLFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2NmcjogQml6RG9jQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICkge1xyXG4gICAgaWYgKF9wYW5lICYmIF9wYW5lLmRpYWxvZykge1xyXG4gICAgICBjb25zdCB7IGRlc2lnbmVyLCBtb2RlLCBtb2RlbCwgdGVtcGxhdGUgfSA9IF9wYW5lLmRhdGEgYXMgRWxlbWV0RGF0YTtcclxuICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7XHJcbiAgICAgICAgZGVzaWduZXIsIG1vZGUsXHJcbiAgICAgICAgbW9kZWw6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobW9kZWwpKSxcclxuICAgICAgICB0ZW1wbGF0ZVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgc2F2ZSgpIHtcclxuICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5tb2RlbCk7XHJcbiAgICB0aGlzLl9wYW5lLmNsb3NlKCk7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLm1vZGVsLm9wdGlvbnMpIHRoaXMubW9kZWwub3B0aW9ucyA9IHt9O1xyXG5cclxuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKFt7XHJcbiAgICAgIHByb3ZpZGU6IERlc2lnbmVyUmVmLCB1c2VWYWx1ZTogbmV3IERlc2lnbmVyUmVmKHRoaXMuZGVzaWduZXIsIHRoaXMubW9kZWwpXHJcbiAgICB9XSwgdGhpcy5faW5qZWN0b3IpO1xyXG5cclxuICAgIGxldCB0eXBlaW5zdGFuY2U7XHJcblxyXG4gICAgbGV0IGZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZSh0aGlzLnRlbXBsYXRlKTtcclxuXHJcbiAgICBsZXQgY1JlZiA9IHRoaXMuX2NvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8RGVzaWduZXJUeXBlRWxlbWVudENvbXBvbmVudD4oZmFjdG9yeSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgY1JlZi5pbnN0YW5jZS5tb2RlbCA9IHRoaXMubW9kZWw7XHJcbiAgICBjUmVmLmluc3RhbmNlLm1vZGUgPSB0aGlzLm1vZGU7XHJcbiAgICB0eXBlaW5zdGFuY2UgPSBjUmVmLmluc3RhbmNlO1xyXG5cclxuICAgIGxldCBlbGVtZW50aW5zdGFuY2U7XHJcblxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgbGV0IGZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZSh0aGlzLm1vZGVsLnRlbXBsYXRlKTtcclxuXHJcbiAgICAgIGxldCBjUmVmID0gdGhpcy5fZWNvbnRhaW5lci5jcmVhdGVDb21wb25lbnQ8RGVzaWduZXJFbGVtZW50Q29tcG9uZW50QmFzZT4oZmFjdG9yeSwgMCwgaW5qZWN0b3IpO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLm1vZGVsID0gdGhpcy5tb2RlbDtcclxuICAgICAgY1JlZi5pbnN0YW5jZS5tb2RlID0gdGhpcy5tb2RlO1xyXG4gICAgICBlbGVtZW50aW5zdGFuY2UgPSBjUmVmLmluc3RhbmNlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm1vZGUgPT09ICdlZGl0Jykge1xyXG4gICAgICB0aGlzLmNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWxlbWVudE1vZGVsPigpO1xyXG4gICAgICB0aGlzLmZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgICAgbmFtZTogdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgICB0aXRsZTogdGhpcy5fZmIuY29udHJvbCh7IGRpc2FibGVkOiB0aGlzLm1vZGVsLnJlc291cmNlIH0sIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fZGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICAgIGNvbnN0IHsgbmFtZSwgdGl0bGUgfSA9IHRoaXMuZm9ybS5jb250cm9scztcclxuICAgICAgIXRoaXMubW9kZWwuZHJhZnQgJiYgbmFtZS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMubW9kZWwuZHJhZnQgJiYgdGl0bGUudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKCh0OiBzdHJpbmcpID0+XHJcbiAgICAgICAgdCAmJiBuYW1lLnNldFZhbHVlKHByb2dyYW1OYW1lKHQpKVxyXG4gICAgICApO1xyXG4gICAgICBpZiAodGhpcy5tb2RlbC5wcml2aWxlZ2VzKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ3ByaXZpbGVnZXMnLFxyXG4gICAgICAgICAgdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICAgICAgICBydWxlOiBudWxsLFxyXG4gICAgICAgICAgICByb2xlczogdGhpcy5fZmIuY29udHJvbDxzdHJpbmdbXT4obnVsbCksXHJcbiAgICAgICAgICB9KSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMuX3NlcnZpY2Uucm9sZXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgICB0aGlzLnJvbGVzID0gci5jb25jYXQodGhpcy5kZXNpZ25lci5yb2xlcy5cclxuICAgICAgICAgICAgZmlsdGVyKHIgPT4gIXIuZGlzYWJsZWQpLlxyXG4gICAgICAgICAgICBtYXAociA9PiAoe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHIubmFtZSxcclxuICAgICAgICAgICAgICB0aXRsZTogci50aXRsZSxcclxuICAgICAgICAgICAgICBkYXRhVHlwZTogci5kYXRhVHlwZVxyXG4gICAgICAgICAgICB9KSkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghZWxlbWVudGluc3RhbmNlICYmIHRoaXMubW9kZWwuYXJndW1lbnRzPy5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fZmIuZ3JvdXAoe30pO1xyXG4gICAgICAgIHRoaXMubW9kZWwuYXJndW1lbnRzPy5mb3JFYWNoKGEgPT5cclxuICAgICAgICAgIG9wdGlvbnMuYWRkQ29udHJvbChhLm5hbWUsIHRoaXMuX2ZiLmNvbnRyb2wobnVsbCwgYS5yZXF1aXJlZCA/IFZhbGlkYXRvcnMucmVxdWlyZWQgOiBudWxsKSkpO1xyXG4gICAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdvcHRpb25zJywgb3B0aW9ucywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwpO1xyXG4gICAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMTAwKSkuXHJcbiAgICAgICAgc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLCB2KTtcclxuICAgICAgICAgIHRoaXMuZGlydHkgPSB0cnVlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBsZXQgc3RhdGU6IEZvcm1Db250cm9sU3RhdHVzLCB0eXBlc3RhdGU6IEZvcm1Db250cm9sU3RhdHVzLCBlbGVtZW50c3RhdGU6IEZvcm1Db250cm9sU3RhdHVzO1xyXG4gICAgICBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcclxuICAgICAgICByZXR1cm4gKCF0eXBlc3RhdGUgfHwgdHlwZXN0YXRlID09PSAnVkFMSUQnKSAmJiAoIXN0YXRlIHx8IHN0YXRlID09PSAnVkFMSUQnKSAmJiAoIWVsZW1lbnRzdGF0ZSB8fCBlbGVtZW50c3RhdGUgPT09ICdWQUxJRCcpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgICAgc3RhdGUgPSBzO1xyXG4gICAgICAgIHRoaXMudmFsaWQgPSB2YWxpZGF0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgdHlwZWluc3RhbmNlLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsKTtcclxuICAgICAgdHlwZWluc3RhbmNlLmZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDEwMCkpLnN1YnNjcmliZShzID0+IHtcclxuICAgICAgICB0eXBlc3RhdGUgPSBzO1xyXG4gICAgICAgIHRoaXMudmFsaWQgPSB2YWxpZGF0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgICAgdHlwZWluc3RhbmNlLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKHYgPT4ge1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5tb2RlbCwgdik7XHJcbiAgICAgICAgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZWxlbWVudGluc3RhbmNlKSB7XHJcbiAgICAgICAgZWxlbWVudGluc3RhbmNlLmZvcm0ucGF0Y2hWYWx1ZSh0aGlzLm1vZGVsLm9wdGlvbnMpO1xyXG4gICAgICAgIGVsZW1lbnRpbnN0YW5jZS5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95KSwgZGVib3VuY2VUaW1lKDEwMCkpLlxyXG4gICAgICAgICAgc3Vic2NyaWJlKHYgPT4gdGhpcy5hc3NpZ25hcmdzKHYpKTtcclxuICAgICAgICBlbGVtZW50aW5zdGFuY2UuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpLCBkZWJvdW5jZVRpbWUoMTAwKSkuc3Vic2NyaWJlKHMgPT4ge1xyXG4gICAgICAgICAgdHlwZXN0YXRlID0gcztcclxuICAgICAgICAgIHRoaXMudmFsaWQgPSB2YWxpZGF0ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldE9wdGlvbnMob2JqOiBhbnkpIHtcclxuICAgIHRoaXMuZm9ybS5nZXQoJ29wdGlvbnMnKS5wYXRjaFZhbHVlKG9iaik7XHJcbiAgfVxyXG4gIG92ZXJyaWRlUmVzb3VyY2UoKSB7XHJcbiAgICB0aGlzLmZvcm0uZ2V0KCd0aXRsZScpLmVuYWJsZSgpO1xyXG4gIH1cclxuICBhc3NpZ25hcmdzKGV2dCkge1xyXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm1vZGVsLm9wdGlvbnMsIGV2dCk7XHJcbiAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3RybC1zIHNhdmVcclxuICAgKiBAcGFyYW0gZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSlcclxuICBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQuY3RybEtleSAmJiAoZXZlbnQud2hpY2ggPT09IDgzIHx8IGV2ZW50LndoaWNoID09PSAxMTUpKSB7XHJcbiAgICAgIHRoaXMudmFsaWQgJiYgdGhpcy5zYXZlKCk7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZGVzdHJveT8ubmV4dCgpO1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnOyBlbHNlIGluZm9cIj5cclxuICA8bWF0LXRvb2xiYXI+XHJcbiAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZFwiPjxtYXQtaWNvbj5zYXZlPC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L21hdC10b29sYmFyPlxyXG4gIDxzcGFuIGNsYXNzPVwiaGVscFwiPnt7bW9kZWwuaGVscH19PC9zcGFuPlxyXG4gIDxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiIGNsYXNzPVwicm93XCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snVGl0bGUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHJlcXVpcmVkIC8+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgJm5ic3A7XHJcbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snTmFtZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIiByZXF1aXJlZCAvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Zvcm0+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbmZvPlxyXG4gIDxzcGFuIGNsYXNzPVwiZmFtaWx5XCI+e3ttb2RlbC5mYW1pbHl9fTwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy1jb250YWluZXIgI2Vjb250YWluZXI+PC9uZy1jb250YWluZXI+XHJcbjxuZy1jb250YWluZXIgI2NvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG48Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImNvbHVtblwiICpuZ0lmPVwibW9kZSA9PT0gJ2VkaXQnXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vZGVsLmFyZ3VtZW50cz8ubGVuZ3RoXCI+XHJcbiAgICA8Yml6ZG9jLWxheW91dCBbZmllbGRzXT1cIm1vZGVsLmFyZ3VtZW50c1wiIFttb2RlbF09XCJtb2RlbC5vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJzZXRPcHRpb25zKCRldmVudClcIj48L2JpemRvYy1sYXlvdXQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbiAgPGgyIGNsYXNzPVwibWF0LXRpdGxlXCI+e3snUHJpdmlsZWdlcyd8dHJhbnNsYXRlfX08L2gyPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlbC5wcml2aWxlZ2VzXCIgZm9ybUdyb3VwTmFtZT1cInByaXZpbGVnZXNcIj5cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgZm9ybUNvbnRyb2xOYW1lPVwicm9sZXNcIiAqbmdJZj1cInJvbGVzXCI+XHJcbiAgICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2Ygcm9sZXNcIiBbdmFsdWVdPVwici5uYW1lXCI+e3tyLnRpdGxlfX08L21hdC1saXN0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8Yml6ZG9jLWFjZS1pbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ0NvbmRpdGlvbid8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicnVsZVwiPjwvYml6ZG9jLWFjZS1pbnB1dD5cclxuICAgICAgPG1hdC1oaW50PiB7eyAnUHJvZ3JhbW1hYmxlRXhwcmVzc2lvbid8dHJhbnNsYXRlIH19PC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZm9ybT5cclxuIl19
|
182
|
+
/**
|
183
|
+
```html
|
184
|
+
<bizdoc-designer-element (save)="save.emit($event)">
|
185
|
+
<bizdoc-designer-element-info>
|
186
|
+
</bizdoc-designer-element-info>
|
187
|
+
<bizdoc-designer-element-edit [form]="form">
|
188
|
+
<form autocomplete="off" [formGroup]="form">
|
189
|
+
</form>
|
190
|
+
</bizdoc-designer-element-edit>
|
191
|
+
</bizdoc-designer-element>
|
192
|
+
```
|
193
|
+
*/
|
194
|
+
export class DesignerItemComponent {
|
195
|
+
constructor(ref, _pane) {
|
196
|
+
this._pane = _pane;
|
197
|
+
this.save = new EventEmitter();
|
198
|
+
this.mode = ref.mode;
|
199
|
+
this.model = ref.model;
|
200
|
+
}
|
201
|
+
ngOnChanges() {
|
202
|
+
//if (this.state) this.phase = this.phases?.find(p => p.state === this.state);
|
203
|
+
//else this.phase = this.phases?.first;
|
204
|
+
}
|
205
|
+
ngAfterContentInit() {
|
206
|
+
this.mode !== 'widget' &&
|
207
|
+
this.phases?.forEach(p => p.onSave.subscribe(e => {
|
208
|
+
this.save.emit(e);
|
209
|
+
this._pane.close();
|
210
|
+
}));
|
211
|
+
}
|
212
|
+
}
|
213
|
+
DesignerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, deps: [{ token: DesignerRef }, { token: i15.PaneRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
214
|
+
DesignerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.3", type: DesignerItemComponent, selector: "bizdoc-designer-element", inputs: { state: "state" }, outputs: { save: "save" }, queries: [{ propertyName: "info", first: true, predicate: DesignerElementInfoComponent, descendants: true }, { propertyName: "phases", predicate: DesignerElementPhaseComponent }], usesOnChanges: true, ngImport: i0, template: `<ng-container *ngIf="mode === 'widget'; else edit">
|
215
|
+
<ng-content select="bizdoc-designer-element-info"></ng-content>
|
216
|
+
</ng-container>
|
217
|
+
<ng-template #edit>
|
218
|
+
<ng-content select="bizdoc-designer-element-edit"></ng-content>
|
219
|
+
</ng-template>
|
220
|
+
`, isInline: true, styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.3", ngImport: i0, type: DesignerItemComponent, decorators: [{
|
222
|
+
type: Component,
|
223
|
+
args: [{ selector: 'bizdoc-designer-element', template: `<ng-container *ngIf="mode === 'widget'; else edit">
|
224
|
+
<ng-content select="bizdoc-designer-element-info"></ng-content>
|
225
|
+
</ng-container>
|
226
|
+
<ng-template #edit>
|
227
|
+
<ng-content select="bizdoc-designer-element-edit"></ng-content>
|
228
|
+
</ng-template>
|
229
|
+
`, styles: [":host{flex:1}::ng-deep form{padding:8px}::ng-deep .flex{flex:1}p.message{margin:5px}\n"] }]
|
230
|
+
}], ctorParameters: function () { return [{ type: i4.DesignerRef, decorators: [{
|
231
|
+
type: Inject,
|
232
|
+
args: [DesignerRef]
|
233
|
+
}] }, { type: i15.PaneRef, decorators: [{
|
234
|
+
type: Optional
|
235
|
+
}] }]; }, propDecorators: { info: [{
|
236
|
+
type: ContentChild,
|
237
|
+
args: [DesignerElementInfoComponent]
|
238
|
+
}], phases: [{
|
239
|
+
type: ContentChildren,
|
240
|
+
args: [DesignerElementPhaseComponent]
|
241
|
+
}], state: [{
|
242
|
+
type: Input
|
243
|
+
}], save: [{
|
244
|
+
type: Output
|
245
|
+
}] } });
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29yZS9zcmMvbGliL2FkbWluL2NvbmZpZ3VyYXRpb24tZGVzaWduZXIvZGVzaWduZXItZWxlbWVudC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBNEIsWUFBWSxFQUFFLGVBQWUsRUFBYyxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBWSxLQUFLLEVBQXFCLFFBQVEsRUFBRSxNQUFNLEVBQTBCLFNBQVMsRUFBZ0IsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM1IsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFJckUsT0FBTyxFQUFFLFdBQVcsRUFBK0IsV0FBVyxFQUFjLFVBQVUsRUFBNEIsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFRMUksTUFBTSxPQUFPLDRCQUE0QjtJQUt2QyxZQUNVLElBQW9DLEVBQ2YsSUFBc0I7UUFEM0MsU0FBSSxHQUFKLElBQUksQ0FBZ0M7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFrQjtRQU5yRCxRQUFHLEdBQUcsVUFBVSxDQUFDO1FBUWYsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBcUIsQ0FBQztJQUMxQyxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLEtBQUssQ0FB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QUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQXFCLENBQUM7SUFDekMsQ0FBQztJQUNELFdBQVc7UUFDVCw4RUFBOEU7UUFDOUUsdUNBQXVDO0lBQ3pDLENBQUM7SUFDRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDOztrSEEzQksscUJBQXFCLGtCQVdqQixXQUFXO3NHQVhmLHFCQUFxQix3SkFDYiw0QkFBNEIsNERBQ3pCLDZCQUE2QixrREFYNUM7Ozs7OztDQU1IOzJGQUdPLHFCQUFxQjtrQkFiNUIsU0FBUzsrQkFDRSx5QkFBeUIsWUFHakM7Ozs7OztDQU1IOzswQkFjSSxNQUFNOzJCQUFDLFdBQVc7OzBCQUNsQixRQUFROzRDQVhpQyxJQUFJO3NCQUEvQyxZQUFZO3VCQUFDLDRCQUE0QjtnQkFDTSxNQUFNO3NCQUFyRCxlQUFlO3VCQUFDLDZCQUE2QjtnQkFDckMsS0FBSztzQkFBYixLQUFLO2dCQUNhLElBQUk7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NoaWxkcmVuLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBCaXpEb2NDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIgfSBmcm9tIFwiLi4vLi4vY29yZS9jb21wb25lbnQtZmFjdG9yeS1yZXNvbHZlclwiO1xyXG5pbXBvcnQgeyBMYXlvdXRDb21wb25lbnQgfSBmcm9tIFwiLi4vLi4vY29yZS9sYXlvdXQvbGF5b3V0LmNvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBSb2xlIH0gZnJvbSBcIi4uLy4uL2NvcmUvbW9kZWxzXCI7XHJcbmltcG9ydCB7IFBhbmVSZWYgfSBmcm9tIFwiLi4vLi4vY29yZS9zbG90cy9wYW5lLXJlZlwiO1xyXG5pbXBvcnQgeyBTeXN0ZW1TZXJ2aWNlIH0gZnJvbSBcIi4uL3N5c3RlbS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmLCBFbGVtZW50TW9kZWwsIERlc2lnbmVyTW9kZWwsIHByb2dyYW1OYW1lLCBEZXNpZ25Nb2RlLCBGQU1JTFlfU1ZHLCBEZXNpZ25lckVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiLi9kZXNpZ25lci5iYXNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2JpemRvYy1kZXNpZ25lci1lbGVtZW50LWluZm8nLCB0ZW1wbGF0ZTogYFxyXG4gIDxkaXYgW2lubmVySFRNTF09XCIoc3ZnW21vZGVsLmZhbWlseV18c2FuaXRpemVIdG1sKXx8bW9kZWwuZmFtaWx5XCIgKm5nSWY9XCJtb2RlbC5mYW1pbHlcIj48L2Rpdj5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG48bmctY29udGFpbmVyICNlY29udGFpbmVyPjwvbmctY29udGFpbmVyPlxyXG5gIH0pXHJcbmV4cG9ydCBjbGFzcyBEZXNpZ25lckVsZW1lbnRJbmZvQ29tcG9uZW50IHtcclxuICBzdmcgPSBGQU1JTFlfU1ZHO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8YW55PjtcclxuICBAVmlld0NoaWxkKCdlY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2Vjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYXJndW1lbnRzJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2FyZ3VtZW50czogVmlld0NvbnRhaW5lclJlZjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NmcjogQml6RG9jQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgQEluamVjdChEZXNpZ25lclJlZikgcHJpdmF0ZSBfcmVmOiBEZXNpZ25lclJlZjxhbnk+LFxyXG4gICkge1xyXG4gICAgdGhpcy5tb2RlbCA9IF9yZWYubW9kZWwgYXMgRWxlbWVudE1vZGVsO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGlmICh0aGlzLm1vZGVsLnRlbXBsYXRlKSB7XHJcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLl9jZnIucmVzb2x2ZSh0aGlzLm1vZGVsLnRlbXBsYXRlKTtcclxuXHJcbiAgICAgIGNvbnN0IGNSZWYgPSB0aGlzLl9lY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudDxEZXNpZ25lckVsZW1lbnRDb21wb25lbnQ8YW55Pj4oZmFjdG9yeSwgMCk7XHJcbiAgICAgIGNSZWYuaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLm1vZGUgPSAnd2lkZ2V0JztcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHRoaXMubW9kZWwuYXJndW1lbnRzPy5sZW5ndGgpIHtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQtZWRpdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICdkZXNpZ25lci1lbGVtZW50LmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVzaWduZXJFbGVtZW50UGhhc2VDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBJbnB1dCgpIHN0YXRlOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZm9ybSE6IEZvcm1Hcm91cDtcclxuICBAT3V0cHV0KCdzYXZlJykgcmVhZG9ubHkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIC8vQFZpZXdDaGlsZCgnW2JpemRvY0NvbnRlbnRdJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFRlbXBsYXRlUmVmIH0pIF90ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdlY29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2Vjb250YWluZXI6IFZpZXdDb250YWluZXJSZWY7XHJcbiAgQFZpZXdDaGlsZCgnYXJndW1lbnRzJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgX2FyZ3VtZW50czogVmlld0NvbnRhaW5lclJlZjtcclxuICBtb2RlbDogRWxlbWVudE1vZGVsPGFueT47XHJcbiAgcm9sZXM6IFJvbGVbXTtcclxuICB2YWxpZDogYm9vbGVhbjtcclxuICBkaXJ0eTogYm9vbGVhbjtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICBhY3RpdmU6IGJvb2xlYW47XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERlc2lnbmVyUmVmKSBwcml2YXRlIF9yZWY6IERlc2lnbmVyUmVmPGFueT4sXHJcbiAgICBwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICBwcml2YXRlIF9jZnI6IEJpekRvY0NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIHByaXZhdGUgX2NvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgcHJpdmF0ZSBfc2VydmljZTogU3lzdGVtU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+KSB7XHJcbiAgICB0aGlzLm1vZGVsID0gX3JlZi5tb2RlbCBhcyBFbGVtZW50TW9kZWw7XHJcbiAgICBpZiAoX3JlZi5tb2RlID09PSAnYWRkJykgdGhpcy5kaXJ0eSA9IHRydWU7XHJcbiAgICB0aGlzLmFjdGl2ZSA9IHRoaXMuX3JlZi5tb2RlICE9PSAnd2lkZ2V0JztcclxuICB9XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuYWN0aXZlKSByZXR1cm47XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fZmIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcclxuICAgICAgdGl0bGUgPSB0aGlzLl9mYi5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgdGhpcy5tb2RlbC5yZXNvdXJjZSAmJiB0aXRsZS5kaXNhYmxlKCk7XHJcbiAgICAhdGhpcy5tb2RlbC5kcmFmdCAmJiBuYW1lLmRpc2FibGUoKTtcclxuICAgIHRoaXMubW9kZWwuZHJhZnQgJiYgdGl0bGUudmFsdWVDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUoKHQ6IHN0cmluZykgPT5cclxuICAgICAgdCAmJiBuYW1lLnNldFZhbHVlKHByb2dyYW1OYW1lKHQpKVxyXG4gICAgKTtcclxuICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCduYW1lJywgbmFtZSk7XHJcbiAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgndGl0bGUnLCB0aXRsZSk7XHJcbiAgICBpZiAodGhpcy5tb2RlbC5wcml2aWxlZ2VzKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5hZGRDb250cm9sKCdwcml2aWxlZ2VzJyxcclxuICAgICAgICB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICAgICAgICBydWxlOiBudWxsLFxyXG4gICAgICAgICAgcm9sZXM6IHRoaXMuX2ZiLmNvbnRyb2w8c3RyaW5nW10+KG51bGwpLFxyXG4gICAgICAgIH0pLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIHRoaXMuX3NlcnZpY2Uucm9sZXMoKS5zdWJzY3JpYmUociA9PiB7XHJcbiAgICAgICAgdGhpcy5yb2xlcyA9IHIuY29uY2F0KCh0aGlzLl9yZWYuZGVzaWduZXIucm9sZXMgYXMgRWxlbWVudE1vZGVsW10pLlxyXG4gICAgICAgICAgZmlsdGVyKHIgPT4gIXIuZGlzYWJsZWQpLlxyXG4gICAgICAgICAgbWFwKHIgPT4gKHtcclxuICAgICAgICAgICAgbmFtZTogci5uYW1lLFxyXG4gICAgICAgICAgICB0aXRsZTogci50aXRsZSxcclxuICAgICAgICAgICAgZGF0YVR5cGU6IHIuZGF0YVR5cGVcclxuICAgICAgICAgIH0pKSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMubW9kZWwudGVtcGxhdGUpIHtcclxuICAgICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuX2Nmci5yZXNvbHZlKHRoaXMubW9kZWwudGVtcGxhdGUpO1xyXG5cclxuICAgICAgY29uc3QgY1JlZiA9IHRoaXMuX2Vjb250YWluZXIuY3JlYXRlQ29tcG9uZW50PERlc2lnbmVyRWxlbWVudENvbXBvbmVudDxhbnk+PihmYWN0b3J5LCAwLCB0aGlzLl9pbmplY3Rvcik7XHJcbiAgICAgIGNSZWYuaW5zdGFuY2UubW9kZWwgPSB0aGlzLm1vZGVsO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLm1vZGUgPSAnZWRpdCc7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRpbnN0YW5jZSA9IGNSZWYuaW5zdGFuY2U7XHJcbiAgICAgIGVsZW1lbnRpbnN0YW5jZS5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbC5vcHRpb25zKTtcclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2woJ29wdGlvbnMnLCBlbGVtZW50aW5zdGFuY2UuZm9ybSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodGhpcy5tb2RlbC5hcmd1bWVudHM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5fY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KExheW91dENvbXBvbmVudCk7XHJcbiAgICAgIGNvbnN0IGNSZWYgPSB0aGlzLl9hcmd1bWVudHMuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLmZpZWxkcyA9IHRoaXMubW9kZWwuYXJndW1lbnRzO1xyXG4gICAgICBjUmVmLmluc3RhbmNlLmZvcm11bGF0ZSgpO1xyXG4gICAgICB0aGlzLmZvcm0uYWRkQ29udHJvbCgnb3B0aW9ucycsIGNSZWYuaW5zdGFuY2UuZm9ybSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHRoaXMubW9kZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZm9ybS5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kpKS5zdWJzY3JpYmUocyA9PiB7XHJcbiAgICAgIHRoaXMudmFsaWQgPSBzID09PSAnVkFMSUQnO1xyXG4gICAgICB0aGlzLmRpcnR5ID0gdHJ1ZTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy52YWxpZCA9IHRoaXMuZm9ybS52YWxpZDtcclxuICB9XHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk/LmZvY3VzKCk7XHJcbiAgfVxyXG4gIHVubG9jayhldnQ6IEV2ZW50KSB7XHJcbiAgICBpZiAoKGV2dC5zcmNFbGVtZW50IGFzIEhUTUxFbGVtZW50KS50YWdOYW1lICE9PSAnQScpIHJldHVybjtcclxuICAgIHRoaXMubW9kZWwucmVzb3VyY2UgPSBudWxsO1xyXG4gICAgdGhpcy5mb3JtLmdldCgndGl0bGUnKS5lbmFibGUoKTtcclxuICAgIHRoaXMuX3JlZi5fbG9jayQubmV4dChmYWxzZSk7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHRoaXMuZm9ybS52YWx1ZSk7XHJcbiAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMubW9kZWwpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDdHJsLXMgc2F2ZVxyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jdHJsS2V5ICYmIChldmVudC53aGljaCA9PT0gODMgfHwgZXZlbnQud2hpY2ggPT09IDExNSkpIHtcclxuICAgICAgdGhpcy52YWxpZCAmJiB0aGlzLnNhdmUoKTtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5uZXh0KCk7XHJcbiAgICB0aGlzLl9kZXN0cm95Py5jb21wbGV0ZSgpO1xyXG4gIH1cclxufVxyXG5cclxuLyoqXHJcbiBgYGBodG1sXHJcbjxiaXpkb2MtZGVzaWduZXItZWxlbWVudCAoc2F2ZSk9XCJzYXZlLmVtaXQoJGV2ZW50KVwiPlxyXG4gIDxiaXpkb2MtZGVzaWduZXItZWxlbWVudC1pbmZvPlxyXG4gIDwvYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQtaW5mbz5cclxuICA8Yml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQtZWRpdCBbZm9ybV09XCJmb3JtXCI+XHJcbiAgICA8Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cclxuICAgIDwvZm9ybT5cclxuICA8L2JpemRvYy1kZXNpZ25lci1lbGVtZW50LWVkaXQ+XHJcbjwvYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQ+XHJcbiBgYGBcclxuKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdiaXpkb2MtZGVzaWduZXItZWxlbWVudCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2Rlc2lnbmVyLWVsZW1lbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTpcclxuICAgIGA8bmctY29udGFpbmVyICpuZ0lmPVwibW9kZSA9PT0gJ3dpZGdldCc7IGVsc2UgZWRpdFwiPlxyXG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImJpemRvYy1kZXNpZ25lci1lbGVtZW50LWluZm9cIj48L25nLWNvbnRlbnQ+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGUgI2VkaXQ+XHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYml6ZG9jLWRlc2lnbmVyLWVsZW1lbnQtZWRpdFwiPjwvbmctY29udGVudD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuYFxyXG59KVxyXG5leHBvcnRcclxuICBjbGFzcyBEZXNpZ25lckl0ZW1Db21wb25lbnQge1xyXG4gIEBDb250ZW50Q2hpbGQoRGVzaWduZXJFbGVtZW50SW5mb0NvbXBvbmVudCkgaW5mbzogRGVzaWduZXJFbGVtZW50SW5mb0NvbXBvbmVudDtcclxuICBAQ29udGVudENoaWxkcmVuKERlc2lnbmVyRWxlbWVudFBoYXNlQ29tcG9uZW50KSBwaGFzZXM6IFF1ZXJ5TGlzdDxEZXNpZ25lckVsZW1lbnRQaGFzZUNvbXBvbmVudD47XHJcbiAgQElucHV0KCkgc3RhdGU6IHN0cmluZztcclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBtb2RlOiBEZXNpZ25Nb2RlO1xyXG4gIHZhbGlkOiBib29sZWFuO1xyXG4gIGRpcnR5OiBib29sZWFuO1xyXG4gIG1vZGVsOiBFbGVtZW50TW9kZWw8YW55PjtcclxuICBwaGFzZTogRGVzaWduZXJFbGVtZW50UGhhc2VDb21wb25lbnQ7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KERlc2lnbmVyUmVmKSByZWY6IERlc2lnbmVyUmVmPGFueT4sXHJcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9wYW5lOiBQYW5lUmVmLFxyXG4gICkge1xyXG4gICAgdGhpcy5tb2RlID0gcmVmLm1vZGU7XHJcbiAgICB0aGlzLm1vZGVsID0gcmVmLm1vZGVsIGFzIEVsZW1lbnRNb2RlbDtcclxuICB9XHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICAvL2lmICh0aGlzLnN0YXRlKSB0aGlzLnBoYXNlID0gdGhpcy5waGFzZXM/LmZpbmQocCA9PiBwLnN0YXRlID09PSB0aGlzLnN0YXRlKTtcclxuICAgIC8vZWxzZSB0aGlzLnBoYXNlID0gdGhpcy5waGFzZXM/LmZpcnN0O1xyXG4gIH1cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLm1vZGUgIT09ICd3aWRnZXQnICYmXHJcbiAgICAgIHRoaXMucGhhc2VzPy5mb3JFYWNoKHAgPT4gcC5vblNhdmUuc3Vic2NyaWJlKGUgPT4ge1xyXG4gICAgICAgIHRoaXMuc2F2ZS5lbWl0KGUpO1xyXG4gICAgICAgIHRoaXMuX3BhbmUuY2xvc2UoKTtcclxuICAgICAgfSkpXHJcbiAgfVxyXG59XHJcbiIsIjxtYXQtdG9vbGJhcj5cclxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cIiF2YWxpZCB8fCAhZGlydHlcIj48bWF0LWljb24+c2F2ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxwIGNsYXNzPVwiaGVscFwiPnt7bW9kZWwuaGVscH19PC9wPlxyXG48Zm9ybSBhdXRvY29tcGxldGU9XCJvZmZcIiBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImNvbHVtblwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7J1RpdGxlJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHJlcXVpcmVkICN0aXRsZSAvPlxyXG4gICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAmbmJzcDtcclxuICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3snTmFtZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIHJlcXVpcmVkIC8+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8cCAqbmdJZj1cIm1vZGVsLnJlc291cmNlXCIgY2xhc3M9XCJtZXNzYWdlXCIgKGNsaWNrKT1cInVubG9jaygkZXZlbnQpXCIgW2lubmVySFRNTF09XCInVW5sb2NrJ3x0cmFuc2xhdGVcIj48L3A+XHJcblxyXG4gICAgPCEtLTxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJfdGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj4tLT5cclxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPG5nLWNvbnRhaW5lciAjZWNvbnRhaW5lcj48L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgPGRpdiAjYXJndW1lbnRzPjwvZGl2PlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybS5jb250cm9scy5wcml2aWxlZ2VzXCIgZm9ybUdyb3VwTmFtZT1cInByaXZpbGVnZXNcIj5cclxuICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7J1ByaXZpbGVnZXMnfHRyYW5zbGF0ZX19PC9oMj5cclxuICAgIDxtYXQtc2VsZWN0aW9uLWxpc3QgZm9ybUNvbnRyb2xOYW1lPVwicm9sZXNcIiAqbmdJZj1cInJvbGVzXCI+XHJcbiAgICAgIDxtYXQtbGlzdC1vcHRpb24gKm5nRm9yPVwibGV0IHIgb2Ygcm9sZXNcIiBbdmFsdWVdPVwici5uYW1lXCI+e3tyLnRpdGxlfX08L21hdC1saXN0LW9wdGlvbj5cclxuICAgIDwvbWF0LXNlbGVjdGlvbi1saXN0PlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8Yml6ZG9jLWFjZS1pbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ0NvbmRpdGlvbid8dHJhbnNsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwicnVsZVwiPjwvYml6ZG9jLWFjZS1pbnB1dD5cclxuICAgICAgPG1hdC1oaW50PiB7eyAnUHJvZ3JhbW1hYmxlRXhwcmVzc2lvbid8dHJhbnNsYXRlIH19PC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvZm9ybT5cclxuIl19
|