ngx-material-entity 0.1.1 → 0.1.4

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 (133) hide show
  1. package/CONTRIBUTING.md +7 -1
  2. package/README.md +536 -328
  3. package/classes/base.builder.d.ts +35 -0
  4. package/classes/date.utilities.d.ts +58 -0
  5. package/classes/entity.model.d.ts +13 -0
  6. package/classes/{entity-service.class.d.ts → entity.service.d.ts} +35 -20
  7. package/classes/entity.utilities.d.ts +153 -0
  8. package/components/confirm-dialog/confirm-dialog-data.builder.d.ts +23 -0
  9. package/components/confirm-dialog/confirm-dialog-data.d.ts +18 -8
  10. package/components/confirm-dialog/confirm-dialog.component.d.ts +15 -5
  11. package/components/get-validation-error-message.function.d.ts +3 -2
  12. package/components/input/add-array-item-dialog-data.builder.d.ts +20 -0
  13. package/components/input/add-array-item-dialog-data.d.ts +19 -0
  14. package/components/input/input.component.d.ts +151 -30
  15. package/components/input/input.module.d.ts +7 -4
  16. package/components/table/create-dialog/create-dialog-data.builder.d.ts +21 -0
  17. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +21 -0
  18. package/components/table/create-dialog/create-entity-dialog-data.d.ts +4 -5
  19. package/components/table/create-dialog/create-entity-dialog.component.d.ts +21 -8
  20. package/components/table/edit-dialog/edit-dialog-data.builder.d.ts +24 -0
  21. package/components/table/edit-dialog/edit-entity-dialog-data.d.ts +7 -8
  22. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +22 -0
  23. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +25 -8
  24. package/components/table/table-data.builder.d.ts +51 -0
  25. package/components/table/table-data.d.ts +46 -30
  26. package/components/table/table.component.d.ts +53 -7
  27. package/components/table/table.module.d.ts +3 -1
  28. package/decorators/array/array-decorator-internal.data.d.ts +45 -0
  29. package/decorators/array/array-decorator.data.d.ts +129 -0
  30. package/decorators/array/array.decorator.d.ts +9 -0
  31. package/decorators/base/base-property.decorator.d.ts +7 -6
  32. package/decorators/base/decorator-types.enum.d.ts +12 -9
  33. package/decorators/base/dropdown-value.interface.d.ts +14 -0
  34. package/decorators/base/property-decorator-internal.data.d.ts +24 -0
  35. package/decorators/base/property-decorator.data.d.ts +70 -0
  36. package/decorators/boolean/boolean-decorator-internal.data.d.ts +25 -0
  37. package/decorators/boolean/boolean-decorator.data.d.ts +37 -0
  38. package/decorators/boolean/boolean.decorator.d.ts +8 -0
  39. package/decorators/date/date-decorator-internal.data.d.ts +44 -0
  40. package/decorators/date/date-decorator.data.d.ts +129 -0
  41. package/decorators/number/number-decorator-internal.data.d.ts +20 -0
  42. package/decorators/number/number-decorator.data.d.ts +36 -0
  43. package/decorators/number/number.decorator.d.ts +8 -0
  44. package/decorators/object/object-decorator-internal.data.d.ts +11 -0
  45. package/decorators/object/object-decorator.data.d.ts +25 -0
  46. package/decorators/object/object.decorator.d.ts +8 -0
  47. package/decorators/string/string-decorator-internal.data.d.ts +41 -0
  48. package/decorators/string/string-decorator.data.d.ts +77 -0
  49. package/decorators/string/string.decorator.d.ts +8 -0
  50. package/esm2020/classes/base.builder.mjs +43 -0
  51. package/esm2020/classes/date.utilities.mjs +138 -0
  52. package/esm2020/classes/entity.model.mjs +19 -0
  53. package/esm2020/classes/entity.service.mjs +83 -0
  54. package/esm2020/classes/entity.utilities.mjs +538 -0
  55. package/esm2020/components/confirm-dialog/confirm-dialog-data.builder.mjs +44 -0
  56. package/esm2020/components/confirm-dialog/confirm-dialog-data.mjs +1 -1
  57. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +18 -22
  58. package/esm2020/components/get-validation-error-message.function.mjs +8 -3
  59. package/esm2020/components/input/add-array-item-dialog-data.builder.mjs +30 -0
  60. package/esm2020/components/input/add-array-item-dialog-data.mjs +2 -0
  61. package/esm2020/components/input/input.component.mjs +240 -36
  62. package/esm2020/components/input/input.module.mjs +23 -9
  63. package/esm2020/components/table/create-dialog/create-dialog-data.builder.mjs +32 -0
  64. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +26 -0
  65. package/esm2020/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  66. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +31 -31
  67. package/esm2020/components/table/create-dialog/create-entity-dialog.module.mjs +20 -4
  68. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +41 -0
  69. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +1 -1
  70. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +27 -0
  71. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +45 -49
  72. package/esm2020/components/table/table-data.builder.mjs +105 -0
  73. package/esm2020/components/table/table-data.mjs +1 -1
  74. package/esm2020/components/table/table.component.mjs +91 -83
  75. package/esm2020/components/table/table.module.mjs +12 -4
  76. package/esm2020/decorators/array/array-decorator-internal.data.mjs +51 -0
  77. package/esm2020/decorators/array/array-decorator.data.mjs +7 -0
  78. package/esm2020/decorators/array/array.decorator.mjs +24 -0
  79. package/esm2020/decorators/base/base-property.decorator.mjs +6 -5
  80. package/esm2020/decorators/base/decorator-types.enum.mjs +4 -1
  81. package/esm2020/decorators/base/dropdown-value.interface.mjs +2 -0
  82. package/esm2020/decorators/base/property-decorator-internal.data.mjs +38 -0
  83. package/esm2020/decorators/base/property-decorator.data.mjs +6 -0
  84. package/esm2020/decorators/boolean/boolean-decorator-internal.data.mjs +33 -0
  85. package/esm2020/decorators/boolean/boolean-decorator.data.mjs +7 -0
  86. package/esm2020/decorators/boolean/boolean.decorator.mjs +21 -0
  87. package/esm2020/decorators/date/date-decorator-internal.data.mjs +48 -0
  88. package/esm2020/decorators/date/date-decorator.data.mjs +7 -0
  89. package/esm2020/decorators/number/number-decorator-internal.data.mjs +23 -0
  90. package/esm2020/decorators/number/number-decorator.data.mjs +7 -0
  91. package/esm2020/decorators/number/number.decorator.mjs +18 -0
  92. package/esm2020/decorators/object/object-decorator-internal.data.mjs +12 -0
  93. package/esm2020/decorators/object/object-decorator.data.mjs +7 -0
  94. package/esm2020/decorators/object/object.decorator.mjs +13 -0
  95. package/esm2020/decorators/string/string-decorator-internal.data.mjs +48 -0
  96. package/esm2020/decorators/string/string-decorator.data.mjs +7 -0
  97. package/esm2020/decorators/string/string.decorator.mjs +24 -0
  98. package/esm2020/public-api.mjs +20 -13
  99. package/fesm2015/ngx-material-entity.mjs +1664 -944
  100. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  101. package/fesm2020/ngx-material-entity.mjs +1667 -941
  102. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  103. package/package.json +7 -1
  104. package/public-api.d.ts +21 -10
  105. package/classes/entity-model.class.d.ts +0 -9
  106. package/classes/entity-utilities.class.d.ts +0 -95
  107. package/components/input/array-table/add-array-item-dialog/add-array-item-dialog.component.d.ts +0 -35
  108. package/components/input/array-table/add-array-item-dialog/add-array-item-dialog.module.d.ts +0 -12
  109. package/components/input/array-table/array-table.component.d.ts +0 -34
  110. package/components/input/array-table/array-table.module.d.ts +0 -19
  111. package/components/input/internal-input/internal-input.component.d.ts +0 -57
  112. package/components/input/internal-input/internal-input.module.d.ts +0 -16
  113. package/decorators/array.decorator.d.ts +0 -125
  114. package/decorators/base/property-decorator-config.interface.d.ts +0 -50
  115. package/decorators/boolean.decorator.d.ts +0 -42
  116. package/decorators/number.decorator.d.ts +0 -40
  117. package/decorators/object.decorator.d.ts +0 -27
  118. package/decorators/string.decorator.d.ts +0 -76
  119. package/esm2020/classes/entity-model.class.mjs +0 -19
  120. package/esm2020/classes/entity-service.class.mjs +0 -70
  121. package/esm2020/classes/entity-utilities.class.mjs +0 -296
  122. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog.component.mjs +0 -43
  123. package/esm2020/components/input/array-table/add-array-item-dialog/add-array-item-dialog.module.mjs +0 -22
  124. package/esm2020/components/input/array-table/array-table.component.mjs +0 -116
  125. package/esm2020/components/input/array-table/array-table.module.mjs +0 -66
  126. package/esm2020/components/input/internal-input/internal-input.component.mjs +0 -73
  127. package/esm2020/components/input/internal-input/internal-input.module.mjs +0 -54
  128. package/esm2020/decorators/array.decorator.mjs +0 -70
  129. package/esm2020/decorators/base/property-decorator-config.interface.mjs +0 -31
  130. package/esm2020/decorators/boolean.decorator.mjs +0 -44
  131. package/esm2020/decorators/number.decorator.mjs +0 -36
  132. package/esm2020/decorators/object.decorator.mjs +0 -23
  133. package/esm2020/decorators/string.decorator.mjs +0 -61
@@ -1,17 +1,25 @@
1
1
  import { Component, Inject, Injector } from '@angular/core';
