@mediusinc/mng-commons 6.0.0-rc.2 → 6.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/core/helpers/notification.d.ts +17 -1
  2. package/core/i18n/i18n-error.d.ts +2 -3
  3. package/core/router/route-builder.d.ts +1 -1
  4. package/esm2022/core/helpers/notification.mjs +19 -4
  5. package/esm2022/core/i18n/i18n-error.mjs +10 -8
  6. package/esm2022/core/router/route-builder.mjs +2 -2
  7. package/esm2022/form/api/descriptors/action-button.descriptor.mjs +5 -17
  8. package/esm2022/form/api/descriptors/button-style.builder.mjs +80 -101
  9. package/esm2022/form/api/index.mjs +2 -1
  10. package/esm2022/form/api/models/button.model.mjs +2 -0
  11. package/esm2022/model/helpers/i18n.mjs +14 -9
  12. package/esm2022/table/components/column-value/column-value.component.mjs +4 -3
  13. package/esm2022/table/components/table/table.component.mjs +12 -11
  14. package/esm2022/table/helpers/notification.mjs +19 -13
  15. package/esm2022/tableview/action/components/action/action.component.mjs +41 -37
  16. package/esm2022/tableview/action/components/editor/injector-context/action-editor-injector-context.component.mjs +13 -8
  17. package/esm2022/tableview/action/helpers/i18n.mjs +50 -30
  18. package/esm2022/tableview/action/helpers/notification.mjs +73 -12
  19. package/esm2022/tableview/action/helpers/styles.mjs +2 -2
  20. package/esm2022/tableview/action/services/action-executor.service.mjs +83 -66
  21. package/esm2022/tableview/api/action/descriptors/action-editor.descriptor.mjs +34 -21
  22. package/esm2022/tableview/api/action/descriptors/action-link-descriptor.factory.mjs +4 -4
  23. package/esm2022/tableview/api/action/descriptors/action.descriptor.mjs +49 -67
  24. package/esm2022/tableview/api/action/models/action-confirmation.model.mjs +2 -0
  25. package/esm2022/tableview/api/action/models/action-descriptor.types.mjs +1 -1
  26. package/esm2022/tableview/api/editor/descriptors/field-action.descriptor.mjs +14 -8
  27. package/esm2022/tableview/api/editor/models/formly-custom-field.model.mjs +1 -1
  28. package/esm2022/tableview/api/index.mjs +2 -2
  29. package/esm2022/tableview/api/tableview/helpers/tableview-default-actions.mjs +67 -37
  30. package/esm2022/tableview/editor/components/editor/form-editor.component.mjs +5 -8
  31. package/esm2022/tableview/editor/components/formly/fields/formly-field-action/formly-field-action.component.mjs +7 -5
  32. package/esm2022/tableview/editor/components/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +29 -18
  33. package/esm2022/tableview/provide.mjs +44 -1
  34. package/fesm2022/mediusinc-mng-commons-core.mjs +29 -12
  35. package/fesm2022/mediusinc-mng-commons-core.mjs.map +1 -1
  36. package/fesm2022/mediusinc-mng-commons-form-api.mjs +137 -169
  37. package/fesm2022/mediusinc-mng-commons-form-api.mjs.map +1 -1
  38. package/fesm2022/mediusinc-mng-commons-model.mjs +13 -8
  39. package/fesm2022/mediusinc-mng-commons-model.mjs.map +1 -1
  40. package/fesm2022/mediusinc-mng-commons-table.mjs +32 -24
  41. package/fesm2022/mediusinc-mng-commons-table.mjs.map +1 -1
  42. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs +165 -215
  43. package/fesm2022/mediusinc-mng-commons-tableview-api.mjs.map +1 -1
  44. package/fesm2022/mediusinc-mng-commons-tableview.mjs +358 -197
  45. package/fesm2022/mediusinc-mng-commons-tableview.mjs.map +1 -1
  46. package/form/api/descriptors/action-button.descriptor.d.ts +11 -13
  47. package/form/api/descriptors/button-style.builder.d.ts +30 -44
  48. package/form/api/index.d.ts +1 -0
  49. package/form/api/models/button.model.d.ts +19 -0
  50. package/i18n/sl.json +56 -6
  51. package/model/helpers/i18n.d.ts +8 -3
  52. package/package.json +1 -1
  53. package/table/components/column-value/column-value.component.d.ts +1 -0
  54. package/table/components/table/table.component.d.ts +0 -1
  55. package/table/helpers/notification.d.ts +10 -1
  56. package/tableview/action/components/action/action.component.d.ts +8 -11
  57. package/tableview/action/helpers/i18n.d.ts +36 -11
  58. package/tableview/action/helpers/notification.d.ts +37 -3
  59. package/tableview/api/action/descriptors/action-editor.descriptor.d.ts +18 -8
  60. package/tableview/api/action/descriptors/action.descriptor.d.ts +22 -31
  61. package/tableview/api/action/models/action-confirmation.model.d.ts +14 -0
  62. package/tableview/api/action/models/action-descriptor.types.d.ts +4 -0
  63. package/tableview/api/editor/descriptors/field-action.descriptor.d.ts +5 -5
  64. package/tableview/api/index.d.ts +1 -1
  65. package/tableview/api/tableview/helpers/tableview-default-actions.d.ts +1 -1
  66. package/tableview/provide.d.ts +7 -0
  67. package/version-info.json +6 -6
  68. package/esm2022/tableview/api/action/descriptors/action-confirmation.descriptor.mjs +0 -88
  69. package/tableview/api/action/descriptors/action-confirmation.descriptor.d.ts +0 -37
@@ -1,19 +1,17 @@
1
1
  import { CommonsInternalError, StyleSizeEnum } from '@mediusinc/mng-commons/core';
2
- import { ActionButtonDescriptor, ButtonStyleBuilder } from '@mediusinc/mng-commons/form/api';
3
2
  import { EditorDataProviderInst } from '../../editor/data-providers/editor.data-provider';
