kwikid-forms 0.6.43 → 0.6.45

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.
Files changed (59) hide show
  1. package/bundles/kwikid-forms.umd.js +1020 -835
  2. package/bundles/kwikid-forms.umd.js.map +1 -1
  3. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.component.js +22 -32
  4. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.definitions.js +2 -1
  5. package/esm2015/lib/builder/builder-form-editor/builder-form-editor.helper.js +2 -4
  6. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.constants.js +5 -5
  7. package/esm2015/lib/builder/builder-form-editor/builder.form-editor.service.js +6 -5
  8. package/esm2015/lib/builder/builder-form-list/builder-forms-list.component.js +4 -6
  9. package/esm2015/lib/builder/builder.component.js +43 -53
  10. package/esm2015/lib/builder/builder.helper.js +11 -13
  11. package/esm2015/lib/renderer/config-converter/config-converter.constants.js +22 -7
  12. package/esm2015/lib/renderer/config-converter/config-converter.helper.js +9 -10
  13. package/esm2015/lib/renderer/config-converter/config-converter.js +61 -37
  14. package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +1 -1
  15. package/esm2015/lib/renderer/form-view/definitions/form-view.apis.definition.js +1 -1
  16. package/esm2015/lib/renderer/form-view/definitions/form-view.commons.definition.js +2 -1
  17. package/esm2015/lib/renderer/form-view/definitions/form-view.fields.definition.js +2 -1
  18. package/esm2015/lib/renderer/form-view/definitions/form-view.logs.definition.js +2 -1
  19. package/esm2015/lib/renderer/form-view/form-view.api.service.js +25 -24
  20. package/esm2015/lib/renderer/form-view/form-view.component.js +456 -292
  21. package/esm2015/lib/renderer/form-view/form-view.constants.js +17 -0
  22. package/esm2015/lib/renderer/form-view/form-view.module.js +15 -3
  23. package/esm2015/lib/renderer/form-view/form-view.service.js +6 -7
  24. package/esm2015/lib/renderer/form-view/helpers/form-view.apis.helper.js +44 -58
  25. package/esm2015/lib/renderer/form-view/helpers/form-view.camera.helper.js +16 -20
  26. package/esm2015/lib/renderer/form-view/helpers/form-view.defaults.helper.js +36 -97
  27. package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +95 -92
  28. package/esm2015/lib/renderer/form-view/helpers/form-view.form-validations.helper.js +23 -22
  29. package/esm2015/lib/renderer/form-view/helpers/form-view.tasks.helper.js +5 -5
  30. package/esm2015/lib/renderer/form-view/pipes/filter-image-url-or-base64-from-object.pipe.js +34 -0
  31. package/esm2015/lib/renderer/form-view/pipes/filter-video-url-or-base64-from-object.pipe.js +30 -0
  32. package/esm2015/lib/renderer/forms-list/forms-list.component.js +31 -39
  33. package/esm2015/lib/renderer/forms-list/forms-list.definitions.js +2 -1
  34. package/esm2015/lib/renderer/renderer.actions.definitions.js +1 -1
  35. package/esm2015/lib/renderer/renderer.component.js +87 -113
  36. package/esm2015/lib/renderer/renderer.definitions.js +2 -1
  37. package/esm2015/lib/renderer/renderer.helper.js +2 -4
  38. package/fesm2015/kwikid-forms.js +1063 -922
  39. package/fesm2015/kwikid-forms.js.map +1 -1
  40. package/lib/builder/builder-form-editor/builder-form-editor.component.d.ts +4 -5
  41. package/lib/builder/builder-form-editor/builder.form-editor.service.d.ts +0 -1
  42. package/lib/builder/builder-form-list/builder-forms-list.component.d.ts +3 -5
  43. package/lib/renderer/config-converter/config-converter.constants.d.ts +21 -6
  44. package/lib/renderer/config-converter/config-converter.helper.d.ts +1 -0
  45. package/lib/renderer/form-view/definitions/form-view.fields.definition.d.ts +45 -25
  46. package/lib/renderer/form-view/form-view.api.service.d.ts +0 -1
  47. package/lib/renderer/form-view/form-view.component.d.ts +13 -13
  48. package/lib/renderer/form-view/form-view.constants.d.ts +16 -0
  49. package/lib/renderer/form-view/form-view.module.d.ts +10 -8
  50. package/lib/renderer/form-view/form-view.service.d.ts +1 -2
  51. package/lib/renderer/form-view/helpers/form-view.camera.helper.d.ts +5 -7
  52. package/lib/renderer/form-view/helpers/form-view.defaults.helper.d.ts +4 -6
  53. package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +1 -1
  54. package/lib/renderer/form-view/helpers/form-view.form-validations.helper.d.ts +1 -2
  55. package/lib/renderer/form-view/helpers/form-view.tasks.helper.d.ts +1 -1
  56. package/lib/renderer/form-view/pipes/filter-image-url-or-base64-from-object.pipe.d.ts +7 -0
  57. package/lib/renderer/form-view/pipes/filter-video-url-or-base64-from-object.pipe.d.ts +7 -0
  58. package/lib/renderer/forms-list/forms-list.component.d.ts +1 -2
  59. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ export const FORM_VIEW_TIMERS = {
2
+ WAIT_FOR_CHANGES_BEFORE_MOVING_TO_NEXT_TASK: 10,
3
+ WAIT_FOR_FILE_METADATA_DEEPCOPY: 300,
4
+ WAIT_FOR_KWIKID_CAMERA_TO_LOAD: 500,
5
+ WAIT_FOR_KWIKID_CAMERA_MEDIA_TO_BE_SET: 500,
6
+ LOCATION_PERMISSION_ERROR_TOGGLE: 3000,
7
+ LOCATION_PERMISSION_RESET_BUTTON_STATUS: 500,
8
+ INVALID_FIELDS_SAVE_FORM_ERROR_TOGGLE: 3000,
9
+ TIMER_300: 300,
10
+ TIMER_500: 500,
11
+ TIMER_1000: 1000,
12
+ TIMER_3000: 3000,
13
+ WAIT_FOR_API_MOCK_DATA: 1000,
14
+ API_MOCK_SUCCESS_STATUS_CODE: 200,
15
+ API_MOCK_ERROR_STATUS_CODE: 200
16
+ };
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLDJDQUEyQyxFQUFFLEVBQUU7SUFDL0MsK0JBQStCLEVBQUUsR0FBRztJQUNwQyw4QkFBOEIsRUFBRSxHQUFHO0lBQ25DLHNDQUFzQyxFQUFFLEdBQUc7SUFDM0MsZ0NBQWdDLEVBQUUsSUFBSTtJQUN0Qyx1Q0FBdUMsRUFBRSxHQUFHO0lBQzVDLHFDQUFxQyxFQUFFLElBQUk7SUFDM0MsU0FBUyxFQUFFLEdBQUc7SUFDZCxTQUFTLEVBQUUsR0FBRztJQUNkLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLHNCQUFzQixFQUFFLElBQUk7SUFDNUIsNEJBQTRCLEVBQUUsR0FBRztJQUNqQywwQkFBMEIsRUFBRSxHQUFHO0NBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRk9STV9WSUVXX1RJTUVSUyA9IHtcbiAgV0FJVF9GT1JfQ0hBTkdFU19CRUZPUkVfTU9WSU5HX1RPX05FWFRfVEFTSzogMTAsXG4gIFdBSVRfRk9SX0ZJTEVfTUVUQURBVEFfREVFUENPUFk6IDMwMCxcbiAgV0FJVF9GT1JfS1dJS0lEX0NBTUVSQV9UT19MT0FEOiA1MDAsXG4gIFdBSVRfRk9SX0tXSUtJRF9DQU1FUkFfTUVESUFfVE9fQkVfU0VUOiA1MDAsXG4gIExPQ0FUSU9OX1BFUk1JU1NJT05fRVJST1JfVE9HR0xFOiAzMDAwLFxuICBMT0NBVElPTl9QRVJNSVNTSU9OX1JFU0VUX0JVVFRPTl9TVEFUVVM6IDUwMCxcbiAgSU5WQUxJRF9GSUVMRFNfU0FWRV9GT1JNX0VSUk9SX1RPR0dMRTogMzAwMCxcbiAgVElNRVJfMzAwOiAzMDAsXG4gIFRJTUVSXzUwMDogNTAwLFxuICBUSU1FUl8xMDAwOiAxMDAwLFxuICBUSU1FUl8zMDAwOiAzMDAwLFxuICBXQUlUX0ZPUl9BUElfTU9DS19EQVRBOiAxMDAwLFxuICBBUElfTU9DS19TVUNDRVNTX1NUQVRVU19DT0RFOiAyMDAsXG4gIEFQSV9NT0NLX0VSUk9SX1NUQVRVU19DT0RFOiAyMDBcbn07XG4iXX0=
@@ -9,11 +9,17 @@ import { KwikUIInputEmailModule, KwikUIModule, KwikUIPipeModule } from "kwikui";
9
9
  import { TimerPipe } from "../../common/pipes/timer-formatter.pipe";
10
10
  import { KwikIDFormViewComponent } from "./form-view.component";
11
11
  import { StyleSanitizerPipe } from "./helpers/styles-sanitizer.pipe";
12
+ import { FilterImageUrlOrBase64FromObjectPipe } from "./pipes/filter-image-url-or-base64-from-object.pipe";
13
+ import { FilterVideoUrlOrBase64FromObjectPipe } from "./pipes/filter-video-url-or-base64-from-object.pipe";
12
14
  import * as i0 from "@angular/core";
13
15
  export class KwikIDFormViewModule {
14
16
  }
