@myrmidon/cadmus-refs-asserted-ids 5.1.7 → 6.0.0
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/fesm2022/myrmidon-cadmus-refs-asserted-ids.mjs +38 -38
- package/fesm2022/myrmidon-cadmus-refs-asserted-ids.mjs.map +1 -1
- package/package.json +5 -7
- package/esm2022/lib/asserted-composite-id/asserted-composite-id.component.mjs +0 -195
- package/esm2022/lib/asserted-composite-ids/asserted-composite-ids.component.mjs +0 -173
- package/esm2022/lib/asserted-id/asserted-id.component.mjs +0 -151
- package/esm2022/lib/asserted-ids/asserted-ids.component.mjs +0 -161
- package/esm2022/lib/pin-target-lookup/pin-target-lookup.component.mjs +0 -480
- package/esm2022/lib/scoped-pin-lookup/scoped-pin-lookup.component.mjs +0 -144
- package/esm2022/lib/services/item-ref-lookup.service.mjs +0 -28
- package/esm2022/lib/services/pin-ref-lookup.service.mjs +0 -84
- package/esm2022/myrmidon-cadmus-refs-asserted-ids.mjs +0 -5
- package/esm2022/public-api.mjs +0 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myrmidon/cadmus-refs-asserted-ids",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "Cadmus - asserted IDs components.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Cadmus",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
"name": "Daniele Fusi"
|
|
16
16
|
},
|
|
17
17
|
"peerDependencies": {
|
|
18
|
-
"@angular/common": "^
|
|
19
|
-
"@angular/core": "^
|
|
20
|
-
"@myrmidon/ng-mat-tools": "^
|
|
21
|
-
"@myrmidon/cadmus-refs-assertion": "^5.1.
|
|
18
|
+
"@angular/common": "^19.0.0",
|
|
19
|
+
"@angular/core": "^19.0.0",
|
|
20
|
+
"@myrmidon/ng-mat-tools": "^4.0.0",
|
|
21
|
+
"@myrmidon/cadmus-refs-assertion": "^5.1.1"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"tslib": "^2.3.0"
|
|
@@ -32,8 +32,6 @@
|
|
|
32
32
|
},
|
|
33
33
|
".": {
|
|
34
34
|
"types": "./index.d.ts",
|
|
35
|
-
"esm2022": "./esm2022/myrmidon-cadmus-refs-asserted-ids.mjs",
|
|
36
|
-
"esm": "./esm2022/myrmidon-cadmus-refs-asserted-ids.mjs",
|
|
37
35
|
"default": "./fesm2022/myrmidon-cadmus-refs-asserted-ids.mjs"
|
|
38
36
|
}
|
|
39
37
|
}
|
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Inject, Input, Output, } from '@angular/core';
|
|
2
|
-
import { FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
3
|
-
import { debounceTime } from 'rxjs/operators';
|
|
4
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
|
-
import { MatInputModule } from '@angular/material/input';
|
|
6
|
-
import { MatSelectModule } from '@angular/material/select';
|
|
7
|
-
import { MatExpansionModule } from '@angular/material/expansion';
|
|
8
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
9
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
-
import { AssertionComponent } from '@myrmidon/cadmus-refs-assertion';
|
|
11
|
-
import { PinTargetLookupComponent, } from '../pin-target-lookup/pin-target-lookup.component';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "../services/pin-ref-lookup.service";
|
|
15
|
-
import * as i3 from "@myrmidon/ng-tools";
|
|
16
|
-
import * as i4 from "@angular/material/button";
|
|
17
|
-
import * as i5 from "@angular/material/expansion";
|
|
18
|
-
import * as i6 from "@angular/material/form-field";
|
|
19
|
-
import * as i7 from "@angular/material/icon";
|
|
20
|
-
import * as i8 from "@angular/material/input";
|
|
21
|
-
import * as i9 from "@angular/material/select";
|
|
22
|
-
import * as i10 from "@angular/material/core";
|
|
23
|
-
/**
|
|
24
|
-
* The key to be used to retrieve the external lookup configs from the
|
|
25
|
-
* settings storage. This is equal to the selector of
|
|
26
|
-
* AssertedCompositeIdComponent plus ".configs".
|
|
27
|
-
*/
|
|
28
|
-
export const ASSERTED_COMPOSITE_ID_CONFIGS_KEY = 'cadmus-refs-asserted-composite-id.configs';
|
|
29
|
-
/**
|
|
30
|
-
* An asserted composite ID editor. This allows the user to edit an asserted
|
|
31
|
-
* composite ID, which can be an external ID or a lookup ID.
|
|
32
|
-
*/
|
|
33
|
-
export class AssertedCompositeIdComponent {
|
|
34
|
-
/**
|
|
35
|
-
* The ID being edited.
|
|
36
|
-
*/
|
|
37
|
-
get id() {
|
|
38
|
-
return this._id;
|
|
39
|
-
}
|
|
40
|
-
set id(value) {
|
|
41
|
-
if (this._id !== value) {
|
|
42
|
-
this._id = value || undefined;
|
|
43
|
-
this.updateForm(this._id);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
constructor(formBuilder, lookupService, lookupDefs, settings) {
|
|
47
|
-
this.lookupService = lookupService;
|
|
48
|
-
this.lookupDefs = lookupDefs;
|
|
49
|
-
this.target = formBuilder.control(null, Validators.required);
|
|
50
|
-
this.scope = formBuilder.control(null, Validators.maxLength(500));
|
|
51
|
-
this.tag = formBuilder.control(null, Validators.maxLength(50));
|
|
52
|
-
this.assertion = formBuilder.control(null);
|
|
53
|
-
this.form = formBuilder.group({
|
|
54
|
-
target: this.target,
|
|
55
|
-
scope: this.scope,
|
|
56
|
-
tag: this.tag,
|
|
57
|
-
assertion: this.assertion,
|
|
58
|
-
});
|
|
59
|
-
this.targetExpanded = false;
|
|
60
|
-
this.extLookupConfigs =
|
|
61
|
-
settings.retrieve(ASSERTED_COMPOSITE_ID_CONFIGS_KEY) ||
|
|
62
|
-
[];
|
|
63
|
-
// events
|
|
64
|
-
this.idChange = new EventEmitter();
|
|
65
|
-
this.editorClose = new EventEmitter();
|
|
66
|
-
this.extMoreRequest = new EventEmitter();
|
|
67
|
-
}
|
|
68
|
-
ngOnInit() {
|
|
69
|
-
this.form.valueChanges.pipe(debounceTime(300)).subscribe((_) => {
|
|
70
|
-
if (!this._updatingForm) {
|
|
71
|
-
this.emitIdChange();
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
onAssertionChange(assertion) {
|
|
76
|
-
this.assertion.setValue(assertion || null);
|
|
77
|
-
}
|
|
78
|
-
onTargetChange(target) {
|
|
79
|
-
this.target.setValue(target);
|
|
80
|
-
this.target.markAsDirty();
|
|
81
|
-
this.target.updateValueAndValidity();
|
|
82
|
-
this.targetExpanded = false;
|
|
83
|
-
}
|
|
84
|
-
updateForm(id) {
|
|
85
|
-
this._updatingForm = true;
|
|
86
|
-
if (!id) {
|
|
87
|
-
this.form.reset();
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
this.target.setValue(id.target);
|
|
91
|
-
this.scope.setValue(id.scope || null);
|
|
92
|
-
this.tag.setValue(id.tag || null);
|
|
93
|
-
this.assertion.setValue(id.assertion || null);
|
|
94
|
-
this.form.markAsPristine();
|
|
95
|
-
}
|
|
96
|
-
this._updatingForm = false;
|
|
97
|
-
}
|
|
98
|
-
getId() {
|
|
99
|
-
const external = !this.target.value?.name;
|
|
100
|
-
const target = this.target.value;
|
|
101
|
-
return {
|
|
102
|
-
target: external
|
|
103
|
-
? {
|
|
104
|
-
gid: target?.gid || '',
|
|
105
|
-
label: target?.label || target?.gid || '',
|
|
106
|
-
}
|
|
107
|
-
: target,
|
|
108
|
-
scope: this.scope.value?.trim() || '',
|
|
109
|
-
tag: this.tag.value?.trim(),
|
|
110
|
-
assertion: this.assertion.value || undefined,
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
emitIdChange() {
|
|
114
|
-
if (!this.hasSubmit) {
|
|
115
|
-
this._id = this.getId();
|
|
116
|
-
this.idChange.emit(this._id);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
onEditorClose() {
|
|
120
|
-
this.targetExpanded = false;
|
|
121
|
-
}
|
|
122
|
-
onExtMoreRequest(event) {
|
|
123
|
-
this.extMoreRequest.emit(event);
|
|
124
|
-
}
|
|
125
|
-
onExtLookupConfigChange(config) {
|
|
126
|
-
if (!this.scope.value ||
|
|
127
|
-
this.extLookupConfigs.some((c) => c.name === this.scope.value)) {
|
|
128
|
-
this.scope.setValue(config.name || null);
|
|
129
|
-
this.scope.markAsDirty();
|
|
130
|
-
this.scope.updateValueAndValidity();
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
cancel() {
|
|
134
|
-
this.editorClose.emit();
|
|
135
|
-
}
|
|
136
|
-
save() {
|
|
137
|
-
if (this.form.valid) {
|
|
138
|
-
this._id = this.getId();
|
|
139
|
-
this.idChange.emit(this._id);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AssertedCompositeIdComponent, deps: [{ token: i1.FormBuilder }, { token: i2.PinRefLookupService }, { token: 'indexLookupDefinitions' }, { token: i3.RamStorageService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
143
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: AssertedCompositeIdComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-id", inputs: { idScopeEntries: "idScopeEntries", idTagEntries: "idTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", id: "id", internalDefault: "internalDefault", hasSubmit: "hasSubmit", pinByTypeMode: "pinByTypeMode", canSwitchMode: "canSwitchMode", canEditTarget: "canEditTarget", lookupDefinitions: "lookupDefinitions", defaultPartTypeKey: "defaultPartTypeKey" }, outputs: { idChange: "idChange", editorClose: "editorClose", extMoreRequest: "extMoreRequest" }, ngImport: i0, template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries; track e) {\r\n <mat-option [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @if (!idTagEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error\r\n >tag too long</mat-error\r\n >\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries; track e) {\r\n <mat-option [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @if (!idScopeEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error\r\n >scope too long</mat-error\r\n >\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [lookupDefinitions]=\"lookupDefinitions\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\r\n [target]=\"target.value\"\r\n [internalDefault]=\"internalDefault\"\r\n [extLookupConfigs]=\"extLookupConfigs\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n ></cadmus-pin-target-lookup>\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- assertion -->\r\n <br />\r\n <div class=\"boxed\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [assertion]=\"assertion.value\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n >\r\n </cadmus-refs-assertion>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit) {\r\n <div>\r\n <button\r\n mat-icon-button\r\n color=\"warn\"\r\n type=\"button\"\r\n (click)=\"cancel()\"\r\n [disabled]=\"!this.target.value?.gid || !this.target.value?.label\"\r\n >\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n color=\"primary\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid silver;border-radius:6px;padding:6px}.short-text{width:8em}.pin-info{font-size:90%;color:silver}fieldset{border:1px solid silver;border-radius:6px;padding:6px}.info{border:1px solid silver;border-radius:6px;background-color:silver;color:#fff;padding:4px}.info .label{background-color:#fff;color:silver;margin:0 6px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i5.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i5.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatLabel, selector: "mat-label" }, { kind: "directive", type: i6.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i8.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: "ngmodule", type: MatSelectModule }, { kind: "component", type: i9.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i10.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: AssertionComponent, selector: "cadmus-refs-assertion", inputs: ["assTagEntries", "refTypeEntries", "refTagEntries", "assertion"], outputs: ["assertionChange"] }, { kind: "component", type: PinTargetLookupComponent, selector: "cadmus-pin-target-lookup", inputs: ["pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "extLookupConfigs", "internalDefault", "target", "defaultPartTypeKey"], outputs: ["editorClose", "targetChange", "extMoreRequest", "extLookupConfigChange"] }] }); }
|
|
144
|
-
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AssertedCompositeIdComponent, decorators: [{
|
|
146
|
-
type: Component,
|
|
147
|
-
args: [{ standalone: true, selector: 'cadmus-refs-asserted-composite-id', imports: [
|
|
148
|
-
FormsModule,
|
|
149
|
-
ReactiveFormsModule,
|
|
150
|
-
MatButtonModule,
|
|
151
|
-
MatExpansionModule,
|
|
152
|
-
MatFormFieldModule,
|
|
153
|
-
MatIconModule,
|
|
154
|
-
MatInputModule,
|
|
155
|
-
MatSelectModule,
|
|
156
|
-
AssertionComponent,
|
|
157
|
-
PinTargetLookupComponent,
|
|
158
|
-
], template: "<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries; track e) {\r\n <mat-option [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @if (!idTagEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error\r\n >tag too long</mat-error\r\n >\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries; track e) {\r\n <mat-option [value]=\"e.id\">{{\r\n e.value\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @if (!idScopeEntries?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if (\r\n $any(scope.errors)?.maxLength && (scope.dirty || scope.touched)\r\n ) {\r\n <mat-error\r\n >scope too long</mat-error\r\n >\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n }\r\n @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [lookupDefinitions]=\"lookupDefinitions\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\r\n [target]=\"target.value\"\r\n [internalDefault]=\"internalDefault\"\r\n [extLookupConfigs]=\"extLookupConfigs\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n ></cadmus-pin-target-lookup>\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- assertion -->\r\n <br />\r\n <div class=\"boxed\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [assertion]=\"assertion.value\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n >\r\n </cadmus-refs-assertion>\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit) {\r\n <div>\r\n <button\r\n mat-icon-button\r\n color=\"warn\"\r\n type=\"button\"\r\n (click)=\"cancel()\"\r\n [disabled]=\"!this.target.value?.gid || !this.target.value?.label\"\r\n >\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n color=\"primary\"\r\n type=\"submit\"\r\n [disabled]=\"form.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n </form>\r\n", styles: [".form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}.boxed{border:1px solid silver;border-radius:6px;padding:6px}.short-text{width:8em}.pin-info{font-size:90%;color:silver}fieldset{border:1px solid silver;border-radius:6px;padding:6px}.info{border:1px solid silver;border-radius:6px;background-color:silver;color:#fff;padding:4px}.info .label{background-color:#fff;color:silver;margin:0 6px}@media only screen and (max-width: 959px){div#container{grid-template-rows:1fr auto;grid-template-columns:1fr;grid-template-areas:\"editor\" \"lookup\"}}\n"] }]
|
|
159
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.PinRefLookupService }, { type: undefined, decorators: [{
|
|
160
|
-
type: Inject,
|
|
161
|
-
args: ['indexLookupDefinitions']
|
|
162
|
-
}] }, { type: i3.RamStorageService }], propDecorators: { idScopeEntries: [{
|
|
163
|
-
type: Input
|
|
164
|
-
}], idTagEntries: [{
|
|
165
|
-
type: Input
|
|
166
|
-
}], assTagEntries: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], refTypeEntries: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], refTagEntries: [{
|
|
171
|
-
type: Input
|
|
172
|
-
}], id: [{
|
|
173
|
-
type: Input
|
|
174
|
-
}], internalDefault: [{
|
|
175
|
-
type: Input
|
|
176
|
-
}], hasSubmit: [{
|
|
177
|
-
type: Input
|
|
178
|
-
}], pinByTypeMode: [{
|
|
179
|
-
type: Input
|
|
180
|
-
}], canSwitchMode: [{
|
|
181
|
-
type: Input
|
|
182
|
-
}], canEditTarget: [{
|
|
183
|
-
type: Input
|
|
184
|
-
}], lookupDefinitions: [{
|
|
185
|
-
type: Input
|
|
186
|
-
}], defaultPartTypeKey: [{
|
|
187
|
-
type: Input
|
|
188
|
-
}], idChange: [{
|
|
189
|
-
type: Output
|
|
190
|
-
}], editorClose: [{
|
|
191
|
-
type: Output
|
|
192
|
-
}], extMoreRequest: [{
|
|
193
|
-
type: Output
|
|
194
|
-
}] } });
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWlkcy9zcmMvbGliL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsV0FBVyxFQUNYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSTNELE9BQU8sRUFBYSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBT2hGLE9BQU8sRUFFTCx3QkFBd0IsR0FDekIsTUFBTSxrREFB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QixNQUFNO2dCQUlBLGNBQWM7c0JBRHBCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgRm9ybUJ1aWxkZXIsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUdyb3VwLFxyXG4gIEZvcm1zTW9kdWxlLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0U2VsZWN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5cclxuaW1wb3J0IHsgUmFtU3RvcmFnZVNlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQgeyBJbmRleExvb2t1cERlZmluaXRpb25zLCBUaGVzYXVydXNFbnRyeSB9IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtY29yZSc7XHJcbmltcG9ydCB7IEFzc2VydGlvbiwgQXNzZXJ0aW9uQ29tcG9uZW50IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGlvbic7XHJcbmltcG9ydCB7XHJcbiAgUmVmTG9va3VwQ29uZmlnLFxyXG4gIFJlZkxvb2t1cFNldEV2ZW50LFxyXG59IGZyb20gJ0BteXJtaWRvbi9jYWRtdXMtcmVmcy1sb29rdXAnO1xyXG5cclxuaW1wb3J0IHsgUGluUmVmTG9va3VwU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3Bpbi1yZWYtbG9va3VwLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIFBpblRhcmdldCxcclxuICBQaW5UYXJnZXRMb29rdXBDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vcGluLXRhcmdldC1sb29rdXAvcGluLXRhcmdldC1sb29rdXAuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBBbiBhc3NlcnRlZCBjb21wb3NpdGUgSUQuIFRoaXMgY2FuIGJlIGFuIGV4dGVybmFsIElELCBoYXZpbmcgb25seSB0aGUgSUQgdmFsdWVcclxuICogYXMgaXRzIHRhcmdldC5naWQgcHJvcGVydHk7IG9yIGEgbG9va3VwIElELCB3aXRoIGEgcGluLWJhc2VkIHRhcmdldC5cclxuICogSW4gYm90aCBjYXNlcywgd2UgY2FuIGFkZCBhIHRhZywgYSBzY29wZSwgYW5kIGFuIGFzc2VydGlvbi5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXNzZXJ0ZWRDb21wb3NpdGVJZCB7XHJcbiAgdGFyZ2V0OiBQaW5UYXJnZXQ7XHJcbiAgdGFnPzogc3RyaW5nO1xyXG4gIHNjb3BlPzogc3RyaW5nO1xyXG4gIGFzc2VydGlvbj86IEFzc2VydGlvbjtcclxufVxyXG5cclxuLyoqXHJcbiAqIFRoZSBrZXkgdG8gYmUgdXNlZCB0byByZXRyaWV2ZSB0aGUgZXh0ZXJuYWwgbG9va3VwIGNvbmZpZ3MgZnJvbSB0aGVcclxuICogc2V0dGluZ3Mgc3RvcmFnZS4gVGhpcyBpcyBlcXVhbCB0byB0aGUgc2VsZWN0b3Igb2ZcclxuICogQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudCBwbHVzIFwiLmNvbmZpZ3NcIi5cclxuICovXHJcbmV4cG9ydCBjb25zdCBBU1NFUlRFRF9DT01QT1NJVEVfSURfQ09ORklHU19LRVkgPVxyXG4gICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29uZmlncyc7XHJcblxyXG4vKipcclxuICogQW4gYXNzZXJ0ZWQgY29tcG9zaXRlIElEIGVkaXRvci4gVGhpcyBhbGxvd3MgdGhlIHVzZXIgdG8gZWRpdCBhbiBhc3NlcnRlZFxyXG4gKiBjb21wb3NpdGUgSUQsIHdoaWNoIGNhbiBiZSBhbiBleHRlcm5hbCBJRCBvciBhIGxvb2t1cCBJRC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgc2VsZWN0b3I6ICdjYWRtdXMtcmVmcy1hc3NlcnRlZC1jb21wb3NpdGUtaWQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9hc3NlcnRlZC1jb21wb3NpdGUtaWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQuY3NzJ10sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxyXG4gICAgQXNzZXJ0aW9uQ29tcG9uZW50LFxyXG4gICAgUGluVGFyZ2V0TG9va3VwQ29tcG9uZW50LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc3NlcnRlZENvbXBvc2l0ZUlkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIF91cGRhdGluZ0Zvcm06IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgcHJpdmF0ZSBfaWQ6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQ7XHJcblxyXG4gIHB1YmxpYyBleHRMb29rdXBDb25maWdzOiBSZWZMb29rdXBDb25maWdbXTtcclxuICBwdWJsaWMgdGFyZ2V0RXhwYW5kZWQ6IGJvb2xlYW47XHJcbiAgLy8gZm9ybVxyXG4gIHB1YmxpYyB0YXJnZXQ6IEZvcm1Db250cm9sPFBpblRhcmdldCB8IG51bGw+O1xyXG4gIHB1YmxpYyBzY29wZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIHRhZzogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGFzc2VydGlvbjogRm9ybUNvbnRyb2w8QXNzZXJ0aW9uIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgLy8gYXNzZXJ0ZWQtaWQtc2NvcGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRTY29wZUVudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRlZC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gYXNzZXJ0aW9uLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhc3NUYWdFbnRyaWVzPzogVGhlc2F1cnVzRW50cnlbXTtcclxuXHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByZWZUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgSUQgYmVpbmcgZWRpdGVkLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBpZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5faWQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgaWQodmFsdWU6IEFzc2VydGVkQ29tcG9zaXRlSWQgfCB1bmRlZmluZWQgfCBudWxsKSB7XHJcbiAgICBpZiAodGhpcy5faWQgIT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMuX2lkID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5faWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB3aGVuIGEgbmV3IElEIGlzIHNldCBpdCBzaG91bGQgYmUgaW50ZXJuYWwgcmF0aGVyIHRoYW5cclxuICAgKiBleHRlcm5hbCBieSBkZWZhdWx0LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGludGVybmFsRGVmYXVsdDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLyoqXHJcbiAgICogVHJ1ZSBpZiB0aGUgVUkgaGFzIGEgc3VibWl0IGJ1dHRvbi5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoYXNTdWJtaXQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgaW50ZXJuYWwgVUkgcHJlc2VsZWN0ZWQgbW9kZSBzaG91bGQgYmUgYnkgdHlwZSByYXRoZXIgdGhhblxyXG4gICAqIGJ5IGl0ZW0uIFVzZXIgY2FuIGNoYW5nZSBtb2RlIHVubGVzcyBtb2RlU3dpdGNoaW5nIGlzIGZhbHNlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBpbkJ5VHlwZU1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gc3dpdGNoIGJldHdlZW4gYnktdHlwZSBhbmQgYnktaXRlbSBtb2RlIGluXHJcbiAgICogdGhlIGludGVybmFsIFVJLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhblN3aXRjaE1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgdGFyZ2V0J3MgZ2lkL2xhYmVsIGZvciBpbnRlcm5hbCB0YXJnZXRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkVkaXRUYXJnZXQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBsb29rdXAgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCBmb3IgdGhlIGJ5LXR5cGUgbG9va3VwIGluIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgZ290IHZpYSBpbmplY3Rpb25cclxuICAgKiB3aGVuIGF2YWlsYWJsZTsgaWYgdGhlIGluamVjdGVkIGRlZmluaXRpb25zIGFyZSBlbXB0eSwgdGhlXHJcbiAgICogbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgYnVpbHQgZnJvbSB0aGUgbW9kZWwtdHlwZXMgdGhlc2F1cnVzO1xyXG4gICAqIGlmIHRoaXMgaXMgbm90IGF2YWlsYWJsZSBlaXRoZXIsIHRoZSBieS10eXBlIGxvb2t1cCB3aWxsIGJlXHJcbiAgICogZGlzYWJsZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9va3VwRGVmaW5pdGlvbnM/OiBJbmRleExvb2t1cERlZmluaXRpb25zO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZGVmYXVsdCBwYXJ0IHR5cGUga2V5IHRvIGJlIHVzZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVmYXVsdFBhcnRUeXBlS2V5Pzogc3RyaW5nIHwgbnVsbDtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgSUQgY2hhbmdlcy5cclxuICAgKi9cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgaWRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxBc3NlcnRlZENvbXBvc2l0ZUlkPjtcclxuXHJcbiAgLyoqXHJcbiAgICogRW1pdHRlZCB3aGVuZXZlciB0aGUgdXNlciByZXF1ZXN0cyB0byBjbG9zZSB0aGUgZWRpdG9yLlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBleHRNb3JlUmVxdWVzdDogRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXHJcbiAgICBwdWJsaWMgbG9va3VwU2VydmljZTogUGluUmVmTG9va3VwU2VydmljZSxcclxuICAgIEBJbmplY3QoJ2luZGV4TG9va3VwRGVmaW5pdGlvbnMnKVxyXG4gICAgcHVibGljIGxvb2t1cERlZnM6IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsXHJcbiAgICBzZXR0aW5nczogUmFtU3RvcmFnZVNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMudGFyZ2V0ID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIHRoaXMuc2NvcGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwMCkpO1xyXG4gICAgdGhpcy50YWcgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSk7XHJcbiAgICB0aGlzLmFzc2VydGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIHRhcmdldDogdGhpcy50YXJnZXQsXHJcbiAgICAgIHNjb3BlOiB0aGlzLnNjb3BlLFxyXG4gICAgICB0YWc6IHRoaXMudGFnLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnRhcmdldEV4cGFuZGVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmV4dExvb2t1cENvbmZpZ3MgPVxyXG4gICAgICBzZXR0aW5ncy5yZXRyaWV2ZTxSZWZMb29rdXBDb25maWdbXT4oQVNTRVJURURfQ09NUE9TSVRFX0lEX0NPTkZJR1NfS0VZKSB8fFxyXG4gICAgICBbXTtcclxuICAgIC8vIGV2ZW50c1xyXG4gICAgdGhpcy5pZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8QXNzZXJ0ZWRDb21wb3NpdGVJZD4oKTtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIHRoaXMuZXh0TW9yZVJlcXVlc3QgPSBuZXcgRXZlbnRFbWl0dGVyPFJlZkxvb2t1cFNldEV2ZW50PigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm0udmFsdWVDaGFuZ2VzLnBpcGUoZGVib3VuY2VUaW1lKDMwMCkpLnN1YnNjcmliZSgoXykgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuZW1pdElkQ2hhbmdlKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQXNzZXJ0aW9uQ2hhbmdlKGFzc2VydGlvbjogQXNzZXJ0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmFzc2VydGlvbi5zZXRWYWx1ZShhc3NlcnRpb24gfHwgbnVsbCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UYXJnZXRDaGFuZ2UodGFyZ2V0OiBQaW5UYXJnZXQpOiB2b2lkIHtcclxuICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKHRhcmdldCk7XHJcbiAgICB0aGlzLnRhcmdldC5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy50YXJnZXQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGRhdGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgaWYgKCFpZCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudGFyZ2V0LnNldFZhbHVlKGlkLnRhcmdldCk7XHJcbiAgICAgIHRoaXMuc2NvcGUuc2V0VmFsdWUoaWQuc2NvcGUgfHwgbnVsbCk7XHJcbiAgICAgIHRoaXMudGFnLnNldFZhbHVlKGlkLnRhZyB8fCBudWxsKTtcclxuICAgICAgdGhpcy5hc3NlcnRpb24uc2V0VmFsdWUoaWQuYXNzZXJ0aW9uIHx8IG51bGwpO1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0aW5nRm9ybSA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRJZCgpOiBBc3NlcnRlZENvbXBvc2l0ZUlkIHtcclxuICAgIGNvbnN0IGV4dGVybmFsID0gIXRoaXMudGFyZ2V0LnZhbHVlPy5uYW1lO1xyXG4gICAgY29uc3QgdGFyZ2V0ID0gdGhpcy50YXJnZXQudmFsdWU7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0YXJnZXQ6IGV4dGVybmFsXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGdpZDogdGFyZ2V0Py5naWQgfHwgJycsXHJcbiAgICAgICAgICAgIGxhYmVsOiB0YXJnZXQ/LmxhYmVsIHx8IHRhcmdldD8uZ2lkIHx8ICcnLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogdGFyZ2V0ISxcclxuICAgICAgc2NvcGU6IHRoaXMuc2NvcGUudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgdGFnOiB0aGlzLnRhZy52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBhc3NlcnRpb246IHRoaXMuYXNzZXJ0aW9uLnZhbHVlIHx8IHVuZGVmaW5lZCxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdElkQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmhhc1N1Ym1pdCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkVkaXRvckNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy50YXJnZXRFeHBhbmRlZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TW9yZVJlcXVlc3QoZXZlbnQ6IFJlZkxvb2t1cFNldEV2ZW50KTogdm9pZCB7XHJcbiAgICB0aGlzLmV4dE1vcmVSZXF1ZXN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRXh0TG9va3VwQ29uZmlnQ2hhbmdlKGNvbmZpZzogUmVmTG9va3VwQ29uZmlnKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLnNjb3BlLnZhbHVlIHx8XHJcbiAgICAgIHRoaXMuZXh0TG9va3VwQ29uZmlncy5zb21lKChjKSA9PiBjLm5hbWUgPT09IHRoaXMuc2NvcGUudmFsdWUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zY29wZS5zZXRWYWx1ZShjb25maWcubmFtZSB8fCBudWxsKTtcclxuICAgICAgdGhpcy5zY29wZS5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICB0aGlzLnNjb3BlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWxpZCkge1xyXG4gICAgICB0aGlzLl9pZCA9IHRoaXMuZ2V0SWQoKTtcclxuICAgICAgdGhpcy5pZENoYW5nZS5lbWl0KHRoaXMuX2lkKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8ZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgIDwhLS0gdGFnIChib3VuZCkgLS0+XHJcbiAgICAgIEBpZiAoaWRUYWdFbnRyaWVzPy5sZW5ndGgpIHtcclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJzaG9ydC10ZXh0XCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnRhZzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInRhZ1wiPlxyXG4gICAgICAgICAgICBAZm9yIChlIG9mIGlkVGFnRW50cmllczsgdHJhY2sgZSkge1xyXG4gICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlLmlkXCI+e3tcclxuICAgICAgICAgICAgICAgIGUudmFsdWVcclxuICAgICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIH1cclxuICAgICAgPCEtLSB0YWcgKGZyZWUpIC0tPlxyXG4gICAgICBAaWYgKCFpZFRhZ0VudHJpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInNob3J0LXRleHRcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+dGFnPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInRhZ1wiIC8+XHJcbiAgICAgICAgICBAaWYgKCRhbnkodGFnLmVycm9ycyk/Lm1heExlbmd0aCAmJiAodGFnLmRpcnR5IHx8IHRhZy50b3VjaGVkKSkge1xyXG4gICAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgPnRhZyB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPCEtLSBzY29wZSAoYm91bmQpIC0tPlxyXG4gICAgICAgIEBpZiAoaWRTY29wZUVudHJpZXM/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwic2hvcnQtdGV4dFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPnNjb3BlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJzY29wZVwiPlxyXG4gICAgICAgICAgICAgIEBmb3IgKGUgb2YgaWRTY29wZUVudHJpZXM7IHRyYWNrIGUpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJlLmlkXCI+e3tcclxuICAgICAgICAgICAgICAgICAgZS52YWx1ZVxyXG4gICAgICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8IS0tIHNjb3BlIChmcmVlKSAtLT5cclxuICAgICAgICBAaWYgKCFpZFNjb3BlRW50cmllcz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJzaG9ydC10ZXh0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+c2NvcGU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJzY29wZVwiIC8+XHJcbiAgICAgICAgICAgIEBpZiAoXHJcbiAgICAgICAgICAgICAgJGFueShzY29wZS5lcnJvcnMpPy5tYXhMZW5ndGggJiYgKHNjb3BlLmRpcnR5IHx8IHNjb3BlLnRvdWNoZWQpXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAgICAgPnNjb3BlIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgPCEtLSBsYWJlbCBhbmQgR0lEIC0tPlxyXG4gICAgICAgICAgQGlmICh0YXJnZXQudmFsdWU/LmxhYmVsKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPmxhYmVsPC9zcGFuPnt7IHRhcmdldC52YWx1ZT8ubGFiZWwgfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBAaWYgKHRhcmdldC52YWx1ZT8uZ2lkKSB7XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbFwiPkdJRDwvc3Bhbj57eyB0YXJnZXQudmFsdWU/LmdpZCB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSB0YXJnZXQgLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJveGVkXCI+XHJcbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbKGV4cGFuZGVkKV09XCJ0YXJnZXRFeHBhbmRlZFwiPlxyXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+dGFyZ2V0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICAgICAgPGNhZG11cy1waW4tdGFyZ2V0LWxvb2t1cFxyXG4gICAgICAgICAgICAgIFtwaW5CeVR5cGVNb2RlXT1cInBpbkJ5VHlwZU1vZGVcIlxyXG4gICAgICAgICAgICAgIFtjYW5Td2l0Y2hNb2RlXT1cImNhblN3aXRjaE1vZGVcIlxyXG4gICAgICAgICAgICAgIFtjYW5FZGl0VGFyZ2V0XT1cImNhbkVkaXRUYXJnZXRcIlxyXG4gICAgICAgICAgICAgIFtsb29rdXBEZWZpbml0aW9uc109XCJsb29rdXBEZWZpbml0aW9uc1wiXHJcbiAgICAgICAgICAgICAgW2RlZmF1bHRQYXJ0VHlwZUtleV09XCJkZWZhdWx0UGFydFR5cGVLZXlcIlxyXG4gICAgICAgICAgICAgIFt0YXJnZXRdPVwidGFyZ2V0LnZhbHVlXCJcclxuICAgICAgICAgICAgICBbaW50ZXJuYWxEZWZhdWx0XT1cImludGVybmFsRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgW2V4dExvb2t1cENvbmZpZ3NdPVwiZXh0TG9va3VwQ29uZmlnc1wiXHJcbiAgICAgICAgICAgICAgKHRhcmdldENoYW5nZSk9XCJvblRhcmdldENoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoZWRpdG9yQ2xvc2UpPVwib25FZGl0b3JDbG9zZSgpXCJcclxuICAgICAgICAgICAgICAoZXh0TW9yZVJlcXVlc3QpPVwib25FeHRNb3JlUmVxdWVzdCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoZXh0TG9va3VwQ29uZmlnQ2hhbmdlKT1cIm9uRXh0TG9va3VwQ29uZmlnQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICA+PC9jYWRtdXMtcGluLXRhcmdldC1sb29rdXA+XHJcbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gYXNzZXJ0aW9uIC0tPlxyXG4gICAgICAgIDxiciAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJib3hlZFwiPlxyXG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5hc3NlcnRpb248L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgICAgICA8Y2FkbXVzLXJlZnMtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgW2Fzc1RhZ0VudHJpZXNdPVwiYXNzVGFnRW50cmllc1wiXHJcbiAgICAgICAgICAgICAgW3JlZlR5cGVFbnRyaWVzXT1cInJlZlR5cGVFbnRyaWVzXCJcclxuICAgICAgICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcclxuICAgICAgICAgICAgICBbYXNzZXJ0aW9uXT1cImFzc2VydGlvbi52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgKGFzc2VydGlvbkNoYW5nZSk9XCJvbkFzc2VydGlvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDwvY2FkbXVzLXJlZnMtYXNzZXJ0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gYnV0dG9ucyAtLT5cclxuICAgICAgQGlmIChoYXNTdWJtaXQpIHtcclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdGhpcy50YXJnZXQudmFsdWU/LmdpZCB8fCAhdGhpcy50YXJnZXQudmFsdWU/LmxhYmVsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYXQtd2FyblwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1hdC1wcmltYXJ5XCI+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Zvcm0+XHJcbiJdfQ==
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
-
import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
3
|
-
import { take } from 'rxjs';
|
|
4
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
-
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
7
|
-
import { MatExpansionModule } from '@angular/material/expansion';
|
|
8
|
-
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
9
|
-
import { MatInputModule } from '@angular/material/input';
|
|
10
|
-
import { AssertedCompositeIdComponent, } from '../asserted-composite-id/asserted-composite-id.component';
|
|
11
|
-
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "@angular/forms";
|
|
13
|
-
import * as i2 from "@myrmidon/ng-mat-tools";
|
|
14
|
-
import * as i3 from "@angular/material/button";
|
|
15
|
-
import * as i4 from "@angular/material/expansion";
|
|
16
|
-
import * as i5 from "@angular/material/icon";
|
|
17
|
-
/**
|
|
18
|
-
* Asserted IDs editor.
|
|
19
|
-
*/
|
|
20
|
-
export class AssertedCompositeIdsComponent {
|
|
21
|
-
/**
|
|
22
|
-
* The asserted IDs.
|
|
23
|
-
*/
|
|
24
|
-
get ids() {
|
|
25
|
-
return this._ids;
|
|
26
|
-
}
|
|
27
|
-
set ids(value) {
|
|
28
|
-
if (this._ids !== value) {
|
|
29
|
-
this._ids = value || [];
|
|
30
|
-
this.updateForm(value);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
constructor(formBuilder, _dialogService) {
|
|
34
|
-
this._dialogService = _dialogService;
|
|
35
|
-
this._ids = [];
|
|
36
|
-
this._editedIndex = -1;
|
|
37
|
-
this.idsChange = new EventEmitter();
|
|
38
|
-
this.entries = formBuilder.control([], { nonNullable: true });
|
|
39
|
-
// form
|
|
40
|
-
this.form = formBuilder.group({
|
|
41
|
-
ids: this.entries,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
updateForm(ids) {
|
|
45
|
-
if (!ids?.length) {
|
|
46
|
-
this.form.reset();
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.entries.setValue(ids, { emitEvent: false });
|
|
50
|
-
this.entries.updateValueAndValidity();
|
|
51
|
-
this.form.markAsPristine();
|
|
52
|
-
}
|
|
53
|
-
emitIdsChange() {
|
|
54
|
-
this.idsChange.emit(this.entries.value);
|
|
55
|
-
}
|
|
56
|
-
addId() {
|
|
57
|
-
this.editId({
|
|
58
|
-
target: { gid: '', label: '' },
|
|
59
|
-
}, -1);
|
|
60
|
-
}
|
|
61
|
-
editId(id, index) {
|
|
62
|
-
this._editedIndex = index;
|
|
63
|
-
this.edited = id;
|
|
64
|
-
}
|
|
65
|
-
closeId() {
|
|
66
|
-
this._editedIndex = -1;
|
|
67
|
-
this.edited = undefined;
|
|
68
|
-
}
|
|
69
|
-
saveId(entry) {
|
|
70
|
-
const entries = [...this.entries.value];
|
|
71
|
-
if (this._editedIndex === -1) {
|
|
72
|
-
entries.push(entry);
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
entries.splice(this._editedIndex, 1, entry);
|
|
76
|
-
}
|
|
77
|
-
this.entries.setValue(entries);
|
|
78
|
-
this.entries.markAsDirty();
|
|
79
|
-
this.entries.updateValueAndValidity();
|
|
80
|
-
this.closeId();
|
|
81
|
-
}
|
|
82
|
-
deleteId(index) {
|
|
83
|
-
this._dialogService
|
|
84
|
-
.confirm('Confirmation', 'Delete ID?')
|
|
85
|
-
.pipe(take(1))
|
|
86
|
-
.subscribe((yes) => {
|
|
87
|
-
if (yes) {
|
|
88
|
-
if (this._editedIndex === index) {
|
|
89
|
-
this.closeId();
|
|
90
|
-
}
|
|
91
|
-
const entries = [...this.entries.value];
|
|
92
|
-
entries.splice(index, 1);
|
|
93
|
-
this.entries.setValue(entries);
|
|
94
|
-
this.entries.markAsDirty();
|
|
95
|
-
this.entries.updateValueAndValidity();
|
|
96
|
-
this.emitIdsChange();
|
|
97
|
-
}
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
moveIdUp(index) {
|
|
101
|
-
if (index < 1) {
|
|
102
|
-
return;
|
|
103
|
-
}
|
|
104
|
-
const entry = this.entries.value[index];
|
|
105
|
-
const entries = [...this.entries.value];
|
|
106
|
-
entries.splice(index, 1);
|
|
107
|
-
entries.splice(index - 1, 0, entry);
|
|
108
|
-
this.entries.setValue(entries);
|
|
109
|
-
this.entries.markAsDirty();
|
|
110
|
-
this.entries.updateValueAndValidity();
|
|
111
|
-
this.emitIdsChange();
|
|
112
|
-
}
|
|
113
|
-
moveIdDown(index) {
|
|
114
|
-
if (index + 1 >= this.entries.value.length) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const entry = this.entries.value[index];
|
|
118
|
-
const entries = [...this.entries.value];
|
|
119
|
-
entries.splice(index, 1);
|
|
120
|
-
entries.splice(index + 1, 0, entry);
|
|
121
|
-
this.entries.setValue(entries);
|
|
122
|
-
this.entries.markAsDirty();
|
|
123
|
-
this.entries.updateValueAndValidity();
|
|
124
|
-
this.emitIdsChange();
|
|
125
|
-
}
|
|
126
|
-
onIdChange(id) {
|
|
127
|
-
this.saveId(id);
|
|
128
|
-
this.emitIdsChange();
|
|
129
|
-
}
|
|
130
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AssertedCompositeIdsComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DialogService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: AssertedCompositeIdsComponent, isStandalone: true, selector: "cadmus-refs-asserted-composite-ids", inputs: { ids: "ids", idScopeEntries: "idScopeEntries", idTagEntries: "idTagEntries", assTagEntries: "assTagEntries", refTypeEntries: "refTypeEntries", refTagEntries: "refTagEntries", pinByTypeMode: "pinByTypeMode", canSwitchMode: "canSwitchMode", canEditTarget: "canEditTarget", lookupDefinitions: "lookupDefinitions", defaultPartTypeKey: "defaultPartTypeKey", internalDefault: "internalDefault" }, outputs: { idsChange: "idsChange" }, ngImport: i0, template: "<form [formGroup]=\"form\">\r\n <!-- buttons -->\r\n <button\r\n type=\"button\"\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n mat-flat-button\r\n (click)=\"addId()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n <!-- list -->\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>label</th>\r\n <th>gid</th>\r\n <th>ass.</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>{{ entry?.target?.label }}</td>\r\n <td>{{ entry?.target?.gid }}</td>\r\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n >ID {{ edited?.target?.label }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [hasSubmit]=\"true\"\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [lookupDefinitions]=\"lookupDefinitions\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\r\n [internalDefault]=\"internalDefault\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n ></cadmus-refs-asserted-composite-id>\r\n </mat-expansion-panel>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver;text-align:left}td{padding-right:4px}td.fit-width{width:1px;white-space:nowrap;padding:0}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "ngmodule", type: MatExpansionModule }, { kind: "component", type: i4.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i4.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["expandedHeight", "collapsedHeight", "tabIndex"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "component", type: AssertedCompositeIdComponent, selector: "cadmus-refs-asserted-composite-id", inputs: ["idScopeEntries", "idTagEntries", "assTagEntries", "refTypeEntries", "refTagEntries", "id", "internalDefault", "hasSubmit", "pinByTypeMode", "canSwitchMode", "canEditTarget", "lookupDefinitions", "defaultPartTypeKey"], outputs: ["idChange", "editorClose", "extMoreRequest"] }] }); }
|
|
132
|
-
}
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: AssertedCompositeIdsComponent, decorators: [{
|
|
134
|
-
type: Component,
|
|
135
|
-
args: [{ standalone: true, selector: 'cadmus-refs-asserted-composite-ids', imports: [
|
|
136
|
-
FormsModule,
|
|
137
|
-
ReactiveFormsModule,
|
|
138
|
-
MatButtonModule,
|
|
139
|
-
MatCheckboxModule,
|
|
140
|
-
MatExpansionModule,
|
|
141
|
-
MatFormFieldModule,
|
|
142
|
-
MatIconModule,
|
|
143
|
-
MatInputModule,
|
|
144
|
-
AssertedCompositeIdComponent
|
|
145
|
-
], template: "<form [formGroup]=\"form\">\r\n <!-- buttons -->\r\n <button\r\n type=\"button\"\r\n color=\"primary\"\r\n class=\"mat-primary\"\r\n mat-flat-button\r\n (click)=\"addId()\"\r\n >\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n <!-- list -->\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>label</th>\r\n <th>gid</th>\r\n <th>ass.</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"primary\"\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n color=\"warn\"\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>{{ entry?.target?.label }}</td>\r\n <td>{{ entry?.target?.gid }}</td>\r\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n >ID {{ edited?.target?.label }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries\"\r\n [idTagEntries]=\"idTagEntries\"\r\n [assTagEntries]=\"assTagEntries\"\r\n [refTypeEntries]=\"refTypeEntries\"\r\n [refTagEntries]=\"refTagEntries\"\r\n [hasSubmit]=\"true\"\r\n [pinByTypeMode]=\"pinByTypeMode\"\r\n [canSwitchMode]=\"canSwitchMode\"\r\n [canEditTarget]=\"canEditTarget\"\r\n [lookupDefinitions]=\"lookupDefinitions\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey\"\r\n [internalDefault]=\"internalDefault\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n ></cadmus-refs-asserted-composite-id>\r\n </mat-expansion-panel>\r\n</form>\r\n", styles: ["th{font-weight:400;color:silver;text-align:left}td{padding-right:4px}td.fit-width{width:1px;white-space:nowrap;padding:0}\n"] }]
|
|
146
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DialogService }], propDecorators: { ids: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], idScopeEntries: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], idTagEntries: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], assTagEntries: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], refTypeEntries: [{
|
|
155
|
-
type: Input
|
|
156
|
-
}], refTagEntries: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}], pinByTypeMode: [{
|
|
159
|
-
type: Input
|
|
160
|
-
}], canSwitchMode: [{
|
|
161
|
-
type: Input
|
|
162
|
-
}], canEditTarget: [{
|
|
163
|
-
type: Input
|
|
164
|
-
}], lookupDefinitions: [{
|
|
165
|
-
type: Input
|
|
166
|
-
}], defaultPartTypeKey: [{
|
|
167
|
-
type: Input
|
|
168
|
-
}], internalDefault: [{
|
|
169
|
-
type: Input
|
|
170
|
-
}], idsChange: [{
|
|
171
|
-
type: Output
|
|
172
|
-
}] } });
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcmVmcy1hc3NlcnRlZC1pZHMvc3JjL2xpYi9hc3NlcnRlZC1jb21wb3NpdGUtaWRzL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtaWRzL3NyYy9saWIvYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcy9hc3NlcnRlZC1jb21wb3NpdGUtaWRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUlMLFdBQVcsRUFDWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3pELE9BQU8sRUFFTCw0QkFBNEIsR0FDN0IsTUFBTSwwREFBMEQsQ0FBQzs7Ozs7OztBQUVsRTs7R0FFRztBQWtCSCxNQUFNLE9BQU8sNkJBQTZCO0lBS3hDOztPQUVH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QzlDMUMsa2pHQW1HQSxvTERoRUksV0FBVyxtU0FDWCxtQkFBbUIsK0tBQ25CLGVBQWUsd1VBQ2YsaUJBQWlCLDhCQUNqQixrQkFBa0Isb1lBQ2xCLGtCQUFrQiw4QkFDbEIsYUFBYSxtTEFDYixjQUFjLCtCQUNkLDRCQUE0Qjs7MkZBR25CLDZCQUE2QjtrQkFqQnpDLFNBQVM7aUNBQ0ksSUFBSSxZQUNOLG9DQUFvQyxXQUdyQzt3QkFDUCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsa0JBQWtCO3dCQUNsQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsNEJBQTRCO3FCQUMvQjs0R0FXWSxHQUFHO3NCQURiLEtBQUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxZQUFZO3NCQURsQixLQUFLO2dCQUtDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBS0MsY0FBYztzQkFEcEIsS0FBSztnQkFLQyxhQUFhO3NCQURuQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBT0MsYUFBYTtzQkFEbkIsS0FBSztnQkFNQyxhQUFhO3NCQURuQixLQUFLO2dCQVdDLGlCQUFpQjtzQkFEdkIsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBUUMsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxTQUFTO3NCQURmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XHJcbmltcG9ydCB7IE1hdEV4cGFuc2lvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcclxuXHJcbmltcG9ydCB7IEluZGV4TG9va3VwRGVmaW5pdGlvbnMsIFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BteXJtaWRvbi9uZy1tYXQtdG9vbHMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBc3NlcnRlZENvbXBvc2l0ZUlkLFxyXG4gIEFzc2VydGVkQ29tcG9zaXRlSWRDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vYXNzZXJ0ZWQtY29tcG9zaXRlLWlkL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZC5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIEFzc2VydGVkIElEcyBlZGl0b3IuXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY29tcG9zaXRlLWlkcycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Fzc2VydGVkLWNvbXBvc2l0ZS1pZHMuY29tcG9uZW50LmNzcyddLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0RXhwYW5zaW9uTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdElucHV0TW9kdWxlLFxyXG4gICAgQXNzZXJ0ZWRDb21wb3NpdGVJZENvbXBvbmVudFxyXG5dLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXNzZXJ0ZWRDb21wb3NpdGVJZHNDb21wb25lbnQge1xyXG4gIHByaXZhdGUgX2lkczogQXNzZXJ0ZWRDb21wb3NpdGVJZFtdO1xyXG4gIHByaXZhdGUgX2VkaXRlZEluZGV4OiBudW1iZXI7XHJcbiAgcHVibGljIGVkaXRlZD86IEFzc2VydGVkQ29tcG9zaXRlSWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBhc3NlcnRlZCBJRHMuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGlkcygpOiBBc3NlcnRlZENvbXBvc2l0ZUlkW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lkcztcclxuICB9XHJcbiAgcHVibGljIHNldCBpZHModmFsdWU6IEFzc2VydGVkQ29tcG9zaXRlSWRbXSkge1xyXG4gICAgaWYgKHRoaXMuX2lkcyAhPT0gdmFsdWUpIHtcclxuICAgICAgdGhpcy5faWRzID0gdmFsdWUgfHwgW107XHJcbiAgICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBhc3NlcnRlZC1pZC1zY29wZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpZFNjb3BlRW50cmllcz86IFRoZXNhdXJ1c0VudHJ5W107XHJcblxyXG4gIC8vIGFzc2VydGVkLWlkLXRhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpZFRhZ0VudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBhc3NlcnRpb24tdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFzc1RhZ0VudHJpZXM/OiBUaGVzYXVydXNFbnRyeVtdO1xyXG5cclxuICAvLyBkb2MtcmVmZXJlbmNlLXR5cGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVmVHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIGRvYy1yZWZlcmVuY2UtdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlRhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgaW50ZXJuYWwgVUkgcHJlc2VsZWN0ZWQgbW9kZSBzaG91bGQgYmUgYnkgdHlwZSByYXRoZXIgdGhhblxyXG4gICAqIGJ5IGl0ZW0uIFVzZXIgY2FuIGNoYW5nZSBtb2RlIHVubGVzcyBtb2RlU3dpdGNoaW5nIGlzIGZhbHNlLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHBpbkJ5VHlwZU1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gc3dpdGNoIGJldHdlZW4gYnktdHlwZSBhbmQgYnktaXRlbSBtb2RlIGluXHJcbiAgICogdGhlIGludGVybmFsIFVJLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhblN3aXRjaE1vZGU/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRydWUgd2hlbiB0aGUgdXNlciBjYW4gZWRpdCB0aGUgdGFyZ2V0J3MgZ2lkL2xhYmVsIGZvciBpbnRlcm5hbCB0YXJnZXRzLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNhbkVkaXRUYXJnZXQ/OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIFRoZSBsb29rdXAgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCBmb3IgdGhlIGJ5LXR5cGUgbG9va3VwIGluIHRoZSBpbnRlcm5hbCBVSS5cclxuICAgKiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgZ290IHZpYSBpbmplY3Rpb25cclxuICAgKiB3aGVuIGF2YWlsYWJsZTsgaWYgdGhlIGluamVjdGVkIGRlZmluaXRpb25zIGFyZSBlbXB0eSwgdGhlXHJcbiAgICogbG9va3VwIGRlZmluaXRpb25zIHdpbGwgYmUgYnVpbHQgZnJvbSB0aGUgbW9kZWwtdHlwZXMgdGhlc2F1cnVzO1xyXG4gICAqIGlmIHRoaXMgaXMgbm90IGF2YWlsYWJsZSBlaXRoZXIsIHRoZSBieS10eXBlIGxvb2t1cCB3aWxsIGJlXHJcbiAgICogZGlzYWJsZWQuXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9va3VwRGVmaW5pdGlvbnM/OiBJbmRleExvb2t1cERlZmluaXRpb25zO1xyXG5cclxuICAvKipcclxuICAgKiBUaGUgZGVmYXVsdCBwYXJ0IHR5cGUga2V5LlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlZmF1bHRQYXJ0VHlwZUtleT86IHN0cmluZyB8IG51bGw7XHJcblxyXG4gIC8qKlxyXG4gICAqIFRydWUgaWYgd2hlbiBhIG5ldyBJRCBpcyBzZXQgaXQgc2hvdWxkIGJlIGludGVybmFsIHJhdGhlciB0aGFuXHJcbiAgICogZXh0ZXJuYWwgYnkgZGVmYXVsdC5cclxuICAgKi9cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbnRlcm5hbERlZmF1bHQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8qKlxyXG4gICAqIEVtaXR0ZWQgd2hlbmV2ZXIgYW55IElEIGNoYW5nZXMuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGlkc0NoYW5nZTogRXZlbnRFbWl0dGVyPEFzc2VydGVkQ29tcG9zaXRlSWRbXT47XHJcblxyXG4gIHB1YmxpYyBlbnRyaWVzOiBGb3JtQ29udHJvbDxBc3NlcnRlZENvbXBvc2l0ZUlkW10+O1xyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlciwgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSkge1xyXG4gICAgdGhpcy5faWRzID0gW107XHJcbiAgICB0aGlzLl9lZGl0ZWRJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5pZHNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEFzc2VydGVkQ29tcG9zaXRlSWRbXT4oKTtcclxuICAgIHRoaXMuZW50cmllcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICAvLyBmb3JtXHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGlkczogdGhpcy5lbnRyaWVzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0oaWRzOiBBc3NlcnRlZENvbXBvc2l0ZUlkW10pOiB2b2lkIHtcclxuICAgIGlmICghaWRzPy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZW50cmllcy5zZXRWYWx1ZShpZHMsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuZW50cmllcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW1pdElkc0NoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuaWRzQ2hhbmdlLmVtaXQodGhpcy5lbnRyaWVzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRJZCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdElkKFxyXG4gICAgICB7XHJcbiAgICAgICAgdGFyZ2V0OiB7IGdpZDogJycsIGxhYmVsOiAnJyB9LFxyXG4gICAgICB9LFxyXG4gICAgICAtMVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBlZGl0SWQoaWQ6IEFzc2VydGVkQ29tcG9zaXRlSWQsIGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuX2VkaXRlZEluZGV4ID0gaW5kZXg7XHJcbiAgICB0aGlzLmVkaXRlZCA9IGlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlSWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9lZGl0ZWRJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5lZGl0ZWQgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZUlkKGVudHJ5OiBBc3NlcnRlZENvbXBvc2l0ZUlkKTogdm9pZCB7XHJcbiAgICBjb25zdCBlbnRyaWVzID0gWy4uLnRoaXMuZW50cmllcy52YWx1ZV07XHJcbiAgICBpZiAodGhpcy5fZWRpdGVkSW5kZXggPT09IC0xKSB7XHJcbiAgICAgIGVudHJpZXMucHVzaChlbnRyeSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbnRyaWVzLnNwbGljZSh0aGlzLl9lZGl0ZWRJbmRleCwgMSwgZW50cnkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lbnRyaWVzLnNldFZhbHVlKGVudHJpZXMpO1xyXG4gICAgdGhpcy5lbnRyaWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5jbG9zZUlkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlSWQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZGlhbG9nU2VydmljZVxyXG4gICAgICAuY29uZmlybSgnQ29uZmlybWF0aW9uJywgJ0RlbGV0ZSBJRD8nKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5fZWRpdGVkSW5kZXggPT09IGluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VJZCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgZW50cmllcyA9IFsuLi50aGlzLmVudHJpZXMudmFsdWVdO1xyXG4gICAgICAgICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLnNldFZhbHVlKGVudHJpZXMpO1xyXG4gICAgICAgICAgdGhpcy5lbnRyaWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlSWRVcChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGVudHJpZXMgPSBbLi4udGhpcy5lbnRyaWVzLnZhbHVlXTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGVudHJpZXMuc3BsaWNlKGluZGV4IC0gMSwgMCwgZW50cnkpO1xyXG4gICAgdGhpcy5lbnRyaWVzLnNldFZhbHVlKGVudHJpZXMpO1xyXG4gICAgdGhpcy5lbnRyaWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVudHJpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5lbWl0SWRzQ2hhbmdlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUlkRG93bihpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggKyAxID49IHRoaXMuZW50cmllcy52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZW50cnkgPSB0aGlzLmVudHJpZXMudmFsdWVbaW5kZXhdO1xyXG4gICAgY29uc3QgZW50cmllcyA9IFsuLi50aGlzLmVudHJpZXMudmFsdWVdO1xyXG4gICAgZW50cmllcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgZW50cmllcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBlbnRyeSk7XHJcbiAgICB0aGlzLmVudHJpZXMuc2V0VmFsdWUoZW50cmllcyk7XHJcbiAgICB0aGlzLmVudHJpZXMubWFya0FzRGlydHkoKTtcclxuICAgIHRoaXMuZW50cmllcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVtaXRJZHNDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbklkQ2hhbmdlKGlkOiBBc3NlcnRlZENvbXBvc2l0ZUlkKTogdm9pZCB7XHJcbiAgICB0aGlzLnNhdmVJZChpZCk7XHJcbiAgICB0aGlzLmVtaXRJZHNDaGFuZ2UoKTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCI+XHJcbiAgPCEtLSBidXR0b25zIC0tPlxyXG4gIDxidXR0b25cclxuICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgIGNsYXNzPVwibWF0LXByaW1hcnlcIlxyXG4gICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAoY2xpY2spPVwiYWRkSWQoKVwiXHJcbiAgPlxyXG4gICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiBJRFxyXG4gIDwvYnV0dG9uPlxyXG4gIDwhLS0gbGlzdCAtLT5cclxuICBAaWYgKGVudHJpZXMudmFsdWUubGVuZ3RoKSB7XHJcbiAgPHRhYmxlPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoPnNjb3BlPC90aD5cclxuICAgICAgICA8dGg+bGFiZWw8L3RoPlxyXG4gICAgICAgIDx0aD5naWQ8L3RoPlxyXG4gICAgICAgIDx0aD5hc3MuPC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIEBmb3IgKCBlbnRyeSBvZiBlbnRyaWVzLnZhbHVlOyB0cmFjayBlbnRyeTsgbGV0IGkgPSAkaW5kZXg7IGxldCBmaXJzdCA9XHJcbiAgICAgICRmaXJzdDsgbGV0IGxhc3QgPSAkbGFzdCkge1xyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkIGNsYXNzPVwiZml0LXdpZHRoXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkVkaXQgdGhpcyBJRFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJlZGl0SWQoZW50cnksIGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXByaW1hcnlcIj5lZGl0PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgSUQgdXBcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlyc3RcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibW92ZUlkVXAoaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJNb3ZlIHRoaXMgSUQgZG93blwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJsYXN0XCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVJZERvd24oaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIElEXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUlkKGkpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWF0LXdhcm5cIj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGVudHJ5LnNjb3BlIH19PC90ZD5cclxuICAgICAgICA8dGQ+e3sgZW50cnk/LnRhcmdldD8ubGFiZWwgfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbnRyeT8udGFyZ2V0Py5naWQgfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbnRyeT8uYXNzZXJ0aW9uID8gXCJZXCIgOiBcIk5cIiB9fTwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICAgIH1cclxuICAgIDwvdGJvZHk+XHJcbiAgPC90YWJsZT5cclxuICB9XHJcblxyXG4gIDwhLS0gZWRpdG9yIC0tPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJlZGl0ZWRcIiBbZGlzYWJsZWRdPVwiIWVkaXRlZFwiPlxyXG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXHJcbiAgICAgID5JRCB7eyBlZGl0ZWQ/LnRhcmdldD8ubGFiZWwgfX08L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXHJcbiAgICA+XHJcbiAgICA8Y2FkbXVzLXJlZnMtYXNzZXJ0ZWQtY29tcG9zaXRlLWlkXHJcbiAgICAgIFtpZFNjb3BlRW50cmllc109XCJpZFNjb3BlRW50cmllc1wiXHJcbiAgICAgIFtpZFRhZ0VudHJpZXNdPVwiaWRUYWdFbnRyaWVzXCJcclxuICAgICAgW2Fzc1RhZ0VudHJpZXNdPVwiYXNzVGFnRW50cmllc1wiXHJcbiAgICAgIFtyZWZUeXBlRW50cmllc109XCJyZWZUeXBlRW50cmllc1wiXHJcbiAgICAgIFtyZWZUYWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICBbaGFzU3VibWl0XT1cInRydWVcIlxyXG4gICAgICBbcGluQnlUeXBlTW9kZV09XCJwaW5CeVR5cGVNb2RlXCJcclxuICAgICAgW2NhblN3aXRjaE1vZGVdPVwiY2FuU3dpdGNoTW9kZVwiXHJcbiAgICAgIFtjYW5FZGl0VGFyZ2V0XT1cImNhbkVkaXRUYXJnZXRcIlxyXG4gICAgICBbbG9va3VwRGVmaW5pdGlvbnNdPVwibG9va3VwRGVmaW5pdGlvbnNcIlxyXG4gICAgICBbZGVmYXVsdFBhcnRUeXBlS2V5XT1cImRlZmF1bHRQYXJ0VHlwZUtleVwiXHJcbiAgICAgIFtpbnRlcm5hbERlZmF1bHRdPVwiaW50ZXJuYWxEZWZhdWx0XCJcclxuICAgICAgW2lkXT1cImVkaXRlZFwiXHJcbiAgICAgIChpZENoYW5nZSk9XCJvbklkQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAoZWRpdG9yQ2xvc2UpPVwiY2xvc2VJZCgpXCJcclxuICAgID48L2NhZG11cy1yZWZzLWFzc2VydGVkLWNvbXBvc2l0ZS1pZD5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbjwvZm9ybT5cclxuIl19
|