kwikid-forms 0.6.51 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
2
  import { Component, Input } from "@angular/core";
3
- import { checkObjectKeyExists, getObjectFromLocalStorage, isNotEmptyValue, logMethod } from "kwikid-toolkit";
3
+ import { checkObjectKeyExists, isNotEmptyValue, logMethod } from "kwikid-toolkit";
4
+ import { resolveFormsStorageConfig, resolveFormsStorageObject, resolveFormsStorageString } from "../renderer/helpers/forms-storage.helper";
4
5
  import { convertFormListConfig } from "./builder.helper";
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "kwikui";
@@ -10,11 +11,15 @@ export class KwikIDFormsBuilderComponent {
10
11
  constructor(loaderService) {
11
12
  this.loaderService = loaderService;
12
13
  this.userConfig = {};
14
+ this.reduxData = {};
13
15
  this.formsList = [];
14
16
  this.activeFormConfig = undefined;
15
17
  }
16
18
  ngOnInit() {
17
- const formStepKey = localStorage.getItem("formKey");
19
+ var _a;
20
+ this.reduxData = Object.assign({}, ((_a = this.reduxData) !== null && _a !== void 0 ? _a : {}));
21
+ const storageConfig = resolveFormsStorageConfig(this.userConfig);
22
+ const formStepKey = resolveFormsStorageString("formKey", this.reduxData, storageConfig);
18
23
  if (isNotEmptyValue(formStepKey) &&
19
24
  checkObjectKeyExists(this.userConfig.userFormFields, formStepKey)) {
20
25
  this.formsList = convertFormListConfig(this.userConfig.userFormFields[formStepKey]);
@@ -40,15 +45,18 @@ export class KwikIDFormsBuilderComponent {
40
45
  this.formsList = e.formsList;
41
46
  }
42
47
  handleOnClickSetActiveForm(selectedFormKey) {
43
- var _a, _b, _c, _d;
48
+ var _a, _b, _c, _d, _e;
44
49
  return __awaiter(this, void 0, void 0, function* () {
45
50
  this.toggleLoader(true);
46
51
  const activeFormConfig = this.formsList.find((form) => {
47
52
  return form.key === selectedFormKey;
48
53
  });
49
54
  let formConfig;
50
- if (getObjectFromLocalStorage(activeFormConfig.key)) {
51
- formConfig = getObjectFromLocalStorage(activeFormConfig.key);
55
+ this.reduxData = Object.assign({}, ((_a = this.reduxData) !== null && _a !== void 0 ? _a : {}));
56
+ const storageConfig = resolveFormsStorageConfig(this.userConfig);
57
+ const cachedFormConfig = resolveFormsStorageObject(activeFormConfig.key, this.reduxData, storageConfig);
58
+ if (cachedFormConfig) {
59
+ formConfig = cachedFormConfig;
52
60
  }
53
61
  else if (checkObjectKeyExists(activeFormConfig, "props")) {
54
62
  if (checkObjectKeyExists(activeFormConfig.props, "url")) {
@@ -58,7 +66,7 @@ export class KwikIDFormsBuilderComponent {
58
66
  else if (checkObjectKeyExists(activeFormConfig.props, "path") &&
59
67
  checkObjectKeyExists(this.userConfig, "backend") &&
60
68
  checkObjectKeyExists(this.userConfig.backend, "CONFIG_BASE_URL")) {
61
- const url = `${(_b = (_a = this.userConfig) === null || _a === void 0 ? void 0 : _a.backend) === null || _b === void 0 ? void 0 : _b.CONFIG_BASE_URL}${activeFormConfig.props.path}`;
69
+ const url = `${(_c = (_b = this.userConfig) === null || _b === void 0 ? void 0 : _b.backend) === null || _c === void 0 ? void 0 : _c.CONFIG_BASE_URL}${activeFormConfig.props.path}`;
62
70
  const formConfigFromPath = yield this.fetchFormConfig(url);
63
71
  formConfig = Object.assign(Object.assign({}, activeFormConfig), formConfigFromPath);
64
72
  }
@@ -77,7 +85,7 @@ export class KwikIDFormsBuilderComponent {
77
85
  else if (checkObjectKeyExists(activeFormConfig.formContent, "path") &&
78
86
  checkObjectKeyExists(this.userConfig, "backend") &&
79
87
  checkObjectKeyExists(this.userConfig.backend, "CONFIG_BASE_URL")) {
80
- const url = `${(_d = (_c = this.userConfig) === null || _c === void 0 ? void 0 : _c.backend) === null || _d === void 0 ? void 0 : _d.CONFIG_BASE_URL}${activeFormConfig.props.path}`;
88
+ const url = `${(_e = (_d = this.userConfig) === null || _d === void 0 ? void 0 : _d.backend) === null || _e === void 0 ? void 0 : _e.CONFIG_BASE_URL}${activeFormConfig.props.path}`;
81
89
  const formConfigFromPath = yield this.fetchFormConfig(url);
82
90
  formConfig = Object.assign(Object.assign({}, activeFormConfig), formConfigFromPath);
83
91
  }
@@ -123,7 +131,7 @@ export class KwikIDFormsBuilderComponent {
123
131
  }
124
132
  }
125
133
  /** @nocollapse */ KwikIDFormsBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormsBuilderComponent, deps: [{ token: i1.KwikUILoaderService }], target: i0.ɵɵFactoryTarget.Component });
126
- /** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", inputs: { userConfig: "userConfig" }, ngImport: i0, template: "<div class=\"container\">\n <kwikid-builder-forms-list\n [activeFormConfig]=\"this.activeFormConfig\"\n [formsList]=\"this.formsList\"\n (getFormsList)=\"this.handleGetFormsList($event)\"\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\n ></kwikid-builder-forms-list>\n <kwikid-builder-form-editor\n [activeFormConfig]=\"activeFormConfig\"\n (onClickSaveActiveFormConfig)=\"\n this.handleOnClickSaveActiveFormConfig($event)\n \"\n ></kwikid-builder-form-editor>\n</div>\n\n<kwikui-loader></kwikui-loader>\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}input[type=text],input[type=number]{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box;appearance:auto!important}input[type=checkbox]{appearance:auto!important;width:1rem;height:1rem}select{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}textarea{overflow-wrap:anywhere;resize:none;unicode-bidi:embed;white-space:pre-wrap}button{display:inline-block;padding:8px 12px;background-color:#007bff;color:#fff;text-decoration:none;border-radius:4px;border:none;cursor:pointer}button:hover{background-color:#0069d9}button:active{background-color:#0056b3}button:focus{outline:none}button.secondary{padding:7px 11px;border:1px solid #007bff;background-color:#fff;color:#007bff}button.secondary:hover{background-color:#b7daff}button.secondary:active{background-color:#b7daff}button.secondary:focus{outline:none}.field-container{display:flex}.field-container label{color:gray}.field-container.checkbox{flex-direction:row;align-items:center;justify-content:center;padding:8px 12px;margin:auto}.field-container.options,.field-container.number,.field-container.text{flex-direction:column}.disclaimer{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;color:#121212;width:100%;height:100%}.disclaimer>*:not(:last-child){margin-bottom:1.5rem}.disclaimer .icon{width:3rem;height:3rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.disclaimer.no-form-selected h1{transform:scaleX(-1)}.disclaimer h1{font-size:5rem;font-weight:100}.disclaimer p{font-size:1rem}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:stretch;padding:1rem}.container>*:not(:last-child){margin-right:1rem}\n"], components: [{ type: i2.KwikIDBuilderFormsListComponent, selector: "kwikid-builder-forms-list", inputs: ["activeFormConfig", "formsList"], outputs: ["onClickSetActiveForm", "getFormsList"] }, { type: i3.KwikIDBuilderFormEditorComponent, selector: "kwikid-builder-form-editor", inputs: ["activeFormConfig"], outputs: ["onClickSaveActiveFormConfig"] }, { type: i1.KwikUILoaderComponent, selector: "kwikui-loader" }] });
134
+ /** @nocollapse */ KwikIDFormsBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikIDFormsBuilderComponent, selector: "kwikid-forms-builder", inputs: { userConfig: "userConfig", reduxData: "reduxData" }, ngImport: i0, template: "<div class=\"container\">\n <kwikid-builder-forms-list\n [activeFormConfig]=\"this.activeFormConfig\"\n [formsList]=\"this.formsList\"\n (getFormsList)=\"this.handleGetFormsList($event)\"\n (onClickSetActiveForm)=\"this.handleOnClickSetActiveForm($event)\"\n ></kwikid-builder-forms-list>\n <kwikid-builder-form-editor\n [activeFormConfig]=\"activeFormConfig\"\n (onClickSaveActiveFormConfig)=\"\n this.handleOnClickSaveActiveFormConfig($event)\n \"\n ></kwikid-builder-form-editor>\n</div>\n\n<kwikui-loader></kwikui-loader>\n", styles: ["::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{border-radius:10px}::-webkit-scrollbar-thumb{background:lightgray;border-radius:10px}::-webkit-scrollbar-thumb:hover{background:gray}input[type=text],input[type=number]{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box;appearance:auto!important}input[type=checkbox]{appearance:auto!important;width:1rem;height:1rem}select{width:100%;padding:8px 12px;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}textarea{overflow-wrap:anywhere;resize:none;unicode-bidi:embed;white-space:pre-wrap}button{display:inline-block;padding:8px 12px;background-color:#007bff;color:#fff;text-decoration:none;border-radius:4px;border:none;cursor:pointer}button:hover{background-color:#0069d9}button:active{background-color:#0056b3}button:focus{outline:none}button.secondary{padding:7px 11px;border:1px solid #007bff;background-color:#fff;color:#007bff}button.secondary:hover{background-color:#b7daff}button.secondary:active{background-color:#b7daff}button.secondary:focus{outline:none}.field-container{display:flex}.field-container label{color:gray}.field-container.checkbox{flex-direction:row;align-items:center;justify-content:center;padding:8px 12px;margin:auto}.field-container.options,.field-container.number,.field-container.text{flex-direction:column}.disclaimer{display:flex;flex-direction:column;align-content:center;justify-content:center;align-items:center;color:#121212;width:100%;height:100%}.disclaimer>*:not(:last-child){margin-bottom:1.5rem}.disclaimer .icon{width:3rem;height:3rem;display:flex;flex-direction:row;align-content:center;justify-content:center;align-items:center}.disclaimer.no-form-selected h1{transform:scaleX(-1)}.disclaimer h1{font-size:5rem;font-weight:100}.disclaimer p{font-size:1rem}\n", ":host{all:unset;position:relative;width:100%;height:100%}.container{width:100%;height:100%;display:flex;flex-direction:row;justify-content:space-between;align-items:stretch;padding:1rem}.container>*:not(:last-child){margin-right:1rem}\n"], components: [{ type: i2.KwikIDBuilderFormsListComponent, selector: "kwikid-builder-forms-list", inputs: ["activeFormConfig", "formsList"], outputs: ["onClickSetActiveForm", "getFormsList"] }, { type: i3.KwikIDBuilderFormEditorComponent, selector: "kwikid-builder-form-editor", inputs: ["activeFormConfig"], outputs: ["onClickSaveActiveFormConfig"] }, { type: i1.KwikUILoaderComponent, selector: "kwikui-loader" }] });
127
135
  __decorate([
128
136
  logMethod
129
137
  ], KwikIDFormsBuilderComponent.prototype, "fetchFormConfig", null);
@@ -148,5 +156,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
148
156
  }]
149
157
  }], ctorParameters: function () { return [{ type: i1.KwikUILoaderService }]; }, propDecorators: { userConfig: [{
150
158
  type: Input
159
+ }], reduxData: [{
160
+ type: Input
151
161
  }], fetchFormConfig: [], handleGetFormsList: [], handleOnClickSetActiveForm: [], handleOnClickSaveActiveFormConfig: [], toggleLoader: [] } });
