ngx-material-entity 15.1.5 → 15.1.7

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 (54) hide show
  1. package/classes/base.builder.d.ts +2 -0
  2. package/components/input/input.component.d.ts +141 -18
  3. package/components/input/input.module.d.ts +4 -1
  4. package/components/table/table-data.builder.d.ts +15 -4
  5. package/components/table/table-data.d.ts +4 -4
  6. package/decorators/array/array-decorator-internal.data.d.ts +12 -1
  7. package/decorators/array/array-decorator.data.d.ts +27 -5
  8. package/decorators/base/decorator-types.enum.d.ts +3 -1
  9. package/decorators/has-many/has-many-decorator-internal.data.d.ts +17 -0
  10. package/decorators/has-many/has-many-decorator.data.d.ts +38 -0
  11. package/decorators/has-many/has-many.decorator.d.ts +9 -0
  12. package/encapsulation/lodash.utilities.d.ts +2 -2
  13. package/esm2020/classes/base.builder.mjs +3 -1
  14. package/esm2020/classes/entity.model.mjs +2 -3
  15. package/esm2020/components/confirm-dialog/confirm-dialog-data.builder.mjs +3 -3
  16. package/esm2020/components/edit-page/page-edit-data.builder.mjs +4 -4
  17. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +3 -3
  18. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +3 -3
  19. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +3 -3
  20. package/esm2020/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
  21. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  22. package/esm2020/components/input/input.component.mjs +469 -71
  23. package/esm2020/components/input/input.module.mjs +16 -4
  24. package/esm2020/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +3 -3
  25. package/esm2020/components/input/relations/references-many-input/references-many-input.component.mjs +3 -3
  26. package/esm2020/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +3 -3
  27. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +3 -3
  28. package/esm2020/components/table/edit-dialog/edit-entity.builder.mjs +3 -3
  29. package/esm2020/components/table/table-data.builder.mjs +48 -50
  30. package/esm2020/components/table/table-data.mjs +1 -1
  31. package/esm2020/components/table/table.component.mjs +3 -3
  32. package/esm2020/decorators/array/array-decorator-internal.data.mjs +13 -1
  33. package/esm2020/decorators/array/array-decorator.data.mjs +1 -1
  34. package/esm2020/decorators/base/decorator-types.enum.mjs +2 -1
  35. package/esm2020/decorators/custom/custom-decorator-internal.data.mjs +3 -2
  36. package/esm2020/decorators/has-many/has-many-decorator-internal.data.mjs +32 -0
  37. package/esm2020/decorators/has-many/has-many-decorator.data.mjs +2 -0
  38. package/esm2020/decorators/has-many/has-many.decorator.mjs +13 -0
  39. package/esm2020/encapsulation/lodash.utilities.mjs +1 -1
  40. package/esm2020/public-api.mjs +3 -1
  41. package/esm2020/services/entity.service.mjs +31 -13
  42. package/esm2020/utilities/entity.utilities.mjs +57 -12
  43. package/fesm2015/ngx-material-entity.mjs +686 -198
  44. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  45. package/fesm2020/ngx-material-entity.mjs +672 -193
  46. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/public-api.d.ts +2 -0
  49. package/services/entity.service.d.ts +19 -4
  50. package/utilities/entity.utilities.d.ts +16 -1
  51. package/components/input/add-array-item-dialog-data.builder.d.ts +0 -22
  52. package/components/input/add-array-item-dialog-data.d.ts +0 -20
  53. package/esm2020/components/input/add-array-item-dialog-data.builder.mjs +0 -38
  54. package/esm2020/components/input/add-array-item-dialog-data.mjs +0 -2
@@ -1,4 +1,4 @@
1
- import { BaseBuilder } from '../../classes/base.builder';
1
+ import { BaseBuilder, defaultFalse, defaultTrue } from '../../classes/base.builder';
2
2
  import { ConfirmDialogDataBuilder } from '../confirm-dialog/confirm-dialog-data.builder';
3
3
  import { CreateDialogDataBuilder } from './create-dialog/create-dialog-data.builder';
4
4
  import { EditDialogDataBuilder } from './edit-dialog/edit-data.builder';
@@ -21,38 +21,50 @@ export class BaseDataBuilder extends BaseBuilder {
21
21
  }
22
22
  // eslint-disable-next-line jsdoc/require-jsdoc
23
23
  generateBaseData(data) {
24
- return new BaseDataInternal(data.title, data.displayColumns, data.EntityServiceClass, data.searchLabel ?? 'Search', data.createButtonLabel ?? 'Create', data.defaultEdit ?? 'dialog', data.searchString ?? defaultSearchFunction, data.allowCreate ?? (() => true), data.allowRead ?? (() => true), data.allowUpdate ?? (() => true), data.allowDelete ?? (() => true), data.multiSelectActions ?? [], data.multiSelectLabel ?? 'Actions', data.displayLoadingSpinner ?? true, data.allowJsonImport ?? false, data.importActionData ?? {
25
- displayName: 'Import (JSON)',
26
- confirmDialogData: new ConfirmDialogDataBuilder()
27
- .withDefault('text', ['Do you really want to import entities from the provided file?'])
28
- .getResult()
29
- }, data.EntityClass, data.edit, data.create);
24
+ return new BaseDataInternal(data);
30
25
  }
31
26
  }
32
27
  /**
33
28
  * The internal TableData. Requires all default values the user can leave out.
34
29
  */