15
17
  /** @nocollapse */ KwikIDFormViewModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
- /** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent, StyleSanitizerPipe, TimerPipe], imports: [CommonModule,
18
+ /** @nocollapse */ KwikIDFormViewModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, declarations: [KwikIDFormViewComponent,
19
+ StyleSanitizerPipe,
20
+ TimerPipe,
21
+ FilterImageUrlOrBase64FromObjectPipe,
22
+ FilterVideoUrlOrBase64FromObjectPipe], imports: [CommonModule,
17
23
  FormsModule,
18
24
  ReactiveFormsModule,
19
25
  TuiLabelModule,
@@ -48,7 +54,13 @@ export class KwikIDFormViewModule {
48
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDFormViewModule, decorators: [{
49
55
  type: NgModule,
50
56
  args: [{
51
- declarations: [KwikIDFormViewComponent, StyleSanitizerPipe, TimerPipe],
57
+ declarations: [
58
+ KwikIDFormViewComponent,
59
+ StyleSanitizerPipe,
60
+ TimerPipe,
61
+ FilterImageUrlOrBase64FromObjectPipe,
62
+ FilterVideoUrlOrBase64FromObjectPipe
63
+ ],
52
64
  imports: [
53
65
  CommonModule,
54
66
  FormsModule,
@@ -69,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
69
81
  exports: [KwikIDFormViewComponent]
70
82
  }]
71
83
  }] });
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsRUFDZCxZQUFZLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUF1QnJFLE1BQU0sT0FBTyxvQkFBb0I7O3FJQUFwQixvQkFBb0I7c0lBQXBCLG9CQUFvQixpQkFwQmhCLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLFNBQVMsYUFFbkUsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGFBQWE7UUFDYixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixzQkFBc0IsYUFFZCx1QkFBdUI7c0lBRXRCLG9CQUFvQixZQW5CdEI7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjtTQUN2Qjs0RkFHVSxvQkFBb0I7a0JBckJoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLFNBQVMsQ0FBQztvQkFDdEUsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBUdWlQcmV2aWV3QWN0aW9uTW9kdWxlLFxuICBUdWlQcmV2aWV3TW9kdWxlXG59IGZyb20gXCJAdGFpZ2EtdWkvYWRkb24tcHJldmlld1wiO1xuaW1wb3J0IHtcbiAgVHVpQnV0dG9uTW9kdWxlLFxuICBUdWlEaWFsb2dNb2R1bGUsXG4gIFR1aUxhYmVsTW9kdWxlLFxuICBUdWlTdmdNb2R1bGVcbn0gZnJvbSBcIkB0YWlnYS11aS9jb3JlXCI7XG5pbXBvcnQgeyBUdWlQdXNoTW9kdWxlIH0gZnJvbSBcIkB0YWlnYS11aS9raXRcIjtcbmltcG9ydCB7IEt3aWtJRENhbWVyYU1vZHVsZSwgS3dpa1VJSW5wdXRDYW1lcmFNb2R1bGUgfSBmcm9tIFwia3dpa2lkLWNhbWVyYVwiO1xuaW1wb3J0IHsgS3dpa1VJSW5wdXRFbWFpbE1vZHVsZSwgS3dpa1VJTW9kdWxlLCBLd2lrVUlQaXBlTW9kdWxlIH0gZnJvbSBcImt3aWt1aVwiO1xuaW1wb3J0IHsgVGltZXJQaXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9waXBlcy90aW1lci1mb3JtYXR0ZXIucGlwZVwiO1xuaW1wb3J0IHsgS3dpa0lERm9ybVZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdHlsZVNhbml0aXplclBpcGUgfSBmcm9tIFwiLi9oZWxwZXJzL3N0eWxlcy1zYW5pdGl6ZXIucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtLd2lrSURGb3JtVmlld0NvbXBvbmVudCwgU3R5bGVTYW5pdGl6ZXJQaXBlLCBUaW1lclBpcGVdLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgVHVpTGFiZWxNb2R1bGUsXG4gICAgVHVpUHVzaE1vZHVsZSxcbiAgICBUdWlTdmdNb2R1bGUsXG4gICAgVHVpUHJldmlld01vZHVsZSxcbiAgICBUdWlCdXR0b25Nb2R1bGUsXG4gICAgVHVpUHJldmlld0FjdGlvbk1vZHVsZSxcbiAgICBUdWlEaWFsb2dNb2R1bGUsXG4gICAgS3dpa1VJUGlwZU1vZHVsZSxcbiAgICBLd2lrVUlNb2R1bGUsXG4gICAgS3dpa0lEQ2FtZXJhTW9kdWxlLFxuICAgIEt3aWtVSUlucHV0Q2FtZXJhTW9kdWxlLFxuICAgIEt3aWtVSUlucHV0RW1haWxNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0t3aWtJREZvcm1WaWV3Q29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtVmlld01vZHVsZSB7fVxuIl19
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9mb3JtLXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLGdCQUFnQixFQUNqQixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsZUFBZSxFQUNmLGNBQWMsRUFDZCxZQUFZLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMzRyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxxREFBcUQsQ0FBQzs7QUE2QjNHLE1BQU0sT0FBTyxvQkFBb0I7O3FJQUFwQixvQkFBb0I7c0lBQXBCLG9CQUFvQixpQkF6QjdCLHVCQUF1QjtRQUN2QixrQkFBa0I7UUFDbEIsU0FBUztRQUNULG9DQUFvQztRQUNwQyxvQ0FBb0MsYUFHcEMsWUFBWTtRQUNaLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLGFBQWE7UUFDYixZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLGVBQWU7UUFDZixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGdCQUFnQjtRQUNoQixZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLHVCQUF1QjtRQUN2QixzQkFBc0IsYUFFZCx1QkFBdUI7c0lBRXRCLG9CQUFvQixZQW5CdEI7WUFDUCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsYUFBYTtZQUNiLFlBQVk7WUFDWixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLHNCQUFzQjtZQUN0QixlQUFlO1lBQ2YsZ0JBQWdCO1lBQ2hCLFlBQVk7WUFDWixrQkFBa0I7WUFDbEIsdUJBQXVCO1lBQ3ZCLHNCQUFzQjtTQUN2Qjs0RkFHVSxvQkFBb0I7a0JBM0JoQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWix1QkFBdUI7d0JBQ3ZCLGtCQUFrQjt3QkFDbEIsU0FBUzt3QkFDVCxvQ0FBb0M7d0JBQ3BDLG9DQUFvQztxQkFDckM7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsZ0JBQWdCO3dCQUNoQixZQUFZO3dCQUNaLGtCQUFrQjt3QkFDbEIsdUJBQXVCO3dCQUN2QixzQkFBc0I7cUJBQ3ZCO29CQUNELE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO2lCQUNuQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQge1xuICBUdWlQcmV2aWV3QWN0aW9uTW9kdWxlLFxuICBUdWlQcmV2aWV3TW9kdWxlXG59IGZyb20gXCJAdGFpZ2EtdWkvYWRkb24tcHJldmlld1wiO1xuaW1wb3J0IHtcbiAgVHVpQnV0dG9uTW9kdWxlLFxuICBUdWlEaWFsb2dNb2R1bGUsXG4gIFR1aUxhYmVsTW9kdWxlLFxuICBUdWlTdmdNb2R1bGVcbn0gZnJvbSBcIkB0YWlnYS11aS9jb3JlXCI7XG5pbXBvcnQgeyBUdWlQdXNoTW9kdWxlIH0gZnJvbSBcIkB0YWlnYS11aS9raXRcIjtcbmltcG9ydCB7IEt3aWtJRENhbWVyYU1vZHVsZSwgS3dpa1VJSW5wdXRDYW1lcmFNb2R1bGUgfSBmcm9tIFwia3dpa2lkLWNhbWVyYVwiO1xuaW1wb3J0IHsgS3dpa1VJSW5wdXRFbWFpbE1vZHVsZSwgS3dpa1VJTW9kdWxlLCBLd2lrVUlQaXBlTW9kdWxlIH0gZnJvbSBcImt3aWt1aVwiO1xuaW1wb3J0IHsgVGltZXJQaXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9waXBlcy90aW1lci1mb3JtYXR0ZXIucGlwZVwiO1xuaW1wb3J0IHsgS3dpa0lERm9ybVZpZXdDb21wb25lbnQgfSBmcm9tIFwiLi9mb3JtLXZpZXcuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBTdHlsZVNhbml0aXplclBpcGUgfSBmcm9tIFwiLi9oZWxwZXJzL3N0eWxlcy1zYW5pdGl6ZXIucGlwZVwiO1xuaW1wb3J0IHsgRmlsdGVySW1hZ2VVcmxPckJhc2U2NEZyb21PYmplY3RQaXBlIH0gZnJvbSBcIi4vcGlwZXMvZmlsdGVyLWltYWdlLXVybC1vci1iYXNlNjQtZnJvbS1vYmplY3QucGlwZVwiO1xuaW1wb3J0IHsgRmlsdGVyVmlkZW9VcmxPckJhc2U2NEZyb21PYmplY3RQaXBlIH0gZnJvbSBcIi4vcGlwZXMvZmlsdGVyLXZpZGVvLXVybC1vci1iYXNlNjQtZnJvbS1vYmplY3QucGlwZVwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBLd2lrSURGb3JtVmlld0NvbXBvbmVudCxcbiAgICBTdHlsZVNhbml0aXplclBpcGUsXG4gICAgVGltZXJQaXBlLFxuICAgIEZpbHRlckltYWdlVXJsT3JCYXNlNjRGcm9tT2JqZWN0UGlwZSxcbiAgICBGaWx0ZXJWaWRlb1VybE9yQmFzZTY0RnJvbU9iamVjdFBpcGVcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFR1aUxhYmVsTW9kdWxlLFxuICAgIFR1aVB1c2hNb2R1bGUsXG4gICAgVHVpU3ZnTW9kdWxlLFxuICAgIFR1aVByZXZpZXdNb2R1bGUsXG4gICAgVHVpQnV0dG9uTW9kdWxlLFxuICAgIFR1aVByZXZpZXdBY3Rpb25Nb2R1bGUsXG4gICAgVHVpRGlhbG9nTW9kdWxlLFxuICAgIEt3aWtVSVBpcGVNb2R1bGUsXG4gICAgS3dpa1VJTW9kdWxlLFxuICAgIEt3aWtJRENhbWVyYU1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dENhbWVyYU1vZHVsZSxcbiAgICBLd2lrVUlJbnB1dEVtYWlsTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtLd2lrSURGb3JtVmlld0NvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybVZpZXdNb2R1bGUge31cbiJdfQ==
@@ -5,14 +5,13 @@ import { Defaults } from "./helpers/form-view.defaults.helper";
5
5
  import { convertFormFieldValueToKwikUIFormat } from "./helpers/form-view.fields.helper";
6
6
  import { FormValidation } from "./helpers/form-view.form-validations.helper";
7
7
  export class KwikIDFormViewService {
8
- constructor() { }
9
8
  // 'init' stage of the form
10
- createFormGroup(fields, formData, previousFormData, allFormsData, extraData, takeAction) {
9
+ createFormGroup(fields, object, takeAction) {
11
10
  return __awaiter(this, void 0, void 0, function* () {
12
- let formGroup = new FormGroup({});
13
- for (let field of fields) {
11
+ const formGroup = new FormGroup({});
12
+ for (const field of fields) {
14
13
  if (field.isFormElement) {
15
- const defaults = new Defaults(field, fields, allFormsData, formData, previousFormData, extraData, takeAction);
14
+ const defaults = new Defaults(field, Object.assign(Object.assign({}, object), { FORM_FIELDS: fields }), takeAction);
16
15
  let value = "";
17
16
  if (checkObjectKeyExists(field, "default")) {
18
17
  if (checkObjectKeyExists(field.default, "value")) {
@@ -33,7 +32,7 @@ export class KwikIDFormViewService {
33
32
  }
34
33
  value = convertFormFieldValueToKwikUIFormat(field, value);
35
34
  const validators = new FormValidation().getFormFieldValidators(field);
36
- formGroup.addControl(field.key, new FormControl({ value: value, disabled: field.disabled }, { validators: validators }));
35
+ formGroup.addControl(field.key, new FormControl({ value, disabled: field.disabled }, { validators }));
37
36
  }
38
37
  }
39
38
  return formGroup;
@@ -43,4 +42,4 @@ export class KwikIDFormViewService {
43
42
  __decorate([
44
43
  logMethod
45
44
  ], KwikIDFormViewService.prototype, "createFormGroup", null);
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvZm9ybS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUNMLG9CQUFvQixFQUVwQixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDeEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRzdFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsZ0JBQWUsQ0FBQztJQUVoQiwyQkFBMkI7SUFFckIsZUFBZSxDQUNuQixNQUFXLEVBQ1gsUUFBYSxFQUNiLGdCQUFxQixFQUNyQixZQUFpQixFQUNqQixTQUFjLEVBQ2QsVUFBb0I7O1lBRXBCLElBQUksU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBRWxDLEtBQUssSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7b0JBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUMzQixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFNBQVMsRUFDVCxVQUFVLENBQ1gsQ0FBQztvQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7d0JBQzFDLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRTs0QkFDaEQsS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLGlCQUFpQixFQUFFLENBQUM7eUJBQzVDO3FCQUNGO29CQUVELElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO3dCQUMxQyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUU7NEJBQzlDLE1BQU0sUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7eUJBQ3ZDO3FCQUNGO29CQUVELElBQUksb0JBQW9CLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO3dCQUMxQyxJQUFJLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQUU7NEJBQ2xELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQ0FDdEQsTUFBTSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsQ0FBQzs2QkFDdEM7eUJBQ0Y7cUJBQ0Y7b0JBRUQsS0FBSyxHQUFHLG1DQUFtQyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFFMUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFdEUsU0FBUyxDQUFDLFVBQVUsQ0FDbEIsS0FBSyxDQUFDLEdBQUcsRUFDVCxJQUFJLFdBQVcsQ0FDYixFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFDMUMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQzNCLENBQ0YsQ0FBQztpQkFDSDthQUNGO1lBRUQsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztLQUFBO0NBQ0Y7QUExREM7SUFEQyxTQUFTOzREQTBEVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7XG4gIGNoZWNrT2JqZWN0S2V5RXhpc3RzLFxuICBnZXRPYmplY3REZWVwQ29weSxcbiAgbG9nTWV0aG9kXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRGVmYXVsdHMgfSBmcm9tIFwiLi9oZWxwZXJzL2Zvcm0tdmlldy5kZWZhdWx0cy5oZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRGb3JtRmllbGRWYWx1ZVRvS3dpa1VJRm9ybWF0IH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlclwiO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb24gfSBmcm9tIFwiLi9oZWxwZXJzL2Zvcm0tdmlldy5mb3JtLXZhbGlkYXRpb25zLmhlbHBlclwiO1xuaW1wb3J0IHsgRUZpZWxkVHlwZSB9IGZyb20gXCIuL2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybVZpZXdTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8vICdpbml0JyBzdGFnZSBvZiB0aGUgZm9ybVxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIGNyZWF0ZUZvcm1Hcm91cChcbiAgICBmaWVsZHM6IGFueSxcbiAgICBmb3JtRGF0YTogYW55LFxuICAgIHByZXZpb3VzRm9ybURhdGE6IGFueSxcbiAgICBhbGxGb3Jtc0RhdGE6IGFueSxcbiAgICBleHRyYURhdGE6IGFueSxcbiAgICB0YWtlQWN0aW9uOiBGdW5jdGlvblxuICApIHtcbiAgICBsZXQgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHMpIHtcbiAgICAgIGlmIChmaWVsZC5pc0Zvcm1FbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGRlZmF1bHRzID0gbmV3IERlZmF1bHRzKFxuICAgICAgICAgIGZpZWxkLFxuICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICBhbGxGb3Jtc0RhdGEsXG4gICAgICAgICAgZm9ybURhdGEsXG4gICAgICAgICAgcHJldmlvdXNGb3JtRGF0YSxcbiAgICAgICAgICBleHRyYURhdGEsXG4gICAgICAgICAgdGFrZUFjdGlvblxuICAgICAgICApO1xuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZGVmYXVsdFwiKSkge1xuICAgICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5kZWZhdWx0LCBcInZhbHVlXCIpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IGRlZmF1bHRzLmdldEZvcm1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImRlZmF1bHRcIikpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQuZGVmYXVsdCwgXCJhcGlcIikpIHtcbiAgICAgICAgICAgIGF3YWl0IGRlZmF1bHRzLmdldEZvcm1GaWVsZEFwaVZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImRlZmF1bHRcIikpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQuZGVmYXVsdCwgXCJvcHRpb25zXCIpKSB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZGVmYXVsdC5vcHRpb25zLnRyaWdnZXJzLmluY2x1ZGVzKFwiT05fSU5JVFwiKSkge1xuICAgICAgICAgICAgICBhd2FpdCBkZWZhdWx0cy5nZXRGb3JtRmllbGRPcHRpb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBjb252ZXJ0Rm9ybUZpZWxkVmFsdWVUb0t3aWtVSUZvcm1hdChmaWVsZCwgdmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXcgRm9ybVZhbGlkYXRpb24oKS5nZXRGb3JtRmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcblxuICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICBmaWVsZC5rZXksXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKFxuICAgICAgICAgICAgeyB2YWx1ZTogdmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB9LFxuICAgICAgICAgICAgeyB2YWxpZGF0b3JzOiB2YWxpZGF0b3JzIH1cbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1Hcm91cDtcbiAgfVxufVxuIl19
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtZm9ybXMvc3JjL2xpYi9yZW5kZXJlci9mb3JtLXZpZXcvZm9ybS12aWV3LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFFN0UsTUFBTSxPQUFPLHFCQUFxQjtJQUNoQywyQkFBMkI7SUFFckIsZUFBZSxDQUFDLE1BQVcsRUFBRSxNQUFXLEVBQUUsVUFBZTs7WUFDN0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFcEMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUU7Z0JBQzFCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtvQkFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQzNCLEtBQUssa0NBRUEsTUFBTSxLQUNULFdBQVcsRUFBRSxNQUFNLEtBRXJCLFVBQVUsQ0FDWCxDQUFDO29CQUNGLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDZixJQUFJLG9CQUFvQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsRUFBRTt3QkFDMUMsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFOzRCQUNoRCxLQUFLLEdBQUcsTUFBTSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQzt5QkFDNUM7cUJBQ0Y7b0JBRUQsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7d0JBQzFDLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTs0QkFDOUMsTUFBTSxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQzt5QkFDdkM7cUJBQ0Y7b0JBRUQsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLEVBQUU7d0JBQzFDLElBQUksb0JBQW9CLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRTs0QkFDbEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dDQUN0RCxNQUFNLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDOzZCQUN0Qzt5QkFDRjtxQkFDRjtvQkFFRCxLQUFLLEdBQUcsbUNBQW1DLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO29CQUUxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUV0RSxTQUFTLENBQUMsVUFBVSxDQUNsQixLQUFLLENBQUMsR0FBRyxFQUNULElBQUksV0FBVyxDQUFDLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUNyRSxDQUFDO2lCQUNIO2FBQ0Y7WUFFRCxPQUFPLFNBQVMsQ0FBQztRQUNuQixDQUFDO0tBQUE7Q0FDRjtBQS9DQztJQURDLFNBQVM7NERBK0NUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgY2hlY2tPYmplY3RLZXlFeGlzdHMsIGxvZ01ldGhvZCB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgRGVmYXVsdHMgfSBmcm9tIFwiLi9oZWxwZXJzL2Zvcm0tdmlldy5kZWZhdWx0cy5oZWxwZXJcIjtcbmltcG9ydCB7IGNvbnZlcnRGb3JtRmllbGRWYWx1ZVRvS3dpa1VJRm9ybWF0IH0gZnJvbSBcIi4vaGVscGVycy9mb3JtLXZpZXcuZmllbGRzLmhlbHBlclwiO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRpb24gfSBmcm9tIFwiLi9oZWxwZXJzL2Zvcm0tdmlldy5mb3JtLXZhbGlkYXRpb25zLmhlbHBlclwiO1xuXG5leHBvcnQgY2xhc3MgS3dpa0lERm9ybVZpZXdTZXJ2aWNlIHtcbiAgLy8gJ2luaXQnIHN0YWdlIG9mIHRoZSBmb3JtXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgY3JlYXRlRm9ybUdyb3VwKGZpZWxkczogYW55LCBvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgY29uc3QgZm9ybUdyb3VwID0gbmV3IEZvcm1Hcm91cCh7fSk7XG5cbiAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcykge1xuICAgICAgaWYgKGZpZWxkLmlzRm9ybUVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdHMgPSBuZXcgRGVmYXVsdHMoXG4gICAgICAgICAgZmllbGQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4ub2JqZWN0LFxuICAgICAgICAgICAgRk9STV9GSUVMRFM6IGZpZWxkc1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGFrZUFjdGlvblxuICAgICAgICApO1xuICAgICAgICBsZXQgdmFsdWUgPSBcIlwiO1xuICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQsIFwiZGVmYXVsdFwiKSkge1xuICAgICAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyhmaWVsZC5kZWZhdWx0LCBcInZhbHVlXCIpKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGF3YWl0IGRlZmF1bHRzLmdldEZvcm1GaWVsZFZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImRlZmF1bHRcIikpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQuZGVmYXVsdCwgXCJhcGlcIikpIHtcbiAgICAgICAgICAgIGF3YWl0IGRlZmF1bHRzLmdldEZvcm1GaWVsZEFwaVZhbHVlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKGZpZWxkLCBcImRlZmF1bHRcIikpIHtcbiAgICAgICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHMoZmllbGQuZGVmYXVsdCwgXCJvcHRpb25zXCIpKSB7XG4gICAgICAgICAgICBpZiAoZmllbGQuZGVmYXVsdC5vcHRpb25zLnRyaWdnZXJzLmluY2x1ZGVzKFwiT05fSU5JVFwiKSkge1xuICAgICAgICAgICAgICBhd2FpdCBkZWZhdWx0cy5nZXRGb3JtRmllbGRPcHRpb25zKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFsdWUgPSBjb252ZXJ0Rm9ybUZpZWxkVmFsdWVUb0t3aWtVSUZvcm1hdChmaWVsZCwgdmFsdWUpO1xuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSBuZXcgRm9ybVZhbGlkYXRpb24oKS5nZXRGb3JtRmllbGRWYWxpZGF0b3JzKGZpZWxkKTtcblxuICAgICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbChcbiAgICAgICAgICBmaWVsZC5rZXksXG4gICAgICAgICAgbmV3IEZvcm1Db250cm9sKHsgdmFsdWUsIGRpc2FibGVkOiBmaWVsZC5kaXNhYmxlZCB9LCB7IHZhbGlkYXRvcnMgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm9ybUdyb3VwO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,6 @@
1
1
  import { __awaiter, __decorate } from "tslib";
2
+ /* eslint-disable no-unused-vars */
3
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
4
  import { Action, checkObjectKeyExists, checkObjectPathExists, Condition, logMethod, Rule, setValueToObjectPath, Source } from "kwikid-toolkit";
3
5
  import { EApiRequestUrlType } from "../definitions/form-view.apis.definition";
4
6
  export class Apis {
@@ -16,7 +18,7 @@ export class Apis {
16
18
  }
17
19
  setUrl() {
18
20
  return __awaiter(this, void 0, void 0, function* () {
19
- if (this._request.url.hasOwnProperty("type") &&
21
+ if (checkObjectKeyExists(this._request.url, "type") &&
20
22
  this._request.url.type === EApiRequestUrlType.CALCULATED) {
21
23
  const source = new Source(this._object);
22
24
  const url = yield source.getValueFromSource(this._request.url.props.value.source);
@@ -33,41 +35,41 @@ export class Apis {
33
35
  return __awaiter(this, void 0, void 0, function* () {
34
36
  if (checkObjectKeyExists(this._request, "body")) {
35
37
  if (checkObjectKeyExists(this._request.body, "params")) {
36
- let params = this._request.body.params;
38
+ const { params } = this._request.body;
37
39
  let paramIndex = 0;
38
- for (let param of params) {
39
- let sources = param.sources;
40
+ for (const param of params) {
41
+ const { sources } = param;
40
42
  let sourceIndex = 0;
41
- for (let source of sources) {
43
+ for (const source of sources) {
42
44
  const sources = new Source(this._object);
43
45
  const value = sources.getValueFromSource(source);
44
46
  // Set the Value of current source.
45
47
  this._object.API_CONFIG = setValueToObjectPath(this._object.API_CONFIG, `request.body.params[${paramIndex}].sources[${sourceIndex}].value`, value);
46
- const validation = source.validation;
48
+ const { validation } = source;
47
49
  const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
48
50
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
49
51
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
50
52
  const rulesMapping = new Rule(rules, this._object).mapping();
51
- for (let action of actions) {
53
+ for (const action of actions) {
52
54
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
53
55
  if (conditionEvaluation) {
54
56
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
55
57
  yield actions.execute();
56
58
  }
57
59
  }
58
- sourceIndex++;
60
+ sourceIndex += 1;
59
61
  }
60
- paramIndex++;
62
+ paramIndex += 1;
61
63
  }
62
64
  return this._object.API_CONFIG;
63
65
  }
64
- else if (checkObjectKeyExists(this._request.body, "rules") &&
66
+ if (checkObjectKeyExists(this._request.body, "rules") &&
65
67
  checkObjectKeyExists(this._request.body, "actions")) {
66
68
  const triggers = (_f = (_e = this._request.body) === null || _e === void 0 ? void 0 : _e.triggers) !== null && _f !== void 0 ? _f : [];
67
69
  const rules = (_h = (_g = this._request.body) === null || _g === void 0 ? void 0 : _g.rules) !== null && _h !== void 0 ? _h : [];
68
70
  const actions = (_k = (_j = this._request.body) === null || _j === void 0 ? void 0 : _j.actions) !== null && _k !== void 0 ? _k : [];
69
71
  const rulesMapping = new Rule(rules, this._object).mapping();
70
- for (let action of actions) {
72
+ for (const action of actions) {
71
73
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
72
74
  if (conditionEvaluation) {
73
75
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -76,13 +78,9 @@ export class Apis {
76
78
  }
77
79
  return this._object.API_CONFIG;
78
80
  }
79
- else {
80
- return this._object.API_CONFIG;
81
- }
82
- }
83
- else {
84
81
  return this._object.API_CONFIG;
85
82
  }
83
+ return this._object.API_CONFIG;
86
84
  });
87
85
  }
88
86
  validateRequestBody() {
@@ -90,13 +88,13 @@ export class Apis {
90
88
  return __awaiter(this, void 0, void 0, function* () {
91
89
  if (checkObjectKeyExists(this._request, "body")) {
92
90
  if (checkObjectKeyExists(this._request.body, "validation")) {
93
- const body = this._request.body;
94
- const validation = body.validation;
91
+ const { body } = this._request;
92
+ const { validation } = body;
95
93
  const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
96
94
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
97
95
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
98
96
  const rulesMapping = new Rule(rules, this._object).mapping();
99
- for (let action of actions) {
97
+ for (const action of actions) {
100
98
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
101
99
  if (conditionSuccess) {
102
100
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -105,13 +103,13 @@ export class Apis {
105
103
  }
106
104
  return this._object.API_CONFIG;
107
105
  }
108
- else if (checkObjectPathExists(this._request.body, "rules") &&
106
+ if (checkObjectPathExists(this._request.body, "rules") &&
109
107
  checkObjectPathExists(this._request.body, "actions")) {
110
108
  const triggers = (_f = (_e = this._request.body) === null || _e === void 0 ? void 0 : _e.triggers) !== null && _f !== void 0 ? _f : [];
111
109
  const rules = (_h = (_g = this._request.body) === null || _g === void 0 ? void 0 : _g.rules) !== null && _h !== void 0 ? _h : [];
112
110
  const actions = (_k = (_j = this._request.body) === null || _j === void 0 ? void 0 : _j.actions) !== null && _k !== void 0 ? _k : [];
113
111
  const rulesMapping = new Rule(rules, this._object).mapping();
114
- for (let action of actions) {
112
+ for (const action of actions) {
115
113
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
116
114
  if (conditionSuccess) {
117
115
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -120,15 +118,11 @@ export class Apis {
120
118
  }
121
119
  return this._object.API_CONFIG;
122
120
  }
123
- else {
124
- this._object = setValueToObjectPath(this._object, "API_CONFIG.request.body.is_valid", true);
125
- return this._object.API_CONFIG;
126
- }
127
- }
128
- else {
129
121
  this._object = setValueToObjectPath(this._object, "API_CONFIG.request.body.is_valid", true);
130
122
  return this._object.API_CONFIG;
131
123
  }
124
+ this._object = setValueToObjectPath(this._object, "API_CONFIG.request.body.is_valid", true);
125
+ return this._object.API_CONFIG;
132
126
  });
133
127
  }
134
128
  setRequestHeaders() {
@@ -136,41 +130,41 @@ export class Apis {
136
130
  return __awaiter(this, void 0, void 0, function* () {
137
131
  if (checkObjectKeyExists(this._request, "headers")) {
138
132
  if (checkObjectKeyExists(this._request.headers, "params")) {
139
- let params = this._request.headers.params;
133
+ const { params } = this._request.headers;
140
134
  let paramIndex = 0;
141
- for (let param of params) {
142
- let sources = param.sources;
135
+ for (const param of params) {
136
+ const { sources } = param;
143
137
  let sourceIndex = 0;
144
- for (let source of sources) {
138
+ for (const source of sources) {
145
139
  const sources = new Source(this._object);
146
140
  const value = sources.getValueFromSource(source);
147
141
  // Set the Value of current source.
148
142
  this._object.API_CONFIG = setValueToObjectPath(this._object.API_CONFIG, `request.headers.params[${paramIndex}].sources[${sourceIndex}].value`, value);
149
- const validation = source.validation;
143
+ const { validation } = source;
150
144
  const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
151
145
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
152
146
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
153
147
  const rulesMapping = new Rule(rules, this._object).mapping();
154
- for (let action of actions) {
148
+ for (const action of actions) {
155
149
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
156
150
  if (conditionEvaluation) {
157
151
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
158
152
  yield actions.execute();
159
153
  }
160
154
  }
161
- sourceIndex++;
155
+ sourceIndex += 1;
162
156
  }
163
- paramIndex++;
157
+ paramIndex += 1;
164
158
  }
165
159
  return this._object.API_CONFIG;
166
160
  }
167
- else if (checkObjectKeyExists(this._request.headers, "rules") &&
161
+ if (checkObjectKeyExists(this._request.headers, "rules") &&
168
162
  checkObjectKeyExists(this._request.headers, "actions")) {
169
163
  const triggers = (_f = (_e = this._request.headers) === null || _e === void 0 ? void 0 : _e.triggers) !== null && _f !== void 0 ? _f : [];
170
164
  const rules = (_h = (_g = this._request.headers) === null || _g === void 0 ? void 0 : _g.rules) !== null && _h !== void 0 ? _h : [];
171
165
  const actions = (_k = (_j = this._request.headers) === null || _j === void 0 ? void 0 : _j.actions) !== null && _k !== void 0 ? _k : [];
172
166
  const rulesMapping = new Rule(rules, this._object).mapping();
173
- for (let action of actions) {
167
+ for (const action of actions) {
174
168
  const conditionEvaluation = new Condition(action.condition, rulesMapping).evaluate();
175
169
  if (conditionEvaluation) {
176
170
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -179,27 +173,23 @@ export class Apis {
179
173
  }
180
174
  return this._object.API_CONFIG;
181
175
  }
182
- else {
183
- return this._object.API_CONFIG;
184
- }
185
- }
186
- else {
187
176
  return this._object.API_CONFIG;
188
177
  }
178
+ return this._object.API_CONFIG;
189
179
  });
190
180
  }
191
181
  validateRequestHeaders() {
192
182
  var _a, _b, _c, _d, _e, _f, _g, _h;
193
183
  return __awaiter(this, void 0, void 0, function* () {
194
- const headers = this._request.headers;
184
+ const { headers } = this._request;
195
185
  if (checkObjectKeyExists(this._request, "headers")) {
196
186
  if (checkObjectKeyExists(this._request.headers, "validation")) {
197
- const validation = headers.validation;
187
+ const { validation } = headers;
198
188
  const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
199
189
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
200
190
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
201
191
  const rulesMapping = new Rule(rules, this._object).mapping();
202
- for (let action of actions) {
192
+ for (const action of actions) {
203
193
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
204
194
  if (conditionSuccess) {
205
195
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -208,13 +198,13 @@ export class Apis {
208
198
  }
209
199
  return this._object.API_CONFIG;
210
200
  }
211
- else if (checkObjectPathExists(this._request.headers, "rules") &&
201
+ if (checkObjectPathExists(this._request.headers, "rules") &&
212
202
  checkObjectPathExists(this._request.headers, "actions")) {
213
203
  const triggers = (_e = headers === null || headers === void 0 ? void 0 : headers.triggers) !== null && _e !== void 0 ? _e : [];
214
204
  const rules = (_f = headers === null || headers === void 0 ? void 0 : headers.rules) !== null && _f !== void 0 ? _f : [];
215
205
  const actions = (_h = (_g = headers) === null || _g === void 0 ? void 0 : _g.actions) !== null && _h !== void 0 ? _h : [];
216
206
  const rulesMapping = new Rule(rules, this._object).mapping();
217
- for (let action of actions) {
207
+ for (const action of actions) {
218
208
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
219
209
  if (conditionSuccess) {
220
210
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -223,27 +213,23 @@ export class Apis {
223
213
  }
224
214
  return this._object.API_CONFIG;
225
215
  }
226
- else {
227
- this._object = setValueToObjectPath(this._object, "API_CONFIG.request.headers.is_valid", true);
228
- return this._object.API_CONFIG;
229
- }
230
- }
231
- else {
232
216
  this._object = setValueToObjectPath(this._object, "API_CONFIG.request.headers.is_valid", true);
233
217
  return this._object.API_CONFIG;
234
218
  }
219
+ this._object = setValueToObjectPath(this._object, "API_CONFIG.request.headers.is_valid", true);
220
+ return this._object.API_CONFIG;
235
221
  });
236
222
  }
237
223
  validateResponse() {
238
224
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
239
225
  return __awaiter(this, void 0, void 0, function* () {
240
226
  if (checkObjectKeyExists(this._response, "validation")) {
241
- const validation = this._response.validation;
227
+ const { validation } = this._response;
242
228
  const triggers = (_a = validation === null || validation === void 0 ? void 0 : validation.triggers) !== null && _a !== void 0 ? _a : [];
243
229
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
244
230
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
245
231
  const rulesMapping = new Rule(rules, this._object).mapping();
246
- for (let action of actions) {
232
+ for (const action of actions) {
247
233
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
248
234
  if (conditionSuccess) {
249
235
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -257,7 +243,7 @@ export class Apis {
257
243
  const rules = (_h = (_g = this._response) === null || _g === void 0 ? void 0 : _g.rules) !== null && _h !== void 0 ? _h : [];
258
244
  const actions = (_k = (_j = this._response) === null || _j === void 0 ? void 0 : _j.actions) !== null && _k !== void 0 ? _k : [];
259
245
  const rulesMapping = new Rule(rules, this._object).mapping();
260
- for (let action of actions) {
246
+ for (const action of actions) {
261
247
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
262
248
  if (conditionSuccess) {
263
249
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -275,7 +261,7 @@ export class Apis {
275
261
  const rules = (_b = validation === null || validation === void 0 ? void 0 : validation.rules) !== null && _b !== void 0 ? _b : [];
276
262
  const actions = (_d = (_c = validation) === null || _c === void 0 ? void 0 : _c.actions) !== null && _d !== void 0 ? _d : [];
277
263
  const rulesMapping = new Rule(rules, this._object).mapping();
278
- for (let action of actions) {
264
+ for (const action of actions) {
279
265
  const conditionSuccess = new Condition(action.condition, rulesMapping).evaluate();
280
266
  if (conditionSuccess) {
281
267
  const actions = new Action(action, rulesMapping, this._object, this._takeAction);
@@ -306,4 +292,4 @@ __decorate([
306
292
  __decorate([
307
293
  logMethod
308
294
  ], Apis.prototype, "callNextApi", null);
309
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsTUFBTSxFQUNOLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsU0FBUyxFQUVULFNBQVMsRUFDVCxJQUFJLEVBQ0osb0JBQW9CLEVBQ3BCLE1BQU0sRUFLUCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFDTCxrQkFBa0IsRUFPbkIsTUFBTSwwQ0FBMEMsQ0FBQztBQUlsRCxNQUFNLE9BQU8sSUFBSTtJQWNmLFlBQVksTUFBVyxFQUFFLFVBQWU7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQWxCRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQUksTUFBTSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQWdCWSxNQUFNOztZQUNqQixJQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxrQkFBa0IsQ0FBQyxVQUFVLEVB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RSxRQUFRLG1DQUFJLEVBQUUsQ0FBQztZQUM3RCxNQUFNLEtBQUssR0FBaUIsTUFBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsS0FBSyxtQ0FBSSxFQUFFLENBQUM7WUFDcEQsTUFBTSxPQUFPLEdBQW1CLE1BQUEsTUFBQyxVQUFrQiwwQ0FBRSxPQUFPLG1DQUFJLEVBQUUsQ0FBQztZQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTdELEtBQUssSUFBSSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUMxQixNQUFNLGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUNwQyxNQUFNLENBQUMsU0FBUyxFQUNoQixZQUFZLENBQ2IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFYixJQUFJLGdCQUFnQixFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FDeEIsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7b0JBRUYsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ3pCO2FBQ0Y7O0tBQ0Y7Q0FDRjtBQW5jQztJQURDLFNBQVM7a0NBZ0JUO0FBR0Q7SUFEQyxTQUFTOzBDQTJGVDtBQUdEO0lBREMsU0FBUzsrQ0FpRlQ7QUFHRDtJQURDLFNBQVM7NkNBMkZUO0FBR0Q7SUFEQyxTQUFTO2tEQThFVDtBQUdEO0lBREMsU0FBUzs0Q0F5RFQ7QUFHRDtJQURDLFNBQVM7dUNBeUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGdldE9iamVjdERlZXBDb3B5LFxuICBsb2dNZXRob2QsXG4gIFJ1bGUsXG4gIHNldFZhbHVlVG9PYmplY3RQYXRoLFxuICBTb3VyY2UsXG4gIFRBY3Rpb24sXG4gIFRSdWxlLFxuICBUU291cmNlLFxuICBURW5naW5lXG59IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgRUFwaVJlcXVlc3RVcmxUeXBlLFxuICBUQXBpUmVxdWVzdCxcbiAgVEFwaVJlcXVlc3RCb2R5LFxuICBUQXBpUmVxdWVzdEJvZHlQYXJhbSxcbiAgVEFwaVJlcXVlc3RIZWFkZXJzLFxuICBUQXBpUmVxdWVzdEhlYWRlcnNQYXJhbSxcbiAgVEFwaVJlc3BvbnNlXG59IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYXBpcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBURmllbGRBcGlDYWxsIH0gZnJvbSBcIi4uL2RlZmluaXRpb25zL2Zvcm0tdmlldy5maWVsZHMuZGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgVFRyaWdnZXIgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LnRyaWdnZXJzLmRlZmluaXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFwaXMge1xuICBwcml2YXRlIF9vYmplY3Q6IGFueTtcbiAgZ2V0IG9iamVjdCgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl9vYmplY3Q7XG4gIH1cbiAgc2V0IG9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBGdW5jdGlvbjtcblxuICBwcml2YXRlIF9yZXF1ZXN0OiBUQXBpUmVxdWVzdDtcbiAgcHJpdmF0ZSBfcmVzcG9uc2U6IFRBcGlSZXNwb25zZTtcblxuICBjb25zdHJ1Y3RvcihvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuXG4gICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMuX29iamVjdC5BUElfQ09ORklHLnJlcXVlc3Q7XG4gICAgdGhpcy5fcmVzcG9uc2UgPSB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRy5yZXNwb25zZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFVybCgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybC5oYXNPd25Qcm9wZXJ0eShcInR5cGVcIikgJiZcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsLnR5cGUgPT09IEVBcGlSZXF1ZXN0VXJsVHlwZS5DQUxDVUxBVEVEXG4gICAgKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCBzb3VyY2UuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICB0aGlzLl9yZXF1ZXN0LnVybC5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHRoaXMuX3JlcXVlc3QudXJsLCBcInZhbHVlXCIsIHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC51cmwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsID0gc2V0VmFsdWVUb09iamVjdFBhdGgoe30sIFwidmFsdWVcIiwgdGhpcy5fcmVxdWVzdC51cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFJlcXVlc3RCb2R5KCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImJvZHlcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmJvZHksIFwicGFyYW1zXCIpKSB7XG4gICAgICAgIGxldCBwYXJhbXM6IEFycmF5PFRBcGlSZXF1ZXN0Qm9keVBhcmFtPiA9IHRoaXMuX3JlcXVlc3QuYm9keS5wYXJhbXM7XG5cbiAgICAgICAgbGV0IHBhcmFtSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgICBsZXQgc291cmNlczogQXJyYXk8VFNvdXJjZT4gPSBwYXJhbS5zb3VyY2VzO1xuXG4gICAgICAgICAgbGV0IHNvdXJjZUluZGV4ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2UodGhpcy5fb2JqZWN0KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cbiAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHLFxuICAgICAgICAgICAgICBgcmVxdWVzdC5ib2R5LnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBURW5naW5lID0gKHNvdXJjZSBhcyBhbnkpLnZhbGlkYXRpb247XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc291cmNlSW5kZXgrKztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJhbUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmJvZHksIFwicnVsZXNcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcImFjdGlvbnNcIilcbiAgICAgICkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdGhpcy5fcmVxdWVzdC5ib2R5Py50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHRoaXMuX3JlcXVlc3QuYm9keT8ucnVsZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID1cbiAgICAgICAgICAodGhpcy5fcmVxdWVzdC5ib2R5IGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZVJlcXVlc3RCb2R5KCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImJvZHlcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmJvZHksIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgICBjb25zdCBib2R5OiBUQXBpUmVxdWVzdEJvZHkgPSB0aGlzLl9yZXF1ZXN0LmJvZHk7XG5cbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbjogVEVuZ2luZSA9IGJvZHkudmFsaWRhdGlvbjtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuX3JlcXVlc3QuYm9keSwgXCJydWxlc1wiKSAmJlxuICAgICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcImFjdGlvbnNcIilcbiAgICAgICkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdGhpcy5fcmVxdWVzdC5ib2R5Py50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHRoaXMuX3JlcXVlc3QuYm9keT8ucnVsZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID1cbiAgICAgICAgICAodGhpcy5fcmVxdWVzdC5ib2R5IGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vYmplY3QgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgXCJBUElfQ09ORklHLnJlcXVlc3QuYm9keS5pc192YWxpZFwiLFxuICAgICAgICAgIHRydWVcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX29iamVjdCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgIFwiQVBJX0NPTkZJRy5yZXF1ZXN0LmJvZHkuaXNfdmFsaWRcIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgcHVibGljIGFzeW5jIHNldFJlcXVlc3RIZWFkZXJzKCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImhlYWRlcnNcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwicGFyYW1zXCIpKSB7XG4gICAgICAgIGxldCBwYXJhbXM6IEFycmF5PFRBcGlSZXF1ZXN0SGVhZGVyc1BhcmFtPiA9XG4gICAgICAgICAgdGhpcy5fcmVxdWVzdC5oZWFkZXJzLnBhcmFtcztcbiAgICAgICAgbGV0IHBhcmFtSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBwYXJhbSBvZiBwYXJhbXMpIHtcbiAgICAgICAgICBsZXQgc291cmNlczogQXJyYXk8VFNvdXJjZT4gPSBwYXJhbS5zb3VyY2VzO1xuXG4gICAgICAgICAgbGV0IHNvdXJjZUluZGV4ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2UodGhpcy5fb2JqZWN0KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cbiAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHLFxuICAgICAgICAgICAgICBgcmVxdWVzdC5oZWFkZXJzLnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0aW9uOiBURW5naW5lID0gKHNvdXJjZSBhcyBhbnkpLnZhbGlkYXRpb247XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc291cmNlSW5kZXgrKztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJhbUluZGV4Kys7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwicnVsZXNcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5oZWFkZXJzLCBcImFjdGlvbnNcIilcbiAgICAgICkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdGhpcy5fcmVxdWVzdC5oZWFkZXJzPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHRoaXMuX3JlcXVlc3QuaGVhZGVycz8ucnVsZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID1cbiAgICAgICAgICAodGhpcy5fcmVxdWVzdC5oZWFkZXJzIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIHB1YmxpYyBhc3luYyB2YWxpZGF0ZVJlcXVlc3RIZWFkZXJzKCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGNvbnN0IGhlYWRlcnM6IFRBcGlSZXF1ZXN0SGVhZGVycyA9IHRoaXMuX3JlcXVlc3QuaGVhZGVycztcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJoZWFkZXJzXCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5oZWFkZXJzLCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdGlvbjogVEVuZ2luZSA9IGhlYWRlcnMudmFsaWRhdGlvbjtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwicnVsZXNcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuX3JlcXVlc3QuaGVhZGVycywgXCJhY3Rpb25zXCIpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IGhlYWRlcnM/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gaGVhZGVycz8ucnVsZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKGhlYWRlcnMgYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX29iamVjdCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC5oZWFkZXJzLmlzX3ZhbGlkXCIsXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JqZWN0ID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgXCJBUElfQ09ORklHLnJlcXVlc3QuaGVhZGVycy5pc192YWxpZFwiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgfVxuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVSZXNwb25zZSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVzcG9uc2UsIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgY29uc3QgdmFsaWRhdGlvbjogVEVuZ2luZSA9IHRoaXMuX3Jlc3BvbnNlLnZhbGlkYXRpb247XG5cbiAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFxuICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVzcG9uc2UsIFwicnVsZXNcIikgJiZcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3Jlc3BvbnNlLCBcImFjdGlvbnNcIilcbiAgICApIHtcbiAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB0aGlzLl9yZXNwb25zZT8udHJpZ2dlcnMgPz8gW107XG4gICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdGhpcy5fcmVzcG9uc2U/LnJ1bGVzID8/IFtdO1xuICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodGhpcy5fcmVzcG9uc2UgYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBwdWJsaWMgYXN5bmMgY2FsbE5leHRBcGkodmFsaWRhdGlvbjogVEVuZ2luZSk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICBmb3IgKGxldCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICBpZiAoY29uZGl0aW9uU3VjY2Vzcykge1xuICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICk7XG5cbiAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
295
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2hlbHBlcnMvZm9ybS12aWV3LmFwaXMuaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxtQ0FBbUM7QUFDbkMsc0RBQXNEO0FBQ3RELE9BQU8sRUFDTCxNQUFNLEVBQ04sb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksRUFDSixvQkFBb0IsRUFDcEIsTUFBTSxFQUlQLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUNMLGtCQUFrQixFQUduQixNQUFNLDBDQUEwQyxDQUFDO0FBSWxELE1BQU0sT0FBTyxJQUFJO0lBaUJmLFlBQVksTUFBVyxFQUFFLFVBQWU7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFFOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7SUFDcEQsQ0FBQztJQXBCRCxJQUFJLE1BQU07UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksTUFBTSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztJQWlCSyxNQUFNOztZQUNWLElBQ0Usb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJ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QUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsS0FBSyxtQ0FBSSxFQUFFLENBQUM7WUFDcEQsTUFBTSxPQUFPLEdBQW1CLE1BQUEsTUFBQyxVQUFrQiwwQ0FBRSxPQUFPLG1DQUFJLEVBQUUsQ0FBQztZQUVuRSxNQUFNLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRTdELEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFO2dCQUM1QixNQUFNLGdCQUFnQixHQUFHLElBQUksU0FBUyxDQUNwQyxNQUFNLENBQUMsU0FBUyxFQUNoQixZQUFZLENBQ2IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFFYixJQUFJLGdCQUFnQixFQUFFO29CQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FDeEIsTUFBTSxFQUNOLFlBQVksRUFDWixJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7b0JBRUYsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7aUJBQ3pCO2FBQ0Y7O0tBQ0Y7Q0FDRjtBQTliQztJQURDLFNBQVM7a0NBZ0JUO0FBR0Q7SUFEQyxTQUFTOzBDQTBGVDtBQUdEO0lBREMsU0FBUzsrQ0FnRlQ7QUFHRDtJQURDLFNBQVM7NkNBeUZUO0FBR0Q7SUFEQyxTQUFTO2tEQTZFVDtBQUdEO0lBREMsU0FBUzs0Q0F5RFQ7QUFHRDtJQURDLFNBQVM7dUNBeUJUIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuaW1wb3J0IHtcbiAgQWN0aW9uLFxuICBjaGVja09iamVjdEtleUV4aXN0cyxcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBDb25kaXRpb24sXG4gIGxvZ01ldGhvZCxcbiAgUnVsZSxcbiAgc2V0VmFsdWVUb09iamVjdFBhdGgsXG4gIFNvdXJjZSxcbiAgVEFjdGlvbixcbiAgVEVuZ2luZSxcbiAgVFJ1bGVcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQge1xuICBFQXBpUmVxdWVzdFVybFR5cGUsXG4gIFRBcGlSZXF1ZXN0LFxuICBUQXBpUmVzcG9uc2Vcbn0gZnJvbSBcIi4uL2RlZmluaXRpb25zL2Zvcm0tdmlldy5hcGlzLmRlZmluaXRpb25cIjtcbmltcG9ydCB7IFRGaWVsZEFwaUNhbGwgfSBmcm9tIFwiLi4vZGVmaW5pdGlvbnMvZm9ybS12aWV3LmZpZWxkcy5kZWZpbml0aW9uXCI7XG5pbXBvcnQgeyBUVHJpZ2dlciB9IGZyb20gXCIuLi9kZWZpbml0aW9ucy9mb3JtLXZpZXcudHJpZ2dlcnMuZGVmaW5pdGlvblwiO1xuXG5leHBvcnQgY2xhc3MgQXBpcyB7XG4gIHByaXZhdGUgX29iamVjdDogYW55O1xuXG4gIGdldCBvYmplY3QoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0O1xuICB9XG5cbiAgc2V0IG9iamVjdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF90YWtlQWN0aW9uOiBhbnk7XG5cbiAgcHJpdmF0ZSBfcmVxdWVzdDogVEFwaVJlcXVlc3Q7XG5cbiAgcHJpdmF0ZSBfcmVzcG9uc2U6IFRBcGlSZXNwb25zZTtcblxuICBjb25zdHJ1Y3RvcihvYmplY3Q6IGFueSwgdGFrZUFjdGlvbjogYW55KSB7XG4gICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0O1xuICAgIHRoaXMuX3Rha2VBY3Rpb24gPSB0YWtlQWN0aW9uO1xuXG4gICAgdGhpcy5fcmVxdWVzdCA9IHRoaXMuX29iamVjdC5BUElfQ09ORklHLnJlcXVlc3Q7XG4gICAgdGhpcy5fcmVzcG9uc2UgPSB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRy5yZXNwb25zZTtcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgc2V0VXJsKCk6IFByb21pc2U8VEZpZWxkQXBpQ2FsbD4ge1xuICAgIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QudXJsLCBcInR5cGVcIikgJiZcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsLnR5cGUgPT09IEVBcGlSZXF1ZXN0VXJsVHlwZS5DQUxDVUxBVEVEXG4gICAgKSB7XG4gICAgICBjb25zdCBzb3VyY2UgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG4gICAgICBjb25zdCB1cmwgPSBhd2FpdCBzb3VyY2UuZ2V0VmFsdWVGcm9tU291cmNlKFxuICAgICAgICB0aGlzLl9yZXF1ZXN0LnVybC5wcm9wcy52YWx1ZS5zb3VyY2VcbiAgICAgICk7XG4gICAgICB0aGlzLl9yZXF1ZXN0LnVybCA9IHNldFZhbHVlVG9PYmplY3RQYXRoKHRoaXMuX3JlcXVlc3QudXJsLCBcInZhbHVlXCIsIHVybCk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy5fcmVxdWVzdC51cmwgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHRoaXMuX3JlcXVlc3QudXJsID0gc2V0VmFsdWVUb09iamVjdFBhdGgoe30sIFwidmFsdWVcIiwgdGhpcy5fcmVxdWVzdC51cmwpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgc2V0UmVxdWVzdEJvZHkoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QsIFwiYm9keVwiKSkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QuYm9keSwgXCJwYXJhbXNcIikpIHtcbiAgICAgICAgY29uc3QgeyBwYXJhbXMgfSA9IHRoaXMuX3JlcXVlc3QuYm9keTtcblxuICAgICAgICBsZXQgcGFyYW1JbmRleCA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgcGFyYW0gb2YgcGFyYW1zKSB7XG4gICAgICAgICAgY29uc3QgeyBzb3VyY2VzIH0gPSBwYXJhbTtcblxuICAgICAgICAgIGxldCBzb3VyY2VJbmRleCA9IDA7XG4gICAgICAgICAgZm9yIChjb25zdCBzb3VyY2Ugb2Ygc291cmNlcykge1xuICAgICAgICAgICAgY29uc3Qgc291cmNlcyA9IG5ldyBTb3VyY2UodGhpcy5fb2JqZWN0KTtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBzb3VyY2VzLmdldFZhbHVlRnJvbVNvdXJjZShzb3VyY2UpO1xuICAgICAgICAgICAgLy8gU2V0IHRoZSBWYWx1ZSBvZiBjdXJyZW50IHNvdXJjZS5cbiAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdC5BUElfQ09ORklHLFxuICAgICAgICAgICAgICBgcmVxdWVzdC5ib2R5LnBhcmFtc1ske3BhcmFtSW5kZXh9XS5zb3VyY2VzWyR7c291cmNlSW5kZXh9XS52YWx1ZWAsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IHNvdXJjZSBhcyBhbnk7XG5cbiAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB2YWxpZGF0aW9uPy50cmlnZ2VycyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICAgICAgY29uc3QgcnVsZXNNYXBwaW5nID0gbmV3IFJ1bGUocnVsZXMsIHRoaXMuX29iamVjdCkubWFwcGluZygpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgICAgIGFjdGlvbi5jb25kaXRpb24sXG4gICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgICAgICBpZiAoY29uZGl0aW9uRXZhbHVhdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgcnVsZXNNYXBwaW5nLFxuICAgICAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzb3VyY2VJbmRleCArPSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcmFtSW5kZXggKz0gMTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcInJ1bGVzXCIpICYmXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QuYm9keSwgXCJhY3Rpb25zXCIpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHRoaXMuX3JlcXVlc3QuYm9keT8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB0aGlzLl9yZXF1ZXN0LmJvZHk/LnJ1bGVzID8/IFtdO1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9XG4gICAgICAgICAgKHRoaXMuX3JlcXVlc3QuYm9keSBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uRXZhbHVhdGlvbiA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgdmFsaWRhdGVSZXF1ZXN0Qm9keSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdCwgXCJib2R5XCIpKSB7XG4gICAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVxdWVzdC5ib2R5LCBcInZhbGlkYXRpb25cIikpIHtcbiAgICAgICAgY29uc3QgeyBib2R5IH0gPSB0aGlzLl9yZXF1ZXN0O1xuXG4gICAgICAgIGNvbnN0IHsgdmFsaWRhdGlvbiB9ID0gYm9keTtcblxuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB2YWxpZGF0aW9uPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyh0aGlzLl9yZXF1ZXN0LmJvZHksIFwicnVsZXNcIikgJiZcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuX3JlcXVlc3QuYm9keSwgXCJhY3Rpb25zXCIpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHRoaXMuX3JlcXVlc3QuYm9keT8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSB0aGlzLl9yZXF1ZXN0LmJvZHk/LnJ1bGVzID8/IFtdO1xuICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9XG4gICAgICAgICAgKHRoaXMuX3JlcXVlc3QuYm9keSBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYmplY3QgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC5ib2R5LmlzX3ZhbGlkXCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gICAgdGhpcy5fb2JqZWN0ID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICB0aGlzLl9vYmplY3QsXG4gICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC5ib2R5LmlzX3ZhbGlkXCIsXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgc2V0UmVxdWVzdEhlYWRlcnMoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QsIFwiaGVhZGVyc1wiKSkge1xuICAgICAgaWYgKGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QuaGVhZGVycywgXCJwYXJhbXNcIikpIHtcbiAgICAgICAgY29uc3QgeyBwYXJhbXMgfSA9IHRoaXMuX3JlcXVlc3QuaGVhZGVycztcbiAgICAgICAgbGV0IHBhcmFtSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcmFtcykge1xuICAgICAgICAgIGNvbnN0IHsgc291cmNlcyB9ID0gcGFyYW07XG5cbiAgICAgICAgICBsZXQgc291cmNlSW5kZXggPSAwO1xuICAgICAgICAgIGZvciAoY29uc3Qgc291cmNlIG9mIHNvdXJjZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZXMgPSBuZXcgU291cmNlKHRoaXMuX29iamVjdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gc291cmNlcy5nZXRWYWx1ZUZyb21Tb3VyY2Uoc291cmNlKTtcbiAgICAgICAgICAgIC8vIFNldCB0aGUgVmFsdWUgb2YgY3VycmVudCBzb3VyY2UuXG4gICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyA9IHNldFZhbHVlVG9PYmplY3RQYXRoKFxuICAgICAgICAgICAgICB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRyxcbiAgICAgICAgICAgICAgYHJlcXVlc3QuaGVhZGVycy5wYXJhbXNbJHtwYXJhbUluZGV4fV0uc291cmNlc1ske3NvdXJjZUluZGV4fV0udmFsdWVgLFxuICAgICAgICAgICAgICB2YWx1ZVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgY29uc3QgeyB2YWxpZGF0aW9uIH0gPSBzb3VyY2UgYXMgYW55O1xuXG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdmFsaWRhdGlvbj8ucnVsZXMgPz8gW107XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zOiBBcnJheTxUQWN0aW9uPiA9ICh2YWxpZGF0aW9uIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb25FdmFsdWF0aW9uID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbkV2YWx1YXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc291cmNlSW5kZXggKz0gMTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBwYXJhbUluZGV4ICs9IDE7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3JlcXVlc3QuaGVhZGVycywgXCJydWxlc1wiKSAmJlxuICAgICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwiYWN0aW9uc1wiKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHRyaWdnZXJzOiBBcnJheTxUVHJpZ2dlcj4gPSB0aGlzLl9yZXF1ZXN0LmhlYWRlcnM/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdGhpcy5fcmVxdWVzdC5oZWFkZXJzPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPVxuICAgICAgICAgICh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMgYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbkV2YWx1YXRpb24gPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25FdmFsdWF0aW9uKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gIH1cblxuICBAbG9nTWV0aG9kXG4gIGFzeW5jIHZhbGlkYXRlUmVxdWVzdEhlYWRlcnMoKTogUHJvbWlzZTxURmllbGRBcGlDYWxsPiB7XG4gICAgY29uc3QgeyBoZWFkZXJzIH0gPSB0aGlzLl9yZXF1ZXN0O1xuICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LCBcImhlYWRlcnNcIikpIHtcbiAgICAgIGlmIChjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXF1ZXN0LmhlYWRlcnMsIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgICBjb25zdCB7IHZhbGlkYXRpb24gfSA9IGhlYWRlcnM7XG5cbiAgICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgICBjb25zdCBydWxlczogQXJyYXk8VFJ1bGU+ID0gdmFsaWRhdGlvbj8ucnVsZXMgPz8gW107XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY2hlY2tPYmplY3RQYXRoRXhpc3RzKHRoaXMuX3JlcXVlc3QuaGVhZGVycywgXCJydWxlc1wiKSAmJlxuICAgICAgICBjaGVja09iamVjdFBhdGhFeGlzdHModGhpcy5fcmVxdWVzdC5oZWFkZXJzLCBcImFjdGlvbnNcIilcbiAgICAgICkge1xuICAgICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gaGVhZGVycz8udHJpZ2dlcnMgPz8gW107XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBBcnJheTxUUnVsZT4gPSBoZWFkZXJzPy5ydWxlcyA/PyBbXTtcbiAgICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAoaGVhZGVycyBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBhY3Rpb25zKSB7XG4gICAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgICAgcnVsZXNNYXBwaW5nXG4gICAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbnMgPSBuZXcgQWN0aW9uKFxuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBhd2FpdCBhY3Rpb25zLmV4ZWN1dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0LkFQSV9DT05GSUc7XG4gICAgICB9XG4gICAgICB0aGlzLl9vYmplY3QgPSBzZXRWYWx1ZVRvT2JqZWN0UGF0aChcbiAgICAgICAgdGhpcy5fb2JqZWN0LFxuICAgICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC5oZWFkZXJzLmlzX3ZhbGlkXCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgICB9XG4gICAgdGhpcy5fb2JqZWN0ID0gc2V0VmFsdWVUb09iamVjdFBhdGgoXG4gICAgICB0aGlzLl9vYmplY3QsXG4gICAgICBcIkFQSV9DT05GSUcucmVxdWVzdC5oZWFkZXJzLmlzX3ZhbGlkXCIsXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIHJldHVybiB0aGlzLl9vYmplY3QuQVBJX0NPTkZJRztcbiAgfVxuXG4gIEBsb2dNZXRob2RcbiAgYXN5bmMgdmFsaWRhdGVSZXNwb25zZSgpOiBQcm9taXNlPFRGaWVsZEFwaUNhbGw+IHtcbiAgICBpZiAoY2hlY2tPYmplY3RLZXlFeGlzdHModGhpcy5fcmVzcG9uc2UsIFwidmFsaWRhdGlvblwiKSkge1xuICAgICAgY29uc3QgeyB2YWxpZGF0aW9uIH0gPSB0aGlzLl9yZXNwb25zZTtcblxuICAgICAgY29uc3QgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPiA9IHZhbGlkYXRpb24/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgICAgY29uc3QgYWN0aW9uczogQXJyYXk8VEFjdGlvbj4gPSAodmFsaWRhdGlvbiBhcyBhbnkpPy5hY3Rpb25zID8/IFtdO1xuXG4gICAgICBjb25zdCBydWxlc01hcHBpbmcgPSBuZXcgUnVsZShydWxlcywgdGhpcy5fb2JqZWN0KS5tYXBwaW5nKCk7XG5cbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgY29uZGl0aW9uU3VjY2VzcyA9IG5ldyBDb25kaXRpb24oXG4gICAgICAgICAgYWN0aW9uLmNvbmRpdGlvbixcbiAgICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICAgKS5ldmFsdWF0ZSgpO1xuXG4gICAgICAgIGlmIChjb25kaXRpb25TdWNjZXNzKSB7XG4gICAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICBydWxlc01hcHBpbmcsXG4gICAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgICB0aGlzLl90YWtlQWN0aW9uXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIGNoZWNrT2JqZWN0S2V5RXhpc3RzKHRoaXMuX3Jlc3BvbnNlLCBcInJ1bGVzXCIpICYmXG4gICAgICBjaGVja09iamVjdEtleUV4aXN0cyh0aGlzLl9yZXNwb25zZSwgXCJhY3Rpb25zXCIpXG4gICAgKSB7XG4gICAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdGhpcy5fcmVzcG9uc2U/LnRyaWdnZXJzID8/IFtdO1xuICAgICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHRoaXMuX3Jlc3BvbnNlPy5ydWxlcyA/PyBbXTtcbiAgICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHRoaXMuX3Jlc3BvbnNlIGFzIGFueSk/LmFjdGlvbnMgPz8gW107XG5cbiAgICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgYWN0aW9ucykge1xuICAgICAgICBjb25zdCBjb25kaXRpb25TdWNjZXNzID0gbmV3IENvbmRpdGlvbihcbiAgICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZ1xuICAgICAgICApLmV2YWx1YXRlKCk7XG5cbiAgICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBhY3Rpb25zID0gbmV3IEFjdGlvbihcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICAgIHRoaXMuX29iamVjdCxcbiAgICAgICAgICAgIHRoaXMuX3Rha2VBY3Rpb25cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgYXdhaXQgYWN0aW9ucy5leGVjdXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX29iamVjdC5BUElfQ09ORklHO1xuICB9XG5cbiAgQGxvZ01ldGhvZFxuICBhc3luYyBjYWxsTmV4dEFwaSh2YWxpZGF0aW9uOiBURW5naW5lKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCB0cmlnZ2VyczogQXJyYXk8VFRyaWdnZXI+ID0gdmFsaWRhdGlvbj8udHJpZ2dlcnMgPz8gW107XG4gICAgY29uc3QgcnVsZXM6IEFycmF5PFRSdWxlPiA9IHZhbGlkYXRpb24/LnJ1bGVzID8/IFtdO1xuICAgIGNvbnN0IGFjdGlvbnM6IEFycmF5PFRBY3Rpb24+ID0gKHZhbGlkYXRpb24gYXMgYW55KT8uYWN0aW9ucyA/PyBbXTtcblxuICAgIGNvbnN0IHJ1bGVzTWFwcGluZyA9IG5ldyBSdWxlKHJ1bGVzLCB0aGlzLl9vYmplY3QpLm1hcHBpbmcoKTtcblxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIGFjdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNvbmRpdGlvblN1Y2Nlc3MgPSBuZXcgQ29uZGl0aW9uKFxuICAgICAgICBhY3Rpb24uY29uZGl0aW9uLFxuICAgICAgICBydWxlc01hcHBpbmdcbiAgICAgICkuZXZhbHVhdGUoKTtcblxuICAgICAgaWYgKGNvbmRpdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IG5ldyBBY3Rpb24oXG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIHJ1bGVzTWFwcGluZyxcbiAgICAgICAgICB0aGlzLl9vYmplY3QsXG4gICAgICAgICAgdGhpcy5fdGFrZUFjdGlvblxuICAgICAgICApO1xuXG4gICAgICAgIGF3YWl0IGFjdGlvbnMuZXhlY3V0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19