152
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHlCQUF5QixFQUN6QixlQUFlLEVBQ2YsU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7O0FBT3pELE1BQU0sT0FBTywyQkFBMkI7SUFRdEMsWUFBbUIsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO1FBTnJELGVBQVUsR0FBUSxFQUFFLENBQUM7UUFFckIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLHFCQUFnQixHQUFRLFNBQVMsQ0FBQztJQUVzQixDQUFDO0lBRXpELFFBQVE7UUFDTixNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBELElBQ0UsZUFBZSxDQUFDLFdBQVcsQ0FBQztZQUM1QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxXQUFXLENBQUMsRUFDakU7WUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsQ0FDNUMsQ0FBQztTQUNIO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFD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UUFFekMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2hELElBQUksSUFBSSxDQUFDLEdBQUcsS0FBSyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3JDLE9BQU8sZ0JBQWdCLENBQUM7YUFDekI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELFlBQVksQ0FBQyxNQUFNO1FBQ2pCLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2dCQUNoQixVQUFVLEVBQUUsYUFBYTthQUMxQixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7OzRJQXZKVSwyQkFBMkI7Z0lBQTNCLDJCQUEyQixrR0NmeEMsK2lCQWdCQTtBRDZCRTtJQURDLFNBQVM7a0VBS1Q7QUFNRDtJQURDLFNBQVM7cUVBR1Q7QUFHRDtJQURDLFNBQVM7NkVBZ0ZUO0FBTUQ7SUFEQyxTQUFTO29GQVVUO0FBR0Q7SUFEQyxTQUFTOytEQVVUOzRGQXZKVSwyQkFBMkI7a0JBTHZDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLDBCQUEwQjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsZUFBZSxFQUFFLDBCQUEwQixDQUFDO2lCQUN6RDswR0FHQyxVQUFVO3NCQURULEtBQUs7Z0JBNkJBLGVBQWUsTUFVckIsa0JBQWtCLE1BS1osMEJBQTBCLE1BcUZoQyxpQ0FBaUMsTUFZakMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge1xuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgZ2V0T2JqZWN0RnJvbUxvY2FsU3RvcmFnZSxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2Rcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBLd2lrVUlMb2FkZXJTZXJ2aWNlIH0gZnJvbSBcImt3aWt1aVwiO1xuaW1wb3J0IHsgY29udmVydEZvcm1MaXN0Q29uZmlnIH0gZnJvbSBcIi4vYnVpbGRlci5oZWxwZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImt3aWtpZC1mb3Jtcy1idWlsZGVyXCIsXG4gIHRlbXBsYXRlVXJsOiBcIi4vYnVpbGRlci5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vc2hhcmVkLnNjc3NcIiwgXCIuL2J1aWxkZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybXNCdWlsZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KClcbiAgdXNlckNvbmZpZzogYW55ID0ge307XG5cbiAgZm9ybXNMaXN0ID0gW107XG5cbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2FkZXJTZXJ2aWNlOiBLd2lrVUlMb2FkZXJTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGZvcm1TdGVwS2V5ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJmb3JtS2V5XCIpO1xuXG4gICAgaWYgKFxuICAgICAgaXNOb3RFbXB0eVZhbHVlKGZvcm1TdGVwS2V5KSAmJlxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLnVzZXJGb3JtRmllbGRzLCBmb3JtU3RlcEtleSlcbiAgICApIHtcbiAgICAgIHRoaXMuZm9ybXNMaXN0ID0gY29udmVydEZvcm1MaXN0Q29uZmlnKFxuICAgICAgICB0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHNbZm9ybVN0ZXBLZXldXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMpKSB7XG4gICAgICB0aGlzLmZvcm1zTGlzdCA9IGNvbnZlcnRGb3JtTGlzdENvbmZpZyh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGB1c2VyRm9ybUZpZWxkcyBkb2Vzbid0IGhhdmUgYSBmb3JtIGRlZmluZWQgd2l0aCBrZXk6ICR7Zm9ybVN0ZXBLZXl9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGZldGNoRm9ybUNvbmZpZyh1cmw6IHN0cmluZykge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsLCB7IG1ldGhvZDogXCJHRVRcIiB9KTtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1zIExpc3QgTGlzdGVuZXJzXG4gICAqL1xuICBAbG9nTWV0aG9kXG4gIGhhbmRsZUdldEZvcm1zTGlzdChlOiBhbnkpIHtcbiAgICB0aGlzLmZvcm1zTGlzdCA9IGUuZm9ybXNMaXN0O1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBoYW5kbGVPbkNsaWNrU2V0QWN0aXZlRm9ybShzZWxlY3RlZEZvcm1LZXk6IHN0cmluZykge1xuICAgIHRoaXMudG9nZ2xlTG9hZGVyKHRydWUpO1xuXG4gICAgY29uc3QgYWN0aXZlRm9ybUNvbmZpZyA9IHRoaXMuZm9ybXNMaXN0LmZpbmQoKGZvcm0pID0+IHtcbiAgICAgIHJldHVybiBmb3JtLmtleSA9PT0gc2VsZWN0ZWRGb3JtS2V5O1xuICAgIH0pO1xuXG4gICAgbGV0IGZvcm1Db25maWc6IGFueTtcblxuICAgIGlmIChnZXRPYmplY3RGcm9tTG9jYWxTdG9yYWdlKGFjdGl2ZUZvcm1Db25maWcua2V5KSkge1xuICAgICAgZm9ybUNvbmZpZyA9IGdldE9iamVjdEZyb21Mb2NhbFN0b3JhZ2UoYWN0aXZlRm9ybUNvbmZpZy5rZXkpO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZywgXCJwcm9wc1wiKSkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcucHJvcHMsIFwidXJsXCIpKSB7XG4gICAgICAgIGNvbnN0IGZvcm1Db25maWdGcm9tVXJsID0gYXdhaXQgdGhpcy5mZXRjaEZvcm1Db25maWcoXG4gICAgICAgICAgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy51cmxcbiAgICAgICAgKTtcbiAgICAgICAgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAuLi5hY3RpdmVGb3JtQ29uZmlnLFxuICAgICAgICAgIC4uLmZvcm1Db25maWdGcm9tVXJsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLnByb3BzLCBcInBhdGhcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLCBcImJhY2tlbmRcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLmJhY2tlbmQsIFwiQ09ORklHX0JBU0VfVVJMXCIpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51c2VyQ29uZmlnPy5iYWNrZW5kPy5DT05GSUdfQkFTRV9VUkx9JHthY3RpdmVGb3JtQ29uZmlnLnByb3BzLnBhdGh9YDtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZ0Zyb21QYXRoID0gYXdhaXQgdGhpcy5mZXRjaEZvcm1Db25maWcodXJsKTtcbiAgICAgICAgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAuLi5hY3RpdmVGb3JtQ29uZmlnLFxuICAgICAgICAgIC4uLmZvcm1Db25maWdGcm9tUGF0aFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgICBmb3JtQ29uZmlnID0gYWN0aXZlRm9ybUNvbmZpZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJObyBEaXJlY3QgVVJMLCBObyBQYXRoIHdpdGggQmFzZSBVUkwsIE5vIGZpZWxkcyBrZXkgZm91bmQgaW4gQWN0aXZlIEZvcm0ncyBDb25maWchXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcsIFwiZm9ybUNvbnRlbnRcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLmZvcm1Db250ZW50LCBcInVybFwiKSkge1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnRnJvbVVybCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKFxuICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVVybFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZy5mb3JtQ29udGVudCwgXCJwYXRoXCIpICYmXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMudXNlckNvbmZpZywgXCJiYWNrZW5kXCIpICYmXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMudXNlckNvbmZpZy5iYWNrZW5kLCBcIkNPTkZJR19CQVNFX1VSTFwiKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXNlckNvbmZpZz8uYmFja2VuZD8uQ09ORklHX0JBU0VfVVJMfSR7YWN0aXZlRm9ybUNvbmZpZy5wcm9wcy5wYXRofWA7XG4gICAgICAgIGNvbnN0IGZvcm1Db25maWdGcm9tUGF0aCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKHVybCk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVBhdGhcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZywgXCJmaWVsZHNcIikpIHtcbiAgICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiTm8gRGlyZWN0IFVSTCwgTm8gUGF0aCB3aXRoIEJhc2UgVVJMLCBObyBmaWVsZHMga2V5IGZvdW5kIGluIEFjdGl2ZSBGb3JtJ3MgQ29uZmlnIVwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiTm8gRGlyZWN0IFVSTCwgTm8gUGF0aCB3aXRoIEJhc2UgVVJMLCBObyBmaWVsZHMga2V5IGZvdW5kIGluIEFjdGl2ZSBGb3JtJ3MgQ29uZmlnIVwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAuLi5mb3JtQ29uZmlnXG4gICAgfTtcblxuICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtIEVkaXRvciBMaXN0ZW5lcnNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnKGFjdGl2ZUZvcm1Db25maWc6IGFueSkge1xuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZm9ybXNMaXN0Lm1hcCgoZm9ybTogYW55KSA9PiB7XG4gICAgICBpZiAoZm9ybS5rZXkgPT09IGFjdGl2ZUZvcm1Db25maWcua2V5KSB7XG4gICAgICAgIHJldHVybiBhY3RpdmVGb3JtQ29uZmlnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfSk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHRvZ2dsZUxvYWRlcihsb2FkZXIpIHtcbiAgICBpZiAobG9hZGVyKSB7XG4gICAgICB0aGlzLmxvYWRlclNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGZ1bGxzY3JlZW46IHRydWUsXG4gICAgICAgIGxvYWRlclRleHQ6IFwiUGxlYXNlIHdhaXRcIlxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxrd2lraWQtYnVpbGRlci1mb3Jtcy1saXN0XG4gICAgW2FjdGl2ZUZvcm1Db25maWddPVwidGhpcy5hY3RpdmVGb3JtQ29uZmlnXCJcbiAgICBbZm9ybXNMaXN0XT1cInRoaXMuZm9ybXNMaXN0XCJcbiAgICAoZ2V0Rm9ybXNMaXN0KT1cInRoaXMuaGFuZGxlR2V0Rm9ybXNMaXN0KCRldmVudClcIlxuICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICA+PC9rd2lraWQtYnVpbGRlci1mb3Jtcy1saXN0PlxuICA8a3dpa2lkLWJ1aWxkZXItZm9ybS1lZGl0b3JcbiAgICBbYWN0aXZlRm9ybUNvbmZpZ109XCJhY3RpdmVGb3JtQ29uZmlnXCJcbiAgICAob25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnKT1cIlxuICAgICAgdGhpcy5oYW5kbGVPbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWcoJGV2ZW50KVxuICAgIFwiXG4gID48L2t3aWtpZC1idWlsZGVyLWZvcm0tZWRpdG9yPlxuPC9kaXY+XG5cbjxrd2lrdWktbG9hZGVyPjwva3dpa3VpLWxvYWRlcj5cbiJdfQ==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9idWlsZGVyL2J1aWxkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvYnVpbGRlci9idWlsZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUMxQixNQUFNLDBDQUEwQyxDQUFDO0FBRWxELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7OztBQU96RCxNQUFNLE9BQU8sMkJBQTJCO0lBV3RDLFlBQW1CLGFBQWtDO1FBQWxDLGtCQUFhLEdBQWIsYUFBYSxDQUFxQjtRQVRyRCxlQUFVLEdBQVEsRUFBRSxDQUFDO1FBR3JCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFFcEIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVmLHFCQUFnQixHQUFRLFNBQVMsQ0FBQztJQUVzQixDQUFDO0lBRXpELFFBQVE7O1FBQ04sSUFBSSxDQUFDLFNBQVMscUJBQVEsQ0FBQyxNQUFBLElBQUksQ0FBQyxTQUFTLG1DQUFJLEVBQUUsQ0FBQyxDQUFFLENBQUM7UUFDL0MsTUFBTSxhQUFhLEdBQUcseUJBQXlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLHlCQUF5QixDQUMzQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLFNBQVMsRUFDZCxhQUFhLENBQ2QsQ0FBQztRQUVG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SUFEQyxTQUFTO3FFQUdUO0FBR0Q7SUFEQyxTQUFTOzZFQXdGVDtBQU1EO0lBREMsU0FBUztvRkFVVDtBQUdEO0lBREMsU0FBUzsrREFVVDs0RkF4S1UsMkJBQTJCO2tCQUx2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFdBQVcsRUFBRSwwQkFBMEI7b0JBQ3ZDLFNBQVMsRUFBRSxDQUFDLGVBQWUsRUFBRSwwQkFBMEIsQ0FBQztpQkFDekQ7MEdBR0MsVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFtQ0EsZUFBZSxNQVVyQixrQkFBa0IsTUFLWiwwQkFBMEIsTUE2RmhDLGlDQUFpQyxNQVlqQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGNoZWNrT2JqZWN0S2V5RXhpc3RzLCBpc05vdEVtcHR5VmFsdWUsIGxvZ01ldGhvZCB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcmVzb2x2ZUZvcm1zU3RvcmFnZUNvbmZpZyxcbiAgcmVzb2x2ZUZvcm1zU3RvcmFnZU9iamVjdCxcbiAgcmVzb2x2ZUZvcm1zU3RvcmFnZVN0cmluZ1xufSBmcm9tIFwiLi4vcmVuZGVyZXIvaGVscGVycy9mb3Jtcy1zdG9yYWdlLmhlbHBlclwiO1xuaW1wb3J0IHsgS3dpa1VJTG9hZGVyU2VydmljZSB9IGZyb20gXCJrd2lrdWlcIjtcbmltcG9ydCB7IGNvbnZlcnRGb3JtTGlzdENvbmZpZyB9IGZyb20gXCIuL2J1aWxkZXIuaGVscGVyXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lraWQtZm9ybXMtYnVpbGRlclwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2J1aWxkZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3NoYXJlZC5zY3NzXCIsIFwiLi9idWlsZGVyLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREZvcm1zQnVpbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpXG4gIHVzZXJDb25maWc6IGFueSA9IHt9O1xuXG4gIEBJbnB1dCgpXG4gIHJlZHV4RGF0YTogYW55ID0ge307XG5cbiAgZm9ybXNMaXN0ID0gW107XG5cbiAgYWN0aXZlRm9ybUNvbmZpZzogYW55ID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsb2FkZXJTZXJ2aWNlOiBLd2lrVUlMb2FkZXJTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVkdXhEYXRhID0geyAuLi4odGhpcy5yZWR1eERhdGEgPz8ge30pIH07XG4gICAgY29uc3Qgc3RvcmFnZUNvbmZpZyA9IHJlc29sdmVGb3Jtc1N0b3JhZ2VDb25maWcodGhpcy51c2VyQ29uZmlnKTtcbiAgICBjb25zdCBmb3JtU3RlcEtleSA9IHJlc29sdmVGb3Jtc1N0b3JhZ2VTdHJpbmcoXG4gICAgICBcImZvcm1LZXlcIixcbiAgICAgIHRoaXMucmVkdXhEYXRhLFxuICAgICAgc3RvcmFnZUNvbmZpZ1xuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBpc05vdEVtcHR5VmFsdWUoZm9ybVN0ZXBLZXkpICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLnVzZXJDb25maWcudXNlckZvcm1GaWVsZHMsIGZvcm1TdGVwS2V5KVxuICAgICkge1xuICAgICAgdGhpcy5mb3Jtc0xpc3QgPSBjb252ZXJ0Rm9ybUxpc3RDb25maWcoXG4gICAgICAgIHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkc1tmb3JtU3RlcEtleV1cbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkcykpIHtcbiAgICAgIHRoaXMuZm9ybXNMaXN0ID0gY29udmVydEZvcm1MaXN0Q29uZmlnKHRoaXMudXNlckNvbmZpZy51c2VyRm9ybUZpZWxkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHVzZXJGb3JtRmllbGRzIGRvZXNuJ3QgaGF2ZSBhIGZvcm0gZGVmaW5lZCB3aXRoIGtleTogJHtmb3JtU3RlcEtleX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgZmV0Y2hGb3JtQ29uZmlnKHVybDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHsgbWV0aG9kOiBcIkdFVFwiIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogRm9ybXMgTGlzdCBMaXN0ZW5lcnNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlR2V0Rm9ybXNMaXN0KGU6IGFueSkge1xuICAgIHRoaXMuZm9ybXNMaXN0ID0gZS5mb3Jtc0xpc3Q7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKHNlbGVjdGVkRm9ybUtleTogc3RyaW5nKSB7XG4gICAgdGhpcy50b2dnbGVMb2FkZXIodHJ1ZSk7XG5cbiAgICBjb25zdCBhY3RpdmVGb3JtQ29uZmlnID0gdGhpcy5mb3Jtc0xpc3QuZmluZCgoZm9ybSkgPT4ge1xuICAgICAgcmV0dXJuIGZvcm0ua2V5ID09PSBzZWxlY3RlZEZvcm1LZXk7XG4gICAgfSk7XG5cbiAgICBsZXQgZm9ybUNvbmZpZzogYW55O1xuXG4gICAgdGhpcy5yZWR1eERhdGEgPSB7IC4uLih0aGlzLnJlZHV4RGF0YSA/PyB7fSkgfTtcbiAgICBjb25zdCBzdG9yYWdlQ29uZmlnID0gcmVzb2x2ZUZvcm1zU3RvcmFnZUNvbmZpZyh0aGlzLnVzZXJDb25maWcpO1xuICAgIGNvbnN0IGNhY2hlZEZvcm1Db25maWcgPSByZXNvbHZlRm9ybXNTdG9yYWdlT2JqZWN0KFxuICAgICAgYWN0aXZlRm9ybUNvbmZpZy5rZXksXG4gICAgICB0aGlzLnJlZHV4RGF0YSxcbiAgICAgIHN0b3JhZ2VDb25maWdcbiAgICApO1xuXG4gICAgaWYgKGNhY2hlZEZvcm1Db25maWcpIHtcbiAgICAgIGZvcm1Db25maWcgPSBjYWNoZWRGb3JtQ29uZmlnO1xuICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZywgXCJwcm9wc1wiKSkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcucHJvcHMsIFwidXJsXCIpKSB7XG4gICAgICAgIGNvbnN0IGZvcm1Db25maWdGcm9tVXJsID0gYXdhaXQgdGhpcy5mZXRjaEZvcm1Db25maWcoXG4gICAgICAgICAgYWN0aXZlRm9ybUNvbmZpZy5wcm9wcy51cmxcbiAgICAgICAgKTtcbiAgICAgICAgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAuLi5hY3RpdmVGb3JtQ29uZmlnLFxuICAgICAgICAgIC4uLmZvcm1Db25maWdGcm9tVXJsXG4gICAgICAgIH07XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLnByb3BzLCBcInBhdGhcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLCBcImJhY2tlbmRcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy51c2VyQ29uZmlnLmJhY2tlbmQsIFwiQ09ORklHX0JBU0VfVVJMXCIpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdXJsID0gYCR7dGhpcy51c2VyQ29uZmlnPy5iYWNrZW5kPy5DT05GSUdfQkFTRV9VUkx9JHthY3RpdmVGb3JtQ29uZmlnLnByb3BzLnBhdGh9YDtcbiAgICAgICAgY29uc3QgZm9ybUNvbmZpZ0Zyb21QYXRoID0gYXdhaXQgdGhpcy5mZXRjaEZvcm1Db25maWcodXJsKTtcbiAgICAgICAgZm9ybUNvbmZpZyA9IHtcbiAgICAgICAgICAuLi5hY3RpdmVGb3JtQ29uZmlnLFxuICAgICAgICAgIC4uLmZvcm1Db25maWdGcm9tUGF0aFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgICBmb3JtQ29uZmlnID0gYWN0aXZlRm9ybUNvbmZpZztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgXCJObyBEaXJlY3QgVVJMLCBObyBQYXRoIHdpdGggQmFzZSBVUkwsIE5vIGZpZWxkcyBrZXkgZm91bmQgaW4gQWN0aXZlIEZvcm0ncyBDb25maWchXCJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGFjdGl2ZUZvcm1Db25maWcsIFwiZm9ybUNvbnRlbnRcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLmZvcm1Db250ZW50LCBcInVybFwiKSkge1xuICAgICAgICBjb25zdCBmb3JtQ29uZmlnRnJvbVVybCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKFxuICAgICAgICAgIGFjdGl2ZUZvcm1Db25maWcuZm9ybUNvbnRlbnQudXJsXG4gICAgICAgICk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVVybFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZy5mb3JtQ29udGVudCwgXCJwYXRoXCIpICYmXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMudXNlckNvbmZpZywgXCJiYWNrZW5kXCIpICYmXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMudXNlckNvbmZpZy5iYWNrZW5kLCBcIkNPTkZJR19CQVNFX1VSTFwiKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHVybCA9IGAke3RoaXMudXNlckNvbmZpZz8uYmFja2VuZD8uQ09ORklHX0JBU0VfVVJMfSR7YWN0aXZlRm9ybUNvbmZpZy5wcm9wcy5wYXRofWA7XG4gICAgICAgIGNvbnN0IGZvcm1Db25maWdGcm9tUGF0aCA9IGF3YWl0IHRoaXMuZmV0Y2hGb3JtQ29uZmlnKHVybCk7XG4gICAgICAgIGZvcm1Db25maWcgPSB7XG4gICAgICAgICAgLi4uYWN0aXZlRm9ybUNvbmZpZyxcbiAgICAgICAgICAuLi5mb3JtQ29uZmlnRnJvbVBhdGhcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoYWN0aXZlRm9ybUNvbmZpZywgXCJmaWVsZHNcIikpIHtcbiAgICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiTm8gRGlyZWN0IFVSTCwgTm8gUGF0aCB3aXRoIEJhc2UgVVJMLCBObyBmaWVsZHMga2V5IGZvdW5kIGluIEFjdGl2ZSBGb3JtJ3MgQ29uZmlnIVwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhhY3RpdmVGb3JtQ29uZmlnLCBcImZpZWxkc1wiKSkge1xuICAgICAgZm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIFwiTm8gRGlyZWN0IFVSTCwgTm8gUGF0aCB3aXRoIEJhc2UgVVJMLCBObyBmaWVsZHMga2V5IGZvdW5kIGluIEFjdGl2ZSBGb3JtJ3MgQ29uZmlnIVwiXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IHtcbiAgICAgIC4uLmFjdGl2ZUZvcm1Db25maWcsXG4gICAgICAuLi5mb3JtQ29uZmlnXG4gICAgfTtcblxuICAgIHRoaXMudG9nZ2xlTG9hZGVyKGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3JtIEVkaXRvciBMaXN0ZW5lcnNcbiAgICovXG4gIEBsb2dNZXRob2RcbiAgaGFuZGxlT25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnKGFjdGl2ZUZvcm1Db25maWc6IGFueSkge1xuICAgIHRoaXMuYWN0aXZlRm9ybUNvbmZpZyA9IGFjdGl2ZUZvcm1Db25maWc7XG5cbiAgICB0aGlzLmZvcm1zTGlzdCA9IHRoaXMuZm9ybXNMaXN0Lm1hcCgoZm9ybTogYW55KSA9PiB7XG4gICAgICBpZiAoZm9ybS5rZXkgPT09IGFjdGl2ZUZvcm1Db25maWcua2V5KSB7XG4gICAgICAgIHJldHVybiBhY3RpdmVGb3JtQ29uZmlnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfSk7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHRvZ2dsZUxvYWRlcihsb2FkZXIpIHtcbiAgICBpZiAobG9hZGVyKSB7XG4gICAgICB0aGlzLmxvYWRlclNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIGZ1bGxzY3JlZW46IHRydWUsXG4gICAgICAgIGxvYWRlclRleHQ6IFwiUGxlYXNlIHdhaXRcIlxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9hZGVyU2VydmljZS5oaWRlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gIDxrd2lraWQtYnVpbGRlci1mb3Jtcy1saXN0XG4gICAgW2FjdGl2ZUZvcm1Db25maWddPVwidGhpcy5hY3RpdmVGb3JtQ29uZmlnXCJcbiAgICBbZm9ybXNMaXN0XT1cInRoaXMuZm9ybXNMaXN0XCJcbiAgICAoZ2V0Rm9ybXNMaXN0KT1cInRoaXMuaGFuZGxlR2V0Rm9ybXNMaXN0KCRldmVudClcIlxuICAgIChvbkNsaWNrU2V0QWN0aXZlRm9ybSk9XCJ0aGlzLmhhbmRsZU9uQ2xpY2tTZXRBY3RpdmVGb3JtKCRldmVudClcIlxuICA+PC9rd2lraWQtYnVpbGRlci1mb3Jtcy1saXN0PlxuICA8a3dpa2lkLWJ1aWxkZXItZm9ybS1lZGl0b3JcbiAgICBbYWN0aXZlRm9ybUNvbmZpZ109XCJhY3RpdmVGb3JtQ29uZmlnXCJcbiAgICAob25DbGlja1NhdmVBY3RpdmVGb3JtQ29uZmlnKT1cIlxuICAgICAgdGhpcy5oYW5kbGVPbkNsaWNrU2F2ZUFjdGl2ZUZvcm1Db25maWcoJGV2ZW50KVxuICAgIFwiXG4gID48L2t3aWtpZC1idWlsZGVyLWZvcm0tZWRpdG9yPlxuPC9kaXY+XG5cbjxrd2lrdWktbG9hZGVyPjwva3dpa3VpLWxvYWRlcj5cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { checkObjectKeyExists, isObject } from "kwikid-toolkit";
2
+ import { resolveFormsStorageConfig, resolveFormsStorageString } from "../helpers/forms-storage.helper";
2
3
  import { convertFormFieldTypeDateToKwikUIFormat } from "../form-view/helpers/form-view.fields.helper";
