kwikid-forms 0.3.1 → 0.3.3
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/bundles/kwikid-forms.umd.js +1398 -394
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/builder/builder.component.js +86 -67
- package/esm2015/lib/builder/builder.module.js +52 -7
- package/esm2015/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.js +72 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/date-config.editor.component.js +72 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/number-config.editor.component.js +72 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.js +130 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.js +130 -0
- package/esm2015/lib/builder/element-config-editor/editors/basic/radio-config.editor.component.js +241 -147
- package/esm2015/lib/builder/element-config-editor/editors/basic/text-config.editor.component.js +48 -51
- package/esm2015/lib/builder/element-config-editor/editors/basic-element-config.editor.component.js +475 -333
- package/esm2015/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.js +130 -0
- package/esm2015/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.js +135 -0
- package/esm2015/lib/builder/element-config-editor/editors/document-element-config.editor.component.js +610 -0
- package/esm2015/lib/builder/element-config-editor/editors/other/html-config.editor.component.js +120 -0
- package/esm2015/lib/builder/element-config-editor/editors/other/title-config.editor.component.js +121 -0
- package/esm2015/lib/builder/element-config-editor/editors/other-element-config.editor.component.js +214 -0
- package/esm2015/lib/builder/element-config-editor/element-config-editor.component.js +6 -3
- package/esm2015/lib/builder/shared/elements.js +33 -8
- package/esm2015/lib/renderer/config-converter.helper.js +1 -2
- package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +1 -1
- package/esm2015/lib/renderer/form-view/form-view.component.js +28 -13
- package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +18 -16
- package/esm2015/lib/renderer/renderer.component.js +1 -2
- package/fesm2015/kwikid-forms.js +2787 -739
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/builder/builder.component.d.ts +4 -0
- package/lib/builder/builder.module.d.ts +16 -5
- package/lib/builder/element-config-editor/editors/basic/checkbox-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/basic/date-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/basic/number-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/basic/otp-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/basic/phone-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/document/aadhaar-number-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/document/pan-number-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/document-element-config.editor.component.d.ts +20 -0
- package/lib/builder/element-config-editor/editors/other/html-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/other/title-config.editor.component.d.ts +16 -0
- package/lib/builder/element-config-editor/editors/other-element-config.editor.component.d.ts +20 -0
- package/lib/builder/shared/elements.d.ts +3 -1
- package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +3 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { __decorate } from "tslib";
|
|
|
2
2
|
import { copyArrayItem, moveItemInArray } from "@angular/cdk/drag-drop";
|
|
3
3
|
import { Component } from "@angular/core";
|
|
4
4
|
import { FormControl, FormGroup, Validators } from "@angular/forms";
|
|
5
|
-
import { getObjectFromLocalStorage, isEmptyValue, isNotEmptyValue, logMethod } from "kwikid-toolkit";
|
|
5
|
+
import { checkObjectKeyExists, getObjectFromLocalStorage, isEmptyValue, isNotEmptyValue, logMethod, setMissingKeyValue } from "kwikid-toolkit";
|
|
6
6
|
import { Elements } from "./shared/elements";
|
|
7
7
|
import { revisedRandId } from "./shared/helpers";
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -24,6 +24,8 @@ export class KwikIDFormsBuilderComponent {
|
|
|
24
24
|
this.formElementsDragList = [];
|
|
25
25
|
this.formElementsDropList = [];
|
|
26
26
|
this.elementEditorElementConfig = undefined;
|
|
27
|
+
this.finalJSONConfig = undefined;
|
|
28
|
+
this.JSON = JSON;
|
|
27
29
|
this.builderFormGroup = new FormGroup({
|
|
28
30
|
formKey: new FormControl("", [Validators.required]),
|
|
29
31
|
formTitle: new FormControl("", [Validators.required])
|
|
@@ -117,19 +119,24 @@ export class KwikIDFormsBuilderComponent {
|
|
|
117
119
|
}
|
|
118
120
|
handleOnSaveUpdateElement(event) { }
|
|
119
121
|
handleOnClickSaveForms(event) {
|
|
120
|
-
if (isEmptyValue(this.formKey)) {
|
|
122
|
+
if (isEmptyValue(this.builderFormGroup.controls.formKey.value)) {
|
|
121
123
|
window.alert("Please provide Form Key");
|
|
122
124
|
return;
|
|
123
125
|
}
|
|
124
126
|
else {
|
|
127
|
+
this.formKey = this.builderFormGroup.controls.formKey.value;
|
|
125
128
|
this.formKey = this.formKey.replace(/\s/g, "_").toLocaleUpperCase();
|
|
126
129
|
}
|
|
127
|
-
if (isEmptyValue(this.formTitle)) {
|
|
130
|
+
if (isEmptyValue(this.builderFormGroup.controls.formTitle.value)) {
|
|
128
131
|
window.alert("Please provide Form Title");
|
|
129
132
|
return;
|
|
130
133
|
}
|
|
134
|
+
else {
|
|
135
|
+
this.formTitle = this.builderFormGroup.controls.formTitle.value;
|
|
136
|
+
}
|
|
131
137
|
let finalFields = JSON.parse(JSON.stringify(this.formElementsDropList));
|
|
132
138
|
finalFields = finalFields.map((item) => {
|
|
139
|
+
item = setMissingKeyValue(item, "type", item.elementType);
|
|
133
140
|
if (item.elementType.startsWith("NA<>", 0)) {
|
|
134
141
|
delete item.elementId;
|
|
135
142
|
delete item.elementType;
|
|
@@ -143,79 +150,83 @@ export class KwikIDFormsBuilderComponent {
|
|
|
143
150
|
delete item.elementTitle;
|
|
144
151
|
delete item.elementCategory;
|
|
145
152
|
delete item.isElement;
|
|
146
|
-
if (item
|
|
147
|
-
item.default
|
|
148
|
-
value
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
{
|
|
153
|
-
key: "OBJECT",
|
|
154
|
-
props: {
|
|
155
|
-
object: {
|
|
156
|
-
key: "ALL_FORMS_DATA",
|
|
157
|
-
path: String(`$.${this.formKey}.${item.key}`)
|
|
158
|
-
}
|
|
159
|
-
},
|
|
153
|
+
if (checkObjectKeyExists(item, "default")) {
|
|
154
|
+
if (checkObjectKeyExists(item.default, "value")) {
|
|
155
|
+
if (item.default.value) {
|
|
156
|
+
item.default = {
|
|
157
|
+
value: {
|
|
158
|
+
is_found: false,
|
|
160
159
|
value: "",
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
160
|
+
sources: [
|
|
161
|
+
{
|
|
162
|
+
key: "OBJECT",
|
|
163
|
+
props: {
|
|
164
|
+
object: {
|
|
165
|
+
key: "ALL_FORMS_DATA",
|
|
166
|
+
path: String(`$.${this.formKey}.${item.key}`)
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
value: "",
|
|
170
|
+
validation: {
|
|
171
|
+
is_valid: false,
|
|
172
|
+
triggers: ["ON_INIT"],
|
|
173
|
+
rules: [
|
|
174
|
+
{
|
|
175
|
+
id: "1",
|
|
176
|
+
key: "VALUE_CHECK",
|
|
177
|
+
props: {
|
|
178
|
+
value: {
|
|
179
|
+
source: {
|
|
180
|
+
key: "OBJECT",
|
|
181
|
+
props: {
|
|
182
|
+
object: {
|
|
183
|
+
key: "ALL_FORMS_DATA",
|
|
184
|
+
path: String(`$.${this.formKey}.${item.key}`)
|
|
185
|
+
}
|
|
186
|
+
}
|
|
176
187
|
}
|
|
177
|
-
}
|
|
188
|
+
},
|
|
189
|
+
pattern: { key: "IS_NOT_EMPTY" }
|
|
178
190
|
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
path: String(`$.${this.formKey}.${item.key}`)
|
|
191
|
+
}
|
|
192
|
+
],
|
|
193
|
+
actions: [
|
|
194
|
+
{
|
|
195
|
+
id: "1",
|
|
196
|
+
key: "SET_FIELD_DEFAULT_VALUE",
|
|
197
|
+
condition: "1",
|
|
198
|
+
props: {
|
|
199
|
+
fieldKey: String(`${item.key}`),
|
|
200
|
+
value: {
|
|
201
|
+
source: {
|
|
202
|
+
key: "OBJECT",
|
|
203
|
+
props: {
|
|
204
|
+
object: {
|
|
205
|
+
key: "ALL_FORMS_DATA",
|
|
206
|
+
path: String(`$.${this.formKey}.${item.key}`)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
198
209
|
}
|
|
199
210
|
}
|
|
200
211
|
}
|
|
201
212
|
}
|
|
202
|
-
|
|
213
|
+
]
|
|
203
214
|
}
|
|
204
|
-
|
|
205
|
-
|
|
215
|
+
}
|
|
216
|
+
]
|
|
206
217
|
}
|
|
207
|
-
|
|
218
|
+
};
|
|
208
219
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
220
|
+
else {
|
|
221
|
+
item.default = {
|
|
222
|
+
value: {
|
|
223
|
+
is_found: false,
|
|
224
|
+
value: "",
|
|
225
|
+
sources: []
|
|
226
|
+
}
|
|
227
|
+
};
|
|
217
228
|
}
|
|
218
|
-
}
|
|
229
|
+
}
|
|
219
230
|
}
|
|
220
231
|
return item;
|
|
221
232
|
});
|
|
@@ -230,12 +241,20 @@ export class KwikIDFormsBuilderComponent {
|
|
|
230
241
|
title: this.formTitle,
|
|
231
242
|
fields: this.formElementsDropList
|
|
232
243
|
}));
|
|
244
|
+
this.finalJSONConfig = finalFormConfig;
|
|
233
245
|
console.log(finalFormConfig);
|
|
234
246
|
console.log(this.formElementsDropList);
|
|
235
247
|
}
|
|
248
|
+
copyToClipboard() {
|
|
249
|
+
navigator.clipboard.writeText(JSON.stringify(this.finalJSONConfig));
|
|
250
|
+
alert("JSON Config is copied");
|
|
251
|
+
}
|
|
252
|
+
closeJSONPopup() {
|
|
253
|
+
this.finalJSONConfig = undefined;
|
|
254
|
+
}
|
|
236
255
|
}
|
|
237
256
|
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsBuilderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
238
|
-
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n [shape]=\"'rounded'\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n ⋮⋮ {{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">⋮⋮</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n ✎\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n ✖\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> © Baiju Dodhia, KwikID </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder button{align-content:center;align-items:center;background:black;border-color:transparent;box-shadow:0 2px 10px -6px #000;border-radius:1rem;color:#fff;cursor:pointer;display:flex;flex-direction:row;justify-content:center;padding:.5rem;transform:scale(1);transition:.05s ease-in}kwikid-forms-builder button:hover{box-shadow:0 2px 10px -5px #000}kwikid-forms-builder button:active{transform:scale(.98);transition:.05s ease-out}kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 2px 10px -6px #000;border:1px solid gray}kwikid-forms-builder input,kwikid-forms-builder select{flex:1;width:100%;border:1px solid black;outline:none;padding:.25rem;overflow-x:auto}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border:1px solid lightgray;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid blue;padding:.5rem;background:lightblue}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:orange;padding:0 5px;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:blue;padding:0 5px;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:green;padding:0 5px;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i1.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
|
|
257
|
+
/** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", ngImport: i0, template: "<div class=\"container\">\n <div class=\"wrapper\">\n <div class=\"builder-header\">\n <div class=\"builder-title\">KwikID Form Builder</div>\n <form\n [formGroup]=\"builderFormGroup\"\n class=\"builder-form\"\n >\n <kwikui-input\n [label]=\"'Form Key'\"\n [id]=\"'form_key'\"\n [type]=\"'text'\"\n [formControlName]=\"'formKey'\"\n [formControl]=\"builderFormGroup.controls['formKey']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Key'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'upper'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-input\n [label]=\"'Form Title'\"\n [id]=\"'form_title'\"\n [type]=\"'text'\"\n [formControlName]=\"'formTitle'\"\n [formControl]=\"builderFormGroup.controls['formTitle']\"\n [disabled]=\"false\"\n [placeholder]=\"'Please enter a Form Title'\"\n [focus]=\"false\"\n [invalid]=\"false\"\n [case]=\"'default'\"\n size=\"m\"\n (getKeyValue)=\"handleGetKeyValue($event)\"\n ></kwikui-input>\n <kwikui-button\n [disabled]=\"!builderFormGroup.valid\"\n id=\"save_form_btn\"\n label=\"Save Form\"\n [showLoader]=\"false\"\n styles=\"\"\n class=\"\"\n type=\"button\"\n appearance=\"primary\"\n icon=\"\"\n iconRight=\"\"\n size=\"m\"\n (onClick)=\"handleOnClickSaveForms($event)\"\n ></kwikui-button>\n </form>\n </div>\n <div class=\"builder-body\">\n <div class=\"form-elements-drag-wrapper\">\n <div\n class=\"form-elements-drag\"\n cdkDropList\n [cdkDropListData]=\"formElementsDragList\"\n cdkDropListSortingDisabled\n [cdkDropListConnectedTo]=\"[formElementsList]\"\n (cdkDropListExited)=\"exit($event, 'other')\"\n (cdkDropListEntered)=\"enter($event, 'other')\"\n >\n <ng-container\n *ngFor=\"let formElementDragItem of formElementsDragList\"\n >\n <ng-container *ngIf=\"formElementDragItem.isElement\">\n <div\n class=\"form-element-drag\"\n cdkDrag\n [cdkDragData]=\"formElementDragItem\"\n >\n ⋮⋮ {{ formElementDragItem.elementTitle }}\n <!-- <ng-container *ngComponentOutlet=\"formElementDragItem.component\"></ng-container> -->\n </div>\n <div\n class=\"form-element-drag\"\n *cdkDragPlaceholder\n >\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n <ng-container *ngIf=\"!formElementDragItem.isElement\">\n <div class=\"form-element-category\">\n {{ formElementDragItem.elementTitle }}\n </div>\n </ng-container>\n </ng-container>\n </div>\n </div>\n <div\n class=\"form-elements-drop-wrapper\"\n cdkDropList\n #formElementsList=\"cdkDropList\"\n [cdkDropListData]=\"formElementsDropList\"\n (cdkDropListDropped)=\"drop($event, '')\"\n [cdkDropListEnterPredicate]=\"isElementPredicate\"\n >\n <ng-container\n *ngFor=\"\n let formElementDropItem of formElementsDropList;\n let idx = index\n \"\n >\n <div\n class=\"form-drop-element\"\n cdkDrag\n >\n <div class=\"form-drop-element-grab-symbol\">⋮⋮</div>\n <div class=\"form-drop-element-main\">\n <div class=\"form-drop-element-header\">\n <div class=\"form-drop-element-title\">\n {{ formElementDropItem.elementTitle }}\n </div>\n <div class=\"form-drop-element-actions\">\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'edit-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'secondary'\"\n [icon]=\"'tuiIconEdit'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"editElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <kwikui-button-icon\n [disabled]=\"false\"\n [id]=\"'remove-element'\"\n [showLoader]=\"false\"\n [styles]=\"\"\n [class]=\"\"\n [type]=\"'button'\"\n [appearance]=\"'accent'\"\n [icon]=\"'tuiIconCloseLarge'\"\n [shape]=\"'rounded'\"\n [size]=\"'s'\"\n (onClick)=\"removeElement(idx, formElementDropItem)\"\n ></kwikui-button-icon>\n <!-- <button\n (click)=\"editElement(idx, formElementDropItem)\"\n title=\"edit element properties\"\n >\n ✎\n </button>\n <button\n (click)=\"removeElement(idx, formElementDropItem)\"\n title=\"delete element\"\n >\n ✖\n </button> -->\n </div>\n </div>\n <div class=\"form-drop-element-body\"> </div>\n <div class=\"form-drop-element-footer\">\n <div class=\"form-drop-element-id\">\n {{ formElementDropItem.elementId }}\n </div>\n <div class=\"form-drop-element-category\">\n {{ formElementDropItem.elementCategory }}\n </div>\n <div class=\"form-drop-element-type\">\n {{ formElementDropItem.elementType }}\n </div>\n </div>\n <div\n class=\"example-custom-placeholder\"\n *cdkDragPlaceholder\n ></div>\n <!-- <ng-container *ngComponentOutlet=\"formElementDropItem.component\"> </ng-container> -->\n <!-- <ng-container *ngTemplateOutlet=\"formModal; context: formElementDropItem\"></ng-container> -->\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"element-property-editor-wrapper\">\n <element-config-editor\n [elementConfig]=\"elementEditorElementConfig\"\n (updateElement)=\"handleOnSaveUpdateElement($event)\"\n ></element-config-editor>\n </div>\n </div>\n <div class=\"builder-footer\"> © Baiju Dodhia, KwikID </div>\n </div>\n <div\n class=\"modal\"\n *ngIf=\"finalJSONConfig\"\n >\n <div class=\"modal-box\">\n <div class=\"modal-content\">\n <div class=\"modal-heading\">\n <div class=\"modal-title\">{{ formTitle }}</div>\n <div class=\"modal-actions\">\n <div\n class=\"modal-code-copy\"\n (click)=\"copyToClipboard()\"\n >Copy to Clipboard</div\n >\n <div\n class=\"modal-close\"\n (click)=\"closeJSONPopup()\"\n >\n Close\n </div>\n </div>\n </div>\n <pre>\n <code>{{JSON.stringify(finalJSONConfig, undefined, 2)}}</code>\n </pre>\n </div>\n </div>\n </div>\n</div>\n", styles: ["kwikid-forms-builder fieldset{display:flex;flex-direction:column;justify-content:center;align-items:stretch;align-content:center;grid-gap:.5rem;gap:.5rem;padding:.5rem 1rem 1rem;box-shadow:0 0 10px -6px #000;border:0px solid gray;border-radius:1rem}kwikid-forms-builder table,kwikid-forms-builder tr,kwikid-forms-builder td{border:1px solid black;padding:.5rem 1rem}kwikui-table table{width:100%;box-shadow:0 0 10px -6px #000;border:0px solid gray;padding:0}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.container .wrapper{width:100%;height:100%;display:flex;flex-direction:column;align-content:center;justify-content:space-between;align-items:stretch}.container .wrapper .builder-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:max-content;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-header .builder-title{font-weight:bold;display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;font-size:1rem}.container .wrapper .builder-header .builder-form{display:flex;align-content:center;justify-content:flex-end;flex:1;flex-direction:row;align-items:center;grid-gap:1rem;gap:1rem;width:100%}.container .wrapper .builder-header .builder-form kwikui-input{width:16rem}.container .wrapper .builder-body{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:stretch;grid-gap:1rem;gap:1rem;flex:1;padding:1rem;overflow:auto}.container .wrapper .builder-body>*{width:100%;border:1px solid lightgray;overflow:auto;box-shadow:0 2px 10px -6px #000}.container .wrapper .builder-body .form-elements-drag-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;padding:1rem;min-width:16rem;max-width:16rem}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;border-bottom:none}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-drag{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-radius:.5rem;padding:1rem;cursor:grab;box-shadow:0 2px 10px -6px #000;text-transform:capitalize}.container .wrapper .builder-body .form-elements-drag-wrapper .form-elements-drag .form-element-category{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:1rem;gap:1rem;border-left:.25rem solid var(--tui-primary);padding:1rem;background:var(--tui-secondary)}.container .wrapper .builder-body .form-elements-drop-wrapper{padding:1rem;display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;grid-gap:1rem;gap:1rem;min-width:20rem;max-width:28rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder{display:flex;justify-content:flex-start;justify-items:start;align-items:center;padding:1rem;border-radius:1rem;box-shadow:0 2px 10px -6px #000;cursor:grab;flex-direction:row;position:relative;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main{flex:1;display:flex;justify-content:space-between;justify-items:start;align-items:stretch;flex-direction:column;width:100%;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header{display:flex;flex-direction:row;align-content:center;justify-content:space-between;align-items:center;grid-column-gap:1rem;column-gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-gap:1rem;gap:1rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button{width:1.6rem;height:1.6rem;transform:rotate(90deg)!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:first-child{background-color:#dc143c!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-header .form-drop-element-actions button:last-child{background-color:gray!important;color:#fff!important}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-body,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-body{border-top:1px dashed lightgray;border-bottom:1px dashed lightgray}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer{display:flex;flex-direction:row;align-content:center;justify-content:flex-start;align-items:center;grid-gap:.5rem;gap:.5rem}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-id,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-id{background:var(--tui-secondary);padding:0 .3rem;border-radius:1rem;color:var(--tui-primary)}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-category,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-category{background:var(--tui-primary);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .form-elements-drop-wrapper .form-drop-element .form-drop-element-main .form-drop-element-footer .form-drop-element-type,.container .wrapper .builder-body .form-elements-drop-wrapper .cdk-drag-placeholder .form-drop-element-main .form-drop-element-footer .form-drop-element-type{background:var(--tui-positive);padding:0 .3rem;border-radius:1rem;color:#fff}.container .wrapper .builder-body .element-property-editor-wrapper{display:flex;flex-direction:column;align-content:center;justify-content:flex-start;align-items:stretch;padding:1rem;min-width:20rem;grid-gap:1rem;gap:1rem}.container .wrapper .builder-footer{display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center;grid-column-gap:1rem;column-gap:1rem;padding:1rem;max-height:30px;border:1px solid lightgray;box-shadow:0 -2px 10px -6px #000;font-weight:bold}.cdk-drag-preview{width:-moz-fit-content;width:fit-content;height:auto;box-sizing:border-box;background-color:transparent;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;cursor:grabbing}.cdk-drag-placeholder{opacity:1}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-custom-placeholder{background:#ccc;border:dotted 3px #999;min-height:60px;transition:transform .25s cubic-bezier(0,0,.2,1)}.modal{position:absolute;background-color:#0000004d;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-box{width:75%;height:75%;margin:auto;background-color:#fff;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-content{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;width:100%;height:100%}.modal-heading{padding:1rem;width:100%;display:flex;flex-direction:row;justify-content:space-between;border:1px solid lightgray;box-shadow:0 2px 10px -6px #000}.modal-title{font-weight:bold;font-size:1rem}.modal-actions{display:flex;flex-direction:row;grid-gap:1rem;gap:1rem;cursor:pointer}pre{float:left;justify-content:center;width:100%;height:100%;box-sizing:border-box;overflow:auto}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}\n"], components: [{ type: i1.KwikUIInputComponent, selector: "kwikui-input", inputs: ["label", "id", "type", "formControlName", "formControl", "placeholder", "focus", "invalid", "disabled", "validators", "case", "size", "icon", "properties"], outputs: ["getKeyValue"] }, { type: i1.KwikUIButtonComponent, selector: "kwikui-button", inputs: ["disabled", "id", "label", "showLoader", "styles", "class", "type", "appearance", "icon", "iconRight", "shape", "size"], outputs: ["onClick"] }, { type: i1.KwikUIButtonIconComponent, selector: "kwikui-button-icon", inputs: ["disabled", "id", "showLoader", "styles", "class", "type", "appearance", "icon", "shape", "size"], outputs: ["onClick"] }, { type: i2.ElementConfigEditor, selector: "element-config-editor", inputs: ["formKey", "elementConfig"], outputs: ["updateElement"] }], directives: [{ type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i3.FormControlDirective, selector: "[formControl]", inputs: ["disabled", "formControl", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i4.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "id", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListAutoScrollDisabled", "cdkDropListOrientation", "cdkDropListLockAxis", "cdkDropListData", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragDisabled", "cdkDragStartDelay", "cdkDragLockAxis", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragBoundary", "cdkDragRootElement", "cdkDragPreviewContainer", "cdkDragData", "cdkDragFreeDragPosition"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { type: i4.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }] });
|
|
239
258
|
__decorate([
|
|
240
259
|
logMethod
|
|
241
260
|
], KwikIDFormsBuilderComponent.prototype, "handleGetKeyValue", null);
|
|
@@ -265,4 +284,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
265
284
|
styleUrls: ["shared/shared.scss", "./builder.component.scss"]
|
|
266
285
|
}]
|
|
267
286
|
}], ctorParameters: function () { return []; }, propDecorators: { handleGetKeyValue: [], drop: [], exit: [], enter: [], removeElement: [], editElement: [], handleOnSaveUpdateElement: [] } });
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIsWUFBWSxFQUNaLGVBQWUsRUFDZixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBT2pELE1BQU0sT0FBTywyQkFBMkI7SUFpQnRDO1FBaEJBLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFDckIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixxQkFBZ0IsR0FBYyxTQUFTLENBQUM7UUFFeEMsa0JBQWEsR0FBZSxJQUFJLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNqRCxxQkFBZ0IsR0FBZSxJQUFJLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN4RCxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2xELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBRXhELG9CQUFlLEdBQVEsSUFBSSxRQUFR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QUksQ0FBQyxvQkFBb0I7U0FDbEMsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDekMsQ0FBQzs7NElBN1JVLDJCQUEyQjtnSUFBM0IsMkJBQTJCLDREQ3JCeEMseS9OQTBMQTtBRHpFRTtJQURDLFNBQVM7b0VBUVQ7QUFHRDtJQURDLFNBQVM7dURBbUNUO0FBR0Q7SUFEQyxTQUFTO3VEQUNrQztBQUc1QztJQURDLFNBQVM7d0RBQ21DO0FBUTdDO0lBREMsU0FBUztnRUFHVDtBQUdEO0lBREMsU0FBUzs4REFHVDtBQUdEO0lBREMsU0FBUzs0RUFDOEI7NEZBaEs3QiwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsMEJBQTBCLENBQUM7aUJBQzlEOzBFQTZGQyxpQkFBaUIsTUFVakIsSUFBSSxNQXFDSixJQUFJLE1BR0osS0FBSyxNQVFMLGFBQWEsTUFLYixXQUFXLE1BS1gseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2RrRHJhZyxcbiAgY29weUFycmF5SXRlbSxcbiAgbW92ZUl0ZW1JbkFycmF5XG59IGZyb20gXCJAYW5ndWxhci9jZGsvZHJhZy1kcm9wXCI7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlLFxuICBpc0VtcHR5VmFsdWUsXG4gIGlzTm90RW1wdHlWYWx1ZSxcbiAgbG9nTWV0aG9kXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRWxlbWVudHMgfSBmcm9tIFwiLi9zaGFyZWQvZWxlbWVudHNcIjtcbmltcG9ydCB7IHJldmlzZWRSYW5kSWQgfSBmcm9tIFwiLi9zaGFyZWQvaGVscGVyc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwia3dpa2lkLWZvcm1zLWJ1aWxkZXJcIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9idWlsZGVyLmNvbXBvbmVudC5odG1sXCIsXG4gIHN0eWxlVXJsczogW1wic2hhcmVkL3NoYXJlZC5zY3NzXCIsIFwiLi9idWlsZGVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGZvcm1LZXk6IHN0cmluZyA9IFwiXCI7XG4gIGZvcm1UaXRsZTogc3RyaW5nID0gXCJcIjtcbiAgYnVpbGRlckZvcm1Hcm91cDogRm9ybUdyb3VwID0gdW5kZWZpbmVkO1xuXG4gIGJhc2ljRWxlbWVudHM6IEFycmF5PGFueT4gPSBuZXcgRWxlbWVudHMoKS5iYXNpYztcbiAgZG9jdW1lbnRFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLmRvY3VtZW50cztcbiAgb3RoZXJFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLm90aGVycztcbiAgdGVtcGxhdGVFbGVtZW50czogQXJyYXk8YW55PiA9IG5ldyBFbGVtZW50cygpLnRlbXBsYXRlcztcblxuICBlbGVtZW50c01hcHBpbmc6IGFueSA9IG5ldyBFbGVtZW50cygpLmVsZW1lbnRNYXBwaW5nO1xuXG4gIGZvcm1FbGVtZW50c0RyYWdMaXN0OiBBcnJheTxhbnk+ID0gW107XG4gIGZvcm1FbGVtZW50c0Ryb3BMaXN0OiBBcnJheTxhbnk+ID0gW107XG5cbiAgZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWc6IGFueSA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgIGZvcm1LZXk6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgZm9ybVRpdGxlOiBuZXcgRm9ybUNvbnRyb2woXCJcIiwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKVxuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybURyb3BDb25maWcgPSBnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlKFwiZm9ybURyb3BDb25maWdcIik7XG5cbiAgICBpZiAoaXNOb3RFbXB0eVZhbHVlKGZvcm1Ecm9wQ29uZmlnKSkge1xuICAgICAgdGhpcy5mb3JtS2V5ID0gZm9ybURyb3BDb25maWcua2V5O1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSBmb3JtRHJvcENvbmZpZy50aXRsZTtcbiAgICAgIGNvbnN0IGZvcm1GaWVsZHMgPSBmb3JtRHJvcENvbmZpZy5maWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9IHRoaXMuZWxlbWVudHNNYXBwaW5nLmJhc2ljLmluY2x1ZGVzKGl0ZW0udHlwZSlcbiAgICAgICAgICA/IFwiYmFzaWNcIlxuICAgICAgICAgIDogdGhpcy5lbGVtZW50c01hcHBpbmcuZG9jdW1lbnRzLmluY2x1ZGVzKGl0ZW0udHlwZSlcbiAgICAgICAgICA/IFwiZG9jdW1lbnRcIlxuICAgICAgICAgIDogXCJvdGhlcnNcIjtcbiAgICAgICAgaXRlbS5lbGVtZW50VHlwZSA9XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiYmFzaWNcIiB8fFxuICAgICAgICAgIGl0ZW0uZWxlbWVudENhdGVnb3J5ID09PSBcImRvY3VtZW50XCJcbiAgICAgICAgICAgID8gaXRlbS50eXBlXG4gICAgICAgICAgICA6IFN0cmluZyhgTkE8PiR7aXRlbS50eXBlfWApO1xuICAgICAgICBpdGVtLmlzRWxlbWVudCA9IHRydWU7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRGaWx0ZXJlZCA9XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiYmFzaWNcIlxuICAgICAgICAgICAgPyB0aGlzLmJhc2ljRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS50eXBlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiZG9jdW1lbnRcIlxuICAgICAgICAgICAgPyB0aGlzLmRvY3VtZW50RWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS50eXBlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwib3RoZXJzXCJcbiAgICAgICAgICAgID8gdGhpcy5vdGhlckVsZW1lbnRzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuZWxlbWVudFR5cGUgPT09IGl0ZW0udHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgaXRlbS5lbGVtZW50VGl0bGUgPSBpc0VtcHR5VmFsdWUoZWxlbWVudEZpbHRlcmVkKVxuICAgICAgICAgID8gaXRlbS5lbGVtZW50Q2F0ZWdvcnkgKyBcIjo6XCIgKyBpdGVtLmVsZW1lbnRUeXBlXG4gICAgICAgICAgOiBlbGVtZW50RmlsdGVyZWQuZWxlbWVudFRpdGxlO1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QgPSBmb3JtRmllbGRzO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QgPSBbXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJCYXNpYyBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmJhc2ljRWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJEb2N1bWVudCBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLmRvY3VtZW50RWxlbWVudHMsXG4gICAgICB7IGlzRWxlbWVudDogZmFsc2UsIGVsZW1lbnRUaXRsZTogXCJPdGhlciBFbGVtZW50c1wiIH0sXG4gICAgICAuLi50aGlzLm90aGVyRWxlbWVudHNcbiAgICBdO1xuXG4gICAgZm9yIChsZXQgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0gb2YgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCkge1xuICAgICAgZm9ybUVsZW1lbnRzRHJhZ0l0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgIH1cbiAgfVxuXG4gIGhhbmRsZU9uQ2hhbmdlKFxuICAgIGV2ZW50OiB7IHRhcmdldDogeyB2YWx1ZTogYW55IH0gfSxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGtleTogc3RyaW5nIHwgbnVtYmVyLFxuICAgIGlkeDogYW55XG4gICkge1xuICAgIGNvbnN0IF92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgfVxuXG4gIC8vIERPTSBFdmVudCBIYW5kbGVyc1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZUdldEtleVZhbHVlKGU6IGFueSkge1xuICAgIHRoaXMuYnVpbGRlckZvcm1Hcm91cC5wYXRjaFZhbHVlKFxuICAgICAge1xuICAgICAgICBbZS5rZXldOiBlLnZhbHVlXG4gICAgICB9LFxuICAgICAgeyBlbWl0RXZlbnQ6IGZhbHNlIH1cbiAgICApO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBkcm9wKGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7XG4gICAgLy8gbGV0IGl0ZW0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyICE9PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiY29weWluZ1wiKTtcbiAgICAgIGlmIChldmVudC5pdGVtLmRhdGEuaXNFbGVtZW50KSB7XG4gICAgICAgIC8vIENsb25lIHRoZSBpdGVtIHRoYXQgd2FzIGRyb3BwZWQuXG4gICAgICAgIGNvbnN0IGRyYWdnZWRJdGVtSW5kZXggPSB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LmZpbmRJbmRleCgoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLmVsZW1lbnRJZCA9PT0gZXZlbnQuaXRlbS5kYXRhLmVsZW1lbnRJZDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29weUFycmF5SXRlbShcbiAgICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0LFxuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QsXG4gICAgICAgICAgZHJhZ2dlZEl0ZW1JbmRleCxcbiAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0ID0gSlNPTi5wYXJzZShcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgIGl0ZW0uZWxlbWVudElkID0gcmV2aXNlZFJhbmRJZCgpO1xuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhcIm1vdmluZ1wiKTtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShcbiAgICAgICAgZXZlbnQuY29udGFpbmVyLmRhdGEsXG4gICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGV4aXQoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHt9XG5cbiAgQGxvZ01ldGhvZFxuICBlbnRlcihldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge31cblxuICAvKiogUHJlZGljYXRlIGZ1bmN0aW9uIHRoYXQgb25seSBhbGxvd3MgaXNFbGVtZW50OiB0cnVlIGl0ZW1zIHRvIGJlIGRyb3BwZWQgaW50byBhIGxpc3QuICovXG4gIGlzRWxlbWVudFByZWRpY2F0ZShpdGVtOiBDZGtEcmFnPGFueT4pIHtcbiAgICByZXR1cm4gaXRlbS5kYXRhLmlzRWxlbWVudDtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcmVtb3ZlRWxlbWVudChpZHg6IG51bWJlciwgaWQ6IHN0cmluZykge1xuICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3Quc3BsaWNlKGlkeCwgMSk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGVkaXRFbGVtZW50KGlkeDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICB0aGlzLmVsZW1lbnRFZGl0b3JFbGVtZW50Q29uZmlnID0gaXRlbTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25TYXZlVXBkYXRlRWxlbWVudChldmVudDogYW55KSB7fVxuXG4gIGhhbmRsZU9uQ2xpY2tTYXZlRm9ybXMoZXZlbnQ6IGFueSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodGhpcy5mb3JtS2V5KSkge1xuICAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHByb3ZpZGUgRm9ybSBLZXlcIik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUtleSA9IHRoaXMuZm9ybUtleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuICAgIGlmIChpc0VtcHR5VmFsdWUodGhpcy5mb3JtVGl0bGUpKSB7XG4gICAgICB3aW5kb3cuYWxlcnQoXCJQbGVhc2UgcHJvdmlkZSBGb3JtIFRpdGxlXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCkpO1xuICAgIGZpbmFsRmllbGRzID0gZmluYWxGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS5lbGVtZW50VHlwZS5zdGFydHNXaXRoKFwiTkE8PlwiLCAwKSkge1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50SWQ7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUeXBlO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50VGl0bGU7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRDYXRlZ29yeTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uaXNFbGVtZW50O1xuXG4gICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgfVxuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudElkO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFR5cGU7XG4gICAgICBkZWxldGUgaXRlbS5lbGVtZW50VGl0bGU7XG4gICAgICBkZWxldGUgaXRlbS5lbGVtZW50Q2F0ZWdvcnk7XG4gICAgICBkZWxldGUgaXRlbS5pc0VsZW1lbnQ7XG5cbiAgICAgIGlmIChpdGVtLmRlZmF1bHQudmFsdWUpIHtcbiAgICAgICAgaXRlbS5kZWZhdWx0ID0ge1xuICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICBpc19mb3VuZDogZmFsc2UsXG4gICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb246IHtcbiAgICAgICAgICAgICAgICAgIGlzX3ZhbGlkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgICAgcnVsZXM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiVkFMVUVfQ0hFQ0tcIixcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhgJC4ke3RoaXMuZm9ybUtleX0uJHtpdGVtLmtleX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm46IHsga2V5OiBcIklTX05PVF9FTVBUWVwiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBpZDogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IFN0cmluZyhgJHtpdGVtLmtleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIGlzX2ZvdW5kOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgc291cmNlczogW11cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmFsRm9ybUNvbmZpZyA9IHtcbiAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybVRpdGxlLFxuICAgICAgZmllbGRzOiBmaW5hbEZpZWxkc1xuICAgIH07XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlbmRlcmVyRm9ybUNvbmZpZ1wiLCBKU09OLnN0cmluZ2lmeShmaW5hbEZvcm1Db25maWcpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIFwiYnVpbGRlckZvcm1Db25maWdcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAga2V5OiB0aGlzLmZvcm1LZXksXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBjb25zb2xlLmxvZyhmaW5hbEZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImJ1aWxkZXItaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci10aXRsZVwiPkt3aWtJRCBGb3JtIEJ1aWxkZXI8L2Rpdj5cbiAgICAgIDxmb3JtXG4gICAgICAgIFtmb3JtR3JvdXBdPVwiYnVpbGRlckZvcm1Hcm91cFwiXG4gICAgICAgIGNsYXNzPVwiYnVpbGRlci1mb3JtXCJcbiAgICAgID5cbiAgICAgICAgPGt3aWt1aS1pbnB1dFxuICAgICAgICAgIFtsYWJlbF09XCInRm9ybSBLZXknXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fa2V5J1wiXG4gICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcbiAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cIidmb3JtS2V5J1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHNbJ2Zvcm1LZXknXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gS2V5J1wiXG4gICAgICAgICAgW2ZvY3VzXT1cImZhbHNlXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJmYWxzZVwiXG4gICAgICAgICAgW2Nhc2VdPVwiJ3VwcGVyJ1wiXG4gICAgICAgICAgKGdldEtleVZhbHVlKT1cImhhbmRsZUdldEtleVZhbHVlKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktaW5wdXQ+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbaWRdPVwiJ2Zvcm1fdGl0bGUnXCJcbiAgICAgICAgICBbdHlwZV09XCIndGV4dCdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiJ2Zvcm1UaXRsZSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtVGl0bGUnXVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ1BsZWFzZSBlbnRlciBhIEZvcm0gVGl0bGUnXCJcbiAgICAgICAgICBbZm9jdXNdPVwiZmFsc2VcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImZhbHNlXCJcbiAgICAgICAgICBbY2FzZV09XCInZGVmYXVsdCdcIlxuICAgICAgICAgIChnZXRLZXlWYWx1ZSk9XCJoYW5kbGVHZXRLZXlWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWlucHV0PlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCJidWlsZGVyRm9ybUdyb3VwLnZhbGlkXCJcbiAgICAgICAgICBpZD1cInNhdmVfZm9ybV9idG5cIlxuICAgICAgICAgIGxhYmVsPVwiU2F2ZSBGb3JtXCJcbiAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgc3R5bGVzPVwiXCJcbiAgICAgICAgICBjbGFzcz1cIlwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXBwZWFyYW5jZT1cInByaW1hcnlcIlxuICAgICAgICAgIGljb249XCJcIlxuICAgICAgICAgIGljb25SaWdodD1cIlwiXG4gICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgIChvbkNsaWNrKT1cImhhbmRsZU9uQ2xpY2tTYXZlRm9ybXMoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1idXR0b24+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJ1aWxkZXItYm9keVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZWxlbWVudHMtZHJhZy13cmFwcGVyXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImZvcm0tZWxlbWVudHMtZHJhZ1wiXG4gICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImZvcm1FbGVtZW50c0RyYWdMaXN0XCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFNvcnRpbmdEaXNhYmxlZFxuICAgICAgICAgIFtjZGtEcm9wTGlzdENvbm5lY3RlZFRvXT1cIltmb3JtRWxlbWVudHNMaXN0XVwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RXhpdGVkKT1cImV4aXQoJGV2ZW50LCAnb3RoZXInKVwiXG4gICAgICAgICAgKGNka0Ryb3BMaXN0RW50ZXJlZCk9XCJlbnRlcigkZXZlbnQsICdvdGhlcicpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmb3JtRWxlbWVudERyYWdJdGVtIG9mIGZvcm1FbGVtZW50c0RyYWdMaXN0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUVsZW1lbnREcmFnSXRlbS5pc0VsZW1lbnRcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50LWRyYWdcIlxuICAgICAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICAgICAgICBbY2RrRHJhZ0RhdGFdPVwiZm9ybUVsZW1lbnREcmFnSXRlbVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAmIzg5NDI7JiM4OTQyOyZuYnNwOyZuYnNwO3t7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cImZvcm1FbGVtZW50RHJhZ0l0ZW0uY29tcG9uZW50XCI+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1lbGVtZW50LWRyYWdcIlxuICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJhZ0l0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm1FbGVtZW50RHJhZ0l0ZW0uaXNFbGVtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWVsZW1lbnQtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyYWdJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZvcm0tZWxlbWVudHMtZHJvcC13cmFwcGVyXCJcbiAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgI2Zvcm1FbGVtZW50c0xpc3Q9XCJjZGtEcm9wTGlzdFwiXG4gICAgICAgIFtjZGtEcm9wTGlzdERhdGFdPVwiZm9ybUVsZW1lbnRzRHJvcExpc3RcIlxuICAgICAgICAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50LCAnJylcIlxuICAgICAgICBbY2RrRHJvcExpc3RFbnRlclByZWRpY2F0ZV09XCJpc0VsZW1lbnRQcmVkaWNhdGVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICBsZXQgZm9ybUVsZW1lbnREcm9wSXRlbSBvZiBmb3JtRWxlbWVudHNEcm9wTGlzdDtcbiAgICAgICAgICAgIGxldCBpZHggPSBpbmRleFxuICAgICAgICAgIFwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50XCJcbiAgICAgICAgICAgIGNka0RyYWdcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtZ3JhYi1zeW1ib2xcIj4mIzg5NDI7JiM4OTQyOzwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LW1haW5cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC10aXRsZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b24taWNvblxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2VkaXQtZWxlbWVudCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZXNdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ3NlY29uZGFyeSdcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCIndHVpSWNvbkVkaXQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImVkaXRFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgPjwva3dpa3VpLWJ1dHRvbi1pY29uPlxuICAgICAgICAgICAgICAgICAgPGt3aWt1aS1idXR0b24taWNvblxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3JlbW92ZS1lbGVtZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93TG9hZGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwiJ2J1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCInYWNjZW50J1wiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIid0dWlJY29uQ2xvc2VMYXJnZSdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hhcGVdPVwiJ3JvdW5kZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NpemVdPVwiJ3MnXCJcbiAgICAgICAgICAgICAgICAgICAgKG9uQ2xpY2spPVwicmVtb3ZlRWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDwhLS0gPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiZWRpdCBlbGVtZW50IHByb3BlcnRpZXNcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAmIzk5OTg7XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiZGVsZXRlIGVsZW1lbnRcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAmIzEwMDA2O1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+IC0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWJvZHlcIj4gPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtaWRcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudElkIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRDYXRlZ29yeSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC10eXBlXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRUeXBlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJleGFtcGxlLWN1c3RvbS1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAgICAgKmNka0RyYWdQbGFjZWhvbGRlclxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJmb3JtRWxlbWVudERyb3BJdGVtLmNvbXBvbmVudFwiPiA8L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZvcm1Nb2RhbDsgY29udGV4dDogZm9ybUVsZW1lbnREcm9wSXRlbVwiPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImVsZW1lbnQtcHJvcGVydHktZWRpdG9yLXdyYXBwZXJcIj5cbiAgICAgICAgPGVsZW1lbnQtY29uZmlnLWVkaXRvclxuICAgICAgICAgIFtlbGVtZW50Q29uZmlnXT1cImVsZW1lbnRFZGl0b3JFbGVtZW50Q29uZmlnXCJcbiAgICAgICAgICAodXBkYXRlRWxlbWVudCk9XCJoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KCRldmVudClcIlxuICAgICAgICA+PC9lbGVtZW50LWNvbmZpZy1lZGl0b3I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYnVpbGRlci1mb290ZXJcIj4gJmNvcHk7IEJhaWp1IERvZGhpYSwgS3dpa0lEIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULGtCQUFrQixFQUNuQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFPakQsTUFBTSxPQUFPLDJCQUEyQjtJQW9CdEM7UUFuQkEsWUFBTyxHQUFXLEVBQUUsQ0FBQztRQUNyQixjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLHFCQUFnQixHQUFjLFNBQVMsQ0FBQztRQUV4QyxrQkFBYSxHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2pELHFCQUFnQixHQUFlLElBQUksUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hELGtCQUFhLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDbEQscUJBQWdCLEdBQWUsSUFBSSxRQUFRLEVBQUUsQ0FBQyxTQUFTLENBQUM7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Qiw0REN2QnhDLHd2UEF1TkE7QURqR0U7SUFEQyxTQUFTO29FQVFUO0FBR0Q7SUFEQyxTQUFTO3VEQW1DVDtBQUdEO0lBREMsU0FBUzt1REFDa0M7QUFHNUM7SUFEQyxTQUFTO3dEQUNtQztBQVE3QztJQURDLFNBQVM7Z0VBR1Q7QUFHRDtJQURDLFNBQVM7OERBR1Q7QUFHRDtJQURDLFNBQVM7NEVBQzhCOzRGQW5LN0IsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLG9CQUFvQixFQUFFLDBCQUEwQixDQUFDO2lCQUM5RDswRUFnR0MsaUJBQWlCLE1BVWpCLElBQUksTUFxQ0osSUFBSSxNQUdKLEtBQUssTUFRTCxhQUFhLE1BS2IsV0FBVyxNQUtYLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENka0RyYWcsXG4gIGNvcHlBcnJheUl0ZW0sXG4gIG1vdmVJdGVtSW5BcnJheVxufSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RLZXlFeGlzdHMsXG4gIGdldE9iamVjdEZyb21Mb2NhbFN0b3JhZ2UsXG4gIGlzRW1wdHlWYWx1ZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2QsXG4gIHNldE1pc3NpbmdLZXlWYWx1ZVxufSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEVsZW1lbnRzIH0gZnJvbSBcIi4vc2hhcmVkL2VsZW1lbnRzXCI7XG5pbXBvcnQgeyByZXZpc2VkUmFuZElkIH0gZnJvbSBcIi4vc2hhcmVkL2hlbHBlcnNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImt3aWtpZC1mb3Jtcy1idWlsZGVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYnVpbGRlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcInNoYXJlZC9zaGFyZWQuc2Nzc1wiLCBcIi4vYnVpbGRlci5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3Jtc0J1aWxkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtS2V5OiBzdHJpbmcgPSBcIlwiO1xuICBmb3JtVGl0bGU6IHN0cmluZyA9IFwiXCI7XG4gIGJ1aWxkZXJGb3JtR3JvdXA6IEZvcm1Hcm91cCA9IHVuZGVmaW5lZDtcblxuICBiYXNpY0VsZW1lbnRzOiBBcnJheTxhbnk+ID0gbmV3IEVsZW1lbnRzKCkuYmFzaWM7XG4gIGRvY3VtZW50RWxlbWVudHM6IEFycmF5PGFueT4gPSBuZXcgRWxlbWVudHMoKS5kb2N1bWVudHM7XG4gIG90aGVyRWxlbWVudHM6IEFycmF5PGFueT4gPSBuZXcgRWxlbWVudHMoKS5vdGhlcnM7XG4gIHRlbXBsYXRlRWxlbWVudHM6IEFycmF5PGFueT4gPSBuZXcgRWxlbWVudHMoKS50ZW1wbGF0ZXM7XG5cbiAgZWxlbWVudHNNYXBwaW5nOiBhbnkgPSBuZXcgRWxlbWVudHMoKS5lbGVtZW50TWFwcGluZztcblxuICBmb3JtRWxlbWVudHNEcmFnTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuICBmb3JtRWxlbWVudHNEcm9wTGlzdDogQXJyYXk8YW55PiA9IFtdO1xuXG4gIGVsZW1lbnRFZGl0b3JFbGVtZW50Q29uZmlnOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgZmluYWxKU09OQ29uZmlnOiBhbnkgPSB1bmRlZmluZWQ7XG4gIEpTT04gPSBKU09OO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYnVpbGRlckZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgZm9ybUtleTogbmV3IEZvcm1Db250cm9sKFwiXCIsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgICBmb3JtVGl0bGU6IG5ldyBGb3JtQ29udHJvbChcIlwiLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pXG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3JtRHJvcENvbmZpZyA9IGdldE9iamVjdEZyb21Mb2NhbFN0b3JhZ2UoXCJmb3JtRHJvcENvbmZpZ1wiKTtcblxuICAgIGlmIChpc05vdEVtcHR5VmFsdWUoZm9ybURyb3BDb25maWcpKSB7XG4gICAgICB0aGlzLmZvcm1LZXkgPSBmb3JtRHJvcENvbmZpZy5rZXk7XG4gICAgICB0aGlzLmZvcm1UaXRsZSA9IGZvcm1Ecm9wQ29uZmlnLnRpdGxlO1xuICAgICAgY29uc3QgZm9ybUZpZWxkcyA9IGZvcm1Ecm9wQ29uZmlnLmZpZWxkcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgaXRlbS5lbGVtZW50SWQgPSByZXZpc2VkUmFuZElkKCk7XG4gICAgICAgIGl0ZW0uZWxlbWVudENhdGVnb3J5ID0gdGhpcy5lbGVtZW50c01hcHBpbmcuYmFzaWMuaW5jbHVkZXMoaXRlbS50eXBlKVxuICAgICAgICAgID8gXCJiYXNpY1wiXG4gICAgICAgICAgOiB0aGlzLmVsZW1lbnRzTWFwcGluZy5kb2N1bWVudHMuaW5jbHVkZXMoaXRlbS50eXBlKVxuICAgICAgICAgID8gXCJkb2N1bWVudFwiXG4gICAgICAgICAgOiBcIm90aGVyc1wiO1xuICAgICAgICBpdGVtLmVsZW1lbnRUeXBlID1cbiAgICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJiYXNpY1wiIHx8XG4gICAgICAgICAgaXRlbS5lbGVtZW50Q2F0ZWdvcnkgPT09IFwiZG9jdW1lbnRcIlxuICAgICAgICAgICAgPyBpdGVtLnR5cGVcbiAgICAgICAgICAgIDogU3RyaW5nKGBOQTw+JHtpdGVtLnR5cGV9YCk7XG4gICAgICAgIGl0ZW0uaXNFbGVtZW50ID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgZWxlbWVudEZpbHRlcmVkID1cbiAgICAgICAgICBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJiYXNpY1wiXG4gICAgICAgICAgICA/IHRoaXMuYmFzaWNFbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LmVsZW1lbnRUeXBlID09PSBpdGVtLnR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJkb2N1bWVudFwiXG4gICAgICAgICAgICA/IHRoaXMuZG9jdW1lbnRFbGVtZW50cy5maW5kKFxuICAgICAgICAgICAgICAgIChlbGVtZW50KSA9PiBlbGVtZW50LmVsZW1lbnRUeXBlID09PSBpdGVtLnR5cGVcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBpdGVtLmVsZW1lbnRDYXRlZ29yeSA9PT0gXCJvdGhlcnNcIlxuICAgICAgICAgICAgPyB0aGlzLm90aGVyRWxlbWVudHMuZmluZChcbiAgICAgICAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5lbGVtZW50VHlwZSA9PT0gaXRlbS50eXBlXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICBpdGVtLmVsZW1lbnRUaXRsZSA9IGlzRW1wdHlWYWx1ZShlbGVtZW50RmlsdGVyZWQpXG4gICAgICAgICAgPyBpdGVtLmVsZW1lbnRDYXRlZ29yeSArIFwiOjpcIiArIGl0ZW0uZWxlbWVudFR5cGVcbiAgICAgICAgICA6IGVsZW1lbnRGaWx0ZXJlZC5lbGVtZW50VGl0bGU7XG5cbiAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCA9IGZvcm1GaWVsZHM7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdCA9IFtcbiAgICAgIHsgaXNFbGVtZW50OiBmYWxzZSwgZWxlbWVudFRpdGxlOiBcIkJhc2ljIEVsZW1lbnRzXCIgfSxcbiAgICAgIC4uLnRoaXMuYmFzaWNFbGVtZW50cyxcbiAgICAgIHsgaXNFbGVtZW50OiBmYWxzZSwgZWxlbWVudFRpdGxlOiBcIkRvY3VtZW50IEVsZW1lbnRzXCIgfSxcbiAgICAgIC4uLnRoaXMuZG9jdW1lbnRFbGVtZW50cyxcbiAgICAgIHsgaXNFbGVtZW50OiBmYWxzZSwgZWxlbWVudFRpdGxlOiBcIk90aGVyIEVsZW1lbnRzXCIgfSxcbiAgICAgIC4uLnRoaXMub3RoZXJFbGVtZW50c1xuICAgIF07XG5cbiAgICBmb3IgKGxldCBmb3JtRWxlbWVudHNEcmFnSXRlbSBvZiB0aGlzLmZvcm1FbGVtZW50c0RyYWdMaXN0KSB7XG4gICAgICBmb3JtRWxlbWVudHNEcmFnSXRlbS5lbGVtZW50SWQgPSByZXZpc2VkUmFuZElkKCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlT25DaGFuZ2UoXG4gICAgZXZlbnQ6IHsgdGFyZ2V0OiB7IHZhbHVlOiBhbnkgfSB9LFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAga2V5OiBzdHJpbmcgfCBudW1iZXIsXG4gICAgaWR4OiBhbnlcbiAgKSB7XG4gICAgY29uc3QgX3ZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICB9XG5cbiAgLy8gRE9NIEV2ZW50IEhhbmRsZXJzXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlR2V0S2V5VmFsdWUoZTogYW55KSB7XG4gICAgdGhpcy5idWlsZGVyRm9ybUdyb3VwLnBhdGNoVmFsdWUoXG4gICAgICB7XG4gICAgICAgIFtlLmtleV06IGUudmFsdWVcbiAgICAgIH0sXG4gICAgICB7IGVtaXRFdmVudDogZmFsc2UgfVxuICAgICk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGRyb3AoZXZlbnQ6IGFueSwgZWxlbWVudENhdGVnb3J5OiBzdHJpbmcpIHtcbiAgICAvLyBsZXQgaXRlbSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZXZlbnQpKTtcbiAgICBpZiAoZXZlbnQucHJldmlvdXNDb250YWluZXIgIT09IGV2ZW50LmNvbnRhaW5lcikge1xuICAgICAgY29uc29sZS5sb2coXCJjb3B5aW5nXCIpO1xuICAgICAgaWYgKGV2ZW50Lml0ZW0uZGF0YS5pc0VsZW1lbnQpIHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIGl0ZW0gdGhhdCB3YXMgZHJvcHBlZC5cbiAgICAgICAgY29uc3QgZHJhZ2dlZEl0ZW1JbmRleCA9IHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QuZmluZEluZGV4KChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0uZWxlbWVudElkID09PSBldmVudC5pdGVtLmRhdGEuZWxlbWVudElkO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb3B5QXJyYXlJdGVtKFxuICAgICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QsXG4gICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCxcbiAgICAgICAgICBkcmFnZ2VkSXRlbUluZGV4LFxuICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZm9ybUVsZW1lbnRzRHJhZ0xpc3QgPSBKU09OLnBhcnNlKFxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudHNEcmFnTGlzdC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgaXRlbS5lbGVtZW50SWQgPSByZXZpc2VkUmFuZElkKCk7XG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKFwibW92aW5nXCIpO1xuICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICBldmVudC5jb250YWluZXIuZGF0YSxcbiAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgZXZlbnQuY3VycmVudEluZGV4XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZXhpdChldmVudDogYW55LCBlbGVtZW50Q2F0ZWdvcnk6IHN0cmluZykge31cblxuICBAbG9nTWV0aG9kXG4gIGVudGVyKGV2ZW50OiBhbnksIGVsZW1lbnRDYXRlZ29yeTogc3RyaW5nKSB7fVxuXG4gIC8qKiBQcmVkaWNhdGUgZnVuY3Rpb24gdGhhdCBvbmx5IGFsbG93cyBpc0VsZW1lbnQ6IHRydWUgaXRlbXMgdG8gYmUgZHJvcHBlZCBpbnRvIGEgbGlzdC4gKi9cbiAgaXNFbGVtZW50UHJlZGljYXRlKGl0ZW06IENka0RyYWc8YW55Pikge1xuICAgIHJldHVybiBpdGVtLmRhdGEuaXNFbGVtZW50O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICByZW1vdmVFbGVtZW50KGlkeDogbnVtYmVyLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdC5zcGxpY2UoaWR4LCAxKTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgZWRpdEVsZW1lbnQoaWR4OiBudW1iZXIsIGl0ZW06IGFueSkge1xuICAgIHRoaXMuZWxlbWVudEVkaXRvckVsZW1lbnRDb25maWcgPSBpdGVtO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBoYW5kbGVPblNhdmVVcGRhdGVFbGVtZW50KGV2ZW50OiBhbnkpIHt9XG5cbiAgaGFuZGxlT25DbGlja1NhdmVGb3JtcyhldmVudDogYW55KSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZSkpIHtcbiAgICAgIHdpbmRvdy5hbGVydChcIlBsZWFzZSBwcm92aWRlIEZvcm0gS2V5XCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1LZXkgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybUtleS52YWx1ZTtcbiAgICAgIHRoaXMuZm9ybUtleSA9IHRoaXMuZm9ybUtleS5yZXBsYWNlKC9cXHMvZywgXCJfXCIpLnRvTG9jYWxlVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlKSkge1xuICAgICAgd2luZG93LmFsZXJ0KFwiUGxlYXNlIHByb3ZpZGUgRm9ybSBUaXRsZVwiKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5mb3JtVGl0bGUgPSB0aGlzLmJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHMuZm9ybVRpdGxlLnZhbHVlO1xuICAgIH1cblxuICAgIGxldCBmaW5hbEZpZWxkcyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5mb3JtRWxlbWVudHNEcm9wTGlzdCkpO1xuICAgIGZpbmFsRmllbGRzID0gZmluYWxGaWVsZHMubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtID0gc2V0TWlzc2luZ0tleVZhbHVlKGl0ZW0sIFwidHlwZVwiLCBpdGVtLmVsZW1lbnRUeXBlKTtcblxuICAgICAgaWYgKGl0ZW0uZWxlbWVudFR5cGUuc3RhcnRzV2l0aChcIk5BPD5cIiwgMCkpIHtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudElkO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50VHlwZTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgICBkZWxldGUgaXRlbS5lbGVtZW50Q2F0ZWdvcnk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLmlzRWxlbWVudDtcblxuICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgIH1cbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRJZDtcbiAgICAgIGRlbGV0ZSBpdGVtLmVsZW1lbnRUeXBlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudFRpdGxlO1xuICAgICAgZGVsZXRlIGl0ZW0uZWxlbWVudENhdGVnb3J5O1xuICAgICAgZGVsZXRlIGl0ZW0uaXNFbGVtZW50O1xuXG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoaXRlbSwgXCJkZWZhdWx0XCIpKSB7XG4gICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhpdGVtLmRlZmF1bHQsIFwidmFsdWVcIikpIHtcbiAgICAgICAgICBpZiAoaXRlbS5kZWZhdWx0LnZhbHVlKSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAga2V5OiBcIk9CSkVDVFwiLFxuICAgICAgICAgICAgICAgICAgICBwcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIkFMTF9GT1JNU19EQVRBXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBTdHJpbmcoYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgICAgaXNfdmFsaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBbXCJPTl9JTklUXCJdLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlZBTFVFX0NIRUNLXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiT0JKRUNUXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IFwiQUxMX0ZPUk1TX0RBVEFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IFN0cmluZyhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYCQuJHt0aGlzLmZvcm1LZXl9LiR7aXRlbS5rZXl9YFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybjogeyBrZXk6IFwiSVNfTk9UX0VNUFRZXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBcIjFcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCIxXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRLZXk6IFN0cmluZyhgJHtpdGVtLmtleX1gKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJPQkpFQ1RcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleTogXCJBTExfRk9STVNfREFUQVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogU3RyaW5nKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJC4ke3RoaXMuZm9ybUtleX0uJHtpdGVtLmtleX1gXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpdGVtLmRlZmF1bHQgPSB7XG4gICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNfZm91bmQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHNvdXJjZXM6IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH0pO1xuICAgIGNvbnN0IGZpbmFsRm9ybUNvbmZpZyA9IHtcbiAgICAgIGtleTogdGhpcy5mb3JtS2V5LFxuICAgICAgdGl0bGU6IHRoaXMuZm9ybVRpdGxlLFxuICAgICAgZmllbGRzOiBmaW5hbEZpZWxkc1xuICAgIH07XG5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInJlbmRlcmVyRm9ybUNvbmZpZ1wiLCBKU09OLnN0cmluZ2lmeShmaW5hbEZvcm1Db25maWcpKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgIFwiYnVpbGRlckZvcm1Db25maWdcIixcbiAgICAgIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAga2V5OiB0aGlzLmZvcm1LZXksXG4gICAgICAgIHRpdGxlOiB0aGlzLmZvcm1UaXRsZSxcbiAgICAgICAgZmllbGRzOiB0aGlzLmZvcm1FbGVtZW50c0Ryb3BMaXN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLmZpbmFsSlNPTkNvbmZpZyA9IGZpbmFsRm9ybUNvbmZpZztcbiAgICBjb25zb2xlLmxvZyhmaW5hbEZvcm1Db25maWcpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuZm9ybUVsZW1lbnRzRHJvcExpc3QpO1xuICB9XG5cbiAgY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KEpTT04uc3RyaW5naWZ5KHRoaXMuZmluYWxKU09OQ29uZmlnKSk7XG4gICAgYWxlcnQoXCJKU09OIENvbmZpZyBpcyBjb3BpZWRcIik7XG4gIH1cblxuICBjbG9zZUpTT05Qb3B1cCgpIHtcbiAgICB0aGlzLmZpbmFsSlNPTkNvbmZpZyA9IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lclwiPlxuICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJ1aWxkZXItdGl0bGVcIj5Ld2lrSUQgRm9ybSBCdWlsZGVyPC9kaXY+XG4gICAgICA8Zm9ybVxuICAgICAgICBbZm9ybUdyb3VwXT1cImJ1aWxkZXJGb3JtR3JvdXBcIlxuICAgICAgICBjbGFzcz1cImJ1aWxkZXItZm9ybVwiXG4gICAgICA+XG4gICAgICAgIDxrd2lrdWktaW5wdXRcbiAgICAgICAgICBbbGFiZWxdPVwiJ0Zvcm0gS2V5J1wiXG4gICAgICAgICAgW2lkXT1cIidmb3JtX2tleSdcIlxuICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZm9ybUtleSdcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJidWlsZGVyRm9ybUdyb3VwLmNvbnRyb2xzWydmb3JtS2V5J11cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmYWxzZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidQbGVhc2UgZW50ZXIgYSBGb3JtIEtleSdcIlxuICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjYXNlXT1cIid1cHBlcidcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAoZ2V0S2V5VmFsdWUpPVwiaGFuZGxlR2V0S2V5VmFsdWUoJGV2ZW50KVwiXG4gICAgICAgID48L2t3aWt1aS1pbnB1dD5cbiAgICAgICAgPGt3aWt1aS1pbnB1dFxuICAgICAgICAgIFtsYWJlbF09XCInRm9ybSBUaXRsZSdcIlxuICAgICAgICAgIFtpZF09XCInZm9ybV90aXRsZSdcIlxuICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCInZm9ybVRpdGxlJ1wiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImJ1aWxkZXJGb3JtR3JvdXAuY29udHJvbHNbJ2Zvcm1UaXRsZSddXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInUGxlYXNlIGVudGVyIGEgRm9ybSBUaXRsZSdcIlxuICAgICAgICAgIFtmb2N1c109XCJmYWxzZVwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiZmFsc2VcIlxuICAgICAgICAgIFtjYXNlXT1cIidkZWZhdWx0J1wiXG4gICAgICAgICAgc2l6ZT1cIm1cIlxuICAgICAgICAgIChnZXRLZXlWYWx1ZSk9XCJoYW5kbGVHZXRLZXlWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgPjwva3dpa3VpLWlucHV0PlxuICAgICAgICA8a3dpa3VpLWJ1dHRvblxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhYnVpbGRlckZvcm1Hcm91cC52YWxpZFwiXG4gICAgICAgICAgaWQ9XCJzYXZlX2Zvcm1fYnRuXCJcbiAgICAgICAgICBsYWJlbD1cIlNhdmUgRm9ybVwiXG4gICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgIHN0eWxlcz1cIlwiXG4gICAgICAgICAgY2xhc3M9XCJcIlxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGFwcGVhcmFuY2U9XCJwcmltYXJ5XCJcbiAgICAgICAgICBpY29uPVwiXCJcbiAgICAgICAgICBpY29uUmlnaHQ9XCJcIlxuICAgICAgICAgIHNpemU9XCJtXCJcbiAgICAgICAgICAob25DbGljayk9XCJoYW5kbGVPbkNsaWNrU2F2ZUZvcm1zKCRldmVudClcIlxuICAgICAgICA+PC9rd2lrdWktYnV0dG9uPlxuICAgICAgPC9mb3JtPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJidWlsZGVyLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWVsZW1lbnRzLWRyYWctd3JhcHBlclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnRzLWRyYWdcIlxuICAgICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICAgW2Nka0Ryb3BMaXN0RGF0YV09XCJmb3JtRWxlbWVudHNEcmFnTGlzdFwiXG4gICAgICAgICAgY2RrRHJvcExpc3RTb3J0aW5nRGlzYWJsZWRcbiAgICAgICAgICBbY2RrRHJvcExpc3RDb25uZWN0ZWRUb109XCJbZm9ybUVsZW1lbnRzTGlzdF1cIlxuICAgICAgICAgIChjZGtEcm9wTGlzdEV4aXRlZCk9XCJleGl0KCRldmVudCwgJ290aGVyJylcIlxuICAgICAgICAgIChjZGtEcm9wTGlzdEVudGVyZWQpPVwiZW50ZXIoJGV2ZW50LCAnb3RoZXInKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgZm9ybUVsZW1lbnREcmFnSXRlbSBvZiBmb3JtRWxlbWVudHNEcmFnTGlzdFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1FbGVtZW50RHJhZ0l0ZW0uaXNFbGVtZW50XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZWxlbWVudC1kcmFnXCJcbiAgICAgICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgICAgICAgW2Nka0RyYWdEYXRhXT1cImZvcm1FbGVtZW50RHJhZ0l0ZW1cIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgJiM4OTQyOyYjODk0MjsmbmJzcDsmbmJzcDt7eyBmb3JtRWxlbWVudERyYWdJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJmb3JtRWxlbWVudERyYWdJdGVtLmNvbXBvbmVudFwiPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tZWxlbWVudC1kcmFnXCJcbiAgICAgICAgICAgICAgICAqY2RrRHJhZ1BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyYWdJdGVtLmVsZW1lbnRUaXRsZSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JtRWxlbWVudERyYWdJdGVtLmlzRWxlbWVudFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1lbGVtZW50LWNhdGVnb3J5XCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcmFnSXRlbS5lbGVtZW50VGl0bGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmb3JtLWVsZW1lbnRzLWRyb3Atd3JhcHBlclwiXG4gICAgICAgIGNka0Ryb3BMaXN0XG4gICAgICAgICNmb3JtRWxlbWVudHNMaXN0PVwiY2RrRHJvcExpc3RcIlxuICAgICAgICBbY2RrRHJvcExpc3REYXRhXT1cImZvcm1FbGVtZW50c0Ryb3BMaXN0XCJcbiAgICAgICAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCRldmVudCwgJycpXCJcbiAgICAgICAgW2Nka0Ryb3BMaXN0RW50ZXJQcmVkaWNhdGVdPVwiaXNFbGVtZW50UHJlZGljYXRlXCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgbGV0IGZvcm1FbGVtZW50RHJvcEl0ZW0gb2YgZm9ybUVsZW1lbnRzRHJvcExpc3Q7XG4gICAgICAgICAgICBsZXQgaWR4ID0gaW5kZXhcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudFwiXG4gICAgICAgICAgICBjZGtEcmFnXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWdyYWItc3ltYm9sXCI+JiM4OTQyOyYjODk0Mjs8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1tYWluXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtdGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZvcm1FbGVtZW50RHJvcEl0ZW0uZWxlbWVudFRpdGxlIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uLWljb25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidlZGl0LWVsZW1lbnQnXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJcIlxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCInYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cIidzZWNvbmRhcnknXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiJ3R1aUljb25FZGl0J1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaGFwZV09XCIncm91bmRlZCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2l6ZV09XCIncydcIlxuICAgICAgICAgICAgICAgICAgICAob25DbGljayk9XCJlZGl0RWxlbWVudChpZHgsIGZvcm1FbGVtZW50RHJvcEl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgID48L2t3aWt1aS1idXR0b24taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxrd2lrdWktYnV0dG9uLWljb25cbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidyZW1vdmUtZWxlbWVudCdcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZXNdPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIlwiXG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24nXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiJ2FjY2VudCdcIlxuICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCIndHVpSWNvbkNsb3NlTGFyZ2UnXCJcbiAgICAgICAgICAgICAgICAgICAgW3NoYXBlXT1cIidyb3VuZGVkJ1wiXG4gICAgICAgICAgICAgICAgICAgIFtzaXplXT1cIidzJ1wiXG4gICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInJlbW92ZUVsZW1lbnQoaWR4LCBmb3JtRWxlbWVudERyb3BJdGVtKVwiXG4gICAgICAgICAgICAgICAgICA+PC9rd2lrdWktYnV0dG9uLWljb24+XG4gICAgICAgICAgICAgICAgICA8IS0tIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cImVkaXQgZWxlbWVudCBwcm9wZXJ0aWVzXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgJiM5OTk4O1xuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVFbGVtZW50KGlkeCwgZm9ybUVsZW1lbnREcm9wSXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cImRlbGV0ZSBlbGVtZW50XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgJiMxMDAwNjtcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPiAtLT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1ib2R5XCI+IDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtZm9vdGVyXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZHJvcC1lbGVtZW50LWlkXCI+XG4gICAgICAgICAgICAgICAgICB7eyBmb3JtRWxlbWVudERyb3BJdGVtLmVsZW1lbnRJZCB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWRyb3AtZWxlbWVudC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50Q2F0ZWdvcnkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1kcm9wLWVsZW1lbnQtdHlwZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZm9ybUVsZW1lbnREcm9wSXRlbS5lbGVtZW50VHlwZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXhhbXBsZS1jdXN0b20tcGxhY2Vob2xkZXJcIlxuICAgICAgICAgICAgICAgICpjZGtEcmFnUGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwiZm9ybUVsZW1lbnREcm9wSXRlbS5jb21wb25lbnRcIj4gPC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmb3JtTW9kYWw7IGNvbnRleHQ6IGZvcm1FbGVtZW50RHJvcEl0ZW1cIj48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJlbGVtZW50LXByb3BlcnR5LWVkaXRvci13cmFwcGVyXCI+XG4gICAgICAgIDxlbGVtZW50LWNvbmZpZy1lZGl0b3JcbiAgICAgICAgICBbZWxlbWVudENvbmZpZ109XCJlbGVtZW50RWRpdG9yRWxlbWVudENvbmZpZ1wiXG4gICAgICAgICAgKHVwZGF0ZUVsZW1lbnQpPVwiaGFuZGxlT25TYXZlVXBkYXRlRWxlbWVudCgkZXZlbnQpXCJcbiAgICAgICAgPjwvZWxlbWVudC1jb25maWctZWRpdG9yPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImJ1aWxkZXItZm9vdGVyXCI+ICZjb3B5OyBCYWlqdSBEb2RoaWEsIEt3aWtJRCA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cIm1vZGFsXCJcbiAgICAqbmdJZj1cImZpbmFsSlNPTkNvbmZpZ1wiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm94XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGluZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7IGZvcm1UaXRsZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1hY3Rpb25zXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwibW9kYWwtY29kZS1jb3B5XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlUb0NsaXBib2FyZCgpXCJcbiAgICAgICAgICAgICAgPkNvcHkgdG8gQ2xpcGJvYXJkPC9kaXZcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbC1jbG9zZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZUpTT05Qb3B1cCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQ2xvc2VcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHByZT5cbiAgICAgICAgPGNvZGU+e3tKU09OLnN0cmluZ2lmeShmaW5hbEpTT05Db25maWcsIHVuZGVmaW5lZCwgMil9fTwvY29kZT5cbiAgICA8L3ByZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -2,11 +2,22 @@ import { DragDropModule } from "@angular/cdk/drag-drop";
|
|
|
2
2
|
import { CommonModule } from "@angular/common";
|
|
3
3
|
import { NgModule } from "@angular/core";
|
|
4
4
|
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
5
|
-
import { KwikUIButtonIconModule, KwikUIButtonModule, KwikUIInputModule } from "kwikui";
|
|
5
|
+
import { KwikUIButtonIconModule, KwikUIButtonModule, KwikUIInputModule, KwikUIInputNumberModule, KwikUISelectComboboxModule, KwikUITableModule, KwikUITextareaModule } from "kwikui";
|
|
6
6
|
import { KwikIDFormsBuilderComponent } from "./builder.component";
|
|
7
7
|
import { BasicElementConfigEditor } from "./element-config-editor/editors/basic-element-config.editor.component";
|
|
8
|
+
import { BasicCheckboxConfigEditor } from "./element-config-editor/editors/basic/checkbox-config.editor.component";
|
|
9
|
+
import { BasicDateConfigEditor } from "./element-config-editor/editors/basic/date-config.editor.component";
|
|
10
|
+
import { BasicNumberConfigEditor } from "./element-config-editor/editors/basic/number-config.editor.component";
|
|
11
|
+
import { BasicOtpConfigEditor } from "./element-config-editor/editors/basic/otp-config.editor.component";
|
|
12
|
+
import { BasicPhoneConfigEditor } from "./element-config-editor/editors/basic/phone-config.editor.component";
|
|
8
13
|
import { BasicRadioConfigEditor } from "./element-config-editor/editors/basic/radio-config.editor.component";
|
|
9
14
|
import { BasicTextConfigEditor } from "./element-config-editor/editors/basic/text-config.editor.component";
|
|
15
|
+
import { DocumentElementConfigEditor } from "./element-config-editor/editors/document-element-config.editor.component";
|
|
16
|
+
import { DocumentAadhaarNumberConfigEditor } from "./element-config-editor/editors/document/aadhaar-number-config.editor.component";
|
|
17
|
+
import { DocumentPanNumberConfigEditor } from "./element-config-editor/editors/document/pan-number-config.editor.component";
|
|
18
|
+
import { OtherElementConfigEditor } from "./element-config-editor/editors/other-element-config.editor.component";
|
|
19
|
+
import { OtherHTMLConfigEditor } from "./element-config-editor/editors/other/html-config.editor.component";
|
|
20
|
+
import { OtherTitleConfigEditor } from "./element-config-editor/editors/other/title-config.editor.component";
|
|
10
21
|
import { ElementConfigEditor } from "./element-config-editor/element-config-editor.component";
|
|
11
22
|
import * as i0 from "@angular/core";
|
|
12
23
|
export class KwikIDFormBuilderModule {
|
|
@@ -16,21 +27,40 @@ export class KwikIDFormBuilderModule {
|
|
|
16
27
|
ElementConfigEditor,
|
|
17
28
|
BasicElementConfigEditor,
|
|
18
29
|
BasicTextConfigEditor,
|
|
19
|
-
BasicRadioConfigEditor
|
|
30
|
+
BasicRadioConfigEditor,
|
|
31
|
+
BasicNumberConfigEditor,
|
|
32
|
+
BasicCheckboxConfigEditor,
|
|
33
|
+
BasicDateConfigEditor,
|
|
34
|
+
BasicOtpConfigEditor,
|
|
35
|
+
BasicPhoneConfigEditor,
|
|
36
|
+
DocumentElementConfigEditor,
|
|
37
|
+
DocumentAadhaarNumberConfigEditor,
|
|
38
|
+
DocumentPanNumberConfigEditor,
|
|
39
|
+
OtherElementConfigEditor,
|
|
40
|
+
OtherHTMLConfigEditor,
|
|
41
|
+
OtherTitleConfigEditor], imports: [CommonModule,
|
|
20
42
|
FormsModule,
|
|
21
43
|
ReactiveFormsModule,
|
|
22
44
|
DragDropModule,
|
|
45
|
+
KwikUIButtonIconModule,
|
|
23
46
|
KwikUIButtonModule,
|
|
24
47
|
KwikUIInputModule,
|
|
25
|
-
|
|
48
|
+
KwikUIInputNumberModule,
|
|
49
|
+
KwikUISelectComboboxModule,
|
|
50
|
+
KwikUITableModule,
|
|
51
|
+
KwikUITextareaModule], exports: [KwikIDFormsBuilderComponent] });
|
|
26
52
|
/** @nocollapse */ KwikIDFormBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormBuilderModule, providers: [], imports: [[
|
|
27
53
|
CommonModule,
|
|
28
54
|
FormsModule,
|
|
29
55
|
ReactiveFormsModule,
|
|
30
56
|
DragDropModule,
|
|
57
|
+
KwikUIButtonIconModule,
|
|
31
58
|
KwikUIButtonModule,
|
|
32
59
|
KwikUIInputModule,
|
|
33
|
-
|
|
60
|
+
KwikUIInputNumberModule,
|
|
61
|
+
KwikUISelectComboboxModule,
|
|
62
|
+
KwikUITableModule,
|
|
63
|
+
KwikUITextareaModule
|
|
34
64
|
]] });
|
|
35
65
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormBuilderModule, decorators: [{
|
|
36
66
|
type: NgModule,
|
|
@@ -40,19 +70,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
|
|
|
40
70
|
ElementConfigEditor,
|
|
41
71
|
BasicElementConfigEditor,
|
|
42
72
|
BasicTextConfigEditor,
|
|
43
|
-
BasicRadioConfigEditor
|
|
73
|
+
BasicRadioConfigEditor,
|
|
74
|
+
BasicNumberConfigEditor,
|
|
75
|
+
BasicCheckboxConfigEditor,
|
|
76
|
+
BasicDateConfigEditor,
|
|
77
|
+
BasicOtpConfigEditor,
|
|
78
|
+
BasicPhoneConfigEditor,
|
|
79
|
+
DocumentElementConfigEditor,
|
|
80
|
+
DocumentAadhaarNumberConfigEditor,
|
|
81
|
+
DocumentPanNumberConfigEditor,
|
|
82
|
+
OtherElementConfigEditor,
|
|
83
|
+
OtherHTMLConfigEditor,
|
|
84
|
+
OtherTitleConfigEditor
|
|
44
85
|
],
|
|
45
86
|
imports: [
|
|
46
87
|
CommonModule,
|
|
47
88
|
FormsModule,
|
|
48
89
|
ReactiveFormsModule,
|
|
49
90
|
DragDropModule,
|
|
91
|
+
KwikUIButtonIconModule,
|
|
50
92
|
KwikUIButtonModule,
|
|
51
93
|
KwikUIInputModule,
|
|
52
|
-
|
|
94
|
+
KwikUIInputNumberModule,
|
|
95
|
+
KwikUISelectComboboxModule,
|
|
96
|
+
KwikUITableModule,
|
|
97
|
+
KwikUITextareaModule
|
|
53
98
|
],
|
|
54
99
|
providers: [],
|
|
55
100
|
exports: [KwikIDFormsBuilderComponent]
|
|
56
101
|
}]
|
|
57
102
|
}] });
|
|
58
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUNMLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QiwwQkFBMEIsRUFDMUIsaUJBQWlCLEVBQ2pCLG9CQUFvQixFQUNyQixNQUFNLFFBQVEsQ0FBQztBQUNoQixPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3RUFBd0UsQ0FBQztBQUNuSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUMvRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtRUFBbUUsQ0FBQztBQUN6RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUN2SCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQztBQUNwSSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSw2RUFBNkUsQ0FBQztBQUM1SCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1RUFBdUUsQ0FBQztBQUNqSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMzRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5REFBeUQsQ0FBQzs7QUFxQzlGLE1BQU0sT0FBTyx1QkFBdUI7O3dJQUF2Qix1QkFBdUI7eUlBQXZCLHVCQUF1QixpQkFqQ2hDLDJCQUEyQjtRQUMzQixtQkFBbUI7UUFDbkIsd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQixzQkFBc0I7UUFDdEIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6QixxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLHNCQUFzQjtRQUN0QiwyQkFBMkI7UUFDM0IsaUNBQWlDO1FBQ2pDLDZCQUE2QjtRQUM3Qix3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHNCQUFzQixhQUd0QixZQUFZO1FBQ1osV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjO1FBQ2Qsc0JBQXNCO1FBQ3RCLGtCQUFrQjtRQUNsQixpQkFBaUI7UUFDakIsdUJBQXVCO1FBQ3ZCLDBCQUEwQjtRQUMxQixpQkFBaUI7UUFDakIsb0JBQW9CLGFBR1osMkJBQTJCO3lJQUUxQix1QkFBdUIsYUFIdkIsRUFBRSxZQWJKO1lBQ1AsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLHNCQUFzQjtZQUN0QixrQkFBa0I7WUFDbEIsaUJBQWlCO1lBQ2pCLHVCQUF1QjtZQUN2QiwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLG9CQUFvQjtTQUNyQjs0RkFJVSx1QkFBdUI7a0JBbkNuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWiwyQkFBMkI7d0JBQzNCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixxQkFBcUI7d0JBQ3JCLHNCQUFzQjt3QkFDdEIsdUJBQXVCO3dCQUN2Qix5QkFBeUI7d0JBQ3pCLHFCQUFxQjt3QkFDckIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDJCQUEyQjt3QkFDM0IsaUNBQWlDO3dCQUNqQyw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3dCQUNyQixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLHNCQUFzQjt3QkFDdEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLG9CQUFvQjtxQkFDckI7b0JBQ0QsU0FBUyxFQUFFLEVBQUU7b0JBQ2IsT0FBTyxFQUFFLENBQUMsMkJBQTJCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIEt3aWtVSUJ1dHRvbkljb25Nb2R1bGUsXG4gIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgS3dpa1VJSW5wdXRNb2R1bGUsXG4gIEt3aWtVSUlucHV0TnVtYmVyTW9kdWxlLFxuICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgS3dpa1VJVGFibGVNb2R1bGUsXG4gIEt3aWtVSVRleHRhcmVhTW9kdWxlXG59IGZyb20gXCJrd2lrdWlcIjtcbmltcG9ydCB7IEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCB9IGZyb20gXCIuL2J1aWxkZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0VsZW1lbnRDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9iYXNpYy1lbGVtZW50LWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvY2hlY2tib3gtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljRGF0ZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL2RhdGUtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljTnVtYmVyQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY090cENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL290cC1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQmFzaWNQaG9uZUNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3Bob25lLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBCYXNpY1JhZGlvQ29uZmlnRWRpdG9yIH0gZnJvbSBcIi4vZWxlbWVudC1jb25maWctZWRpdG9yL2VkaXRvcnMvYmFzaWMvcmFkaW8tY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEJhc2ljVGV4dENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2Jhc2ljL3RleHQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50LWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IERvY3VtZW50QWFkaGFhck51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L2FhZGhhYXItbnVtYmVyLWNvbmZpZy5lZGl0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEb2N1bWVudFBhbk51bWJlckNvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL2RvY3VtZW50L3Bhbi1udW1iZXItY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyLWVsZW1lbnQtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVySFRNTENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lZGl0b3JzL290aGVyL2h0bWwtY29uZmlnLmVkaXRvci5jb21wb25lbnRcIjtcbmltcG9ydCB7IE90aGVyVGl0bGVDb25maWdFZGl0b3IgfSBmcm9tIFwiLi9lbGVtZW50LWNvbmZpZy1lZGl0b3IvZWRpdG9ycy9vdGhlci90aXRsZS1jb25maWcuZWRpdG9yLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudENvbmZpZ0VkaXRvciB9IGZyb20gXCIuL2VsZW1lbnQtY29uZmlnLWVkaXRvci9lbGVtZW50LWNvbmZpZy1lZGl0b3IuY29tcG9uZW50XCI7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCxcbiAgICBFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1RleHRDb25maWdFZGl0b3IsXG4gICAgQmFzaWNSYWRpb0NvbmZpZ0VkaXRvcixcbiAgICBCYXNpY051bWJlckNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY0NoZWNrYm94Q29uZmlnRWRpdG9yLFxuICAgIEJhc2ljRGF0ZUNvbmZpZ0VkaXRvcixcbiAgICBCYXNpY090cENvbmZpZ0VkaXRvcixcbiAgICBCYXNpY1Bob25lQ29uZmlnRWRpdG9yLFxuICAgIERvY3VtZW50RWxlbWVudENvbmZpZ0VkaXRvcixcbiAgICBEb2N1bWVudEFhZGhhYXJOdW1iZXJDb25maWdFZGl0b3IsXG4gICAgRG9jdW1lbnRQYW5OdW1iZXJDb25maWdFZGl0b3IsXG4gICAgT3RoZXJFbGVtZW50Q29uZmlnRWRpdG9yLFxuICAgIE90aGVySFRNTENvbmZpZ0VkaXRvcixcbiAgICBPdGhlclRpdGxlQ29uZmlnRWRpdG9yXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICBLd2lrVUlCdXR0b25JY29uTW9kdWxlLFxuICAgIEt3aWtVSUJ1dHRvbk1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dE51bWJlck1vZHVsZSxcbiAgICBLd2lrVUlTZWxlY3RDb21ib2JveE1vZHVsZSxcbiAgICBLd2lrVUlUYWJsZU1vZHVsZSxcbiAgICBLd2lrVUlUZXh0YXJlYU1vZHVsZVxuICBdLFxuICBwcm92aWRlcnM6IFtdLFxuICBleHBvcnRzOiBbS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtQnVpbGRlck1vZHVsZSB7fVxuIl19
|