2
2
  import { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import { EntityUtilities } from '../../../classes/entity-utilities.class';
3
+ import { EntityUtilities } from '../../../classes/entity.utilities';
4
4
  import { cloneDeep } from 'lodash';
5
5
  import { NgxMatEntityConfirmDialogComponent } from '../../confirm-dialog/confirm-dialog.component';
6
+ import { ConfirmDialogDataBuilder } from '../../confirm-dialog/confirm-dialog-data.builder';
7
+ import { EditEntityDialogDataBuilder } from './edit-entity-dialog.builder';
6
8
  import * as i0 from "@angular/core";
7
9
  import * as i1 from "@angular/material/dialog";
8
10
  import * as i2 from "@angular/material/button";
9
11
  import * as i3 from "../../input/input.component";
10
12
  import * as i4 from "@angular/common";
11
13
  import * as i5 from "@angular/forms";
14
+ /**
15
+ * The default dialog used to edit an existing entity based on the configuration passed in the MAT_DIALOG_DATA "inputData".
16
+ * Used by the ngx-mat-entity-table.
17
+ *
18
+ * It offers a lot of customization options which can be found in "EditEntityDialogData".
19
+ */
12
20
  export class NgxMatEntityEditDialogComponent {
13
- constructor(data, dialogRef, injector, dialog) {
14
- this.data = data;
21
+ constructor(inputData, dialogRef, injector, dialog) {
22
+ this.inputData = inputData;
15
23
  this.dialogRef = dialogRef;
16
24
  this.injector = injector;
17
25
  this.dialog = dialog;
@@ -19,41 +27,31 @@ export class NgxMatEntityEditDialogComponent {
19
27
  this.getWidth = EntityUtilities.getWidth;
20
28
  }
21
29
  ngOnInit() {
30
+ this.data = new EditEntityDialogDataBuilder(this.inputData).getResult();
22
31
  this.dialogRef.disableClose = true;
23
- this.setEntityKeys();
32
+ this.entityRows = EntityUtilities.getEntityRows(this.data.entity, false, true);
24
33
  this.entityService = this.injector.get(this.data.EntityServiceClass);
25
34
  this.entityPriorChanges = cloneDeep(this.data.entity);
26
35
  }
27
- setEntityKeys() {
28
- this.entityKeys = Reflect.ownKeys(this.data.entity);
29
- const omitUpdateKeys = EntityUtilities.getOmitForUpdate(this.data.entity);
30
- this.entityKeys = this.entityKeys.filter((k) => !omitUpdateKeys.includes(k))
31
- .sort((a, b) => EntityUtilities.compareOrder(a, b, this.data.entity));
32
- }
36
+ /**
37
+ * Tries to save the changes and close the dialog afterwards.
38
+ * Also handles the confirmation if required.
39
+ */
33
40
  edit() {
34
- if (this.data.editDialogData.editRequiresConfirmDialog === false) {
41
+ if (!this.data.editDialogData.editRequiresConfirmDialog) {
35
42
  return this.confirmEdit();
36
43
  }
37
- const dialogData = {
38
- // eslint-disable-next-line max-len
39
- text: this.data.editDialogData.confirmEditDialogData?.text ? this.data.editDialogData.confirmEditDialogData?.text : ['Do you really want to save all changes?'],
40
- type: 'default',
41
- // eslint-disable-next-line max-len
42
- confirmButtonLabel: this.data.editDialogData.confirmEditDialogData?.confirmButtonLabel ? this.data.editDialogData.confirmEditDialogData?.confirmButtonLabel : 'Confirm',
43
- // eslint-disable-next-line max-len
44
- cancelButtonLabel: this.data.editDialogData.confirmEditDialogData?.cancelButtonLabel ? this.data.editDialogData.confirmEditDialogData?.cancelButtonLabel : 'Cancel',
45
- title: this.data.editDialogData.confirmEditDialogData?.title ? this.data.editDialogData.confirmEditDialogData?.title : 'Edit',
46
- // eslint-disable-next-line max-len
47
- requireConfirmation: this.data.editDialogData.confirmEditDialogData?.requireConfirmation ? this.data.editDialogData.confirmEditDialogData?.requireConfirmation : false,
48
- // eslint-disable-next-line max-len
49
- confirmationText: this.data.editDialogData.confirmEditDialogData?.confirmationText ? this.data.editDialogData.confirmEditDialogData?.confirmationText : undefined,
50
- };
51
- const dialogref = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
44
+ const dialogData = new ConfirmDialogDataBuilder(this.data.editDialogData.confirmEditDialogData)
45
+ .withDefault('text', ['Do you really want to save all changes?'])
46
+ .withDefault('confirmButtonLabel', 'Save')
47
+ .withDefault('title', 'Edit')
48
+ .getResult();
49
+ const dialogRef = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
52
50
  data: dialogData,
53
51
  autoFocus: false,
54
52
  restoreFocus: false
55
53
  });
56
- dialogref.afterClosed().subscribe((res) => {
54
+ dialogRef.afterClosed().subscribe((res) => {
57
55
  if (res === 1) {
58
56
  this.confirmEdit();
59
57
  }
@@ -62,51 +60,49 @@ export class NgxMatEntityEditDialogComponent {
62
60
  confirmEdit() {
63
61
  this.entityService.update(this.data.entity, this.entityPriorChanges).then(() => this.dialogRef.close(1));
64
62
  }
63
+ /**
64
+ * Tries to delete the entity and close the dialog afterwards.
65
+ * Also handles the confirmation if required.
66
+ */
65
67
  delete() {
66
- if (this.data.editDialogData.deleteRequiresConfirmDialog === false) {
68
+ if (!this.data.editDialogData.deleteRequiresConfirmDialog) {
67
69
  return this.confirmDelete();
68
70
  }
69
- const dialogData = {
70
- // eslint-disable-next-line max-len
71
- text: this.data.editDialogData.confirmDeleteDialogData?.text ? this.data.editDialogData.confirmDeleteDialogData?.text : ['Do you really want to delete this entity?'],
72
- type: 'delete',
73
- // eslint-disable-next-line max-len
74
- confirmButtonLabel: this.data.editDialogData.confirmDeleteDialogData?.confirmButtonLabel ? this.data.editDialogData.confirmDeleteDialogData?.confirmButtonLabel : 'Delete',
75
- // eslint-disable-next-line max-len
76
- cancelButtonLabel: this.data.editDialogData.confirmDeleteDialogData?.cancelButtonLabel ? this.data.editDialogData.confirmDeleteDialogData?.cancelButtonLabel : 'Cancel',
77
- // eslint-disable-next-line max-len
78
- title: this.data.editDialogData.confirmDeleteDialogData?.title ? this.data.editDialogData.confirmDeleteDialogData?.title : 'Delete',
79
- // eslint-disable-next-line max-len
80
- requireConfirmation: this.data.editDialogData.confirmDeleteDialogData?.requireConfirmation ? this.data.editDialogData.confirmDeleteDialogData?.requireConfirmation : false,
81
- // eslint-disable-next-line max-len
82
- confirmationText: this.data.editDialogData.confirmDeleteDialogData?.confirmationText ? this.data.editDialogData.confirmDeleteDialogData?.confirmationText : undefined,
83
- };
84
- const dialogref = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
71
+ const dialogData = new ConfirmDialogDataBuilder(this.data.editDialogData.confirmDeleteDialogData)
72
+ .withDefault('text', ['Do you really want to delete this entity?'])
73
+ .withDefault('type', 'delete')
74
+ .withDefault('confirmButtonLabel', 'Delete')
75
+ .withDefault('title', 'Delete')
76
+ .getResult();
77
+ const dialogRef = this.dialog.open(NgxMatEntityConfirmDialogComponent, {
85
78
  data: dialogData,
86
79
  autoFocus: false,
87
80
  restoreFocus: false
88
81
  });
89
- dialogref.afterClosed().subscribe((res) => {
82
+ dialogRef.afterClosed().subscribe((res) => {
90
83
  if (res === 1) {
91
84
  this.confirmDelete();
92
85
  }
93
86
  });
94
87
  }
95
88
  confirmDelete() {
96
- this.entityService.delete(this.entityPriorChanges.id).then(() => this.dialogRef.close(2));
89
+ this.entityService.delete(this.entityPriorChanges).then(() => this.dialogRef.close(2));
97
90
  }
91
+ /**
92
+ * Reverts all changes made and closes the dialog.
93
+ */
98
94
  cancel() {
99
95
  EntityUtilities.resetChangesOnEntity(this.data.entity, this.entityPriorChanges);
100
96
  this.dialogRef.close(0);
101
97
  }
102
98
  }
103
99
  NgxMatEntityEditDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.Injector }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
104
- NgxMatEntityEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityEditDialogComponent, selector: "ngx-mat-entity-edit-dialog", ngImport: i0, template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel ? data.editDialogData.deleteButtonLabel : 'Delete'}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <ngx-mat-entity-input\n *ngFor=\"let key of entityKeys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{getWidth(data.entity, key, 'lg')}} col-md-{{getWidth(data.entity, key, 'md')}} col-sm-{{getWidth(data.entity, key, 'sm')}}\"\n >\n </ngx-mat-entity-input>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!EntityUtilities.isEntityValid(data.entity, 'edit') || !EntityUtilities.dirty(data.entity, entityPriorChanges)\">\n {{data.editDialogData.confirmButtonLabel ? data.editDialogData.confirmButtonLabel : 'Save'}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel ? data.editDialogData.cancelButtonLabel : 'Cancel'}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
100
+ NgxMatEntityEditDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NgxMatEntityEditDialogComponent, selector: "ngx-mat-entity-edit-dialog", ngImport: i0, template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{getWidth(data.entity, key, 'lg')}} col-md-{{getWidth(data.entity, key, 'md')}} col-sm-{{getWidth(data.entity, key, 'sm')}}\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!EntityUtilities.isEntityValid(data.entity, 'update') || !EntityUtilities.dirty(data.entity, entityPriorChanges)\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.NgxMatEntityInputComponent, selector: "ngx-mat-entity-input", inputs: ["entity", "propertyKey", "getValidationErrorMessage", "hideOmitForCreate", "hideOmitForEdit"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
105
101
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NgxMatEntityEditDialogComponent, decorators: [{
106
102
  type: Component,
107
- args: [{ selector: 'ngx-mat-entity-edit-dialog', template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel ? data.editDialogData.deleteButtonLabel : 'Delete'}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <ngx-mat-entity-input\n *ngFor=\"let key of entityKeys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{getWidth(data.entity, key, 'lg')}} col-md-{{getWidth(data.entity, key, 'md')}} col-sm-{{getWidth(data.entity, key, 'sm')}}\"\n >\n </ngx-mat-entity-input>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!EntityUtilities.isEntityValid(data.entity, 'edit') || !EntityUtilities.dirty(data.entity, entityPriorChanges)\">\n {{data.editDialogData.confirmButtonLabel ? data.editDialogData.confirmButtonLabel : 'Save'}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel ? data.editDialogData.cancelButtonLabel : 'Cancel'}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"] }]
103
+ args: [{ selector: 'ngx-mat-entity-edit-dialog', template: "<h2 mat-dialog-title>\n {{data.editDialogData.title(data.entity)}}\n <button *ngIf=\"data.allowDelete(data.entity)\" mat-raised-button (click)=\"delete()\" color=\"warn\" class=\"delete-button\" tabindex=\"-1\">\n {{data.editDialogData.deleteButtonLabel}}\n </button>\n</h2>\n\n<mat-dialog-content>\n <form #form=\"ngForm\" class=\"row\">\n <div class=\"row\" *ngFor=\"let row of entityRows\">\n <ngx-mat-entity-input\n *ngFor=\"let key of row.keys\"\n [entity]=\"data.entity\"\n [propertyKey]=\"key\"\n [hideOmitForEdit]=\"true\"\n class=\"col-lg-{{getWidth(data.entity, key, 'lg')}} col-md-{{getWidth(data.entity, key, 'md')}} col-sm-{{getWidth(data.entity, key, 'sm')}}\"\n >\n </ngx-mat-entity-input>\n </div>\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions>\n <button mat-raised-button (click)=\"edit()\" [disabled]=\"!EntityUtilities.isEntityValid(data.entity, 'update') || !EntityUtilities.dirty(data.entity, entityPriorChanges)\">\n {{data.editDialogData.confirmButtonLabel}}\n </button>\n <button mat-raised-button (click)=\"cancel()\" class=\"cancel-button\">\n {{data.editDialogData.cancelButtonLabel}}\n </button>\n</mat-dialog-actions>\n", styles: ["mat-dialog-actions{display:flex;justify-content:space-between}.delete-button{float:right}\n"] }]
108
104
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
109
105
  type: Inject,
110
106
  args: [MAT_DIALOG_DATA]
111
107
  }] }, { type: i1.MatDialogRef }, { type: i0.Injector }, { type: i1.MatDialog }]; } });
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUdwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7Ozs7OztBQVFuRyxNQUFNLE9BQVEsK0JBQStCO0lBV3pDLFlBRVcsSUFBc0MsRUFDdEMsU0FBb0UsRUFDMUQsUUFBa0IsRUFDbEIsTUFBaUI7UUFIM0IsU0FBSSxHQUFKLElBQUksQ0FBa0M7UUFDdEMsY0FBUyxHQUFULFNBQVMsQ0FBMkQ7UUFDMUQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBZnRDLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBUWxDLGFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO0lBUWhDLENBQUM7SUFFTCxRQUFRO1FBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxD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LENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUN4QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNPLGFBQWE7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxNQUFNO1FBQ0YsZUFBZSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7OzZIQXZHUywrQkFBK0Isa0JBWTdCLGVBQWU7aUhBWmpCLCtCQUErQixrRUNmN0MsNDFDQTRCQTs0RkRiYywrQkFBK0I7a0JBTDVDLFNBQVM7K0JBQ0ksNEJBQTRCOzswQkFnQmpDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS1zZXJ2aWNlLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5LW1vZGVsLmNsYXNzJztcbmltcG9ydCB7IEVudGl0eVV0aWxpdGllcyB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvZW50aXR5LXV0aWxpdGllcy5jbGFzcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURpYWxvZ0RhdGEgfSBmcm9tICcuL2VkaXQtZW50aXR5LWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1lZGl0LWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgIE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQ8RW50aXR5VHlwZSBleHRlbmRzIEVudGl0eT4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEVudGl0eVV0aWxpdGllcyA9IEVudGl0eVV0aWxpdGllcztcblxuICAgIGVudGl0eUtleXMhOiAoa2V5b2YgRW50aXR5VHlwZSlbXTtcblxuICAgIGVudGl0eVNlcnZpY2UhOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgZW50aXR5UHJpb3JDaGFuZ2VzITogRW50aXR5VHlwZTtcblxuICAgIGdldFdpZHRoID0gRW50aXR5VXRpbGl0aWVzLmdldFdpZHRoO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwdWJsaWMgZGF0YTogRWRpdEVudGl0eURpYWxvZ0RhdGE8RW50aXR5VHlwZT4sXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlFZGl0RGlhbG9nQ29tcG9uZW50PEVudGl0eVR5cGU+PixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBNYXREaWFsb2dcbiAgICApIHsgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2V0RW50aXR5S2V5cygpO1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgICAgICB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyA9IGNsb25lRGVlcCh0aGlzLmRhdGEuZW50aXR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEVudGl0eUtleXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW50aXR5S2V5cyA9IFJlZmxlY3Qub3duS2V5cyh0aGlzLmRhdGEuZW50aXR5KSBhcyAoa2V5b2YgRW50aXR5VHlwZSlbXTtcbiAgICAgICAgY29uc3Qgb21pdFVwZGF0ZUtleXMgPSBFbnRpdHlVdGlsaXRpZXMuZ2V0T21pdEZvclVwZGF0ZSh0aGlzLmRhdGEuZW50aXR5KTtcbiAgICAgICAgdGhpcy5lbnRpdHlLZXlzID0gdGhpcy5lbnRpdHlLZXlzLmZpbHRlcigoaykgPT4gIW9taXRVcGRhdGVLZXlzLmluY2x1ZGVzKGspKVxuICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IEVudGl0eVV0aWxpdGllcy5jb21wYXJlT3JkZXIoYSwgYiwgdGhpcy5kYXRhLmVudGl0eSkpO1xuICAgIH1cblxuICAgIGVkaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbmZpcm1FZGl0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgdGV4dDogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YT8udGV4dCA/IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGE/LnRleHQgOiBbJ0RvIHlvdSByZWFsbHkgd2FudCB0byBzYXZlIGFsbCBjaGFuZ2VzPyddLFxuICAgICAgICAgICAgdHlwZTogJ2RlZmF1bHQnLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgIGNvbmZpcm1CdXR0b25MYWJlbDogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YT8uY29uZmlybUJ1dHRvbkxhYmVsID8gdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YT8uY29uZmlybUJ1dHRvbkxhYmVsIDogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhPy5jYW5jZWxCdXR0b25MYWJlbCA/IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGE/LmNhbmNlbEJ1dHRvbkxhYmVsIDogJ0NhbmNlbCcsXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YT8udGl0bGUgPyB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhPy50aXRsZSA6ICdFZGl0JyxcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgICAgICByZXF1aXJlQ29uZmlybWF0aW9uOiB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhPy5yZXF1aXJlQ29uZmlybWF0aW9uID8gdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1FZGl0RGlhbG9nRGF0YT8ucmVxdWlyZUNvbmZpcm1hdGlvbiA6IGZhbHNlLFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGE/LmNvbmZpcm1hdGlvblRleHQgPyB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUVkaXREaWFsb2dEYXRhPy5jb25maXJtYXRpb25UZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dyZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9ncmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHByaXZhdGUgY29uZmlybUVkaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZS51cGRhdGUodGhpcy5kYXRhLmVudGl0eSwgdGhpcy5lbnRpdHlQcmlvckNoYW5nZXMpLnRoZW4oKCkgPT4gdGhpcy5kaWFsb2dSZWYuY2xvc2UoMSkpO1xuICAgIH1cblxuICAgIGRlbGV0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5kZWxldGVSZXF1aXJlc0NvbmZpcm1EaWFsb2cgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maXJtRGVsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGlhbG9nRGF0YTogQ29uZmlybURpYWxvZ0RhdGEgPSB7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgdGV4dDogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy50ZXh0ID8gdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy50ZXh0IDogWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZW50aXR5PyddLFxuICAgICAgICAgICAgdHlwZTogJ2RlbGV0ZScsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkxhYmVsOiB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybURlbGV0ZURpYWxvZ0RhdGE/LmNvbmZpcm1CdXR0b25MYWJlbCA/IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YT8uY29uZmlybUJ1dHRvbkxhYmVsIDogJ0RlbGV0ZScsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgY2FuY2VsQnV0dG9uTGFiZWw6IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YT8uY2FuY2VsQnV0dG9uTGFiZWwgPyB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybURlbGV0ZURpYWxvZ0RhdGE/LmNhbmNlbEJ1dHRvbkxhYmVsIDogJ0NhbmNlbCcsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgdGl0bGU6IHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YT8udGl0bGUgPyB0aGlzLmRhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybURlbGV0ZURpYWxvZ0RhdGE/LnRpdGxlIDogJ0RlbGV0ZScsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgcmVxdWlyZUNvbmZpcm1hdGlvbjogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy5yZXF1aXJlQ29uZmlybWF0aW9uID8gdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy5yZXF1aXJlQ29uZmlybWF0aW9uIDogZmFsc2UsXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy5jb25maXJtYXRpb25UZXh0ID8gdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPy5jb25maXJtYXRpb25UZXh0IDogdW5kZWZpbmVkLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkaWFsb2dyZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9ncmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgcHJpdmF0ZSBjb25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzLmlkKS50aGVuKCgpID0+IHRoaXMuZGlhbG9nUmVmLmNsb3NlKDIpKTtcbiAgICB9XG5cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIEVudGl0eVV0aWxpdGllcy5yZXNldENoYW5nZXNPbkVudGl0eSh0aGlzLmRhdGEuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcyk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKDApO1xuICAgIH1cbn0iLCI8aDIgbWF0LWRpYWxvZy10aXRsZT5cbiAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEudGl0bGUoZGF0YS5lbnRpdHkpfX1cbiAgICA8YnV0dG9uICpuZ0lmPVwiZGF0YS5hbGxvd0RlbGV0ZShkYXRhLmVudGl0eSlcIiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlKClcIiBjb2xvcj1cIndhcm5cIiBjbGFzcz1cImRlbGV0ZS1idXR0b25cIiB0YWJpbmRleD1cIi0xXCI+XG4gICAgICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS5kZWxldGVCdXR0b25MYWJlbCA/IGRhdGEuZWRpdERpYWxvZ0RhdGEuZGVsZXRlQnV0dG9uTGFiZWwgOiAnRGVsZXRlJ319XG4gICAgPC9idXR0b24+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxmb3JtICNmb3JtPVwibmdGb3JtXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPG5neC1tYXQtZW50aXR5LWlucHV0XG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIGVudGl0eUtleXNcIlxuICAgICAgICAgICAgW2VudGl0eV09XCJkYXRhLmVudGl0eVwiXG4gICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgIFtoaWRlT21pdEZvckVkaXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNvbC1sZy17e2dldFdpZHRoKGRhdGEuZW50aXR5LCBrZXksICdsZycpfX0gY29sLW1kLXt7Z2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ21kJyl9fSBjb2wtc20te3tnZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnc20nKX19XCJcbiAgICAgICAgPlxuICAgICAgICA8L25neC1tYXQtZW50aXR5LWlucHV0PlxuICAgIDwvZm9ybT5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImVkaXQoKVwiIFtkaXNhYmxlZF09XCIhRW50aXR5VXRpbGl0aWVzLmlzRW50aXR5VmFsaWQoZGF0YS5lbnRpdHksICdlZGl0JykgfHwgIUVudGl0eVV0aWxpdGllcy5kaXJ0eShkYXRhLmVudGl0eSwgZW50aXR5UHJpb3JDaGFuZ2VzKVwiPlxuICAgICAgICB7e2RhdGEuZWRpdERpYWxvZ0RhdGEuY29uZmlybUJ1dHRvbkxhYmVsID8gZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtQnV0dG9uTGFiZWwgOiAnU2F2ZSd9fVxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gKGNsaWNrKT1cImNhbmNlbCgpXCIgY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCI+XG4gICAgICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS5jYW5jZWxCdXR0b25MYWJlbCA/IGRhdGEuZWRpdERpYWxvZ0RhdGEuY2FuY2VsQnV0dG9uTGFiZWwgOiAnQ2FuY2VsJ319XG4gICAgPC9idXR0b24+XG48L21hdC1kaWFsb2ctYWN0aW9ucz5cbiJdfQ==
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRixPQUFPLEVBQWEsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVuQyxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRyxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sa0RBQWtELENBQUM7QUFDdkgsT0FBTyxFQUFFLDJCQUEyQixFQUFnQyxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7O0FBRXpHOzs7OztHQUtHO0FBTUgsTUFBTSxPQUFPLCtCQUErQjtJQWF4QyxZQUVxQixTQUEyQyxFQUNyRCxTQUFvRSxFQUMxRCxRQUFrQixFQUNsQixNQUFpQjtRQUhqQixjQUFTLEdBQVQsU0FBUyxDQUFrQztRQUNyRCxjQUFTLEdBQVQsU0FBUyxDQUEyRDtRQUMxRCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLFdBQU0sR0FBTixNQUFNLENBQVc7UUFqQnRDLG9CQUFlLEdBQUcsZUFBZSxDQUFDO1FBVWxDLGFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDO0lBUWpDLENBQUM7SUFFSixRQUFRO1FBQ0osSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN4RSxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvRSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQThCLENBQUM7UUFDbEcsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHlCQUF5QixFQUFFO1lBQ3JELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzdCO1FBQ0QsTUFBTSxVQUFVLEdBQThCLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7YUFDckgsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLHlDQUF5QyxDQUFDLENBQUM7YUFDaEUsV0FBVyxDQUFDLG9CQUFvQixFQUFFLE1BQU0sQ0FBQzthQUN6QyxXQUFXLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQzthQUM1QixTQUFTLEVBQUUsQ0FBQztRQUNqQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQ0FBa0MsRUFBRTtZQUNuRSxJQUFJLEVBQUUsVUFBVTtZQUNoQixTQUFTLEVBQUUsS0FBSztZQUNoQixZQUFZLEVBQUUsS0FBSztTQUN0QixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDOUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUN0QjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsRUFBRTtZQUN2RCxPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMvQjtRQUNELE1BQU0sVUFBVSxHQUE4QixJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHVCQUF1QixDQUFDO2FBQ3ZILFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO2FBQ2xFLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQzdCLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxRQUFRLENBQUM7YUFDM0MsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7YUFDOUIsU0FBUyxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLEVBQUU7WUFDbkUsSUFBSSxFQUFFLFVBQVU7WUFDaEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQVcsRUFBRSxFQUFFO1lBQzlDLElBQUksR0FBRyxLQUFLLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDeEI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxhQUFhO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDRixlQUFlLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7NkhBOUZRLCtCQUErQixrQkFjNUIsZUFBZTtpSEFkbEIsK0JBQStCLGtFQ3JCNUMsa3pDQThCQTs0RkRUYSwrQkFBK0I7a0JBTDNDLFNBQVM7K0JBQ0ksNEJBQTRCOzswQkFrQmpDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbmplY3RvciwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jbGFzc2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IEVudGl0eVJvdywgRW50aXR5VXRpbGl0aWVzIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9lbnRpdHkudXRpbGl0aWVzJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGlhbG9nRGF0YSB9IGZyb20gJy4vZWRpdC1lbnRpdHktZGlhbG9nLWRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIsIENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuLi8uLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgRWRpdEVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBFZGl0RW50aXR5RGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9lZGl0LWVudGl0eS1kaWFsb2cuYnVpbGRlcic7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgZGlhbG9nIHVzZWQgdG8gZWRpdCBhbiBleGlzdGluZyBlbnRpdHkgYmFzZWQgb24gdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGluIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi5cbiAqIFVzZWQgYnkgdGhlIG5neC1tYXQtZW50aXR5LXRhYmxlLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiRWRpdEVudGl0eURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1lZGl0LWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZW50aXR5LWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgRW50aXR5VXRpbGl0aWVzID0gRW50aXR5VXRpbGl0aWVzO1xuXG4gICAgZW50aXR5Um93cyE6IEVudGl0eVJvdzxFbnRpdHlUeXBlPltdO1xuXG4gICAgZW50aXR5U2VydmljZSE6IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG5cbiAgICBlbnRpdHlQcmlvckNoYW5nZXMhOiBFbnRpdHlUeXBlO1xuXG4gICAgZGF0YSE6IEVkaXRFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG5cbiAgICBnZXRXaWR0aCA9IEVudGl0eVV0aWxpdGllcy5nZXRXaWR0aDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSlcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dERhdGE6IEVkaXRFbnRpdHlEaWFsb2dEYXRhPEVudGl0eVR5cGU+LFxuICAgICAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudDxFbnRpdHlUeXBlPj4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nXG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF0YSA9IG5ldyBFZGl0RW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIodGhpcy5pbnB1dERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5kaXNhYmxlQ2xvc2UgPSB0cnVlO1xuICAgICAgICB0aGlzLmVudGl0eVJvd3MgPSBFbnRpdHlVdGlsaXRpZXMuZ2V0RW50aXR5Um93cyh0aGlzLmRhdGEuZW50aXR5LCBmYWxzZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZW50aXR5U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KHRoaXMuZGF0YS5FbnRpdHlTZXJ2aWNlQ2xhc3MpIGFzIEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG4gICAgICAgIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzID0gY2xvbmVEZWVwKHRoaXMuZGF0YS5lbnRpdHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWVzIHRvIHNhdmUgdGhlIGNoYW5nZXMgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBlZGl0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5lZGl0UmVxdWlyZXNDb25maXJtRGlhbG9nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb25maXJtRWRpdCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRWRpdERpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbJ0RvIHlvdSByZWFsbHkgd2FudCB0byBzYXZlIGFsbCBjaGFuZ2VzPyddKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCAnU2F2ZScpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgJ0VkaXQnKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgIGRhdGE6IGRpYWxvZ0RhdGEsXG4gICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgcmVzdG9yZUZvY3VzOiBmYWxzZVxuICAgICAgICB9KTtcbiAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcyA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybUVkaXQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRWRpdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lbnRpdHlTZXJ2aWNlLnVwZGF0ZSh0aGlzLmRhdGEuZW50aXR5LCB0aGlzLmVudGl0eVByaW9yQ2hhbmdlcykudGhlbigoKSA9PiB0aGlzLmRpYWxvZ1JlZi5jbG9zZSgxKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZXMgdG8gZGVsZXRlIHRoZSBlbnRpdHkgYW5kIGNsb3NlIHRoZSBkaWFsb2cgYWZ0ZXJ3YXJkcy5cbiAgICAgKiBBbHNvIGhhbmRsZXMgdGhlIGNvbmZpcm1hdGlvbiBpZiByZXF1aXJlZC5cbiAgICAgKi9cbiAgICBkZWxldGUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmVkaXREaWFsb2dEYXRhLmRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlybURlbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IENvbmZpcm1EaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZGF0YS5lZGl0RGlhbG9nRGF0YS5jb25maXJtRGVsZXRlRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIFsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGVudGl0eT8nXSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndHlwZScsICdkZWxldGUnKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCdjb25maXJtQnV0dG9uTGFiZWwnLCAnRGVsZXRlJylcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGl0bGUnLCAnRGVsZXRlJylcbiAgICAgICAgICAgIC5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzOiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT09IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpcm1EZWxldGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maXJtRGVsZXRlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZGVsZXRlKHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKS50aGVuKCgpID0+IHRoaXMuZGlhbG9nUmVmLmNsb3NlKDIpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXZlcnRzIGFsbCBjaGFuZ2VzIG1hZGUgYW5kIGNsb3NlcyB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGNhbmNlbCgpOiB2b2lkIHtcbiAgICAgICAgRW50aXR5VXRpbGl0aWVzLnJlc2V0Q2hhbmdlc09uRW50aXR5KHRoaXMuZGF0YS5lbnRpdHksIHRoaXMuZW50aXR5UHJpb3JDaGFuZ2VzKTtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoMCk7XG4gICAgfVxufSIsIjxoMiBtYXQtZGlhbG9nLXRpdGxlPlxuICAgIHt7ZGF0YS5lZGl0RGlhbG9nRGF0YS50aXRsZShkYXRhLmVudGl0eSl9fVxuICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmFsbG93RGVsZXRlKGRhdGEuZW50aXR5KVwiIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJkZWxldGUoKVwiIGNvbG9yPVwid2FyblwiIGNsYXNzPVwiZGVsZXRlLWJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIj5cbiAgICAgICAge3tkYXRhLmVkaXREaWFsb2dEYXRhLmRlbGV0ZUJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbjwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPGZvcm0gI2Zvcm09XCJuZ0Zvcm1cIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nRm9yPVwibGV0IHJvdyBvZiBlbnRpdHlSb3dzXCI+XG4gICAgICAgICAgICA8bmd4LW1hdC1lbnRpdHktaW5wdXRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQga2V5IG9mIHJvdy5rZXlzXCJcbiAgICAgICAgICAgICAgICBbZW50aXR5XT1cImRhdGEuZW50aXR5XCJcbiAgICAgICAgICAgICAgICBbcHJvcGVydHlLZXldPVwia2V5XCJcbiAgICAgICAgICAgICAgICBbaGlkZU9taXRGb3JFZGl0XT1cInRydWVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY29sLWxnLXt7Z2V0V2lkdGgoZGF0YS5lbnRpdHksIGtleSwgJ2xnJyl9fSBjb2wtbWQte3tnZXRXaWR0aChkYXRhLmVudGl0eSwga2V5LCAnbWQnKX19IGNvbC1zbS17e2dldFdpZHRoKGRhdGEuZW50aXR5LCBrZXksICdzbScpfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZ3gtbWF0LWVudGl0eS1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiZWRpdCgpXCIgW2Rpc2FibGVkXT1cIiFFbnRpdHlVdGlsaXRpZXMuaXNFbnRpdHlWYWxpZChkYXRhLmVudGl0eSwgJ3VwZGF0ZScpIHx8ICFFbnRpdHlVdGlsaXRpZXMuZGlydHkoZGF0YS5lbnRpdHksIGVudGl0eVByaW9yQ2hhbmdlcylcIj5cbiAgICAgICAge3tkYXRhLmVkaXREaWFsb2dEYXRhLmNvbmZpcm1CdXR0b25MYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImNhbmNlbC1idXR0b25cIj5cbiAgICAgICAge3tkYXRhLmVkaXREaWFsb2dEYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
@@ -0,0 +1,105 @@
1
+ import { CreateDialogDataBuilder } from './create-dialog/create-dialog-data.builder';
2
+ import { EditDialogDataBuilder } from './edit-dialog/edit-dialog-data.builder';
3
+ import { BaseBuilder } from '../../classes/base.builder';
4
+ /**
5
+ * The internal TableData. Requires all default values the user can leave out.
6
+ */
7
+ export class TableDataInternal {
8
+ constructor(baseData, createDialogData, editDialogData) {
9
+ this.baseData = baseData;
10
+ this.createDialogData = createDialogData;
11
+ this.editDialogData = editDialogData;
12
+ }
13
+ }
14
+ /**
15
+ * The Builder for the table BaseData. Sets default values.
16
+ */
17
+ export class BaseDataBuilder extends BaseBuilder {
18
+ constructor(data) {
19
+ super(data);
20
+ }
21
+ // eslint-disable-next-line jsdoc/require-jsdoc
22
+ generateBaseData(data) {
23
+ return new BaseDataInternal(data.title, data.displayColumns, data.EntityServiceClass, data.searchLabel ? data.searchLabel : 'Search', data.createButtonLabel ? data.createButtonLabel : 'Create', data.searchString ? data.searchString : defaultSearchFunction, data.allowCreate === false ? data.allowCreate : true, data.allowEdit ? data.allowEdit : () => true, data.allowDelete ? data.allowDelete : () => true, data.multiSelectActions ? data.multiSelectActions : [], data.multiSelectLabel ? data.multiSelectLabel : 'Actions', data.EntityClass, data.edit, data.create);
24
+ }
25
+ }
26
+ /**
27
+ * The internal TableData. Requires all default values the user can leave out.
28
+ */
29
+ export class BaseDataInternal {
30
+ constructor(title, displayColumns, EntityServiceClass, searchLabel, createButtonLabel, searchString, allowCreate, allowEdit, allowDelete, multiSelectActions, multiSelectLabel, EntityClass, edit, create) {
31
+ this.title = title;
32
+ this.displayColumns = displayColumns;
33
+ this.EntityServiceClass = EntityServiceClass;
34
+ this.EntityClass = EntityClass;
35
+ this.searchLabel = searchLabel;
36
+ this.createButtonLabel = createButtonLabel;
37
+ this.searchString = searchString;
38
+ this.allowCreate = allowCreate;
39
+ this.allowEdit = allowEdit;
40
+ this.allowDelete = allowDelete;
41
+ this.multiSelectActions = multiSelectActions;
42
+ this.multiSelectLabel = multiSelectLabel;
43
+ this.edit = edit;
44
+ this.create = create;
45
+ }
46
+ }
47
+ /**
48
+ * The Builder for the complete TableData. Sets default values and validates user input.
49
+ */
50
+ export class TableDataBuilder extends BaseBuilder {
51
+ constructor(data) {
52
+ super(data);
53
+ }
54
+ // eslint-disable-next-line jsdoc/require-jsdoc
55
+ generateBaseData(data) {
56
+ const createDialogData = new CreateDialogDataBuilder(data.createDialogData).getResult();
57
+ const editDialogData = new EditDialogDataBuilder(data.editDialogData).getResult();
58
+ const baseData = new BaseDataBuilder(data.baseData).getResult();
59
+ return new TableDataInternal(baseData, createDialogData, editDialogData);
60
+ }
61
+ // eslint-disable-next-line jsdoc/require-jsdoc
62
+ validateInput(data) {
63
+ if (data.baseData.multiSelectActions?.length && data.baseData.displayColumns.find(dp => dp.displayName === 'select')) {
64
+ throw new Error(`The name "select" for a display column is reserved for the multi-select action functionality.
65
+ Please choose a different name.`);
66
+ }
67
+ if ((data.baseData.allowEdit && data.baseData.allowEdit !== (() => false)
68
+ || data.baseData.allowDelete && data.baseData.allowDelete !== (() => false)
69
+ || data.baseData.allowCreate)
70
+ && !data.baseData.EntityClass) {
71
+ throw new Error(`
72
+ Missing required Input data "EntityClass".
73
+ You can only omit this value if you can neither create or update entities.`);
74
+ }
75
+ if (data.baseData.allowCreate !== false && !data.baseData.create && !data.createDialogData) {
76
+ throw new Error(`Missing required Input data "createDialogData".
77
+ You can only omit this value when creation is disallowed or done with a custom create method.`);
78
+ }
79
+ if ((data.baseData.allowEdit !== (() => false)
80
+ || data.baseData.allowDelete !== (() => false))
81
+ && !data.baseData.edit
82
+ && !data.editDialogData) {
83
+ throw new Error(`Missing required Input data "editDialogData".
84
+ You can only omit this value when editing and deleting is disallowed or done with a custom edit method.`);
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * The default search function taken from googles mat table.
90
+ * This will be used if no custom search function is provided by the configuration.
91
+ *
92
+ * It generates a string from an entity which is then used to compare it to the search input.
93
+ *
94
+ * @param entity - An entity that is in the search.
95
+ * @returns The generated string of the given entity used for comparison with the search input.
96
+ */
97
+ function defaultSearchFunction(entity) {
98
+ const searchString = Object.keys(entity)
99
+ .reduce((currentTerm, key) => {
100
+ return `${currentTerm}${entity[key]}◬`;
101
+ }, '')
102
+ .toLowerCase();
103
+ return searchString;
104
+ }
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLHVCQUF1QixFQUE0QixNQUFNLDRDQUE0QyxDQUFDO0FBQy9HLE9BQU8sRUFBRSxxQkFBcUIsRUFBMEIsTUFBTSx3Q0FBd0MsQ0FBQztBQUd2RyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHekQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBUTFCLFlBQ0ksUUFBc0MsRUFDdEMsZ0JBQTBDLEVBQzFDLGNBQWtEO1FBRWxELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN6QyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUEyQyxTQUFRLFdBQStEO0lBRTNILFlBQVksSUFBMEI7UUFDbEMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBMEI7UUFDakQsT0FBTyxJQUFJLGdCQUFnQixDQUN2QixJQUFJLENBQUMsS0FBSyxFQUNWLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUM5QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFDN0QsSUFBSSxDQUFDLFdBQVcsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksRUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUM1QyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQ2hELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQ3RELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQ3pELElBQUksQ0FBQyxXQUFXLEVBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FDZCxDQUFDO0lBQ04sQ0FBQztDQUNKO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBK0J6QixZQUNJLEtBQWEsRUFDYixjQUEyQyxFQUMzQyxrQkFBNkUsRUFDN0UsV0FBbUIsRUFDbkIsaUJBQXlCLEVBQ3pCLFlBQTRDLEVBQzVDLFdBQW9CLEVBQ3BCLFNBQTBDLEVBQzFDLFdBQTRDLEVBQzVDLGtCQUFtRCxFQUNuRCxnQkFBd0IsRUFFeEIsV0FBNEMsRUFDNUMsSUFBc0MsRUFDdEMsTUFBd0M7UUFFeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUE0QyxTQUFRLFdBQWlFO0lBRTlILFlBQVksSUFBMkI7UUFDbkMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCwrQ0FBK0M7SUFDckMsZ0JBQWdCLENBQUMsSUFBMkI7UUFDbEQsTUFBTSxnQkFBZ0IsR0FBNkIsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNsSCxNQUFNLGNBQWMsR0FBdUMsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdEgsTUFBTSxRQUFRLEdBQWlDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RixPQUFPLElBQUksaUJBQWlCLENBQ3hCLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIsY0FBYyxDQUNqQixDQUFDO0lBQ04sQ0FBQztJQUVELCtDQUErQztJQUM1QixhQUFhLENBQUMsSUFBMkI7UUFDeEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxLQUFLLFFBQVEsQ0FBQyxFQUFFO1lBQ2xILE1BQU0sSUFBSSxLQUFLLENBQ1g7Z0RBQ2dDLENBQ25DLENBQUM7U0FDTDtRQUNELElBQ0ksQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUNqRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FDL0I7ZUFDRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUMvQjtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUM7OzJGQUUrRCxDQUM5RSxDQUFDO1NBQ0w7UUFDRCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQ1g7OEdBQzhGLENBQ2pHLENBQUM7U0FDTDtRQUNELElBQ0ksQ0FDSSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQztlQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUNqRDtlQUNFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJO2VBQ25CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFDekI7WUFDRSxNQUFNLElBQUksS0FBSyxDQUNYO3dIQUN3RyxDQUMzRyxDQUFDO1NBQ0w7SUFDTCxDQUFDO0NBQ0o7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMscUJBQXFCLENBQTRCLE1BQWtCO0lBQ3hFLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBNEMsQ0FBQztTQUN6RSxNQUFNLENBQUMsQ0FBQyxXQUFtQixFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sR0FBRyxXQUFXLEdBQUksTUFBNkMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ25GLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDTCxXQUFXLEVBQUUsQ0FBQztJQUNuQixPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3JlYXRlRGlhbG9nRGF0YUJ1aWxkZXIsIENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RGlhbG9nRGF0YUJ1aWxkZXIsIEVkaXREaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRGF0YSwgRGlzcGxheUNvbHVtbiwgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UuYnVpbGRlcic7XG5pbXBvcnQgeyBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5cbi8qKlxuICogVGhlIGludGVybmFsIFRhYmxlRGF0YS4gUmVxdWlyZXMgYWxsIGRlZmF1bHQgdmFsdWVzIHRoZSB1c2VyIGNhbiBsZWF2ZSBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIFRhYmxlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE6IENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LFxuICAgICAgICBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEaWFsb2dEYXRhSW50ZXJuYWwsXG4gICAgICAgIGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuYmFzZURhdGEgPSBiYXNlRGF0YTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaWFsb2dEYXRhID0gY3JlYXRlRGlhbG9nRGF0YTtcbiAgICAgICAgdGhpcy5lZGl0RGlhbG9nRGF0YSA9IGVkaXREaWFsb2dEYXRhO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIHRhYmxlIEJhc2VEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBvYmplY3Q+IGV4dGVuZHMgQmFzZUJ1aWxkZXI8QmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiwgQmFzZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4pOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgZGF0YS50aXRsZSxcbiAgICAgICAgICAgIGRhdGEuZGlzcGxheUNvbHVtbnMsXG4gICAgICAgICAgICBkYXRhLkVudGl0eVNlcnZpY2VDbGFzcyxcbiAgICAgICAgICAgIGRhdGEuc2VhcmNoTGFiZWwgPyBkYXRhLnNlYXJjaExhYmVsIDogJ1NlYXJjaCcsXG4gICAgICAgICAgICBkYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsID8gZGF0YS5jcmVhdGVCdXR0b25MYWJlbCA6ICdDcmVhdGUnLFxuICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHJpbmcgPyBkYXRhLnNlYXJjaFN0cmluZyA6IGRlZmF1bHRTZWFyY2hGdW5jdGlvbixcbiAgICAgICAgICAgIGRhdGEuYWxsb3dDcmVhdGUgPT09IGZhbHNlID8gZGF0YS5hbGxvd0NyZWF0ZSA6IHRydWUsXG4gICAgICAgICAgICBkYXRhLmFsbG93RWRpdCA/IGRhdGEuYWxsb3dFZGl0IDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPyBkYXRhLmFsbG93RGVsZXRlIDogKCkgPT4gdHJ1ZSxcbiAgICAgICAgICAgIGRhdGEubXVsdGlTZWxlY3RBY3Rpb25zID8gZGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMgOiBbXSxcbiAgICAgICAgICAgIGRhdGEubXVsdGlTZWxlY3RMYWJlbCA/IGRhdGEubXVsdGlTZWxlY3RMYWJlbCA6ICdBY3Rpb25zJyxcbiAgICAgICAgICAgIGRhdGEuRW50aXR5Q2xhc3MsXG4gICAgICAgICAgICBkYXRhLmVkaXQsXG4gICAgICAgICAgICBkYXRhLmNyZWF0ZVxuICAgICAgICApO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIG9iamVjdD4gaW1wbGVtZW50cyBCYXNlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgc2VhcmNoTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBzZWFyY2hTdHJpbmc6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93Q3JlYXRlOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dFZGl0OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dEZWxldGU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtdWx0aVNlbGVjdEFjdGlvbnM6IE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+W107XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBtdWx0aVNlbGVjdExhYmVsOiBzdHJpbmdcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5Q2xhc3M/OiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXSxcbiAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiBuZXcgKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIHNlYXJjaExhYmVsOiBzdHJpbmcsXG4gICAgICAgIGNyZWF0ZUJ1dHRvbkxhYmVsOiBzdHJpbmcsXG4gICAgICAgIHNlYXJjaFN0cmluZzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgICAgICBhbGxvd0NyZWF0ZTogYm9vbGVhbixcbiAgICAgICAgYWxsb3dFZGl0OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgICAgICBhbGxvd0RlbGV0ZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAgICAgbXVsdGlTZWxlY3RBY3Rpb25zOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdLFxuICAgICAgICBtdWx0aVNlbGVjdExhYmVsOiBzdHJpbmcsXG5cbiAgICAgICAgRW50aXR5Q2xhc3M/OiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT4sXG4gICAgICAgIGVkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgICAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duLFxuICAgICkge1xuICAgICAgICB0aGlzLnRpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkaXNwbGF5Q29sdW1ucztcbiAgICAgICAgdGhpcy5FbnRpdHlTZXJ2aWNlQ2xhc3MgPSBFbnRpdHlTZXJ2aWNlQ2xhc3M7XG4gICAgICAgIHRoaXMuRW50aXR5Q2xhc3MgPSBFbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5zZWFyY2hMYWJlbCA9IHNlYXJjaExhYmVsO1xuICAgICAgICB0aGlzLmNyZWF0ZUJ1dHRvbkxhYmVsID0gY3JlYXRlQnV0dG9uTGFiZWw7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nO1xuICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gYWxsb3dDcmVhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dFZGl0ID0gYWxsb3dFZGl0O1xuICAgICAgICB0aGlzLmFsbG93RGVsZXRlID0gYWxsb3dEZWxldGU7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RBY3Rpb25zID0gbXVsdGlTZWxlY3RBY3Rpb25zO1xuICAgICAgICB0aGlzLm11bHRpU2VsZWN0TGFiZWwgPSBtdWx0aVNlbGVjdExhYmVsO1xuICAgICAgICB0aGlzLmVkaXQgPSBlZGl0O1xuICAgICAgICB0aGlzLmNyZWF0ZSA9IGNyZWF0ZTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIEJ1aWxkZXIgZm9yIHRoZSBjb21wbGV0ZSBUYWJsZURhdGEuIFNldHMgZGVmYXVsdCB2YWx1ZXMgYW5kIHZhbGlkYXRlcyB1c2VyIGlucHV0LlxuICovXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhQnVpbGRlcjxFbnRpdHlUeXBlIGV4dGVuZHMgb2JqZWN0PiBleHRlbmRzIEJhc2VCdWlsZGVyPFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBUYWJsZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENyZWF0ZURpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuY3JlYXRlRGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGVkaXREaWFsb2dEYXRhOiBFZGl0RGlhbG9nRGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXREaWFsb2dEYXRhQnVpbGRlcihkYXRhLmVkaXREaWFsb2dEYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQmFzZURhdGFCdWlsZGVyKGRhdGEuYmFzZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgYmFzZURhdGEsXG4gICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnM/Lmxlbmd0aCAmJiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLmZpbmQoZHAgPT4gZHAuZGlzcGxheU5hbWUgPT09ICdzZWxlY3QnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgbmFtZSBcInNlbGVjdFwiIGZvciBhIGRpc3BsYXkgY29sdW1uIGlzIHJlc2VydmVkIGZvciB0aGUgbXVsdGktc2VsZWN0IGFjdGlvbiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgICAgIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICBkYXRhLmJhc2VEYXRhLmFsbG93RWRpdCAmJiBkYXRhLmJhc2VEYXRhLmFsbG93RWRpdCAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUgJiYgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGVcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICYmICFkYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcbiAgICAgICAgICAgICAgICBNaXNzaW5nIHJlcXVpcmVkIElucHV0IGRhdGEgXCJFbnRpdHlDbGFzc1wiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgaWYgeW91IGNhbiBuZWl0aGVyIGNyZWF0ZSBvciB1cGRhdGUgZW50aXRpZXMuYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSAhPT0gZmFsc2UgJiYgIWRhdGEuYmFzZURhdGEuY3JlYXRlICYmICFkYXRhLmNyZWF0ZURpYWxvZ0RhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBJbnB1dCBkYXRhIFwiY3JlYXRlRGlhbG9nRGF0YVwiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgd2hlbiBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkIG9yIGRvbmUgd2l0aCBhIGN1c3RvbSBjcmVhdGUgbWV0aG9kLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGRhdGEuYmFzZURhdGEuYWxsb3dFZGl0ICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd0RlbGV0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgJiYgIWRhdGEuYmFzZURhdGEuZWRpdFxuICAgICAgICAgICAgJiYgIWRhdGEuZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgSW5wdXQgZGF0YSBcImVkaXREaWFsb2dEYXRhXCIuXG4gICAgICAgICAgICAgICAgWW91IGNhbiBvbmx5IG9taXQgdGhpcyB2YWx1ZSB3aGVuIGVkaXRpbmcgYW5kIGRlbGV0aW5nIGlzIGRpc2FsbG93ZWQgb3IgZG9uZSB3aXRoIGEgY3VzdG9tIGVkaXQgbWV0aG9kLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgc2VhcmNoIGZ1bmN0aW9uIHRha2VuIGZyb20gZ29vZ2xlcyBtYXQgdGFibGUuXG4gKiBUaGlzIHdpbGwgYmUgdXNlZCBpZiBubyBjdXN0b20gc2VhcmNoIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLlxuICpcbiAqIEl0IGdlbmVyYXRlcyBhIHN0cmluZyBmcm9tIGFuIGVudGl0eSB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY29tcGFyZSBpdCB0byB0aGUgc2VhcmNoIGlucHV0LlxuICpcbiAqIEBwYXJhbSBlbnRpdHkgLSBBbiBlbnRpdHkgdGhhdCBpcyBpbiB0aGUgc2VhcmNoLlxuICogQHJldHVybnMgVGhlIGdlbmVyYXRlZCBzdHJpbmcgb2YgdGhlIGdpdmVuIGVudGl0eSB1c2VkIGZvciBjb21wYXJpc29uIHdpdGggdGhlIHNlYXJjaCBpbnB1dC5cbiAqL1xuZnVuY3Rpb24gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uPEVudGl0eVR5cGUgZXh0ZW5kcyBvYmplY3Q+KGVudGl0eTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VhcmNoU3RyaW5nID0gT2JqZWN0LmtleXMoZW50aXR5IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pXG4gICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Y3VycmVudFRlcm19JHsoZW50aXR5IGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV194pesYDtcbiAgICAgICAgfSwgJycpXG4gICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBzZWFyY2hTdHJpbmc7XG59Il19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHktbW9kZWwuY2xhc3MnXG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHktc2VydmljZS5jbGFzcydcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSdcblxuLyoqXG4gKiBUaGUgRGVmaW5pdGlvbiBvZiBhIENvbHVtbiBpbnNpZGUgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlDb2x1bW48RW50aXR5VHlwZSBleHRlbmRzIEVudGl0eT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGluc2lkZSB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZSBpbnNpZGUgYW4gcm93XG4gICAgICovXG4gICAgdmFsdWU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZ1xufVxuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIGFuIEFjdGlvbiB0aGF0IGNhbiBiZSBydW4gb24gbXVsdGlwbGUgc2VsZWN0ZWQgZW50aXRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlIGV4dGVuZHMgRW50aXR5PiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvblxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGFjdGlvbiBpdHNlbGZcbiAgICAgKi9cbiAgICBhY3Rpb246IChzZWxlY3RlZEVudGl0aWVzOiBFbnRpdHlUeXBlW10pID0+IHVua25vd24sXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBkZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSBhY3Rpb24gY2FuIGJlIHVzZWQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBhIGNvbmZpcm0gZGlhbG9nIGlzIG5lZWRlZCB0byBydW4gdGhlIGFjdGlvblxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVxdWlyZUNvbmZpcm1EaWFsb2c/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgbXVsdGlzZWxlY3QgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgRW50aXR5PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSB0YWJsZVxuICAgICAqL1xuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmluaXRpb24gb2YgdGhlIGNvbHVtbnMgdG8gZGlzcGxheS4gQ29uc2lzdHMgb2YgdGhlIGRpc3BsYXlOYW1lIHRvIHNob3cgaW4gdGhlIGhlYWRlciBvZiB0aGUgcm93XG4gICAgICogYW5kIHRoZSB2YWx1ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbiB0aGF0IGdlbmVyYXRlcyB0aGUgdmFsdWUgdG8gZGlzcGxheSBpbnNpZGUgYSBjb2x1bW5cbiAgICAgKi9cbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgc2VhcmNoIGJhci4gRGVmYXVsdHMgdG8gXCJTZWFyY2hcIi5cbiAgICAgKi9cbiAgICBzZWFyY2hMYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIG5ldyBlbnRpdGllcy4gRGVmYXVsdHMgdG8gXCJDcmVhdGVcIi5cbiAgICAgKi9cbiAgICBjcmVhdGVCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgQ2xhc3Mgb2YgdGhlIGVudGl0aWVzIHRvIG1hbmFnZVxuICAgICAqL1xuICAgIEVudGl0eUNsYXNzOiBuZXcgKGVudGl0eT86IEVudGl0eVR5cGUpID0+IEVudGl0eVR5cGUsXG4gICAgLyoqXG4gICAgICogVGhlIENsYXNzIG9mIHRoZSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyB0aGUgZW50aXRpZXMuXG4gICAgICogTmVlZHMgdG8gYmUgaW5qZWN0YWJsZSBhbmQgYW4gZXh0ZW5zaW9uIG9mIHRoZSBcIkVudGl0eVNlcnZpY2VcIi1DbGFzc1xuICAgICAqL1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+LFxuICAgIC8qKlxuICAgICAqIFRha2VzIGEgY3VzdG9tIGVkaXQgbWV0aG9kIHdoaWNoIHJ1bnMgd2hlbiB5b3UgY2xpY2sgb24gYSBlbnRpdHkuXG4gICAgICogSWYgeW91IGRvbid0IG5lZWQgYW55IHNwZWNpYWwgZWRpdGluZyBvZiBlbnRyaWVzIHlvdSBjYW4gYWxzbyBvbWl0IHRoaXMuXG4gICAgICogSW4gdGhhdCBjYXNlIGEgZGVmYXVsdCBlZGl0IGRpYWxvZyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd24sXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBtZXRob2QgdG8gcnVuIHdoZW4geW91IGNsaWNrIG9uIHRoZSBuZXcgYnV0dG9uLlxuICAgICAqIElmIHlvdSBkb24ndCBuZWVkIGFueXRoaW5nIHNwZWNpYWwgeW91IGNhbiBhbHNvIG9taXQgdGhpcy5cbiAgICAgKiBJbiB0aGF0IGNhc2UgYSBkZWZhdWx0IGNyZWF0ZSBkaWFsb2cgaXMgZ2VuZXJhdGVkLlxuICAgICAqL1xuICAgIGNyZWF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd24sXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBob3cgdGhlIHNlYXJjaCBzdHJpbmcgb2YgZW50aXRpZXMgaXMgZ2VuZXJhdGVkLlxuICAgICAqL1xuICAgIHNlYXJjaFN0cmluZz86IChlbml0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGFkZCBuZXcgZW50aXRpZXMuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGFsbG93Q3JlYXRlPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBlZGl0IGVudGl0aWVzLlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd0VkaXQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBkZWxldGUgdGhpcyBzcGVjaWZpYyBlbnRpdHlcbiAgICAgKi9cbiAgICBhbGxvd0RlbGV0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogQWxsIEFjdGlvbnMgdGhhdCB5b3Ugd2FudCB0byBydW4gb24gbXVsdGlwbGUgZW50aXRpZXMgY2FuIGJlIGRlZmluZWQgaGVyZS5cbiAgICAgKiAoZS5nLiBkb3dubG9hZCBhcyB6aXAtZmlsZSBvciBtYXNzIGRlbGV0ZSlcbiAgICAgKi9cbiAgICBtdWx0aVNlbGVjdEFjdGlvbnM/OiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdLFxuICAgIC8qKlxuICAgICAqIFRoZSBMYWJlbCBmb3IgdGhlIGJ1dHRvbiB0aGF0IG9wZW5zIGFsbCBtdWx0aS1hY3Rpb25zLlxuICAgICAqL1xuICAgIG11bHRpU2VsZWN0TGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVEaWFsb2dEYXRhIHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY3JlYXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkNyZWF0ZVwiLlxuICAgICAqL1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3JlYXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgY3JlYXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQ3JlYXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdERpYWxvZ0RhdGE8RW50aXR5VHlwZSBleHRlbmRzIEVudGl0eT4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY29uZmlybS1idXR0b24gb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuIERlZmF1bHRzIHRvIFwiU2F2ZVwiLlxuICAgICAqL1xuICAgIGNvbmZpcm1CdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGRlbGV0ZS1idXR0b24gb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuIERlZmF1bHRzIHRvIFwiRGVsZXRlXCIuXG4gICAgICovXG4gICAgZGVsZXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBjYW5jZWwtYnV0dG9uIGZvciB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZGVsZXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBkZWxldGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBlZGl0aW5nIG9mIGFuIGVudHJ5IHNob3VsZCByZXF1aXJlIGEgY29uZmlybSBkaWFsb2cuXG4gICAgICovXG4gICAgZWRpdFJlcXVpcmVzQ29uZmlybURpYWxvZz86IGJvb2xlYW4sXG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIHRvIGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIGRpYWxvZyBmb3IgdGhlIGRlbGV0ZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybURlbGV0ZURpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YSxcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRWRpdERpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0aWVzRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgRW50aXR5PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZGF0YSBmb3IgdGhlIGVudGl0aWVzLWNvbXBvbmVudC5cbiAgICAgKiBJbmNsdWRlcyBzdHVmZiBsaWtlIHRoZSB0aXRsZSBmb3IgdGhlIHRhYmxlLCB3aGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSByb3dzIGV0Yy5cbiAgICAgKi9cbiAgICBiYXNlRGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiY3JlYXRlXCIgbWV0aG9kIGluc2lkZSB0aGUgYmFzZURhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRGlhbG9nRGF0YT86IENyZWF0ZURpYWxvZ0RhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gc3BlY2lmeWluZyBhIGN1c3RvbSBcImVkaXRcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RGlhbG9nRGF0YT86IEVkaXREaWFsb2dEYXRhPEVudGl0eVR5cGU+XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5LnNlcnZpY2UnXG5pbXBvcnQgeyBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCdcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2ctZGF0YSdcblxuLyoqXG4gKiBUaGUgRGVmaW5pdGlvbiBvZiBhIENvbHVtbiBpbnNpZGUgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlDb2x1bW48RW50aXR5VHlwZSBleHRlbmRzIG9iamVjdD4ge1xuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIGluc2lkZSB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZSBpbnNpZGUgYW4gcm93LlxuICAgICAqL1xuICAgIHZhbHVlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmdcbn1cblxuLyoqXG4gKiBUaGUgRGVmaW5pdGlvbiBvZiBhbiBBY3Rpb24gdGhhdCBjYW4gYmUgcnVuIG9uIG11bHRpcGxlIHNlbGVjdGVkIGVudGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGUgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGFjdGlvbiBpdHNlbGYuXG4gICAgICovXG4gICAgYWN0aW9uOiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiB1bmtub3duLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCB0aGUgYWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgZGVmaW5lcyB3aGV0aGVyIG9yIG5vdCBhIGNvbmZpcm0gZGlhbG9nIGlzIG5lZWRlZCB0byBydW4gdGhlIGFjdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgcmVxdWlyZUNvbmZpcm1EaWFsb2c/OiAoc2VsZWN0ZWRFbnRpdGllczogRW50aXR5VHlwZVtdKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgbXVsdGlTZWxlY3QgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBkYXRhIG9mIHRoZSBuZ3gtbWF0LWVudGl0eS10YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlRGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgb2JqZWN0PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuIENvbnNpc3RzIG9mIHRoZSBkaXNwbGF5TmFtZSB0byBzaG93IGluIHRoZSBoZWFkZXIgb2YgdGhlIHJvd1xuICAgICAqIGFuZCB0aGUgdmFsdWUsIHdoaWNoIGlzIGEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW5zaWRlIGEgY29sdW1uLlxuICAgICAqL1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W10sXG4gICAgLyoqXG4gICAgICogVGhlIENsYXNzIG9mIHRoZSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyB0aGUgZW50aXRpZXMuXG4gICAgICogTmVlZHMgdG8gYmUgaW5qZWN0YWJsZSBhbmQgYW4gZXh0ZW5zaW9uIG9mIHRoZSBcIkVudGl0eVNlcnZpY2VcIi1DbGFzcy5cbiAgICAgKi9cbiAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgQ2xhc3Mgb2YgdGhlIGVudGl0aWVzIHRvIG1hbmFnZS5cbiAgICAgKi9cbiAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIHNlYXJjaCBiYXIuIERlZmF1bHRzIHRvIFwiU2VhcmNoXCIuXG4gICAgICovXG4gICAgc2VhcmNoTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBidXR0b24gZm9yIGFkZGluZyBuZXcgZW50aXRpZXMuIERlZmF1bHRzIHRvIFwiQ3JlYXRlXCIuXG4gICAgICovXG4gICAgY3JlYXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBjdXN0b20gZWRpdCBtZXRob2Qgd2hpY2ggcnVucyB3aGVuIHlvdSBjbGljayBvbiBhIGVudGl0eS5cbiAgICAgKiBJZiB5b3UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCBlZGl0aW5nIG9mIGVudHJpZXMgeW91IGNhbiBhbHNvIG9taXQgdGhpcy5cbiAgICAgKiBJbiB0aGF0IGNhc2UgYSBkZWZhdWx0IGVkaXQgZGlhbG9nIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBlZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1ldGhvZCB0byBydW4gd2hlbiB5b3UgY2xpY2sgb24gdGhlIG5ldyBidXR0b24uXG4gICAgICogSWYgeW91IGRvbid0IG5lZWQgYW55dGhpbmcgc3BlY2lhbCB5b3UgY2FuIGFsc28gb21pdCB0aGlzLlxuICAgICAqIEluIHRoYXQgY2FzZSBhIGRlZmF1bHQgY3JlYXRlIGRpYWxvZyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgY3JlYXRlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgc2VhcmNoIHN0cmluZyBvZiBlbnRpdGllcyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgc2VhcmNoU3RyaW5nPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGFkZCBuZXcgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGU/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGVkaXQgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dFZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gZGVsZXRlIHRoaXMgc3BlY2lmaWMgZW50aXR5LlxuICAgICAqL1xuICAgIGFsbG93RGVsZXRlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBbGwgQWN0aW9ucyB0aGF0IHlvdSB3YW50IHRvIHJ1biBvbiBtdWx0aXBsZSBlbnRpdGllcyBjYW4gYmUgZGVmaW5lZCBoZXJlLlxuICAgICAqIChlLmcuIERvd25sb2FkIGFzIHppcC1maWxlIG9yIG1hc3MgZGVsZXRlKS5cbiAgICAgKi9cbiAgICBtdWx0aVNlbGVjdEFjdGlvbnM/OiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdLFxuICAgIC8qKlxuICAgICAqIFRoZSBMYWJlbCBmb3IgdGhlIGJ1dHRvbiB0aGF0IG9wZW5zIGFsbCBtdWx0aS1hY3Rpb25zLlxuICAgICAqL1xuICAgIG11bHRpU2VsZWN0TGFiZWw/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBUaGUgZGF0YSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZURpYWxvZ0RhdGEge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY3JlYXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkNyZWF0ZVwiLlxuICAgICAqL1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3JlYXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgY3JlYXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQ3JlYXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdERpYWxvZ0RhdGE8RW50aXR5VHlwZSBleHRlbmRzIG9iamVjdD4ge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZy5cbiAgICAgKi9cbiAgICB0aXRsZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIGNvbmZpcm0tYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLiBEZWZhdWx0cyB0byBcIlNhdmVcIi5cbiAgICAgKi9cbiAgICBjb25maXJtQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBkZWxldGUtYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkRlbGV0ZVwiLlxuICAgICAqL1xuICAgIGRlbGV0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuIERlZmF1bHRzIHRvIFwiQ2FuY2VsXCIuXG4gICAgICovXG4gICAgY2FuY2VsQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGRlbGV0aW9uIG9mIGFuIGVudHJ5IHNob3VsZCByZXF1aXJlIGEgY29uZmlybSBkaWFsb2cuXG4gICAgICovXG4gICAgZGVsZXRlUmVxdWlyZXNDb25maXJtRGlhbG9nPzogYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgZWRpdGluZyBvZiBhbiBlbnRyeSBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIGVkaXRSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBkZWxldGUgYWN0aW9uLlxuICAgICAqL1xuICAgIGNvbmZpcm1EZWxldGVEaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGEsXG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIHRvIGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIGRpYWxvZyBmb3IgdGhlIGRlbGV0ZSBhY3Rpb24uXG4gICAgICovXG4gICAgY29uZmlybUVkaXREaWFsb2dEYXRhPzogQ29uZmlybURpYWxvZ0RhdGFcbn1cblxuLyoqXG4gKiBBbGwgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSByZXF1aXJlZCB0byBkaXNwbGF5IGEgbmd4LW1hdC1lbnRpdHktdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVEYXRhPEVudGl0eVR5cGUgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBkYXRhIGZvciB0aGUgdGFibGUtY29tcG9uZW50LlxuICAgICAqIEluY2x1ZGVzIHN0dWZmIGxpa2UgdGhlIHRpdGxlIGZvciB0aGUgdGFibGUsIHdoYXQgdG8gZGlzcGxheSBpbnNpZGUgdGhlIHJvd3MgZXRjLlxuICAgICAqL1xuICAgIGJhc2VEYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKiBDYW4gYmUgb21pdHRlZCB3aGVuIHNwZWNpZnlpbmcgYSBjdXN0b20gXCJjcmVhdGVcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBjcmVhdGVEaWFsb2dEYXRhPzogQ3JlYXRlRGlhbG9nRGF0YSxcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiZWRpdFwiIG1ldGhvZCBpbnNpZGUgdGhlIGJhc2VEYXRhLlxuICAgICAqL1xuICAgIGVkaXREaWFsb2dEYXRhPzogRWRpdERpYWxvZ0RhdGE8RW50aXR5VHlwZT5cbn0iXX0=