3
4
  export const getFormFields = (formConfig) => {
4
5
  let fields = [];
@@ -60,8 +61,9 @@ export const updateLanguage = (object, language) => {
60
61
  }
61
62
  return object;
62
63
  };
63
- export const getLanguage = () => {
64
- var _a, _b, _c, _d, _e, _f;
65
- return ((_f = (_e = (_d = (_c = (_b = (_a = localStorage.getItem("lng")) !== null && _a !== void 0 ? _a : localStorage.getItem("lang")) !== null && _b !== void 0 ? _b : localStorage.getItem("Lang")) !== null && _c !== void 0 ? _c : localStorage.getItem("language")) !== null && _d !== void 0 ? _d : localStorage.getItem("currentLang")) !== null && _e !== void 0 ? _e : localStorage.getItem("selectedLang")) !== null && _f !== void 0 ? _f : "en");
64
+ export const getLanguage = (reduxData = {}, userConfig) => {
65
+ var _a, _b, _c;
66
+ const config = resolveFormsStorageConfig(userConfig);
67
+ return ((_c = (_a = resolveFormsStorageString("language", reduxData, config)) !== null && _a !== void 0 ? _a : (_b = config.language) === null || _b === void 0 ? void 0 : _b.fallback) !== null && _c !== void 0 ? _c : "en");
66
68
  };
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUV0RyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUFlLEVBQVMsRUFBRTtJQUN0RCxJQUFJLE1BQU0sR0FBVSxFQUFFLENBQUM7SUFFdkIsSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLEVBQUU7UUFDakQsTUFBTSxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0tBQ3RDO1NBQU0sSUFBSSxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUU7UUFDckQsTUFBTSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7S0FDNUI7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUNyQyxLQUFVLEVBQ1YsR0FBVyxFQUNYLEtBQVUsRUFDTCxFQUFFO0lBQ1AsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRTtRQUNyQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0tBQ3BCO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEtBQVUsRUFBRSxHQUFXLEVBQUUsS0FBVSxFQUFPLEVBQUU7SUFDM0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUVuQixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDbkQsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDckQsT0FBTyx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsS0FBVSxFQUFFLEtBQWMsRUFBTyxFQUFFO0lBQ3ZFLE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtJQUM1QyxJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtRQUN0Qzs7O1dBR0c7UUFFSCxPQUFPLHNDQUFzQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxRDtJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBVSxFQUFPLEVBQUU7SUFDNUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDdEM7OztXQUdHO1FBRUgsT0FBTyxzQ0FBc0MsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7S0FDMUQ7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLE1BQVcsRUFBRSxRQUFnQixFQUFFLEVBQUU7SUFDOUQsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDcEIsSUFBSSxRQUFRLElBQUksb0JBQW9CLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQ3RELE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDM0I7YUFBTTtZQUNMLE1BQU0sR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQ3BCO0tBQ0Y7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxFQUFFOztJQUM5QixPQUFPLENBQ0wsTUFBQSxNQUFBLE1BQUEsTUFBQSxNQUFBLE1BQUEsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQzNCLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG1DQUM1QixZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQ0FDNUIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsbUNBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLG1DQUNuQyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQ0FDcEMsSUFBSSxDQUNMLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjaGVja09iamVjdEtleUV4aXN0cywgaXNPYmplY3QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IGNvbnZlcnRGb3JtRmllbGRUeXBlRGF0ZVRvS3dpa1VJRm9ybWF0IH0gZnJvbSBcIi4uL2Zvcm0tdmlldy9oZWxwZXJzL2Zvcm0tdmlldy5maWVsZHMuaGVscGVyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtRmllbGRzID0gKGZvcm1Db25maWc6IGFueSk6IGFueVtdID0+IHtcbiAgbGV0IGZpZWxkczogYW55W10gPSBbXTtcblxuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJtdWx0aUZvcm1cIikpIHtcbiAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLm11bHRpRm9ybS5maWVsZHM7XG4gIH0gZWxzZSBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZm9ybUNvbmZpZywgXCJmaWVsZHNcIikpIHtcbiAgICBmaWVsZHMgPSBmb3JtQ29uZmlnLmZpZWxkcztcbiAgfVxuXG4gIHJldHVybiBmaWVsZHM7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0TWlzc2luZ0ZpZWxkS2V5VmFsdWUgPSAoXG4gIGZpZWxkOiBhbnksXG4gIGtleTogc3RyaW5nLFxuICB2YWx1ZTogYW55XG4pOiBhbnkgPT4ge1xuICBpZiAoIWNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBrZXkpKSB7XG4gICAgZmllbGRba2V5XSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiBmaWVsZDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEtleVZhbHVlID0gKGZpZWxkOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogYW55ID0+IHtcbiAgZmllbGRba2V5XSA9IHZhbHVlO1xuXG4gIHJldHVybiBmaWVsZDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEtleUhpZGRlbiA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgcmV0dXJuIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcImhpZGRlblwiLCBmYWxzZSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmllbGRLZXlEaXNhYmxlZCA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgcmV0dXJuIHNldE1pc3NpbmdGaWVsZEtleVZhbHVlKGZpZWxkLCBcImRpc2FibGVkXCIsIHRydWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEZpZWxkQXNGb3JtRWxlbWVudCA9IChmaWVsZDogYW55LCB2YWx1ZTogYm9vbGVhbik6IGFueSA9PiB7XG4gIHJldHVybiBzZXRGaWVsZEtleVZhbHVlKGZpZWxkLCBcImlzRm9ybUVsZW1lbnRcIiwgdmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE1pbkRhdGUgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwgXCJtaW5cIikpIHtcbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIHRvIGhhbmRsZXIgb2xkIHZlcnNpb24gb2YgY29uZmlnLlxuICAgICAqICBQbGVhc2UgZG9uJ3QgYWRkIFwibWluXCIgYXQgZmllbGQgbGV2ZWwsIGFkZCBpdCBpbnNpZGVyIGZpZWxkLnByb3BlcnRpZXMgb25seS5cbiAgICAgKi9cblxuICAgIHJldHVybiBjb252ZXJ0Rm9ybUZpZWxkVHlwZURhdGVUb0t3aWtVSUZvcm1hdChmaWVsZC5taW4pO1xuICB9XG4gIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNYXhEYXRlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWF4XCIpKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0byBoYW5kbGVyIG9sZCB2ZXJzaW9uIG9mIGNvbmZpZy5cbiAgICAgKiAgUGxlYXNlIGRvbid0IGFkZCBcIm1heFwiIGF0IGZpZWxkIGxldmVsLCBhZGQgaXQgaW5zaWRlciBmaWVsZC5wcm9wZXJ0aWVzIG9ubHkuXG4gICAgICovXG5cbiAgICByZXR1cm4gY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQoZmllbGQubWF4KTtcbiAgfVxuICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTGFuZ3VhZ2UgPSAob2JqZWN0OiBhbnksIGxhbmd1YWdlOiBzdHJpbmcpID0+IHtcbiAgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAobGFuZ3VhZ2UgJiYgY2hlY2tPYmplY3RLZXlFeGlzdHMob2JqZWN0LCBsYW5ndWFnZSkpIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdFtsYW5ndWFnZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIG9iamVjdCA9IG9iamVjdC5lbjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqZWN0O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhbmd1YWdlID0gKCkgPT4ge1xuICByZXR1cm4gKFxuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibG5nXCIpID8/XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5nXCIpID8/XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJMYW5nXCIpID8/XG4gICAgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJsYW5ndWFnZVwiKSA/P1xuICAgIGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY3VycmVudExhbmdcIikgPz9cbiAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlbGVjdGVkTGFuZ1wiKSA/P1xuICAgIFwiZW5cIlxuICApO1xufTtcbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWNvbnZlcnRlci5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9jb25maWctY29udmVydGVyL2NvbmZpZy1jb252ZXJ0ZXIuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUMxQixNQUFNLGlDQUFpQyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXRHLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQWUsRUFBUyxFQUFFO0lBQ3RELElBQUksTUFBTSxHQUFVLEVBQUUsQ0FBQztJQUV2QixJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNqRCxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7S0FDdEM7U0FBTSxJQUFJLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRTtRQUNyRCxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztLQUM1QjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQ3JDLEtBQVUsRUFDVixHQUFXLEVBQ1gsS0FBVSxFQUNMLEVBQUU7SUFDUCxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO1FBQ3JDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7S0FDcEI7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBVSxFQUFFLEdBQVcsRUFBRSxLQUFVLEVBQU8sRUFBRTtJQUMzRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRW5CLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtJQUNuRCxPQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtJQUNyRCxPQUFPLHVCQUF1QixDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDMUQsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsS0FBYyxFQUFPLEVBQUU7SUFDdkUsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ3pELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQVUsRUFBTyxFQUFFO0lBQzVDLElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ3RDOzs7V0FHRztRQUVILE9BQU8sc0NBQXNDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzFEO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxLQUFVLEVBQU8sRUFBRTtJQUM1QyxJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtRQUN0Qzs7O1dBR0c7UUFFSCxPQUFPLHNDQUFzQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUMxRDtJQUNELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBVyxFQUFFLFFBQWdCLEVBQUUsRUFBRTtJQUM5RCxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNwQixJQUFJLFFBQVEsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDdEQsTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUMzQjthQUFNO1lBQ0wsTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7U0FDcEI7S0FDRjtJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUN6QixZQUFxQyxFQUFFLEVBQ3ZDLFVBQWdCLEVBQ1IsRUFBRTs7SUFDVixNQUFNLE1BQU0sR0FBRyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyRCxPQUFPLENBQ0wsTUFBQSxNQUFBLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLG1DQUN4RCxNQUFBLE1BQU0sQ0FBQyxRQUFRLDBDQUFFLFFBQVEsbUNBQ3pCLElBQUksQ0FDTCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2hlY2tPYmplY3RLZXlFeGlzdHMsIGlzT2JqZWN0IH0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQge1xuICByZXNvbHZlRm9ybXNTdG9yYWdlQ29uZmlnLFxuICByZXNvbHZlRm9ybXNTdG9yYWdlU3RyaW5nXG59IGZyb20gXCIuLi9oZWxwZXJzL2Zvcm1zLXN0b3JhZ2UuaGVscGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0Rm9ybUZpZWxkVHlwZURhdGVUb0t3aWtVSUZvcm1hdCB9IGZyb20gXCIuLi9mb3JtLXZpZXcvaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybUZpZWxkcyA9IChmb3JtQ29uZmlnOiBhbnkpOiBhbnlbXSA9PiB7XG4gIGxldCBmaWVsZHM6IGFueVtdID0gW107XG5cbiAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm1Db25maWcsIFwibXVsdGlGb3JtXCIpKSB7XG4gICAgZmllbGRzID0gZm9ybUNvbmZpZy5tdWx0aUZvcm0uZmllbGRzO1xuICB9IGVsc2UgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZvcm1Db25maWcsIFwiZmllbGRzXCIpKSB7XG4gICAgZmllbGRzID0gZm9ybUNvbmZpZy5maWVsZHM7XG4gIH1cblxuICByZXR1cm4gZmllbGRzO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldE1pc3NpbmdGaWVsZEtleVZhbHVlID0gKFxuICBmaWVsZDogYW55LFxuICBrZXk6IHN0cmluZyxcbiAgdmFsdWU6IGFueVxuKTogYW55ID0+IHtcbiAgaWYgKCFjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZCwga2V5KSkge1xuICAgIGZpZWxkW2tleV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmllbGRLZXlWYWx1ZSA9IChmaWVsZDogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gIGZpZWxkW2tleV0gPSB2YWx1ZTtcblxuICByZXR1cm4gZmllbGQ7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0RmllbGRLZXlIaWRkZW4gPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gIHJldHVybiBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJoaWRkZW5cIiwgZmFsc2UpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldEZpZWxkS2V5RGlzYWJsZWQgPSAoZmllbGQ6IGFueSk6IGFueSA9PiB7XG4gIHJldHVybiBzZXRNaXNzaW5nRmllbGRLZXlWYWx1ZShmaWVsZCwgXCJkaXNhYmxlZFwiLCB0cnVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRGaWVsZEFzRm9ybUVsZW1lbnQgPSAoZmllbGQ6IGFueSwgdmFsdWU6IGJvb2xlYW4pOiBhbnkgPT4ge1xuICByZXR1cm4gc2V0RmllbGRLZXlWYWx1ZShmaWVsZCwgXCJpc0Zvcm1FbGVtZW50XCIsIHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNaW5EYXRlID0gKGZpZWxkOiBhbnkpOiBhbnkgPT4ge1xuICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwibWluXCIpKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB0byBoYW5kbGVyIG9sZCB2ZXJzaW9uIG9mIGNvbmZpZy5cbiAgICAgKiAgUGxlYXNlIGRvbid0IGFkZCBcIm1pblwiIGF0IGZpZWxkIGxldmVsLCBhZGQgaXQgaW5zaWRlciBmaWVsZC5wcm9wZXJ0aWVzIG9ubHkuXG4gICAgICovXG5cbiAgICByZXR1cm4gY29udmVydEZvcm1GaWVsZFR5cGVEYXRlVG9Ld2lrVUlGb3JtYXQoZmllbGQubWluKTtcbiAgfVxuICByZXR1cm4ge307XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWF4RGF0ZSA9IChmaWVsZDogYW55KTogYW55ID0+IHtcbiAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcIm1heFwiKSkge1xuICAgIC8qKlxuICAgICAqIFRoaXMgaXMgdG8gaGFuZGxlciBvbGQgdmVyc2lvbiBvZiBjb25maWcuXG4gICAgICogIFBsZWFzZSBkb24ndCBhZGQgXCJtYXhcIiBhdCBmaWVsZCBsZXZlbCwgYWRkIGl0IGluc2lkZXIgZmllbGQucHJvcGVydGllcyBvbmx5LlxuICAgICAqL1xuXG4gICAgcmV0dXJuIGNvbnZlcnRGb3JtRmllbGRUeXBlRGF0ZVRvS3dpa1VJRm9ybWF0KGZpZWxkLm1heCk7XG4gIH1cbiAgcmV0dXJuIHt9O1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUxhbmd1YWdlID0gKG9iamVjdDogYW55LCBsYW5ndWFnZTogc3RyaW5nKSA9PiB7XG4gIGlmIChpc09iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGxhbmd1YWdlICYmIGNoZWNrT2JqZWN0S2V5RXhpc3RzKG9iamVjdCwgbGFuZ3VhZ2UpKSB7XG4gICAgICBvYmplY3QgPSBvYmplY3RbbGFuZ3VhZ2VdO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmplY3QgPSBvYmplY3QuZW47XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYW5ndWFnZSA9IChcbiAgcmVkdXhEYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICB1c2VyQ29uZmlnPzogYW55XG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBjb25maWcgPSByZXNvbHZlRm9ybXNTdG9yYWdlQ29uZmlnKHVzZXJDb25maWcpO1xuICByZXR1cm4gKFxuICAgIHJlc29sdmVGb3Jtc1N0b3JhZ2VTdHJpbmcoXCJsYW5ndWFnZVwiLCByZWR1eERhdGEsIGNvbmZpZykgPz9cbiAgICBjb25maWcubGFuZ3VhZ2U/LmZhbGxiYWNrID8/XG4gICAgXCJlblwiXG4gICk7XG59O1xuIl19