@klippa/ngx-enhancy-forms 18.32.0 → 18.32.2
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.
|
@@ -10,14 +10,14 @@ export class CheckboxComponent extends ValueAccessorBase {
|
|
|
10
10
|
this.renderUndefinedAsIndeterminate = false;
|
|
11
11
|
}
|
|
12
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CheckboxComponent, selector: "klp-form-checkbox", inputs: { caption: "caption", renderUndefinedAsIndeterminate: "renderUndefinedAsIndeterminate" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<
|
|
13
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CheckboxComponent, selector: "klp-form-checkbox", inputs: { caption: "caption", renderUndefinedAsIndeterminate: "renderUndefinedAsIndeterminate" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #27bb5f}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#27bb5f;border-color:#27bb5f}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#27bb5f}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#98a2b3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
14
14
|
}
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ selector: 'klp-form-checkbox', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<
|
|
17
|
+
args: [{ selector: 'klp-form-checkbox', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #27bb5f}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#27bb5f;border-color:#27bb5f}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#27bb5f}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#98a2b3}\n"] }]
|
|
18
18
|
}], propDecorators: { caption: [{
|
|
19
19
|
type: Input
|
|
20
20
|
}], renderUndefinedAsIndeterminate: [{
|
|
21
21
|
type: Input
|
|
22
22
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZWxlbWVudHMvY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0RBQXNELENBQUM7Ozs7QUFRekYsTUFBTSxPQUFPLGlCQUFrQixTQUFRLGlCQUEwQjtJQU5qRTs7UUFRVSxtQ0FBOEIsR0FBRyxLQUFLLENBQUM7S0FDaEQ7OEdBSFksaUJBQWlCO2tHQUFqQixpQkFBaUIsOElBRmxCLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxpRENSekYsZ3pDQXVCQTs7MkZEYmEsaUJBQWlCO2tCQU43QixTQUFTOytCQUNDLG1CQUFtQixhQUdsQixDQUFDLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFdBQVcsbUJBQW1CLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzhCQUcvRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csOEJBQThCO3NCQUF0QyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBWYWx1ZUFjY2Vzc29yQmFzZSB9IGZyb20gJy4uL3ZhbHVlLWFjY2Vzc29yLWJhc2UvdmFsdWUtYWNjZXNzb3ItYmFzZS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybS1jaGVja2JveCcsXG5cdHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG5cdHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBDaGVja2JveENvbXBvbmVudCwgbXVsdGk6IHRydWUgfV0sXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94Q29tcG9uZW50IGV4dGVuZHMgVmFsdWVBY2Nlc3NvckJhc2U8Ym9vbGVhbj4ge1xuXHRASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmc7XG5cdEBJbnB1dCgpIHJlbmRlclVuZGVmaW5lZEFzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xufVxuIiwiPGRpdiBjbGFzcz1cImNvbXBvbmVudENvbnRhaW5lclwiPlxuXHQ8bGFiZWw+XG5cdFx0PGRpdiBjbGFzcz1cImNoZWNrYm94Q29udGFpbmVyXCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY2hlY2tCb3hWaXN1YWxDb250YWluZXJcIj5cblx0XHRcdFx0PGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwiY2hlY2tib3hOYXRpdmVcIlxuXHRcdFx0XHRcdFsobmdNb2RlbCldPVwiaW5uZXJWYWx1ZVwiXG5cdFx0XHRcdFx0KGNoYW5nZSk9XCJzZXRJbm5lclZhbHVlQW5kTm90aWZ5KGlubmVyVmFsdWUpOyB0b3VjaCgpXCJcblx0XHRcdFx0XHRbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuXHRcdFx0XHRcdCNuYXRpdmVJbnB1dFJlZlxuXHRcdFx0XHQvPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY2hlY2tib3hWaXN1YWxcIiBbbmdDbGFzc109XCJ7ZmlsbGVkV2l0aENvbG9yOiBpbm5lclZhbHVlID09PSB0cnVlIHx8IChyZW5kZXJVbmRlZmluZWRBc0luZGV0ZXJtaW5hdGUgJiYgaW5uZXJWYWx1ZSA9PT0gdW5kZWZpbmVkKX1cIj5cblx0XHRcdFx0XHQ8c3ZnICpuZ0lmPVwiaW5uZXJWYWx1ZSA9PT0gdHJ1ZVwiIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjlcIiB2aWV3Qm94PVwiMCAwIDEyIDlcIiBmaWxsPVwibm9uZVwiPlxuXHRcdFx0XHRcdFx0PHBhdGggZD1cIk0xMC4zMzMzIDFMMy45MTY2NyA3LjQxNjY3TDEgNC41XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0XHQ8c3ZnICpuZ0lmPVwicmVuZGVyVW5kZWZpbmVkQXNJbmRldGVybWluYXRlICYmIGlubmVyVmFsdWUgPT09IHVuZGVmaW5lZFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjExXCIgaGVpZ2h0PVwiMlwiIHZpZXdCb3g9XCIwIDAgMTEgMlwiIGZpbGw9XCJub25lXCI+XG5cdFx0XHRcdFx0XHQ8cGF0aCBkPVwiTTEgMUg5LjE2NjY3XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cblx0XHRcdFx0XHQ8L3N2Zz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2ICpuZ0lmPVwiY2FwdGlvblwiIGNsYXNzPVwiY2FwdGlvblwiPnt7IGNhcHRpb24gfX08L2Rpdj5cblx0PC9sYWJlbD5cbjwvZGl2PlxuIl19
|
|
@@ -9,9 +9,10 @@ export const invalidFieldsSymbol = Symbol('Not all fields are valid');
|
|
|
9
9
|
export class SubFormDirective {
|
|
10
10
|
constructor() {
|
|
11
11
|
this.manuallyTriggerInjection = false;
|
|
12
|
+
this.allowInjectionToOverwrite = false;
|
|
12
13
|
}
|
|
13
14
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SubFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
14
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SubFormDirective, selector: "klp-sub-form", inputs: { injectInto: "injectInto", at: "at", manuallyTriggerInjection: "manuallyTriggerInjection" }, ngImport: i0 }); }
|
|
15
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SubFormDirective, selector: "klp-sub-form", inputs: { injectInto: "injectInto", at: "at", manuallyTriggerInjection: "manuallyTriggerInjection", allowInjectionToOverwrite: "allowInjectionToOverwrite" }, ngImport: i0 }); }
|
|
15
16
|
}
|
|
16
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SubFormDirective, decorators: [{
|
|
17
18
|
type: Directive,
|
|
@@ -25,11 +26,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
25
26
|
type: Input
|
|
26
27
|
}], manuallyTriggerInjection: [{
|
|
27
28
|
type: Input
|
|
29
|
+
}], allowInjectionToOverwrite: [{
|
|
30
|
+
type: Input
|
|
28
31
|
}] } });
|
|
29
32
|
export class FormComponent {
|
|
30
|
-
constructor(parent,
|
|
33
|
+
constructor(parent, subFormDirective) {
|
|
31
34
|
this.parent = parent;
|
|
32
|
-
this.
|
|
35
|
+
this.subFormDirective = subFormDirective;
|
|
33
36
|
this.readOnly = false;
|
|
34
37
|
this.showErrorMessages = true;
|
|
35
38
|
this.errorMessageLocation = 'belowCaption';
|
|
@@ -46,8 +49,8 @@ export class FormComponent {
|
|
|
46
49
|
if (isValueSet(this.patchValueInterceptor)) {
|
|
47
50
|
this.addSupportForPatchValueInterceptor();
|
|
48
51
|
}
|
|
49
|
-
if (isValueSet(this.parent) && isValueSet(this.
|
|
50
|
-
if (this.
|
|
52
|
+
if (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {
|
|
53
|
+
if (this.subFormDirective.manuallyTriggerInjection) {
|
|
51
54
|
return;
|
|
52
55
|
}
|
|
53
56
|
// if the `formComponentToInject` is not set, just attach the first that requests an injection
|
|
@@ -58,17 +61,20 @@ export class FormComponent {
|
|
|
58
61
|
if (!isValueSet(this.parent)) {
|
|
59
62
|
throw new Error('No parent to inject this form into was found.');
|
|
60
63
|
}
|
|
61
|
-
if (!isValueSet(this.
|
|
64
|
+
if (!isValueSet(this.subFormDirective)) {
|
|
62
65
|
throw new Error('Subform directive not found.');
|
|
63
66
|
}
|
|
64
67
|
this.attachAsSubForm();
|
|
65
68
|
}
|
|
66
69
|
attachAsSubForm() {
|
|
67
|
-
const injectInto = this.
|
|
68
|
-
const injectAt = this.
|
|
70
|
+
const injectInto = this.subFormDirective.injectInto;
|
|
71
|
+
const injectAt = this.subFormDirective.at;
|
|
72
|
+
const allowInjectionToOverwrite = this.subFormDirective.allowInjectionToOverwrite;
|
|
69
73
|
if (injectInto instanceof UntypedFormArray) {
|
|
70
|
-
if (
|
|
71
|
-
|
|
74
|
+
if (!allowInjectionToOverwrite) {
|
|
75
|
+
if (injectInto.at(injectAt) instanceof FormGroup || injectInto.at(injectAt) instanceof FormArray) {
|
|
76
|
+
throw new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);
|
|
77
|
+
}
|
|
72
78
|
}
|
|
73
79
|
if (typeof injectAt !== 'number') {
|
|
74
80
|
throw new Error(`cannot index FormArray with ${typeof injectAt}`);
|
|
@@ -85,8 +91,10 @@ export class FormComponent {
|
|
|
85
91
|
this.onInjected.emit(valueBeforeInject);
|
|
86
92
|
}
|
|
87
93
|
else if (injectInto instanceof UntypedFormGroup) {
|
|
88
|
-
if (
|
|
89
|
-
|
|
94
|
+
if (!allowInjectionToOverwrite) {
|
|
95
|
+
if (injectInto.get(injectAt) instanceof FormGroup || injectInto.get(injectAt) instanceof FormArray) {
|
|
96
|
+
throw new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);
|
|
97
|
+
}
|
|
90
98
|
}
|
|
91
99
|
if (typeof injectAt !== 'string') {
|
|
92
100
|
throw new Error(`cannot index FormGroup with ${typeof injectAt}`);
|
|
@@ -115,9 +123,9 @@ export class FormComponent {
|
|
|
115
123
|
}
|
|
116
124
|
}
|
|
117
125
|
ngOnDestroy() {
|
|
118
|
-
if (isValueSet(this.parent) && isValueSet(this.
|
|
119
|
-
const injectInto = this.
|
|
120
|
-
const injectAt = this.
|
|
126
|
+
if (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {
|
|
127
|
+
const injectInto = this.subFormDirective.injectInto;
|
|
128
|
+
const injectAt = this.subFormDirective.at;
|
|
121
129
|
if (injectInto instanceof UntypedFormArray) {
|
|
122
130
|
const idx = injectInto.controls.findIndex(e => e === this.topLevelFormControl);
|
|
123
131
|
injectInto.removeAt(idx);
|
|
@@ -431,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
431
439
|
}], onInjected: [{
|
|
432
440
|
type: Output
|
|
433
441
|
}] } });
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixRQUFRLEVBRVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7QUFFakMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFNdEUsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQU9VLDZCQUF3QixHQUFZLEtBQUssQ0FBQztLQUNuRDs4R0FKWSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsU0FBUzttQkFBQztvQkFDViw4Q0FBOEM7b0JBQzlDLFFBQVEsRUFBRSxjQUFjO2lCQUN4Qjs4QkFFUyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEVBQUU7c0JBQVYsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7O0FBUVAsTUFBTSxP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UztzQkFBeEIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGVBQWU7c0JBQTlCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxxQkFBcUI7c0JBQXBDLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVyxVQUFVO3NCQUExQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0Q29tcG9uZW50LFxuXHREaXJlY3RpdmUsXG5cdEV2ZW50RW1pdHRlcixcblx0SW5wdXQsXG5cdE9uQ2hhbmdlcyxcblx0T25EZXN0cm95LFxuXHRPbkluaXQsXG5cdE9wdGlvbmFsLFxuXHRPdXRwdXQsXG5cdFNpbXBsZUNoYW5nZXMsXG5cdFNraXBTZWxmLFxuXHRUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG5cdEFic3RyYWN0Q29udHJvbCxcblx0Rm9ybUFycmF5LFxuXHRGb3JtQ29udHJvbCxcblx0Rm9ybUdyb3VwLFxuXHRVbnR5cGVkRm9ybUFycmF5LFxuXHRVbnR5cGVkRm9ybUNvbnRyb2wsXG5cdFVudHlwZWRGb3JtR3JvdXBcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtGb3JtRWxlbWVudENvbXBvbmVudH0gZnJvbSAnLi9mb3JtLWVsZW1lbnQvZm9ybS1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQge2lzVmFsdWVTZXR9IGZyb20gJy4uL3V0aWwvdmFsdWVzJztcbmltcG9ydCB7ZGVlcE1lcmdlfSBmcm9tICcuLi91dGlsL29iamVjdHMnO1xuaW1wb3J0IHtjbG9uZURlZXB9IGZyb20gJ2xvZGFzaCc7XG5cbmV4cG9ydCBjb25zdCBpbnZhbGlkRmllbGRzU3ltYm9sID0gU3ltYm9sKCdOb3QgYWxsIGZpZWxkcyBhcmUgdmFsaWQnKTtcblxuQERpcmVjdGl2ZSh7XG5cdC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3Jcblx0c2VsZWN0b3I6ICdrbHAtc3ViLWZvcm0nLFxufSlcbmV4cG9ydCBjbGFzcyBTdWJGb3JtRGlyZWN0aXZlIHtcblx0QElucHV0KCkgaW5qZWN0SW50bzogVW50eXBlZEZvcm1BcnJheSB8IFVudHlwZWRGb3JtR3JvdXA7XG5cdEBJbnB1dCgpIGF0OiBudW1iZXIgfCBzdHJpbmc7XG5cdEBJbnB1dCgpIG1hbnVhbGx5VHJpZ2dlckluamVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xufVxuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdrbHAtZm9ybScsXG5cdHRlbXBsYXRlVXJsOiAnLi9mb3JtLmNvbXBvbmVudC5odG1sJyxcblx0c3R5bGVVcmxzOiBbJy4vZm9ybS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG5cdEBJbnB1dCgpIHB1YmxpYyByZWFkT25seSA9IGZhbHNlO1xuXHRASW5wdXQoKSBwdWJsaWMgc2hvd0Vycm9yTWVzc2FnZXMgPSB0cnVlO1xuXHRASW5wdXQoKSBwdWJsaWMgZXJyb3JNZXNzYWdlTG9jYXRpb246ICdiZWxvd0NhcHRpb24nIHwgJ3JpZ2h0T2ZDYXB0aW9uJyA9ICdiZWxvd0NhcHRpb24nO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXA7XG5cdEBJbnB1dCgpIHB1YmxpYyBmb3JtQXJyYXk6IEZvcm1BcnJheTtcblx0QElucHV0KCkgcHVibGljIHdhcm5pbmdzOiBNYXA8QWJzdHJhY3RDb250cm9sLCBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+PiA9IG5ldyBNYXA8QWJzdHJhY3RDb250cm9sLCBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+PigpO1xuXHRASW5wdXQoKSBwdWJsaWMgaW1tdXRhYmxlVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG5cdEBJbnB1dCgpIHB1YmxpYyBlcnJvcnM6IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4gPSBuZXcgTWFwPEFic3RyYWN0Q29udHJvbCwgc3RyaW5nPigpO1xuXHRASW5wdXQoKSBwdWJsaWMgcGF0Y2hWYWx1ZUludGVyY2VwdG9yOiAodmFsdWVzOiBhbnkpID0+IFByb21pc2U8YW55Pjtcblx0QElucHV0KCkgcHVibGljIGFsbG93U3VibWl0T246ICdidXR0b25BbmRFbnRlcicgfCAnYnV0dG9uT25seScgPSAnYnV0dG9uQW5kRW50ZXInO1xuXHRAT3V0cHV0KCkgcHVibGljIG9uSW5qZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY29yZDxzdHJpbmcsIGFueT4+KCk7XG5cblx0cHJpdmF0ZSB0b3BMZXZlbEZvcm1Db250cm9sOiBBYnN0cmFjdENvbnRyb2w7XG5cblx0Ly8gd2Uga2VlcCB0cmFjayBvZiB3aGF0IGZvcm0gY29udHJvbHMgYXJlIGFjdHVhbGx5IHJlbmRlcmVkLiBPbmx5IHRob3NlIGNvdW50IHdoZW4gbG9va2luZyBhdCBmb3JtIHZhbGlkYXRpb25cblx0cHJpdmF0ZSBhY3RpdmVDb250cm9sczogQXJyYXk8e1xuXHRcdGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG5cdFx0Zm9ybUVsZW1lbnQ6IEZvcm1FbGVtZW50Q29tcG9uZW50O1xuXHR9PiA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKEBTa2lwU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgcGFyZW50OiBGb3JtQ29tcG9uZW50LCBAT3B0aW9uYWwoKSBwcml2YXRlIHN1YkZvcm1QbGFjZWhvbGRlcjogU3ViRm9ybURpcmVjdGl2ZSkge1xuXHR9XG5cblx0bmdPbkluaXQoKTogdm9pZCB7XG5cdFx0dGhpcy50b3BMZXZlbEZvcm1Db250cm9sID0gdGhpcy5mb3JtR3JvdXAgPz8gdGhpcy5mb3JtQXJyYXk7XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5wYXRjaFZhbHVlSW50ZXJjZXB0b3IpKSB7XG5cdFx0XHR0aGlzLmFkZFN1cHBvcnRGb3JQYXRjaFZhbHVlSW50ZXJjZXB0b3IoKTtcblx0XHR9XG5cdFx0aWYgKGlzVmFsdWVTZXQodGhpcy5wYXJlbnQpICYmIGlzVmFsdWVTZXQodGhpcy5zdWJGb3JtUGxhY2Vob2xkZXIpKSB7XG5cdFx0XHRpZiAodGhpcy5zdWJGb3JtUGxhY2Vob2xkZXIubWFudWFsbHlUcmlnZ2VySW5qZWN0aW9uKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGlmIHRoZSBgZm9ybUNvbXBvbmVudFRvSW5qZWN0YCBpcyBub3Qgc2V0LCBqdXN0IGF0dGFjaCB0aGUgZmlyc3QgdGhhdCByZXF1ZXN0cyBhbiBpbmplY3Rpb25cblx0XHRcdHRoaXMuYXR0YWNoQXNTdWJGb3JtKCk7XG5cdFx0fVxuXHR9XG5cblx0cHVibGljIF9leHRfYXR0YWNoQXNTdWJGb3JtKCk6IHZvaWQge1xuXHRcdGlmICghaXNWYWx1ZVNldCh0aGlzLnBhcmVudCkpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignTm8gcGFyZW50IHRvIGluamVjdCB0aGlzIGZvcm0gaW50byB3YXMgZm91bmQuJyk7XG5cdFx0fVxuXHRcdGlmICghaXNWYWx1ZVNldCh0aGlzLnN1YkZvcm1QbGFjZWhvbGRlcikpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignU3ViZm9ybSBkaXJlY3RpdmUgbm90IGZvdW5kLicpO1xuXHRcdH1cblx0XHR0aGlzLmF0dGFjaEFzU3ViRm9ybSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBhdHRhY2hBc1N1YkZvcm0oKTogdm9pZCB7XG5cdFx0Y29uc3QgaW5qZWN0SW50byA9IHRoaXMuc3ViRm9ybVBsYWNlaG9sZGVyLmluamVjdEludG87XG5cdFx0Y29uc3QgaW5qZWN0QXQgPSB0aGlzLnN1YkZvcm1QbGFjZWhvbGRlci5hdDtcblx0XHRpZiAoaW5qZWN0SW50byBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcblx0XHRcdGlmIChpbmplY3RJbnRvLmF0KGluamVjdEF0IGFzIG51bWJlcikgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgaW5qZWN0SW50by5hdChpbmplY3RBdCBhcyBudW1iZXIpIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVGhlcmUgYWxyZWFkeSBpcyBhIHN1YmZvcm0gaW5qZWN0ZWQgYXQgJHtpbmplY3RBdH0uIE1ha2Ugc3VyZSB0aGlzIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBmb3JtR3JvdXAgb3IgZm9ybUFycmF5IGFscmVhZHkgYXR0YWNoZWQgd2hlbiBsaW5raW5nIGl0IHRvIGEgc3ViRm9ybS5gKTtcblx0XHRcdH1cblx0XHRcdGlmICh0eXBlb2YgaW5qZWN0QXQgIT09ICdudW1iZXInKSB7XG5cdFx0XHRcdHRocm93IG5ldyBFcnJvcihgY2Fubm90IGluZGV4IEZvcm1BcnJheSB3aXRoICR7dHlwZW9mIGluamVjdEF0fWApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGluamVjdEludG8uYXQoaW5qZWN0QXQpPy5kaXNhYmxlZCkge1xuXHRcdFx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc291cmNlID0gaW5qZWN0SW50by5hdChpbmplY3RBdCk7XG5cdFx0XHRjb25zdCB2YWx1ZUJlZm9yZUluamVjdCA9IHNvdXJjZT8udmFsdWU7XG5cdFx0XHRpZiAoaXNWYWx1ZVNldCh2YWx1ZUJlZm9yZUluamVjdCkpIHtcblx0XHRcdFx0dGhpcy50b3BMZXZlbEZvcm1Db250cm9sLnBhdGNoVmFsdWUodmFsdWVCZWZvcmVJbmplY3QpO1xuXHRcdFx0fVxuXHRcdFx0aW5qZWN0SW50by5zZXRDb250cm9sKGluamVjdEF0LCB0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wpO1xuXHRcdFx0dGhpcy5vbkluamVjdGVkLmVtaXQodmFsdWVCZWZvcmVJbmplY3QpO1xuXHRcdH0gZWxzZSBpZiAoaW5qZWN0SW50byBpbnN0YW5jZW9mIFVudHlwZWRGb3JtR3JvdXApIHtcblx0XHRcdGlmIChpbmplY3RJbnRvLmdldChpbmplY3RBdCBhcyBzdHJpbmcpIGluc3RhbmNlb2YgRm9ybUdyb3VwIHx8IGluamVjdEludG8uZ2V0KGluamVjdEF0IGFzIHN0cmluZykgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhbHJlYWR5IGlzIGEgc3ViZm9ybSBpbmplY3RlZCBhdCAke2luamVjdEF0fS4gTWFrZSBzdXJlIHRoaXMgcHJvcGVydHkgZG9lcyBub3QgaGF2ZSBhIGZvcm1Hcm91cCBvciBmb3JtQXJyYXkgYWxyZWFkeSBhdHRhY2hlZCB3aGVuIGxpbmtpbmcgaXQgdG8gYSBzdWJGb3JtLmApO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBpbmplY3RBdCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgaW5kZXggRm9ybUdyb3VwIHdpdGggJHt0eXBlb2YgaW5qZWN0QXR9YCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5qZWN0SW50by5nZXQoaW5qZWN0QXQpPy5kaXNhYmxlZCkge1xuXHRcdFx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc291cmNlID0gaW5qZWN0SW50by5nZXQoaW5qZWN0QXQpO1xuXHRcdFx0Y29uc3QgdmFsdWVCZWZvcmVJbmplY3QgPSBzb3VyY2U/LnZhbHVlO1xuXHRcdFx0aWYgKGlzVmFsdWVTZXQodmFsdWVCZWZvcmVJbmplY3QpKSB7XG5cdFx0XHRcdHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHRcdH1cblx0XHRcdGluamVjdEludG8uc2V0Q29udHJvbChpbmplY3RBdCwgdGhpcy50b3BMZXZlbEZvcm1Db250cm9sKTtcblx0XHRcdHRoaXMub25JbmplY3RlZC5lbWl0KHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHR9XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cdFx0aWYgKHNpbXBsZUNoYW5nZXMucmVhZE9ubHk/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5hY3RpdmVDb250cm9scy5mb3JFYWNoKGUgPT4gZS5mb3JtQ29udHJvbC5kaXNhYmxlKCkpO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldChzaW1wbGVDaGFuZ2VzLndhcm5pbmdzPy5jdXJyZW50VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhdGNoRm9ybVdhcm5pbmdzTWFwKCk7XG5cdFx0fVxuXHRcdGlmIChpc1ZhbHVlU2V0KHNpbXBsZUNoYW5nZXMuZXJyb3JzPy5jdXJyZW50VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhdGNoRm9ybUVycm9yc01hcCgpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMucGFyZW50KSAmJiBpc1ZhbHVlU2V0KHRoaXMuc3ViRm9ybVBsYWNlaG9sZGVyKSkge1xuXHRcdFx0Y29uc3QgaW5qZWN0SW50byA9IHRoaXMuc3ViRm9ybVBsYWNlaG9sZGVyLmluamVjdEludG87XG5cdFx0XHRjb25zdCBpbmplY3RBdCA9IHRoaXMuc3ViRm9ybVBsYWNlaG9sZGVyLmF0O1xuXHRcdFx0aWYgKGluamVjdEludG8gaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cdFx0XHRcdGNvbnN0IGlkeCA9IGluamVjdEludG8uY29udHJvbHMuZmluZEluZGV4KGUgPT4gZSA9PT0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sKTtcblx0XHRcdFx0aW5qZWN0SW50by5yZW1vdmVBdChpZHgpO1xuXHRcdFx0fSBlbHNlIGlmIChpbmplY3RJbnRvIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGluamVjdEF0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgY2Fubm90IGluZGV4IEZvcm1Hcm91cCB3aXRoICR7dHlwZW9mIGluamVjdEF0fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluamVjdEludG8uc2V0Q29udHJvbChpbmplY3RBdCwgbmV3IEZvcm1Db250cm9sKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcGF0Y2hGb3JtV2FybmluZ3NNYXAoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2V0Rm4gPSB0aGlzLndhcm5pbmdzLnNldDtcblx0XHR0aGlzLndhcm5pbmdzLnNldCA9IChrZXk6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZyk6IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4gPT4ge1xuXHRcdFx0Y29uc3QgcHJldlZhbCA9IHRoaXMud2FybmluZ3MuZ2V0KGtleSk7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBzZXRGbi5jYWxsKHRoaXMud2FybmluZ3MsIGtleSwgdmFsdWUpO1xuXHRcdFx0aWYgKHByZXZWYWwgIT09IHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGRlbGV0ZUZuID0gdGhpcy53YXJuaW5ncy5kZWxldGU7XG5cdFx0dGhpcy53YXJuaW5ncy5kZWxldGUgPSAoa2V5OiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuID0+IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGRlbGV0ZUZuLmNhbGwodGhpcy53YXJuaW5ncywga2V5KTtcblx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgcGF0Y2hGb3JtRXJyb3JzTWFwKCk6IHZvaWQge1xuXHRcdGNvbnN0IHNldEZuID0gdGhpcy5lcnJvcnMuc2V0O1xuXHRcdHRoaXMuZXJyb3JzLnNldCA9IChrZXk6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZyk6IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4gPT4ge1xuXHRcdFx0Y29uc3QgcHJldlZhbCA9IHRoaXMuZXJyb3JzLmdldChrZXkpO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gc2V0Rm4uY2FsbCh0aGlzLmVycm9ycywga2V5LCB2YWx1ZSk7XG5cdFx0XHRrZXkuc2V0RXJyb3JzKHsgLi4ua2V5LmVycm9ycywgZm9ybUxldmVsOiB2YWx1ZX0pO1xuXHRcdFx0aWYgKHByZXZWYWwgIT09IHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGRlbGV0ZUZuID0gdGhpcy5lcnJvcnMuZGVsZXRlO1xuXHRcdHRoaXMuZXJyb3JzLmRlbGV0ZSA9IChrZXk6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0Y29uc3QgbmV3RXJyb3JzT2JqZWN0ID0ga2V5LmVycm9ycztcblx0XHRcdGRlbGV0ZSBuZXdFcnJvcnNPYmplY3QuZm9ybUxldmVsO1xuXHRcdFx0a2V5LnNldEVycm9ycyhuZXdFcnJvcnNPYmplY3QpO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZGVsZXRlRm4uY2FsbCh0aGlzLmVycm9ycywga2V5KTtcblx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgYWRkU3VwcG9ydEZvclBhdGNoVmFsdWVJbnRlcmNlcHRvcigpOiB2b2lkIHtcblx0XHRjb25zdCBmbiA9IHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wYXRjaFZhbHVlO1xuXHRcdGNvbnN0IG5ld0ZuID0gKFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0W2tleTogc3RyaW5nXTogYW55O1xuXHRcdFx0fSxcblx0XHRcdG9wdGlvbnM/OiB7XG5cdFx0XHRcdG9ubHlTZWxmPzogYm9vbGVhbjtcblx0XHRcdFx0ZW1pdEV2ZW50PzogYm9vbGVhbjtcblx0XHRcdH1cblx0XHQpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMucGF0Y2hWYWx1ZUludGVyY2VwdG9yKHZhbHVlKS50aGVuKCh2YWwpID0+IHtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Zm4uY2FsbCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSA9IG5ld0ZuO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBmb3JtRWxlbWVudDogRm9ybUVsZW1lbnRDb21wb25lbnQpOiAoKSA9PiBhbnkge1xuXHRcdHRoaXMuYWN0aXZlQ29udHJvbHMucHVzaCh7Zm9ybUNvbnRyb2wsIGZvcm1FbGVtZW50fSk7XG5cdFx0bGV0IHBhcmVudEltbXV0YWJsZVZhbHVlRm46ICgpID0+IGFueTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdHBhcmVudEltbXV0YWJsZVZhbHVlRm4gPSB0aGlzLnBhcmVudC5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wsIGZvcm1FbGVtZW50KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMucmVhZE9ubHkpIHtcblx0XHRcdGZvcm1Db250cm9sLmRpc2FibGUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbmFibGVGbjogKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSA9PiB2b2lkID0gZm9ybUNvbnRyb2wuZW5hYmxlO1xuXHRcdGZvcm1Db250cm9sLmVuYWJsZSA9IChvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLnJlYWRPbmx5KSB7XG5cdFx0XHRcdGVuYWJsZUZuLmNhbGwoZm9ybUNvbnRyb2wsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBnZXRJbW11dGFibGVWYWx1ZUZuID0gKCk6IGFueSA9PiB7XG5cdFx0XHRjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoRnJvbVBhcmVudFRvQ29udHJvbChmb3JtQ29udHJvbCk7XG5cdFx0XHRjb25zdCBpbW11dGFibGVWYWx1ZSA9IHRoaXMuZ2V0SW1tdXRhYmxlVmFsdWVGcm9tUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IGltbXV0YWJsZVZhbHVlRnJvbVBhcmVudCA9IHBhcmVudEltbXV0YWJsZVZhbHVlRm4/LigpO1xuXHRcdFx0cmV0dXJuIGNsb25lRGVlcChpbW11dGFibGVWYWx1ZSAhPT0gdW5kZWZpbmVkICA/ICBpbW11dGFibGVWYWx1ZSA6IGltbXV0YWJsZVZhbHVlRnJvbVBhcmVudCk7XG5cdFx0fTtcblxuXHRcdGNvbnN0IHNldFZhbHVlRm46ICh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHtcblx0XHRcdG9ubHlTZWxmPzogYm9vbGVhbjtcblx0XHRcdGVtaXRFdmVudD86IGJvb2xlYW47XG5cdFx0XHRlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U/OiBib29sZWFuO1xuXHRcdFx0ZW1pdFZpZXdUb01vZGVsQ2hhbmdlPzogYm9vbGVhbjtcblx0XHR9KSA9PiB2b2lkID0gZm9ybUNvbnRyb2wuc2V0VmFsdWU7XG5cdFx0Zm9ybUNvbnRyb2wuc2V0VmFsdWUgPSAodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB7XG5cdFx0XHRvbmx5U2VsZj86IGJvb2xlYW47XG5cdFx0XHRlbWl0RXZlbnQ/OiBib29sZWFuO1xuXHRcdFx0ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhbjtcblx0XHRcdGVtaXRWaWV3VG9Nb2RlbENoYW5nZT86IGJvb2xlYW47XG5cdFx0fSkgPT4ge1xuXHRcdFx0Y29uc3QgaW1tdXRhYmxlVmFsdWUgPSBnZXRJbW11dGFibGVWYWx1ZUZuKCk7XG5cdFx0XHRpZiAoaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zPy5lbWl0TW9kZWxUb1ZpZXdDaGFuZ2UgIT09IHRydWUpIHtcblx0XHRcdFx0aWYgKCFpc1ZhbHVlU2V0KG9wdGlvbnMpKSB7XG5cdFx0XHRcdFx0b3B0aW9ucyA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9wdGlvbnMuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHNldFZhbHVlRm4uY2FsbChmb3JtQ29udHJvbCwgaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCA/IGltbXV0YWJsZVZhbHVlIDogdmFsdWUsIG9wdGlvbnMpO1xuXHRcdH07XG5cblx0XHRjb25zdCBpbW11dGFibGVWYWx1ZSA9IGdldEltbXV0YWJsZVZhbHVlRm4oKTtcblx0XHRpZiAoaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Zm9ybUNvbnRyb2wuc2V0VmFsdWUoaW1tdXRhYmxlVmFsdWUpO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZXRJbW11dGFibGVWYWx1ZUZuO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRQYXRoRnJvbVBhcmVudFRvQ29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBBcnJheTxzdHJpbmc+IHtcblx0XHRjb25zdCBwYXRoID0gW107XG5cdFx0bGV0IGN1cnJlbnRDb250cm9sID0gY29udHJvbDtcblx0XHR3aGlsZSAoY3VycmVudENvbnRyb2wucGFyZW50KSB7XG5cdFx0XHRjb25zdCBwYXJlbnQgPSBjdXJyZW50Q29udHJvbC5wYXJlbnQ7XG5cdFx0XHRpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IE9iamVjdC5lbnRyaWVzKHBhcmVudC5jb250cm9scykuZmluZCgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gY3VycmVudENvbnRyb2wpWzBdO1xuXHRcdFx0XHRwYXRoLnB1c2goa2V5KTtcblx0XHRcdH0gZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHRcdGNvbnN0IGlkeCA9IHBhcmVudC5jb250cm9scy5maW5kSW5kZXgoZSA9PiBlID09PSBjdXJyZW50Q29udHJvbCk7XG5cdFx0XHRcdHBhdGgucHVzaChpZHgpO1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudENvbnRyb2wgPSBwYXJlbnQ7XG5cdFx0fVxuXHRcdHJldHVybiBwYXRoLnJldmVyc2UoKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0SW1tdXRhYmxlVmFsdWVGcm9tUGF0aChwYXRoOiBBcnJheTxzdHJpbmc+KTogYW55IHtcblx0XHRsZXQgY3VycmVudCA9IHRoaXMuaW1tdXRhYmxlVmFsdWVzO1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIHBhdGgpIHtcblx0XHRcdGlmICghaXNWYWx1ZVNldChjdXJyZW50Py5ba2V5XSkpIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG5cdFx0fVxuXHRcdHJldHVybiBjdXJyZW50O1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmFjdGl2ZUNvbnRyb2xzID0gdGhpcy5hY3RpdmVDb250cm9scy5maWx0ZXIoKGUpID0+IGUuZm9ybUNvbnRyb2wgIT09IGZvcm1Db250cm9sKTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdHRoaXMucGFyZW50LnVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFkZEZvcm1Hcm91cENvbnRyb2xzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCwgcmVzdWx0OiBBcnJheTxVbnR5cGVkRm9ybUNvbnRyb2w+KTogdm9pZCB7XG5cdFx0T2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG5cdFx0XHRcdHRoaXMuYWRkRm9ybUdyb3VwQ29udHJvbHModmFsdWUsIHJlc3VsdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1BcnJheUNvbnRyb2xzKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1Db250cm9sKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRGb3JtQXJyYXlDb250cm9scyhmb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksIHJlc3VsdDogQXJyYXk8VW50eXBlZEZvcm1Db250cm9sPik6IHZvaWQge1xuXHRcdGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1Hcm91cENvbnRyb2xzKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcblx0XHRcdFx0dGhpcy5hZGRGb3JtQXJyYXlDb250cm9scyh2YWx1ZSwgcmVzdWx0KTtcblx0XHRcdH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdFx0dGhpcy5hZGRGb3JtQ29udHJvbCh2YWx1ZSwgcmVzdWx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QWxsRm9ybUNvbnRyb2xzKCk6IEFycmF5PFVudHlwZWRGb3JtQ29udHJvbD4ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdHRoaXMuYWRkRm9ybUdyb3VwQ29udHJvbHModGhpcy50b3BMZXZlbEZvcm1Db250cm9sLCByZXN1bHQpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy50b3BMZXZlbEZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHR0aGlzLmFkZEZvcm1BcnJheUNvbnRyb2xzKHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbCwgcmVzdWx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYWRkRm9ybUNvbnRyb2woY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCByZXN1bHQ6IEFycmF5PFVudHlwZWRGb3JtQ29udHJvbD4pOiB2b2lkIHtcblx0XHRyZXN1bHQucHVzaChjb250cm9sKTtcblx0fVxuXG5cdHByaXZhdGUgZGlzYWJsZUluYWN0aXZlRm9ybUNvbnRyb2woY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmFjdGl2ZUNvbnRyb2xzLnNvbWUoKGUpID0+IGUuZm9ybUNvbnRyb2wgPT09IGNvbnRyb2wpKSB7XG5cdFx0XHRjb250cm9sLmRpc2FibGUoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0XHRyZXR1cm4gdGhpcy5hY3RpdmVDb250cm9scy5maW5kKChlKSA9PiBlLmZvcm1Db250cm9sID09PSBjb250cm9sKT8uZm9ybUVsZW1lbnQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0V2FybmluZ1RvU2hvdyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy53YXJuaW5ncy5nZXQoY29udHJvbCk7XG5cdH1cblxuXHRwdWJsaWMgdHJ5U3VibWl0KCk6IFByb21pc2U8YW55PiB7XG5cdFx0dGhpcy50b3BMZXZlbEZvcm1Db250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHRjb25zdCBhbGxDb250cm9sczogQXJyYXk8VW50eXBlZEZvcm1Db250cm9sPiA9IHRoaXMuZ2V0QWxsRm9ybUNvbnRyb2xzKCk7XG5cdFx0Y29uc3Qgb3JpZ2luYWxEaXNhYmxlZFN0YXRlcyA9IGFsbENvbnRyb2xzLm1hcChlID0+IHtcblx0XHRcdHJldHVybiB7Y29udHJvbDogZSwgZGlzYWJsZWQ6IGUuZGlzYWJsZWR9O1xuXHRcdH0pO1xuXHRcdGFsbENvbnRyb2xzLmZvckVhY2goZSA9PiB0aGlzLmRpc2FibGVJbmFjdGl2ZUZvcm1Db250cm9sKGUpKTtcblx0XHRhbGxDb250cm9scy5mb3JFYWNoKGUgPT4gZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCkpO1xuXHRcdGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sLnZhbHVlO1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdGNvbnN0IHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHRydWUpO1xuXHRcdFx0Y29uc3QgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIGZhbHNlKTtcblxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wZW5kaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViID0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMgIT09ICdQRU5ESU5HJykge1xuXHRcdFx0XHRcdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVTdWJtaXNzaW9uKG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXMsIHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcywgZm9ybUdyb3VwVmFsdWUpXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlU3VibWlzc2lvbihvcmlnaW5hbERpc2FibGVkU3RhdGVzLCByZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkQnV0RGlzYWJsZWRWYWx1ZXMsIGZvcm1Hcm91cFZhbHVlKVxuXHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1N1Ym1pdHRpbmcgYSBGb3JtQXJyYXkgYXMgdG9wTGV2ZWwgbm90IHN1cHBvcnRlZCAoeWV0KS4gV3JhcCBpdCBpbiBhIEZvcm1Hcm91cC4nKTtcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlU3VibWlzc2lvbihcblx0XHRvcmlnaW5hbERpc2FibGVkU3RhdGVzOiBBcnJheTx7IGNvbnRyb2w6IEZvcm1Db250cm9sPGFueT47IGRpc2FibGVkOiBib29sZWFuIH0+LFxuXHRcdHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlczogUmVjb3JkPGFueSwgYW55Pixcblx0XHRyZW5kZXJlZEJ1dERpc2FibGVkVmFsdWVzOiBSZWNvcmQ8YW55LCBhbnk+LFxuXHRcdGZvcm1Hcm91cFZhbHVlKTogUHJvbWlzZTxhbnk+XG5cdHtcblx0XHRpZiAodGhpcy50b3BMZXZlbEZvcm1Db250cm9sLmludmFsaWQpIHtcblx0XHRcdHRoaXMuYWN0aXZlQ29udHJvbHMuZmluZCgoZSkgPT4gZS5mb3JtQ29udHJvbC5pbnZhbGlkKT8uZm9ybUVsZW1lbnQ/LnNjcm9sbFRvKCk7XG5cdFx0XHR0aGlzLnNldERpc2FibGVkU3RhdGVzRm9yQWxsQ29udHJvbHMob3JpZ2luYWxEaXNhYmxlZFN0YXRlcyk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoaW52YWxpZEZpZWxkc1N5bWJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0RGlzYWJsZWRTdGF0ZXNGb3JBbGxDb250cm9scyhvcmlnaW5hbERpc2FibGVkU3RhdGVzKTtcblx0XHRcdGNvbnN0IHJlbmRlcmVkVmFsdWVzID0gZGVlcE1lcmdlKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtmb3JtR3JvdXBWYWx1ZSwgcmVuZGVyZWRWYWx1ZXNdKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtR3JvdXAoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGVuYWJsZWQ6IGJvb2xlYW4sIHZhbHVlT2JqZWN0ID0ge30pOiBvYmplY3Qge1xuXHRcdE9iamVjdC5lbnRyaWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoW25hbWUsIGNvbnRyb2xdKSA9PiB7XG5cdFx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sICYmIGNvbnRyb2wuZW5hYmxlZCA9PT0gZW5hYmxlZCAmJiB0aGlzLmFjdGl2ZUNvbnRyb2xzLnNvbWUoZSA9PiBlLmZvcm1Db250cm9sID09PSBjb250cm9sKSkge1xuXHRcdFx0XHR2YWx1ZU9iamVjdFtuYW1lXSA9IGNvbnRyb2wudmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcblx0XHRcdFx0dmFsdWVPYmplY3RbbmFtZV0gPSBbXTtcblx0XHRcdFx0dGhpcy5nZXRSZW5kZXJlZEZpZWxkVmFsdWVzRm9ybUFycmF5KGNvbnRyb2wsIGVuYWJsZWQsIHZhbHVlT2JqZWN0W25hbWVdKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuXHRcdFx0XHR2YWx1ZU9iamVjdFtuYW1lXSA9IHt9O1xuXHRcdFx0XHR0aGlzLmdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtR3JvdXAoY29udHJvbCwgZW5hYmxlZCwgdmFsdWVPYmplY3RbbmFtZV0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiB2YWx1ZU9iamVjdDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgZW5hYmxlZDogYm9vbGVhbiwgdmFsdWVBcnJheTogQXJyYXk8YW55Pik6IHZvaWQge1xuXHRcdGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcblx0XHRcdGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgJiYgY29udHJvbC5lbmFibGVkID09PSBlbmFibGVkICYmIHRoaXMuYWN0aXZlQ29udHJvbHMuc29tZShlID0+IGUuZm9ybUNvbnRyb2wgPT09IGNvbnRyb2wpKSB7XG5cdFx0XHRcdHZhbHVlQXJyYXkucHVzaChjb250cm9sLnZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuXHRcdFx0XHRjb25zdCBuZXdBcnJheSA9IFtdO1xuXHRcdFx0XHR2YWx1ZUFycmF5LnB1c2gobmV3QXJyYXkpO1xuXHRcdFx0XHR0aGlzLmdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtQXJyYXkoY29udHJvbCwgZW5hYmxlZCwgbmV3QXJyYXkpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG5cdFx0XHRcdGNvbnN0IG5ld09iamVjdCA9IHt9O1xuXHRcdFx0XHR2YWx1ZUFycmF5LnB1c2gobmV3T2JqZWN0KTtcblx0XHRcdFx0dGhpcy5nZXRSZW5kZXJlZEZpZWxkVmFsdWVzRm9ybUdyb3VwKGNvbnRyb2wsIGVuYWJsZWQsIG5ld09iamVjdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgX2V4dF9nZXRSZW5kZXJlZEZpZWxkVmFsdWVzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdGNvbnN0IHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHRydWUpO1xuXHRcdFx0Y29uc3QgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIGZhbHNlKTtcblx0XHRcdGNvbnN0IGFsbFJlbmRlcmVkVmFsdWVzID0gZGVlcE1lcmdlKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyk7XG5cdFx0XHRyZXR1cm4gYWxsUmVuZGVyZWRWYWx1ZXM7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcignR2V0dGluZyB2YWx1ZXMgZnJvbSBhIEZvcm1BcnJheSBhcyB0b3BMZXZlbCBpcyBub3Qgc3VwcG9ydGVkICh5ZXQpLicpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXREaXNhYmxlZFN0YXRlc0ZvckFsbENvbnRyb2xzKG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXM6IEFycmF5PHsgY29udHJvbDogQWJzdHJhY3RDb250cm9sOyBkaXNhYmxlZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXMuZm9yRWFjaCgoZSkgPT4ge1xuXHRcdFx0aWYgKGUuZGlzYWJsZWQpIHtcblx0XHRcdFx0ZS5jb250cm9sLmRpc2FibGUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGUuY29udHJvbC5lbmFibGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIiwiPGZvcm0+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZm9ybT5cblxuXG4iXX0=
|
|
442
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rbGlwcGEvbmd4LWVuaGFuY3ktZm9ybXMvc3JjL2xpYi9mb3JtL2Zvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2xpcHBhL25neC1lbmhhbmN5LWZvcm1zL3NyYy9saWIvZm9ybS9mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFFTixRQUFRLEVBRVIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVOLFNBQVMsRUFDVCxXQUFXLEVBQ1gsU0FBUyxFQUNULGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZ0JBQWdCLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7QUFFakMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7QUFNdEUsTUFBTSxPQUFPLGdCQUFnQjtJQUo3QjtRQU9VLDZCQUF3QixHQUFZLEtBQUssQ0FBQztRQUMxQyw4QkFBeUIsR0FBWSxLQUFLLENBQUM7S0FDcEQ7OEdBTFksZ0JBQWdCO2tHQUFoQixnQkFBZ0I7OzJGQUFoQixnQkFBZ0I7a0JBSjVCLFNBQVM7bUJBQUM7b0JBQ1YsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsY0FBYztpQkFDeEI7OEJBRVMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxFQUFFO3NCQUFWLEtBQUs7Z0JBQ0csd0JB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YUFBYSxnYkM5QzFCLG9EQUtBOzsyRkR5Q2EsYUFBYTtrQkFMekIsU0FBUzsrQkFDQyxVQUFVOzswQkF5QlAsUUFBUTs7MEJBQUksUUFBUTs7MEJBQW1DLFFBQVE7eUNBcEI1RCxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGlCQUFpQjtzQkFBaEMsS0FBSztnQkFDVSxvQkFBb0I7c0JBQW5DLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLHFCQUFxQjtzQkFBcEMsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNXLFVBQVU7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdERpcmVjdGl2ZSxcblx0RXZlbnRFbWl0dGVyLFxuXHRJbnB1dCxcblx0T25DaGFuZ2VzLFxuXHRPbkRlc3Ryb3ksXG5cdE9uSW5pdCxcblx0T3B0aW9uYWwsXG5cdE91dHB1dCxcblx0U2ltcGxlQ2hhbmdlcyxcblx0U2tpcFNlbGYsXG5cdFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0QWJzdHJhY3RDb250cm9sLFxuXHRGb3JtQXJyYXksXG5cdEZvcm1Db250cm9sLFxuXHRGb3JtR3JvdXAsXG5cdFVudHlwZWRGb3JtQXJyYXksXG5cdFVudHlwZWRGb3JtQ29udHJvbCxcblx0VW50eXBlZEZvcm1Hcm91cFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0Zvcm1FbGVtZW50Q29tcG9uZW50fSBmcm9tICcuL2Zvcm0tZWxlbWVudC9mb3JtLWVsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7aXNWYWx1ZVNldH0gZnJvbSAnLi4vdXRpbC92YWx1ZXMnO1xuaW1wb3J0IHtkZWVwTWVyZ2V9IGZyb20gJy4uL3V0aWwvb2JqZWN0cyc7XG5pbXBvcnQge2Nsb25lRGVlcH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGludmFsaWRGaWVsZHNTeW1ib2wgPSBTeW1ib2woJ05vdCBhbGwgZmllbGRzIGFyZSB2YWxpZCcpO1xuXG5ARGlyZWN0aXZlKHtcblx0Ly8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmRpcmVjdGl2ZS1zZWxlY3RvclxuXHRzZWxlY3RvcjogJ2tscC1zdWItZm9ybScsXG59KVxuZXhwb3J0IGNsYXNzIFN1YkZvcm1EaXJlY3RpdmUge1xuXHRASW5wdXQoKSBpbmplY3RJbnRvOiBVbnR5cGVkRm9ybUFycmF5IHwgVW50eXBlZEZvcm1Hcm91cDtcblx0QElucHV0KCkgYXQ6IG51bWJlciB8IHN0cmluZztcblx0QElucHV0KCkgbWFudWFsbHlUcmlnZ2VySW5qZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cdEBJbnB1dCgpIGFsbG93SW5qZWN0aW9uVG9PdmVyd3JpdGU6IGJvb2xlYW4gPSBmYWxzZTtcbn1cblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAna2xwLWZvcm0nLFxuXHR0ZW1wbGF0ZVVybDogJy4vZm9ybS5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL2Zvcm0uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xuXHRASW5wdXQoKSBwdWJsaWMgcmVhZE9ubHkgPSBmYWxzZTtcblx0QElucHV0KCkgcHVibGljIHNob3dFcnJvck1lc3NhZ2VzID0gdHJ1ZTtcblx0QElucHV0KCkgcHVibGljIGVycm9yTWVzc2FnZUxvY2F0aW9uOiAnYmVsb3dDYXB0aW9uJyB8ICdyaWdodE9mQ2FwdGlvbicgPSAnYmVsb3dDYXB0aW9uJztcblx0QElucHV0KCkgcHVibGljIGZvcm1Hcm91cDogRm9ybUdyb3VwO1xuXHRASW5wdXQoKSBwdWJsaWMgZm9ybUFycmF5OiBGb3JtQXJyYXk7XG5cdEBJbnB1dCgpIHB1YmxpYyB3YXJuaW5nczogTWFwPEFic3RyYWN0Q29udHJvbCwgc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4gPSBuZXcgTWFwPEFic3RyYWN0Q29udHJvbCwgc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55Pj4oKTtcblx0QElucHV0KCkgcHVibGljIGltbXV0YWJsZVZhbHVlczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuXHRASW5wdXQoKSBwdWJsaWMgZXJyb3JzOiBNYXA8QWJzdHJhY3RDb250cm9sLCBzdHJpbmc+ID0gbmV3IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4oKTtcblx0QElucHV0KCkgcHVibGljIHBhdGNoVmFsdWVJbnRlcmNlcHRvcjogKHZhbHVlczogYW55KSA9PiBQcm9taXNlPGFueT47XG5cdEBJbnB1dCgpIHB1YmxpYyBhbGxvd1N1Ym1pdE9uOiAnYnV0dG9uQW5kRW50ZXInIHwgJ2J1dHRvbk9ubHknID0gJ2J1dHRvbkFuZEVudGVyJztcblx0QE91dHB1dCgpIHB1YmxpYyBvbkluamVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xuXG5cdHByaXZhdGUgdG9wTGV2ZWxGb3JtQ29udHJvbDogQWJzdHJhY3RDb250cm9sO1xuXG5cdC8vIHdlIGtlZXAgdHJhY2sgb2Ygd2hhdCBmb3JtIGNvbnRyb2xzIGFyZSBhY3R1YWxseSByZW5kZXJlZC4gT25seSB0aG9zZSBjb3VudCB3aGVuIGxvb2tpbmcgYXQgZm9ybSB2YWxpZGF0aW9uXG5cdHByaXZhdGUgYWN0aXZlQ29udHJvbHM6IEFycmF5PHtcblx0XHRmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sO1xuXHRcdGZvcm1FbGVtZW50OiBGb3JtRWxlbWVudENvbXBvbmVudDtcblx0fT4gPSBbXTtcblxuXHRjb25zdHJ1Y3RvcihAU2tpcFNlbGYoKSBAT3B0aW9uYWwoKSBwcml2YXRlIHBhcmVudDogRm9ybUNvbXBvbmVudCwgQE9wdGlvbmFsKCkgcHJpdmF0ZSBzdWJGb3JtRGlyZWN0aXZlOiBTdWJGb3JtRGlyZWN0aXZlKSB7XG5cdH1cblxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cCA/PyB0aGlzLmZvcm1BcnJheTtcblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLnBhdGNoVmFsdWVJbnRlcmNlcHRvcikpIHtcblx0XHRcdHRoaXMuYWRkU3VwcG9ydEZvclBhdGNoVmFsdWVJbnRlcmNlcHRvcigpO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldCh0aGlzLnBhcmVudCkgJiYgaXNWYWx1ZVNldCh0aGlzLnN1YkZvcm1EaXJlY3RpdmUpKSB7XG5cdFx0XHRpZiAodGhpcy5zdWJGb3JtRGlyZWN0aXZlLm1hbnVhbGx5VHJpZ2dlckluamVjdGlvbikge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBpZiB0aGUgYGZvcm1Db21wb25lbnRUb0luamVjdGAgaXMgbm90IHNldCwganVzdCBhdHRhY2ggdGhlIGZpcnN0IHRoYXQgcmVxdWVzdHMgYW4gaW5qZWN0aW9uXG5cdFx0XHR0aGlzLmF0dGFjaEFzU3ViRm9ybSgpO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBfZXh0X2F0dGFjaEFzU3ViRm9ybSgpOiB2b2lkIHtcblx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5wYXJlbnQpKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ05vIHBhcmVudCB0byBpbmplY3QgdGhpcyBmb3JtIGludG8gd2FzIGZvdW5kLicpO1xuXHRcdH1cblx0XHRpZiAoIWlzVmFsdWVTZXQodGhpcy5zdWJGb3JtRGlyZWN0aXZlKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdTdWJmb3JtIGRpcmVjdGl2ZSBub3QgZm91bmQuJyk7XG5cdFx0fVxuXHRcdHRoaXMuYXR0YWNoQXNTdWJGb3JtKCk7XG5cdH1cblxuXHRwcml2YXRlIGF0dGFjaEFzU3ViRm9ybSgpOiB2b2lkIHtcblx0XHRjb25zdCBpbmplY3RJbnRvID0gdGhpcy5zdWJGb3JtRGlyZWN0aXZlLmluamVjdEludG87XG5cdFx0Y29uc3QgaW5qZWN0QXQgPSB0aGlzLnN1YkZvcm1EaXJlY3RpdmUuYXQ7XG5cdFx0Y29uc3QgYWxsb3dJbmplY3Rpb25Ub092ZXJ3cml0ZSA9IHRoaXMuc3ViRm9ybURpcmVjdGl2ZS5hbGxvd0luamVjdGlvblRvT3ZlcndyaXRlO1xuXHRcdGlmIChpbmplY3RJbnRvIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuXHRcdFx0aWYgKCFhbGxvd0luamVjdGlvblRvT3ZlcndyaXRlKSB7XG5cdFx0XHRcdGlmIChpbmplY3RJbnRvLmF0KGluamVjdEF0IGFzIG51bWJlcikgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgaW5qZWN0SW50by5hdChpbmplY3RBdCBhcyBudW1iZXIpIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhbHJlYWR5IGlzIGEgc3ViZm9ybSBpbmplY3RlZCBhdCAke2luamVjdEF0fS4gTWFrZSBzdXJlIHRoaXMgcHJvcGVydHkgZG9lcyBub3QgaGF2ZSBhIGZvcm1Hcm91cCBvciBmb3JtQXJyYXkgYWxyZWFkeSBhdHRhY2hlZCB3aGVuIGxpbmtpbmcgaXQgdG8gYSBzdWJGb3JtLmApO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodHlwZW9mIGluamVjdEF0ICE9PSAnbnVtYmVyJykge1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCBpbmRleCBGb3JtQXJyYXkgd2l0aCAke3R5cGVvZiBpbmplY3RBdH1gKTtcblx0XHRcdH1cblx0XHRcdGlmIChpbmplY3RJbnRvLmF0KGluamVjdEF0KT8uZGlzYWJsZWQpIHtcblx0XHRcdFx0dGhpcy50b3BMZXZlbEZvcm1Db250cm9sLmRpc2FibGUoKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IHNvdXJjZSA9IGluamVjdEludG8uYXQoaW5qZWN0QXQpO1xuXHRcdFx0Y29uc3QgdmFsdWVCZWZvcmVJbmplY3QgPSBzb3VyY2U/LnZhbHVlO1xuXHRcdFx0aWYgKGlzVmFsdWVTZXQodmFsdWVCZWZvcmVJbmplY3QpKSB7XG5cdFx0XHRcdHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHRcdH1cblx0XHRcdGluamVjdEludG8uc2V0Q29udHJvbChpbmplY3RBdCwgdGhpcy50b3BMZXZlbEZvcm1Db250cm9sKTtcblx0XHRcdHRoaXMub25JbmplY3RlZC5lbWl0KHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHR9IGVsc2UgaWYgKGluamVjdEludG8gaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG5cdFx0XHRpZiAoIWFsbG93SW5qZWN0aW9uVG9PdmVyd3JpdGUpIHtcblx0XHRcdFx0aWYgKGluamVjdEludG8uZ2V0KGluamVjdEF0IGFzIHN0cmluZykgaW5zdGFuY2VvZiBGb3JtR3JvdXAgfHwgaW5qZWN0SW50by5nZXQoaW5qZWN0QXQgYXMgc3RyaW5nKSBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgVGhlcmUgYWxyZWFkeSBpcyBhIHN1YmZvcm0gaW5qZWN0ZWQgYXQgJHtpbmplY3RBdH0uIE1ha2Ugc3VyZSB0aGlzIHByb3BlcnR5IGRvZXMgbm90IGhhdmUgYSBmb3JtR3JvdXAgb3IgZm9ybUFycmF5IGFscmVhZHkgYXR0YWNoZWQgd2hlbiBsaW5raW5nIGl0IHRvIGEgc3ViRm9ybS5gKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHR5cGVvZiBpbmplY3RBdCAhPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgaW5kZXggRm9ybUdyb3VwIHdpdGggJHt0eXBlb2YgaW5qZWN0QXR9YCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoaW5qZWN0SW50by5nZXQoaW5qZWN0QXQpPy5kaXNhYmxlZCkge1xuXHRcdFx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3Qgc291cmNlID0gaW5qZWN0SW50by5nZXQoaW5qZWN0QXQpO1xuXHRcdFx0Y29uc3QgdmFsdWVCZWZvcmVJbmplY3QgPSBzb3VyY2U/LnZhbHVlO1xuXHRcdFx0aWYgKGlzVmFsdWVTZXQodmFsdWVCZWZvcmVJbmplY3QpKSB7XG5cdFx0XHRcdHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHRcdH1cblx0XHRcdGluamVjdEludG8uc2V0Q29udHJvbChpbmplY3RBdCwgdGhpcy50b3BMZXZlbEZvcm1Db250cm9sKTtcblx0XHRcdHRoaXMub25JbmplY3RlZC5lbWl0KHZhbHVlQmVmb3JlSW5qZWN0KTtcblx0XHR9XG5cdH1cblxuXHRuZ09uQ2hhbmdlcyhzaW1wbGVDaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG5cdFx0aWYgKHNpbXBsZUNoYW5nZXMucmVhZE9ubHk/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXHRcdFx0dGhpcy5hY3RpdmVDb250cm9scy5mb3JFYWNoKGUgPT4gZS5mb3JtQ29udHJvbC5kaXNhYmxlKCkpO1xuXHRcdH1cblx0XHRpZiAoaXNWYWx1ZVNldChzaW1wbGVDaGFuZ2VzLndhcm5pbmdzPy5jdXJyZW50VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhdGNoRm9ybVdhcm5pbmdzTWFwKCk7XG5cdFx0fVxuXHRcdGlmIChpc1ZhbHVlU2V0KHNpbXBsZUNoYW5nZXMuZXJyb3JzPy5jdXJyZW50VmFsdWUpKSB7XG5cdFx0XHR0aGlzLnBhdGNoRm9ybUVycm9yc01hcCgpO1xuXHRcdH1cblx0fVxuXG5cdG5nT25EZXN0cm95KCk6IHZvaWQge1xuXHRcdGlmIChpc1ZhbHVlU2V0KHRoaXMucGFyZW50KSAmJiBpc1ZhbHVlU2V0KHRoaXMuc3ViRm9ybURpcmVjdGl2ZSkpIHtcblx0XHRcdGNvbnN0IGluamVjdEludG8gPSB0aGlzLnN1YkZvcm1EaXJlY3RpdmUuaW5qZWN0SW50bztcblx0XHRcdGNvbnN0IGluamVjdEF0ID0gdGhpcy5zdWJGb3JtRGlyZWN0aXZlLmF0O1xuXHRcdFx0aWYgKGluamVjdEludG8gaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUFycmF5KSB7XG5cdFx0XHRcdGNvbnN0IGlkeCA9IGluamVjdEludG8uY29udHJvbHMuZmluZEluZGV4KGUgPT4gZSA9PT0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sKTtcblx0XHRcdFx0aW5qZWN0SW50by5yZW1vdmVBdChpZHgpO1xuXHRcdFx0fSBlbHNlIGlmIChpbmplY3RJbnRvIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuXHRcdFx0XHRpZiAodHlwZW9mIGluamVjdEF0ICE9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdHRocm93IG5ldyBFcnJvcihgY2Fubm90IGluZGV4IEZvcm1Hcm91cCB3aXRoICR7dHlwZW9mIGluamVjdEF0fWApO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGluamVjdEludG8uc2V0Q29udHJvbChpbmplY3RBdCwgbmV3IEZvcm1Db250cm9sKCkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgcGF0Y2hGb3JtV2FybmluZ3NNYXAoKTogdm9pZCB7XG5cdFx0Y29uc3Qgc2V0Rm4gPSB0aGlzLndhcm5pbmdzLnNldDtcblx0XHR0aGlzLndhcm5pbmdzLnNldCA9IChrZXk6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZyk6IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4gPT4ge1xuXHRcdFx0Y29uc3QgcHJldlZhbCA9IHRoaXMud2FybmluZ3MuZ2V0KGtleSk7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBzZXRGbi5jYWxsKHRoaXMud2FybmluZ3MsIGtleSwgdmFsdWUpO1xuXHRcdFx0aWYgKHByZXZWYWwgIT09IHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGRlbGV0ZUZuID0gdGhpcy53YXJuaW5ncy5kZWxldGU7XG5cdFx0dGhpcy53YXJuaW5ncy5kZWxldGUgPSAoa2V5OiBBYnN0cmFjdENvbnRyb2wpOiBib29sZWFuID0+IHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGRlbGV0ZUZuLmNhbGwodGhpcy53YXJuaW5ncywga2V5KTtcblx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgcGF0Y2hGb3JtRXJyb3JzTWFwKCk6IHZvaWQge1xuXHRcdGNvbnN0IHNldEZuID0gdGhpcy5lcnJvcnMuc2V0O1xuXHRcdHRoaXMuZXJyb3JzLnNldCA9IChrZXk6IEFic3RyYWN0Q29udHJvbCwgdmFsdWU6IHN0cmluZyk6IE1hcDxBYnN0cmFjdENvbnRyb2wsIHN0cmluZz4gPT4ge1xuXHRcdFx0Y29uc3QgcHJldlZhbCA9IHRoaXMuZXJyb3JzLmdldChrZXkpO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gc2V0Rm4uY2FsbCh0aGlzLmVycm9ycywga2V5LCB2YWx1ZSk7XG5cdFx0XHRrZXkuc2V0RXJyb3JzKHsgLi4ua2V5LmVycm9ycywgZm9ybUxldmVsOiB2YWx1ZX0pO1xuXHRcdFx0aWYgKHByZXZWYWwgIT09IHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblxuXHRcdGNvbnN0IGRlbGV0ZUZuID0gdGhpcy5lcnJvcnMuZGVsZXRlO1xuXHRcdHRoaXMuZXJyb3JzLmRlbGV0ZSA9IChrZXk6IEFic3RyYWN0Q29udHJvbCk6IGJvb2xlYW4gPT4ge1xuXHRcdFx0Y29uc3QgbmV3RXJyb3JzT2JqZWN0ID0ga2V5LmVycm9ycztcblx0XHRcdGRlbGV0ZSBuZXdFcnJvcnNPYmplY3QuZm9ybUxldmVsO1xuXHRcdFx0a2V5LnNldEVycm9ycyhuZXdFcnJvcnNPYmplY3QpO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZGVsZXRlRm4uY2FsbCh0aGlzLmVycm9ycywga2V5KTtcblx0XHRcdHRoaXMuZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGtleSk/LmRldGVybWluZVBvcHVwU3RhdGUoKTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fTtcblx0fVxuXG5cdHByaXZhdGUgYWRkU3VwcG9ydEZvclBhdGNoVmFsdWVJbnRlcmNlcHRvcigpOiB2b2lkIHtcblx0XHRjb25zdCBmbiA9IHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wYXRjaFZhbHVlO1xuXHRcdGNvbnN0IG5ld0ZuID0gKFxuXHRcdFx0dmFsdWU6IHtcblx0XHRcdFx0W2tleTogc3RyaW5nXTogYW55O1xuXHRcdFx0fSxcblx0XHRcdG9wdGlvbnM/OiB7XG5cdFx0XHRcdG9ubHlTZWxmPzogYm9vbGVhbjtcblx0XHRcdFx0ZW1pdEV2ZW50PzogYm9vbGVhbjtcblx0XHRcdH1cblx0XHQpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMucGF0Y2hWYWx1ZUludGVyY2VwdG9yKHZhbHVlKS50aGVuKCh2YWwpID0+IHtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Zm4uY2FsbCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fTtcblx0XHR0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSA9IG5ld0ZuO1xuXHR9XG5cblx0cHVibGljIHJlZ2lzdGVyQ29udHJvbChmb3JtQ29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCBmb3JtRWxlbWVudDogRm9ybUVsZW1lbnRDb21wb25lbnQpOiAoKSA9PiBhbnkge1xuXHRcdHRoaXMuYWN0aXZlQ29udHJvbHMucHVzaCh7Zm9ybUNvbnRyb2wsIGZvcm1FbGVtZW50fSk7XG5cdFx0bGV0IHBhcmVudEltbXV0YWJsZVZhbHVlRm46ICgpID0+IGFueTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdHBhcmVudEltbXV0YWJsZVZhbHVlRm4gPSB0aGlzLnBhcmVudC5yZWdpc3RlckNvbnRyb2woZm9ybUNvbnRyb2wsIGZvcm1FbGVtZW50KTtcblx0XHR9XG5cdFx0aWYgKHRoaXMucmVhZE9ubHkpIHtcblx0XHRcdGZvcm1Db250cm9sLmRpc2FibGUoKTtcblx0XHR9XG5cblx0XHRjb25zdCBlbmFibGVGbjogKG9wdHM/OiB7IG9ubHlTZWxmPzogYm9vbGVhbjsgZW1pdEV2ZW50PzogYm9vbGVhbiB9KSA9PiB2b2lkID0gZm9ybUNvbnRyb2wuZW5hYmxlO1xuXHRcdGZvcm1Db250cm9sLmVuYWJsZSA9IChvcHRzPzogeyBvbmx5U2VsZj86IGJvb2xlYW47IGVtaXRFdmVudD86IGJvb2xlYW4gfSkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLnJlYWRPbmx5KSB7XG5cdFx0XHRcdGVuYWJsZUZuLmNhbGwoZm9ybUNvbnRyb2wsIG9wdHMpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRjb25zdCBnZXRJbW11dGFibGVWYWx1ZUZuID0gKCk6IGFueSA9PiB7XG5cdFx0XHRjb25zdCBwYXRoID0gdGhpcy5nZXRQYXRoRnJvbVBhcmVudFRvQ29udHJvbChmb3JtQ29udHJvbCk7XG5cdFx0XHRjb25zdCBpbW11dGFibGVWYWx1ZSA9IHRoaXMuZ2V0SW1tdXRhYmxlVmFsdWVGcm9tUGF0aChwYXRoKTtcblx0XHRcdGNvbnN0IGltbXV0YWJsZVZhbHVlRnJvbVBhcmVudCA9IHBhcmVudEltbXV0YWJsZVZhbHVlRm4/LigpO1xuXHRcdFx0cmV0dXJuIGNsb25lRGVlcChpbW11dGFibGVWYWx1ZSAhPT0gdW5kZWZpbmVkICA/ICBpbW11dGFibGVWYWx1ZSA6IGltbXV0YWJsZVZhbHVlRnJvbVBhcmVudCk7XG5cdFx0fTtcblxuXHRcdGNvbnN0IHNldFZhbHVlRm46ICh2YWx1ZTogdW5rbm93biwgb3B0aW9ucz86IHtcblx0XHRcdG9ubHlTZWxmPzogYm9vbGVhbjtcblx0XHRcdGVtaXRFdmVudD86IGJvb2xlYW47XG5cdFx0XHRlbWl0TW9kZWxUb1ZpZXdDaGFuZ2U/OiBib29sZWFuO1xuXHRcdFx0ZW1pdFZpZXdUb01vZGVsQ2hhbmdlPzogYm9vbGVhbjtcblx0XHR9KSA9PiB2b2lkID0gZm9ybUNvbnRyb2wuc2V0VmFsdWU7XG5cdFx0Zm9ybUNvbnRyb2wuc2V0VmFsdWUgPSAodmFsdWU6IHVua25vd24sIG9wdGlvbnM/OiB7XG5cdFx0XHRvbmx5U2VsZj86IGJvb2xlYW47XG5cdFx0XHRlbWl0RXZlbnQ/OiBib29sZWFuO1xuXHRcdFx0ZW1pdE1vZGVsVG9WaWV3Q2hhbmdlPzogYm9vbGVhbjtcblx0XHRcdGVtaXRWaWV3VG9Nb2RlbENoYW5nZT86IGJvb2xlYW47XG5cdFx0fSkgPT4ge1xuXHRcdFx0Y29uc3QgaW1tdXRhYmxlVmFsdWUgPSBnZXRJbW11dGFibGVWYWx1ZUZuKCk7XG5cdFx0XHRpZiAoaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBvcHRpb25zPy5lbWl0TW9kZWxUb1ZpZXdDaGFuZ2UgIT09IHRydWUpIHtcblx0XHRcdFx0aWYgKCFpc1ZhbHVlU2V0KG9wdGlvbnMpKSB7XG5cdFx0XHRcdFx0b3B0aW9ucyA9IHt9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9wdGlvbnMuZW1pdE1vZGVsVG9WaWV3Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHNldFZhbHVlRm4uY2FsbChmb3JtQ29udHJvbCwgaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCA/IGltbXV0YWJsZVZhbHVlIDogdmFsdWUsIG9wdGlvbnMpO1xuXHRcdH07XG5cblx0XHRjb25zdCBpbW11dGFibGVWYWx1ZSA9IGdldEltbXV0YWJsZVZhbHVlRm4oKTtcblx0XHRpZiAoaW1tdXRhYmxlVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Zm9ybUNvbnRyb2wuc2V0VmFsdWUoaW1tdXRhYmxlVmFsdWUpO1xuXHRcdH1cblxuXHRcdHJldHVybiBnZXRJbW11dGFibGVWYWx1ZUZuO1xuXHR9XG5cblx0cHJpdmF0ZSBnZXRQYXRoRnJvbVBhcmVudFRvQ29udHJvbChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBBcnJheTxzdHJpbmc+IHtcblx0XHRjb25zdCBwYXRoID0gW107XG5cdFx0bGV0IGN1cnJlbnRDb250cm9sID0gY29udHJvbDtcblx0XHR3aGlsZSAoY3VycmVudENvbnRyb2wucGFyZW50KSB7XG5cdFx0XHRjb25zdCBwYXJlbnQgPSBjdXJyZW50Q29udHJvbC5wYXJlbnQ7XG5cdFx0XHRpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG5cdFx0XHRcdGNvbnN0IGtleSA9IE9iamVjdC5lbnRyaWVzKHBhcmVudC5jb250cm9scykuZmluZCgoW2tleSwgdmFsdWVdKSA9PiB2YWx1ZSA9PT0gY3VycmVudENvbnRyb2wpWzBdO1xuXHRcdFx0XHRwYXRoLnB1c2goa2V5KTtcblx0XHRcdH0gZWxzZSBpZiAocGFyZW50IGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHRcdGNvbnN0IGlkeCA9IHBhcmVudC5jb250cm9scy5maW5kSW5kZXgoZSA9PiBlID09PSBjdXJyZW50Q29udHJvbCk7XG5cdFx0XHRcdHBhdGgucHVzaChpZHgpO1xuXHRcdFx0fVxuXHRcdFx0Y3VycmVudENvbnRyb2wgPSBwYXJlbnQ7XG5cdFx0fVxuXHRcdHJldHVybiBwYXRoLnJldmVyc2UoKTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0SW1tdXRhYmxlVmFsdWVGcm9tUGF0aChwYXRoOiBBcnJheTxzdHJpbmc+KTogYW55IHtcblx0XHRsZXQgY3VycmVudCA9IHRoaXMuaW1tdXRhYmxlVmFsdWVzO1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIHBhdGgpIHtcblx0XHRcdGlmICghaXNWYWx1ZVNldChjdXJyZW50Py5ba2V5XSkpIHtcblx0XHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHRcdH1cblx0XHRcdGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG5cdFx0fVxuXHRcdHJldHVybiBjdXJyZW50O1xuXHR9XG5cblx0cHVibGljIHVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wpOiB2b2lkIHtcblx0XHR0aGlzLmFjdGl2ZUNvbnRyb2xzID0gdGhpcy5hY3RpdmVDb250cm9scy5maWx0ZXIoKGUpID0+IGUuZm9ybUNvbnRyb2wgIT09IGZvcm1Db250cm9sKTtcblx0XHRpZiAodGhpcy5wYXJlbnQpIHtcblx0XHRcdHRoaXMucGFyZW50LnVucmVnaXN0ZXJDb250cm9sKGZvcm1Db250cm9sKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGFkZEZvcm1Hcm91cENvbnRyb2xzKGZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cCwgcmVzdWx0OiBBcnJheTxVbnR5cGVkRm9ybUNvbnRyb2w+KTogdm9pZCB7XG5cdFx0T2JqZWN0LnZhbHVlcyhmb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUdyb3VwKSB7XG5cdFx0XHRcdHRoaXMuYWRkRm9ybUdyb3VwQ29udHJvbHModmFsdWUsIHJlc3VsdCk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgVW50eXBlZEZvcm1BcnJheSkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1BcnJheUNvbnRyb2xzKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQ29udHJvbCkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1Db250cm9sKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBhZGRGb3JtQXJyYXlDb250cm9scyhmb3JtQXJyYXk6IFVudHlwZWRGb3JtQXJyYXksIHJlc3VsdDogQXJyYXk8VW50eXBlZEZvcm1Db250cm9sPik6IHZvaWQge1xuXHRcdGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKCh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKHZhbHVlIGluc3RhbmNlb2YgVW50eXBlZEZvcm1Hcm91cCkge1xuXHRcdFx0XHR0aGlzLmFkZEZvcm1Hcm91cENvbnRyb2xzKHZhbHVlLCByZXN1bHQpO1xuXHRcdFx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFVudHlwZWRGb3JtQXJyYXkpIHtcblx0XHRcdFx0dGhpcy5hZGRGb3JtQXJyYXlDb250cm9scyh2YWx1ZSwgcmVzdWx0KTtcblx0XHRcdH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBVbnR5cGVkRm9ybUNvbnRyb2wpIHtcblx0XHRcdFx0dGhpcy5hZGRGb3JtQ29udHJvbCh2YWx1ZSwgcmVzdWx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0QWxsRm9ybUNvbnRyb2xzKCk6IEFycmF5PFVudHlwZWRGb3JtQ29udHJvbD4ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdHRoaXMuYWRkRm9ybUdyb3VwQ29udHJvbHModGhpcy50b3BMZXZlbEZvcm1Db250cm9sLCByZXN1bHQpO1xuXHRcdH0gZWxzZSBpZiAodGhpcy50b3BMZXZlbEZvcm1Db250cm9sIGluc3RhbmNlb2YgRm9ybUFycmF5KSB7XG5cdFx0XHR0aGlzLmFkZEZvcm1BcnJheUNvbnRyb2xzKHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbCwgcmVzdWx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdHByaXZhdGUgYWRkRm9ybUNvbnRyb2woY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sLCByZXN1bHQ6IEFycmF5PFVudHlwZWRGb3JtQ29udHJvbD4pOiB2b2lkIHtcblx0XHRyZXN1bHQucHVzaChjb250cm9sKTtcblx0fVxuXG5cdHByaXZhdGUgZGlzYWJsZUluYWN0aXZlRm9ybUNvbnRyb2woY29udHJvbDogVW50eXBlZEZvcm1Db250cm9sKTogdm9pZCB7XG5cdFx0aWYgKCF0aGlzLmFjdGl2ZUNvbnRyb2xzLnNvbWUoKGUpID0+IGUuZm9ybUNvbnRyb2wgPT09IGNvbnRyb2wpKSB7XG5cdFx0XHRjb250cm9sLmRpc2FibGUoKTtcblx0XHR9XG5cdH1cblxuXHRwdWJsaWMgZ2V0Rm9ybUVsZW1lbnRCeUZvcm1Db250cm9sKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IEZvcm1FbGVtZW50Q29tcG9uZW50IHtcblx0XHRyZXR1cm4gdGhpcy5hY3RpdmVDb250cm9scy5maW5kKChlKSA9PiBlLmZvcm1Db250cm9sID09PSBjb250cm9sKT8uZm9ybUVsZW1lbnQ7XG5cdH1cblxuXHRwdWJsaWMgZ2V0V2FybmluZ1RvU2hvdyhjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHtcblx0XHRyZXR1cm4gdGhpcy53YXJuaW5ncy5nZXQoY29udHJvbCk7XG5cdH1cblxuXHRwdWJsaWMgdHJ5U3VibWl0KCk6IFByb21pc2U8YW55PiB7XG5cdFx0dGhpcy50b3BMZXZlbEZvcm1Db250cm9sLm1hcmtBbGxBc1RvdWNoZWQoKTtcblx0XHRjb25zdCBhbGxDb250cm9sczogQXJyYXk8VW50eXBlZEZvcm1Db250cm9sPiA9IHRoaXMuZ2V0QWxsRm9ybUNvbnRyb2xzKCk7XG5cdFx0Y29uc3Qgb3JpZ2luYWxEaXNhYmxlZFN0YXRlcyA9IGFsbENvbnRyb2xzLm1hcChlID0+IHtcblx0XHRcdHJldHVybiB7Y29udHJvbDogZSwgZGlzYWJsZWQ6IGUuZGlzYWJsZWR9O1xuXHRcdH0pO1xuXHRcdGFsbENvbnRyb2xzLmZvckVhY2goZSA9PiB0aGlzLmRpc2FibGVJbmFjdGl2ZUZvcm1Db250cm9sKGUpKTtcblx0XHRhbGxDb250cm9scy5mb3JFYWNoKGUgPT4gZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCkpO1xuXHRcdGNvbnN0IGZvcm1Hcm91cFZhbHVlID0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sLnZhbHVlO1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdGNvbnN0IHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHRydWUpO1xuXHRcdFx0Y29uc3QgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIGZhbHNlKTtcblxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMudG9wTGV2ZWxGb3JtQ29udHJvbC5wZW5kaW5nKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViID0gdGhpcy50b3BMZXZlbEZvcm1Db250cm9sLnN0YXR1c0NoYW5nZXMuc3Vic2NyaWJlKChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMgIT09ICdQRU5ESU5HJykge1xuXHRcdFx0XHRcdFx0XHRzdWIudW5zdWJzY3JpYmUoKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVTdWJtaXNzaW9uKG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXMsIHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcywgZm9ybUdyb3VwVmFsdWUpXG5cdFx0XHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0XHRcdC5jYXRjaChyZWplY3QpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuaGFuZGxlU3VibWlzc2lvbihvcmlnaW5hbERpc2FibGVkU3RhdGVzLCByZW5kZXJlZEFuZEVuYWJsZWRWYWx1ZXMsIHJlbmRlcmVkQnV0RGlzYWJsZWRWYWx1ZXMsIGZvcm1Hcm91cFZhbHVlKVxuXHRcdFx0XHRcdC50aGVuKHJlc29sdmUpXG5cdFx0XHRcdFx0LmNhdGNoKHJlamVjdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1N1Ym1pdHRpbmcgYSBGb3JtQXJyYXkgYXMgdG9wTGV2ZWwgbm90IHN1cHBvcnRlZCAoeWV0KS4gV3JhcCBpdCBpbiBhIEZvcm1Hcm91cC4nKTtcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlU3VibWlzc2lvbihcblx0XHRvcmlnaW5hbERpc2FibGVkU3RhdGVzOiBBcnJheTx7IGNvbnRyb2w6IEZvcm1Db250cm9sPGFueT47IGRpc2FibGVkOiBib29sZWFuIH0+LFxuXHRcdHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlczogUmVjb3JkPGFueSwgYW55Pixcblx0XHRyZW5kZXJlZEJ1dERpc2FibGVkVmFsdWVzOiBSZWNvcmQ8YW55LCBhbnk+LFxuXHRcdGZvcm1Hcm91cFZhbHVlKTogUHJvbWlzZTxhbnk+XG5cdHtcblx0XHRpZiAodGhpcy50b3BMZXZlbEZvcm1Db250cm9sLmludmFsaWQpIHtcblx0XHRcdHRoaXMuYWN0aXZlQ29udHJvbHMuZmluZCgoZSkgPT4gZS5mb3JtQ29udHJvbC5pbnZhbGlkKT8uZm9ybUVsZW1lbnQ/LnNjcm9sbFRvKCk7XG5cdFx0XHR0aGlzLnNldERpc2FibGVkU3RhdGVzRm9yQWxsQ29udHJvbHMob3JpZ2luYWxEaXNhYmxlZFN0YXRlcyk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZWplY3QoaW52YWxpZEZpZWxkc1N5bWJvbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0RGlzYWJsZWRTdGF0ZXNGb3JBbGxDb250cm9scyhvcmlnaW5hbERpc2FibGVkU3RhdGVzKTtcblx0XHRcdGNvbnN0IHJlbmRlcmVkVmFsdWVzID0gZGVlcE1lcmdlKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyk7XG5cdFx0XHRyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtmb3JtR3JvdXBWYWx1ZSwgcmVuZGVyZWRWYWx1ZXNdKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtR3JvdXAoZm9ybUdyb3VwOiBGb3JtR3JvdXAsIGVuYWJsZWQ6IGJvb2xlYW4sIHZhbHVlT2JqZWN0ID0ge30pOiBvYmplY3Qge1xuXHRcdE9iamVjdC5lbnRyaWVzKGZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaCgoW25hbWUsIGNvbnRyb2xdKSA9PiB7XG5cdFx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sICYmIGNvbnRyb2wuZW5hYmxlZCA9PT0gZW5hYmxlZCAmJiB0aGlzLmFjdGl2ZUNvbnRyb2xzLnNvbWUoZSA9PiBlLmZvcm1Db250cm9sID09PSBjb250cm9sKSkge1xuXHRcdFx0XHR2YWx1ZU9iamVjdFtuYW1lXSA9IGNvbnRyb2wudmFsdWU7XG5cdFx0XHR9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcblx0XHRcdFx0dmFsdWVPYmplY3RbbmFtZV0gPSBbXTtcblx0XHRcdFx0dGhpcy5nZXRSZW5kZXJlZEZpZWxkVmFsdWVzRm9ybUFycmF5KGNvbnRyb2wsIGVuYWJsZWQsIHZhbHVlT2JqZWN0W25hbWVdKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Hcm91cCkge1xuXHRcdFx0XHR2YWx1ZU9iamVjdFtuYW1lXSA9IHt9O1xuXHRcdFx0XHR0aGlzLmdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtR3JvdXAoY29udHJvbCwgZW5hYmxlZCwgdmFsdWVPYmplY3RbbmFtZV0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiB2YWx1ZU9iamVjdDtcblx0fVxuXG5cdHByaXZhdGUgZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1BcnJheShmb3JtQXJyYXk6IEZvcm1BcnJheSwgZW5hYmxlZDogYm9vbGVhbiwgdmFsdWVBcnJheTogQXJyYXk8YW55Pik6IHZvaWQge1xuXHRcdGZvcm1BcnJheS5jb250cm9scy5mb3JFYWNoKChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcblx0XHRcdGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUNvbnRyb2wgJiYgY29udHJvbC5lbmFibGVkID09PSBlbmFibGVkICYmIHRoaXMuYWN0aXZlQ29udHJvbHMuc29tZShlID0+IGUuZm9ybUNvbnRyb2wgPT09IGNvbnRyb2wpKSB7XG5cdFx0XHRcdHZhbHVlQXJyYXkucHVzaChjb250cm9sLnZhbHVlKTtcblx0XHRcdH0gZWxzZSBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1BcnJheSkge1xuXHRcdFx0XHRjb25zdCBuZXdBcnJheSA9IFtdO1xuXHRcdFx0XHR2YWx1ZUFycmF5LnB1c2gobmV3QXJyYXkpO1xuXHRcdFx0XHR0aGlzLmdldFJlbmRlcmVkRmllbGRWYWx1ZXNGb3JtQXJyYXkoY29udHJvbCwgZW5hYmxlZCwgbmV3QXJyYXkpO1xuXHRcdFx0fSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG5cdFx0XHRcdGNvbnN0IG5ld09iamVjdCA9IHt9O1xuXHRcdFx0XHR2YWx1ZUFycmF5LnB1c2gobmV3T2JqZWN0KTtcblx0XHRcdFx0dGhpcy5nZXRSZW5kZXJlZEZpZWxkVmFsdWVzRm9ybUdyb3VwKGNvbnRyb2wsIGVuYWJsZWQsIG5ld09iamVjdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgX2V4dF9nZXRSZW5kZXJlZEZpZWxkVmFsdWVzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuXHRcdGlmICh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtR3JvdXApIHtcblx0XHRcdGNvbnN0IHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIHRydWUpO1xuXHRcdFx0Y29uc3QgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyA9IHRoaXMuZ2V0UmVuZGVyZWRGaWVsZFZhbHVlc0Zvcm1Hcm91cCh0aGlzLnRvcExldmVsRm9ybUNvbnRyb2wsIGZhbHNlKTtcblx0XHRcdGNvbnN0IGFsbFJlbmRlcmVkVmFsdWVzID0gZGVlcE1lcmdlKHJlbmRlcmVkQW5kRW5hYmxlZFZhbHVlcywgcmVuZGVyZWRCdXREaXNhYmxlZFZhbHVlcyk7XG5cdFx0XHRyZXR1cm4gYWxsUmVuZGVyZWRWYWx1ZXM7XG5cdFx0fVxuXHRcdHRocm93IG5ldyBFcnJvcignR2V0dGluZyB2YWx1ZXMgZnJvbSBhIEZvcm1BcnJheSBhcyB0b3BMZXZlbCBpcyBub3Qgc3VwcG9ydGVkICh5ZXQpLicpO1xuXHR9XG5cblx0cHJpdmF0ZSBzZXREaXNhYmxlZFN0YXRlc0ZvckFsbENvbnRyb2xzKG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXM6IEFycmF5PHsgY29udHJvbDogQWJzdHJhY3RDb250cm9sOyBkaXNhYmxlZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdG9yaWdpbmFsRGlzYWJsZWRTdGF0ZXMuZm9yRWFjaCgoZSkgPT4ge1xuXHRcdFx0aWYgKGUuZGlzYWJsZWQpIHtcblx0XHRcdFx0ZS5jb250cm9sLmRpc2FibGUoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGUuY29udHJvbC5lbmFibGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIiwiPGZvcm0+XG5cdDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvZm9ybT5cblxuXG4iXX0=
|
|
@@ -145,9 +145,10 @@ const invalidFieldsSymbol = Symbol('Not all fields are valid');
|
|
|
145
145
|
class SubFormDirective {
|
|
146
146
|
constructor() {
|
|
147
147
|
this.manuallyTriggerInjection = false;
|
|
148
|
+
this.allowInjectionToOverwrite = false;
|
|
148
149
|
}
|
|
149
150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SubFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
150
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SubFormDirective, selector: "klp-sub-form", inputs: { injectInto: "injectInto", at: "at", manuallyTriggerInjection: "manuallyTriggerInjection" }, ngImport: i0 }); }
|
|
151
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.0", type: SubFormDirective, selector: "klp-sub-form", inputs: { injectInto: "injectInto", at: "at", manuallyTriggerInjection: "manuallyTriggerInjection", allowInjectionToOverwrite: "allowInjectionToOverwrite" }, ngImport: i0 }); }
|
|
151
152
|
}
|
|
152
153
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: SubFormDirective, decorators: [{
|
|
153
154
|
type: Directive,
|
|
@@ -161,11 +162,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
161
162
|
type: Input
|
|
162
163
|
}], manuallyTriggerInjection: [{
|
|
163
164
|
type: Input
|
|
165
|
+
}], allowInjectionToOverwrite: [{
|
|
166
|
+
type: Input
|
|
164
167
|
}] } });
|
|
165
168
|
class FormComponent {
|
|
166
|
-
constructor(parent,
|
|
169
|
+
constructor(parent, subFormDirective) {
|
|
167
170
|
this.parent = parent;
|
|
168
|
-
this.
|
|
171
|
+
this.subFormDirective = subFormDirective;
|
|
169
172
|
this.readOnly = false;
|
|
170
173
|
this.showErrorMessages = true;
|
|
171
174
|
this.errorMessageLocation = 'belowCaption';
|
|
@@ -182,8 +185,8 @@ class FormComponent {
|
|
|
182
185
|
if (isValueSet(this.patchValueInterceptor)) {
|
|
183
186
|
this.addSupportForPatchValueInterceptor();
|
|
184
187
|
}
|
|
185
|
-
if (isValueSet(this.parent) && isValueSet(this.
|
|
186
|
-
if (this.
|
|
188
|
+
if (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {
|
|
189
|
+
if (this.subFormDirective.manuallyTriggerInjection) {
|
|
187
190
|
return;
|
|
188
191
|
}
|
|
189
192
|
// if the `formComponentToInject` is not set, just attach the first that requests an injection
|
|
@@ -194,17 +197,20 @@ class FormComponent {
|
|
|
194
197
|
if (!isValueSet(this.parent)) {
|
|
195
198
|
throw new Error('No parent to inject this form into was found.');
|
|
196
199
|
}
|
|
197
|
-
if (!isValueSet(this.
|
|
200
|
+
if (!isValueSet(this.subFormDirective)) {
|
|
198
201
|
throw new Error('Subform directive not found.');
|
|
199
202
|
}
|
|
200
203
|
this.attachAsSubForm();
|
|
201
204
|
}
|
|
202
205
|
attachAsSubForm() {
|
|
203
|
-
const injectInto = this.
|
|
204
|
-
const injectAt = this.
|
|
206
|
+
const injectInto = this.subFormDirective.injectInto;
|
|
207
|
+
const injectAt = this.subFormDirective.at;
|
|
208
|
+
const allowInjectionToOverwrite = this.subFormDirective.allowInjectionToOverwrite;
|
|
205
209
|
if (injectInto instanceof UntypedFormArray) {
|
|
206
|
-
if (
|
|
207
|
-
|
|
210
|
+
if (!allowInjectionToOverwrite) {
|
|
211
|
+
if (injectInto.at(injectAt) instanceof FormGroup || injectInto.at(injectAt) instanceof FormArray) {
|
|
212
|
+
throw new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);
|
|
213
|
+
}
|
|
208
214
|
}
|
|
209
215
|
if (typeof injectAt !== 'number') {
|
|
210
216
|
throw new Error(`cannot index FormArray with ${typeof injectAt}`);
|
|
@@ -221,8 +227,10 @@ class FormComponent {
|
|
|
221
227
|
this.onInjected.emit(valueBeforeInject);
|
|
222
228
|
}
|
|
223
229
|
else if (injectInto instanceof UntypedFormGroup) {
|
|
224
|
-
if (
|
|
225
|
-
|
|
230
|
+
if (!allowInjectionToOverwrite) {
|
|
231
|
+
if (injectInto.get(injectAt) instanceof FormGroup || injectInto.get(injectAt) instanceof FormArray) {
|
|
232
|
+
throw new Error(`There already is a subform injected at ${injectAt}. Make sure this property does not have a formGroup or formArray already attached when linking it to a subForm.`);
|
|
233
|
+
}
|
|
226
234
|
}
|
|
227
235
|
if (typeof injectAt !== 'string') {
|
|
228
236
|
throw new Error(`cannot index FormGroup with ${typeof injectAt}`);
|
|
@@ -251,9 +259,9 @@ class FormComponent {
|
|
|
251
259
|
}
|
|
252
260
|
}
|
|
253
261
|
ngOnDestroy() {
|
|
254
|
-
if (isValueSet(this.parent) && isValueSet(this.
|
|
255
|
-
const injectInto = this.
|
|
256
|
-
const injectAt = this.
|
|
262
|
+
if (isValueSet(this.parent) && isValueSet(this.subFormDirective)) {
|
|
263
|
+
const injectInto = this.subFormDirective.injectInto;
|
|
264
|
+
const injectAt = this.subFormDirective.at;
|
|
257
265
|
if (injectInto instanceof UntypedFormArray) {
|
|
258
266
|
const idx = injectInto.controls.findIndex(e => e === this.topLevelFormControl);
|
|
259
267
|
injectInto.removeAt(idx);
|
|
@@ -1204,11 +1212,11 @@ class CheckboxComponent extends ValueAccessorBase {
|
|
|
1204
1212
|
this.renderUndefinedAsIndeterminate = false;
|
|
1205
1213
|
}
|
|
1206
1214
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
1207
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CheckboxComponent, selector: "klp-form-checkbox", inputs: { caption: "caption", renderUndefinedAsIndeterminate: "renderUndefinedAsIndeterminate" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<
|
|
1215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.0", type: CheckboxComponent, selector: "klp-form-checkbox", inputs: { caption: "caption", renderUndefinedAsIndeterminate: "renderUndefinedAsIndeterminate" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #27bb5f}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#27bb5f;border-color:#27bb5f}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#27bb5f}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#98a2b3}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
1208
1216
|
}
|
|
1209
1217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
1210
1218
|
type: Component,
|
|
1211
|
-
args: [{ selector: 'klp-form-checkbox', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<
|
|
1219
|
+
args: [{ selector: 'klp-form-checkbox', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<div class=\"componentContainer\">\n\t<label>\n\t\t<div class=\"checkboxContainer\">\n\t\t\t<div class=\"checkBoxVisualContainer\">\n\t\t\t\t<input type=\"checkbox\" class=\"checkboxNative\"\n\t\t\t\t\t[(ngModel)]=\"innerValue\"\n\t\t\t\t\t(change)=\"setInnerValueAndNotify(innerValue); touch()\"\n\t\t\t\t\t[disabled]=\"disabled\"\n\t\t\t\t\t#nativeInputRef\n\t\t\t\t/>\n\t\t\t\t<div class=\"checkboxVisual\" [ngClass]=\"{filledWithColor: innerValue === true || (renderUndefinedAsIndeterminate && innerValue === undefined)}\">\n\t\t\t\t\t<svg *ngIf=\"innerValue === true\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"9\" viewBox=\"0 0 12 9\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M10.3333 1L3.91667 7.41667L1 4.5\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t\t<svg *ngIf=\"renderUndefinedAsIndeterminate && innerValue === undefined\" xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"2\" viewBox=\"0 0 11 2\" fill=\"none\">\n\t\t\t\t\t\t<path d=\"M1 1H9.16667\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n\t\t\t\t\t</svg>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div *ngIf=\"caption\" class=\"caption\">{{ caption }}</div>\n\t</label>\n</div>\n", styles: [":host{display:block}.componentContainer{display:flex;align-items:center;margin-bottom:0}label{display:flex;align-items:center;justify-content:center}.checkboxContainer{position:relative}.checkBoxVisualContainer{padding:2px;margin-right:10px;border-radius:4px}.checkBoxVisualContainer:focus-within{outline:2px solid #27bb5f}.caption{cursor:pointer;font-weight:400;color:#101828}.checkboxNative{position:absolute;opacity:0;top:0;left:0;width:20px;height:20px;cursor:pointer}.checkboxVisual{pointer-events:none;padding:.125rem;color:#fff;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:1px solid #D0D5DD;border-radius:4px;font-size:15px;font-weight:400;line-height:19px;vertical-align:bottom;text-align:center;background-color:#fff;cursor:pointer}.checkboxVisual.filledWithColor{background-color:#27bb5f;border-color:#27bb5f}.checkboxNative:hover+.checkboxVisual{border-color:#98a2b3}.checkboxNative:hover+.checkboxVisual.filledWithColor{border-color:#27bb5f}.checkboxNative:hover[disabled]+.checkboxVisual{border-color:#eaecf0}.checkboxNative:hover[disabled]+.checkboxVisual.filledWithColor{border-color:#f2f4f7}.checkboxNative[disabled]{cursor:not-allowed}.checkboxNative[disabled]+.checkboxVisual{background-color:#f2f4f7;border-color:#eaecf0}.checkboxNative[disabled]+.checkboxVisual svg{color:#98a2b3}\n"] }]
|
|
1212
1220
|
}], propDecorators: { caption: [{
|
|
1213
1221
|
type: Input
|
|
1214
1222
|
}], renderUndefinedAsIndeterminate: [{
|