35
30
  export class BaseDataInternal {
36
- constructor(title, displayColumns, EntityServiceClass, searchLabel, createButtonLabel, defaultEdit, searchString, allowCreate, allowRead, allowUpdate, allowDelete, multiSelectActions, multiSelectLabel, displayLoadingSpinner, allowJsonImport, importActionData, EntityClass, edit, create) {
37
- this.title = title;
38
- this.displayColumns = displayColumns;
39
- this.EntityServiceClass = EntityServiceClass;
40
- this.EntityClass = EntityClass;
41
- this.searchLabel = searchLabel;
42
- this.createButtonLabel = createButtonLabel;
43
- this.defaultEdit = defaultEdit;
44
- this.searchString = searchString;
45
- this.allowCreate = allowCreate;
46
- this.allowRead = allowRead;
47
- this.allowUpdate = allowUpdate;
48
- this.allowDelete = allowDelete;
49
- this.multiSelectActions = multiSelectActions;
50
- this.multiSelectLabel = multiSelectLabel;
51
- this.displayLoadingSpinner = displayLoadingSpinner;
52
- this.allowJsonImport = allowJsonImport;
53
- this.importActionData = importActionData;
54
- this.edit = edit;
55
- this.create = create;
31
+ constructor(data) {
32
+ this.title = data.title;
33
+ this.displayColumns = data.displayColumns;
34
+ this.EntityServiceClass = data.EntityServiceClass;
35
+ this.EntityClass = data.EntityClass;
36
+ this.searchLabel = data.searchLabel ?? 'Search';
37
+ this.createButtonLabel = data.createButtonLabel ?? 'Create';
38
+ this.defaultEdit = data.defaultEdit ?? 'dialog';
39
+ this.searchString = data.searchString ?? defaultSearchFunction;
40
+ this.multiSelectActions = data.multiSelectActions ?? [];
41
+ this.multiSelectLabel = data.multiSelectLabel ?? 'Actions';
42
+ this.displayLoadingSpinner = data.displayLoadingSpinner ?? true;
43
+ this.allowJsonImport = data.allowJsonImport ?? false;
44
+ this.importActionData = data.importActionData ?? {
45
+ displayName: 'Import (JSON)',
46
+ confirmDialogData: new ConfirmDialogDataBuilder()
47
+ .withDefault('text', ['Do you really want to import entities from the provided file?'])
48
+ .getResult()
49
+ };
50
+ this.edit = data.edit;
51
+ this.create = data.create;
52
+ this.allowCreate = this.allowDataToFunction(data.allowCreate);
53
+ this.allowRead = this.allowDataToFunction(data.allowRead);
54
+ this.allowUpdate = this.allowDataToFunction(data.allowUpdate);
55
+ this.allowDelete = this.allowDataToFunction(data.allowDelete);
56
+ }
57
+ allowDataToFunction(value) {
58
+ if (value == null) {
59
+ return defaultTrue;
60
+ }
61
+ if (typeof value == 'boolean') {
62
+ if (value) {
63
+ return defaultTrue;
64
+ }
65
+ return defaultFalse;
66
+ }
67
+ return value;
56
68
  }
57
69
  }
58
70
  /**
@@ -75,27 +87,13 @@ export class TableDataBuilder extends BaseBuilder {
75
87
  throw new Error(`The name "select" for a display column is reserved for the multi-select action functionality.
76
88
  Please choose a different name.`);
77
89
  }
78
- if ((data.baseData.allowCreate !== (() => false)
79
- || data.baseData.allowRead !== (() => false)
80
- || data.baseData.allowUpdate !== (() => false)
81
- || data.baseData.allowDelete !== (() => false))
82
- && !data.baseData.EntityClass) {
83
- throw new Error(`
84
- Missing required Input data "EntityClass".
85
- You can only omit this value if you can neither create or update entities.`);
86
- }
87
- if (data.baseData.allowCreate !== (() => false) && !data.baseData.create && !data.createDialogData) {
88
- throw new Error(`Missing required Input data "createDialogData".
89
- You can only omit this value when creation is disallowed or done with a custom create method.`);
90
- }
91
- if ((data.baseData.allowRead !== (() => false)
92
- || data.baseData.allowUpdate !== (() => false)
93
- || data.baseData.allowDelete !== (() => false))
94
- && !data.baseData.edit
95
- && data.baseData.defaultEdit == 'dialog'
96
- && !data.editData) {
97
- throw new Error(`Missing required Input data "editDialogData".
98
- You can only omit this value when viewing, editing and deleting is disallowed or done with a custom edit method.`);
90
+ if (!data.baseData.EntityClass
91
+ && (data.baseData.allowCreate !== false
92
+ || data.baseData.allowRead !== false
93
+ || data.baseData.allowUpdate !== false
94
+ || data.baseData.allowDelete !== false)) {
95
+ throw new Error(`Missing required Input data "EntityClass".
96
+ You can only omit this value if you can neither create, read, update or delete entities.`);
99
97
  }
100
98
  }
101
99
  }
@@ -108,7 +106,7 @@ export class TableDataBuilder extends BaseBuilder {
108
106
  * @param entity - An entity that is in the search.
109
107
  * @returns The generated string of the given entity used for comparison with the search input.
110
108
  */
111
- function defaultSearchFunction(entity) {
109
+ export function defaultSearchFunction(entity) {
112
110
  const searchString = Object.keys(entity)
113
111
  .reduce((currentTerm, key) => {
114
112
  return `${currentTerm}${entity[key]}◬`;
@@ -116,4 +114,4 @@ function defaultSearchFunction(entity) {
116
114
  .toLowerCase();
117
115
  return searchString;
118
116
  }
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBR3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSx1QkFBdUIsRUFBNEIsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRyxPQUFPLEVBQW9CLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHMUY7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBUTFCLFlBQ0ksUUFBc0MsRUFDdEMsZ0JBQTBDLEVBQzFDLGNBQTRDO1FBRTVDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLGNBQWMsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxlQUNULFNBQVEsV0FBK0Q7SUFFdkUsWUFBWSxJQUEwQjtRQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELCtDQUErQztJQUNyQyxnQkFBZ0IsQ0FBQyxJQUEwQjtRQUNqRCxPQUFPLElBQUksZ0JBQWdCLENBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQ1YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLGtCQUFrQixFQUN2QixJQUFJLENBQUMsV0FBVyxJQUFJLFFBQVEsRUFDNUIsSUFBSSxDQUFDLGlCQUFpQixJQUFJLFFBQVEsRUFDbEMsSUFBSSxDQUFDLFdBQVcsSUFBSSxRQUFRLEVBQzVCLElBQUksQ0FB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S0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDaEcsTUFBTSxJQUFJLEtBQUssQ0FDWDs4R0FDOEYsQ0FDakcsQ0FBQztTQUNMO1FBQ0QsSUFDSSxDQUNJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2VBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO2VBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQ2pEO2VBQ0UsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7ZUFDbkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksUUFBUTtlQUNyQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQ25CO1lBQ0UsTUFBTSxJQUFJLEtBQUssQ0FDWDtpSUFDaUgsQ0FDcEgsQ0FBQztTQUNMO0lBQ0wsQ0FBQztDQUNKO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLHFCQUFxQixDQUFnRCxNQUFrQjtJQUM1RixNQUFNLFlBQVksR0FBVyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMzQyxNQUFNLENBQUMsQ0FBQyxXQUFtQixFQUFFLEdBQVcsRUFBRSxFQUFFO1FBQ3pDLE9BQU8sR0FBRyxXQUFXLEdBQUksTUFBa0MsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3hFLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDTCxXQUFXLEVBQUUsQ0FBQztJQUNuQixPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9iYXNlLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZUVudGl0eVR5cGUsIEVudGl0eUNsYXNzTmV3YWJsZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IEVudGl0eVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lbnRpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtRGlhbG9nRGF0YUJ1aWxkZXIgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQ3JlYXRlRGlhbG9nRGF0YUJ1aWxkZXIsIENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBFZGl0RGF0YUludGVybmFsLCBFZGl0RGlhbG9nRGF0YUJ1aWxkZXIgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEJhc2VEYXRhLCBEaXNwbGF5Q29sdW1uLCBNdWx0aVNlbGVjdEFjdGlvbiwgVGFibGVEYXRhIH0gZnJvbSAnLi90YWJsZS1kYXRhJztcblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBUYWJsZURhdGE8RW50aXR5VHlwZT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEaWFsb2dEYXRhSW50ZXJuYWw7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0RGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPixcbiAgICAgICAgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsLFxuICAgICAgICBlZGl0RGlhbG9nRGF0YTogRWRpdERhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPlxuICAgICkge1xuICAgICAgICB0aGlzLmJhc2VEYXRhID0gYmFzZURhdGE7XG4gICAgICAgIHRoaXMuY3JlYXRlRGlhbG9nRGF0YSA9IGNyZWF0ZURpYWxvZ0RhdGE7XG4gICAgICAgIHRoaXMuZWRpdERhdGEgPSBlZGl0RGlhbG9nRGF0YTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIEJ1aWxkZXIgZm9yIHRoZSB0YWJsZSBCYXNlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VEYXRhQnVpbGRlcjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+XG4gICAgZXh0ZW5kcyBCYXNlQnVpbGRlcjxCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBCYXNlRGF0YTxFbnRpdHlUeXBlPj4ge1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4pIHtcbiAgICAgICAgc3VwZXIoZGF0YSk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVCYXNlRGF0YShkYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPik6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4oXG4gICAgICAgICAgICBkYXRhLnRpdGxlLFxuICAgICAgICAgICAgZGF0YS5kaXNwbGF5Q29sdW1ucyxcbiAgICAgICAgICAgIGRhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgZGF0YS5zZWFyY2hMYWJlbCA/PyAnU2VhcmNoJyxcbiAgICAgICAgICAgIGRhdGEuY3JlYXRlQnV0dG9uTGFiZWwgPz8gJ0NyZWF0ZScsXG4gICAgICAgICAgICBkYXRhLmRlZmF1bHRFZGl0ID8/ICdkaWFsb2cnLFxuICAgICAgICAgICAgZGF0YS5zZWFyY2hTdHJpbmcgPz8gZGVmYXVsdFNlYXJjaEZ1bmN0aW9uLFxuICAgICAgICAgICAgZGF0YS5hbGxvd0NyZWF0ZSA/PyAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgICBkYXRhLmFsbG93UmVhZCA/PyAoKCkgPT4gdHJ1ZSksXG4gICAgICAgICAgICBkYXRhLmFsbG93VXBkYXRlID8/ICgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dEZWxldGUgPz8gKCgpID0+IHRydWUpLFxuICAgICAgICAgICAgZGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMgPz8gW10sXG4gICAgICAgICAgICBkYXRhLm11bHRpU2VsZWN0TGFiZWwgPz8gJ0FjdGlvbnMnLFxuICAgICAgICAgICAgZGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXIgPz8gdHJ1ZSxcbiAgICAgICAgICAgIGRhdGEuYWxsb3dKc29uSW1wb3J0ID8/IGZhbHNlLFxuICAgICAgICAgICAgZGF0YS5pbXBvcnRBY3Rpb25EYXRhID8/IHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZTogJ0ltcG9ydCAoSlNPTiknLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1EaWFsb2dEYXRhOiBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKClcbiAgICAgICAgICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gaW1wb3J0IGVudGl0aWVzIGZyb20gdGhlIHByb3ZpZGVkIGZpbGU/J10pXG4gICAgICAgICAgICAgICAgICAgIC5nZXRSZXN1bHQoKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRhdGEuRW50aXR5Q2xhc3MsXG4gICAgICAgICAgICBkYXRhLmVkaXQsXG4gICAgICAgICAgICBkYXRhLmNyZWF0ZVxuICAgICAgICApO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgaW50ZXJuYWwgVGFibGVEYXRhLiBSZXF1aXJlcyBhbGwgZGVmYXVsdCB2YWx1ZXMgdGhlIHVzZXIgY2FuIGxlYXZlIG91dC5cbiAqL1xuZXhwb3J0IGNsYXNzIEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIEJhc2VEYXRhPEVudGl0eVR5cGU+IHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkaXNwbGF5Q29sdW1uczogRGlzcGxheUNvbHVtbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5U2VydmljZUNsYXNzOiBuZXcgKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBzZWFyY2hMYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgY3JlYXRlQnV0dG9uTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRlZmF1bHRFZGl0OiAnZGlhbG9nJyB8ICdwYWdlJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHNlYXJjaFN0cmluZzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dDcmVhdGU6ICgpID0+IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd1JlYWQ6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBhbGxvd1VwZGF0ZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RGVsZXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbXVsdGlTZWxlY3RBY3Rpb25zOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgbXVsdGlTZWxlY3RMYWJlbDogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUxvYWRpbmdTcGlubmVyOiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dKc29uSW1wb3J0OiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgaW1wb3J0QWN0aW9uRGF0YTogT21pdDxNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPiwgJ2FjdGlvbicgfCAncmVxdWlyZUNvbmZpcm1EaWFsb2cnPjtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgRW50aXR5Q2xhc3M/OiBFbnRpdHlDbGFzc05ld2FibGU8RW50aXR5VHlwZT47XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBlZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgdGl0bGU6IHN0cmluZyxcbiAgICAgICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXSxcbiAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiBuZXcgKGh0dHBDbGllbnQ6IEh0dHBDbGllbnQpID0+IEVudGl0eVNlcnZpY2U8RW50aXR5VHlwZT4sXG4gICAgICAgIHNlYXJjaExhYmVsOiBzdHJpbmcsXG4gICAgICAgIGNyZWF0ZUJ1dHRvbkxhYmVsOiBzdHJpbmcsXG4gICAgICAgIGRlZmF1bHRFZGl0OiAnZGlhbG9nJyB8ICdwYWdlJyxcbiAgICAgICAgc2VhcmNoU3RyaW5nOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgICAgIGFsbG93Q3JlYXRlOiAoKSA9PiBib29sZWFuLFxuICAgICAgICBhbGxvd1JlYWQ6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgICAgIGFsbG93VXBkYXRlOiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgICAgICBhbGxvd0RlbGV0ZTogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gYm9vbGVhbixcbiAgICAgICAgbXVsdGlTZWxlY3RBY3Rpb25zOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPltdLFxuICAgICAgICBtdWx0aVNlbGVjdExhYmVsOiBzdHJpbmcsXG4gICAgICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcjogYm9vbGVhbixcbiAgICAgICAgYWxsb3dKc29uSW1wb3J0OiBib29sZWFuLFxuICAgICAgICBpbXBvcnRBY3Rpb25EYXRhOiBPbWl0PE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+LCAnYWN0aW9uJyB8ICdyZXF1aXJlQ29uZmlybURpYWxvZyc+LFxuICAgICAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAgICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd24sXG4gICAgICAgIGNyZWF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd25cbiAgICApIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLmRpc3BsYXlDb2x1bW5zID0gZGlzcGxheUNvbHVtbnM7XG4gICAgICAgIHRoaXMuRW50aXR5U2VydmljZUNsYXNzID0gRW50aXR5U2VydmljZUNsYXNzO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gRW50aXR5Q2xhc3M7XG4gICAgICAgIHRoaXMuc2VhcmNoTGFiZWwgPSBzZWFyY2hMYWJlbDtcbiAgICAgICAgdGhpcy5jcmVhdGVCdXR0b25MYWJlbCA9IGNyZWF0ZUJ1dHRvbkxhYmVsO1xuICAgICAgICB0aGlzLmRlZmF1bHRFZGl0ID0gZGVmYXVsdEVkaXQ7XG4gICAgICAgIHRoaXMuc2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nO1xuICAgICAgICB0aGlzLmFsbG93Q3JlYXRlID0gYWxsb3dDcmVhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dSZWFkID0gYWxsb3dSZWFkO1xuICAgICAgICB0aGlzLmFsbG93VXBkYXRlID0gYWxsb3dVcGRhdGU7XG4gICAgICAgIHRoaXMuYWxsb3dEZWxldGUgPSBhbGxvd0RlbGV0ZTtcbiAgICAgICAgdGhpcy5tdWx0aVNlbGVjdEFjdGlvbnMgPSBtdWx0aVNlbGVjdEFjdGlvbnM7XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IG11bHRpU2VsZWN0TGFiZWw7XG4gICAgICAgIHRoaXMuZGlzcGxheUxvYWRpbmdTcGlubmVyID0gZGlzcGxheUxvYWRpbmdTcGlubmVyO1xuICAgICAgICB0aGlzLmFsbG93SnNvbkltcG9ydCA9IGFsbG93SnNvbkltcG9ydDtcbiAgICAgICAgdGhpcy5pbXBvcnRBY3Rpb25EYXRhID0gaW1wb3J0QWN0aW9uRGF0YTtcbiAgICAgICAgdGhpcy5lZGl0ID0gZWRpdDtcbiAgICAgICAgdGhpcy5jcmVhdGUgPSBjcmVhdGU7XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBCdWlsZGVyIGZvciB0aGUgY29tcGxldGUgVGFibGVEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzIGFuZCB2YWxpZGF0ZXMgdXNlciBpbnB1dC5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYmxlRGF0YUJ1aWxkZXI8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PlxuICAgIGV4dGVuZHMgQmFzZUJ1aWxkZXI8VGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIFRhYmxlRGF0YTxFbnRpdHlUeXBlPj4ge1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogVGFibGVEYXRhPEVudGl0eVR5cGU+KSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlQmFzZURhdGEoZGF0YTogVGFibGVEYXRhPEVudGl0eVR5cGU+KTogVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4ge1xuICAgICAgICBjb25zdCBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEaWFsb2dEYXRhSW50ZXJuYWwgPSBuZXcgQ3JlYXRlRGlhbG9nRGF0YUJ1aWxkZXIoZGF0YS5jcmVhdGVEaWFsb2dEYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgZWRpdERpYWxvZ0RhdGE6IEVkaXREYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgRWRpdERpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuZWRpdERhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiA9IG5ldyBCYXNlRGF0YUJ1aWxkZXIoZGF0YS5iYXNlRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4oXG4gICAgICAgICAgICBiYXNlRGF0YSxcbiAgICAgICAgICAgIGNyZWF0ZURpYWxvZ0RhdGEsXG4gICAgICAgICAgICBlZGl0RGlhbG9nRGF0YVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHZhbGlkYXRlSW5wdXQoZGF0YTogVGFibGVEYXRhPEVudGl0eVR5cGU+KTogdm9pZCB7XG4gICAgICAgIGlmIChkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucz8ubGVuZ3RoICYmIGRhdGEuYmFzZURhdGEuZGlzcGxheUNvbHVtbnMuZmluZChkcCA9PiBkcC5kaXNwbGF5TmFtZSA9PT0gJ3NlbGVjdCcpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYFRoZSBuYW1lIFwic2VsZWN0XCIgZm9yIGEgZGlzcGxheSBjb2x1bW4gaXMgcmVzZXJ2ZWQgZm9yIHRoZSBtdWx0aS1zZWxlY3QgYWN0aW9uIGZ1bmN0aW9uYWxpdHkuXG4gICAgICAgICAgICAgICAgUGxlYXNlIGNob29zZSBhIGRpZmZlcmVudCBuYW1lLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGUgIT09ICgoKSA9PiBmYWxzZSlcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93UmVhZCAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dVcGRhdGUgIT09ICgoKSA9PiBmYWxzZSlcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93RGVsZXRlICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAmJiAhZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzc1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXG4gICAgICAgICAgICAgICAgTWlzc2luZyByZXF1aXJlZCBJbnB1dCBkYXRhIFwiRW50aXR5Q2xhc3NcIi5cbiAgICAgICAgICAgICAgICBZb3UgY2FuIG9ubHkgb21pdCB0aGlzIHZhbHVlIGlmIHlvdSBjYW4gbmVpdGhlciBjcmVhdGUgb3IgdXBkYXRlIGVudGl0aWVzLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuYmFzZURhdGEuYWxsb3dDcmVhdGUgIT09ICgoKSA9PiBmYWxzZSkgJiYgIWRhdGEuYmFzZURhdGEuY3JlYXRlICYmICFkYXRhLmNyZWF0ZURpYWxvZ0RhdGEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBJbnB1dCBkYXRhIFwiY3JlYXRlRGlhbG9nRGF0YVwiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgd2hlbiBjcmVhdGlvbiBpcyBkaXNhbGxvd2VkIG9yIGRvbmUgd2l0aCBhIGN1c3RvbSBjcmVhdGUgbWV0aG9kLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIGRhdGEuYmFzZURhdGEuYWxsb3dSZWFkICE9PSAoKCkgPT4gZmFsc2UpXG4gICAgICAgICAgICAgICAgfHwgZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZSAhPT0gKCgpID0+IGZhbHNlKVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUgIT09ICgoKSA9PiBmYWxzZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICYmICFkYXRhLmJhc2VEYXRhLmVkaXRcbiAgICAgICAgICAgICYmIGRhdGEuYmFzZURhdGEuZGVmYXVsdEVkaXQgPT0gJ2RpYWxvZydcbiAgICAgICAgICAgICYmICFkYXRhLmVkaXREYXRhXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIElucHV0IGRhdGEgXCJlZGl0RGlhbG9nRGF0YVwiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgd2hlbiB2aWV3aW5nLCBlZGl0aW5nIGFuZCBkZWxldGluZyBpcyBkaXNhbGxvd2VkIG9yIGRvbmUgd2l0aCBhIGN1c3RvbSBlZGl0IG1ldGhvZC5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbiB0YWtlbiBmcm9tIGdvb2dsZXMgbWF0IHRhYmxlLlxuICogVGhpcyB3aWxsIGJlIHVzZWQgaWYgbm8gY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBJdCBnZW5lcmF0ZXMgYSBzdHJpbmcgZnJvbSBhbiBlbnRpdHkgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNvbXBhcmUgaXQgdG8gdGhlIHNlYXJjaCBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gZW50aXR5IC0gQW4gZW50aXR5IHRoYXQgaXMgaW4gdGhlIHNlYXJjaC5cbiAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgc3RyaW5nIG9mIHRoZSBnaXZlbiBlbnRpdHkgdXNlZCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBzZWFyY2ggaW5wdXQuXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRTZWFyY2hGdW5jdGlvbjxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+KGVudGl0eTogRW50aXR5VHlwZSk6IHN0cmluZyB7XG4gICAgY29uc3Qgc2VhcmNoU3RyaW5nOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhlbnRpdHkpXG4gICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRUZXJtOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYCR7Y3VycmVudFRlcm19JHsoZW50aXR5IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldfeKXrGA7XG4gICAgICAgIH0sICcnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gc2VhcmNoU3RyaW5nO1xufSJdfQ==
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5idWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS1kYXRhLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHcEYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDekYsT0FBTyxFQUFFLHVCQUF1QixFQUE0QixNQUFNLDRDQUE0QyxDQUFDO0FBQy9HLE9BQU8sRUFBb0IscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUcxRjs7R0FFRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFRMUIsWUFDSSxRQUFzQyxFQUN0QyxnQkFBMEMsRUFDMUMsY0FBNEM7UUFFNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxRQUFRLEdBQUcsY0FBYyxDQUFDO0lBQ25DLENBQUM7Q0FDSjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGVBQ1QsU0FBUSxXQUErRDtJQUV2RSxZQUFZLElBQTBCO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQsK0NBQStDO0lBQ3JDLGdCQUFnQixDQUFDLElBQTBCO1FBQ2pELE9BQU8sSUFBSSxnQkFBZ0IsQ0FBYSxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0o7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUF5Q3pCLFlBQVksSUFBMEI7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFj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YXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIsIGRlZmF1bHRGYWxzZSwgZGVmYXVsdFRydWUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2Jhc2UuYnVpbGRlcic7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5Q2xhc3NOZXdhYmxlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBDcmVhdGVEaWFsb2dEYXRhQnVpbGRlciwgQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsIH0gZnJvbSAnLi9jcmVhdGUtZGlhbG9nL2NyZWF0ZS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IEVkaXREYXRhSW50ZXJuYWwsIEVkaXREaWFsb2dEYXRhQnVpbGRlciB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1kYXRhLmJ1aWxkZXInO1xuaW1wb3J0IHsgQmFzZURhdGEsIERpc3BsYXlDb2x1bW4sIE11bHRpU2VsZWN0QWN0aW9uLCBUYWJsZURhdGEgfSBmcm9tICcuL3RhYmxlLWRhdGEnO1xuXG4vKipcbiAqIFRoZSBpbnRlcm5hbCBUYWJsZURhdGEuIFJlcXVpcmVzIGFsbCBkZWZhdWx0IHZhbHVlcyB0aGUgdXNlciBjYW4gbGVhdmUgb3V0LlxuICovXG5leHBvcnQgY2xhc3MgVGFibGVEYXRhSW50ZXJuYWw8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiBpbXBsZW1lbnRzIFRhYmxlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBiYXNlRGF0YTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZURpYWxvZ0RhdGE6IENyZWF0ZURpYWxvZ0RhdGFJbnRlcm5hbDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGVkaXREYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJhc2VEYXRhOiBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LFxuICAgICAgICBjcmVhdGVEaWFsb2dEYXRhOiBDcmVhdGVEaWFsb2dEYXRhSW50ZXJuYWwsXG4gICAgICAgIGVkaXREaWFsb2dEYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+XG4gICAgKSB7XG4gICAgICAgIHRoaXMuYmFzZURhdGEgPSBiYXNlRGF0YTtcbiAgICAgICAgdGhpcy5jcmVhdGVEaWFsb2dEYXRhID0gY3JlYXRlRGlhbG9nRGF0YTtcbiAgICAgICAgdGhpcy5lZGl0RGF0YSA9IGVkaXREaWFsb2dEYXRhO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIHRhYmxlIEJhc2VEYXRhLiBTZXRzIGRlZmF1bHQgdmFsdWVzLlxuICovXG5leHBvcnQgY2xhc3MgQmFzZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4sIEJhc2VEYXRhPEVudGl0eVR5cGU+PiB7XG5cbiAgICBjb25zdHJ1Y3RvcihkYXRhOiBCYXNlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IEJhc2VEYXRhPEVudGl0eVR5cGU+KTogQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPiB7XG4gICAgICAgIHJldHVybiBuZXcgQmFzZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPihkYXRhKTtcbiAgICB9XG59XG5cbi8qKlxuICogVGhlIGludGVybmFsIFRhYmxlRGF0YS4gUmVxdWlyZXMgYWxsIGRlZmF1bHQgdmFsdWVzIHRoZSB1c2VyIGNhbiBsZWF2ZSBvdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlRGF0YUludGVybmFsPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj4gaW1wbGVtZW50cyBCYXNlRGF0YTxFbnRpdHlUeXBlPiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZGlzcGxheUNvbHVtbnM6IERpc3BsYXlDb2x1bW48RW50aXR5VHlwZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eVNlcnZpY2VDbGFzczogbmV3IChodHRwQ2xpZW50OiBIdHRwQ2xpZW50KSA9PiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgc2VhcmNoTGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsOiBzdHJpbmc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBkZWZhdWx0RWRpdDogJ2RpYWxvZycgfCAncGFnZSc7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBzZWFyY2hTdHJpbmc6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93Q3JlYXRlOiAoKSA9PiBib29sZWFuO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgYWxsb3dSZWFkOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93VXBkYXRlOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93RGVsZXRlOiAoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG11bHRpU2VsZWN0QWN0aW9uczogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT5bXTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIG11bHRpU2VsZWN0TGFiZWw6IHN0cmluZztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcjogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGFsbG93SnNvbkltcG9ydDogYm9vbGVhbjtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIGltcG9ydEFjdGlvbkRhdGE6IE9taXQ8TXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4sICdhY3Rpb24nIHwgJ3JlcXVpcmVDb25maXJtRGlhbG9nJz47XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIEVudGl0eUNsYXNzPzogRW50aXR5Q2xhc3NOZXdhYmxlPEVudGl0eVR5cGU+O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZWRpdD86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHVua25vd247XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzZG9jL3JlcXVpcmUtanNkb2NcbiAgICBjcmVhdGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiB1bmtub3duO1xuXG4gICAgY29uc3RydWN0b3IoZGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4pIHtcbiAgICAgICAgdGhpcy50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgICAgIHRoaXMuZGlzcGxheUNvbHVtbnMgPSBkYXRhLmRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB0aGlzLkVudGl0eVNlcnZpY2VDbGFzcyA9IGRhdGEuRW50aXR5U2VydmljZUNsYXNzO1xuICAgICAgICB0aGlzLkVudGl0eUNsYXNzID0gZGF0YS5FbnRpdHlDbGFzcztcbiAgICAgICAgdGhpcy5zZWFyY2hMYWJlbCA9IGRhdGEuc2VhcmNoTGFiZWwgPz8gJ1NlYXJjaCc7XG4gICAgICAgIHRoaXMuY3JlYXRlQnV0dG9uTGFiZWwgPSBkYXRhLmNyZWF0ZUJ1dHRvbkxhYmVsID8/ICdDcmVhdGUnO1xuICAgICAgICB0aGlzLmRlZmF1bHRFZGl0ID0gZGF0YS5kZWZhdWx0RWRpdCA/PyAnZGlhbG9nJztcbiAgICAgICAgdGhpcy5zZWFyY2hTdHJpbmcgPSBkYXRhLnNlYXJjaFN0cmluZyA/PyBkZWZhdWx0U2VhcmNoRnVuY3Rpb247XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RBY3Rpb25zID0gZGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMgPz8gW107XG4gICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IGRhdGEubXVsdGlTZWxlY3RMYWJlbCA/PyAnQWN0aW9ucyc7XG4gICAgICAgIHRoaXMuZGlzcGxheUxvYWRpbmdTcGlubmVyID0gZGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXIgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5hbGxvd0pzb25JbXBvcnQgPSBkYXRhLmFsbG93SnNvbkltcG9ydCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5pbXBvcnRBY3Rpb25EYXRhID0gZGF0YS5pbXBvcnRBY3Rpb25EYXRhID8/IHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiAnSW1wb3J0IChKU09OKScsXG4gICAgICAgICAgICBjb25maXJtRGlhbG9nRGF0YTogbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcigpXG4gICAgICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0ZXh0JywgWydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gaW1wb3J0IGVudGl0aWVzIGZyb20gdGhlIHByb3ZpZGVkIGZpbGU/J10pXG4gICAgICAgICAgICAgICAgLmdldFJlc3VsdCgpXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZWRpdCA9IGRhdGEuZWRpdDtcbiAgICAgICAgdGhpcy5jcmVhdGUgPSBkYXRhLmNyZWF0ZTtcbiAgICAgICAgdGhpcy5hbGxvd0NyZWF0ZSA9IHRoaXMuYWxsb3dEYXRhVG9GdW5jdGlvbihkYXRhLmFsbG93Q3JlYXRlKTtcbiAgICAgICAgdGhpcy5hbGxvd1JlYWQgPSB0aGlzLmFsbG93RGF0YVRvRnVuY3Rpb24oZGF0YS5hbGxvd1JlYWQpO1xuICAgICAgICB0aGlzLmFsbG93VXBkYXRlID0gdGhpcy5hbGxvd0RhdGFUb0Z1bmN0aW9uKGRhdGEuYWxsb3dVcGRhdGUpO1xuICAgICAgICB0aGlzLmFsbG93RGVsZXRlID0gdGhpcy5hbGxvd0RhdGFUb0Z1bmN0aW9uKGRhdGEuYWxsb3dEZWxldGUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxsb3dEYXRhVG9GdW5jdGlvbih2YWx1ZT86IGJvb2xlYW4gfCAoKGVudGl0eT86IEVudGl0eVR5cGUpID0+IGJvb2xlYW4pKTogKChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0RmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgQnVpbGRlciBmb3IgdGhlIGNvbXBsZXRlIFRhYmxlRGF0YS4gU2V0cyBkZWZhdWx0IHZhbHVlcyBhbmQgdmFsaWRhdGVzIHVzZXIgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZURhdGFCdWlsZGVyPEVudGl0eVR5cGUgZXh0ZW5kcyBCYXNlRW50aXR5VHlwZTxFbnRpdHlUeXBlPj5cbiAgICBleHRlbmRzIEJhc2VCdWlsZGVyPFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+LCBUYWJsZURhdGE8RW50aXR5VHlwZT4+IHtcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPikge1xuICAgICAgICBzdXBlcihkYXRhKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBnZW5lcmF0ZUJhc2VEYXRhKGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+IHtcbiAgICAgICAgY29uc3QgY3JlYXRlRGlhbG9nRGF0YTogQ3JlYXRlRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENyZWF0ZURpYWxvZ0RhdGFCdWlsZGVyKGRhdGEuY3JlYXRlRGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IGVkaXREaWFsb2dEYXRhOiBFZGl0RGF0YUludGVybmFsPEVudGl0eVR5cGU+ID0gbmV3IEVkaXREaWFsb2dEYXRhQnVpbGRlcihkYXRhLmVkaXREYXRhKS5nZXRSZXN1bHQoKTtcbiAgICAgICAgY29uc3QgYmFzZURhdGE6IEJhc2VEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQmFzZURhdGFCdWlsZGVyKGRhdGEuYmFzZURhdGEpLmdldFJlc3VsdCgpO1xuICAgICAgICByZXR1cm4gbmV3IFRhYmxlRGF0YUludGVybmFsPEVudGl0eVR5cGU+KFxuICAgICAgICAgICAgYmFzZURhdGEsXG4gICAgICAgICAgICBjcmVhdGVEaWFsb2dEYXRhLFxuICAgICAgICAgICAgZWRpdERpYWxvZ0RhdGFcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganNkb2MvcmVxdWlyZS1qc2RvY1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSB2YWxpZGF0ZUlucHV0KGRhdGE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnM/Lmxlbmd0aCAmJiBkYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLmZpbmQoZHAgPT4gZHAuZGlzcGxheU5hbWUgPT09ICdzZWxlY3QnKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBUaGUgbmFtZSBcInNlbGVjdFwiIGZvciBhIGRpc3BsYXkgY29sdW1uIGlzIHJlc2VydmVkIGZvciB0aGUgbXVsdGktc2VsZWN0IGFjdGlvbiBmdW5jdGlvbmFsaXR5LlxuICAgICAgICAgICAgICAgIFBsZWFzZSBjaG9vc2UgYSBkaWZmZXJlbnQgbmFtZS5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICFkYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzXG4gICAgICAgICAgICAmJiAoXG4gICAgICAgICAgICAgICAgZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93UmVhZCAhPT0gZmFsc2VcbiAgICAgICAgICAgICAgICB8fCBkYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlICE9PSBmYWxzZVxuICAgICAgICAgICAgICAgIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUgIT09IGZhbHNlXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIElucHV0IGRhdGEgXCJFbnRpdHlDbGFzc1wiLlxuICAgICAgICAgICAgICAgIFlvdSBjYW4gb25seSBvbWl0IHRoaXMgdmFsdWUgaWYgeW91IGNhbiBuZWl0aGVyIGNyZWF0ZSwgcmVhZCwgdXBkYXRlIG9yIGRlbGV0ZSBlbnRpdGllcy5gXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbiB0YWtlbiBmcm9tIGdvb2dsZXMgbWF0IHRhYmxlLlxuICogVGhpcyB3aWxsIGJlIHVzZWQgaWYgbm8gY3VzdG9tIHNlYXJjaCBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB0aGUgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBJdCBnZW5lcmF0ZXMgYSBzdHJpbmcgZnJvbSBhbiBlbnRpdHkgd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNvbXBhcmUgaXQgdG8gdGhlIHNlYXJjaCBpbnB1dC5cbiAqXG4gKiBAcGFyYW0gZW50aXR5IC0gQW4gZW50aXR5IHRoYXQgaXMgaW4gdGhlIHNlYXJjaC5cbiAqIEByZXR1cm5zIFRoZSBnZW5lcmF0ZWQgc3RyaW5nIG9mIHRoZSBnaXZlbiBlbnRpdHkgdXNlZCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBzZWFyY2ggaW5wdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0U2VhcmNoRnVuY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PihlbnRpdHk6IEVudGl0eVR5cGUpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNlYXJjaFN0cmluZzogc3RyaW5nID0gT2JqZWN0LmtleXMoZW50aXR5KVxuICAgICAgICAucmVkdWNlKChjdXJyZW50VGVybTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGAke2N1cnJlbnRUZXJtfSR7KGVudGl0eSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XX3il6xgO1xuICAgICAgICB9LCAnJylcbiAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHNlYXJjaFN0cmluZztcbn0iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhJztcblxuLyoqXG4gKiBUaGUgRGVmaW5pdGlvbiBvZiBhIENvbHVtbiBpbnNpZGUgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlDb2x1bW48RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgaW5zaWRlIHRoZSBoZWFkZXIuXG4gICAgICovXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlIGluc2lkZSBhbiByb3cuXG4gICAgICovXG4gICAgdmFsdWU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZ1xufVxuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIGFuIEFjdGlvbiB0aGF0IGNhbiBiZSBydW4gb24gbXVsdGlwbGUgc2VsZWN0ZWQgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBhY3Rpb24gaXRzZWxmLlxuICAgICAqL1xuICAgIGFjdGlvbjogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgYSBjb25maXJtIGRpYWxvZyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlcXVpcmVDb25maXJtRGlhbG9nPzogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIHRvIGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIGRpYWxvZyBmb3IgdGhlIG11bHRpU2VsZWN0IGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogVGhlIGJhc2UgZGF0YSBvZiB0aGUgbmd4LW1hdC1lbnRpdHktdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZURhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuIENvbnNpc3RzIG9mIHRoZSBkaXNwbGF5TmFtZSB0byBzaG93IGluIHRoZSBoZWFkZXIgb2YgdGhlIHJvd1xuICAgICAqIGFuZCB0aGUgdmFsdWUsIHdoaWNoIGlzIGEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW5zaWRlIGEgY29sdW1uLlxuICAgICAqL1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W10sXG4gICAgLyoqXG4gICAgICogVGhlIENsYXNzIG9mIHRoZSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyB0aGUgZW50aXRpZXMuXG4gICAgICogTmVlZHMgdG8gYmUgaW5qZWN0YWJsZSBhbmQgYW4gZXh0ZW5zaW9uIG9mIHRoZSBcIkVudGl0eVNlcnZpY2VcIi1DbGFzcy5cbiAgICAgKi9cbiAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgQ2xhc3Mgb2YgdGhlIGVudGl0aWVzIHRvIG1hbmFnZS5cbiAgICAgKi9cbiAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIHNlYXJjaCBiYXIuIERlZmF1bHRzIHRvIFwiU2VhcmNoXCIuXG4gICAgICovXG4gICAgc2VhcmNoTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBidXR0b24gZm9yIGFkZGluZyBuZXcgZW50aXRpZXMuIERlZmF1bHRzIHRvIFwiQ3JlYXRlXCIuXG4gICAgICovXG4gICAgY3JlYXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hldGhlciBlZGl0aW5nIGhhcHBlbnMgaW4gYSBkaWFsb2cgb3IgYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIGRlZmF1bHRFZGl0PzogJ2RpYWxvZycgfCAncGFnZScsXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBjdXN0b20gZWRpdCBtZXRob2Qgd2hpY2ggcnVucyB3aGVuIHlvdSBjbGljayBvbiBhIGVudGl0eS5cbiAgICAgKiBJZiB5b3UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCBlZGl0aW5nIG9mIGVudHJpZXMgeW91IGNhbiBhbHNvIG9taXQgdGhpcy5cbiAgICAgKiBJbiB0aGF0IGNhc2UgYSBkZWZhdWx0IGVkaXQgZGlhbG9nIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBlZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1ldGhvZCB0byBydW4gd2hlbiB5b3UgY2xpY2sgb24gdGhlIG5ldyBidXR0b24uXG4gICAgICogSWYgeW91IGRvbid0IG5lZWQgYW55dGhpbmcgc3BlY2lhbCB5b3UgY2FuIGFsc28gb21pdCB0aGlzLlxuICAgICAqIEluIHRoYXQgY2FzZSBhIGRlZmF1bHQgY3JlYXRlIGRpYWxvZyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgY3JlYXRlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgc2VhcmNoIHN0cmluZyBvZiBlbnRpdGllcyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgc2VhcmNoU3RyaW5nPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGFkZCBuZXcgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGU/OiAoKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd1JlYWQ/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGVkaXQgdGhlIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd1VwZGF0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGRlbGV0ZSB0aGlzIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd0RlbGV0ZT86IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogQWxsIEFjdGlvbnMgdGhhdCB5b3Ugd2FudCB0byBydW4gb24gbXVsdGlwbGUgZW50aXRpZXMgY2FuIGJlIGRlZmluZWQgaGVyZS5cbiAgICAgKiAoZS5nLiBEb3dubG9hZCBhcyB6aXAtZmlsZSBvciBtYXNzIGRlbGV0ZSkuXG4gICAgICovXG4gICAgbXVsdGlTZWxlY3RBY3Rpb25zPzogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT5bXSxcbiAgICAvKipcbiAgICAgKiBUaGUgTGFiZWwgZm9yIHRoZSBidXR0b24gdGhhdCBvcGVucyBhbGwgbXVsdGktYWN0aW9ucy5cbiAgICAgKi9cbiAgICBtdWx0aVNlbGVjdExhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgYSBsb2FkaW5nIHNwaW5uZXIgd2hpbGUgdGhlIGVudGl0aWVzIG9mIHRoZSB0YWJsZSBhcmUgbG9hZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgSlNPTiBpbXBvcnRzIGFyZSBhbGxvd2VkLlxuICAgICAqIFRoaXMgYWRkcyBhbiBtdWx0aSBzZWxlY3QgYWN0aW9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBhbGxvd0pzb25JbXBvcnQ/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERhdGEgdG8gY3VzdG9taXplIHRoZSBqc29uIGltcG9ydCBhY3Rpb24uXG4gICAgICovXG4gICAgaW1wb3J0QWN0aW9uRGF0YT86IE9taXQ8TXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4sICdhY3Rpb24nIHwgJ3JlcXVpcmVDb25maXJtRGlhbG9nJz5cbn1cblxuLyoqXG4gKiBUaGUgZGF0YSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZURpYWxvZ0RhdGEge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY3JlYXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkNyZWF0ZVwiLlxuICAgICAqL1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3JlYXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgY3JlYXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQ3JlYXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0RGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICovXG4gICAgdGl0bGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBjb25maXJtLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLiBEZWZhdWx0cyB0byBcIlNhdmVcIi5cbiAgICAgKi9cbiAgICBjb25maXJtQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBkZWxldGUtYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiRGVsZXRlXCIuXG4gICAgICovXG4gICAgZGVsZXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBjYW5jZWwtYnV0dG9uIGZvciB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLiBEZWZhdWx0cyB0byBcIkNhbmNlbFwiLlxuICAgICAqL1xuICAgIGNhbmNlbEJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkZWxldGlvbiBvZiBhbiBlbnRyeSBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIGRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZz86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGVkaXRpbmcgb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBlZGl0UmVxdWlyZXNDb25maXJtRGlhbG9nPzogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRGVsZXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRWRpdERpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIEFsbCB0aGUgY29uZmlndXJhdGlvbiBkYXRhIHJlcXVpcmVkIHRvIGRpc3BsYXkgYSBuZ3gtbWF0LWVudGl0eS10YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZURhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZGF0YSBmb3IgdGhlIHRhYmxlLWNvbXBvbmVudC5cbiAgICAgKiBJbmNsdWRlcyBzdHVmZiBsaWtlIHRoZSB0aXRsZSBmb3IgdGhlIHRhYmxlLCB3aGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSByb3dzIGV0Yy5cbiAgICAgKi9cbiAgICBiYXNlRGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiY3JlYXRlXCIgbWV0aG9kIGluc2lkZSB0aGUgYmFzZURhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRGlhbG9nRGF0YT86IENyZWF0ZURpYWxvZ0RhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gc3BlY2lmeWluZyBhIGN1c3RvbSBcImVkaXRcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RGF0YT86IEVkaXREYXRhPEVudGl0eVR5cGU+XG59Il19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1tYXRlcmlhbC1lbnRpdHkvc3JjL2NvbXBvbmVudHMvdGFibGUvdGFibGUtZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEJhc2VFbnRpdHlUeXBlLCBFbnRpdHlDbGFzc05ld2FibGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZW50aXR5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybURpYWxvZ0RhdGEgfSBmcm9tICcuLi9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy1kYXRhJztcblxuLyoqXG4gKiBUaGUgRGVmaW5pdGlvbiBvZiBhIENvbHVtbiBpbnNpZGUgdGhlIHRhYmxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3BsYXlDb2x1bW48RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgaW5zaWRlIHRoZSBoZWFkZXIuXG4gICAgICovXG4gICAgZGlzcGxheU5hbWU6IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlIGluc2lkZSBhbiByb3cuXG4gICAgICovXG4gICAgdmFsdWU6IChlbnRpdHk6IEVudGl0eVR5cGUpID0+IHN0cmluZ1xufVxuXG4vKipcbiAqIFRoZSBEZWZpbml0aW9uIG9mIGFuIEFjdGlvbiB0aGF0IGNhbiBiZSBydW4gb24gbXVsdGlwbGUgc2VsZWN0ZWQgZW50aXRpZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBhY3Rpb24gaXRzZWxmLlxuICAgICAqL1xuICAgIGFjdGlvbjogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgdGhlIGFjdGlvbiBjYW4gYmUgdXNlZC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGRlZmluZXMgd2hldGhlciBvciBub3QgYSBjb25maXJtIGRpYWxvZyBpcyBuZWVkZWQgdG8gcnVuIHRoZSBhY3Rpb24uXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIHJlcXVpcmVDb25maXJtRGlhbG9nPzogKHNlbGVjdGVkRW50aXRpZXM6IEVudGl0eVR5cGVbXSkgPT4gYm9vbGVhbixcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIHRvIGdlbmVyYXRlIGEgY29uZmlybWF0aW9uIGRpYWxvZyBmb3IgdGhlIG11bHRpU2VsZWN0IGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogVGhlIGJhc2UgZGF0YSBvZiB0aGUgbmd4LW1hdC1lbnRpdHktdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZURhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIHRpdGxlIG9mIHRoZSB0YWJsZS5cbiAgICAgKi9cbiAgICB0aXRsZTogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBjb2x1bW5zIHRvIGRpc3BsYXkuIENvbnNpc3RzIG9mIHRoZSBkaXNwbGF5TmFtZSB0byBzaG93IGluIHRoZSBoZWFkZXIgb2YgdGhlIHJvd1xuICAgICAqIGFuZCB0aGUgdmFsdWUsIHdoaWNoIGlzIGEgZnVuY3Rpb24gdGhhdCBnZW5lcmF0ZXMgdGhlIHZhbHVlIHRvIGRpc3BsYXkgaW5zaWRlIGEgY29sdW1uLlxuICAgICAqL1xuICAgIGRpc3BsYXlDb2x1bW5zOiBEaXNwbGF5Q29sdW1uPEVudGl0eVR5cGU+W10sXG4gICAgLyoqXG4gICAgICogVGhlIENsYXNzIG9mIHRoZSBzZXJ2aWNlIHRoYXQgaGFuZGxlcyB0aGUgZW50aXRpZXMuXG4gICAgICogTmVlZHMgdG8gYmUgaW5qZWN0YWJsZSBhbmQgYW4gZXh0ZW5zaW9uIG9mIHRoZSBcIkVudGl0eVNlcnZpY2VcIi1DbGFzcy5cbiAgICAgKi9cbiAgICBFbnRpdHlTZXJ2aWNlQ2xhc3M6IG5ldyAoaHR0cENsaWVudDogSHR0cENsaWVudCkgPT4gRW50aXR5U2VydmljZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgQ2xhc3Mgb2YgdGhlIGVudGl0aWVzIHRvIG1hbmFnZS5cbiAgICAgKi9cbiAgICBFbnRpdHlDbGFzcz86IEVudGl0eUNsYXNzTmV3YWJsZTxFbnRpdHlUeXBlPixcbiAgICAvKipcbiAgICAgKiBUaGUgbGFiZWwgb24gdGhlIHNlYXJjaCBiYXIuIERlZmF1bHRzIHRvIFwiU2VhcmNoXCIuXG4gICAgICovXG4gICAgc2VhcmNoTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBidXR0b24gZm9yIGFkZGluZyBuZXcgZW50aXRpZXMuIERlZmF1bHRzIHRvIFwiQ3JlYXRlXCIuXG4gICAgICovXG4gICAgY3JlYXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogV2hldGhlciBlZGl0aW5nIGhhcHBlbnMgaW4gYSBkaWFsb2cgb3IgYSBzZXBhcmF0ZSBwYWdlLlxuICAgICAqL1xuICAgIGRlZmF1bHRFZGl0PzogJ2RpYWxvZycgfCAncGFnZScsXG4gICAgLyoqXG4gICAgICogVGFrZXMgYSBjdXN0b20gZWRpdCBtZXRob2Qgd2hpY2ggcnVucyB3aGVuIHlvdSBjbGljayBvbiBhIGVudGl0eS5cbiAgICAgKiBJZiB5b3UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCBlZGl0aW5nIG9mIGVudHJpZXMgeW91IGNhbiBhbHNvIG9taXQgdGhpcy5cbiAgICAgKiBJbiB0aGF0IGNhc2UgYSBkZWZhdWx0IGVkaXQgZGlhbG9nIGlzIGdlbmVyYXRlZC5cbiAgICAgKi9cbiAgICBlZGl0PzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBUYWtlcyBhIG1ldGhvZCB0byBydW4gd2hlbiB5b3UgY2xpY2sgb24gdGhlIG5ldyBidXR0b24uXG4gICAgICogSWYgeW91IGRvbid0IG5lZWQgYW55dGhpbmcgc3BlY2lhbCB5b3UgY2FuIGFsc28gb21pdCB0aGlzLlxuICAgICAqIEluIHRoYXQgY2FzZSBhIGRlZmF1bHQgY3JlYXRlIGRpYWxvZyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgY3JlYXRlPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gdW5rbm93bixcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGhvdyB0aGUgc2VhcmNoIHN0cmluZyBvZiBlbnRpdGllcyBpcyBnZW5lcmF0ZWQuXG4gICAgICovXG4gICAgc2VhcmNoU3RyaW5nPzogKGVudGl0eTogRW50aXR5VHlwZSkgPT4gc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIGFkZCBuZXcgZW50aXRpZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dDcmVhdGU/OiBib29sZWFuIHwgKCgpID0+IGJvb2xlYW4pLFxuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciBvciBub3QgdGhlIHVzZXIgY2FuIHZpZXcgdGhlIHNwZWNpZmljIGVudGl0eS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0ICgpID0+IHRydWVcbiAgICAgKi9cbiAgICBhbGxvd1JlYWQ/OiBib29sZWFuIHwgKChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuKSxcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHdoZXRoZXIgb3Igbm90IHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBzcGVjaWZpYyBlbnRpdHkuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAoKSA9PiB0cnVlXG4gICAgICovXG4gICAgYWxsb3dVcGRhdGU/OiBib29sZWFuIHwgKChlbnRpdHk/OiBFbnRpdHlUeXBlKSA9PiBib29sZWFuKSxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgdXNlciBjYW4gZGVsZXRlIHRoaXMgc3BlY2lmaWMgZW50aXR5LlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgKCkgPT4gdHJ1ZVxuICAgICAqL1xuICAgIGFsbG93RGVsZXRlPzogYm9vbGVhbiB8ICgoZW50aXR5PzogRW50aXR5VHlwZSkgPT4gYm9vbGVhbiksXG4gICAgLyoqXG4gICAgICogQWxsIEFjdGlvbnMgdGhhdCB5b3Ugd2FudCB0byBydW4gb24gbXVsdGlwbGUgZW50aXRpZXMgY2FuIGJlIGRlZmluZWQgaGVyZS5cbiAgICAgKiAoZS5nLiBEb3dubG9hZCBhcyB6aXAtZmlsZSBvciBtYXNzIGRlbGV0ZSkuXG4gICAgICovXG4gICAgbXVsdGlTZWxlY3RBY3Rpb25zPzogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT5bXSxcbiAgICAvKipcbiAgICAgKiBUaGUgTGFiZWwgZm9yIHRoZSBidXR0b24gdGhhdCBvcGVucyBhbGwgbXVsdGktYWN0aW9ucy5cbiAgICAgKi9cbiAgICBtdWx0aVNlbGVjdExhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRvIGRpc3BsYXkgYSBsb2FkaW5nIHNwaW5uZXIgd2hpbGUgdGhlIGVudGl0aWVzIG9mIHRoZSB0YWJsZSBhcmUgbG9hZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGRpc3BsYXlMb2FkaW5nU3Bpbm5lcj86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgSlNPTiBpbXBvcnRzIGFyZSBhbGxvd2VkLlxuICAgICAqIFRoaXMgYWRkcyBhbiBtdWx0aSBzZWxlY3QgYWN0aW9uLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBhbGxvd0pzb25JbXBvcnQ/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIERhdGEgdG8gY3VzdG9taXplIHRoZSBqc29uIGltcG9ydCBhY3Rpb24uXG4gICAgICovXG4gICAgaW1wb3J0QWN0aW9uRGF0YT86IE9taXQ8TXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4sICdhY3Rpb24nIHwgJ3JlcXVpcmVDb25maXJtRGlhbG9nJz5cbn1cblxuLyoqXG4gKiBUaGUgZGF0YSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZURpYWxvZ0RhdGEge1xuICAgIC8qKlxuICAgICAqIFRoZSB0aXRsZSBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLlxuICAgICAqL1xuICAgIHRpdGxlPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY3JlYXRlLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBjcmVhdGUtZGlhbG9nLiBEZWZhdWx0cyB0byBcIkNyZWF0ZVwiLlxuICAgICAqL1xuICAgIGNyZWF0ZUJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFRoZSBsYWJlbCBvbiB0aGUgY2FuY2VsLWJ1dHRvbiBmb3IgdGhlIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy4gRGVmYXVsdHMgdG8gXCJDYW5jZWxcIi5cbiAgICAgKi9cbiAgICBjYW5jZWxCdXR0b25MYWJlbD86IHN0cmluZyxcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCB0aGUgY3JlYXRpb24gb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjcmVhdGVSZXF1aXJlc0NvbmZpcm1EaWFsb2c/OiBib29sZWFuLFxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgY3JlYXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtQ3JlYXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhXG59XG5cbi8qKlxuICogVGhlIGRhdGEgb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cgb3IgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZGl0RGF0YTxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5VHlwZT4+IHtcbiAgICAvKipcbiAgICAgKiBUaGUgdGl0bGUgb2YgdGhlIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICovXG4gICAgdGl0bGU/OiAoZW50aXR5OiBFbnRpdHlUeXBlKSA9PiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBjb25maXJtLWJ1dHRvbiBvZiB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLiBEZWZhdWx0cyB0byBcIlNhdmVcIi5cbiAgICAgKi9cbiAgICBjb25maXJtQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBkZWxldGUtYnV0dG9uIG9mIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nIG9yIHBhZ2UuIERlZmF1bHRzIHRvIFwiRGVsZXRlXCIuXG4gICAgICovXG4gICAgZGVsZXRlQnV0dG9uTGFiZWw/OiBzdHJpbmcsXG4gICAgLyoqXG4gICAgICogVGhlIGxhYmVsIG9uIHRoZSBjYW5jZWwtYnV0dG9uIGZvciB0aGUgZGVmYXVsdCBlZGl0LWRpYWxvZyBvciBwYWdlLiBEZWZhdWx0cyB0byBcIkNhbmNlbFwiLlxuICAgICAqL1xuICAgIGNhbmNlbEJ1dHRvbkxhYmVsPzogc3RyaW5nLFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBkZWxldGlvbiBvZiBhbiBlbnRyeSBzaG91bGQgcmVxdWlyZSBhIGNvbmZpcm0gZGlhbG9nLlxuICAgICAqL1xuICAgIGRlbGV0ZVJlcXVpcmVzQ29uZmlybURpYWxvZz86IGJvb2xlYW4sXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIGVkaXRpbmcgb2YgYW4gZW50cnkgc2hvdWxkIHJlcXVpcmUgYSBjb25maXJtIGRpYWxvZy5cbiAgICAgKi9cbiAgICBlZGl0UmVxdWlyZXNDb25maXJtRGlhbG9nPzogYm9vbGVhbixcblxuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhIHVzZWQgdG8gZ2VuZXJhdGUgYSBjb25maXJtYXRpb24gZGlhbG9nIGZvciB0aGUgZGVsZXRlIGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRGVsZXRlRGlhbG9nRGF0YT86IENvbmZpcm1EaWFsb2dEYXRhLFxuXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgdXNlZCB0byBnZW5lcmF0ZSBhIGNvbmZpcm1hdGlvbiBkaWFsb2cgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICAgKi9cbiAgICBjb25maXJtRWRpdERpYWxvZ0RhdGE/OiBDb25maXJtRGlhbG9nRGF0YVxufVxuXG4vKipcbiAqIEFsbCB0aGUgY29uZmlndXJhdGlvbiBkYXRhIHJlcXVpcmVkIHRvIGRpc3BsYXkgYSBuZ3gtbWF0LWVudGl0eS10YWJsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJsZURhdGE8RW50aXR5VHlwZSBleHRlbmRzIEJhc2VFbnRpdHlUeXBlPEVudGl0eVR5cGU+PiB7XG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UgZGF0YSBmb3IgdGhlIHRhYmxlLWNvbXBvbmVudC5cbiAgICAgKiBJbmNsdWRlcyBzdHVmZiBsaWtlIHRoZSB0aXRsZSBmb3IgdGhlIHRhYmxlLCB3aGF0IHRvIGRpc3BsYXkgaW5zaWRlIHRoZSByb3dzIGV0Yy5cbiAgICAgKi9cbiAgICBiYXNlRGF0YTogQmFzZURhdGE8RW50aXR5VHlwZT4sXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGNyZWF0ZS1kaWFsb2cuXG4gICAgICogQ2FuIGJlIG9taXR0ZWQgd2hlbiBzcGVjaWZ5aW5nIGEgY3VzdG9tIFwiY3JlYXRlXCIgbWV0aG9kIGluc2lkZSB0aGUgYmFzZURhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRGlhbG9nRGF0YT86IENyZWF0ZURpYWxvZ0RhdGEsXG4gICAgLyoqXG4gICAgICogVGhlIGRhdGEgZm9yIHRoZSBkZWZhdWx0IGVkaXQtZGlhbG9nLlxuICAgICAqIENhbiBiZSBvbWl0dGVkIHdoZW4gc3BlY2lmeWluZyBhIGN1c3RvbSBcImVkaXRcIiBtZXRob2QgaW5zaWRlIHRoZSBiYXNlRGF0YS5cbiAgICAgKi9cbiAgICBlZGl0RGF0YT86IEVkaXREYXRhPEVudGl0eVR5cGU+XG59Il19
@@ -245,10 +245,10 @@ export class NgxMatEntityTableComponent {
245
245
  }
246
246
  }
247
247
  NgxMatEntityTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableComponent, deps: [{ token: i1.MatDialog }, { token: i0.Injector }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component });
248
- NgxMatEntityTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityTableComponent, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
248
+ NgxMatEntityTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.3", type: NgxMatEntityTableComponent, selector: "ngx-mat-entity-table", inputs: { tableData: "tableData" }, viewQueries: [{ propertyName: "paginator", first: true, predicate: MatPaginator, descendants: true, static: true }, { propertyName: "sort", first: true, predicate: MatSort, descendants: true, static: true }, { propertyName: "filter", first: true, predicate: ["filter"], descendants: true, static: true }], ngImport: i0, template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell class=\"entity\" *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\" [checked]=\"selection.isSelected(entity)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatPaginator, selector: "mat-paginator", inputs: ["disabled"], exportAs: ["matPaginator"] }, { kind: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i10.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i10.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i10.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i11.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] });
249
249
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: NgxMatEntityTableComponent, decorators: [{
250
250
  type: Component,
251
- args: [{ selector: 'ngx-mat-entity-table', template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell *matCellDef=\"let module\" class=\"module\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(module) : null\" [checked]=\"selection.isSelected(module)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
251
+ args: [{ selector: 'ngx-mat-entity-table', template: "<h1 class=\"title\">{{data.baseData.title}}</h1>\n\n<div class=\"row\">\n <mat-form-field class=\"col-lg-8 col-md-6 col-sm-12\">\n <mat-label>{{data.baseData.searchLabel}}</mat-label>\n <input matInput (keyup)=\"applyFilter($event)\">\n </mat-form-field>\n <div\n *ngIf=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-2]=\"data.baseData.allowCreate()\"\n [class.col-lg-4]=\"!data.baseData.allowCreate()\"\n [class.col-md-3]=\"data.baseData.allowCreate()\"\n [class.col-md-6]=\"!data.baseData.allowCreate()\"\n [class.col-sm-6]=\"data.baseData.allowCreate()\"\n [class.col-sm-12]=\"!data.baseData.allowCreate()\"\n >\n <button type=\"button\" class=\"actions-button\" [matMenuTriggerFor]=\"menu\" mat-raised-button>\n {{data.baseData.multiSelectLabel}}\n </button>\n </div>\n <mat-menu #menu=\"matMenu\">\n <button *ngIf=\"data.baseData.allowJsonImport\" type=\"button\" [disabled]=\"importAction.enabled?.(this.selection.selected) === false\" (click)=\"runMultiAction(importAction)\" mat-menu-item>\n {{importAction.displayName}}\n </button>\n <button type=\"button\" *ngFor=\"let action of data.baseData.multiSelectActions\" [disabled]=\"multiActionDisabled(action)\" (click)=\"runMultiAction(action)\" mat-menu-item>\n {{action.displayName}}\n </button>\n </mat-menu>\n\n <div\n *ngIf=\"data.baseData.allowCreate()\"\n [class.col-lg-2]=\"data.baseData.multiSelectActions.length\"\n [class.col-lg-4]=\"!data.baseData.multiSelectActions.length\"\n [class.col-md-3]=\"data.baseData.multiSelectActions.length\"\n [class.col-md-6]=\"!data.baseData.multiSelectActions.length\"\n [class.col-sm-6]=\"data.baseData.multiSelectActions.length\"\n [class.col-sm-12]=\"!data.baseData.multiSelectActions.length\"\n >\n <button type=\"button\" class=\"create-button\" (click)=\"createEntity()\" mat-raised-button>\n {{data.baseData.createButtonLabel}}\n </button>\n </div>\n</div>\n\n<div class=\"mat-elevation-z8\">\n <mat-table [dataSource]=\"dataSource\" matSort>\n <!-- select Column -->\n <ng-container matColumnDef=\"select\">\n <mat-header-cell *matHeaderCellDef>\n <mat-checkbox (change)=\"$event ? SelectionUtilities.masterToggle(selection, dataSource) : null\" [checked]=\"selection.hasValue() && SelectionUtilities.isAllSelected(selection, dataSource)\" [indeterminate]=\"selection.hasValue() && !SelectionUtilities.isAllSelected(selection, dataSource)\"> </mat-checkbox>\n </mat-header-cell>\n <mat-cell class=\"entity\" *matCellDef=\"let entity\">\n <mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? selection.toggle(entity) : null\" [checked]=\"selection.isSelected(entity)\"> </mat-checkbox>\n </mat-cell>\n </ng-container>\n\n <ng-container *ngFor=\"let dCol of data.baseData.displayColumns\" [matColumnDef]=\"dCol.displayName\">\n <mat-header-cell *matHeaderCellDef mat-sort-header>\n {{dCol.displayName}}\n </mat-header-cell>\n <mat-cell class=\"entity\" [class.enabled]=\"data.baseData.allowUpdate(entity) || data.baseData.allowRead(entity)\" (click)=\"editEntity(entity)\" *matCellDef=\"let entity\">\n {{dCol.value(entity)}}\n </mat-cell>\n </ng-container>\n\n <mat-header-row *matHeaderRowDef=\"displayedColumns\"></mat-header-row>\n <mat-row *matRowDef=\"let row; columns: displayedColumns\"></mat-row>\n </mat-table>\n\n <mat-spinner *ngIf=\"isLoading && data.baseData.displayLoadingSpinner\" style=\"margin-left: auto; margin-right: auto; margin-top: 10px; margin-bottom: 10px;\">\n </mat-spinner>\n\n <mat-paginator [length]=\"dataSource.filteredData.length\" [pageIndex]=\"0\" [pageSize]=\"10\" [pageSizeOptions]=\"[5, 10, 25, 50]\"></mat-paginator>\n</div>", styles: [".mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:1px solid rgba(0,0,0,.12)}button{width:100%}.title{text-align:center}.actions-button,.create-button{height:56px;line-height:24px;font-size:16px}.mat-column-select{flex:0 0 75px}.enabled:hover{cursor:pointer}@media (max-width: 767px){.actions-button,.create-button{margin-bottom:15px}}\n"] }]
252
252
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i0.Injector }, { type: i2.Router }]; }, propDecorators: { tableData: [{
253
253
  type: Input
254
254
  }], paginator: [{
@@ -261,4 +261,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImpor
261
261
  type: ViewChild,
262
262
  args: ['filter', { static: true }]
263
263
  }] } });
264
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEcsT0FBTyxFQUFFLDZCQUE2QixFQUFrQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRW5HLE9BQU8sRUFB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dEMsU0FBUzsrQkFDSSxzQkFBc0I7NElBVWhDLFNBQVM7c0JBRFIsS0FBSztnQkFTcUMsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxNQUFNO3NCQUE1QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9zZWxlY3Rpb24udXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIsIEVkaXRFbnRpdHlEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LmJ1aWxkZXInO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUYWJsZURhdGFCdWlsZGVyLCBUYWJsZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vdGFibGUtZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmdWxseSBmdW5jdGlvbmFsIHRhYmxlIGZvciBkaXNwbGF5aW5nLCBjcmVhdGluZywgdXBkYXRpbmcgYW5kIGRlbGV0aW5nIGVudGl0aWVzXG4gKiBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIEBJbnB1dCBcInRhYmxlRGF0YVwiLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiVGFibGVEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5Pj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPjtcblxuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2UhOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydCE6IE1hdFNvcnQ7XG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyITogc3RyaW5nO1xuICAgIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcbiAgICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RW50aXR5VHlwZT4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBpbXBvcnRBY3Rpb24hOiBPbWl0PE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+LCAnY29uZmlybWF0aW9uRGlhbG9nJz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlIGFuZCB0aGUgRW50aXR5U2VydmljZS5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFRhYmxlRGF0YUJ1aWxkZXIodGhpcy50YWJsZURhdGEpLmdldFJlc3VsdCgpO1xuXG4gICAgICAgIHRoaXMuaW1wb3J0QWN0aW9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5kYXRhLmJhc2VEYXRhLmltcG9ydEFjdGlvbkRhdGEsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc3RhcnRJbXBvcnRKc29uKClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgICAgIGNvbnN0IGdpdmVuRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gdGhpcy5kYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChlbnRpdHk6IEVudGl0eVR5cGUsIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hTdHI6IHN0cmluZyA9IHRoaXMuZGF0YS5iYXNlRGF0YS5zZWFyY2hTdHJpbmcoZW50aXR5KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaFN0cmluZzogc3RyaW5nID0gc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRGaWx0ZXJTdHJpbmc6IHN0cmluZyA9IGZpbHRlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFNlYXJjaFN0cmluZy5pbmNsdWRlcyhmb3JtYXR0ZWRGaWx0ZXJTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdGhpcy5maWx0ZXI7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZW50aXRpZXNTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlbnRpdGllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBlbnRpdGllcztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5yZWFkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0SW1wb3J0SnNvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICBpbnB1dC5hY2NlcHQgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIGlucHV0Lm9uY2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlucHV0LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRKc29uKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9ydEpzb24oZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhPy50ZXh0IGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuaW1wb3J0QWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLmltcG9ydChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYW4gZW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgZWRpdC1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgZWRpdEVudGl0eShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlKGVudGl0eSkgfHwgdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlZGl0RGVmYXVsdFBhZ2UoZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnLCB0aGlzLmVudGl0eVNlcnZpY2UuZWRpdEJhc2VSb3V0ZSwgZW50aXR5LmlkXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBlZGl0RGVmYXVsdERpYWxvZyhlbnRpdHk6IEVudGl0eVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXREaWFsb2dEYXRhOiBFZGl0RW50aXR5RGF0YTxFbnRpdHlUeXBlPiA9IHtcbiAgICAgICAgICAgIGVudGl0eTogZW50aXR5LFxuICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgYWxsb3dVcGRhdGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZSxcbiAgICAgICAgICAgIGFsbG93RGVsZXRlOiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUsXG4gICAgICAgICAgICBlZGl0RGF0YTogdGhpcy5kYXRhLmVkaXREYXRhXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgRWRpdEVudGl0eURhdGFCdWlsZGVyKGlucHV0RGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IEVudGl0eVR5cGVbXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgICAgICAgZGF0YVt0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eS4gVGhpcyBlaXRoZXIgY2FsbHMgdGhlIGNyZWF0ZS1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRW50aXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkVudGl0eUNsYXNzXCIgc3BlY2lmaWVkIGZvciB0aGlzIHRhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdChuZXcgdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0KGVudGl0eTogRW50aXR5VHlwZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgICAgIGNyZWF0ZURpYWxvZ0RhdGE6IHRoaXMuZGF0YS5jcmVhdGVEaWFsb2dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgbWluV2lkdGg6ICc2MCUnLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgTXVsdGlBY3Rpb24gZm9yIGFsbCBzZWxlY3RlZCBlbnRyaWVzLlxuICAgICAqIEFsc28gaGFuZGxlcyBjb25maXJtYXRpb24gd2l0aCBhbiBhZGRpdGlvbmFsIGRpYWxvZyBpZiBjb25maWd1cmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBydW4uXG4gICAgICovXG4gICAgcnVuTXVsdGlBY3Rpb24oYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoIWFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyB8fCAhYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuTXVsdGlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcihhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbYERvIHlvdSByZWFsbHkgd2FudCB0byBydW4gdGhpcyBhY3Rpb24gb24gJHt0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGh9IGVudHJpZXM/YF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgYWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbjogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIE11bHRpQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgQWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIG11bHRpQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbi5lbmFibGVkPy4odGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyB0aGUgc2VhcmNoIGlucHV0IHRvIGZpbHRlciB0aGUgdGFibGUgZW50cmllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBrZXl1cC1ldmVudCB3aGljaCBjb250YWlucyB0aGUgc2VhcmNoLXN0cmluZyBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG59IiwiPGgxIGNsYXNzPVwidGl0bGVcIj57e2RhdGEuYmFzZURhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtNiBjb2wtc20tMTJcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2RhdGEuYmFzZURhdGEuc2VhcmNoTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5RmlsdGVyKCRldmVudClcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWN0aW9ucy1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0TGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmJhc2VEYXRhLmFsbG93SnNvbkltcG9ydFwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaW1wb3J0QWN0aW9uLmVuYWJsZWQ/Lih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJ1bk11bHRpQWN0aW9uKGltcG9ydEFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9uc1wiIFtkaXNhYmxlZF09XCJtdWx0aUFjdGlvbkRpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwicnVuTXVsdGlBY3Rpb24oYWN0aW9uKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy0yXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC0zXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbWQtNl09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtc20tMTJdPVwiIWRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNyZWF0ZS1idXR0b25cIiAoY2xpY2spPVwiY3JlYXRlRW50aXR5KClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cbiAgICAgICAgICAgIHt7ZGF0YS5iYXNlRGF0YS5jcmVhdGVCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCI+XG4gICAgPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydD5cbiAgICAgICAgPCEtLSBzZWxlY3QgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gU2VsZWN0aW9uVXRpbGl0aWVzLm1hc3RlclRvZ2dsZShzZWxlY3Rpb24sIGRhdGFTb3VyY2UpIDogbnVsbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIFNlbGVjdGlvblV0aWxpdGllcy5pc0FsbFNlbGVjdGVkKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSlcIiBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCBkYXRhU291cmNlKVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IG1vZHVsZVwiIGNsYXNzPVwibW9kdWxlXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKG1vZHVsZSkgOiBudWxsXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQobW9kdWxlKVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAge3tkQ29sLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsIGNsYXNzPVwiZW50aXR5XCIgW2NsYXNzLmVuYWJsZWRdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dSZWFkKGVudGl0eSlcIiAoY2xpY2spPVwiZWRpdEVudGl0eShlbnRpdHkpXCIgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICAgICAge3tkQ29sLnZhbHVlKGVudGl0eSl9fVxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGF0YS5iYXNlRGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IG1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgPC9tYXQtc3Bpbm5lcj5cblxuICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoXCIgW3BhZ2VJbmRleF09XCIwXCIgW3BhZ2VTaXplXT1cIjEwXCIgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIj48L21hdC1wYWdpbmF0b3I+XG48L2Rpdj4iXX0=
264
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQXFCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RixPQUFPLEVBQUUsU0FBUyxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDakQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUcxRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQTZCLE1BQU0sK0NBQStDLENBQUM7QUFDcEgsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDaEcsT0FBTyxFQUFFLDZCQUE2QixFQUFrQyxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xJLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRW5HLE9BQU8sRUFB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dEMsU0FBUzsrQkFDSSxzQkFBc0I7NElBVWhDLFNBQVM7c0JBRFIsS0FBSztnQkFTcUMsU0FBUztzQkFBbkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILElBQUk7c0JBQXpDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDRyxNQUFNO3NCQUE1QyxTQUFTO3VCQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0UGFnaW5hdG9yIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcbmltcG9ydCB7IE1hdFNvcnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zb3J0JztcbmltcG9ydCB7IE1hdFRhYmxlRGF0YVNvdXJjZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYmxlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBCYXNlRW50aXR5VHlwZSwgRW50aXR5IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9lbnRpdHkubW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VudGl0eS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlbGVjdGlvblV0aWxpdGllcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9zZWxlY3Rpb24udXRpbGl0aWVzJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4uL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLWRhdGEuYnVpbGRlcic7XG5pbXBvcnQgeyBOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS1kaWFsb2cvY29uZmlybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IENyZWF0ZUVudGl0eURpYWxvZ0RhdGFCdWlsZGVyLCBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2NyZWF0ZS1kaWFsb2cvY3JlYXRlLWVudGl0eS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5neE1hdEVudGl0eUNyZWF0ZURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY3JlYXRlLWRpYWxvZy9jcmVhdGUtZW50aXR5LWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWRpdEVudGl0eURhdGEgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LWRhdGEnO1xuaW1wb3J0IHsgTmd4TWF0RW50aXR5RWRpdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZWRpdC1kaWFsb2cvZWRpdC1lbnRpdHktZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFZGl0RW50aXR5RGF0YUJ1aWxkZXIsIEVkaXRFbnRpdHlEYXRhSW50ZXJuYWwgfSBmcm9tICcuL2VkaXQtZGlhbG9nL2VkaXQtZW50aXR5LmJ1aWxkZXInO1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RBY3Rpb24sIFRhYmxlRGF0YSB9IGZyb20gJy4vdGFibGUtZGF0YSc7XG5pbXBvcnQgeyBUYWJsZURhdGFCdWlsZGVyLCBUYWJsZURhdGFJbnRlcm5hbCB9IGZyb20gJy4vdGFibGUtZGF0YS5idWlsZGVyJztcblxuLyoqXG4gKiBHZW5lcmF0ZXMgYSBmdWxseSBmdW5jdGlvbmFsIHRhYmxlIGZvciBkaXNwbGF5aW5nLCBjcmVhdGluZywgdXBkYXRpbmcgYW5kIGRlbGV0aW5nIGVudGl0aWVzXG4gKiBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvbiBwYXNzZWQgaW4gdGhlIEBJbnB1dCBcInRhYmxlRGF0YVwiLlxuICpcbiAqIEl0IG9mZmVycyBhIGxvdCBvZiBjdXN0b21pemF0aW9uIG9wdGlvbnMgd2hpY2ggY2FuIGJlIGZvdW5kIGluIFwiVGFibGVEYXRhXCIuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbmd4LW1hdC1lbnRpdHktdGFibGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNYXRFbnRpdHlUYWJsZUNvbXBvbmVudDxFbnRpdHlUeXBlIGV4dGVuZHMgQmFzZUVudGl0eVR5cGU8RW50aXR5Pj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbXBvbmVudC5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHRhYmxlRGF0YSE6IFRhYmxlRGF0YTxFbnRpdHlUeXBlPjtcblxuICAgIGRhdGEhOiBUYWJsZURhdGFJbnRlcm5hbDxFbnRpdHlUeXBlPjtcblxuICAgIGlzTG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICBwcml2YXRlIGVudGl0eVNlcnZpY2UhOiBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuICAgIHByaXZhdGUgcmVhZG9ubHkgb25EZXN0cm95OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgICBAVmlld0NoaWxkKE1hdFBhZ2luYXRvciwgeyBzdGF0aWM6IHRydWUgfSkgcGFnaW5hdG9yITogTWF0UGFnaW5hdG9yO1xuICAgIEBWaWV3Q2hpbGQoTWF0U29ydCwgeyBzdGF0aWM6IHRydWUgfSkgc29ydCE6IE1hdFNvcnQ7XG4gICAgQFZpZXdDaGlsZCgnZmlsdGVyJywgeyBzdGF0aWM6IHRydWUgfSkgZmlsdGVyITogc3RyaW5nO1xuICAgIGRpc3BsYXllZENvbHVtbnMhOiBzdHJpbmdbXTtcbiAgICBkYXRhU291cmNlOiBNYXRUYWJsZURhdGFTb3VyY2U8RW50aXR5VHlwZT4gPSBuZXcgTWF0VGFibGVEYXRhU291cmNlKCk7XG4gICAgc2VsZWN0aW9uOiBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPiA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxFbnRpdHlUeXBlPih0cnVlLCBbXSk7XG5cbiAgICBTZWxlY3Rpb25VdGlsaXRpZXM6IHR5cGVvZiBTZWxlY3Rpb25VdGlsaXRpZXMgPSBTZWxlY3Rpb25VdGlsaXRpZXM7XG5cbiAgICBpbXBvcnRBY3Rpb24hOiBPbWl0PE11bHRpU2VsZWN0QWN0aW9uPEVudGl0eVR5cGU+LCAnY29uZmlybWF0aW9uRGlhbG9nJz47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHVwIGFsbCB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHRhYmxlIGFuZCB0aGUgRW50aXR5U2VydmljZS5cbiAgICAgKi9cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3IFRhYmxlRGF0YUJ1aWxkZXIodGhpcy50YWJsZURhdGEpLmdldFJlc3VsdCgpO1xuXG4gICAgICAgIHRoaXMuaW1wb3J0QWN0aW9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5kYXRhLmJhc2VEYXRhLmltcG9ydEFjdGlvbkRhdGEsXG4gICAgICAgICAgICBhY3Rpb246ICgpID0+IHRoaXMuc3RhcnRJbXBvcnRKc29uKClcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UgPSB0aGlzLmluamVjdG9yLmdldCh0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzKSBhcyBFbnRpdHlTZXJ2aWNlPEVudGl0eVR5cGU+O1xuXG4gICAgICAgIGNvbnN0IGdpdmVuRGlzcGxheUNvbHVtbnM6IHN0cmluZ1tdID0gdGhpcy5kYXRhLmJhc2VEYXRhLmRpc3BsYXlDb2x1bW5zLm1hcCgodikgPT4gdi5kaXNwbGF5TmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5ZWRDb2x1bW5zID0gWydzZWxlY3QnXS5jb25jYXQoZ2l2ZW5EaXNwbGF5Q29sdW1ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXllZENvbHVtbnMgPSBnaXZlbkRpc3BsYXlDb2x1bW5zO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnRpbmdEYXRhQWNjZXNzb3IgPSAoZW50aXR5OiBFbnRpdHlUeXBlLCBoZWFkZXI6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1ucy5maW5kKChkcCkgPT4gZHAuZGlzcGxheU5hbWUgPT09IGhlYWRlcik/LnZhbHVlKGVudGl0eSkgYXMgc3RyaW5nO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2Uuc29ydCA9IHRoaXMuc29ydDtcbiAgICAgICAgdGhpcy5kYXRhU291cmNlLmZpbHRlclByZWRpY2F0ZSA9IChlbnRpdHk6IEVudGl0eVR5cGUsIGZpbHRlcjogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWFyY2hTdHI6IHN0cmluZyA9IHRoaXMuZGF0YS5iYXNlRGF0YS5zZWFyY2hTdHJpbmcoZW50aXR5KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1hdHRlZFNlYXJjaFN0cmluZzogc3RyaW5nID0gc2VhcmNoU3RyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRGaWx0ZXJTdHJpbmc6IHN0cmluZyA9IGZpbHRlci50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZFNlYXJjaFN0cmluZy5pbmNsdWRlcyhmb3JtYXR0ZWRGaWx0ZXJTdHJpbmcpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZmlsdGVyID0gdGhpcy5maWx0ZXI7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5wYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvcjtcblxuICAgICAgICB0aGlzLmVudGl0eVNlcnZpY2UuZW50aXRpZXNTdWJqZWN0LnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKChlbnRpdGllcykgPT4ge1xuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBlbnRpdGllcztcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB2b2lkIHRoaXMuZW50aXR5U2VydmljZS5yZWFkKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0YXJ0SW1wb3J0SnNvbigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICBpbnB1dC50eXBlID0gJ2ZpbGUnO1xuICAgICAgICBpbnB1dC5hY2NlcHQgPSAnYXBwbGljYXRpb24vanNvbic7XG4gICAgICAgIGlucHV0Lm9uY2hhbmdlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlucHV0LmZpbGVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRKc29uKGlucHV0LmZpbGVzWzBdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgaW5wdXQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGltcG9ydEpzb24oZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcih0aGlzLmltcG9ydEFjdGlvbi5jb25maXJtRGlhbG9nRGF0YSlcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdCgndGV4dCcsIHRoaXMuZGF0YS5iYXNlRGF0YS5pbXBvcnRBY3Rpb25EYXRhLmNvbmZpcm1EaWFsb2dEYXRhPy50ZXh0IGFzIHN0cmluZ1tdKVxuICAgICAgICAgICAgLndpdGhEZWZhdWx0KCd0aXRsZScsIHRoaXMuaW1wb3J0QWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZvaWQgdGhpcy5lbnRpdHlTZXJ2aWNlLmltcG9ydChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRWRpdHMgYW4gZW50aXR5LiBUaGlzIGVpdGhlciBjYWxscyB0aGUgZWRpdC1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgZWRpdC1kaWFsb2cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZW50aXR5IC0gVGhlIGVudGl0eSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkLlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgZWRpdEVudGl0eShlbnRpdHk6IEVudGl0eVR5cGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKCEodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93VXBkYXRlKGVudGl0eSkgfHwgdGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93UmVhZChlbnRpdHkpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFwiRW50aXR5Q2xhc3NcIiBzcGVjaWZpZWQgZm9yIHRoaXMgdGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmVkaXQpIHtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5lZGl0KG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5iYXNlRGF0YS5kZWZhdWx0RWRpdCA9PSAncGFnZScpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdERlZmF1bHRQYWdlKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdm9pZCB0aGlzLmVkaXREZWZhdWx0RGlhbG9nKG5ldyB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5Q2xhc3MoZW50aXR5KSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBlZGl0RGVmYXVsdFBhZ2UoZW50aXR5OiBFbnRpdHlUeXBlKTogdm9pZCB7XG4gICAgICAgIHZvaWQgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycnLCB0aGlzLmVudGl0eVNlcnZpY2UuZWRpdEJhc2VSb3V0ZSwgZW50aXR5LmlkXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBlZGl0RGVmYXVsdERpYWxvZyhlbnRpdHk6IEVudGl0eVR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgaW5wdXREaWFsb2dEYXRhOiBFZGl0RW50aXR5RGF0YTxFbnRpdHlUeXBlPiA9IHtcbiAgICAgICAgICAgIGVudGl0eTogZW50aXR5LFxuICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgYWxsb3dVcGRhdGU6IHRoaXMuZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZSxcbiAgICAgICAgICAgIGFsbG93RGVsZXRlOiB0aGlzLmRhdGEuYmFzZURhdGEuYWxsb3dEZWxldGUsXG4gICAgICAgICAgICBlZGl0RGF0YTogdGhpcy5kYXRhLmVkaXREYXRhXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRpYWxvZ0RhdGE6IEVkaXRFbnRpdHlEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgRWRpdEVudGl0eURhdGFCdWlsZGVyKGlucHV0RGlhbG9nRGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIGNvbnN0IHJlczogbnVtYmVyID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLmRpYWxvZy5vcGVuKE5neE1hdEVudGl0eUVkaXREaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNjAlJyxcbiAgICAgICAgICAgICAgICBhdXRvRm9jdXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgICAgIH0pLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgKSBhcyBudW1iZXI7XG4gICAgICAgIGlmIChyZXMgPT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGE6IEVudGl0eVR5cGVbXSA9IHRoaXMuZGF0YVNvdXJjZS5kYXRhO1xuICAgICAgICAgICAgZGF0YVt0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoKGUpID0+IGVbdGhpcy5lbnRpdHlTZXJ2aWNlLmlkS2V5XSA9PT0gZW50aXR5W3RoaXMuZW50aXR5U2VydmljZS5pZEtleV0pXSA9IGVudGl0eTtcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uLmNsZWFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgbmV3IEVudGl0eS4gVGhpcyBlaXRoZXIgY2FsbHMgdGhlIGNyZWF0ZS1NZXRob2QgcHJvdmlkZWQgYnkgdGhlIHVzZXIgb3IgdXNlcyBhIGRlZmF1bHQgY3JlYXRlLWRpYWxvZy5cbiAgICAgKlxuICAgICAqIEB0aHJvd3MgV2hlbiBubyBFbnRpdHlDbGFzcyB3YXMgcHJvdmlkZWQsIGFzIGEgbmV3IGNhbGwgaXMgbmVlZGVkIHRvIGluaXRpYWxpemUgbWV0YWRhdGEuXG4gICAgICovXG4gICAgY3JlYXRlRW50aXR5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKCkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBcIkVudGl0eUNsYXNzXCIgc3BlY2lmaWVkIGZvciB0aGlzIHRhYmxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kYXRhLmJhc2VEYXRhLmNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0YS5iYXNlRGF0YS5jcmVhdGUobmV3IHRoaXMuZGF0YS5iYXNlRGF0YS5FbnRpdHlDbGFzcygpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlRGVmYXVsdChuZXcgdGhpcy5kYXRhLmJhc2VEYXRhLkVudGl0eUNsYXNzKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVEZWZhdWx0KGVudGl0eTogRW50aXR5VHlwZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDcmVhdGVFbnRpdHlEaWFsb2dEYXRhSW50ZXJuYWw8RW50aXR5VHlwZT4gPSBuZXcgQ3JlYXRlRW50aXR5RGlhbG9nRGF0YUJ1aWxkZXIoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW50aXR5OiBlbnRpdHksXG4gICAgICAgICAgICAgICAgRW50aXR5U2VydmljZUNsYXNzOiB0aGlzLmRhdGEuYmFzZURhdGEuRW50aXR5U2VydmljZUNsYXNzLFxuICAgICAgICAgICAgICAgIGNyZWF0ZURpYWxvZ0RhdGE6IHRoaXMuZGF0YS5jcmVhdGVEaWFsb2dEYXRhXG4gICAgICAgICAgICB9XG4gICAgICAgICkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q3JlYXRlRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICBkYXRhOiBkaWFsb2dEYXRhLFxuICAgICAgICAgICAgbWluV2lkdGg6ICc2MCUnLFxuICAgICAgICAgICAgYXV0b0ZvY3VzOiBmYWxzZSxcbiAgICAgICAgICAgIHJlc3RvcmVGb2N1czogZmFsc2VcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUnVucyB0aGUgTXVsdGlBY3Rpb24gZm9yIGFsbCBzZWxlY3RlZCBlbnRyaWVzLlxuICAgICAqIEFsc28gaGFuZGxlcyBjb25maXJtYXRpb24gd2l0aCBhbiBhZGRpdGlvbmFsIGRpYWxvZyBpZiBjb25maWd1cmVkLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBydW4uXG4gICAgICovXG4gICAgcnVuTXVsdGlBY3Rpb24oYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IHZvaWQge1xuICAgICAgICBpZiAoIWFjdGlvbi5yZXF1aXJlQ29uZmlybURpYWxvZyB8fCAhYWN0aW9uLnJlcXVpcmVDb25maXJtRGlhbG9nKHRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maXJtUnVuTXVsdGlBY3Rpb24oYWN0aW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkaWFsb2dEYXRhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsID0gbmV3IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlcihhY3Rpb24uY29uZmlybURpYWxvZ0RhdGEpXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RleHQnLCBbYERvIHlvdSByZWFsbHkgd2FudCB0byBydW4gdGhpcyBhY3Rpb24gb24gJHt0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZC5sZW5ndGh9IGVudHJpZXM/YF0pXG4gICAgICAgICAgICAud2l0aERlZmF1bHQoJ3RpdGxlJywgYWN0aW9uLmRpc3BsYXlOYW1lKVxuICAgICAgICAgICAgLmdldFJlc3VsdCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxOZ3hNYXRFbnRpdHlDb25maXJtRGlhbG9nQ29tcG9uZW50LCBib29sZWFuPiA9IHRoaXMuZGlhbG9nLm9wZW4oTmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgZGF0YTogZGlhbG9nRGF0YSxcbiAgICAgICAgICAgIGF1dG9Gb2N1czogZmFsc2UsXG4gICAgICAgICAgICByZXN0b3JlRm9jdXM6IGZhbHNlXG4gICAgICAgIH0pO1xuICAgICAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgIGlmIChyZXMgPT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlybVJ1bk11bHRpQWN0aW9uKGFjdGlvbjogTXVsdGlTZWxlY3RBY3Rpb248RW50aXR5VHlwZT4pOiB2b2lkIHtcbiAgICAgICAgYWN0aW9uLmFjdGlvbih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGFuIE11bHRpQWN0aW9uIGlzIGRpc2FibGVkIChlLmcuIEJlY2F1c2Ugbm8gZW50cmllcyBoYXZlIGJlZW4gc2VsZWN0ZWQpLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFjdGlvbiAtIFRoZSBNdWx0aUFjdGlvbiB0byBjaGVjay5cbiAgICAgKiBAcmV0dXJucyBXaGV0aGVyIG9yIG5vdCB0aGUgQWN0aW9uIGNhbiBiZSB1c2VkLlxuICAgICAqL1xuICAgIG11bHRpQWN0aW9uRGlzYWJsZWQoYWN0aW9uOiBNdWx0aVNlbGVjdEFjdGlvbjxFbnRpdHlUeXBlPik6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0aW9uLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFjdGlvbi5lbmFibGVkPy4odGhpcy5zZWxlY3Rpb24uc2VsZWN0ZWQpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRGVzdHJveS5uZXh0KHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQXBwbGllcyB0aGUgc2VhcmNoIGlucHV0IHRvIGZpbHRlciB0aGUgdGFibGUgZW50cmllcy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBldmVudCAtIFRoZSBrZXl1cC1ldmVudCB3aGljaCBjb250YWlucyB0aGUgc2VhcmNoLXN0cmluZyBvZiB0aGUgdXNlci5cbiAgICAgKi9cbiAgICBhcHBseUZpbHRlcihldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZmlsdGVyVmFsdWU6IHN0cmluZyA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG4gICAgICAgIHRoaXMuZGF0YVNvdXJjZS5maWx0ZXIgPSBmaWx0ZXJWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG59IiwiPGgxIGNsYXNzPVwidGl0bGVcIj57e2RhdGEuYmFzZURhdGEudGl0bGV9fTwvaDE+XG5cbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjb2wtbGctOCBjb2wtbWQtNiBjb2wtc20tMTJcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57e2RhdGEuYmFzZURhdGEuc2VhcmNoTGFiZWx9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cImFwcGx5RmlsdGVyKCRldmVudClcIj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9ucy5sZW5ndGhcIlxuICAgICAgICBbY2xhc3MuY29sLWxnLTJdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy00XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLW1kLTNdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC02XT1cIiFkYXRhLmJhc2VEYXRhLmFsbG93Q3JlYXRlKClcIlxuICAgICAgICBbY2xhc3MuY29sLXNtLTZdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS0xMl09XCIhZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICA+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYWN0aW9ucy1idXR0b25cIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVwiIG1hdC1yYWlzZWQtYnV0dG9uPlxuICAgICAgICAgICAge3tkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0TGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJkYXRhLmJhc2VEYXRhLmFsbG93SnNvbkltcG9ydFwiIHR5cGU9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiaW1wb3J0QWN0aW9uLmVuYWJsZWQ/Lih0aGlzLnNlbGVjdGlvbi5zZWxlY3RlZCkgPT09IGZhbHNlXCIgKGNsaWNrKT1cInJ1bk11bHRpQWN0aW9uKGltcG9ydEFjdGlvbilcIiBtYXQtbWVudS1pdGVtPlxuICAgICAgICAgICAge3tpbXBvcnRBY3Rpb24uZGlzcGxheU5hbWV9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBkYXRhLmJhc2VEYXRhLm11bHRpU2VsZWN0QWN0aW9uc1wiIFtkaXNhYmxlZF09XCJtdWx0aUFjdGlvbkRpc2FibGVkKGFjdGlvbilcIiAoY2xpY2spPVwicnVuTXVsdGlBY3Rpb24oYWN0aW9uKVwiIG1hdC1tZW51LWl0ZW0+XG4gICAgICAgICAgICB7e2FjdGlvbi5kaXNwbGF5TmFtZX19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LW1lbnU+XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiZGF0YS5iYXNlRGF0YS5hbGxvd0NyZWF0ZSgpXCJcbiAgICAgICAgW2NsYXNzLmNvbC1sZy0yXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbGctNF09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1tZC0zXT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtbWQtNl09XCIhZGF0YS5iYXNlRGF0YS5tdWx0aVNlbGVjdEFjdGlvbnMubGVuZ3RoXCJcbiAgICAgICAgW2NsYXNzLmNvbC1zbS02XT1cImRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgICAgIFtjbGFzcy5jb2wtc20tMTJdPVwiIWRhdGEuYmFzZURhdGEubXVsdGlTZWxlY3RBY3Rpb25zLmxlbmd0aFwiXG4gICAgPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNyZWF0ZS1idXR0b25cIiAoY2xpY2spPVwiY3JlYXRlRW50aXR5KClcIiBtYXQtcmFpc2VkLWJ1dHRvbj5cbiAgICAgICAgICAgIHt7ZGF0YS5iYXNlRGF0YS5jcmVhdGVCdXR0b25MYWJlbH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJtYXQtZWxldmF0aW9uLXo4XCI+XG4gICAgPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCIgbWF0U29ydD5cbiAgICAgICAgPCEtLSBzZWxlY3QgQ29sdW1uIC0tPlxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cInNlbGVjdFwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gU2VsZWN0aW9uVXRpbGl0aWVzLm1hc3RlclRvZ2dsZShzZWxlY3Rpb24sIGRhdGFTb3VyY2UpIDogbnVsbFwiIFtjaGVja2VkXT1cInNlbGVjdGlvbi5oYXNWYWx1ZSgpICYmIFNlbGVjdGlvblV0aWxpdGllcy5pc0FsbFNlbGVjdGVkKHNlbGVjdGlvbiwgZGF0YVNvdXJjZSlcIiBbaW5kZXRlcm1pbmF0ZV09XCJzZWxlY3Rpb24uaGFzVmFsdWUoKSAmJiAhU2VsZWN0aW9uVXRpbGl0aWVzLmlzQWxsU2VsZWN0ZWQoc2VsZWN0aW9uLCBkYXRhU291cmNlKVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsIGNsYXNzPVwiZW50aXR5XCIgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3Rpb24udG9nZ2xlKGVudGl0eSkgOiBudWxsXCIgW2NoZWNrZWRdPVwic2VsZWN0aW9uLmlzU2VsZWN0ZWQoZW50aXR5KVwiPiA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgIDwvbWF0LWNlbGw+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRDb2wgb2YgZGF0YS5iYXNlRGF0YS5kaXNwbGF5Q29sdW1uc1wiIFttYXRDb2x1bW5EZWZdPVwiZENvbC5kaXNwbGF5TmFtZVwiPlxuICAgICAgICAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+XG4gICAgICAgICAgICAgICAge3tkQ29sLmRpc3BsYXlOYW1lfX1cbiAgICAgICAgICAgIDwvbWF0LWhlYWRlci1jZWxsPlxuICAgICAgICAgICAgPG1hdC1jZWxsIGNsYXNzPVwiZW50aXR5XCIgW2NsYXNzLmVuYWJsZWRdPVwiZGF0YS5iYXNlRGF0YS5hbGxvd1VwZGF0ZShlbnRpdHkpIHx8IGRhdGEuYmFzZURhdGEuYWxsb3dSZWFkKGVudGl0eSlcIiAoY2xpY2spPVwiZWRpdEVudGl0eShlbnRpdHkpXCIgKm1hdENlbGxEZWY9XCJsZXQgZW50aXR5XCI+XG4gICAgICAgICAgICAgICAge3tkQ29sLnZhbHVlKGVudGl0eSl9fVxuICAgICAgICAgICAgPC9tYXQtY2VsbD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zXCI+PC9tYXQtaGVhZGVyLXJvdz5cbiAgICAgICAgPG1hdC1yb3cgKm1hdFJvd0RlZj1cImxldCByb3c7IGNvbHVtbnM6IGRpc3BsYXllZENvbHVtbnNcIj48L21hdC1yb3c+XG4gICAgPC9tYXQtdGFibGU+XG5cbiAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJpc0xvYWRpbmcgJiYgZGF0YS5iYXNlRGF0YS5kaXNwbGF5TG9hZGluZ1NwaW5uZXJcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IG1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206IDEwcHg7XCI+XG4gICAgPC9tYXQtc3Bpbm5lcj5cblxuICAgIDxtYXQtcGFnaW5hdG9yIFtsZW5ndGhdPVwiZGF0YVNvdXJjZS5maWx0ZXJlZERhdGEubGVuZ3RoXCIgW3BhZ2VJbmRleF09XCIwXCIgW3BhZ2VTaXplXT1cIjEwXCIgW3BhZ2VTaXplT3B0aW9uc109XCJbNSwgMTAsIDI1LCA1MF1cIj48L21hdC1wYWdpbmF0b3I+XG48L2Rpdj4iXX0=