4
3
  import { ActionEditorSubmitTypeEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';
5
4
  import { ActionDescriptorInst } from './action.descriptor';
6
5
  export class ActionEditorDescriptorInst extends ActionDescriptorInst {
7
6
  constructor(editorDescriptor, actionName, cfg) {
8
7
  super(actionName, {
9
- model: cfg?.model ?? editorDescriptor.model,
10
- ...cfg
8
+ ...cfg,
9
+ model: cfg?.model ?? editorDescriptor.model
11
10
  });
12
11
  this._dataProvider = undefined;
13
12
  this._editorActions = [];
14
13
  this._editorTitle = undefined;
15
14
  this._editorTitleParams = undefined;
16
- this._hasFetchNotificationSuccess = false;
17
15
  this._dialogSize = StyleSizeEnum.Normal;
18
16
  this._resubmitRefetch = true;
19
17
  this._unsavedChangesConfirmation = false;
@@ -42,14 +40,11 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
42
40
  get dialogClassName() {
43
41
  return this._dialogClassName;
44
42
  }
45
- get hasFetchNotificationSuccess() {
46
- return this._hasFetchNotificationSuccess;
43
+ get fetchNotificationOnSuccess() {
44
+ return this._fetchNotificationOnSuccess;
47
45
  }
48
- get fetchNotificationSuccessTitle() {
49
- return this._fetchNotificationSuccessTitle;
50
- }
51
- get fetchNotificationSuccessMessage() {
52
- return this._fetchNotificationSuccessMessage;
46
+ get fetchNotificationOnError() {
47
+ return this._fetchNotificationOnError;
53
48
  }
54
49
  get dataProvider() {
55
50
  return this._dataProvider;
@@ -111,10 +106,20 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
111
106
  this._submitFunction = fn;
112
107
  return this;
113
108
  }
114
- withFetchNotificationError(title, message, hasNotification = true) {
115
- this._hasFetchNotificationSuccess = hasNotification;
116
- this._fetchNotificationSuccessTitle = title;
117
- this._fetchNotificationSuccessMessage = message;
109
+ /**
110
+ * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.
111
+ *
112
+ * @param opts Provide config for texts or on/off flag for submit (is same as run) or fetch success/error notifications.
113
+ */
114
+ withNotifications(opts) {
115
+ super.withNotifications(typeof opts === 'boolean'
116
+ ? opts
117
+ : {
118
+ runOnSuccess: opts?.submitOnSuccess ?? opts?.runOnSuccess,
119
+ runOnError: opts?.submitOnError ?? opts?.runOnError
120
+ });
121
+ this._fetchNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.fetchOnSuccess;
122
+ this._fetchNotificationOnError = typeof opts === 'boolean' ? opts : opts?.fetchOnError;
118
123
  return this;
119
124
  }
120
125
  withEditorAction(action) {
@@ -151,9 +156,8 @@ export class ActionEditorDescriptorInst extends ActionDescriptorInst {
151
156
  descriptor._editorActions = this._editorActions.map(a => a.copy());
152
157
  descriptor._editorTitle = this._editorTitle;
153
158
  descriptor._editorTitleParams = this._editorTitleParams != null ? { ...this._editorTitleParams } : undefined;
154
- descriptor._hasFetchNotificationSuccess = this._hasFetchNotificationSuccess;
155
- descriptor._fetchNotificationSuccessTitle = this._fetchNotificationSuccessTitle;
156
- descriptor._fetchNotificationSuccessMessage = this._fetchNotificationSuccessMessage;
159
+ descriptor._fetchNotificationOnSuccess = typeof this._fetchNotificationOnSuccess === 'object' ? { ...this._fetchNotificationOnSuccess } : this._fetchNotificationOnSuccess;
160
+ descriptor._fetchNotificationOnError = typeof this._fetchNotificationOnError === 'object' ? { ...this._fetchNotificationOnError } : this._fetchNotificationOnError;
157
161
  descriptor._dialogSize = this._dialogSize;
158
162
  descriptor._dialogClassName = this._dialogClassName;
159
163
  descriptor._fetchFunction = this._fetchFunction;
@@ -197,7 +201,11 @@ export class ActionEditorSubmitDescriptorInst extends ActionDescriptorInst {
197
201
  * @param submitType
198
202
  */
199
203
  export function actionEditorSubmit(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {
200
- return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withActionLevel(editorAction.level)));
204
+ return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({
205
+ style: {
206
+ level: editorAction.button?.style?.level
207
+ }
208
+ });
201
209
  }
202
210
  /**
203
211
  * creates secondary button with text button style
@@ -205,6 +213,11 @@ export function actionEditorSubmit(editorAction, submitType = ActionEditorSubmit
205
213
  * @param submitType
206
214
  */
207
215
  export function actionEditorCancel(editorAction, submitType = ActionEditorSubmitTypeEnum.Cancel) {
208
- return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonDescriptor(new ActionButtonDescriptor().withStyleClass(new ButtonStyleBuilder().withTextButton().withActionLevel(editorAction.level)));
216
+ return new ActionEditorSubmitDescriptorInst(editorAction.actionName, editorAction.model, submitType).withButtonOpts({
217
+ style: {
218
+ textButton: true,
219
+ level: editorAction.button?.style?.level
220
+ }
221
+ });
209
222
  }
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ2xHLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBRzNGLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc3RyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckcsT0FBTyxFQUF1QyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBYS9GLE1BQU0sT0FBTywwQkFPWCxTQUFRLG9CQUFzRjtJQXdCNUYsWUFBbUIsZ0JBQXVELEVBQUUsVUFBa0IsRUFBRSxHQUE4RDtRQUMxSixLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2QsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUssZ0JBQWdCLENBQUMsS0FBMEM7WUFDakYsR0FBRyxHQUFHO1NBQ1QsQ0FBQyxDQUFDO1FBMUJxQixrQkFBYSxHQUFvQyxTQUFTLENBQUM7UUFFN0UsbUJBQWMsR0FBa0UsRUFBRSxDQUFDO1FBQ25GLGlCQUFZLEdBQW1CLFNBQVMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBUyxTQUFTLENBQUM7UUFFckMsaUNBQTRCLEdBQUcsS0FBSyxDQUFDO1FBSXJDLGdCQUFXLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztRQVNuQyxxQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDeEIsZ0NBQTJCLEdBQUcsS0FBSyxDQUFDO1FBUTFDLElBQUksR0FBRyxFQUFFLFdB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VSxFQUFFLFlBQVksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsb0JBQW9CLENBQ3pJLElBQUksc0JBQXNCLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxrQkFBa0IsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDN0gsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTZXJ2aWNlQ2xhc3NUeXBlLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZUJ1aWxkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25SdW5GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLCBBY3Rpb25Qb3NpdGlvbkVudW0sIEFjdGlvblR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICZcbiAgICBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gJiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIGRhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PFxuICAgIEl0ZW0sXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBFZGl0b3JJdGVtID0gSXRlbSxcbiAgICBGZXRjaElucHV0SXRlbSA9IEl0ZW0sXG4gICAgU3VibWl0UmV0dXJuSXRlbSA9IEl0ZW0sXG4gICAgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW1cbj4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9ySXRlbSwgYW55PjtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PiA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGVQYXJhbXM/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIEVkaXRvckl0ZW0+O1xuICAgIHByb3RlY3RlZCBfc3VibWl0RnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX2VkaXRvckNvbXBvbmVudD86IFR5cGU8YW55PjtcblxuICAgIHByb3RlY3RlZCBfcmVzdWJtaXRFbmFibGVkPzogYm9vbGVhbjtcbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0UmVmZXRjaCA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3JJbnN0PEVkaXRvckl0ZW0sIGFueT4sIGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgc3VwZXIoYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgbW9kZWw6IGNmZz8ubW9kZWwgPz8gKGVkaXRvckRlc2NyaXB0b3IubW9kZWwgYXMgdW5rbm93biBhcyBNb2RlbERlc2NyaXB0b3I8SXRlbT4pLFxuICAgICAgICAgICAgLi4uY2ZnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChjZmc/LnNlcnZpY2VUeXBlKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVySW5zdDxJdGVtLCBTZXJ2aWNlPihjZmcuc2VydmljZVR5cGUpO1xuICAgICAgICB9IGVsc2UgaWYgKGNmZz8uZGF0YVByb3ZpZGVyKSB7XG4gICAgICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBjZmcuZGF0YVByb3ZpZGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb25FZGl0b3JTdWJtaXQodGhpcyksIGFjdGlvbkVkaXRvckNhbmNlbCh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGVQYXJhbXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nU2l6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ1NpemU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dDbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dDbGFzc05hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBoYXNSdW5GdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBSdW4gZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgaW4gZWRpdG9yIGFjdGlvbiBmb3IgJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30uIFVzZSBzdWJtaXQgZnVuY3Rpb24gaW5zdGVhZGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcnVuRnVuY3Rpb24oKTogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+IHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBSdW4gZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgaW4gZWRpdG9yIGFjdGlvbiBmb3IgJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30uIFVzZSBzdWJtaXQgZnVuY3Rpb24gaW5zdGVhZGApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzRmV0Y2hGdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9mZXRjaEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNTdWJtaXRGdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9mZXRjaEZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3VibWl0RnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JBY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQ29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yQ29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVzdWJtaXRFbmFibGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWJtaXRFbmFibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVzdWJtaXRSZWZldGNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzdWJtaXRSZWZldGNoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvclRpdGxlKHRpdGxlOiBzdHJpbmcgfCBudWxsLCBwYXJhbXM/OiBhbnkpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXMgPSBwYXJhbXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGlhbG9nU2l6ZShzaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGlhbG9nQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ0NsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhSdW5GdW5jdGlvbihmbjogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTdWJtaXRGdW5jdGlvbihmbik7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGZXRjaEZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRmV0Y2hJbnB1dEl0ZW0sIEVkaXRvckl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZldGNoRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJtaXRGdW5jdGlvbihmbjogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hOb3RpZmljYXRpb25FcnJvcih0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBFZGl0b3JJdGVtLCBhbnksIEVkaXRvckl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbnMoYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JDb21wb25lbnQoZWRpdG9yQ29tcG9uZW50OiBUeXBlPGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQ29tcG9uZW50ID0gZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHJlc3VibWl0IHJlc3VibWl0IC0gdGhpcyBtZWFucyB0aGUgZm9ybSB3aWxsIG5vdCBleGl0IGFmdGVyIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiwgYnV0IHdpbGwgaW5zdGVhZCByZW1haW4gb3Blbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2VuYWJsZWQ9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciByZXN1Ym1pdCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZWZldGNoPXRydWVdIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgc2hvdWxkIGJlIHJlZmV0Y2hlZCBhZnRlciByZXN1Ym1pdC4gSWYgbm90LCB0aGUgZGF0YSBpbiB0aGUgZm9ybSBzdGF5cyBhcyBpcy4gRGVmYXVsdHMgdG8gdHJ1ZSBpZiBub3QgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggdGhlIHJlc3VibWl0IGNvbmZpZ3VyYXRpb24gdXBkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJlc3VibWl0KGVuYWJsZWQ/OiBib29sZWFuLCByZWZldGNoID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2ggPSByZWZldGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5RmllbGRzVG8oXG4gICAgICAgIGRlc2NyaXB0b3I6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPlxuICAgICk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIHN1cGVyLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQWN0aW9ucyA9IHRoaXMuX2VkaXRvckFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZSA9IHRoaXMuX2VkaXRvclRpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zICE9IG51bGwgPyB7Li4udGhpcy5fZWRpdG9yVGl0bGVQYXJhbXN9IDogdW5kZWZpbmVkO1xuICAgICAgICBkZXNjcmlwdG9yLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MgPSB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dTaXplID0gdGhpcy5fZGlhbG9nU2l6ZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlhbG9nQ2xhc3NOYW1lID0gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaEZ1bmN0aW9uID0gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fc3VibWl0RnVuY3Rpb24gPSB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQ29tcG9uZW50ID0gdGhpcy5fZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICBkZXNjcmlwdG9yLl9yZXN1Ym1pdEVuYWJsZWQgPSB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0UmVmZXRjaCA9IHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICAgICAgZGVzY3JpcHRvci5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yLmNvcHkoKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4oZWRpdG9yLCB0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbD8uY29weSgpLFxuICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgcGFyZW50UHJvcGVydHk6IHRoaXMuX3BhcmVudFByb3BlcnR5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXRcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uRGVzY3JpcHRvcihcbiAgICAgICAgbmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoU3R5bGVDbGFzcyhuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKCkud2l0aEFjdGlvbkxldmVsKGVkaXRvckFjdGlvbi5sZXZlbCkpXG4gICAgKTtcbn1cblxuLyoqXG4gKiBjcmVhdGVzIHNlY29uZGFyeSBidXR0b24gd2l0aCB0ZXh0IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvckNhbmNlbDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5DYW5jZWxcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uRGVzY3JpcHRvcihcbiAgICAgICAgbmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoU3R5bGVDbGFzcyhuZXcgQnV0dG9uU3R5bGVCdWlsZGVyKCkud2l0aFRleHRCdXR0b24oKS53aXRoQWN0aW9uTGV2ZWwoZWRpdG9yQWN0aW9uLmxldmVsKSlcbiAgICApO1xufVxuIl19
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5kZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1lZGl0b3IuZGVzY3JpcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsb0JBQW9CLEVBQW9CLGFBQWEsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBR2xHLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxrREFBa0QsQ0FBQztBQUc3RyxPQUFPLEVBQUMsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDckcsT0FBTyxFQUF1QyxvQkFBb0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBYS9GLE1BQU0sT0FBTywwQkFPWCxTQUFRLG9CQUFzRjtJQXVCNUYsWUFBbUIsZ0JBQXVELEVBQUUsVUFBa0IsRUFBRSxHQUE4RDtRQUMxSixLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ2QsR0FBRyxHQUFHO1lBQ04sS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLElBQUssZ0JBQWdCLENBQUMsS0FBMEM7U0FDcEYsQ0FBQyxDQUFDO1FBekJxQixrQkFBYSxHQUFvQyxTQUFTLENBQUM7UUFFN0UsbUJBQWMsR0FBa0UsRUFBRSxDQUFDO1FBQ25GLGlCQUFZLEdBQW1CLFNBQVMsQ0FBQztRQUN6Qyx1QkFBa0IsR0FBUyxTQUFTLENBQUM7UUFLckMsZ0JBQVcsR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBU25DLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixnQ0FBMkIsR0FBRyxLQUFLLENBQUM7UUFRMUMsSUFBSSxHQUFHLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLHNCQUFzQixDQUFnQixHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFD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QUFLLEVBQUUsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDO1FBQ3BJLEtBQUssRUFBRTtZQUNILEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLO1NBQzNDO0tBQ0osQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQzlCLFlBQWdGLEVBQ2hGLFVBQVUsR0FBRywwQkFBMEIsQ0FBQyxNQUFNO0lBRTlDLE9BQU8sSUFBSSxnQ0FBZ0MsQ0FBcUIsWUFBWSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNwSSxLQUFLLEVBQUU7WUFDSCxVQUFVLEVBQUUsSUFBSTtZQUNoQixLQUFLLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSztTQUMzQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0NvbW1vbnNJbnRlcm5hbEVycm9yLCBTZXJ2aWNlQ2xhc3NUeXBlLCBTdHlsZVNpemVFbnVtfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlckluc3QsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uL2VkaXRvci9kYXRhLXByb3ZpZGVycy9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0VkaXRvckRlc2NyaXB0b3JJbnN0fSBmcm9tICcuLi8uLi9lZGl0b3IvZGVzY3JpcHRvcnMvZWRpdG9yLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLCBBY3Rpb25Qb3NpdGlvbkVudW0sIEFjdGlvblR5cGVFbnVtfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uRWRpdG9yRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8TW9kZWwsIFNlcnZpY2U+ID0gQWN0aW9uRGVzY3JpcHRvckNyZWF0ZU9wdHNQYXJlbnRUeXBlICZcbiAgICBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gJiB7XG4gICAgICAgIG1vZGVsPzogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPjtcbiAgICAgICAgaXNUYWJsZXZpZXdNYWluRWRpdG9yPzogYm9vbGVhbjtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxNb2RlbCwgU2VydmljZT4gPSB7XG4gICAgc2VydmljZVR5cGU/OiBTZXJ2aWNlQ2xhc3NUeXBlPFNlcnZpY2U+O1xuICAgIGRhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8TW9kZWwsIFNlcnZpY2U+O1xufTtcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PFxuICAgIEl0ZW0sXG4gICAgU2VydmljZSA9IGFueSxcbiAgICBFZGl0b3JJdGVtID0gSXRlbSxcbiAgICBGZXRjaElucHV0SXRlbSA9IEl0ZW0sXG4gICAgU3VibWl0UmV0dXJuSXRlbSA9IEl0ZW0sXG4gICAgVmFsaWRhdGlvbklucHV0SXRlbSA9IEl0ZW1cbj4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvckluc3Q8RWRpdG9ySXRlbSwgYW55PjtcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8SXRlbSwgYW55PiA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGU/OiBzdHJpbmcgfCBudWxsID0gdW5kZWZpbmVkO1xuICAgIHByb3RlY3RlZCBfZWRpdG9yVGl0bGVQYXJhbXM/OiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzPzogQWN0aW9uTm90aWZpY2F0aW9uVHlwZSB8IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvbk9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcblxuICAgIHByb3RlY3RlZCBfZGlhbG9nU2l6ZSA9IFN0eWxlU2l6ZUVudW0uTm9ybWFsO1xuICAgIHByb3RlY3RlZCBfZGlhbG9nQ2xhc3NOYW1lPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9mZXRjaEZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEZldGNoSW5wdXRJdGVtLCBFZGl0b3JJdGVtPjtcbiAgICBwcm90ZWN0ZWQgX3N1Ym1pdEZ1bmN0aW9uPzogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIFN1Ym1pdFJldHVybkl0ZW0+O1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JDb21wb25lbnQ/OiBUeXBlPGFueT47XG5cbiAgICBwcm90ZWN0ZWQgX3Jlc3VibWl0RW5hYmxlZD86IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9yZXN1Ym1pdFJlZmV0Y2ggPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9ySW5zdDxFZGl0b3JJdGVtLCBhbnk+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIGNmZz86IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JDb25zdHJ1Y3Rvck9wdHNUeXBlPEl0ZW0sIFNlcnZpY2U+KSB7XG4gICAgICAgIHN1cGVyKGFjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIC4uLmNmZyxcbiAgICAgICAgICAgIG1vZGVsOiBjZmc/Lm1vZGVsID8/IChlZGl0b3JEZXNjcmlwdG9yLm1vZGVsIGFzIHVua25vd24gYXMgTW9kZWxEZXNjcmlwdG9yPEl0ZW0+KVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY2ZnPy5zZXJ2aWNlVHlwZSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlckluc3Q8SXRlbSwgU2VydmljZT4oY2ZnLnNlcnZpY2VUeXBlKTtcbiAgICAgICAgfSBlbHNlIGlmIChjZmc/LmRhdGFQcm92aWRlcikge1xuICAgICAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gY2ZnLmRhdGFQcm92aWRlcjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX3R5cGUgPSBBY3Rpb25UeXBlRW51bS5FZGl0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckRlc2NyaXB0b3IgPSBlZGl0b3JEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zLnB1c2goYWN0aW9uRWRpdG9yU3VibWl0KHRoaXMpLCBhY3Rpb25FZGl0b3JDYW5jZWwodGhpcykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvclRpdGxlUGFyYW1zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yVGl0bGVQYXJhbXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpYWxvZ1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dTaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25PblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoTm90aWZpY2F0aW9uT25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uIGZvciAke3RoaXMuX2FjdGlvbk5hbWVMb25nfS4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIGdldCBydW5GdW5jdGlvbigpOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4ge1xuICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uIGZvciAke3RoaXMuX2FjdGlvbk5hbWVMb25nfS4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNGZXRjaEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1N1Ym1pdEZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX2ZldGNoRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JDb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdEVuYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXN1Ym1pdFJlZmV0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2g7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB1bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yVGl0bGUodGl0bGU6IHN0cmluZyB8IG51bGwsIHBhcmFtcz86IGFueSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHBhcmFtcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dTaXplKHNpemUgPSBTdHlsZVNpemVFbnVtLk5vcm1hbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dTaXplID0gc2l6ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFJ1bkZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFN1Ym1pdEZ1bmN0aW9uKGZuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBGZXRjaElucHV0SXRlbSwgRWRpdG9ySXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1Ym1pdEZ1bmN0aW9uKGZuOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgRWRpdG9ySXRlbSwgU3VibWl0UmV0dXJuSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3VibWl0RnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGUgZGVmYXVsdCBub3RpZmljYXRpb25zIHNldHVwLiBOb3RpZmljYXRpb25zIGNhbiBlaXRoZXIgYmUgb3ZlcnJpZGRlbiB3aXRoIGN1c3RvbSB0ZXh0IG9yIHR1cm5lZCBvbi9vZmYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3B0cyBQcm92aWRlIGNvbmZpZyBmb3IgdGV4dHMgb3Igb24vb2ZmIGZsYWcgZm9yIHN1Ym1pdCAoaXMgc2FtZSBhcyBydW4pIG9yIGZldGNoIHN1Y2Nlc3MvZXJyb3Igbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aE5vdGlmaWNhdGlvbnMoXG4gICAgICAgIG9wdHM/OlxuICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICBzdWJtaXRPblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIHN1Ym1pdE9uRXJyb3I/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIHJ1bk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgcnVuT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICAgICAgZmV0Y2hPblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjtcbiAgICAgICAgICAgICAgICAgIGZldGNoT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB8IGJvb2xlYW5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgc3VwZXIud2l0aE5vdGlmaWNhdGlvbnMoXG4gICAgICAgICAgICB0eXBlb2Ygb3B0cyA9PT0gJ2Jvb2xlYW4nXG4gICAgICAgICAgICAgICAgPyBvcHRzXG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgICAgcnVuT25TdWNjZXNzOiBvcHRzPy5zdWJtaXRPblN1Y2Nlc3MgPz8gb3B0cz8ucnVuT25TdWNjZXNzLFxuICAgICAgICAgICAgICAgICAgICAgIHJ1bk9uRXJyb3I6IG9wdHM/LnN1Ym1pdE9uRXJyb3IgPz8gb3B0cz8ucnVuT25FcnJvclxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8uZmV0Y2hPblN1Y2Nlc3M7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvciA9IHR5cGVvZiBvcHRzID09PSAnYm9vbGVhbicgPyBvcHRzIDogb3B0cz8uZmV0Y2hPbkVycm9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBFZGl0b3JJdGVtLCBhbnksIEVkaXRvckl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbnMoYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvckluc3Q8YW55LCBhbnksIEVkaXRvckl0ZW0sIGFueSwgRWRpdG9ySXRlbT5bXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zID0gYWN0aW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JDb21wb25lbnQoZWRpdG9yQ29tcG9uZW50OiBUeXBlPGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQ29tcG9uZW50ID0gZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzIG9yIGRpc2FibGVzIHJlc3VibWl0IHJlc3VibWl0IC0gdGhpcyBtZWFucyB0aGUgZm9ybSB3aWxsIG5vdCBleGl0IGFmdGVyIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiwgYnV0IHdpbGwgaW5zdGVhZCByZW1haW4gb3Blbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2VuYWJsZWQ9dHJ1ZV0gLSBTcGVjaWZpZXMgd2hldGhlciByZXN1Ym1pdCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLiBEZWZhdWx0cyB0byB0cnVlIGlmIG5vdCBwcm92aWRlZC5cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtyZWZldGNoPXRydWVdIC0gU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGRhdGEgc2hvdWxkIGJlIHJlZmV0Y2hlZCBhZnRlciByZXN1Ym1pdC4gSWYgbm90LCB0aGUgZGF0YSBpbiB0aGUgZm9ybSBzdGF5cyBhcyBpcy4gRGVmYXVsdHMgdG8gdHJ1ZSBpZiBub3QgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7dGhpc30gLSBSZXR1cm5zIHRoZSBjdXJyZW50IGluc3RhbmNlIHdpdGggdGhlIHJlc3VibWl0IGNvbmZpZ3VyYXRpb24gdXBkYXRlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJlc3VibWl0KGVuYWJsZWQ/OiBib29sZWFuLCByZWZldGNoID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICB0aGlzLl9yZXN1Ym1pdFJlZmV0Y2ggPSByZWZldGNoO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uKHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbiA9IHVuc2F2ZWRDaGFuZ2VzQ29uZmlybWF0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5RmllbGRzVG8oXG4gICAgICAgIGRlc2NyaXB0b3I6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPlxuICAgICk6IEFjdGlvbkVkaXRvckRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIEVkaXRvckl0ZW0sIEZldGNoSW5wdXRJdGVtLCBTdWJtaXRSZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPiB7XG4gICAgICAgIHN1cGVyLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQWN0aW9ucyA9IHRoaXMuX2VkaXRvckFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZSA9IHRoaXMuX2VkaXRvclRpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9lZGl0b3JUaXRsZVBhcmFtcyA9IHRoaXMuX2VkaXRvclRpdGxlUGFyYW1zICE9IG51bGwgPyB7Li4udGhpcy5fZWRpdG9yVGl0bGVQYXJhbXN9IDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25TdWNjZXNzID09PSAnb2JqZWN0JyA/IHsuLi50aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2Vzc30gOiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvbk9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yID0gdHlwZW9mIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvciA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fZmV0Y2hOb3RpZmljYXRpb25PbkVycm9yfSA6IHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uT25FcnJvcjtcblxuICAgICAgICBkZXNjcmlwdG9yLl9kaWFsb2dTaXplID0gdGhpcy5fZGlhbG9nU2l6ZTtcbiAgICAgICAgZGVzY3JpcHRvci5fZGlhbG9nQ2xhc3NOYW1lID0gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgICAgICBkZXNjcmlwdG9yLl9mZXRjaEZ1bmN0aW9uID0gdGhpcy5fZmV0Y2hGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fc3VibWl0RnVuY3Rpb24gPSB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5fZWRpdG9yQ29tcG9uZW50ID0gdGhpcy5fZWRpdG9yQ29tcG9uZW50O1xuICAgICAgICBkZXNjcmlwdG9yLl9yZXN1Ym1pdEVuYWJsZWQgPSB0aGlzLl9yZXN1Ym1pdEVuYWJsZWQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Jlc3VibWl0UmVmZXRjaCA9IHRoaXMuX3Jlc3VibWl0UmVmZXRjaDtcbiAgICAgICAgZGVzY3JpcHRvci5fdW5zYXZlZENoYW5nZXNDb25maXJtYXRpb24gPSB0aGlzLl91bnNhdmVkQ2hhbmdlc0NvbmZpcm1hdGlvbjtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgY29weSgpOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBlZGl0b3IgPSB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yLmNvcHkoKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBFZGl0b3JJdGVtLCBGZXRjaElucHV0SXRlbSwgU3VibWl0UmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4oZWRpdG9yLCB0aGlzLl9hY3Rpb25OYW1lLCB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuX2RhdGFQcm92aWRlcixcbiAgICAgICAgICAgIG1vZGVsOiB0aGlzLl9tb2RlbD8uY29weSgpLFxuICAgICAgICAgICAgcGFyZW50TW9kZWw6IHRoaXMuX3BhcmVudE1vZGVsLFxuICAgICAgICAgICAgcGFyZW50UHJvcGVydHk6IHRoaXMuX3BhcmVudFByb3BlcnR5XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgdW5kZWZpbmVkLCBFZGl0b3JNb2RlbCwgRWRpdG9yTW9kZWwsIEVkaXRvck1vZGVsPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZWRpdG9yQWN0aW9uTmFtZTogc3RyaW5nLCBlZGl0b3JBY3Rpb25Nb2RlbDogTW9kZWxEZXNjcmlwdG9yPE1vZGVsPiB8IHVuZGVmaW5lZCwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb25OYW1lfS5zdWJtaXRgIDogYCR7ZWRpdG9yQWN0aW9uTmFtZX0uY2FuY2VsYCwge21vZGVsOiBlZGl0b3JBY3Rpb25Nb2RlbH0pO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG5cbiAgICBvdmVycmlkZSBjb3B5KCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4odGhpcy5fYWN0aW9uTmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyksIHRoaXMuX21vZGVsPy5jb3B5KCksIHRoaXMuX3N1Ym1pdFR5cGUpO1xuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuXG4vKipcbiAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvclN1Ym1pdDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXRcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uT3B0cyh7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBsZXZlbDogZWRpdG9yQWN0aW9uLmJ1dHRvbj8uc3R5bGU/LmxldmVsXG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuLyoqXG4gKiBjcmVhdGVzIHNlY29uZGFyeSBidXR0b24gd2l0aCB0ZXh0IGJ1dHRvbiBzdHlsZVxuICogQHBhcmFtIGVkaXRvckFjdGlvblxuICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkVkaXRvckNhbmNlbDxNb2RlbCwgRWRpdG9yTW9kZWw+KFxuICAgIGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvckluc3Q8TW9kZWwsIGFueSwgRWRpdG9yTW9kZWwsIGFueSwgYW55LCBhbnk+LFxuICAgIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5DYW5jZWxcbik6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3JJbnN0PE1vZGVsLCBFZGl0b3JNb2RlbD4ge1xuICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvckluc3Q8TW9kZWwsIEVkaXRvck1vZGVsPihlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZSwgZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uT3B0cyh7XG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICB0ZXh0QnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbGV2ZWw6IGVkaXRvckFjdGlvbi5idXR0b24/LnN0eWxlPy5sZXZlbFxuICAgICAgICB9XG4gICAgfSk7XG59XG4iXX0=
@@ -21,12 +21,12 @@ export function actionLink(actionName, opts) {
21
21
  export function actionLinkFromAction(action) {
22
22
  const descriptor = new ActionLinkDescriptorInst(action.actionName, { model: action.model });
23
23
  action.copyFieldsTo(descriptor);
24
- descriptor.withRunConfirmationDescriptor();
25
- descriptor.withRunNotificationSuccess(undefined, undefined, false);
26
- descriptor.withRunNotificationError(undefined, undefined, false);
24
+ // disable confirmation and notifications
25
+ descriptor.withRunConfirmation(false);
26
+ descriptor.withNotifications(false);
27
27
  descriptor.withAfterRunAction();
28
28
  descriptor.withOnRunErrorAction();
29
29
  descriptor.withSubactionsAsMenu(false);
30
30
  return descriptor;
31
31
  }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyxVQUFVLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztJQUUzQyxVQUFVLENBQUMsMEJBQTBCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNuRSxVQUFVLENBQUMsd0JBQXdCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUVqRSxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aFJ1bkNvbmZpcm1hdGlvbkRlc2NyaXB0b3IoKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoQWZ0ZXJSdW5BY3Rpb24oKTtcbiAgICBkZXNjcmlwdG9yLndpdGhPblJ1bkVycm9yQWN0aW9uKCk7XG5cbiAgICBkZXNjcmlwdG9yLndpdGhTdWJhY3Rpb25zQXNNZW51KGZhbHNlKTtcblxuICAgIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWxpbmstZGVzY3JpcHRvci5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdGFibGV2aWV3L2FwaS9zcmMvYWN0aW9uL2Rlc2NyaXB0b3JzL2FjdGlvbi1saW5rLWRlc2NyaXB0b3IuZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQVFsRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUF1QyxVQUFrQixFQUFFLElBQXVEO0lBQ3hJLE9BQU8sSUFBSSx3QkFBd0IsQ0FBeUIsVUFBVSxFQUFFO1FBQ3BFLEdBQUcsSUFBSTtRQUNQLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQWlDLE1BQW1FO0lBQ3BJLE1BQU0sVUFBVSxHQUFHLElBQUksd0JBQXdCLENBQXlCLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFbEgsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoQyx5Q0FBeUM7SUFDekMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVwQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUVsQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFdkMsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TW9kZWxEZXNjcmlwdG9yLCBUeXBlRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9tb2RlbCc7XG5cbmltcG9ydCB7QWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi1saW5rLmRlc2NyaXB0b3InO1xuaW1wb3J0IHtBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUsIEFjdGlvbkRlc2NyaXB0b3JJbnN0fSBmcm9tICcuL2FjdGlvbi5kZXNjcmlwdG9yJztcblxudHlwZSBBY3Rpb25MaW5rQ3JlYXRlT3B0c1R5cGU8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJiB7XG4gICAgbW9kZWw/OiBNb2RlbERlc2NyaXB0b3I8TW9kZWw+O1xuICAgIHZhbGlkYXRpb25UeXBlPzogVHlwZURlc2NyaXB0b3I8VmFsaWRhdGlvbklucHV0Pjtcbn07XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Qgd2l0aCB0aGUgcHJvdmlkZWQgYWN0aW9uIG5hbWUgYW5kIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbk5hbWUgLSBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIGFjdGlvbi5cbiAqIEBwYXJhbSB7QWN0aW9uTGlua0NyZWF0ZU9wdHNUeXBlPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+fSBbb3B0c10gLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBjb25maWd1cmluZyB0aGUgYWN0aW9uIGxpbmssIGluY2x1ZGluZyB0aGUgbW9kZWwgYW5kIHZhbGlkYXRpb24gdHlwZS5cbiAqIEByZXR1cm4ge0FjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdDxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pn0gQW4gaW5zdGFuY2Ugb2YgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0IGluaXRpYWxpemVkIHdpdGggdGhlIGFjdGlvbiBuYW1lIGFuZCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWN0aW9uTGluazxNb2RlbCA9IGFueSwgVmFsaWRhdGlvbklucHV0ID0gTW9kZWw+KGFjdGlvbk5hbWU6IHN0cmluZywgb3B0cz86IEFjdGlvbkxpbmtDcmVhdGVPcHRzVHlwZTxNb2RlbCwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIHJldHVybiBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbk5hbWUsIHtcbiAgICAgICAgLi4ub3B0cyxcbiAgICAgICAgbW9kZWw6IG9wdHM/Lm1vZGVsXG4gICAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIEFjdGlvbkxpbmtEZXNjcmlwdG9ySW5zdCBmcm9tIHRoZSBwcm92aWRlZCBBY3Rpb25EZXNjcmlwdG9ySW5zdC5cbiAqXG4gKiBAcGFyYW0ge0FjdGlvbkRlc2NyaXB0b3JJbnN0PE1vZGVsLCBhbnksIGFueSwgYW55LCBWYWxpZGF0aW9uSW5wdXQ+fSBhY3Rpb24gLSBUaGUgYWN0aW9uIGRlc2NyaXB0b3IgaW5zdGFuY2UgdGhhdCBzZXJ2ZXMgYXMgdGhlIGJhc2lzIGZvciB0aGUgYWN0aW9uIGxpbmsuXG4gKiBAcmV0dXJuIHtBY3Rpb25MaW5rRGVzY3JpcHRvckluc3Q8TW9kZWwsIFZhbGlkYXRpb25JbnB1dD59IEEgbmV3bHkgY3JlYXRlZCBBY3Rpb25MaW5rRGVzY3JpcHRvckluc3QgY29uZmlndXJlZCB3aXRoIHRoZSBwcm92aWRlZCBhY3Rpb24gcGFyYW1ldGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFjdGlvbkxpbmtGcm9tQWN0aW9uPE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQgPSBNb2RlbD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxNb2RlbCwgYW55LCBhbnksIGFueSwgVmFsaWRhdGlvbklucHV0Pikge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBuZXcgQWN0aW9uTGlua0Rlc2NyaXB0b3JJbnN0PE1vZGVsLCBWYWxpZGF0aW9uSW5wdXQ+KGFjdGlvbi5hY3Rpb25OYW1lLCB7bW9kZWw6IGFjdGlvbi5tb2RlbH0pO1xuXG4gICAgYWN0aW9uLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgIC8vIGRpc2FibGUgY29uZmlybWF0aW9uIGFuZCBub3RpZmljYXRpb25zXG4gICAgZGVzY3JpcHRvci53aXRoUnVuQ29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICBkZXNjcmlwdG9yLndpdGhOb3RpZmljYXRpb25zKGZhbHNlKTtcblxuICAgIGRlc2NyaXB0b3Iud2l0aEFmdGVyUnVuQWN0aW9uKCk7XG4gICAgZGVzY3JpcHRvci53aXRoT25SdW5FcnJvckFjdGlvbigpO1xuXG4gICAgZGVzY3JpcHRvci53aXRoU3ViYWN0aW9uc0FzTWVudShmYWxzZSk7XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdfQ==
@@ -1,8 +1,6 @@
1
1
  import { of } from 'rxjs';
2
2
  import { CommonsInternalError, DataProviderInst, LoggerService, StyleLevelEnum, findReflectTypeName } from '@mediusinc/mng-commons/core';
3
- import { ActionButtonDescriptor, ButtonStyleBuilder } from '@mediusinc/mng-commons/form/api';
4
3
  import { ActionActivationTriggerEnum, ActionPositionEnum, ActionTypeEnum } from '../models/action.type';
5
- import { ActionConfirmationDescriptor } from './action-confirmation.descriptor';
6
4
  export class ActionDescriptorInst {
7
5
  constructor(actionName, cfg) {
8
6
  this._type = ActionTypeEnum.Direct;
@@ -10,10 +8,6 @@ export class ActionDescriptorInst {
10
8
  this._position = ActionPositionEnum.ToolbarRight;
11
9
  this._level = StyleLevelEnum.Default;
12
10
  this._routeUrl = null;
13
- this._hasRunNotificationSuccess = true;
14
- this._hasRunNotificationError = true;
15
- //button
16
- this._button = new ActionButtonDescriptor();
17
11
  // multiple row selection
18
12
  this._hasItemsSelection = false;
19
13
  // subactions
@@ -62,9 +56,6 @@ export class ActionDescriptorInst {
62
56
  get position() {
63
57
  return this._position;
64
58
  }
65
- get level() {
66
- return this._level;
67
- }
68
59
  get routeUrl() {
69
60
  return this._routeUrl;
70
61
  }
@@ -92,32 +83,14 @@ export class ActionDescriptorInst {
92
83
  get actionNameLong() {
93
84
  return this._actionNameLong;
94
85
  }
95
- get className() {
96
- return this.button.styleClass.customClass;
97
- }
98
- get runConfirmationDialogDescriptor() {
99
- return this._runConfirmationDialogDescriptor;
100
- }
101
- get hasRunConfirmation() {
102
- return this._runConfirmationDialogDescriptor !== null && this._runConfirmationDialogDescriptor !== undefined;
103
- }
104
- get hasRunNotificationSuccess() {
105
- return this._hasRunNotificationSuccess;
106
- }
107
- get runNotificationSuccessTitle() {
108
- return this._runNotificationSuccessTitle;
86
+ get runConfirmation() {
87
+ return this._runConfirmation;
109
88
  }
110
- get runNotificationSuccessMessage() {
111
- return this._runNotificationSuccessMessage;
89
+ get runNotificationOnSuccess() {
90
+ return this._runNotificationOnSuccess;
112
91
  }
113
- get hasRunNotificationError() {
114
- return this._hasRunNotificationError;
115
- }
116
- get runNotificationErrorTitle() {
117
- return this._runNotificationErrorTitle;
118
- }
119
- get runNotificationErrorMessage() {
120
- return this._runNotificationErrorMessage;
92
+ get runNotificationOnError() {
93
+ return this._runNotificationOnError;
121
94
  }
122
95
  get afterRunAction() {
123
96
  return this._afterRunAction;
@@ -181,32 +154,20 @@ export class ActionDescriptorInst {
181
154
  return this;
182
155
  }
183
156
  /**
184
- * creates confirmation action with default style based on action descriptor
157
+ * Creates confirmation action with default style based on action descriptor
185
158
  */
186
- withRunConfirmation() {
187
- this._runConfirmationDialogDescriptor = new ActionConfirmationDescriptor();
188
- this._runConfirmationDialogDescriptor.acceptButton.styleClass.withActionLevel(this._level);
189
- this._runConfirmationDialogDescriptor.rejectButton?.styleClass.withActionLevel(this._level);
190
- return this._runConfirmationDialogDescriptor;
159
+ withRunConfirmation(opts = true) {
160
+ this._runConfirmation = opts === true ? {} : opts === false ? undefined : opts;
161
+ return this;
191
162
  }
192
163
  /**
193
- * Add a configuration dialogue to action using ActionConfigurationDescriptor
194
- * @param runConfirmationDialogDescriptor descriptor with customizable information for dialog
164
+ * Override default notifications setup. Notifications can either be overridden with custom text or turned on/off.
165
+ *
166
+ * @param opts Provide config for texts or on/off flag for run success/error notifications.
195
167
  */
196
- withRunConfirmationDescriptor(runConfirmationDialogDescriptor) {
197
- this._runConfirmationDialogDescriptor = runConfirmationDialogDescriptor;
198
- return this;
199
- }
200
- withRunNotificationSuccess(title, message, hasNotification = true) {
201
- this._hasRunNotificationSuccess = hasNotification;
202
- this._runNotificationSuccessTitle = title;
203
- this._runNotificationSuccessMessage = message;
204
- return this;
205
- }
206
- withRunNotificationError(title, message, hasNotification = true) {
207
- this._hasRunNotificationError = hasNotification;
208
- this._runNotificationErrorTitle = title;
209
- this._runNotificationErrorMessage = message;
168
+ withNotifications(opts) {
169
+ this._runNotificationOnSuccess = typeof opts === 'boolean' ? opts : opts?.runOnSuccess;
170
+ this._runNotificationOnError = typeof opts === 'boolean' ? opts : opts?.runOnError;
210
171
  return this;
211
172
  }
212
173
  withAfterRunAction(action) {
@@ -228,12 +189,20 @@ export class ActionDescriptorInst {
228
189
  this._tableviewCategory = category;
229
190
  return this;
230
191
  }
231
- withButtonDescriptor(button) {
192
+ withButtonOpts(button) {
232
193
  this._button = button;
233
194
  return this;
234
195
  }
235
- withButton(label, icon = null, styleLevel = StyleLevelEnum.Default, styleText = false) {
236
- this._button = new ActionButtonDescriptor().withLabel(label).withIcon(icon).withStyleClass(new ButtonStyleBuilder(styleLevel).withTextButton(styleText));
196
+ withButton(label, icon = null, level) {
197
+ this._button = {
198
+ ...this._button,
199
+ label,
200
+ icon,
201
+ style: {
202
+ ...this._button?.style,
203
+ level: level
204
+ }
205
+ };
237
206
  return this;
238
207
  }
239
208
  withItemsSelection(hasSelection = true) {
@@ -284,13 +253,17 @@ export class ActionDescriptorInst {
284
253
  descriptor._runFunction = this._runFunction;
285
254
  descriptor._isVisibleFunction = this._isVisibleFunction;
286
255
  descriptor._isEnabledFunction = this._isEnabledFunction;
287
- descriptor._runConfirmationDialogDescriptor = this._runConfirmationDialogDescriptor?.copy();
288
- descriptor._hasRunNotificationSuccess = this._hasRunNotificationSuccess;
289
- descriptor._runNotificationSuccessTitle = this._runNotificationSuccessTitle;
290
- descriptor._runNotificationSuccessMessage = this._runNotificationSuccessMessage;
291
- descriptor._hasRunNotificationError = this._hasRunNotificationError;
292
- descriptor._runNotificationErrorTitle = this._runNotificationErrorTitle;
293
- descriptor._runNotificationErrorMessage = this._runNotificationErrorMessage;
256
+ if (this._runConfirmation) {
257
+ descriptor._runConfirmation = { ...this._runConfirmation };
258
+ if (this._runConfirmation.acceptButton) {
259
+ descriptor._runConfirmation.acceptButton = { ...this._runConfirmation.acceptButton };
260
+ }
261
+ if (this._runConfirmation.rejectButton) {
262
+ descriptor._runConfirmation.rejectButton = { ...this._runConfirmation.rejectButton };
263
+ }
264
+ }
265
+ descriptor._runNotificationOnSuccess = typeof this._runNotificationOnSuccess === 'object' ? { ...this._runNotificationOnSuccess } : this._runNotificationOnSuccess;
266
+ descriptor._runNotificationOnError = typeof this._runNotificationOnError === 'object' ? { ...this._runNotificationOnError } : this._runNotificationOnError;
294
267
  if (this._afterRunAction != null) {
295
268
  descriptor._afterRunAction = typeof this._afterRunAction === 'function' ? this._afterRunAction : this._afterRunAction.copy();
296
269
  }
@@ -298,7 +271,16 @@ export class ActionDescriptorInst {
298
271
  descriptor._onRunErrorAction = typeof this._onRunErrorAction === 'function' ? this._onRunErrorAction : this._onRunErrorAction.copy();
299
272
  }
300
273
  descriptor._permissions = this._permissions;
301
- descriptor._button = this._button.copy();
274
+ if (this._button) {
275
+ descriptor._button = {
276
+ ...this._button
277
+ };
278
+ if (this._button.style) {
279
+ descriptor._button.style = {
280
+ ...this._button.style
281
+ };
282
+ }
283
+ }
302
284
  descriptor._hasItemsSelection = this._hasItemsSelection;
303
285
  descriptor._component = this._component;
304
286
  descriptor._componentFromDi = this._componentFromDi;
@@ -317,4 +299,4 @@ export class ActionDescriptorInst {
317
299
  return descriptor;
318
300
  }
319
301
  }
320
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLG1CQUFtQixFQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBSzNGLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUV0RyxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQW9COUUsTUFBTSxPQUFPLG9CQUFvQjtJQXNEN0IsWUFBbUIsVUFBa0IsRUFBRSxHQUF3RDtRQTNDckYsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFDO1FBSWhELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBUWhDLCtCQUEwQixHQUFHLElBQUksQ0FBQztRQUlsQyw2QkFBd0IsR0FBRyxJQUFJLENBQUM7UUFVMUMsUUFBUTtRQUNFLFlBQU8sR0FBRyxJQUFJLHNCQUFzQixFQUFFLENBQUM7UUFFakQseUJBQXlCO1FBQ2YsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBTXJDLGFBQWE7UUFDSCxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JB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QUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlCLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0aW9uVG9rZW4sIFR5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge29mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBBUGVybWlzc2lvbnMsXG4gICAgQ2xhc3NUeXBlLFxuICAgIENvbW1vbnNJbnRlcm5hbEVycm9yLFxuICAgIERhdGFQcm92aWRlckluc3QsXG4gICAgSUFjdGlvbkRlc2NyaXB0b3IsXG4gICAgSURhdGFQcm92aWRlcixcbiAgICBMb2dnZXJTZXJ2aWNlLFxuICAgIFNlcnZpY2VDbGFzc1R5cGUsXG4gICAgU3R5bGVMZXZlbEVudW0sXG4gICAgZmluZFJlZmxlY3RUeXBlTmFtZVxufSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBCdXR0b25TdHlsZUJ1aWxkZXJ9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvZm9ybS9hcGknO1xuaW1wb3J0IHtNb2RlbERlc2NyaXB0b3J9IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvbW9kZWwnO1xuXG5pbXBvcnQge0lBY3Rpb25Db21wb25lbnR9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tY29tcG9uZW50Lm1vZGVsJztcbmltcG9ydCB7QWN0aW9uUnVuRm5UeXBlLCBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlfSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWRlc2NyaXB0b3IudHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4uL21vZGVscy9hY3Rpb24udHlwZSc7XG5pbXBvcnQge0lBY3Rpb25Db250ZXh0fSBmcm9tICcuLi9tb2RlbHMvZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcbmltcG9ydCB7QWN0aW9uQ29uZmlybWF0aW9uRGVzY3JpcHRvcn0gZnJvbSAnLi9hY3Rpb24tY29uZmlybWF0aW9uLmRlc2NyaXB0b3InO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxJdGVtLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSA9IHtcbiAgICBwYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEl0ZW0sIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICB9O1xuXG50eXBlIEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiA9IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBSdW5SZXR1cm5JdGVtLCBhbnksIHVuZGVmaW5lZD47XG50eXBlIE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gPSBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgUnVuSW5wdXRJdGVtLCBhbnksIHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlID0gYW55LCBSdW5JbnB1dEl0ZW0gPSBJdGVtLCBSdW5SZXR1cm5JdGVtID0gSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IFJ1bklucHV0SXRlbT4gaW1wbGVtZW50cyBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogU3R5bGVMZXZlbEVudW0gPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0O1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfdGFibGV2aWV3Q2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcj86IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8UnVuSW5wdXRJdGVtPjtcblxuICAgIHByb3RlY3RlZCBfaGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcyA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfaGFzUnVuTm90aWZpY2F0aW9uRXJyb3IgPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbkVycm9yTWVzc2FnZT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfYWZ0ZXJSdW5BY3Rpb24/OiBBZnRlclJ1bkFjdGlvblR5cGU8UnVuUmV0dXJuSXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnk+KSA9PiBBZnRlclJ1bkFjdGlvblR5cGU8UnVuUmV0dXJuSXRlbT4pO1xuICAgIHByb3RlY3RlZCBfb25SdW5FcnJvckFjdGlvbj86IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnk+KSA9PiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+KTtcblxuICAgIC8vIHNlY3VyaXR5XG4gICAgcHJvdGVjdGVkIF9wZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIC8vYnV0dG9uXG4gICAgcHJvdGVjdGVkIF9idXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpO1xuXG4gICAgLy8gbXVsdGlwbGUgcm93IHNlbGVjdGlvblxuICAgIHByb3RlY3RlZCBfaGFzSXRlbXNTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIC8vIGN1c3RvbSBhY3Rpb24gY29tcG9uZW50XG4gICAgcHJvdGVjdGVkIF9jb21wb25lbnQ/OiBUeXBlPElBY3Rpb25Db21wb25lbnQ8SXRlbT4+O1xuICAgIHByb3RlY3RlZCBfY29tcG9uZW50RnJvbURpPzogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PjtcblxuICAgIC8vIHN1YmFjdGlvbnNcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnNBc01lbnUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIGFueSwgUnVuSW5wdXRJdGVtLCBhbnk+PiA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBjZmc/Lm1vZGVsO1xuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lID0gYWN0aW9uTmFtZTtcblxuICAgICAgICBpZiAoKGNmZz8ucGFyZW50TW9kZWwgJiYgIWNmZz8ucGFyZW50UHJvcGVydHkpIHx8ICghY2ZnPy5wYXJlbnRQcm9wZXJ0eSAmJiBjZmc/LnBhcmVudFByb3BlcnR5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgIGBQcm92aWRlIGJvdGggdGhlIHBhcmVudCBtb2RlbCBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7dGhpcy5fYWN0aW9uTmFtZX0sICR7Y2ZnPy5wYXJlbnRNb2RlbD8uaTE4bkJhc2VLZXl9LCAke2NmZz8ucGFyZW50UHJvcGVydHl9LmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGFyZW50TW9kZWwgPSBjZmc/LnBhcmVudE1vZGVsO1xuICAgICAgICB0aGlzLl9wYXJlbnRQcm9wZXJ0eSA9IGNmZz8ucGFyZW50UHJvcGVydHk7XG5cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KCk7XG5cbiAgICAgICAgaWYgKGNmZz8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBEYXRhUHJvdmlkZXJJbnN0PEl0ZW0sIFNlcnZpY2U+KGNmZy5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ZnPy5kYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGNmZy5kYXRhUHJvdmlkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBhY3Rpb25OYW1lO1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwpIGRpc3BsYXlOYW1lID0gdGhpcy5fbW9kZWwuaTE4bkJhc2VLZXkgPyBgJHt0aGlzLl9tb2RlbC5pMThuQmFzZUtleX0uJHtkaXNwbGF5TmFtZX1gIDogZGlzcGxheU5hbWU7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRNb2RlbCkge1xuICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBgJHt0aGlzLl9wYXJlbnRNb2RlbC5pMThuQmFzZUtleX0uJHt0aGlzLl9wYXJlbnRQcm9wZXJ0eX1fJHtkaXNwbGF5TmFtZX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWVMb25nID0gZGlzcGxheU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50TW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpMThuTW9kZWxBY3Rpb25CYXNlS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZhdGlvblRyaWdnZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3J1bkZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuRnVuY3Rpb24oKTogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYFJ1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IGFuZCBjYW5ub3QgYmUgaW52b2tlZGApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24uc3R5bGVDbGFzcy5jdXN0b21DbGFzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciAhPT0gbnVsbCAmJiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjb21wb25lbnRGcm9tRGkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRGcm9tRGk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJhY3Rpb25zQXNNZW51KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1vZGVsIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50TW9kZWxcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudE1vZGVsLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb24oZm46IEFjdGlvblJ1bkZuVHlwZTxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb24oZm4/OiBBY3Rpb25WYWxpZGF0aW9uRm5UeXBlPFZhbGlkYXRpb25JbnB1dEl0ZW0sIFNlcnZpY2U+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvbihwb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgY29uZmlybWF0aW9uIGFjdGlvbiB3aXRoIGRlZmF1bHQgc3R5bGUgYmFzZWQgb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbigpOiBBY3Rpb25Db25maXJtYXRpb25EZXNjcmlwdG9yPFJ1bklucHV0SXRlbT4ge1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yID0gbmV3IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8UnVuSW5wdXRJdGVtPigpO1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yLmFjY2VwdEJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IucmVqZWN0QnV0dG9uPy5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgY29uZmlndXJhdGlvbiBkaWFsb2d1ZSB0byBhY3Rpb24gdXNpbmcgQWN0aW9uQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciBkZXNjcmlwdG9yIHdpdGggY3VzdG9taXphYmxlIGluZm9ybWF0aW9uIGZvciBkaWFsb2dcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbkRlc2NyaXB0b3IocnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcj86IEFjdGlvbkNvbmZpcm1hdGlvbkRlc2NyaXB0b3I8UnVuSW5wdXRJdGVtPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yID0gcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHRpdGxlPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBoYXNOb3RpZmljYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uRXJyb3IgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZnRlclJ1bkFjdGlvbihhY3Rpb24/OiBBZnRlclJ1bkFjdGlvblR5cGU8UnVuUmV0dXJuSXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnk+KSA9PiBBZnRlclJ1bkFjdGlvblR5cGU8UnVuUmV0dXJuSXRlbT4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyUnVuQWN0aW9uID0gYWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uUnVuRXJyb3JBY3Rpb24oYWN0aW9uPzogT25FcnJvckFjdGlvblR5cGU8UnVuSW5wdXRJdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueT4pID0+IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4pKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gPSBhY3Rpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIExvZ2dlclNlcnZpY2UuZ2V0KCkuZGVidWcoXG4gICAgICAgICAgICAgICAgYFdBUk5JTkc6IFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KGNhdGVnb3J5OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBjYXRlZ29yeTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25EZXNjcmlwdG9yKGJ1dHRvbjogQWN0aW9uQnV0dG9uRGVzY3JpcHRvcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBidXR0b247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uKGxhYmVsPzogc3RyaW5nIHwgbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHN0eWxlTGV2ZWwgPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0LCBzdHlsZVRleHQgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhMYWJlbChsYWJlbCkud2l0aEljb24oaWNvbikud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcihzdHlsZUxldmVsKS53aXRoVGV4dEJ1dHRvbihzdHlsZVRleHQpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJdGVtc1NlbGVjdGlvbihoYXNTZWxlY3Rpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uID0gaGFzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID8/IChjdHggPT4gb2YoKGN0eC5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA/PyAwKSA+IDApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb21wb25lbnQoY29tcG9uZW50OiBUeXBlPElBY3Rpb25Db21wb25lbnQ8SXRlbT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDb21wb25lbnRGcm9tRGkoaW5qZWN0aW9uVG9rZW46IEluamVjdGlvblRva2VuPFR5cGU8YW55Pj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50RnJvbURpID0gaW5qZWN0aW9uVG9rZW47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllczogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzID0gcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEkxOG5CYXNlKGJhc2U6IENsYXNzVHlwZTx1bmtub3duPiB8IHN0cmluZyk6IHRoaXMge1xuICAgICAgICBpZiAodHlwZW9mIGJhc2UgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zdCB0eXBlTmFtZSA9IGZpbmRSZWZsZWN0VHlwZU5hbWUoYmFzZSk7XG4gICAgICAgICAgICBpZiAoIXR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKGBDb3VsZCBub3QgZmluZCBkZWZpbmUgaTE4bkJhc2VLZXkgZm9yICR7YmFzZX0gb24gYWN0aW9uICR7dGhpcy5hY3Rpb25OYW1lTG9uZ31gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJhc2UgPSB0eXBlTmFtZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoYmFzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3ViYWN0aW9uc0FzTWVudShzdWJhY3Rpb25zQXNNZW51ID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJhY3Rpb25zQXNNZW51ID0gc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJhY3Rpb25zKC4uLnN1YmFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIGFueSwgUnVuSW5wdXRJdGVtLCBhbnk+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJhY3Rpb25zLnB1c2goLi4uc3ViYWN0aW9ucyk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5RmllbGRzVG8oXG4gICAgICAgIGRlc2NyaXB0b3I6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT5cbiAgICApOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+IHtcbiAgICAgICAgZGVzY3JpcHRvci5faTE4bk1vZGVsQWN0aW9uQmFzZUtleSA9IHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3R5cGUgPSB0aGlzLl90eXBlO1xuICAgICAgICBkZXNjcmlwdG9yLl9hY3RpdmF0aW9uVHJpZ2dlciA9IHRoaXMuX2FjdGl2YXRpb25UcmlnZ2VyO1xuICAgICAgICBkZXNjcmlwdG9yLl9wb3NpdGlvbiA9IHRoaXMuX3Bvc2l0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9sZXZlbCA9IHRoaXMuX2xldmVsO1xuICAgICAgICBkZXNjcmlwdG9yLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPSB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPyBbLi4udGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzXSA6IHVuZGVmaW5lZDtcblxuICAgICAgICBkZXNjcmlwdG9yLl90YWJsZXZpZXdDYXRlZ29yeSA9IHRoaXMuX3RhYmxldmlld0NhdGVnb3J5O1xuICAgICAgICBkZXNjcmlwdG9yLl9yb3V0ZVVybCA9IHRoaXMuX3JvdXRlVXJsO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bkZ1bmN0aW9uID0gdGhpcy5fcnVuRnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2lzVmlzaWJsZUZ1bmN0aW9uID0gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2lzRW5hYmxlZEZ1bmN0aW9uID0gdGhpcy5faXNFbmFibGVkRnVuY3Rpb247XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciA9IHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I/LmNvcHkoKTtcblxuICAgICAgICBkZXNjcmlwdG9yLl9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzID0gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICAgICAgZGVzY3JpcHRvci5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSA9IHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yID0gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uRXJyb3I7XG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUgPSB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlO1xuICAgICAgICBkZXNjcmlwdG9yLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UgPSB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U7XG5cbiAgICAgICAgaWYgKHRoaXMuX2FmdGVyUnVuQWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX2FmdGVyUnVuQWN0aW9uID0gdHlwZW9mIHRoaXMuX2FmdGVyUnVuQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fYWZ0ZXJSdW5BY3Rpb24gOiB0aGlzLl9hZnRlclJ1bkFjdGlvbi5jb3B5KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gIT0gbnVsbCkge1xuICAgICAgICAgICAgZGVzY3JpcHRvci5fb25SdW5FcnJvckFjdGlvbiA9IHR5cGVvZiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID09PSAnZnVuY3Rpb24nID8gdGhpcy5fb25SdW5FcnJvckFjdGlvbiA6IHRoaXMuX29uUnVuRXJyb3JBY3Rpb24uY29weSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcGVybWlzc2lvbnMgPSB0aGlzLl9wZXJtaXNzaW9ucztcblxuICAgICAgICBkZXNjcmlwdG9yLl9idXR0b24gPSB0aGlzLl9idXR0b24uY29weSgpO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX2hhc0l0ZW1zU2VsZWN0aW9uID0gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbXBvbmVudCA9IHRoaXMuX2NvbXBvbmVudDtcbiAgICAgICAgZGVzY3JpcHRvci5fY29tcG9uZW50RnJvbURpID0gdGhpcy5fY29tcG9uZW50RnJvbURpO1xuICAgICAgICBkZXNjcmlwdG9yLl9zdWJhY3Rpb25zQXNNZW51ID0gdGhpcy5fc3ViYWN0aW9uc0FzTWVudTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9ucyA9IHRoaXMuX3N1YmFjdGlvbnMubWFwKGEgPT4gYS5jb3B5KCkpO1xuXG4gICAgICAgIHJldHVybiBkZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5KCk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBjb25zdCBkZXNjcmlwdG9yID0gbmV3IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4odGhpcy5fYWN0aW9uTmFtZSwge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyOiB0aGlzLl9kYXRhUHJvdmlkZXIsXG4gICAgICAgICAgICBtb2RlbDogdGhpcy5fbW9kZWw/LmNvcHkoKSxcbiAgICAgICAgICAgIHBhcmVudE1vZGVsOiB0aGlzLl9wYXJlbnRNb2RlbCxcbiAgICAgICAgICAgIHBhcmVudFByb3BlcnR5OiB0aGlzLl9wYXJlbnRQcm9wZXJ0eVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmNvcHlGaWVsZHNUbyhkZXNjcmlwdG9yKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG59XG4iXX0=
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vZGVzY3JpcHRvcnMvYWN0aW9uLmRlc2NyaXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEVBR0gsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUdoQixhQUFhLEVBRWIsY0FBYyxFQUNkLG1CQUFtQixFQUN0QixNQUFNLDZCQUE2QixDQUFDO0FBT3JDLE9BQU8sRUFBQywyQkFBMkIsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQXFCdEcsTUFBTSxPQUFPLG9CQUFvQjtJQWlEN0IsWUFBbUIsVUFBa0IsRUFBRSxHQUF3RDtRQXRDckYsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFtQixjQUFjLENBQUMsT0FBTyxDQUFDO1FBSWhELGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBb0IxQyx5QkFBeUI7UUFDZix1QkFBa0IsR0FBRyxLQUFLLENBQUM7UUFNckMsYUFBYTtRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUE4RCxFQUFFLENBQUM7UUFHbEYsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEVBQUUsV0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxJQUFJLEdBQUcsRUFB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SSxDQUFDLGlCQUFpQixDQUFDO1FBQ3RELFVBQVUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUU3RCxPQUFPLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBRU0sSUFBSTtRQUNQLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQW9CLENBQWtFLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDM0gsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtZQUMxQixXQUFXLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDOUIsY0FBYyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ3ZDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFOUIsT0FBTyxVQUFVLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgVHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7b2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICAgIEFQZXJtaXNzaW9ucyxcbiAgICBDbGFzc1R5cGUsXG4gICAgQ29tbW9uc0ludGVybmFsRXJyb3IsXG4gICAgRGF0YVByb3ZpZGVySW5zdCxcbiAgICBJQWN0aW9uRGVzY3JpcHRvcixcbiAgICBJRGF0YVByb3ZpZGVyLFxuICAgIExvZ2dlclNlcnZpY2UsXG4gICAgU2VydmljZUNsYXNzVHlwZSxcbiAgICBTdHlsZUxldmVsRW51bSxcbiAgICBmaW5kUmVmbGVjdFR5cGVOYW1lXG59IGZyb20gJ0BtZWRpdXNpbmMvbW5nLWNvbW1vbnMvY29yZSc7XG5pbXBvcnQge0lBY3Rpb25CdXR0b25EZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2Zvcm0vYXBpJztcbmltcG9ydCB7TW9kZWxEZXNjcmlwdG9yfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL21vZGVsJztcblxuaW1wb3J0IHtJQWN0aW9uQ29tcG9uZW50fSBmcm9tICcuLi9tb2RlbHMvYWN0aW9uLWNvbXBvbmVudC5tb2RlbCc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbn0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi1jb25maXJtYXRpb24ubW9kZWwnO1xuaW1wb3J0IHtBY3Rpb25Ob3RpZmljYXRpb25UeXBlLCBBY3Rpb25SdW5GblR5cGUsIEFjdGlvblZhbGlkYXRpb25GblR5cGV9IGZyb20gJy4uL21vZGVscy9hY3Rpb24tZGVzY3JpcHRvci50eXBlcyc7XG5pbXBvcnQge0FjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBBY3Rpb25UeXBlRW51bX0gZnJvbSAnLi4vbW9kZWxzL2FjdGlvbi50eXBlJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4uL21vZGVscy9leGVjdXRpb24vYWN0aW9uLWNvbnRleHQubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1Byb3ZpZGVyVHlwZTxJdGVtLCBTZXJ2aWNlPiA9IHtcbiAgICBzZXJ2aWNlVHlwZT86IFNlcnZpY2VDbGFzc1R5cGU8U2VydmljZT47XG4gICAgZGF0YVByb3ZpZGVyPzogSURhdGFQcm92aWRlcjxJdGVtLCBTZXJ2aWNlPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUGFyZW50VHlwZSA9IHtcbiAgICBwYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4gPSBBY3Rpb25EZXNjcmlwdG9yQ3JlYXRlT3B0c1BhcmVudFR5cGUgJlxuICAgIEFjdGlvbkRlc2NyaXB0b3JDcmVhdGVPcHRzUHJvdmlkZXJUeXBlPEl0ZW0sIFNlcnZpY2U+ICYge1xuICAgICAgICBtb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICB9O1xuXG50eXBlIEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiA9IEFjdGlvbkRlc2NyaXB0b3JJbnN0PGFueSwgYW55LCBSdW5SZXR1cm5JdGVtLCBhbnksIHVuZGVmaW5lZD47XG50eXBlIE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gPSBBY3Rpb25EZXNjcmlwdG9ySW5zdDxhbnksIGFueSwgUnVuSW5wdXRJdGVtLCBhbnksIHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlID0gYW55LCBSdW5JbnB1dEl0ZW0gPSBJdGVtLCBSdW5SZXR1cm5JdGVtID0gSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbSA9IFJ1bklucHV0SXRlbT4gaW1wbGVtZW50cyBJQWN0aW9uRGVzY3JpcHRvcjxJdGVtLCBTZXJ2aWNlPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxJdGVtPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRNb2RlbD86IE1vZGVsRGVzY3JpcHRvcjxhbnk+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8SXRlbSwgU2VydmljZT47XG5cbiAgICBwcm90ZWN0ZWQgX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogU3R5bGVMZXZlbEVudW0gPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0O1xuICAgIHByaXZhdGUgX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcz86IHN0cmluZ1tdO1xuICAgIHByb3RlY3RlZCBfdGFibGV2aWV3Q2F0ZWdvcnk/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogQWN0aW9uVmFsaWRhdGlvbkZuVHlwZTxWYWxpZGF0aW9uSW5wdXRJdGVtLCBTZXJ2aWNlPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uPzogQWN0aW9uQ29uZmlybWF0aW9uPFJ1bklucHV0SXRlbT47XG5cbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2Vzcz86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFuO1xuXG4gICAgcHJvdGVjdGVkIF9hZnRlclJ1bkFjdGlvbj86IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueT4pID0+IEFmdGVyUnVuQWN0aW9uVHlwZTxSdW5SZXR1cm5JdGVtPik7XG4gICAgcHJvdGVjdGVkIF9vblJ1bkVycm9yQWN0aW9uPzogT25FcnJvckFjdGlvblR5cGU8UnVuSW5wdXRJdGVtPiB8ICgoY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBSdW5JbnB1dEl0ZW0sIGFueT4pID0+IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4pO1xuXG4gICAgLy8gc2VjdXJpdHlcbiAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgLy9idXR0b25cbiAgICBwcm90ZWN0ZWQgX2J1dHRvbj86IElBY3Rpb25CdXR0b25EZXNjcmlwdG9yO1xuXG4gICAgLy8gbXVsdGlwbGUgcm93IHNlbGVjdGlvblxuICAgIHByb3RlY3RlZCBfaGFzSXRlbXNTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIC8vIGN1c3RvbSBhY3Rpb24gY29tcG9uZW50XG4gICAgcHJvdGVjdGVkIF9jb21wb25lbnQ/OiBUeXBlPElBY3Rpb25Db21wb25lbnQ8SXRlbT4+O1xuICAgIHByb3RlY3RlZCBfY29tcG9uZW50RnJvbURpPzogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+PjtcblxuICAgIC8vIHN1YmFjdGlvbnNcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnNBc01lbnUgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgX3N1YmFjdGlvbnM6IEFycmF5PEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIGFueSwgUnVuSW5wdXRJdGVtLCBhbnk+PiA9IFtdO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFjdGlvbk5hbWU6IHN0cmluZywgY2ZnPzogQWN0aW9uRGVzY3JpcHRvckNvbnN0cnVjdG9yT3B0c1R5cGU8SXRlbSwgU2VydmljZT4pIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBjZmc/Lm1vZGVsO1xuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lID0gYWN0aW9uTmFtZTtcblxuICAgICAgICBpZiAoKGNmZz8ucGFyZW50TW9kZWwgJiYgIWNmZz8ucGFyZW50UHJvcGVydHkpIHx8ICghY2ZnPy5wYXJlbnRQcm9wZXJ0eSAmJiBjZmc/LnBhcmVudFByb3BlcnR5KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IENvbW1vbnNJbnRlcm5hbEVycm9yKFxuICAgICAgICAgICAgICAgIGBQcm92aWRlIGJvdGggdGhlIHBhcmVudCBtb2RlbCBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7dGhpcy5fYWN0aW9uTmFtZX0sICR7Y2ZnPy5wYXJlbnRNb2RlbD8uaTE4bkJhc2VLZXl9LCAke2NmZz8ucGFyZW50UHJvcGVydHl9LmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGFyZW50TW9kZWwgPSBjZmc/LnBhcmVudE1vZGVsO1xuICAgICAgICB0aGlzLl9wYXJlbnRQcm9wZXJ0eSA9IGNmZz8ucGFyZW50UHJvcGVydHk7XG5cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KCk7XG5cbiAgICAgICAgaWYgKGNmZz8uc2VydmljZVR5cGUpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBEYXRhUHJvdmlkZXJJbnN0PEl0ZW0sIFNlcnZpY2U+KGNmZy5zZXJ2aWNlVHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY2ZnPy5kYXRhUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGNmZy5kYXRhUHJvdmlkZXI7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZGlzcGxheU5hbWUgPSBhY3Rpb25OYW1lO1xuICAgICAgICBpZiAodGhpcy5fbW9kZWwpIGRpc3BsYXlOYW1lID0gdGhpcy5fbW9kZWwuaTE4bkJhc2VLZXkgPyBgJHt0aGlzLl9tb2RlbC5pMThuQmFzZUtleX0uJHtkaXNwbGF5TmFtZX1gIDogZGlzcGxheU5hbWU7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRNb2RlbCkge1xuICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBgJHt0aGlzLl9wYXJlbnRNb2RlbC5pMThuQmFzZUtleX0uJHt0aGlzLl9wYXJlbnRQcm9wZXJ0eX1fJHtkaXNwbGF5TmFtZX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWVMb25nID0gZGlzcGxheU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50TW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRNb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpMThuTW9kZWxBY3Rpb25CYXNlS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZhdGlvblRyaWdnZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByb3V0ZVVybCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JvdXRlVXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuRnVuY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5fcnVuRnVuY3Rpb24gPT09ICdmdW5jdGlvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5GdW5jdGlvbigpOiBBY3Rpb25SdW5GblR5cGU8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtPiB7XG4gICAgICAgIGlmICghdGhpcy5fcnVuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBDb21tb25zSW50ZXJuYWxFcnJvcihgUnVuIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGZvciBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gYW5kIGNhbm5vdCBiZSBpbnZva2VkYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNWaXNpYmxlRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Zpc2libGVGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzRW5hYmxlZEZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNFbmFibGVkRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9uTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbk5hbWVMb25nKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9uTmFtZUxvbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Db25maXJtYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db25maXJtYXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25PblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25PbkVycm9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uT25FcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFmdGVyUnVuQWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWZ0ZXJSdW5BY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBvblJ1bkVycm9yQWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fb25SdW5FcnJvckFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBlcm1pc3Npb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGVybWlzc2lvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YWJsZXZpZXdDYXRlZ29yeSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmxldmlld0NhdGVnb3J5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzSXRlbXNTZWxlY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNJdGVtc1NlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGJ1dHRvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2J1dHRvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbXBvbmVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNvbXBvbmVudEZyb21EaSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudEZyb21EaTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHN1YmFjdGlvbnNBc01lbnUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJhY3Rpb25zQXNNZW51O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3ViYWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1YmFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoYmFzZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50TW9kZWwgfHwgdGhpcy5fbW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXkgPSB0aGlzLl9wYXJlbnRNb2RlbFxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5fcGFyZW50TW9kZWwuaTE4bkJhc2VLZXl9LmFjdGlvbnMuJHt0aGlzLl9wYXJlbnRQcm9wZXJ0eX1fJHt0aGlzLl9hY3Rpb25OYW1lfWBcbiAgICAgICAgICAgICAgICA6IGAke2Jhc2UgPz8gdGhpcy5fbW9kZWwhLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fYWN0aW9uTmFtZX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5GdW5jdGlvbihmbjogQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJc1Zpc2libGVGdW5jdGlvbihmbj86IEFjdGlvblZhbGlkYXRpb25GblR5cGU8VmFsaWRhdGlvbklucHV0SXRlbSwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNWaXNpYmxlRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJc0VuYWJsZWRGdW5jdGlvbihmbj86IEFjdGlvblZhbGlkYXRpb25GblR5cGU8VmFsaWRhdGlvbklucHV0SXRlbSwgU2VydmljZT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZVRyaWdnZXIocm91dGVVcmw6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlciA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PblJvdXRlO1xuICAgICAgICB0aGlzLl9yb3V0ZVVybCA9IHJvdXRlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uKHBvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBjb25maXJtYXRpb24gYWN0aW9uIHdpdGggZGVmYXVsdCBzdHlsZSBiYXNlZCBvbiBhY3Rpb24gZGVzY3JpcHRvclxuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUnVuQ29uZmlybWF0aW9uKG9wdHM6IGJvb2xlYW4gfCBBY3Rpb25Db25maXJtYXRpb248UnVuSW5wdXRJdGVtPiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uID0gb3B0cyA9PT0gdHJ1ZSA/IHt9IDogb3B0cyA9PT0gZmFsc2UgPyB1bmRlZmluZWQgOiBvcHRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPdmVycmlkZSBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgc2V0dXAuIE5vdGlmaWNhdGlvbnMgY2FuIGVpdGhlciBiZSBvdmVycmlkZGVuIHdpdGggY3VzdG9tIHRleHQgb3IgdHVybmVkIG9uL29mZi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcHRzIFByb3ZpZGUgY29uZmlnIGZvciB0ZXh0cyBvciBvbi9vZmYgZmxhZyBmb3IgcnVuIHN1Y2Nlc3MvZXJyb3Igbm90aWZpY2F0aW9ucy5cbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aE5vdGlmaWNhdGlvbnMob3B0cz86IHtydW5PblN1Y2Nlc3M/OiBBY3Rpb25Ob3RpZmljYXRpb25UeXBlIHwgYm9vbGVhbjsgcnVuT25FcnJvcj86IEFjdGlvbk5vdGlmaWNhdGlvblR5cGUgfCBib29sZWFufSB8IGJvb2xlYW4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uT25TdWNjZXNzID0gdHlwZW9mIG9wdHMgPT09ICdib29sZWFuJyA/IG9wdHMgOiBvcHRzPy5ydW5PblN1Y2Nlc3M7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3IgPSB0eXBlb2Ygb3B0cyA9PT0gJ2Jvb2xlYW4nID8gb3B0cyA6IG9wdHM/LnJ1bk9uRXJyb3I7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQWZ0ZXJSdW5BY3Rpb24oYWN0aW9uPzogQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+IHwgKChjdHg6IElBY3Rpb25Db250ZXh0PEl0ZW0sIFJ1bklucHV0SXRlbSwgYW55PikgPT4gQWZ0ZXJSdW5BY3Rpb25UeXBlPFJ1blJldHVybkl0ZW0+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9IGFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhPblJ1bkVycm9yQWN0aW9uKGFjdGlvbj86IE9uRXJyb3JBY3Rpb25UeXBlPFJ1bklucHV0SXRlbT4gfCAoKGN0eDogSUFjdGlvbkNvbnRleHQ8SXRlbSwgUnVuSW5wdXRJdGVtLCBhbnk+KSA9PiBPbkVycm9yQWN0aW9uVHlwZTxSdW5JbnB1dEl0ZW0+KSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID0gYWN0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RhYmxldmlld0NhdGVnb3J5KSB7XG4gICAgICAgICAgICBMb2dnZXJTZXJ2aWNlLmdldCgpLmRlYnVnKFxuICAgICAgICAgICAgICAgIGBXQVJOSU5HOiBQZXJtaXNzaW9ucyBzZXQgb24gYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZUxvbmd9IHdpdGggcm91dGUgdHlwZSAnJHt0aGlzLl90YWJsZXZpZXdDYXRlZ29yeX0nIHdpbGwgYmUgb21pdHRlZCBpbiByb3V0ZSBndWFyZCB2YWxpZGF0aW9uLmBcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZXZpZXdDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0NhdGVnb3J5ID0gY2F0ZWdvcnk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uT3B0cyhidXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBidXR0b247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uKGxhYmVsPzogc3RyaW5nIHwgbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIGxldmVsPzogU3R5bGVMZXZlbEVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fYnV0dG9uLFxuICAgICAgICAgICAgbGFiZWwsXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9idXR0b24/LnN0eWxlLFxuICAgICAgICAgICAgICAgIGxldmVsOiBsZXZlbFxuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEl0ZW1zU2VsZWN0aW9uKGhhc1NlbGVjdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzSXRlbXNTZWxlY3Rpb24gPSBoYXNTZWxlY3Rpb247XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPz8gKGN0eCA9PiBvZigoY3R4LnBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID4gMCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbXBvbmVudChjb21wb25lbnQ6IFR5cGU8SUFjdGlvbkNvbXBvbmVudDxJdGVtPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aENvbXBvbmVudEZyb21EaShpbmplY3Rpb25Ub2tlbjogSW5qZWN0aW9uVG9rZW48VHlwZTxhbnk+Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9jb21wb25lbnRGcm9tRGkgPSBpbmplY3Rpb25Ub2tlbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMocG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPSBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSTE4bkJhc2UoYmFzZTogQ2xhc3NUeXBlPHVua25vd24+IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmICh0eXBlb2YgYmFzZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGVOYW1lID0gZmluZFJlZmxlY3RUeXBlTmFtZShiYXNlKTtcbiAgICAgICAgICAgIGlmICghdHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbW9uc0ludGVybmFsRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRlZmluZSBpMThuQmFzZUtleSBmb3IgJHtiYXNlfSBvbiBhY3Rpb24gJHt0aGlzLmFjdGlvbk5hbWVMb25nfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYmFzZSA9IHR5cGVOYW1lO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleShiYXNlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJhY3Rpb25zQXNNZW51KHN1YmFjdGlvbnNBc01lbnUgPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1YmFjdGlvbnNBc01lbnUgPSBzdWJhY3Rpb25zQXNNZW51O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1YmFjdGlvbnMoLi4uc3ViYWN0aW9uczogQXJyYXk8QWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgYW55LCBSdW5JbnB1dEl0ZW0sIGFueT4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1YmFjdGlvbnMucHVzaCguLi5zdWJhY3Rpb25zKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGNvcHlGaWVsZHNUbyhcbiAgICAgICAgZGVzY3JpcHRvcjogQWN0aW9uRGVzY3JpcHRvckluc3Q8SXRlbSwgU2VydmljZSwgUnVuSW5wdXRJdGVtLCBSdW5SZXR1cm5JdGVtLCBWYWxpZGF0aW9uSW5wdXRJdGVtPlxuICAgICk6IEFjdGlvbkRlc2NyaXB0b3JJbnN0PEl0ZW0sIFNlcnZpY2UsIFJ1bklucHV0SXRlbSwgUnVuUmV0dXJuSXRlbSwgVmFsaWRhdGlvbklucHV0SXRlbT4ge1xuICAgICAgICBkZXNjcmlwdG9yLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleTtcbiAgICAgICAgZGVzY3JpcHRvci5fdHlwZSA9IHRoaXMuX3R5cGU7XG4gICAgICAgIGRlc2NyaXB0b3IuX2FjdGl2YXRpb25UcmlnZ2VyID0gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Bvc2l0aW9uID0gdGhpcy5fcG9zaXRpb247XG4gICAgICAgIGRlc2NyaXB0b3IuX2xldmVsID0gdGhpcy5fbGV2ZWw7XG4gICAgICAgIGRlc2NyaXB0b3IuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA/IFsuLi50aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXNdIDogdW5kZWZpbmVkO1xuXG4gICAgICAgIGRlc2NyaXB0b3IuX3RhYmxldmlld0NhdGVnb3J5ID0gdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnk7XG4gICAgICAgIGRlc2NyaXB0b3IuX3JvdXRlVXJsID0gdGhpcy5fcm91dGVVcmw7XG5cbiAgICAgICAgZGVzY3JpcHRvci5fcnVuRnVuY3Rpb24gPSB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5faXNWaXNpYmxlRnVuY3Rpb24gPSB0aGlzLl9pc1Zpc2libGVGdW5jdGlvbjtcbiAgICAgICAgZGVzY3JpcHRvci5faXNFbmFibGVkRnVuY3Rpb24gPSB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbjtcblxuICAgICAgICBpZiAodGhpcy5fcnVuQ29uZmlybWF0aW9uKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9ydW5Db25maXJtYXRpb24gPSB7Li4udGhpcy5fcnVuQ29uZmlybWF0aW9ufTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9ydW5Db25maXJtYXRpb24uYWNjZXB0QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5fcnVuQ29uZmlybWF0aW9uLmFjY2VwdEJ1dHRvbiA9IHsuLi50aGlzLl9ydW5Db25maXJtYXRpb24uYWNjZXB0QnV0dG9ufTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl9ydW5Db25maXJtYXRpb24ucmVqZWN0QnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvci5fcnVuQ29uZmlybWF0aW9uLnJlamVjdEJ1dHRvbiA9IHsuLi50aGlzLl9ydW5Db25maXJtYXRpb24ucmVqZWN0QnV0dG9ufTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2VzcyA9IHR5cGVvZiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PblN1Y2Nlc3MgPT09ICdvYmplY3QnID8gey4uLnRoaXMuX3J1bk5vdGlmaWNhdGlvbk9uU3VjY2Vzc30gOiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PblN1Y2Nlc3M7XG4gICAgICAgIGRlc2NyaXB0b3IuX3J1bk5vdGlmaWNhdGlvbk9uRXJyb3IgPSB0eXBlb2YgdGhpcy5fcnVuTm90aWZpY2F0aW9uT25FcnJvciA9PT0gJ29iamVjdCcgPyB7Li4udGhpcy5fcnVuTm90aWZpY2F0aW9uT25FcnJvcn0gOiB0aGlzLl9ydW5Ob3RpZmljYXRpb25PbkVycm9yO1xuXG4gICAgICAgIGlmICh0aGlzLl9hZnRlclJ1bkFjdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICBkZXNjcmlwdG9yLl9hZnRlclJ1bkFjdGlvbiA9IHR5cGVvZiB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX2FmdGVyUnVuQWN0aW9uIDogdGhpcy5fYWZ0ZXJSdW5BY3Rpb24uY29weSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9vblJ1bkVycm9yQWN0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIGRlc2NyaXB0b3IuX29uUnVuRXJyb3JBY3Rpb24gPSB0eXBlb2YgdGhpcy5fb25SdW5FcnJvckFjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX29uUnVuRXJyb3JBY3Rpb24gOiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uLmNvcHkoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlc2NyaXB0b3IuX3Blcm1pc3Npb25zID0gdGhpcy5fcGVybWlzc2lvbnM7XG5cbiAgICAgICAgaWYgKHRoaXMuX2J1dHRvbikge1xuICAgICAgICAgICAgZGVzY3JpcHRvci5fYnV0dG9uID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2J1dHRvblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9idXR0b24uc3R5bGUpIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLl9idXR0b24uc3R5bGUgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX2J1dHRvbi5zdHlsZVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBkZXNjcmlwdG9yLl9oYXNJdGVtc1NlbGVjdGlvbiA9IHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uO1xuICAgICAgICBkZXNjcmlwdG9yLl9jb21wb25lbnQgPSB0aGlzLl9jb21wb25lbnQ7XG4gICAgICAgIGRlc2NyaXB0b3IuX2NvbXBvbmVudEZyb21EaSA9IHRoaXMuX2NvbXBvbmVudEZyb21EaTtcbiAgICAgICAgZGVzY3JpcHRvci5fc3ViYWN0aW9uc0FzTWVudSA9IHRoaXMuX3N1YmFjdGlvbnNBc01lbnU7XG4gICAgICAgIGRlc2NyaXB0b3IuX3N1YmFjdGlvbnMgPSB0aGlzLl9zdWJhY3Rpb25zLm1hcChhID0+IGEuY29weSgpKTtcblxuICAgICAgICByZXR1cm4gZGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weSgpOiBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+IHtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IG5ldyBBY3Rpb25EZXNjcmlwdG9ySW5zdDxJdGVtLCBTZXJ2aWNlLCBSdW5JbnB1dEl0ZW0sIFJ1blJldHVybkl0ZW0sIFZhbGlkYXRpb25JbnB1dEl0ZW0+KHRoaXMuX2FjdGlvbk5hbWUsIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlcjogdGhpcy5fZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgbW9kZWw6IHRoaXMuX21vZGVsPy5jb3B5KCksXG4gICAgICAgICAgICBwYXJlbnRNb2RlbDogdGhpcy5fcGFyZW50TW9kZWwsXG4gICAgICAgICAgICBwYXJlbnRQcm9wZXJ0eTogdGhpcy5fcGFyZW50UHJvcGVydHlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5jb3B5RmllbGRzVG8oZGVzY3JpcHRvcik7XG5cbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWNvbmZpcm1hdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RhYmxldmlldy9hcGkvc3JjL2FjdGlvbi9tb2RlbHMvYWN0aW9uLWNvbmZpcm1hdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maXJtYXRpb259IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcn0gZnJvbSAnQG1lZGl1c2luYy9tbmctY29tbW9ucy9mb3JtL2FwaSc7XG5cbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4vZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25Db25maXJtYXRpb248TW9kZWw+IHtcbiAgICBpY29uPzogc3RyaW5nIHwgbnVsbDsgLy8gSWNvbiB0byBkaXNwbGF5IG5leHQgdG8gbWVzc2FnZS5cbiAgICB0aXRsZT86IHN0cmluZyB8IG51bGw7IC8vIFRyYW5zbGF0aW9uIGZvciB0aXRsZSB0ZXh0IG9mIHRoZSBkaWFsb2cuXG4gICAgbWVzc2FnZT86IHN0cmluZyB8IG51bGw7IC8vIFRyYW5zbGF0aW9uIGZvciBib2R5IHRleHQgb2YgdGhlIGRpYWxvZy5cbiAgICBhY2NlcHRCdXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvcjtcbiAgICByZWplY3RCdXR0b24/OiBJQWN0aW9uQnV0dG9uRGVzY3JpcHRvciB8IGZhbHNlO1xuICAgIGNsb3NlT25Fc2NhcGU/OiBib29sZWFuOyAvLyBEZWZpbmVzIGlmIGRpYWxvZyBjbG9zZXMgd2hlbiBlc2Mga2V5IGlzIHByZXNzZWQuXG4gICAgY2xvc2FibGU/OiBib29sZWFuOyAvLyBEZWZpbmVzIGlmIGRpYWxvZyBpcyBjbG9zYWJsZS5cbiAgICBjb25maWdNYXBGbj86IENvbmZpZ3VyYXRpb25Db25maWdNYXBGbjxNb2RlbD47IC8vZnVuY3Rpb24gdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29uZmlybWF0aW9uIGRpYWxvZ3VlLiAqKldBUk5JTkcqKiBjaGFuZ2luZyB0aGUgKmFjY2VwdCogYW5kICpyZWplY3QqIG1ldGhvZHMgb2YgdGhlICpjb25maXJtQ29uZmlnKiBwYXJhbWV0ZXIgbWF5IGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvdXJcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlndXJhdGlvbkNvbmZpZ01hcEZuPEl0ZW0+ID0gKGN0eDogSUFjdGlvbkNvbnRleHQ8YW55LCBJdGVtLCBhbnk+LCBjb25maXJtQ29uZmlnOiBDb25maXJtYXRpb24pID0+IENvbmZpcm1hdGlvbjtcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRlc2NyaXB0b3IudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0l0ZW1Pck9ic2VydmFibGUsIE51bGxhYmxlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0FjdGlvbkNvbnRleHRWYWxpZGF0aW9ufSBmcm9tICcuL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4vZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UgPSB1bmRlZmluZWQsIElucHV0SXRlbSA9IEl0ZW0sIFJldHVybkl0ZW0gPSBJdGVtLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPE51bGxhYmxlPFJldHVybkl0ZW0+Pj4gPSAoXG4gICAgY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBJbnB1dEl0ZW0sIFNlcnZpY2U+XG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEFjdGlvblZhbGlkYXRpb25GblR5cGU8SXRlbSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSW5wdXRJdGVtID0gSXRlbSwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxib29sZWFuPj4gPSAoXG4gICAgY3R4OiBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxJdGVtLCBJbnB1dEl0ZW0sIFNlcnZpY2U+XG4pID0+IFJldHVybjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRlc2NyaXB0b3IudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi90YWJsZXZpZXcvYXBpL3NyYy9hY3Rpb24vbW9kZWxzL2FjdGlvbi1kZXNjcmlwdG9yLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0l0ZW1Pck9ic2VydmFibGUsIE51bGxhYmxlfSBmcm9tICdAbWVkaXVzaW5jL21uZy1jb21tb25zL2NvcmUnO1xuXG5pbXBvcnQge0FjdGlvbkNvbnRleHRWYWxpZGF0aW9ufSBmcm9tICcuL2V4ZWN1dGlvbi9hY3Rpb24tY29udGV4dC12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7SUFjdGlvbkNvbnRleHR9IGZyb20gJy4vZXhlY3V0aW9uL2FjdGlvbi1jb250ZXh0Lm1vZGVsJztcblxuZXhwb3J0IHR5cGUgQWN0aW9uUnVuRm5UeXBlPEl0ZW0sIFNlcnZpY2UgPSB1bmRlZmluZWQsIElucHV0SXRlbSA9IEl0ZW0sIFJldHVybkl0ZW0gPSBJdGVtLCBSZXR1cm4gPSBJdGVtT3JPYnNlcnZhYmxlPE51bGxhYmxlPFJldHVybkl0ZW0+Pj4gPSAoXG4gICAgY3R4OiBJQWN0aW9uQ29udGV4dDxJdGVtLCBJbnB1dEl0ZW0sIFNlcnZpY2U+XG4pID0+IFJldHVybjtcbmV4cG9ydCB0eXBlIEFjdGlvblZhbGlkYXRpb25GblR5cGU8SXRlbSwgU2VydmljZSA9IHVuZGVmaW5lZCwgSW5wdXRJdGVtID0gSXRlbSwgUmV0dXJuID0gSXRlbU9yT2JzZXJ2YWJsZTxib29sZWFuPj4gPSAoXG4gICAgY3R4OiBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxJdGVtLCBJbnB1dEl0ZW0sIFNlcnZpY2U+XG4pID0+IFJldHVybjtcblxuZXhwb3J0IHR5cGUgQWN0aW9uTm90aWZpY2F0aW9uVHlwZSA9IHtcbiAgICB0aXRsZT86IHN0cmluZztcbiAgICBtZXNzYWdlPzogc3RyaW5nO1xufTtcbiJdfQ==