@decaf-ts/for-angular 0.0.16 → 0.0.18

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 (65) hide show
  1. package/assets/i18n/en.json +9 -69
  2. package/assets/i18n/pt.json +80 -0
  3. package/assets/icons/icon-128.webp +0 -0
  4. package/assets/icons/icon-192.webp +0 -0
  5. package/assets/icons/icon-256.webp +0 -0
  6. package/assets/icons/icon-48.webp +0 -0
  7. package/assets/icons/icon-512.webp +0 -0
  8. package/assets/icons/icon-72.webp +0 -0
  9. package/assets/icons/icon-96.webp +0 -0
  10. package/assets/images/apple-touch-icon.png +0 -0
  11. package/assets/images/favicon.png +0 -0
  12. package/assets/images/favicon.svg +29 -0
  13. package/components/component-renderer/component-renderer.component.d.ts +5 -4
  14. package/components/crud-field/crud-field.component.d.ts +186 -22
  15. package/components/crud-form/crud-form.component.d.ts +194 -8
  16. package/components/empty-state/empty-state.component.d.ts +9 -10
  17. package/components/fieldset/fieldset.component.d.ts +383 -36
  18. package/components/filter/filter.component.d.ts +11 -2
  19. package/components/list/list.component.d.ts +1 -1
  20. package/components/list-item/list-item.component.d.ts +2 -2
  21. package/components/model-renderer/model-renderer.component.d.ts +1 -5
  22. package/directives/collapsable.directive.d.ts +1 -0
  23. package/engine/NgxBaseComponent.d.ts +43 -43
  24. package/engine/NgxCrudFormField.d.ts +7 -3
  25. package/engine/NgxFormService.d.ts +113 -12
  26. package/engine/NgxRenderingEngine.d.ts +178 -25
  27. package/engine/constants.d.ts +11 -6
  28. package/engine/decorators.d.ts +2 -2
  29. package/engine/index.d.ts +4 -2
  30. package/engine/interfaces.d.ts +271 -0
  31. package/engine/types.d.ts +11 -206
  32. package/esm2022/components/component-renderer/component-renderer.component.mjs +13 -11
  33. package/esm2022/components/crud-field/crud-field.component.mjs +213 -8
  34. package/esm2022/components/crud-form/crud-form.component.mjs +133 -13
  35. package/esm2022/components/empty-state/empty-state.component.mjs +13 -12
  36. package/esm2022/components/fieldset/fieldset.component.mjs +485 -43
  37. package/esm2022/components/filter/filter.component.mjs +16 -6
  38. package/esm2022/components/layout/layout.component.mjs +3 -3
  39. package/esm2022/components/list/list.component.mjs +4 -5
  40. package/esm2022/components/list-item/list-item.component.mjs +10 -10
  41. package/esm2022/components/model-renderer/model-renderer.component.mjs +9 -8
  42. package/esm2022/components/pagination/pagination.component.mjs +7 -7
  43. package/esm2022/components/searchbar/searchbar.component.mjs +3 -3
  44. package/esm2022/directives/collapsable.directive.mjs +3 -2
  45. package/esm2022/engine/NgxBaseComponent.mjs +64 -63
  46. package/esm2022/engine/NgxCrudFormField.mjs +14 -4
  47. package/esm2022/engine/NgxFormService.mjs +239 -27
  48. package/esm2022/engine/NgxRenderingEngine.mjs +218 -46
  49. package/esm2022/engine/ValidatorFactory.mjs +6 -4
  50. package/esm2022/engine/constants.mjs +14 -9
  51. package/esm2022/engine/decorators.mjs +6 -6
  52. package/esm2022/engine/index.mjs +5 -3
  53. package/esm2022/engine/interfaces.mjs +4 -0
  54. package/esm2022/engine/types.mjs +1 -3
  55. package/esm2022/helpers/utils.mjs +53 -32
  56. package/esm2022/i18n/Loader.mjs +82 -0
  57. package/fesm2022/decaf-ts-for-angular.mjs +3030 -2097
  58. package/fesm2022/decaf-ts-for-angular.mjs.map +1 -1
  59. package/helpers/utils.d.ts +42 -16
  60. package/i18n/Loader.d.ts +48 -0
  61. package/package.json +11 -1
  62. package/engine/NgxRenderingEngine2.d.ts +0 -250
  63. package/esm2022/engine/NgxRenderingEngine2.mjs +0 -332
  64. package/esm2022/interfaces.mjs +0 -2
  65. package/interfaces.d.ts +0 -28
@@ -33,7 +33,8 @@ export const AngularEngineKeys = {
33
33
  RENDER: 'render',
34
34
  RENDERED_ID: 'rendered-as-{0}',
35
35
  PARENT: '_parent',
36
- VALIDATION_PARENT_KEY: VALIDATION_PARENT_KEY
36
+ VALIDATION_PARENT_KEY: VALIDATION_PARENT_KEY,
37
+ FORM_GROUP_COMPONENT_PROPS: 'componentProps'
37
38
  };
38
39
  /**
39
40
  * @description Form validation state constants
@@ -61,13 +62,17 @@ export const FormConstants = {
61
62
  * @property {string} SUBMIT_EVENT - Event fired when a form submission occurs
62
63
  * @memberOf module:engine
63
64
  */
64
- export var EventConstants;
65
- (function (EventConstants) {
66
- EventConstants["BACK_BUTTON_NAVIGATION"] = "backButtonNavigationEndEvent";
67
- EventConstants["REFRESH_EVENT"] = "RefreshEvent";
68
- EventConstants["CLICK_EVENT"] = "ClickEvent";
69
- EventConstants["SUBMIT_EVENT"] = "SubmitEvent";
70
- })(EventConstants || (EventConstants = {}));
65
+ export const EventConstants = {
66
+ BACK_BUTTON_NAVIGATION: 'backButtonNavigationEndEvent',
67
+ REFRESH: 'RefreshEvent',
68
+ CLICK: 'ClickEvent',
69
+ SUBMIT: 'SubmitEvent',
70
+ VALIDATION_ERROR: 'validationErrorEvent',
71
+ FIELDSET_ADD_GROUP: 'fieldsetAddGroupEvent',
72
+ FIELDSET_UPDATE_GROUP: 'fieldsetUpdateGroupEvent',
73
+ FIELDSET_REMOVE_GROUP: 'fieldsetRemoveGroupEvent',
74
+ // FIELDSET_GROUP_VALIDATION: 'fieldsetGroupValidationEvent'
75
+ };
71
76
  /**
72
77
  * @description Logger level constants
73
78
  * @summary Enum defining the logging levels used in the application's logging system.
@@ -157,4 +162,4 @@ export var BaseComponentProps;
157
162
  BaseComponentProps["MAPPER"] = "mapper";
158
163
  BaseComponentProps["INITIALIZED"] = "initialized";
159
164
  })(BaseComponentProps || (BaseComponentProps = {}));
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLFdBQVc7SUFDckMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixNQUFNLEVBQUUsU0FBUztJQUNqQixxQkFBcUIsRUFBRSxxQkFBcUI7Q0FDN0MsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRztJQUMzQixLQUFLLEVBQUUsT0FBTztJQUNkLE9BQU8sRUFBRSxTQUFTO0NBQ25CLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIseUVBQXVELENBQUE7SUFDdkQsZ0RBQThCLENBQUE7SUFDOUIsNENBQTBCLENBQUE7SUFDMUIsOENBQTRCLENBQUE7QUFDOUIsQ0FBQyxFQUxXLGNBQWMsS0FBZCxjQUFjLFFBS3pCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sQ0FBTixJQUFZLFlBT1g7QUFQRCxXQUFZLFlBQVk7SUFDdEIsNkNBQU8sQ0FBQTtJQUNQLGlEQUFTLENBQUE7SUFDVCwrQ0FBUSxDQUFBO0lBQ1IsK0NBQVEsQ0FBQTtJQUNSLGlEQUFTLENBQUE7SUFDVCx1REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQVBXLFlBQVksS0FBWixZQUFZLFFBT3ZCO0FBQUEsQ0FBQztBQUVGOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxlQUlYO0FBSkQsV0FBWSxlQUFlO0lBQ3pCLGdDQUFhLENBQUE7SUFDYixzQ0FBbUIsQ0FBQTtJQUNuQixnQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLGVBQWUsS0FBZixlQUFlLFFBSTFCO0FBR0Q7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBTixJQUFZLGtCQUlYO0FBSkQsV0FBWSxrQkFBa0I7SUFDNUIsdURBQWlDLENBQUE7SUFDakMsK0RBQXlDLENBQUE7SUFDekMsaUVBQTJDLENBQUE7QUFDN0MsQ0FBQyxFQUpXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFJN0I7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFXWDtBQVhELFdBQVksa0JBQWtCO0lBQzVCLHFDQUFlLENBQUE7SUFDZix1Q0FBaUIsQ0FBQTtJQUNqQiwrQkFBUyxDQUFBO0lBQ1QscUNBQWUsQ0FBQTtJQUNmLHFDQUFlLENBQUE7SUFDZiwrQ0FBeUIsQ0FBQTtJQUN6QixpQ0FBVyxDQUFBO0lBQ1gsbURBQTZCLENBQUE7SUFDN0IsdUNBQWlCLENBQUE7SUFDakIsaURBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVhXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFXN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVSUtleXMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBWQUxJREFUSU9OX1BBUkVOVF9LRVkgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBBbmd1bGFyIGVuZ2luZSBrZXkgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBDb250YWlucyBrZXkgc3RyaW5ncyB1c2VkIGJ5IHRoZSBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmUgZm9yIHJlZmxlY3Rpb24sXG4gKiBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbiwgYW5kIG90aGVyIGVuZ2luZSBvcGVyYXRpb25zLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckVuZ2luZUtleXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIC0gUHJlZml4IGZvciByZWZsZWN0aW9uIG1ldGFkYXRhIGtleXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBEWU5BTUlDIC0gS2V5IGZvciBkeW5hbWljIGNvbXBvbmVudCBpZGVudGlmaWNhdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IEFOTk9UQVRJT05TIC0gS2V5IGZvciBjb21wb25lbnQgYW5ub3RhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBFQ01QIC0gS2V5IGZvciBlbWJlZGRlZCBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTkdfUkVGTEVDVCAtIFByZWZpeCBmb3IgQW5ndWxhciByZWZsZWN0aW9uIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRU5ERVJFRCAtIFByZWZpeCBmb3IgcmVuZGVyZWQgY29tcG9uZW50IG1hcmtlcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVBQRVIgLSBLZXkgZm9yIHByb3BlcnR5IG1hcHBlcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBDSElMRFJFTiAtIEtleSBmb3IgY2hpbGQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RBQkxFIC0gS2V5IGZvciBsaXN0YWJsZSBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSIC0gS2V5IGZvciByZW5kZXJhYmxlIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRU5ERVJFRF9JRCAtIFRlbXBsYXRlIGZvciByZW5kZXJlZCBjb21wb25lbnQgSURzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEFSRU5UIC0gS2V5IGZvciBjb21wYXJpc29uIGRlY29yYXRvcnMgYW5kIHZhbGlkYXRvcnNcbiAqIEBjb25zdCBBbmd1bGFyRW5naW5lS2V5c1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IEFuZ3VsYXJFbmdpbmVLZXlzID0ge1xuICBSRUZMRUNUOiBgJHtVSUtleXMuUkVGTEVDVH0uYW5ndWxhci5gLFxuICBEWU5BTUlDOiAnZHluYW1pYy1jb21wb25lbnQnLFxuICBBTk5PVEFUSU9OUzogJ19fYW5ub3RhdGlvbnNfXycsXG4gIEVDTVA6ICdlY21wJyxcbiAgTkdfUkVGTEVDVDogJ25nLXJlZmxlY3QtJyxcbiAgUkVOREVSRUQ6ICdyZW5kZXJlZC1hcy0nLFxuICBNQVBQRVI6ICdtYXBwZXInLFxuICBDSElMRFJFTjogJ2NoaWxkcmVuJyxcbiAgTElTVEFCTEU6ICdsaXN0YWJsZScsXG4gIFJFTkRFUjogJ3JlbmRlcicsXG4gIFJFTkRFUkVEX0lEOiAncmVuZGVyZWQtYXMtezB9JyxcbiAgUEFSRU5UOiAnX3BhcmVudCcsXG4gIFZBTElEQVRJT05fUEFSRU5UX0tFWTogVkFMSURBVElPTl9QQVJFTlRfS0VZXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHZhbGlkYXRpb24gc3RhdGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBDb250YWlucyBjb25zdGFudHMgcmVwcmVzZW50aW5nIHRoZSBwb3NzaWJsZSB2YWxpZGF0aW9uIHN0YXRlcyBvZiBhIGZvcm0uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBjaGVjayBhbmQgaGFuZGxlIGZvcm0gdmFsaWRhdGlvbiB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEZvcm1Db25zdGFudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBWQUxJRCAtIENvbnN0YW50IHJlcHJlc2VudGluZyBhIHZhbGlkIGZvcm0gc3RhdGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTlZBTElEIC0gQ29uc3RhbnQgcmVwcmVzZW50aW5nIGFuIGludmFsaWQgZm9ybSBzdGF0ZVxuICogQGNvbnN0IEZvcm1Db25zdGFudHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBGb3JtQ29uc3RhbnRzID0ge1xuICBWQUxJRDogJ1ZBTElEJyxcbiAgSU5WQUxJRDogJ0lOVkFMSUQnLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXZlbnQgbmFtZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gY29udGFpbmluZyBjb25zdGFudHMgZm9yIGV2ZW50IG5hbWVzIHVzZWQgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBhcmUgdXNlZCB0byBzdGFuZGFyZGl6ZSBldmVudCBuYW1pbmcgYW5kIGhhbmRsaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0tfQlVUVE9OX05BVklHQVRJT04gLSBFdmVudCBmaXJlZCB3aGVuIGJhY2sgYnV0dG9uIG5hdmlnYXRpb24gZW5kc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFRlJFU0hfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgcmVmcmVzaCBhY3Rpb24gb2NjdXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0xJQ0tfRVZFTlQgLSBFdmVudCBmaXJlZCB3aGVuIGEgY2xpY2sgYWN0aW9uIG9jY3Vyc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFNVQk1JVF9FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSBmb3JtIHN1Ym1pc3Npb24gb2NjdXJzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBFdmVudENvbnN0YW50cyB7XG4gIEJBQ0tfQlVUVE9OX05BVklHQVRJT04gPSAnYmFja0J1dHRvbk5hdmlnYXRpb25FbmRFdmVudCcsXG4gIFJFRlJFU0hfRVZFTlQgPSAnUmVmcmVzaEV2ZW50JyxcbiAgQ0xJQ0tfRVZFTlQgPSAnQ2xpY2tFdmVudCcsXG4gIFNVQk1JVF9FVkVOVCA9ICdTdWJtaXRFdmVudCcsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExvZ2dlciBsZXZlbCBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIGxvZ2dpbmcgbGV2ZWxzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbG9nZ2luZyBzeXN0ZW0uXG4gKiBMb3dlciB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgdmVyYm9zZSBsb2dnaW5nLCB3aGlsZSBoaWdoZXIgdmFsdWVzIHJlcHJlc2VudCBtb3JlIGNyaXRpY2FsIGxvZ3MuXG4gKiBAZW51bSB7bnVtYmVyfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge251bWJlcn0gQUxMIC0gTG9nIGV2ZXJ5dGhpbmcgKG1vc3QgdmVyYm9zZSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBERUJVRyAtIExvZyBkZWJ1ZyBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtudW1iZXJ9IElORk8gLSBMb2cgaW5mb3JtYXRpb25hbCBtZXNzYWdlc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFdBUk4gLSBMb2cgd2FybmluZ3NcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBFUlJPUiAtIExvZyBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBDUklUSUNBTCAtIExvZyBjcml0aWNhbCBlcnJvcnMgKGxlYXN0IHZlcmJvc2UpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBMb2dnZXJMZXZlbHMge1xuICBBTEwgPSAwLFxuICBERUJVRyA9IDEsXG4gIElORk8gPSAyLFxuICBXQVJOID0gMyxcbiAgRVJST1IgPSA0LFxuICBDUklUSUNBTCA9IDVcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJvdXRlIGRpcmVjdGlvbiBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIHBvc3NpYmxlIG5hdmlnYXRpb24gZGlyZWN0aW9ucyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBVc2VkIGZvciBjb250cm9sbGluZyBuYXZpZ2F0aW9uIGZsb3cgYW5kIGFuaW1hdGlvbiBkaXJlY3Rpb25zLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEJBQ0sgLSBOYXZpZ2F0ZSBiYWNrIHRvIHRoZSBwcmV2aW91cyBwYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRk9SV0FSRCAtIE5hdmlnYXRlIGZvcndhcmQgdG8gdGhlIG5leHQgcGFnZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFJPT1QgLSBOYXZpZ2F0ZSB0byB0aGUgcm9vdC9ob21lIHBhZ2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIFJvdXRlRGlyZWN0aW9ucyB7XG4gIEJBQ0sgPSAnYmFjaycsXG4gIEZPUldBUkQgPSAnZm9yd2FyZCcsXG4gIFJPT1QgPSAncm9vdCcsXG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IHRhZyBuYW1lIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgdGFnIG5hbWVzIGZvciBjdXN0b20gY29tcG9uZW50cyB1c2VkIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIHRhZyBuYW1lcyBhcmUgdXNlZCBmb3IgY29tcG9uZW50IHJlZ2lzdHJhdGlvbiBhbmQgcmVuZGVyaW5nLlxuICogQGVudW0ge3N0cmluZ31cbiAqIEByZWFkb25seVxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfSVRFTSAtIFRhZyBuYW1lIGZvciBsaXN0IGl0ZW0gY29tcG9uZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JTkZJTklURSAtIFRhZyBuYW1lIGZvciBpbmZpbml0ZSBzY3JvbGxpbmcgbGlzdCBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX1BBR0lOQVRFRCAtIFRhZyBuYW1lIGZvciBwYWdpbmF0ZWQgbGlzdCBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIENvbXBvbmVudHNUYWdOYW1lcyB7XG4gIExJU1RfSVRFTSA9ICduZ3gtZGVjYWYtbGlzdC1pdGVtJyxcbiAgTElTVF9JTkZJTklURSA9ICduZ3gtZGVjYWYtbGlzdC1pbmZpbml0ZScsXG4gIExJU1RfUEFHSU5BVEVEID0gJ25neC1kZWNhZi1saXN0LXBhZ2luYXRlZCcsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgY29tcG9uZW50IHByb3BlcnR5IG5hbWUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSBzdGFuZGFyZCBwcm9wZXJ0eSBuYW1lcyB1c2VkIGJ5IGJhc2UgY29tcG9uZW50cyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGVzZSBwcm9wZXJ0eSBuYW1lcyBhcmUgdXNlZCBmb3IgY29uc2lzdGVudCBwcm9wZXJ0eSBhY2Nlc3MgYWNyb3NzIGNvbXBvbmVudHMuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTU9ERUwgLSBQcm9wZXJ0eSBuYW1lIGZvciB0aGUgY29tcG9uZW50J3MgZGF0YSBtb2RlbFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExPQ0FMRSAtIFByb3BlcnR5IG5hbWUgZm9yIGxvY2FsaXphdGlvbiBzZXR0aW5nc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFBLIC0gUHJvcGVydHkgbmFtZSBmb3IgcHJpbWFyeSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJVEVNUyAtIFByb3BlcnR5IG5hbWUgZm9yIGNvbGxlY3Rpb24gaXRlbXNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBST1VURSAtIFByb3BlcnR5IG5hbWUgZm9yIHJvdXRpbmcgaW5mb3JtYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBPUEVSQVRJT05TIC0gUHJvcGVydHkgbmFtZSBmb3IgYXZhaWxhYmxlIG9wZXJhdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBVSUQgLSBQcm9wZXJ0eSBuYW1lIGZvciB1bmlxdWUgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHtzdHJpbmd9IFRSQU5TTEFUQUJMRSAtIFByb3BlcnR5IG5hbWUgZm9yIHRyYW5zbGF0aW9uIGZsYWdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNQVBQRVIgLSBQcm9wZXJ0eSBuYW1lIGZvciBwcm9wZXJ0eSBtYXBwZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBJTklUSUFMSVpFRCAtIFByb3BlcnR5IG5hbWUgZm9yIGluaXRpYWxpemF0aW9uIHN0YXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgZW51bSBCYXNlQ29tcG9uZW50UHJvcHMge1xuICBNT0RFTCA9ICdtb2RlbCcsXG4gIExPQ0FMRSA9ICdsb2NhbGUnLFxuICBQSyA9ICdwaycsXG4gIElURU1TID0gJ2l0ZW1zJyxcbiAgUk9VVEUgPSAncm91dGUnLFxuICBPUEVSQVRJT05TID0gJ29wZXJhdGlvbnMnLFxuICBVSUQgPSAndWlkJyxcbiAgVFJBTlNMQVRBQkxFID0gJ3RyYW5zbGF0YWJsZScsXG4gIE1BUFBFUiA9ICdtYXBwZXInLFxuICBJTklUSUFMSVpFRCA9ICdpbml0aWFsaXplZCcsXG59XG5cblxuIl19
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV2RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLFdBQVc7SUFDckMsT0FBTyxFQUFFLG1CQUFtQjtJQUM1QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLElBQUksRUFBRSxNQUFNO0lBQ1osVUFBVSxFQUFFLGFBQWE7SUFDekIsUUFBUSxFQUFFLGNBQWM7SUFDeEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsV0FBVyxFQUFFLGlCQUFpQjtJQUM5QixNQUFNLEVBQUUsU0FBUztJQUNqQixxQkFBcUIsRUFBRSxxQkFBcUI7SUFDNUMsMEJBQTBCLEVBQUUsZ0JBQWdCO0NBQzdDLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBRUY7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsc0JBQXNCLEVBQUUsOEJBQThCO0lBQ3RELE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLEtBQUssRUFBRSxZQUFZO0lBQ25CLE1BQU0sRUFBRSxhQUFhO0lBQ3JCLGdCQUFnQixFQUFFLHNCQUFzQjtJQUN4QyxrQkFBa0IsRUFBRSx1QkFBdUI7SUFDM0MscUJBQXFCLEVBQUUsMEJBQTBCO0lBQ2pELHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCw0REFBNEQ7Q0FDN0QsQ0FBQTtBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLENBQU4sSUFBWSxZQU9YO0FBUEQsV0FBWSxZQUFZO0lBQ3RCLDZDQUFPLENBQUE7SUFDUCxpREFBUyxDQUFBO0lBQ1QsK0NBQVEsQ0FBQTtJQUNSLCtDQUFRLENBQUE7SUFDUixpREFBUyxDQUFBO0lBQ1QsdURBQVksQ0FBQTtBQUNkLENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxRQU92QjtBQUFBLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxDQUFOLElBQVksZUFJWDtBQUpELFdBQVksZUFBZTtJQUN6QixnQ0FBYSxDQUFBO0lBQ2Isc0NBQW1CLENBQUE7SUFDbkIsZ0NBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUdEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzVCLHVEQUFpQyxDQUFBO0lBQ2pDLCtEQUF5QyxDQUFBO0lBQ3pDLGlFQUEyQyxDQUFBO0FBQzdDLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFOLElBQVksa0JBV1g7QUFYRCxXQUFZLGtCQUFrQjtJQUM1QixxQ0FBZSxDQUFBO0lBQ2YsdUNBQWlCLENBQUE7SUFDakIsK0JBQVMsQ0FBQTtJQUNULHFDQUFlLENBQUE7SUFDZixxQ0FBZSxDQUFBO0lBQ2YsK0NBQXlCLENBQUE7SUFDekIsaUNBQVcsQ0FBQTtJQUNYLG1EQUE2QixDQUFBO0lBQzdCLHVDQUFpQixDQUFBO0lBQ2pCLGlEQUEyQixDQUFBO0FBQzdCLENBQUMsRUFYVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBVzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVUlLZXlzIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgVkFMSURBVElPTl9QQVJFTlRfS0VZIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQW5ndWxhciBlbmdpbmUga2V5IGNvbnN0YW50c1xuICogQHN1bW1hcnkgQ29udGFpbnMga2V5IHN0cmluZ3MgdXNlZCBieSB0aGUgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lIGZvciByZWZsZWN0aW9uLFxuICogZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24sIGFuZCBvdGhlciBlbmdpbmUgb3BlcmF0aW9ucy5cbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFuZ3VsYXJFbmdpbmVLZXlzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGTEVDVCAtIFByZWZpeCBmb3IgcmVmbGVjdGlvbiBtZXRhZGF0YSBrZXlzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRFlOQU1JQyAtIEtleSBmb3IgZHluYW1pYyBjb21wb25lbnQgaWRlbnRpZmljYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBBTk5PVEFUSU9OUyAtIEtleSBmb3IgY29tcG9uZW50IGFubm90YXRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gRUNNUCAtIEtleSBmb3IgZW1iZWRkZWQgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE5HX1JFRkxFQ1QgLSBQcmVmaXggZm9yIEFuZ3VsYXIgcmVmbGVjdGlvbiBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSRUQgLSBQcmVmaXggZm9yIHJlbmRlcmVkIGNvbXBvbmVudCBtYXJrZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTUFQUEVSIC0gS2V5IGZvciBwcm9wZXJ0eSBtYXBwZXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQ0hJTERSRU4gLSBLZXkgZm9yIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUQUJMRSAtIEtleSBmb3IgbGlzdGFibGUgY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJFTkRFUiAtIEtleSBmb3IgcmVuZGVyYWJsZSBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVOREVSRURfSUQgLSBUZW1wbGF0ZSBmb3IgcmVuZGVyZWQgY29tcG9uZW50IElEc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBUkVOVCAtIEtleSBmb3IgY29tcGFyaXNvbiBkZWNvcmF0b3JzIGFuZCB2YWxpZGF0b3JzXG4gKiBAY29uc3QgQW5ndWxhckVuZ2luZUtleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBBbmd1bGFyRW5naW5lS2V5cyA9IHtcbiAgUkVGTEVDVDogYCR7VUlLZXlzLlJFRkxFQ1R9LmFuZ3VsYXIuYCxcbiAgRFlOQU1JQzogJ2R5bmFtaWMtY29tcG9uZW50JyxcbiAgQU5OT1RBVElPTlM6ICdfX2Fubm90YXRpb25zX18nLFxuICBFQ01QOiAnZWNtcCcsXG4gIE5HX1JFRkxFQ1Q6ICduZy1yZWZsZWN0LScsXG4gIFJFTkRFUkVEOiAncmVuZGVyZWQtYXMtJyxcbiAgTUFQUEVSOiAnbWFwcGVyJyxcbiAgQ0hJTERSRU46ICdjaGlsZHJlbicsXG4gIExJU1RBQkxFOiAnbGlzdGFibGUnLFxuICBSRU5ERVI6ICdyZW5kZXInLFxuICBSRU5ERVJFRF9JRDogJ3JlbmRlcmVkLWFzLXswfScsXG4gIFBBUkVOVDogJ19wYXJlbnQnLFxuICBWQUxJREFUSU9OX1BBUkVOVF9LRVk6IFZBTElEQVRJT05fUEFSRU5UX0tFWSxcbiAgRk9STV9HUk9VUF9DT01QT05FTlRfUFJPUFM6ICdjb21wb25lbnRQcm9wcydcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gdmFsaWRhdGlvbiBzdGF0ZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IENvbnRhaW5zIGNvbnN0YW50cyByZXByZXNlbnRpbmcgdGhlIHBvc3NpYmxlIHZhbGlkYXRpb24gc3RhdGVzIG9mIGEgZm9ybS5cbiAqIFRoZXNlIGFyZSB1c2VkIHRvIGNoZWNrIGFuZCBoYW5kbGUgZm9ybSB2YWxpZGF0aW9uIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICogQHR5cGVkZWYge09iamVjdH0gRm9ybUNvbnN0YW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFZBTElEIC0gQ29uc3RhbnQgcmVwcmVzZW50aW5nIGEgdmFsaWQgZm9ybSBzdGF0ZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOVkFMSUQgLSBDb25zdGFudCByZXByZXNlbnRpbmcgYW4gaW52YWxpZCBmb3JtIHN0YXRlXG4gKiBAY29uc3QgRm9ybUNvbnN0YW50c1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IEZvcm1Db25zdGFudHMgPSB7XG4gIFZBTElEOiAnVkFMSUQnLFxuICBJTlZBTElEOiAnSU5WQUxJRCcsXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFdmVudCBuYW1lIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBjb250YWluaW5nIGNvbnN0YW50cyBmb3IgZXZlbnQgbmFtZXMgdXNlZCB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIGFyZSB1c2VkIHRvIHN0YW5kYXJkaXplIGV2ZW50IG5hbWluZyBhbmQgaGFuZGxpbmcuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gQkFDS19CVVRUT05fTkFWSUdBVElPTiAtIEV2ZW50IGZpcmVkIHdoZW4gYmFjayBidXR0b24gbmF2aWdhdGlvbiBlbmRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVGUkVTSF9FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSByZWZyZXNoIGFjdGlvbiBvY2N1cnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBDTElDS19FVkVOVCAtIEV2ZW50IGZpcmVkIHdoZW4gYSBjbGljayBhY3Rpb24gb2NjdXJzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU1VCTUlUX0VWRU5UIC0gRXZlbnQgZmlyZWQgd2hlbiBhIGZvcm0gc3VibWlzc2lvbiBvY2N1cnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudENvbnN0YW50cyA9IHtcbiAgQkFDS19CVVRUT05fTkFWSUdBVElPTjogJ2JhY2tCdXR0b25OYXZpZ2F0aW9uRW5kRXZlbnQnLFxuICBSRUZSRVNIOiAnUmVmcmVzaEV2ZW50JyxcbiAgQ0xJQ0s6ICdDbGlja0V2ZW50JyxcbiAgU1VCTUlUOiAnU3VibWl0RXZlbnQnLFxuICBWQUxJREFUSU9OX0VSUk9SOiAndmFsaWRhdGlvbkVycm9yRXZlbnQnLFxuICBGSUVMRFNFVF9BRERfR1JPVVA6ICdmaWVsZHNldEFkZEdyb3VwRXZlbnQnLFxuICBGSUVMRFNFVF9VUERBVEVfR1JPVVA6ICdmaWVsZHNldFVwZGF0ZUdyb3VwRXZlbnQnLFxuICBGSUVMRFNFVF9SRU1PVkVfR1JPVVA6ICdmaWVsZHNldFJlbW92ZUdyb3VwRXZlbnQnLFxuICAvLyBGSUVMRFNFVF9HUk9VUF9WQUxJREFUSU9OOiAnZmllbGRzZXRHcm91cFZhbGlkYXRpb25FdmVudCdcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTG9nZ2VyIGxldmVsIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgbG9nZ2luZyBsZXZlbHMgdXNlZCBpbiB0aGUgYXBwbGljYXRpb24ncyBsb2dnaW5nIHN5c3RlbS5cbiAqIExvd2VyIHZhbHVlcyByZXByZXNlbnQgbW9yZSB2ZXJib3NlIGxvZ2dpbmcsIHdoaWxlIGhpZ2hlciB2YWx1ZXMgcmVwcmVzZW50IG1vcmUgY3JpdGljYWwgbG9ncy5cbiAqIEBlbnVtIHtudW1iZXJ9XG4gKiBAcmVhZG9ubHlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBBTEwgLSBMb2cgZXZlcnl0aGluZyAobW9zdCB2ZXJib3NlKVxuICogQHByb3BlcnR5IHtudW1iZXJ9IERFQlVHIC0gTG9nIGRlYnVnIGluZm9ybWF0aW9uXG4gKiBAcHJvcGVydHkge251bWJlcn0gSU5GTyAtIExvZyBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzXG4gKiBAcHJvcGVydHkge251bWJlcn0gV0FSTiAtIExvZyB3YXJuaW5nc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IEVSUk9SIC0gTG9nIGVycm9yc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IENSSVRJQ0FMIC0gTG9nIGNyaXRpY2FsIGVycm9ycyAobGVhc3QgdmVyYm9zZSlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIExvZ2dlckxldmVscyB7XG4gIEFMTCA9IDAsXG4gIERFQlVHID0gMSxcbiAgSU5GTyA9IDIsXG4gIFdBUk4gPSAzLFxuICBFUlJPUiA9IDQsXG4gIENSSVRJQ0FMID0gNVxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUm91dGUgZGlyZWN0aW9uIGNvbnN0YW50c1xuICogQHN1bW1hcnkgRW51bSBkZWZpbmluZyB0aGUgcG9zc2libGUgbmF2aWdhdGlvbiBkaXJlY3Rpb25zIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFVzZWQgZm9yIGNvbnRyb2xsaW5nIG5hdmlnYXRpb24gZmxvdyBhbmQgYW5pbWF0aW9uIGRpcmVjdGlvbnMuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gQkFDSyAtIE5hdmlnYXRlIGJhY2sgdG8gdGhlIHByZXZpb3VzIHBhZ2VcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBGT1JXQVJEIC0gTmF2aWdhdGUgZm9yd2FyZCB0byB0aGUgbmV4dCBwYWdlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUk9PVCAtIE5hdmlnYXRlIHRvIHRoZSByb290L2hvbWUgcGFnZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGVudW0gUm91dGVEaXJlY3Rpb25zIHtcbiAgQkFDSyA9ICdiYWNrJyxcbiAgRk9SV0FSRCA9ICdmb3J3YXJkJyxcbiAgUk9PVCA9ICdyb290Jyxcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnQgdGFnIG5hbWUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBFbnVtIGRlZmluaW5nIHRoZSB0YWcgbmFtZXMgZm9yIGN1c3RvbSBjb21wb25lbnRzIHVzZWQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogVGhlc2UgdGFnIG5hbWVzIGFyZSB1c2VkIGZvciBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFuZCByZW5kZXJpbmcuXG4gKiBAZW51bSB7c3RyaW5nfVxuICogQHJlYWRvbmx5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gTElTVF9JVEVNIC0gVGFnIG5hbWUgZm9yIGxpc3QgaXRlbSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBMSVNUX0lORklOSVRFIC0gVGFnIG5hbWUgZm9yIGluZmluaXRlIHNjcm9sbGluZyBsaXN0IGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtzdHJpbmd9IExJU1RfUEFHSU5BVEVEIC0gVGFnIG5hbWUgZm9yIHBhZ2luYXRlZCBsaXN0IGNvbXBvbmVudFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGVudW0gQ29tcG9uZW50c1RhZ05hbWVzIHtcbiAgTElTVF9JVEVNID0gJ25neC1kZWNhZi1saXN0LWl0ZW0nLFxuICBMSVNUX0lORklOSVRFID0gJ25neC1kZWNhZi1saXN0LWluZmluaXRlJyxcbiAgTElTVF9QQUdJTkFURUQgPSAnbmd4LWRlY2FmLWxpc3QtcGFnaW5hdGVkJyxcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb21wb25lbnQgcHJvcGVydHkgbmFtZSBjb25zdGFudHNcbiAqIEBzdW1tYXJ5IEVudW0gZGVmaW5pbmcgdGhlIHN0YW5kYXJkIHByb3BlcnR5IG5hbWVzIHVzZWQgYnkgYmFzZSBjb21wb25lbnRzIGluIHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZXNlIHByb3BlcnR5IG5hbWVzIGFyZSB1c2VkIGZvciBjb25zaXN0ZW50IHByb3BlcnR5IGFjY2VzcyBhY3Jvc3MgY29tcG9uZW50cy5cbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAcmVhZG9ubHlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNT0RFTCAtIFByb3BlcnR5IG5hbWUgZm9yIHRoZSBjb21wb25lbnQncyBkYXRhIG1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gTE9DQUxFIC0gUHJvcGVydHkgbmFtZSBmb3IgbG9jYWxpemF0aW9uIHNldHRpbmdzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUEsgLSBQcm9wZXJ0eSBuYW1lIGZvciBwcmltYXJ5IGtleVxuICogQHByb3BlcnR5IHtzdHJpbmd9IElURU1TIC0gUHJvcGVydHkgbmFtZSBmb3IgY29sbGVjdGlvbiBpdGVtc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFJPVVRFIC0gUHJvcGVydHkgbmFtZSBmb3Igcm91dGluZyBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IE9QRVJBVElPTlMgLSBQcm9wZXJ0eSBuYW1lIGZvciBhdmFpbGFibGUgb3BlcmF0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFVJRCAtIFByb3BlcnR5IG5hbWUgZm9yIHVuaXF1ZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFJBTlNMQVRBQkxFIC0gUHJvcGVydHkgbmFtZSBmb3IgdHJhbnNsYXRpb24gZmxhZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IE1BUFBFUiAtIFByb3BlcnR5IG5hbWUgZm9yIHByb3BlcnR5IG1hcHBlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IElOSVRJQUxJWkVEIC0gUHJvcGVydHkgbmFtZSBmb3IgaW5pdGlhbGl6YXRpb24gc3RhdGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBlbnVtIEJhc2VDb21wb25lbnRQcm9wcyB7XG4gIE1PREVMID0gJ21vZGVsJyxcbiAgTE9DQUxFID0gJ2xvY2FsZScsXG4gIFBLID0gJ3BrJyxcbiAgSVRFTVMgPSAnaXRlbXMnLFxuICBST1VURSA9ICdyb3V0ZScsXG4gIE9QRVJBVElPTlMgPSAnb3BlcmF0aW9ucycsXG4gIFVJRCA9ICd1aWQnLFxuICBUUkFOU0xBVEFCTEUgPSAndHJhbnNsYXRhYmxlJyxcbiAgTUFQUEVSID0gJ21hcHBlcicsXG4gIElOSVRJQUxJWkVEID0gJ2luaXRpYWxpemVkJyxcbn1cblxuXG4iXX0=
@@ -1,11 +1,11 @@
1
1
  import { apply, metadata } from '@decaf-ts/reflection';
2
- import { NgxRenderingEngine2 } from './NgxRenderingEngine2';
2
+ import { NgxRenderingEngine } from './NgxRenderingEngine';
3
3
  import { AngularEngineKeys } from './constants';
4
4
  import { InternalError } from '@decaf-ts/db-decorators';
5
5
  import { reflectComponentType } from '@angular/core';
6
6
  /**
7
7
  * @description Marks an Angular component as dynamically loadable
8
- * @summary Decorator that registers an Angular component with the NgxRenderingEngine2 for dynamic loading.
8
+ * @summary Decorator that registers an Angular component with the NgxRenderingEngine for dynamic loading.
9
9
  * This decorator must be applied before the @Component decorator to properly extract component metadata.
10
10
  * It adds metadata to the component class and registers it with the rendering engine using its selector.
11
11
  * @function Dynamic
@@ -14,7 +14,7 @@ import { reflectComponentType } from '@angular/core';
14
14
  * sequenceDiagram
15
15
  * participant C as Component Class
16
16
  * participant D as Dynamic Decorator
17
- * participant R as NgxRenderingEngine2
17
+ * participant R as NgxRenderingEngine
18
18
  * participant M as Angular Metadata
19
19
  * C->>D: Apply decorator
20
20
  * D->>M: reflectComponentType()
@@ -32,7 +32,7 @@ export function Dynamic() {
32
32
  const metadata = reflectComponentType(original);
33
33
  if (!metadata)
34
34
  throw new InternalError(`Could not find Component metadata. @Dynamic decorator must come above @Component`);
35
- NgxRenderingEngine2.registerComponent(metadata.selector, original);
36
- }, metadata(NgxRenderingEngine2.key(AngularEngineKeys.DYNAMIC), true));
35
+ NgxRenderingEngine.registerComponent(metadata.selector, original);
36
+ }, metadata(NgxRenderingEngine.key(AngularEngineKeys.DYNAMIC), true));
37
37
  }
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEtBQUssQ0FDVixDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNuQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUF5QixDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFFBQVE7WUFDWCxNQUFNLElBQUksYUFBYSxDQUNyQixrRkFBa0YsQ0FDbkYsQ0FBQztRQUVKLG1CQUFtQixDQUFDLGlCQUFpQixDQUNuQyxRQUFRLENBQUMsUUFBUSxFQUNqQixRQUEyQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQyxFQUNELFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ25FLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSAnQGRlY2FmLXRzL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHsgTmd4UmVuZGVyaW5nRW5naW5lMiB9IGZyb20gJy4vTmd4UmVuZGVyaW5nRW5naW5lMic7XG5pbXBvcnQgeyBBbmd1bGFyRW5naW5lS2V5cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnN0cnVjdG9yIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IEludGVybmFsRXJyb3IgfSBmcm9tICdAZGVjYWYtdHMvZGItZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyByZWZsZWN0Q29tcG9uZW50VHlwZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXJrcyBhbiBBbmd1bGFyIGNvbXBvbmVudCBhcyBkeW5hbWljYWxseSBsb2FkYWJsZVxuICogQHN1bW1hcnkgRGVjb3JhdG9yIHRoYXQgcmVnaXN0ZXJzIGFuIEFuZ3VsYXIgY29tcG9uZW50IHdpdGggdGhlIE5neFJlbmRlcmluZ0VuZ2luZTIgZm9yIGR5bmFtaWMgbG9hZGluZy5cbiAqIFRoaXMgZGVjb3JhdG9yIG11c3QgYmUgYXBwbGllZCBiZWZvcmUgdGhlIEBDb21wb25lbnQgZGVjb3JhdG9yIHRvIHByb3Blcmx5IGV4dHJhY3QgY29tcG9uZW50IG1ldGFkYXRhLlxuICogSXQgYWRkcyBtZXRhZGF0YSB0byB0aGUgY29tcG9uZW50IGNsYXNzIGFuZCByZWdpc3RlcnMgaXQgd2l0aCB0aGUgcmVuZGVyaW5nIGVuZ2luZSB1c2luZyBpdHMgc2VsZWN0b3IuXG4gKiBAZnVuY3Rpb24gRHluYW1pY1xuICogQHJldHVybiB7RnVuY3Rpb259IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gQW5ndWxhciBjb21wb25lbnQgY2xhc3Nlc1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudCBDbGFzc1xuICogICBwYXJ0aWNpcGFudCBEIGFzIER5bmFtaWMgRGVjb3JhdG9yXG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgTmd4UmVuZGVyaW5nRW5naW5lMlxuICogICBwYXJ0aWNpcGFudCBNIGFzIEFuZ3VsYXIgTWV0YWRhdGFcbiAqICAgQy0+PkQ6IEFwcGx5IGRlY29yYXRvclxuICogICBELT4+TTogcmVmbGVjdENvbXBvbmVudFR5cGUoKVxuICogICBNLS0+PkQ6IFJldHVybiBjb21wb25lbnQgbWV0YWRhdGFcbiAqICAgYWx0IE5vIG1ldGFkYXRhIGZvdW5kXG4gKiAgICAgRC0+PkQ6IFRocm93IEludGVybmFsRXJyb3JcbiAqICAgZWxzZSBNZXRhZGF0YSBmb3VuZFxuICogICAgIEQtPj5SOiByZWdpc3RlckNvbXBvbmVudChzZWxlY3RvciwgY29uc3RydWN0b3IpXG4gKiAgICAgRC0+PkM6IEFwcGx5IG1ldGFkYXRhXG4gKiAgIGVuZFxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIER5bmFtaWMoKSB7XG4gIHJldHVybiBhcHBseShcbiAgICAob3JpZ2luYWw6IG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSByZWZsZWN0Q29tcG9uZW50VHlwZShvcmlnaW5hbCBhcyBUeXBlPHVua25vd24+KTtcblxuICAgICAgaWYgKCFtZXRhZGF0YSlcbiAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgICAgYENvdWxkIG5vdCBmaW5kIENvbXBvbmVudCBtZXRhZGF0YS4gQER5bmFtaWMgZGVjb3JhdG9yIG11c3QgY29tZSBhYm92ZSBAQ29tcG9uZW50YFxuICAgICAgICApO1xuXG4gICAgICBOZ3hSZW5kZXJpbmdFbmdpbmUyLnJlZ2lzdGVyQ29tcG9uZW50KFxuICAgICAgICBtZXRhZGF0YS5zZWxlY3RvcixcbiAgICAgICAgb3JpZ2luYWwgYXMgdW5rbm93biBhcyBDb25zdHJ1Y3Rvcjx1bmtub3duPlxuICAgICAgKTtcbiAgICB9LFxuICAgIG1ldGFkYXRhKE5neFJlbmRlcmluZ0VuZ2luZTIua2V5KEFuZ3VsYXJFbmdpbmVLZXlzLkRZTkFNSUMpLCB0cnVlKVxuICApO1xufVxuIl19
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUUzRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxNQUFNLFVBQVUsT0FBTztJQUNyQixPQUFPLEtBQUssQ0FDVixDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUNuQixNQUFNLFFBQVEsR0FBRyxvQkFBb0IsQ0FBQyxRQUF5QixDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLFFBQVE7WUFDWCxNQUFNLElBQUksYUFBYSxDQUNyQixrRkFBa0YsQ0FDbkYsQ0FBQztRQUVKLGtCQUFrQixDQUFDLGlCQUFpQixDQUNsQyxRQUFRLENBQUMsUUFBUSxFQUNqQixRQUEyQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQyxFQUNELFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQ2xFLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXBwbHksIG1ldGFkYXRhIH0gZnJvbSAnQGRlY2FmLXRzL3JlZmxlY3Rpb24nO1xuaW1wb3J0IHsgTmd4UmVuZGVyaW5nRW5naW5lIH0gZnJvbSAnLi9OZ3hSZW5kZXJpbmdFbmdpbmUnO1xuaW1wb3J0IHsgQW5ndWxhckVuZ2luZUtleXMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gJ0BkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBJbnRlcm5hbEVycm9yIH0gZnJvbSAnQGRlY2FmLXRzL2RiLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgcmVmbGVjdENvbXBvbmVudFR5cGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWFya3MgYW4gQW5ndWxhciBjb21wb25lbnQgYXMgZHluYW1pY2FsbHkgbG9hZGFibGVcbiAqIEBzdW1tYXJ5IERlY29yYXRvciB0aGF0IHJlZ2lzdGVycyBhbiBBbmd1bGFyIGNvbXBvbmVudCB3aXRoIHRoZSBOZ3hSZW5kZXJpbmdFbmdpbmUgZm9yIGR5bmFtaWMgbG9hZGluZy5cbiAqIFRoaXMgZGVjb3JhdG9yIG11c3QgYmUgYXBwbGllZCBiZWZvcmUgdGhlIEBDb21wb25lbnQgZGVjb3JhdG9yIHRvIHByb3Blcmx5IGV4dHJhY3QgY29tcG9uZW50IG1ldGFkYXRhLlxuICogSXQgYWRkcyBtZXRhZGF0YSB0byB0aGUgY29tcG9uZW50IGNsYXNzIGFuZCByZWdpc3RlcnMgaXQgd2l0aCB0aGUgcmVuZGVyaW5nIGVuZ2luZSB1c2luZyBpdHMgc2VsZWN0b3IuXG4gKiBAZnVuY3Rpb24gRHluYW1pY1xuICogQHJldHVybiB7RnVuY3Rpb259IEEgZGVjb3JhdG9yIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gQW5ndWxhciBjb21wb25lbnQgY2xhc3Nlc1xuICogQG1lcm1haWRcbiAqIHNlcXVlbmNlRGlhZ3JhbVxuICogICBwYXJ0aWNpcGFudCBDIGFzIENvbXBvbmVudCBDbGFzc1xuICogICBwYXJ0aWNpcGFudCBEIGFzIER5bmFtaWMgRGVjb3JhdG9yXG4gKiAgIHBhcnRpY2lwYW50IFIgYXMgTmd4UmVuZGVyaW5nRW5naW5lXG4gKiAgIHBhcnRpY2lwYW50IE0gYXMgQW5ndWxhciBNZXRhZGF0YVxuICogICBDLT4+RDogQXBwbHkgZGVjb3JhdG9yXG4gKiAgIEQtPj5NOiByZWZsZWN0Q29tcG9uZW50VHlwZSgpXG4gKiAgIE0tLT4+RDogUmV0dXJuIGNvbXBvbmVudCBtZXRhZGF0YVxuICogICBhbHQgTm8gbWV0YWRhdGEgZm91bmRcbiAqICAgICBELT4+RDogVGhyb3cgSW50ZXJuYWxFcnJvclxuICogICBlbHNlIE1ldGFkYXRhIGZvdW5kXG4gKiAgICAgRC0+PlI6IHJlZ2lzdGVyQ29tcG9uZW50KHNlbGVjdG9yLCBjb25zdHJ1Y3RvcilcbiAqICAgICBELT4+QzogQXBwbHkgbWV0YWRhdGFcbiAqICAgZW5kXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gRHluYW1pYygpIHtcbiAgcmV0dXJuIGFwcGx5KFxuICAgIChvcmlnaW5hbDogb2JqZWN0KSA9PiB7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IHJlZmxlY3RDb21wb25lbnRUeXBlKG9yaWdpbmFsIGFzIFR5cGU8dW5rbm93bj4pO1xuXG4gICAgICBpZiAoIW1ldGFkYXRhKVxuICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgICBgQ291bGQgbm90IGZpbmQgQ29tcG9uZW50IG1ldGFkYXRhLiBARHluYW1pYyBkZWNvcmF0b3IgbXVzdCBjb21lIGFib3ZlIEBDb21wb25lbnRgXG4gICAgICAgICk7XG5cbiAgICAgIE5neFJlbmRlcmluZ0VuZ2luZS5yZWdpc3RlckNvbXBvbmVudChcbiAgICAgICAgbWV0YWRhdGEuc2VsZWN0b3IsXG4gICAgICAgIG9yaWdpbmFsIGFzIHVua25vd24gYXMgQ29uc3RydWN0b3I8dW5rbm93bj5cbiAgICAgICk7XG4gICAgfSxcbiAgICBtZXRhZGF0YShOZ3hSZW5kZXJpbmdFbmdpbmUua2V5KEFuZ3VsYXJFbmdpbmVLZXlzLkRZTkFNSUMpLCB0cnVlKVxuICApO1xufVxuIl19
@@ -9,9 +9,11 @@
9
9
  */
10
10
  export * from './constants';
11
11
  export * from './decorators';
12
+ export * from './types';
13
+ export * from './interfaces';
12
14
  export * from './DynamicModule';
13
15
  export * from './NgxRenderingEngine';
14
- export * from './NgxRenderingEngine2';
15
- export * from './types';
16
16
  export * from './NgxBaseComponent';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsb0JBQW9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGUgZW5naW5lXG4gKiBAZGVzY3JpcHRpb24gQW5ndWxhciByZW5kZXJpbmcgZW5naW5lIGZvciBEZWNhZiBhcHBsaWNhdGlvbnNcbiAqIEBzdW1tYXJ5IFRoZSBlbmdpbmUgbW9kdWxlIHByb3ZpZGVzIGNvcmUgZnVuY3Rpb25hbGl0eSBmb3IgcmVuZGVyaW5nIEFuZ3VsYXIgY29tcG9uZW50c1xuICogaW4gRGVjYWYgYXBwbGljYXRpb25zLiBJdCBpbmNsdWRlcyBjb25zdGFudHMsIGRlY29yYXRvcnMsIHJlbmRlcmluZyBlbmdpbmVzLCBhbmQgdXRpbGl0eSB0eXBlc1xuICogdGhhdCBlbmFibGUgZHluYW1pYyBjb21wb25lbnQgY3JlYXRpb24sIHByb3BlcnR5IG1hcHBpbmcsIGFuZCBjb21wb25lbnQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQuXG4gKiBLZXkgZXhwb3J0cyBpbmNsdWRlIHtAbGluayBOZ3hSZW5kZXJpbmdFbmdpbmV9LCB7QGxpbmsgRHluYW1pY01vZHVsZX0sIGFuZCB2YXJpb3VzIGRlY29yYXRvcnNcbiAqIGZvciBjb21wb25lbnQgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9jb25zdGFudHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvcmF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vRHluYW1pY01vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL05neFJlbmRlcmluZ0VuZ2luZSc7XG5leHBvcnQgKiBmcm9tICcuL05neFJlbmRlcmluZ0VuZ2luZTInO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL05neEJhc2VDb21wb25lbnQnO1xuIl19
17
+ export * from './NgxCrudFormField';
18
+ export * from './NgxFormService';
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUNILGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBlbmdpbmVcbiAqIEBkZXNjcmlwdGlvbiBBbmd1bGFyIHJlbmRlcmluZyBlbmdpbmUgZm9yIERlY2FmIGFwcGxpY2F0aW9uc1xuICogQHN1bW1hcnkgVGhlIGVuZ2luZSBtb2R1bGUgcHJvdmlkZXMgY29yZSBmdW5jdGlvbmFsaXR5IGZvciByZW5kZXJpbmcgQW5ndWxhciBjb21wb25lbnRzXG4gKiBpbiBEZWNhZiBhcHBsaWNhdGlvbnMuIEl0IGluY2x1ZGVzIGNvbnN0YW50cywgZGVjb3JhdG9ycywgcmVuZGVyaW5nIGVuZ2luZXMsIGFuZCB1dGlsaXR5IHR5cGVzXG4gKiB0aGF0IGVuYWJsZSBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbiwgcHJvcGVydHkgbWFwcGluZywgYW5kIGNvbXBvbmVudCBsaWZlY3ljbGUgbWFuYWdlbWVudC5cbiAqIEtleSBleHBvcnRzIGluY2x1ZGUge0BsaW5rIE5neFJlbmRlcmluZ0VuZ2luZX0sIHtAbGluayBEeW5hbWljTW9kdWxlfSwgYW5kIHZhcmlvdXMgZGVjb3JhdG9yc1xuICogZm9yIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2RlY29yYXRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9EeW5hbWljTW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vTmd4UmVuZGVyaW5nRW5naW5lJztcbmV4cG9ydCAqIGZyb20gJy4vTmd4QmFzZUNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL05neENydWRGb3JtRmllbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9OZ3hGb3JtU2VydmljZSc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ ;
2
+ ;
3
+ export {};
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2ludGVyZmFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUZDLENBQUM7QUFjRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRWxlbWVudFJlZiwgRW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yZGVyRGlyZWN0aW9uIH0gZnJvbSAnQGRlY2FmLXRzL2NvcmUnO1xuaW1wb3J0IHsgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiwgRmllbGRVcGRhdGVNb2RlLCBLZXlWYWx1ZSwgU3RyaW5nT3JCb29sZWFuIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGaWVsZFByb3BlcnRpZXMgfSBmcm9tICdAZGVjYWYtdHMvdWktZGVjb3JhdG9ycyc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgY29tcG9uZW50cyB0aGF0IGhvbGQgYW4gRWxlbWVudFJlZlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIGNvbXBvbmVudCBob2xkZXIgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSB1bmRlcmx5aW5nIERPTSBlbGVtZW50IHRocm91Z2ggRWxlbWVudFJlZlxuICogQGludGVyZmFjZSBJQ29tcG9uZW50SG9sZGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRIb2xkZXIge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50J3MgRE9NIGVsZW1lbnRcbiAgICogQHByb3BlcnR5IHtFbGVtZW50UmVmfSBjb21wb25lbnQgLSBUaGUgRWxlbWVudFJlZiBpbnN0YW5jZSBwcm92aWRpbmcgYWNjZXNzIHRvIHRoZSBuYXRpdmUgRE9NIGVsZW1lbnRcbiAgICovXG4gIGNvbXBvbmVudDogRWxlbWVudFJlZjtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmb3JtIGNvbXBvbmVudHMgdGhhdCBob2xkIGJvdGggYW4gRWxlbWVudFJlZiBhbmQgYSBGb3JtR3JvdXBcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB0byBpbmNsdWRlIGEgRm9ybUdyb3VwIGZvciBmb3JtIGhhbmRsaW5nIGNhcGFiaWxpdGllc1xuICogQGludGVyZmFjZSBJRm9ybUVsZW1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZvcm1FbGVtZW50IGV4dGVuZHMgSUNvbXBvbmVudEhvbGRlciB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGhlIEFuZ3VsYXIgRm9ybUdyb3VwIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZvcm0gZWxlbWVudFxuICAgKiBAcHJvcGVydHkge0Zvcm1Hcm91cHx1bmRlZmluZWR9IGZvcm1Hcm91cCAtIFRoZSBmb3JtIGdyb3VwIGluc3RhbmNlIGZvciBtYW5hZ2luZyBmb3JtIGNvbnRyb2xzIGFuZCB2YWxpZGF0aW9uXG4gICAqL1xuICBmb3JtR3JvdXA6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGZpZWxkc2V0IGl0ZW0gcmVwcmVzZW50YXRpb24gaW4gdGhlIFVJLlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBpdGVtcyBkaXNwbGF5ZWQgaW4gdGhlIHJlb3JkZXJhYmxlIGxpc3Qgd2l0aGluIHRoZSBmaWVsZHNldC5cbiAqIEVhY2ggaXRlbSByZXByZXNlbnRzIGEgdmFsdWUgYWRkZWQgdG8gdGhlIGZpZWxkc2V0IHdpdGggZGlzcGxheSBwcm9wZXJ0aWVzIGZvciB0aGUgVUkuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWVsZFNldEl0ZW0ge1xuICAvKiogQGRlc2NyaXB0aW9uIFNlcXVlbnRpYWwgaW5kZXggbnVtYmVyIGZvciBvcmRlcmluZyBpdGVtcyBpbiB0aGUgbGlzdCAqL1xuICBpbmRleDogbnVtYmVyO1xuICAvKiogQGRlc2NyaXB0aW9uIFByaW1hcnkgZGlzcGxheSB0ZXh0IGZvciB0aGUgaXRlbSAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHNlY29uZGFyeSB0ZXh0IHByb3ZpZGluZyBhZGRpdGlvbmFsIGl0ZW0gZGV0YWlscyAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBmaWVsZHNldCB2YWxpZGF0aW9uIGV2ZW50IGRhdGEuXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdmFsaWRhdGlvbiBldmVudHMgZW1pdHRlZCB3aGVuIGZvcm0gdmFsaWRhdGlvbiBvY2N1cnMuXG4gKiBVc2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gZm9ybSBjb21wb25lbnRzIGFuZCB0aGUgZmllbGRzZXQgY29udGFpbmVyLlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmllbGRTZXRWYWxpZGF0aW9uRXZlbnQge1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBGb3JtR3JvdXAgY29udGFpbmluZyB0aGUgdmFsaWRhdGVkIGZvcm0gY29udHJvbHMgKi9cbiAgZm9ybUdyb3VwOiAgRm9ybUFycmF5IHwgRm9ybUdyb3VwO1xuICAvKiogQGRlc2NyaXB0aW9uIFRoZSBjdXJyZW50IGZvcm0gdmFsdWUgYmVpbmcgdmFsaWRhdGVkICovXG4gIHZhbHVlOiB1bmtub3duO1xuICAvKiogQGRlc2NyaXB0aW9uIFdoZXRoZXIgdGhlIGZvcm0gdmFsaWRhdGlvbiBwYXNzZWQgb3IgZmFpbGVkICovXG4gIGlzVmFsaWQ6IGJvb2xlYW47XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBpbmRpdmlkdWFsIGZpbHRlciBxdWVyeSBpdGVtc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgc2luZ2xlIGZpbHRlciBjcml0ZXJpb24gaW4gYSBmaWx0ZXIgcXVlcnkuXG4gKiBFYWNoIGl0ZW0gcmVwcmVzZW50cyBvbmUgY29uZGl0aW9uIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGRhdGEsIGNvbnNpc3Rpbmcgb2ZcbiAqIGFuIGluZGV4IChmaWVsZCBuYW1lKSwgYSBjb25kaXRpb24gKGNvbXBhcmlzb24gb3BlcmF0b3IpLCBhbmQgYSB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QuXG4gKiBAaW50ZXJmYWNlIElGaWx0ZXJRdWVyeUl0ZW1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbaW5kZXhdIC0gT3B0aW9uYWwgZmllbGQgbmFtZSBvciBpbmRleCB0byBmaWx0ZXIgb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY29uZGl0aW9uXSAtIE9wdGlvbmFsIGNvbXBhcmlzb24gY29uZGl0aW9uIChlLmcuLCAnRXF1YWwnLCAnQ29udGFpbnMnLCAnR3JlYXRlciBUaGFuJylcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbdmFsdWVdIC0gT3B0aW9uYWwgdmFsdWUgdG8gY29tcGFyZSB0aGUgZmllbGQgYWdhaW5zdFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUXVlcnlJdGVtIHtcbiAgaW5kZXg/OiBzdHJpbmcsXG4gIGNvbmRpdGlvbj86IHN0cmluZyxcbiAgdmFsdWU/OiBzdHJpbmdcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3Igc29ydGluZyBjb25maWd1cmF0aW9uIG9iamVjdHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3Igc3BlY2lmeWluZyBzb3J0IGNyaXRlcmlhIGluY2x1ZGluZyB0aGUgZmllbGRcbiAqIHRvIHNvcnQgYnkgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNvcnQgKGFzY2VuZGluZyBvciBkZXNjZW5kaW5nKS5cbiAqIEBpbnRlcmZhY2UgSVNvcnRPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBmaWVsZCBuYW1lIG9yIHByb3BlcnR5IHRvIHNvcnQgYnlcbiAqIEBwcm9wZXJ0eSB7T3JkZXJEaXJlY3Rpb259IGRpcmVjdGlvbiAtIFRoZSBzb3J0IGRpcmVjdGlvbiAoQVNDIG9yIERTQylcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVNvcnRPYmplY3Qge1xuICB2YWx1ZTogc3RyaW5nLFxuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGNvbXBsZXRlIGZpbHRlciBxdWVyeSBjb25maWd1cmF0aW9uXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb21wbGV0ZSBzdHJ1Y3R1cmUgZm9yIGZpbHRlciBhbmQgc29ydCBvcGVyYXRpb25zLlxuICogQ29tYmluZXMgbXVsdGlwbGUgZmlsdGVyIGNyaXRlcmlhIHdpdGggc29ydGluZyBjb25maWd1cmF0aW9uIHRvIHByb3ZpZGVcbiAqIGNvbXByZWhlbnNpdmUgZGF0YSBmaWx0ZXJpbmcgYW5kIG9yZGVyaW5nIGNhcGFiaWxpdGllcy5cbiAqIEBpbnRlcmZhY2UgSUZpbHRlclF1ZXJ5XG4gKiBAcHJvcGVydHkge0lGaWx0ZXJRdWVyeUl0ZW1bXSB8IHVuZGVmaW5lZH0gcXVlcnkgLSBBcnJheSBvZiBmaWx0ZXIgY3JpdGVyaWEgb3IgdW5kZWZpbmVkIGZvciBubyBmaWx0ZXJpbmdcbiAqIEBwcm9wZXJ0eSB7SVNvcnRPYmplY3R9IHNvcnQgLSBTb3J0aW5nIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyBmaWVsZCBhbmQgZGlyZWN0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElGaWx0ZXJRdWVyeSB7XG4gIHF1ZXJ5OiBJRmlsdGVyUXVlcnlJdGVtW10gfCB1bmRlZmluZWQsXG4gIHNvcnQ6IElTb3J0T2JqZWN0XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGlucHV0IHByb3BlcnRpZXNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgRmllbGRQcm9wZXJ0aWVzIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIHNwZWNpZmljIHRvIEFuZ3VsYXIgY29tcG9uZW50cy5cbiAqIEluY2x1ZGVzIHVwZGF0ZSBtb2RlIGZvciBmb3JtIGNvbnRyb2xzIGFuZCBvcHRpb25hbCBGb3JtR3JvdXAgYW5kIEZvcm1Db250cm9sIHJlZmVyZW5jZXMuXG4gKiBAaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dFxuICogQHByb3BlcnR5IHtGaWVsZFVwZGF0ZU1vZGV9IFt1cGRhdGVNb2RlXSAtIFdoZW4gdGhlIGZpZWxkIHZhbHVlIHNob3VsZCBiZSB1cGRhdGVkXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gW2Zvcm1Hcm91cF0gLSBPcHRpb25hbCBGb3JtR3JvdXAgcmVmZXJlbmNlXG4gKiBAcHJvcGVydHkge0Zvcm1Db250cm9sfSBbZm9ybUNvbnRyb2xdIC0gT3B0aW9uYWwgRm9ybUNvbnRyb2wgcmVmZXJlbmNlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKiBDb250YWlucyB0aGUgY29tcG9uZW50IG5hbWUsIGlucHV0IHByb3BlcnRpZXMsIGluamVjdG9yLCBhbmQgb3B0aW9uYWwgY2hpbGQgY29tcG9uZW50cy5cbiAqIEBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgdG8gcmVuZGVyXG4gKiBAcHJvcGVydHkge0lDb21wb25lbnRJbnB1dH0gaW5wdXRzIC0gVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7RW52aXJvbm1lbnRJbmplY3RvciB8IEluamVjdG9yfSBpbmplY3RvciAtIFRoZSBBbmd1bGFyIGluamVjdG9yIGZvciBkZXBlbmRlbmN5IGluamVjdGlvblxuICogQHByb3BlcnR5IHtJQ29tcG9uZW50Q29uZmlnW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xuICBpbnB1dHM6IElDb21wb25lbnRJbnB1dDtcbiAgaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3RvcjtcbiAgY2hpbGRyZW4/OiBJQ29tcG9uZW50Q29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgZm9yIEFuZ3VsYXIgY29tcG9uZW50cywgaW5jbHVkaW5nXG4gKiBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCBzZWxlY3Rvciwgc3RhbmRhbG9uZSBzdGF0dXMsIGltcG9ydHMsIHRlbXBsYXRlLCBhbmQgc3R5bGVzLlxuICogVGhpcyBpcyB1c2VkIGZvciByZWZsZWN0aW9uIGFuZCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbi5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFuZ2VEZXRlY3Rpb24gLSBUaGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhbmRhbG9uZSAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBzdGFuZGFsb25lXG4gKiBAcHJvcGVydHkgaW1wb3J0cyAtIEFycmF5IG9mIGltcG9ydGVkIG1vZHVsZXMvY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIEhUTUwgdGVtcGxhdGUgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN0eWxlcyAtIEFycmF5IG9mIENTUyBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGEge1xuICBjaGFuZ2VEZXRlY3Rpb246IG51bWJlcjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3RhbmRhbG9uZTogYm9vbGVhbjtcbiAgaW1wb3J0czogKG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKVtdO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE91dHB1dCBzdHJ1Y3R1cmUgZnJvbSB0aGUgQW5ndWxhciByZW5kZXJpbmcgZW5naW5lXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIG91dHB1dCBwcm9kdWNlZCBieSB0aGUgTmd4UmVuZGVyaW5nRW5naW5lXG4gKiB3aGVuIHJlbmRlcmluZyBhIGNvbXBvbmVudC4gQ29udGFpbnMgdGhlIGNvbXBvbmVudCB0eXBlLCBpbnB1dHMsIGluamVjdG9yLFxuICogY29udGVudCBub2RlcywgYW5kIGNoaWxkIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBbmd1bGFyRHluYW1pY091dHB1dFxuICogQHByb3BlcnR5IHtUeXBlPHVua25vd24+fSBjb21wb25lbnQgLSBUaGUgQW5ndWxhciBjb21wb25lbnQgdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtyZW5kZXJlcklkXSAtIE9wdGlvbmFsIHVuaXF1ZSBJRCBmb3IgdGhlIHJlbmRlcmVkIGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gW2lucHV0c10gLSBPcHRpb25hbCBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge0luamVjdG9yfSBbaW5qZWN0b3JdIC0gT3B0aW9uYWwgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Tm9kZVtdW119IFtjb250ZW50XSAtIE9wdGlvbmFsIGNvbnRlbnQgbm9kZXMgZm9yIHByb2plY3Rpb25cbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckR5bmFtaWNPdXRwdXRbXX0gW2NoaWxkcmVuXSAtIE9wdGlvbmFsIGNoaWxkIGNvbXBvbmVudHNcbiAqIEBwcm9wZXJ0eSB7VHlwZTx1bmtub3duPn0gW2luc3RhbmNlXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBpbnN0YW5jZVxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IFtmb3JtR3JvdXBdIC0gT3B0aW9uYWwgY29tcG9uZW50IEZvcm1Hcm91cFxuICogQHByb3BlcnR5IHtGb3JtQ29udHJvbH0gW2Zvcm1Db250cm9sXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBGb3JtQ29udHJvbFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbmd1bGFyRHluYW1pY091dHB1dCB7XG4gIGNvbXBvbmVudD86IFR5cGU8dW5rbm93bj47XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBjb250ZW50PzogTm9kZVtdW107XG4gIGNoaWxkcmVuPzogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcbiAgaW5zdGFuY2U/OiBUeXBlPHVua25vd24+O1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBvcHRpb24gdHlwZSBmb3IgaW5wdXQgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tbW9uIHN0cnVjdHVyZSBmb3Igb3B0aW9ucyB1c2VkIGluIHNlbGVjdCwgcmFkaW8sIGFuZCBjaGVja2JveCBpbnB1dHMuXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZGlzcGxheSB0ZXh0LCB2YWx1ZSwgZGlzYWJsZWQgc3RhdGUsIENTUyBjbGFzcywgYW5kIGljb24uXG4gKiBAaW50ZXJmYWNlIElucHV0T3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgZm9yIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nT3JCb29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBDU1MgY2xhc3MgbmFtZSBmb3Igc3R5bGluZyB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ljb25dIC0gSWNvbiB0byBkaXNwbGF5IHdpdGggdGhlIG9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbiB7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBTdHJpbmdPckJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGNvbXBvbmVudCByZWZyZXNoIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgcmVmcmVzaCBldmVudCBmb3IgbGlzdCBjb21wb25lbnRzLlxuICogQ29udGFpbnMgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGEgZm9yIHRoZSBsaXN0LlxuICogQGludGVyZmFjZSBJTGlzdENvbXBvbmVudFJlZnJlc2hFdmVudFxuICogQHByb3BlcnR5IHtLZXlWYWx1ZVtdfSBkYXRhIC0gQXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnQge1xuICBkYXRhOiBLZXlWYWx1ZVtdO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gc2VydmljZSBjb250cm9sIHN0cnVjdHVyZVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIGZvciBhIGZvcm0gY29udHJvbCBtYW5hZ2VkIGJ5IHRoZSBmb3JtIHNlcnZpY2UuXG4gKiBDb250YWlucyB0aGUgRm9ybUdyb3VwIGNvbnRyb2wgYW5kIHRoZSBhc3NvY2lhdGVkIGZpZWxkIHByb3BlcnRpZXMgZm9yIHJlbmRlcmluZy5cbiAqIEBpbnRlcmZhY2UgRm9ybVNlcnZpY2VDb250cm9sXG4gKiBAcHJvcGVydHkge0Zvcm1Hcm91cH0gY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Hcm91cCBmb3IgdGhlIGNvbnRyb2xcbiAqIEBwcm9wZXJ0eSB7QW5ndWxhckZpZWxkRGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgZmllbGQgcHJvcGVydGllcyBmb3IgcmVuZGVyaW5nIHRoZSBjb250cm9sXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TZXJ2aWNlQ29udHJvbCB7XG4gIGNvbnRyb2w6IEZvcm1Hcm91cDtcbiAgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb247XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGl0ZW0gY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGN1c3RvbSBldmVudHMgdHJpZ2dlcmVkIGJ5IGxpc3QgaXRlbXMuXG4gKiBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGFjdGlvbiBhbmQgcHJpbWFyeSBrZXkuXG4gKiBAaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhY3Rpb24gLSBUaGUgYWN0aW9uIHBlcmZvcm1lZCBvbiB0aGUgbGlzdCBpdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3BrXSAtIE9wdGlvbmFsIHByaW1hcnkga2V5IG9mIHRoZSBhZmZlY3RlZCBpdGVtXG4gKiBAcHJvcGVydHkge2FueX0gZGF0YSAtIFRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBwcm9wZXJ0eSB7SFRNTEVsZW1lbnR9IFt0YXJnZXRdIC0gVGhlIHRhcmdldCBlbGVtZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnQgKGluaGVyaXRlZCBmcm9tIEJhc2VDdXN0b21FdmVudClcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdEl0ZW1DdXN0b21FdmVudCBleHRlbmRzIEJhc2VDdXN0b21FdmVudCB7XG4gIGFjdGlvbjogc3RyaW5nO1xuICBwaz86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIGludGVyZmFjZSBmb3IgY3VzdG9tIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgYmFzZSBzdHJ1Y3R1cmUgZm9yIGN1c3RvbSBldmVudHMgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICogQ29udGFpbnMgcHJvcGVydGllcyBmb3IgdGhlIGV2ZW50IGRhdGEsIHRhcmdldCBlbGVtZW50LCBuYW1lLCBhbmQgY29tcG9uZW50LlxuICogQGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnRcbiAqIEBwcm9wZXJ0eSB7YW55fSBkYXRhIC0gVGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBldmVudFxuICogQHByb3BlcnR5IHtIVE1MRWxlbWVudH0gW3RhcmdldF0gLSBUaGUgdGFyZ2V0IGVsZW1lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gW25hbWVdIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIGNvbXBvbmVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUN1c3RvbUV2ZW50IHtcbiAgbmFtZTogc3RyaW5nO1xuICBjb21wb25lbnQ6IHN0cmluZztcbiAgZGF0YT86IHVua25vd247XG4gIHRhcmdldD86IEhUTUxFbGVtZW50O1xufVxuXG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24gKGkxOG4pIHJlc291cmNlIGZpbGUgcGF0aHMuXG4gKlxuICogQHByb3BlcnR5IHByZWZpeCAtIFRoZSBwcmVmaXggdG8gYmUgdXNlZCBmb3IgdGhlIHJlc291cmNlIGZpbGUgcGF0aC5cbiAqIEBwcm9wZXJ0eSBzdWZmaXggLSBUaGUgc3VmZml4IHRvIGJlIGFwcGVuZGVkIHRvIHRoZSByZXNvdXJjZSBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSTE4blJlc291cmNlQ29uZmlnIHsgcHJlZml4OiBzdHJpbmcsIHN1ZmZpeDogc3RyaW5nIH1cbiJdfQ==
@@ -1,4 +1,2 @@
1
- ;
2
- ;
3
1
  export {};
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUErYUMsQ0FBQztBQWNELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJb25DaGVja2JveCwgSW9uSW5wdXQsIElvblNlbGVjdCwgSW9uVGV4dGFyZWEgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUZXh0RmllbGRUeXBlcyB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IEVudmlyb25tZW50SW5qZWN0b3IsIEluamVjdG9yLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRmllbGRQcm9wZXJ0aWVzIH0gZnJvbSAnQGRlY2FmLXRzL3VpLWRlY29yYXRvcnMnO1xuaW1wb3J0IHsgT3JkZXJEaXJlY3Rpb24gfSBmcm9tICdAZGVjYWYtdHMvY29yZSc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMga2V5LXZhbHVlIHBhaXIgdHlwZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGdlbmVyaWMgb2JqZWN0IHdpdGggc3RyaW5nIGtleXMgYW5kIGFueSB0eXBlIG9mIHZhbHVlcy5cbiAqIFRoaXMgaXMgY29tbW9ubHkgdXNlZCBmb3IgZHluYW1pYyBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdGhlIHByb3BlcnRpZXMgYXJlIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiB7UmVjb3JkPHN0cmluZywgYW55Pn0gS2V5VmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBLZXlWYWx1ZSA9IFJlY29yZDxzdHJpbmcsIGFueT47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyaWMgZnVuY3Rpb24gdHlwZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiBhbnkgdHlwZVxuICogYW5kIHJldHVybnMgYW55IHR5cGUuIFRoaXMgaXMgdXNlZnVsIGZvciBkZWZpbmluZyBmdW5jdGlvbiBwYXJhbWV0ZXJzIG9yIHZhcmlhYmxlc1xuICogd2hlcmUgdGhlIGV4YWN0IGZ1bmN0aW9uIHNpZ25hdHVyZSBpcyBub3Qga25vd24gYXQgY29tcGlsZSB0aW1lLlxuICogQHR5cGVkZWYgRnVuY3Rpb25MaWtlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IHR5cGUgRnVuY3Rpb25MaWtlID0gKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEVsZW1lbnQgc2l6ZSBvcHRpb25zIGZvciBVSSBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBzaXplIHZhbHVlcyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIFVJIGVsZW1lbnRzLlxuICogVGhlc2Ugc2l6ZXMgY29udHJvbCB0aGUgZGltZW5zaW9ucyBhbmQgbGF5b3V0IGJlaGF2aW9yIG9mIGNvbXBvbmVudHMuXG4gKiBAdHlwZWRlZiB7KCdzbWFsbCd8J21lZGl1bSd8J2xhcmdlJ3wneGxhcmdlJ3wnMnhsYXJnZSd8J2F1dG8nfCdleHBhbmQnfCdibG9jaycpfSBFbGVtZW50U2l6ZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRTaXplcyA9XG4gIHwgJ3NtYWxsJ1xuICB8ICdtZWRpdW0nXG4gIHwgJ2xhcmdlJ1xuICB8ICd4bGFyZ2UnXG4gIHwgJzJ4bGFyZ2UnXG4gIHwgJ2F1dG8nXG4gIHwgJ2V4cGFuZCdcbiAgfCAnYmxvY2snO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNpYyBwb3NpdGlvbiBvcHRpb25zIGZvciBVSSBlbGVtZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgcG9zaXRpb24gdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBwb3NpdGlvbnMgY29udHJvbCB0aGUgYWxpZ25tZW50IGFuZCBwbGFjZW1lbnQgb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ2xlZnQnfCdjZW50ZXInfCdyaWdodCd8J3RvcCd8J2JvdHRvbScpfSBFbGVtZW50UG9zaXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBFbGVtZW50UG9zaXRpb25zID0gJ2xlZnQnIHwgJ2NlbnRlcicgfCAncmlnaHQnIHwgJ3RvcCcgfCAnYm90dG9tJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRXh0ZW5kZWQgcG9zaXRpb24gb3B0aW9ucyBmb3IgZmxleCBsYXlvdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNpYyBFbGVtZW50UG9zaXRpb25zIHdpdGggYWRkaXRpb25hbCBmbGV4LXNwZWNpZmljIHBvc2l0aW9uIHZhbHVlcy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBhcmUgdXNlZCBmb3IgY29udHJvbGxpbmcgYWxpZ25tZW50IGFuZCBkaXN0cmlidXRpb24gaW4gZmxleCBjb250YWluZXJzLlxuICogQHR5cGVkZWYgeyhFbGVtZW50UG9zaXRpb25zfCdzdHJldGNoJ3wnbWlkZGxlJ3wnYXJvdW5kJ3wnYmV0d2VlbicpfSBGbGV4UG9zaXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGbGV4UG9zaXRpb25zID1cbiAgfCBFbGVtZW50UG9zaXRpb25zXG4gIHwgJ3N0cmV0Y2gnXG4gIHwgJ21pZGRsZSdcbiAgfCAnYXJvdW5kJ1xuICB8ICdiZXR3ZWVuJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVXBkYXRlIG1vZGUgb3B0aW9ucyBmb3IgZm9ybSBmaWVsZHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgd2hlbiBmb3JtIGZpZWxkIHZhbHVlcyBzaG91bGQgYmUgdXBkYXRlZCBpbiB0aGUgbW9kZWwuXG4gKiAtICdjaGFuZ2UnOiBVcGRhdGUgb24gZXZlcnkgY2hhbmdlIGV2ZW50XG4gKiAtICdibHVyJzogVXBkYXRlIHdoZW4gdGhlIGZpZWxkIGxvc2VzIGZvY3VzXG4gKiAtICdzdWJtaXQnOiBVcGRhdGUgb25seSB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZFxuICogQHR5cGVkZWYgeygnY2hhbmdlJ3wnYmx1cid8J3N1Ym1pdCcpfSBGaWVsZFVwZGF0ZU1vZGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZpZWxkVXBkYXRlTW9kZSA9ICdjaGFuZ2UnIHwgJ2JsdXInIHwgJ3N1Ym1pdCc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE1ldGFkYXRhIHN0cnVjdHVyZSBmb3IgQW5ndWxhciBjb21wb25lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgZm9yIEFuZ3VsYXIgY29tcG9uZW50cywgaW5jbHVkaW5nXG4gKiBjaGFuZ2UgZGV0ZWN0aW9uIHN0cmF0ZWd5LCBzZWxlY3Rvciwgc3RhbmRhbG9uZSBzdGF0dXMsIGltcG9ydHMsIHRlbXBsYXRlLCBhbmQgc3R5bGVzLlxuICogVGhpcyBpcyB1c2VkIGZvciByZWZsZWN0aW9uIGFuZCBkeW5hbWljIGNvbXBvbmVudCBjcmVhdGlvbi5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGFcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjaGFuZ2VEZXRlY3Rpb24gLSBUaGUgY2hhbmdlIGRldGVjdGlvbiBzdHJhdGVneSBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzZWxlY3RvciAtIFRoZSBDU1Mgc2VsZWN0b3IgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gc3RhbmRhbG9uZSAtIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBpcyBzdGFuZGFsb25lXG4gKiBAcHJvcGVydHkgaW1wb3J0cyAtIEFycmF5IG9mIGltcG9ydGVkIG1vZHVsZXMvY29tcG9uZW50c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHRlbXBsYXRlIC0gVGhlIEhUTUwgdGVtcGxhdGUgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IHN0eWxlcyAtIEFycmF5IG9mIENTUyBzdHlsZXMgZm9yIHRoZSBjb21wb25lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50TWV0YWRhdGEge1xuICBjaGFuZ2VEZXRlY3Rpb246IG51bWJlcjtcbiAgc2VsZWN0b3I6IHN0cmluZztcbiAgc3RhbmRhbG9uZTogYm9vbGVhbjtcbiAgaW1wb3J0czogKG5ldyAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duKVtdO1xuICB0ZW1wbGF0ZTogc3RyaW5nO1xuICBzdHlsZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPdXRwdXQgc3RydWN0dXJlIGZyb20gdGhlIEFuZ3VsYXIgcmVuZGVyaW5nIGVuZ2luZVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBvdXRwdXQgcHJvZHVjZWQgYnkgdGhlIE5neFJlbmRlcmluZ0VuZ2luZVxuICogd2hlbiByZW5kZXJpbmcgYSBjb21wb25lbnQuIENvbnRhaW5zIHRoZSBjb21wb25lbnQgdHlwZSwgaW5wdXRzLCBpbmplY3RvcixcbiAqIGNvbnRlbnQgbm9kZXMsIGFuZCBjaGlsZCBjb21wb25lbnRzLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckR5bmFtaWNPdXRwdXRcbiAqIEBwcm9wZXJ0eSB7VHlwZTx1bmtub3duPn0gY29tcG9uZW50IC0gVGhlIEFuZ3VsYXIgY29tcG9uZW50IHR5cGVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbcmVuZGVyZXJJZF0gLSBPcHRpb25hbCB1bmlxdWUgSUQgZm9yIHRoZSByZW5kZXJlZCBjb21wb25lbnRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFtpbnB1dHNdIC0gT3B0aW9uYWwgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhlIGNvbXBvbmVudFxuICogQHByb3BlcnR5IHtJbmplY3Rvcn0gW2luamVjdG9yXSAtIE9wdGlvbmFsIEFuZ3VsYXIgaW5qZWN0b3IgZm9yIGRlcGVuZGVuY3kgaW5qZWN0aW9uXG4gKiBAcHJvcGVydHkge05vZGVbXVtdfSBbY29udGVudF0gLSBPcHRpb25hbCBjb250ZW50IG5vZGVzIGZvciBwcm9qZWN0aW9uXG4gKiBAcHJvcGVydHkge0FuZ3VsYXJEeW5hbWljT3V0cHV0W119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnRzXG4gKiBAcHJvcGVydHkge1R5cGU8dW5rbm93bj59IFtpbnN0YW5jZV0gLSBPcHRpb25hbCBjb21wb25lbnQgaW5zdGFuY2VcbiAqIEBwcm9wZXJ0eSB7Rm9ybUdyb3VwfSBbZm9ybUdyb3VwXSAtIE9wdGlvbmFsIGNvbXBvbmVudCBGb3JtR3JvdXBcbiAqIEBwcm9wZXJ0eSB7Rm9ybUNvbnRyb2x9IFtmb3JtQ29udHJvbF0gLSBPcHRpb25hbCBjb21wb25lbnQgRm9ybUNvbnRyb2xcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW5ndWxhckR5bmFtaWNPdXRwdXQge1xuICBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj47XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG4gIGlucHV0cz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBpbmplY3Rvcj86IEluamVjdG9yO1xuICBjb250ZW50PzogTm9kZVtdW107XG4gIGNoaWxkcmVuPzogQW5ndWxhckR5bmFtaWNPdXRwdXRbXTtcbiAgaW5zdGFuY2U/OiBUeXBlPHVua25vd24+O1xuICBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG4gIGZvcm1Db250cm9sPzogRm9ybUNvbnRyb2w7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gdHlwZSBmb3Igc2VsZWN0IGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBzZWxlY3RlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBTZWxlY3RPcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgc2VsZWN0ZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciByYWRpbyBpbnB1dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIElucHV0T3B0aW9uIGludGVyZmFjZSB3aXRoIGEgY2hlY2tlZCBwcm9wZXJ0eSB0byBpbmRpY2F0ZVxuICogd2hldGhlciB0aGUgb3B0aW9uIGlzIGNoZWNrZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJhZGlvT3B0aW9uID0gSW5wdXRPcHRpb24gJiB7IGNoZWNrZWQ/OiBib29sZWFuIH07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBjaGVja2JveCBpbnB1dHNcbiAqIEBzdW1tYXJ5IEFsaWFzIGZvciBSYWRpb09wdGlvbiwgYXMgY2hlY2tib3ggb3B0aW9ucyBoYXZlIHRoZSBzYW1lIHN0cnVjdHVyZSBhcyByYWRpbyBvcHRpb25zLlxuICogQHR5cGVkZWYge1JhZGlvT3B0aW9ufSBDaGVja2JveE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hlY2tib3hPcHRpb24gPSBSYWRpb09wdGlvbjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBvcHRpb24gdHlwZSBmb3IgaW5wdXQgY29tcG9uZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tbW9uIHN0cnVjdHVyZSBmb3Igb3B0aW9ucyB1c2VkIGluIHNlbGVjdCwgcmFkaW8sIGFuZCBjaGVja2JveCBpbnB1dHMuXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZGlzcGxheSB0ZXh0LCB2YWx1ZSwgZGlzYWJsZWQgc3RhdGUsIENTUyBjbGFzcywgYW5kIGljb24uXG4gKiBAaW50ZXJmYWNlIElucHV0T3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCAtIFRoZSBkaXNwbGF5IHRleHQgZm9yIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfG51bWJlcn0gdmFsdWUgLSBUaGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSBvcHRpb25cbiAqIEBwcm9wZXJ0eSB7U3RyaW5nT3JCb29sZWFufSBbZGlzYWJsZWRdIC0gV2hldGhlciB0aGUgb3B0aW9uIGlzIGRpc2FibGVkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NsYXNzTmFtZV0gLSBDU1MgY2xhc3MgbmFtZSBmb3Igc3R5bGluZyB0aGUgb3B0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ljb25dIC0gSWNvbiB0byBkaXNwbGF5IHdpdGggdGhlIG9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnB1dE9wdGlvbiB7XG4gIHRleHQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZyB8IG51bWJlcjtcbiAgZGlzYWJsZWQ/OiBTdHJpbmdPckJvb2xlYW47XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaWNvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFyZ2V0IG9wdGlvbnMgZm9yIEhUTUwgZm9ybXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB2YWx1ZXMgZm9yIEhUTUwgZm9ybXMsIGluY2x1ZGluZyBzdGFuZGFyZCB0YXJnZXRzXG4gKiBsaWtlICdfYmxhbmsnLCAnX3NlbGYnLCAnX3BhcmVudCcsIGFuZCAnX3RvcCcsIGFzIHdlbGwgYXMgY3VzdG9tIHN0cmluZyB2YWx1ZXMuXG4gKiBAdHlwZWRlZiB7KCdfYmxhbmsnfCdfc2VsZid8J19wYXJlbnQnfCdfdG9wJ3xzdHJpbmcpfSBIVE1MRm9ybVRhcmdldFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTEZvcm1UYXJnZXQgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgfCBzdHJpbmc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxpc3RJdGVtUHJvcCB7XG4vLyAgIHJlbmRlcj86IHN0cmluZyB8IGJvb2xlYW47XG4vLyAgIHRyYW5zbGF0ZVByb3BzPzogc3RyaW5nIHwgc3RyaW5nW107XG4vLyAgIGJ1dHRvbj86IFN0cmluZ09yQm9vbGVhbjtcbi8vICAgaWNvbj86IHN0cmluZztcbi8vICAgaWNvblNsb3Q/OiAnc3RhcnQnIHwgJ2VuZCc7XG4vLyAgIHRpdGxlPzogc3RyaW5nO1xuLy8gICBkZXNjcml0cGlvbj86IHN0cmluZztcbi8vICAgaW5mbz86IHN0cmluZztcbi8vICAgc3ViaW5mbz86IHN0cmluZztcbi8vIH1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBsaXN0IGNvbXBvbmVudCByZWZyZXNoIGV2ZW50c1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGEgcmVmcmVzaCBldmVudCBmb3IgbGlzdCBjb21wb25lbnRzLlxuICogQ29udGFpbnMgYW4gYXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGEgZm9yIHRoZSBsaXN0LlxuICogQGludGVyZmFjZSBJTGlzdENvbXBvbmVudFJlZnJlc2hFdmVudFxuICogQHByb3BlcnR5IHtLZXlWYWx1ZVtdfSBkYXRhIC0gQXJyYXkgb2Yga2V5LXZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyB0aGUgbmV3IGRhdGFcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RDb21wb25lbnRSZWZyZXNoRXZlbnQge1xuICBkYXRhOiBLZXlWYWx1ZVtdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHNlcnZpY2UgY29udHJvbCBzdHJ1Y3R1cmVcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgYSBmb3JtIGNvbnRyb2wgbWFuYWdlZCBieSB0aGUgZm9ybSBzZXJ2aWNlLlxuICogQ29udGFpbnMgdGhlIEZvcm1Hcm91cCBjb250cm9sIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWVsZCBwcm9wZXJ0aWVzIGZvciByZW5kZXJpbmcuXG4gKiBAaW50ZXJmYWNlIEZvcm1TZXJ2aWNlQ29udHJvbFxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtR3JvdXAgZm9yIHRoZSBjb250cm9sXG4gKiBAcHJvcGVydHkge0FuZ3VsYXJGaWVsZERlZmluaXRpb259IHByb3BzIC0gVGhlIGZpZWxkIHByb3BlcnRpZXMgZm9yIHJlbmRlcmluZyB0aGUgY29udHJvbFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtU2VydmljZUNvbnRyb2wge1xuICBjb250cm9sOiBGb3JtR3JvdXA7XG4gIHByb3BzOiBBbmd1bGFyRmllbGREZWZpbml0aW9uO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGZvciBmb3JtIHNlcnZpY2UgY29udHJvbHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBmb3JtIGNvbnRyb2xzIG1hbmFnZWQgYnkgdGhlIGZvcm0gc2VydmljZS5cbiAqIEl0J3MgYSBuZXN0ZWQgcmVjb3JkIHdoZXJlIHRoZSBvdXRlciBrZXkgaXMgdGhlIGZvcm0gZ3JvdXAgbmFtZSwgdGhlIGlubmVyIGtleVxuICogaXMgdGhlIGNvbnRyb2wgbmFtZSwgYW5kIHRoZSB2YWx1ZSBjb250YWlucyB0aGUgZm9ybSBncm91cCBhbmQgZmllbGQgcHJvcGVydGllcy5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGNvbnRyb2w6IEZvcm1Hcm91cDsgcHJvcHM6IEFuZ3VsYXJGaWVsZERlZmluaXRpb24gfT4+fSBGb3JtU2VydmljZUNvbnRyb2xzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBGb3JtU2VydmljZUNvbnRyb2xzID0gUmVjb3JkPFxuICBzdHJpbmcsXG4gIFJlY29yZDxzdHJpbmcsIEZvcm1TZXJ2aWNlQ29udHJvbD5cbj47XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJlbmRlcmVyIGN1c3RvbSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBDb21iaW5lcyBCYXNlQ3VzdG9tRXZlbnQgd2l0aCBLZXlWYWx1ZSBwcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIGZsZXhpYmxlXG4gKiBjdXN0b20gZXZlbnQgdHlwZSBmb3IgcmVuZGVyZXIgY29tcG9uZW50cy4gVGhpcyBhbGxvd3MgZXZlbnRzIHRvIGNhcnJ5IGJvdGhcbiAqIHN0YW5kYXJkIGV2ZW50IHByb3BlcnRpZXMgYW5kIGFkZGl0aW9uYWwgY3VzdG9tIGRhdGEuXG4gKiBAdHlwZWRlZiBSZW5kZXJlckN1c3RvbUV2ZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBSZW5kZXJlckN1c3RvbUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYgS2V5VmFsdWU7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbGlzdCBpdGVtIGN1c3RvbSBldmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBjdXN0b20gZXZlbnRzIHRyaWdnZXJlZCBieSBsaXN0IGl0ZW1zLlxuICogRXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgZm9yIHRoZSBhY3Rpb24gYW5kIHByaW1hcnkga2V5LlxuICogQGludGVyZmFjZSBMaXN0SXRlbUN1c3RvbUV2ZW50XG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aW9uIC0gVGhlIGFjdGlvbiBwZXJmb3JtZWQgb24gdGhlIGxpc3QgaXRlbVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtwa10gLSBPcHRpb25hbCBwcmltYXJ5IGtleSBvZiB0aGUgYWZmZWN0ZWQgaXRlbVxuICogQHByb3BlcnR5IHthbnl9IGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAcHJvcGVydHkge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIFRoZSB0YXJnZXQgZWxlbWVudCAoaW5oZXJpdGVkIGZyb20gQmFzZUN1c3RvbUV2ZW50KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtuYW1lXSAtIFRoZSBuYW1lIG9mIHRoZSBldmVudCAoaW5oZXJpdGVkIGZyb20gQmFzZUN1c3RvbUV2ZW50KVxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbXBvbmVudCAtIFRoZSBjb21wb25lbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGV2ZW50IChpbmhlcml0ZWQgZnJvbSBCYXNlQ3VzdG9tRXZlbnQpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RJdGVtQ3VzdG9tRXZlbnQgZXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQge1xuICBhY3Rpb246IHN0cmluZztcbiAgcGs/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2UgaW50ZXJmYWNlIGZvciBjdXN0b20gZXZlbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNlIHN0cnVjdHVyZSBmb3IgY3VzdG9tIGV2ZW50cyBpbiB0aGUgYXBwbGljYXRpb24uXG4gKiBDb250YWlucyBwcm9wZXJ0aWVzIGZvciB0aGUgZXZlbnQgZGF0YSwgdGFyZ2V0IGVsZW1lbnQsIG5hbWUsIGFuZCBjb21wb25lbnQuXG4gKiBAaW50ZXJmYWNlIEJhc2VDdXN0b21FdmVudFxuICogQHByb3BlcnR5IHthbnl9IGRhdGEgLSBUaGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGV2ZW50XG4gKiBAcHJvcGVydHkge0hUTUxFbGVtZW50fSBbdGFyZ2V0XSAtIFRoZSB0YXJnZXQgZWxlbWVudCB0aGF0IHRyaWdnZXJlZCB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbmFtZV0gLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBjb21wb25lbnQgLSBUaGUgY29tcG9uZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBldmVudFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlQ3VzdG9tRXZlbnQge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbXBvbmVudDogc3RyaW5nO1xuICBkYXRhPzogdW5rbm93bjtcbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENSVUQgZm9ybSBldmVudCB0eXBlXG4gKiBAc3VtbWFyeSBFeHRlbmRzIEJhc2VDdXN0b21FdmVudCB0byBpbmNsdWRlIG9wdGlvbmFsIGhhbmRsZXJzIGZvciBDUlVEIGZvcm0gb3BlcmF0aW9ucy5cbiAqIFRoaXMgZXZlbnQgdHlwZSBpcyB1c2VkIGZvciBmb3JtLXJlbGF0ZWQgYWN0aW9ucyBsaWtlIGNyZWF0ZSwgcmVhZCwgdXBkYXRlLCBhbmQgZGVsZXRlIG9wZXJhdGlvbnMuXG4gKiBAdHlwZWRlZiBDcnVkRm9ybUV2ZW50XG4gKiBAcHJvcGVydHkge1JlY29yZDxzdHJpbmcsIGFueT59IFtoYW5kbGVyc10gLSBPcHRpb25hbCBoYW5kbGVycyBmb3IgZm9ybSBvcGVyYXRpb25zXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDcnVkRm9ybUV2ZW50ID0gQmFzZUN1c3RvbUV2ZW50ICYge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBoYW5kbGVycz86IFJlY29yZDxzdHJpbmcsIGFueT47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb21wb25lbnQgaW5wdXQgcHJvcGVydGllc1xuICogQHN1bW1hcnkgRXh0ZW5kcyBGaWVsZFByb3BlcnRpZXMgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQW5ndWxhciBjb21wb25lbnRzLlxuICogSW5jbHVkZXMgdXBkYXRlIG1vZGUgZm9yIGZvcm0gY29udHJvbHMgYW5kIG9wdGlvbmFsIEZvcm1Hcm91cCBhbmQgRm9ybUNvbnRyb2wgcmVmZXJlbmNlcy5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50SW5wdXRcbiAqIEBwcm9wZXJ0eSB7RmllbGRVcGRhdGVNb2RlfSBbdXBkYXRlTW9kZV0gLSBXaGVuIHRoZSBmaWVsZCB2YWx1ZSBzaG91bGQgYmUgdXBkYXRlZFxuICogQHByb3BlcnR5IHtGb3JtR3JvdXB9IFtmb3JtR3JvdXBdIC0gT3B0aW9uYWwgRm9ybUdyb3VwIHJlZmVyZW5jZVxuICogQHByb3BlcnR5IHtGb3JtQ29udHJvbH0gW2Zvcm1Db250cm9sXSAtIE9wdGlvbmFsIEZvcm1Db250cm9sIHJlZmVyZW5jZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRJbnB1dCBleHRlbmRzIEZpZWxkUHJvcGVydGllcyB7XG4gIHVwZGF0ZU1vZGU/OiBGaWVsZFVwZGF0ZU1vZGU7XG4gIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcbiAgZm9ybUNvbnRyb2w/OiBGb3JtQ29udHJvbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciBkeW5hbWljYWxseSBjcmVhdGluZyBBbmd1bGFyIGNvbXBvbmVudHMuXG4gKiBDb250YWlucyB0aGUgY29tcG9uZW50IG5hbWUsIGlucHV0IHByb3BlcnRpZXMsIGluamVjdG9yLCBhbmQgb3B0aW9uYWwgY2hpbGQgY29tcG9uZW50cy5cbiAqIEBpbnRlcmZhY2UgQ29tcG9uZW50Q29uZmlnXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29tcG9uZW50IC0gVGhlIG5hbWUgb2YgdGhlIGNvbXBvbmVudCB0byByZW5kZXJcbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50SW5wdXR9IGlucHV0cyAtIFRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGUgY29tcG9uZW50XG4gKiBAcHJvcGVydHkge0Vudmlyb25tZW50SW5qZWN0b3IgfCBJbmplY3Rvcn0gaW5qZWN0b3IgLSBUaGUgQW5ndWxhciBpbmplY3RvciBmb3IgZGVwZW5kZW5jeSBpbmplY3Rpb25cbiAqIEBwcm9wZXJ0eSB7Q29tcG9uZW50Q29uZmlnW119IFtjaGlsZHJlbl0gLSBPcHRpb25hbCBjaGlsZCBjb21wb25lbnQgY29uZmlndXJhdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29uZmlnIHtcbiAgY29tcG9uZW50OiBzdHJpbmc7XG4gIGlucHV0czogQ29tcG9uZW50SW5wdXQ7XG4gIGluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yIHwgSW5qZWN0b3I7XG4gIGNoaWxkcmVuPzogQ29tcG9uZW50Q29uZmlnW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZvcm0gcGFyZW50IGdyb3VwIHR1cGxlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdHVwbGUgY29udGFpbmluZyBhIEZvcm1Hcm91cCBhbmQgaXRzIGFzc29jaWF0ZWQgc3RyaW5nIGlkZW50aWZpZXIuXG4gKiBUaGlzIGlzIHVzZWQgZm9yIG1hbmFnaW5nIGhpZXJhcmNoaWNhbCBmb3JtIHN0cnVjdHVyZXMgYW5kIHBhcmVudC1jaGlsZCByZWxhdGlvbnNoaXBzLlxuICogQHR5cGVkZWYge1tGb3JtR3JvdXAsIHN0cmluZ119IEZvcm1QYXJlbnRHcm91cFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRm9ybVBhcmVudEdyb3VwID0gW0Zvcm1Hcm91cCwgIHN0cmluZ107XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgaW5kaXZpZHVhbCBmaWx0ZXIgcXVlcnkgaXRlbXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHN0cnVjdHVyZSBvZiBhIHNpbmdsZSBmaWx0ZXIgY3JpdGVyaW9uIGluIGEgZmlsdGVyIHF1ZXJ5LlxuICogRWFjaCBpdGVtIHJlcHJlc2VudHMgb25lIGNvbmRpdGlvbiB0byBiZSBhcHBsaWVkIHRvIHRoZSBkYXRhLCBjb25zaXN0aW5nIG9mXG4gKiBhbiBpbmRleCAoZmllbGQgbmFtZSksIGEgY29uZGl0aW9uIChjb21wYXJpc29uIG9wZXJhdG9yKSwgYW5kIGEgdmFsdWUgdG8gY29tcGFyZSBhZ2FpbnN0LlxuICogQGludGVyZmFjZSBJRmlsdGVyUXVlcnlJdGVtXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2luZGV4XSAtIE9wdGlvbmFsIGZpZWxkIG5hbWUgb3IgaW5kZXggdG8gZmlsdGVyIG9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2NvbmRpdGlvbl0gLSBPcHRpb25hbCBjb21wYXJpc29uIGNvbmRpdGlvbiAoZS5nLiwgJ0VxdWFsJywgJ0NvbnRhaW5zJywgJ0dyZWF0ZXIgVGhhbicpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3ZhbHVlXSAtIE9wdGlvbmFsIHZhbHVlIHRvIGNvbXBhcmUgdGhlIGZpZWxkIGFnYWluc3RcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUZpbHRlclF1ZXJ5SXRlbSB7XG4gIGluZGV4Pzogc3RyaW5nLFxuICBjb25kaXRpb24/OiBzdHJpbmcsXG4gIHZhbHVlPzogc3RyaW5nXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHNvcnRpbmcgY29uZmlndXJhdGlvbiBvYmplY3RzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgZm9yIHNwZWNpZnlpbmcgc29ydCBjcml0ZXJpYSBpbmNsdWRpbmcgdGhlIGZpZWxkXG4gKiB0byBzb3J0IGJ5IGFuZCB0aGUgZGlyZWN0aW9uIG9mIHRoZSBzb3J0IChhc2NlbmRpbmcgb3IgZGVzY2VuZGluZykuXG4gKiBAaW50ZXJmYWNlIElTb3J0T2JqZWN0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gdmFsdWUgLSBUaGUgZmllbGQgbmFtZSBvciBwcm9wZXJ0eSB0byBzb3J0IGJ5XG4gKiBAcHJvcGVydHkge09yZGVyRGlyZWN0aW9ufSBkaXJlY3Rpb24gLSBUaGUgc29ydCBkaXJlY3Rpb24gKEFTQyBvciBEU0MpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTb3J0T2JqZWN0IHtcbiAgdmFsdWU6IHN0cmluZyxcbiAgZGlyZWN0aW9uOiBPcmRlckRpcmVjdGlvblxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciBjb21wbGV0ZSBmaWx0ZXIgcXVlcnkgY29uZmlndXJhdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgY29tcGxldGUgc3RydWN0dXJlIGZvciBmaWx0ZXIgYW5kIHNvcnQgb3BlcmF0aW9ucy5cbiAqIENvbWJpbmVzIG11bHRpcGxlIGZpbHRlciBjcml0ZXJpYSB3aXRoIHNvcnRpbmcgY29uZmlndXJhdGlvbiB0byBwcm92aWRlXG4gKiBjb21wcmVoZW5zaXZlIGRhdGEgZmlsdGVyaW5nIGFuZCBvcmRlcmluZyBjYXBhYmlsaXRpZXMuXG4gKiBAaW50ZXJmYWNlIElGaWx0ZXJRdWVyeVxuICogQHByb3BlcnR5IHtJRmlsdGVyUXVlcnlJdGVtW10gfCB1bmRlZmluZWR9IHF1ZXJ5IC0gQXJyYXkgb2YgZmlsdGVyIGNyaXRlcmlhIG9yIHVuZGVmaW5lZCBmb3Igbm8gZmlsdGVyaW5nXG4gKiBAcHJvcGVydHkge0lTb3J0T2JqZWN0fSBzb3J0IC0gU29ydGluZyBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgZmllbGQgYW5kIGRpcmVjdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRmlsdGVyUXVlcnkge1xuICBxdWVyeTogSUZpbHRlclF1ZXJ5SXRlbVtdIHwgdW5kZWZpbmVkLFxuICBzb3J0OiBJU29ydE9iamVjdFxufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2VuZ2luZS90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvbklucHV0LCBJb25TZWxlY3QsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgVGV4dEZpZWxkVHlwZXMgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYXNlQ3VzdG9tRXZlbnQsIEZvcm1TZXJ2aWNlQ29udHJvbCwgSW5wdXRPcHRpb24gfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5cblxuZXhwb3J0IHR5cGUgSGFuZGxlckxpa2UgPSBSZWNvcmQ8c3RyaW5nLCAoLi4uYXJnczogdW5rbm93bltdKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPj5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBrZXktdmFsdWUgcGFpciB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZ2VuZXJpYyBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBhbmQgYW55IHR5cGUgb2YgdmFsdWVzLlxuICogVGhpcyBpcyBjb21tb25seSB1c2VkIGZvciBkeW5hbWljIGRhdGEgc3RydWN0dXJlcyB3aGVyZSB0aGUgcHJvcGVydGllcyBhcmUgbm90IGtub3duIGF0IGNvbXBpbGUgdGltZS5cbiAqIEB0eXBlZGVmIHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBLZXlWYWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmV4cG9ydCB0eXBlIEtleVZhbHVlID0gUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJpYyBmdW5jdGlvbiB0eXBlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGFueSBudW1iZXIgb2YgYXJndW1lbnRzIG9mIGFueSB0eXBlXG4gKiBhbmQgcmV0dXJucyBhbnkgdHlwZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlZmluaW5nIGZ1bmN0aW9uIHBhcmFtZXRlcnMgb3IgdmFyaWFibGVzXG4gKiB3aGVyZSB0aGUgZXhhY3QgZnVuY3Rpb24gc2lnbmF0dXJlIGlzIG5vdCBrbm93biBhdCBjb21waWxlIHRpbWUuXG4gKiBAdHlwZWRlZiBGdW5jdGlvbkxpa2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgdHlwZSBGdW5jdGlvbkxpa2UgPSAoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRWxlbWVudCBzaXplIG9wdGlvbnMgZm9yIFVJIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHNpemUgdmFsdWVzIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gVUkgZWxlbWVudHMuXG4gKiBUaGVzZSBzaXplcyBjb250cm9sIHRoZSBkaW1lbnNpb25zIGFuZCBsYXlvdXQgYmVoYXZpb3Igb2YgY29tcG9uZW50cy5cbiAqIEB0eXBlZGVmIHsoJ3NtYWxsJ3wnbWVkaXVtJ3wnbGFyZ2UnfCd4bGFyZ2UnfCcyeGxhcmdlJ3wnYXV0byd8J2V4cGFuZCd8J2Jsb2NrJyl9IEVsZW1lbnRTaXplc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRWxlbWVudFNpemVzID1cbiAgfCAnc21hbGwnXG4gIHwgJ21lZGl1bSdcbiAgfCAnbGFyZ2UnXG4gIHwgJ3hsYXJnZSdcbiAgfCAnMnhsYXJnZSdcbiAgfCAnYXV0bydcbiAgfCAnZXhwYW5kJ1xuICB8ICdibG9jayc7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEJhc2ljIHBvc2l0aW9uIG9wdGlvbnMgZm9yIFVJIGVsZW1lbnRzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBwb3NzaWJsZSBwb3NpdGlvbiB2YWx1ZXMgdGhhdCBjYW4gYmUgYXBwbGllZCB0byBVSSBlbGVtZW50cy5cbiAqIFRoZXNlIHBvc2l0aW9ucyBjb250cm9sIHRoZSBhbGlnbm1lbnQgYW5kIHBsYWNlbWVudCBvZiBjb21wb25lbnRzLlxuICogQHR5cGVkZWYgeygnbGVmdCd8J2NlbnRlcid8J3JpZ2h0J3wndG9wJ3wnYm90dG9tJyl9IEVsZW1lbnRQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEVsZW1lbnRQb3NpdGlvbnMgPSAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgfCAndG9wJyB8ICdib3R0b20nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBFeHRlbmRlZCBwb3NpdGlvbiBvcHRpb25zIGZvciBmbGV4IGxheW91dHNcbiAqIEBzdW1tYXJ5IEV4dGVuZHMgdGhlIGJhc2ljIEVsZW1lbnRQb3NpdGlvbnMgd2l0aCBhZGRpdGlvbmFsIGZsZXgtc3BlY2lmaWMgcG9zaXRpb24gdmFsdWVzLlxuICogVGhlc2UgcG9zaXRpb25zIGFyZSB1c2VkIGZvciBjb250cm9sbGluZyBhbGlnbm1lbnQgYW5kIGRpc3RyaWJ1dGlvbiBpbiBmbGV4IGNvbnRhaW5lcnMuXG4gKiBAdHlwZWRlZiB7KEVsZW1lbnRQb3NpdGlvbnN8J3N0cmV0Y2gnfCdtaWRkbGUnfCdhcm91bmQnfCdiZXR3ZWVuJyl9IEZsZXhQb3NpdGlvbnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhQb3NpdGlvbnMgPVxuICB8IEVsZW1lbnRQb3NpdGlvbnNcbiAgfCAnc3RyZXRjaCdcbiAgfCAnbWlkZGxlJ1xuICB8ICdhcm91bmQnXG4gIHwgJ2JldHdlZW4nO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVcGRhdGUgbW9kZSBvcHRpb25zIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB3aGVuIGZvcm0gZmllbGQgdmFsdWVzIHNob3VsZCBiZSB1cGRhdGVkIGluIHRoZSBtb2RlbC5cbiAqIC0gJ2NoYW5nZSc6IFVwZGF0ZSBvbiBldmVyeSBjaGFuZ2UgZXZlbnRcbiAqIC0gJ2JsdXInOiBVcGRhdGUgd2hlbiB0aGUgZmllbGQgbG9zZXMgZm9jdXNcbiAqIC0gJ3N1Ym1pdCc6IFVwZGF0ZSBvbmx5IHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkXG4gKiBAdHlwZWRlZiB7KCdjaGFuZ2UnfCdibHVyJ3wnc3VibWl0Jyl9IEZpZWxkVXBkYXRlTW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgRmllbGRVcGRhdGVNb2RlID0gJ2NoYW5nZScgfCAnYmx1cicgfCAnc3VibWl0JztcblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgbW9kZWxzIHRoYXQgY2FuIGJlIHJlbmRlcmVkXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBiYXNpYyBzdHJ1Y3R1cmUgZm9yIG1vZGVscyB0aGF0IGNhbiBiZSByZW5kZXJlZCBieSB0aGUgZW5naW5lLlxuICogQ29udGFpbnMgYW4gb3B0aW9uYWwgcmVuZGVyZXJJZCB0aGF0IHVuaXF1ZWx5IGlkZW50aWZpZXMgdGhlIHJlbmRlcmVkIGluc3RhbmNlLlxuICogQGludGVyZmFjZSBSZW5kZXJlZE1vZGVsXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3JlbmRlcmVySWRdIC0gT3B0aW9uYWwgdW5pcXVlIElEIGZvciB0aGUgcmVuZGVyZWQgbW9kZWwgaW5zdGFuY2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRNb2RlbCB7XG4gIHJlbmRlcmVySWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFBvc3NpYmxlIGlucHV0IHR5cGVzIGZvciBmb3JtIGZpZWxkc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcG9zc2libGUgaW5wdXQgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiBmb3JtIGZpZWxkcy5cbiAqIEluY2x1ZGVzIHN0YW5kYXJkIEhUTUwgaW5wdXQgdHlwZXMgbGlrZSBjaGVja2JveCwgcmFkaW8sIGFuZCBzZWxlY3QsXG4gKiBhcyB3ZWxsIGFzIElvbmljJ3MgVGV4dEZpZWxkVHlwZXMgYW5kIHRleHRhcmVhLlxuICogQHR5cGVkZWYgeygnY2hlY2tib3gnfCdyYWRpbyd8J3NlbGVjdCd8VGV4dEZpZWxkVHlwZXN8J3RleHRhcmVhJyl9IFBvc3NpYmxlSW5wdXRUeXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUG9zc2libGVJbnB1dFR5cGVzID1cbiAgfCAnY2hlY2tib3gnXG4gIHwgJ3JhZGlvJ1xuICB8ICdzZWxlY3QnXG4gIHwgVGV4dEZpZWxkVHlwZXNcbiAgfCAndGV4dGFyZWEnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGaWVsZCBkZWZpbml0aW9uIGZvciBBbmd1bGFyIGNvbXBvbmVudHNcbiAqIEBzdW1tYXJ5IEEgY29tcHJlaGVuc2l2ZSB0eXBlIHRoYXQgY29tYmluZXMgcHJvcGVydGllcyBmcm9tIHZhcmlvdXMgSW9uaWMgY29tcG9uZW50c1xuICogdG8gZGVmaW5lIHRoZSBzdHJ1Y3R1cmUgb2YgYSBmaWVsZCBpbiBhbiBBbmd1bGFyIGZvcm0uIEl0IG9taXRzIGNlcnRhaW4gcHJvcGVydGllc1xuICogZnJvbSBJb25JbnB1dCwgcGlja3Mgc3BlY2lmaWMgcHJvcGVydGllcyBmcm9tIElvblNlbGVjdCwgSW9uVGV4dGFyZWEsIGFuZCBJb25DaGVja2JveCxcbiAqIGFuZCBhZGRzIGN1c3RvbSBwcm9wZXJ0aWVzIGxpa2UgdHlwZSBhbmQgY2xhc3NOYW1lLlxuICogQHR5cGVkZWYge09iamVjdH0gQW5ndWxhckZpZWxkRGVmaW5pdGlvblxuICogQHByb3BlcnR5IHtQb3NzaWJsZUlucHV0VHlwZXN9IHR5cGUgLSBUaGUgdHlwZSBvZiBpbnB1dCBmaWVsZFxuICogQHByb3BlcnR5IHtzdHJpbmd8c3RyaW5nW119IGNsYXNzTmFtZSAtIENTUyBjbGFzcyBuYW1lKHMpIGZvciB0aGUgZmllbGRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbY2FuY2VsVGV4dF0gLSBUZXh0IGZvciB0aGUgY2FuY2VsIGJ1dHRvbiAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2ludGVyZmFjZV0gLSBJbnRlcmZhY2Ugc3R5bGUgZm9yIHNlbGVjdCAoZnJvbSBJb25TZWxlY3QpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW3NlbGVjdGVkVGV4dF0gLSBUZXh0IGZvciBzZWxlY3RlZCBvcHRpb24gKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtpbnRlcmZhY2VPcHRpb25zXSAtIE9wdGlvbnMgZm9yIHRoZSBpbnRlcmZhY2UgKGZyb20gSW9uU2VsZWN0KVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFtyb3dzXSAtIE51bWJlciBvZiByb3dzIGZvciB0ZXh0YXJlYSAoZnJvbSBJb25UZXh0YXJlYSlcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbY29sc10gLSBOdW1iZXIgb2YgY29sdW1ucyBmb3IgdGV4dGFyZWEgKGZyb20gSW9uVGV4dGFyZWEpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2FsaWdubWVudF0gLSBBbGlnbm1lbnQgb2YgY2hlY2tib3ggKGZyb20gSW9uQ2hlY2tib3gpXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2p1c3RpZnldIC0gSnVzdGlmaWNhdGlvbiBvZiBjaGVja2JveCAoZnJvbSBJb25DaGVja2JveClcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW2NoZWNrZWRdIC0gV2hldGhlciBjaGVja2JveCBpcyBjaGVja2VkIChmcm9tIElvbkNoZWNrYm94KVxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQW5ndWxhckZpZWxkRGVmaW5pdGlvbiA9IE9taXQ8XG4gIElvbklucHV0LFxuICB8ICdpb25JbnB1dCdcbiAgfCAnaW9uRm9jdXMnXG4gIHwgJ2lvbkNoYW5nZSdcbiAgfCAnaW9uQmx1cidcbiAgfCAnZ2V0SW5wdXRFbGVtZW50J1xuICB8ICdzZXRGb2N1cydcbiAgfCAnbGFiZWwnXG4gIHwgJ2VsJ1xuICB8ICd6J1xuICB8ICd0eXBlJ1xuPiAmXG4gIFBpY2s8XG4gICAgSW9uU2VsZWN0LFxuICAgICdjYW5jZWxUZXh0JyB8ICdpbnRlcmZhY2UnIHwgJ3NlbGVjdGVkVGV4dCcgfCAnaW50ZXJmYWNlT3B0aW9ucydcbiAgPiAmXG4gIFBpY2s8SW9uVGV4dGFyZWEsICdyb3dzJyB8ICdjb2xzJz4gJlxuICBQaWNrPElvbkNoZWNrYm94LCAnYWxpZ25tZW50JyB8ICdqdXN0aWZ5JyB8ICdjaGVja2VkJz4gJiB7XG4gIHR5cGU6IFBvc3NpYmxlSW5wdXRUeXBlcztcbiAgY2xhc3NOYW1lOiBzdHJpbmcgfCBzdHJpbmdbXTtcbn0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RyaW5nIG9yIGJvb2xlYW4gcmVwcmVzZW50YXRpb24gb2YgYSBib29sZWFuIHZhbHVlXG4gKiBAc3VtbWFyeSBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgYm9vbGVhbiBvciBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4uXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgaGFuZGxpbmcgYXR0cmlidXRlIHZhbHVlcyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgYXMgZWl0aGVyIHN0cmluZ3Mgb3IgYm9vbGVhbnMuXG4gKiBAdHlwZWRlZiB7KCd0cnVlJ3wnZmFsc2UnfGJvb2xlYW4pfSBTdHJpbmdPckJvb2xlYW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFN0cmluZ09yQm9vbGVhbiA9ICd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuO1xuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBDUlVEIGZpZWxkIGlucHV0c1xuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHVuaW9uIHR5cGUgdGhhdCBjYW4gYmUgZWl0aGVyIGEgU2VsZWN0T3B0aW9uIG9yIFJhZGlvT3B0aW9uLlxuICogVGhpcyBpcyB1c2VkIGZvciBkZWZpbmluZyBvcHRpb25zIGluIGZvcm0gZmllbGRzIHRoYXQgc3VwcG9ydCBib3RoIHNlbGVjdCBhbmQgcmFkaW8gaW5wdXQgdHlwZXMuXG4gKiBAdHlwZWRlZiB7KFNlbGVjdE9wdGlvbnxSYWRpb09wdGlvbil9IENydWRGaWVsZE9wdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZpZWxkT3B0aW9uID0gU2VsZWN0T3B0aW9uIHwgUmFkaW9PcHRpb247XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wdGlvbiB0eXBlIGZvciBzZWxlY3QgaW5wdXRzXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBJbnB1dE9wdGlvbiBpbnRlcmZhY2Ugd2l0aCBhIHNlbGVjdGVkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgYnkgZGVmYXVsdC5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFNlbGVjdE9wdGlvbiA9IElucHV0T3B0aW9uICYgeyBzZWxlY3RlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIHJhZGlvIGlucHV0c1xuICogQHN1bW1hcnkgRXh0ZW5kcyB0aGUgSW5wdXRPcHRpb24gaW50ZXJmYWNlIHdpdGggYSBjaGVja2VkIHByb3BlcnR5IHRvIGluZGljYXRlXG4gKiB3aGV0aGVyIHRoZSBvcHRpb24gaXMgY2hlY2tlZCBieSBkZWZhdWx0LlxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgUmFkaW9PcHRpb24gPSBJbnB1dE9wdGlvbiAmIHsgY2hlY2tlZD86IGJvb2xlYW4gfTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gT3B0aW9uIHR5cGUgZm9yIGNoZWNrYm94IGlucHV0c1xuICogQHN1bW1hcnkgQWxpYXMgZm9yIFJhZGlvT3B0aW9uLCBhcyBjaGVja2JveCBvcHRpb25zIGhhdmUgdGhlIHNhbWUgc3RydWN0dXJlIGFzIHJhZGlvIG9wdGlvbnMuXG4gKiBAdHlwZWRlZiB7UmFkaW9PcHRpb259IENoZWNrYm94T3B0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmVuZ2luZVxuICovXG5leHBvcnQgdHlwZSBDaGVja2JveE9wdGlvbiA9IFJhZGlvT3B0aW9uO1xuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVGFyZ2V0IG9wdGlvbnMgZm9yIEhUTUwgZm9ybXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHBvc3NpYmxlIHRhcmdldCB2YWx1ZXMgZm9yIEhUTUwgZm9ybXMsIGluY2x1ZGluZyBzdGFuZGFyZCB0YXJnZXRzXG4gKiBsaWtlICdfYmxhbmsnLCAnX3NlbGYnLCAnX3BhcmVudCcsIGFuZCAnX3RvcCcsIGFzIHdlbGwgYXMgY3VzdG9tIHN0cmluZyB2YWx1ZXMuXG4gKiBAdHlwZWRlZiB7KCdfYmxhbmsnfCdfc2VsZid8J19wYXJlbnQnfCdfdG9wJ3xzdHJpbmcpfSBIVE1MRm9ybVRhcmdldFxuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTEZvcm1UYXJnZXQgPSAnX2JsYW5rJyB8ICdfc2VsZicgfCAnX3BhcmVudCcgfCAnX3RvcCcgfCBzdHJpbmc7XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUxpc3RJdGVtUHJvcCB7XG4vLyAgIHJlbmRlcj86IHN0cmluZyB8IGJvb2xlYW47XG4vLyAgIHRyYW5zbGF0ZVByb3BzPzogc3RyaW5nIHwgc3RyaW5nW107XG4vLyAgIGJ1dHRvbj86IFN0cmluZ09yQm9vbGVhbjtcbi8vICAgaWNvbj86IHN0cmluZztcbi8vICAgaWNvblNsb3Q/OiAnc3RhcnQnIHwgJ2VuZCc7XG4vLyAgIHRpdGxlPzogc3RyaW5nO1xuLy8gICBkZXNjcml0cGlvbj86IHN0cmluZztcbi8vICAgaW5mbz86IHN0cmluZztcbi8vICAgc3ViaW5mbz86IHN0cmluZztcbi8vIH1cblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZm9yIGZvcm0gc2VydmljZSBjb250cm9sc1xuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIG9mIGZvcm0gY29udHJvbHMgbWFuYWdlZCBieSB0aGUgZm9ybSBzZXJ2aWNlLlxuICogSXQncyBhIG5lc3RlZCByZWNvcmQgd2hlcmUgdGhlIG91dGVyIGtleSBpcyB0aGUgZm9ybSBncm91cCBuYW1lLCB0aGUgaW5uZXIga2V5XG4gKiBpcyB0aGUgY29udHJvbCBuYW1lLCBhbmQgdGhlIHZhbHVlIGNvbnRhaW5zIHRoZSBmb3JtIGdyb3VwIGFuZCBmaWVsZCBwcm9wZXJ0aWVzLlxuICogQHR5cGVkZWYge1JlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgY29udHJvbDogRm9ybUdyb3VwOyBwcm9wczogQW5ndWxhckZpZWxkRGVmaW5pdGlvbiB9Pj59IEZvcm1TZXJ2aWNlQ29udHJvbHNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1TZXJ2aWNlQ29udHJvbHMgPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAgUmVjb3JkPHN0cmluZywgRm9ybVNlcnZpY2VDb250cm9sPlxuPjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmVuZGVyZXIgY3VzdG9tIGV2ZW50IHR5cGVcbiAqIEBzdW1tYXJ5IENvbWJpbmVzIEJhc2VDdXN0b21FdmVudCB3aXRoIEtleVZhbHVlIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgZmxleGlibGVcbiAqIGN1c3RvbSBldmVudCB0eXBlIGZvciByZW5kZXJlciBjb21wb25lbnRzLiBUaGlzIGFsbG93cyBldmVudHMgdG8gY2FycnkgYm90aFxuICogc3RhbmRhcmQgZXZlbnQgcHJvcGVydGllcyBhbmQgYWRkaXRpb25hbCBjdXN0b20gZGF0YS5cbiAqIEB0eXBlZGVmIFJlbmRlcmVyQ3VzdG9tRXZlbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyQ3VzdG9tRXZlbnQgPSBCYXNlQ3VzdG9tRXZlbnQgJiBLZXlWYWx1ZTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDUlVEIGZvcm0gZXZlbnQgdHlwZVxuICogQHN1bW1hcnkgRXh0ZW5kcyBCYXNlQ3VzdG9tRXZlbnQgdG8gaW5jbHVkZSBvcHRpb25hbCBoYW5kbGVycyBmb3IgQ1JVRCBmb3JtIG9wZXJhdGlvbnMuXG4gKiBUaGlzIGV2ZW50IHR5cGUgaXMgdXNlZCBmb3IgZm9ybS1yZWxhdGVkIGFjdGlvbnMgbGlrZSBjcmVhdGUsIHJlYWQsIHVwZGF0ZSwgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLlxuICogQHR5cGVkZWYgQ3J1ZEZvcm1FdmVudFxuICogQHByb3BlcnR5IHtSZWNvcmQ8c3RyaW5nLCBhbnk+fSBbaGFuZGxlcnNdIC0gT3B0aW9uYWwgaGFuZGxlcnMgZm9yIGZvcm0gb3BlcmF0aW9uc1xuICogQG1lbWJlck9mIG1vZHVsZTplbmdpbmVcbiAqL1xuZXhwb3J0IHR5cGUgQ3J1ZEZvcm1FdmVudCA9IEJhc2VDdXN0b21FdmVudCAmIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgaGFuZGxlcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufTtcblxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBGb3JtIHBhcmVudCBncm91cCB0dXBsZVxuICogQHN1bW1hcnkgUmVwcmVzZW50cyBhIHR1cGxlIGNvbnRhaW5pbmcgYSBGb3JtR3JvdXAgYW5kIGl0cyBhc3NvY2lhdGVkIHN0cmluZyBpZGVudGlmaWVyLlxuICogVGhpcyBpcyB1c2VkIGZvciBtYW5hZ2luZyBoaWVyYXJjaGljYWwgZm9ybSBzdHJ1Y3R1cmVzIGFuZCBwYXJlbnQtY2hpbGQgcmVsYXRpb25zaGlwcy5cbiAqIEB0eXBlZGVmIHtbRm9ybUdyb3VwLCBzdHJpbmddfSBGb3JtUGFyZW50R3JvdXBcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZW5naW5lXG4gKi9cbmV4cG9ydCB0eXBlIEZvcm1QYXJlbnRHcm91cCA9IFtGb3JtR3JvdXAsICBzdHJpbmddO1xuXG4iXX0=
@@ -190,20 +190,16 @@ export function isNotUndefined(prop) {
190
190
  * @memberOf module:for-angular
191
191
  */
192
192
  export function getLocaleFromClassName(instance, suffix) {
193
- if (typeof instance !== 'string')
194
- instance =
195
- instance.name || instance?.constructor?.name;
193
+ if (typeof instance !== Primitives.STRING)
194
+ instance = instance.name || instance?.constructor?.name;
196
195
  let name = instance;
197
196
  if (suffix)
198
197
  name = `${instance}${suffix.charAt(0).toUpperCase() + suffix.slice(1)}`;
199
- name = name
200
- .replace(/_|-/g, '')
201
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => {
198
+ name = name.replace(/_|-/g, '').replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => {
202
199
  if (index > 1)
203
200
  word = '.' + word;
204
201
  return word.toLowerCase();
205
- })
206
- .split('.');
202
+ }).split('.');
207
203
  if (name.length < 3)
208
204
  return name.reverse().join('.');
209
205
  const preffix = name[name.length - 1];
@@ -211,27 +207,6 @@ export function getLocaleFromClassName(instance, suffix) {
211
207
  name = name.join('_');
212
208
  return `${preffix}.${name}`;
213
209
  }
214
- /**
215
- * @description Generates a localized string by combining locale and phrase
216
- * @summary This utility function creates a properly formatted locale string by combining
217
- * a locale identifier with a phrase. It handles edge cases such as empty phrases,
218
- * missing locales, and phrases that already include the locale prefix. This function
219
- * is useful for ensuring consistent formatting of localized strings throughout the application.
220
- *
221
- * @param {string} locale - The locale identifier (e.g., 'en', 'fr')
222
- * @param {string | undefined} phrase - The phrase to localize
223
- * @return {string} The formatted locale string, or empty string if phrase is undefined
224
- *
225
- * @function generateLocaleFromString
226
- * @memberOf module:for-angular
227
- */
228
- export function generateLocaleFromString(locale, phrase) {
229
- if (!phrase)
230
- return '';
231
- if (!locale || phrase.includes(`${locale}.`))
232
- return phrase;
233
- return `${locale}.${phrase}`;
234
- }
235
210
  /**
236
211
  * @description Retrieves the current locale language
237
212
  * @summary This utility function gets the current locale language based on the user's browser settings.
@@ -368,7 +343,7 @@ export function itemMapper(item, mapper, props) {
368
343
  }
369
344
  else {
370
345
  if (arrayValue.length === 1) {
371
- accum[key] = item?.[value] || value;
346
+ accum[key] = item?.[value] || (value !== key ? value : "");
372
347
  }
373
348
  else {
374
349
  let val;
@@ -402,14 +377,60 @@ export function dataMapper(data, mapper, props) {
402
377
  const item = itemMapper(curr, mapper, props);
403
378
  const hasValues = [...new Set(Object.values(item))].filter((value) => value).length >
404
379
  0;
405
- // caso o item filtrado não possua nenhum valor, passar o objeto original
406
380
  accum.push(hasValues ? item : curr);
407
381
  return accum;
408
382
  }, []);
409
383
  }
384
+ /**
385
+ * @description Removes focus from the currently active DOM element
386
+ * @summary This utility function blurs the currently focused element in the document,
387
+ * effectively removing focus traps that might prevent proper navigation or keyboard
388
+ * interaction. It safely accesses the document's activeElement and calls blur() if
389
+ * an element is currently focused. This is useful for accessibility and user experience
390
+ * improvements, particularly when closing modals or dialogs.
391
+ *
392
+ * @return {void}
393
+ *
394
+ * @function removeFocusTrap
395
+ * @memberOf module:for-angular
396
+ */
410
397
  export function removeFocusTrap() {
411
398
  const doc = getWindowDocument();
412
399
  if (doc?.activeElement)
413
400
  doc.activeElement?.blur();
414
401
  }
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxJQUFJLGtCQUF1QyxDQUFDO0FBRTVDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxJQUFJLENBQUMsa0JBQWtCO1FBQ3JCLGtCQUFrQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNuRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBa0IsV0FBVztJQUM3RCxJQUFJLENBQUMsT0FBTztRQUNWLE9BQU8sU0FBUyxFQUFFLENBQUM7SUFDckIsTUFBTSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDeEIsT0FBTyxDQUNMLFNBQVMsRUFBRTtRQUNYLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUNqRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVksRUFDWixNQUFlLEVBQ2YsS0FBYztJQUVkLE1BQU0sSUFBSSxHQUFHLE1BQU0s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QUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNO1lBQ3hFLENBQUMsQ0FBQztRQUNKLHlFQUF5RTtRQUN6RSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNULENBQUM7QUFHRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixNQUFNLEdBQUcsR0FBRyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2hDLElBQUcsR0FBRyxFQUFFLGFBQWE7UUFDbEIsR0FBRyxDQUFDLGFBQTZCLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wLCBJbmplY3RhYmxlc1JlZ2lzdHJ5IH0gZnJvbSAnQGRlY2FmLXRzL2luamVjdGFibGUtZGVjb3JhdG9ycyc7XG5pbXBvcnQgeyBQcmltaXRpdmVzIH0gZnJvbSAnQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uJztcbmltcG9ydCB7IEtleVZhbHVlLCBTdHJpbmdPckJvb2xlYW4sIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzJztcbmltcG9ydCB7IEZ1bmN0aW9uTGlrZSB9IGZyb20gJy4uL2VuZ2luZS90eXBlcyc7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuLi9mb3ItYW5ndWxhci5tb2R1bGUnO1xuXG5sZXQgaW5qZWN0YWJsZVJlZ2lzdHJ5OiBJbmplY3RhYmxlc1JlZ2lzdHJ5O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgaW5qZWN0YWJsZXMgcmVnaXN0cnlcbiAqIEBzdW1tYXJ5IFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgc2luZ2xldG9uIHBhdHRlcm4gZm9yIHRoZSBJbmplY3RhYmxlc1JlZ2lzdHJ5LlxuICogSXQgcmV0dXJucyB0aGUgZXhpc3RpbmcgcmVnaXN0cnkgaW5zdGFuY2UgaWYgb25lIGV4aXN0cywgb3IgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZVxuICogaWYgbm9uZSBleGlzdHMuIFRoZSByZWdpc3RyeSBpcyB1c2VkIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBpbmplY3RhYmxlIGRlcGVuZGVuY2llc1xuICogdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHJldHVybiB7SW5qZWN0YWJsZXNSZWdpc3RyeX0gVGhlIHNpbmdsZXRvbiBpbmplY3RhYmxlcyByZWdpc3RyeSBpbnN0YW5jZVxuICpcbiAqIEBmdW5jdGlvbiBnZXRJbmplY3RhYmxlc1JlZ2lzdHJ5XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbmplY3RhYmxlc1JlZ2lzdHJ5KCk6IEluamVjdGFibGVzUmVnaXN0cnkge1xuICBpZiAoIWluamVjdGFibGVSZWdpc3RyeSlcbiAgICBpbmplY3RhYmxlUmVnaXN0cnkgPSBuZXcgSW5qZWN0YWJsZVJlZ2lzdHJ5SW1wKCk7XG4gIHJldHVybiBpbmplY3RhYmxlUmVnaXN0cnk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcgaW4gZGV2ZWxvcG1lbnQgbW9kZVxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMgY3VycmVudGx5IHJ1bm5pbmcgaW4gYSBkZXZlbG9wbWVudFxuICogZW52aXJvbm1lbnQuIEl0IHVzZXMgQW5ndWxhcidzIGlzRGV2TW9kZSgpIGZ1bmN0aW9uIGFuZCBhbHNvIGNoZWNrcyB0aGUgd2luZG93IGNvbnRleHRcbiAqIGFuZCBob3N0bmFtZSBhZ2FpbnN0IHRoZSBwcm92aWRlZCBjb250ZXh0IHBhcmFtZXRlci4gVGhpcyBpcyB1c2VmdWwgZm9yIGVuYWJsaW5nXG4gKiBkZXZlbG9wbWVudC1zcGVjaWZpYyBmZWF0dXJlcyBvciBsb2dnaW5nLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbY29udGV4dD0nbG9jYWxob3N0J10gLSBUaGUgY29udGV4dCBzdHJpbmcgdG8gY2hlY2sgYWdhaW5zdCB0aGUgY3VycmVudCBlbnZpcm9ubWVudFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlLCBmYWxzZSBvdGhlcndpc2VcbiAqXG4gKiBAZnVuY3Rpb24gaXNEZXZlbG9wbWVudE1vZGVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRGV2ZWxvcG1lbnRNb2RlKGNvbnRleHQ6IHN0cmluZyA9ICdsb2NhbGhvc3QnKTogYm9vbGVhbiB7XG4gIGlmICghY29udGV4dClcbiAgICByZXR1cm4gaXNEZXZNb2RlKCk7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdygpO1xuICByZXR1cm4gKFxuICAgIGlzRGV2TW9kZSgpIHx8XG4gICAgd2luPy5bJ2VudiddPy5bJ0NPTlRFWFQnXS50b0xvd2VyQ2FzZSgpICE9PSBjb250ZXh0LnRvTG93ZXJDYXNlKCkgfHxcbiAgICB3aW4/LlsnbG9jYXRpb24nXT8uaG9zdG5hbWU/LmluY2x1ZGVzKGNvbnRleHQpXG4gICk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERpc3BhdGNoZXMgYSBjdXN0b20gZXZlbnQgdG8gdGhlIGRvY3VtZW50IHdpbmRvd1xuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBkaXNwYXRjaGVzIGEgY3VzdG9tIGV2ZW50IHRvIHRoZSBicm93c2VyIHdpbmRvdy5cbiAqIEl0J3MgdXNlZnVsIGZvciBjcm9zcy1jb21wb25lbnQgY29tbXVuaWNhdGlvbiBvciBmb3IgdHJpZ2dlcmluZyBhcHBsaWNhdGlvbi13aWRlIGV2ZW50cy5cbiAqIFRoZSBmdW5jdGlvbiBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgZXZlbnQgbmFtZSwgZGV0YWlsIGRhdGEsIGFuZCBhZGRpdGlvbmFsIGV2ZW50IHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgY3VzdG9tIGV2ZW50IHRvIGRpc3BhdGNoXG4gKiBAcGFyYW0ge3Vua25vd259IGRldGFpbCAtIFRoZSBkYXRhIHRvIGluY2x1ZGUgaW4gdGhlIGV2ZW50J3MgZGV0YWlsIHByb3BlcnR5XG4gKiBAcGFyYW0ge29iamVjdH0gW3Byb3BzXSAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgdGhlIGN1c3RvbSBldmVudFxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb24gd2luZG93RXZlbnRFbWl0dGVyXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aW5kb3dFdmVudEVtaXR0ZXIoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGV0YWlsOiB1bmtub3duLFxuICBwcm9wcz86IG9iamVjdFxuKTogdm9pZCB7XG4gIGNvbnN0IGRhdGEgPSBPYmplY3QuYXNzaWduKFxuICAgIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjb21wb3NlZDogdHJ1ZSxcbiAgICAgIGNhbmNlbGFibGU6IGZhbHNlLFxuICAgICAgZGV0YWlsOiBkZXRhaWwsXG4gICAgfSxcbiAgICBwcm9wcyB8fCB7fVxuICApO1xuICAoZ2V0V2luZG93KCkgYXMgV2luZG93KS5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChuYW1lLCBkYXRhKSk7XG59XG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBwcm9wZXJ0eSBmcm9tIHRoZSB3aW5kb3cncyBkb2N1bWVudCBvYmplY3RcbiAqIEBzdW1tYXJ5IFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBzYWZlIHdheSB0byBhY2Nlc3MgcHJvcGVydGllcyBvbiB0aGUgd2luZG93J3MgZG9jdW1lbnQgb2JqZWN0LlxuICogSXQgdXNlcyB0aGUgZ2V0V2luZG93RG9jdW1lbnQgZnVuY3Rpb24gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBkb2N1bWVudCwgdGhlbiBhY2Nlc3Nlc1xuICogdGhlIHNwZWNpZmllZCBwcm9wZXJ0eS4gVGhpcyBpcyB1c2VmdWwgZm9yIGJyb3dzZXIgZW52aXJvbm1lbnQgaW50ZXJhY3Rpb25zIHRoYXQgbmVlZFxuICogdG8gYWNjZXNzIGRvY3VtZW50IHByb3BlcnRpZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byByZXRyaWV2ZSBmcm9tIHRoZSBkb2N1bWVudCBvYmplY3RcbiAqIEByZXR1cm4ge2FueX0gVGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHksIG9yIHVuZGVmaW5lZCBpZiB0aGUgZG9jdW1lbnQgb3IgcHJvcGVydHkgZG9lc24ndCBleGlzdFxuICpcbiAqIEBmdW5jdGlvbiBnZXRPbldpbmRvd0RvY3VtZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPbldpbmRvd0RvY3VtZW50KGtleTogc3RyaW5nKTogRG9jdW1lbnQgfCB1bmRlZmluZWQge1xuICBjb25zdCBkb2MgPSBnZXRXaW5kb3dEb2N1bWVudCgpPy5ba2V5IGFzIGtleW9mIERvY3VtZW50XTtcbiAgcmV0dXJuIGRvYyBpbnN0YW5jZW9mIERvY3VtZW50ID9cbiAgICBkb2MgOiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgZG9jdW1lbnQgb2JqZWN0IGZyb20gdGhlIHdpbmRvd1xuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHNhZmUgd2F5IHRvIGFjY2VzcyB0aGUgZG9jdW1lbnQgb2JqZWN0IGZyb20gdGhlIHdpbmRvdy5cbiAqIEl0IHVzZXMgdGhlIGdldE9uV2luZG93IGZ1bmN0aW9uIHRvIHJldHJpZXZlIHRoZSAnZG9jdW1lbnQnIHByb3BlcnR5IGZyb20gdGhlIHdpbmRvdyBvYmplY3QuXG4gKiBUaGlzIGlzIHVzZWZ1bCBmb3IgYnJvd3NlciBlbnZpcm9ubWVudCBpbnRlcmFjdGlvbnMgdGhhdCBuZWVkIGFjY2VzcyB0byB0aGUgZG9jdW1lbnQuXG4gKlxuICogQHJldHVybiB7RG9jdW1lbnQgfCB1bmRlZmluZWR9IFRoZSB3aW5kb3cncyBkb2N1bWVudCBvYmplY3QsIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gKlxuICogQGZ1bmN0aW9uIGdldFdpbmRvd0RvY3VtZW50XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaW5kb3dEb2N1bWVudCgpOiBEb2N1bWVudCB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRPbldpbmRvdygnZG9jdW1lbnQnKSBhcyBEb2N1bWVudDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGEgcHJvcGVydHkgZnJvbSB0aGUgd2luZG93IG9iamVjdFxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHNhZmUgd2F5IHRvIGFjY2VzcyBwcm9wZXJ0aWVzIG9uIHRoZSB3aW5kb3cgb2JqZWN0LlxuICogSXQgdXNlcyB0aGUgZ2V0V2luZG93IGZ1bmN0aW9uIHRvIGdldCBhIHJlZmVyZW5jZSB0byB0aGUgd2luZG93LCB0aGVuIGFjY2Vzc2VzXG4gKiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgYnJvd3NlciBlbnZpcm9ubWVudCBpbnRlcmFjdGlvbnMgdGhhdCBuZWVkXG4gKiB0byBhY2Nlc3Mgd2luZG93IHByb3BlcnRpZXMgb3IgQVBJcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHJldHJpZXZlIGZyb20gdGhlIHdpbmRvdyBvYmplY3RcbiAqIEByZXR1cm4ge3Vua25vd24gfCB1bmRlZmluZWR9IFRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LCBvciB1bmRlZmluZWQgaWYgdGhlIHdpbmRvdyBvciBwcm9wZXJ0eSBkb2Vzbid0IGV4aXN0XG4gKlxuICogQGZ1bmN0aW9uIGdldE9uV2luZG93XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPbldpbmRvdyhrZXk6IHN0cmluZyk6IHVua25vd24gfCB1bmRlZmluZWQge1xuICByZXR1cm4gZ2V0V2luZG93KCk/LltrZXldO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTZXRzIGEgcHJvcGVydHkgb24gdGhlIHdpbmRvdyBvYmplY3RcbiAqIEBzdW1tYXJ5IFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSB3YXkgdG8gc2V0IHByb3BlcnRpZXMgb24gdGhlIHdpbmRvdyBvYmplY3QuXG4gKiBJdCB1c2VzIHRoZSBnZXRXaW5kb3cgZnVuY3Rpb24gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB3aW5kb3csIHRoZW4gc2V0c1xuICogdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSB0byB0aGUgcHJvdmlkZWQgdmFsdWUuIFRoaXMgaXMgdXNlZnVsIGZvciBzdG9yaW5nXG4gKiBnbG9iYWwgZGF0YSBvciBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGFjY2Vzc2libGUgYWNyb3NzIHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldCBvbiB0aGUgd2luZG93IG9iamVjdFxuICogQHBhcmFtIHthbnl9IHZhbHVlIC0gVGhlIHZhbHVlIHRvIGFzc2lnbiB0byB0aGUgcHJvcGVydHlcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKlxuICogQGZ1bmN0aW9uIHNldE9uV2luZG93XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRPbldpbmRvdyhrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgZ2V0V2luZG93KClba2V5XSA9IHZhbHVlO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIGdsb2JhbCB3aW5kb3cgb2JqZWN0XG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgc2FmZSB3YXkgdG8gYWNjZXNzIHRoZSBnbG9iYWwgd2luZG93IG9iamVjdC5cbiAqIEl0IHVzZXMgZ2xvYmFsVGhpcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSBhY3Jvc3MgZGlmZmVyZW50IEphdmFTY3JpcHQgZW52aXJvbm1lbnRzLlxuICogVGhpcyBpcyB0aGUgY29yZSBmdW5jdGlvbiB1c2VkIGJ5IG90aGVyIHdpbmRvdy1yZWxhdGVkIHV0aWxpdHkgZnVuY3Rpb25zIHRvXG4gKiBhY2Nlc3MgdGhlIHdpbmRvdyBvYmplY3QuXG4gKlxuICogQHJldHVybiB7V2luZG93fSBUaGUgZ2xvYmFsIHdpbmRvdyBvYmplY3RcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0V2luZG93XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXaW5kb3coKTogV2luZG93ICYgS2V5VmFsdWUge1xuICByZXR1cm4gKGdsb2JhbFRoaXMgYXMgS2V5VmFsdWUpPy5bJ3dpbmRvdyddIGFzIFdpbmRvdyAmIEtleVZhbHVlO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgdGhlIHdpZHRoIG9mIHRoZSBicm93c2VyIHdpbmRvd1xuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIGdldCB0aGUgY3VycmVudCB3aWR0aCBvZiB0aGUgYnJvd3NlciB3aW5kb3cuXG4gKiBJdCB1c2VzIHRoZSBnZXRPbldpbmRvdyBmdW5jdGlvbiB0byBhY2Nlc3MgdGhlICdpbm5lcldpZHRoJyBwcm9wZXJ0eSBvZiB0aGUgd2luZG93IG9iamVjdC5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciByZXNwb25zaXZlIGRlc2lnbiBpbXBsZW1lbnRhdGlvbnMgYW5kIHZpZXdwb3J0LWJhc2VkIGNhbGN1bGF0aW9ucy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXIgfCB1bmRlZmluZWR9IFRoZSBjdXJyZW50IHdpZHRoIG9mIHRoZSBicm93c2VyIHdpbmRvdyBpbiBwaXhlbHNcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0V2luZG93V2lkdGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvd1dpZHRoKCk6IG51bWJlciB7XG4gIHJldHVybiBnZXRPbldpbmRvdygnaW5uZXJXaWR0aCcpIGFzIG51bWJlciB8fCAwO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDaGVja3MgaWYgYSB2YWx1ZSBpcyAgbm90IHVuZGVmaW5lZFxuICogQHN1bW1hcnkgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQuXG4gKiBJdCdzIGEgc2ltcGxlIHdyYXBwZXIgdGhhdCBtYWtlcyBjb2RlIG1vcmUgcmVhZGFibGUgd2hlbiBjaGVja2luZyBmb3IgZGVmaW5lZCB2YWx1ZXMuXG4gKiBUaGUgZnVuY3Rpb24gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY2hlY2tpbmcgU3RyaW5nT3JCb29sZWFuIHByb3BlcnRpZXMgdGhhdCBtaWdodCBiZSB1bmRlZmluZWQuXG4gKlxuICogQHBhcmFtIHtTdHJpbmdPckJvb2xlYW4gfCB1bmRlZmluZWR9IHByb3AgLSBUaGUgcHJvcGVydHkgdG8gY2hlY2tcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCB1bmRlZmluZWQsIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBmdW5jdGlvbiBpc05vdFVuZGVmaW5lZFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3RVbmRlZmluZWQocHJvcDogU3RyaW5nT3JCb29sZWFuIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG4gIHJldHVybiAocHJvcCAhPT0gdW5kZWZpbmVkKSBhcyBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmF0ZXMgYSBsb2NhbGUgc3RyaW5nIGZyb20gYSBjbGFzcyBuYW1lIG9yIGluc3RhbmNlXG4gKiBAc3VtbWFyeSBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY29udmVydHMgYSBjbGFzcyBuYW1lIG9yIGluc3RhbmNlIGludG8gYSBsb2NhbGUgc3RyaW5nXG4gKiB0aGF0IGNhbiBiZSB1c2VkIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbiBwdXJwb3Nlcy4gSXQgaGFuZGxlcyBkaWZmZXJlbnQgaW5wdXQgdHlwZXNcbiAqIChzdHJpbmcsIGZ1bmN0aW9uLCBvciBvYmplY3QpIGFuZCBhcHBsaWVzIGZvcm1hdHRpbmcgcnVsZXMgdG8gZ2VuZXJhdGUgYSBjb25zaXN0ZW50XG4gKiBsb2NhbGUgaWRlbnRpZmllci4gRm9yIHNob3J0IG5hbWVzIChsZXNzIHRoYW4gMyBwYXJ0cyksIGl0IHJldmVyc2VzIHRoZSBkb3Qtc2VwYXJhdGVkXG4gKiBzdHJpbmcuIEZvciBsb25nZXIgbmFtZXMsIGl0IHVzZXMgdGhlIGxhc3QgcGFydCBhcyBhIHByZWZpeCBhbmQgam9pbnMgdGhlIHJlc3Qgd2l0aFxuICogdW5kZXJzY29yZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8RnVuY3Rpb25MaWtlfG9iamVjdH0gaW5zdGFuY2UgLSBUaGUgaW5wdXQgdG8gZ2VuZXJhdGUgdGhlIGxvY2FsZSBmcm9tIChjbGFzcyBuYW1lLCBjb25zdHJ1Y3Rvciwgb3IgaW5zdGFuY2UpXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N1ZmZpeF0gLSBPcHRpb25hbCBzdHJpbmcgdG8gYXBwZW5kIHRvIHRoZSBpbnN0YW5jZSBuYW1lIGJlZm9yZSBwcm9jZXNzaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEEgZm9ybWF0dGVkIGxvY2FsZSBzdHJpbmcgZGVyaXZlZCBmcm9tIHRoZSBpbnB1dFxuICpcbiAqIEBmdW5jdGlvbiBnZXRMb2NhbGVGcm9tQ2xhc3NOYW1lXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVGcm9tQ2xhc3NOYW1lKFxuICBpbnN0YW5jZTogc3RyaW5nIHwgRnVuY3Rpb25MaWtlIHwgb2JqZWN0LFxuICBzdWZmaXg/OiBzdHJpbmdcbik6IHN0cmluZyB7XG4gIGlmICh0eXBlb2YgaW5zdGFuY2UgIT09ICdzdHJpbmcnKVxuICAgIGluc3RhbmNlID1cbiAgICAgIChpbnN0YW5jZSBhcyBGdW5jdGlvbkxpa2UpLm5hbWUgfHwgKGluc3RhbmNlIGFzIG9iamVjdCk/LmNvbnN0cnVjdG9yPy5uYW1lO1xuXG4gIGxldCBuYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSA9IGluc3RhbmNlO1xuXG4gIGlmIChzdWZmaXgpIG5hbWUgPSBgJHtpbnN0YW5jZX0ke3N1ZmZpeC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN1ZmZpeC5zbGljZSgxKX1gO1xuXG4gIG5hbWUgPSBuYW1lXG4gICAgLnJlcGxhY2UoL198LS9nLCAnJylcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChpbmRleCA+IDEpIHdvcmQgPSAnLicgKyB3b3JkO1xuICAgICAgcmV0dXJuIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KVxuICAgIC5zcGxpdCgnLicpO1xuXG4gIGlmIChuYW1lLmxlbmd0aCA8IDMpXG4gICAgcmV0dXJuIG5hbWUucmV2ZXJzZSgpLmpvaW4oJy4nKTtcblxuICBjb25zdCBwcmVmZml4ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuICBuYW1lLnBvcCgpO1xuICBuYW1lID0gbmFtZS5qb2luKCdfJyk7XG4gIHJldHVybiBgJHtwcmVmZml4fS4ke25hbWV9YDtcblxuXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGxvY2FsaXplZCBzdHJpbmcgYnkgY29tYmluaW5nIGxvY2FsZSBhbmQgcGhyYXNlXG4gKiBAc3VtbWFyeSBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gY3JlYXRlcyBhIHByb3Blcmx5IGZvcm1hdHRlZCBsb2NhbGUgc3RyaW5nIGJ5IGNvbWJpbmluZ1xuICogYSBsb2NhbGUgaWRlbnRpZmllciB3aXRoIGEgcGhyYXNlLiBJdCBoYW5kbGVzIGVkZ2UgY2FzZXMgc3VjaCBhcyBlbXB0eSBwaHJhc2VzLFxuICogbWlzc2luZyBsb2NhbGVzLCBhbmQgcGhyYXNlcyB0aGF0IGFscmVhZHkgaW5jbHVkZSB0aGUgbG9jYWxlIHByZWZpeC4gVGhpcyBmdW5jdGlvblxuICogaXMgdXNlZnVsIGZvciBlbnN1cmluZyBjb25zaXN0ZW50IGZvcm1hdHRpbmcgb2YgbG9jYWxpemVkIHN0cmluZ3MgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGxvY2FsZSAtIFRoZSBsb2NhbGUgaWRlbnRpZmllciAoZS5nLiwgJ2VuJywgJ2ZyJylcbiAqIEBwYXJhbSB7c3RyaW5nIHwgdW5kZWZpbmVkfSBwaHJhc2UgLSBUaGUgcGhyYXNlIHRvIGxvY2FsaXplXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmb3JtYXR0ZWQgbG9jYWxlIHN0cmluZywgb3IgZW1wdHkgc3RyaW5nIGlmIHBocmFzZSBpcyB1bmRlZmluZWRcbiAqXG4gKiBAZnVuY3Rpb24gZ2VuZXJhdGVMb2NhbGVGcm9tU3RyaW5nXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUxvY2FsZUZyb21TdHJpbmcoXG4gIGxvY2FsZTogc3RyaW5nLFxuICBwaHJhc2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuKTogc3RyaW5nIHtcbiAgaWYgKCFwaHJhc2UpIHJldHVybiAnJztcbiAgaWYgKCFsb2NhbGUgfHwgcGhyYXNlLmluY2x1ZGVzKGAke2xvY2FsZX0uYCkpIHJldHVybiBwaHJhc2U7XG4gIHJldHVybiBgJHtsb2NhbGV9LiR7cGhyYXNlfWA7XG59XG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBjdXJyZW50IGxvY2FsZSBsYW5ndWFnZVxuICogQHN1bW1hcnkgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGdldHMgdGhlIGN1cnJlbnQgbG9jYWxlIGxhbmd1YWdlIGJhc2VkIG9uIHRoZSB1c2VyJ3MgYnJvd3NlciBzZXR0aW5ncy5cbiAqIEl0IHByb3ZpZGVzIGEgY29uc2lzdGVudCB3YXkgdG8gYWNjZXNzIHRoZSB1c2VyJ3MgbGFuZ3VhZ2UgcHJlZmVyZW5jZSB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqIFRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBicm93c2VyJ3MgbmF2aWdhdG9yLmxhbmd1YWdlIHZhbHVlLCBkZWZhdWx0aW5nIHRvICdlbicgaWYgbm90IGF2YWlsYWJsZS5cbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjdXJyZW50IGxvY2FsZSBsYW5ndWFnZSAoZS5nLiwgJ2VuJywgJ2ZyJylcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0TG9jYWxlTGFuZ3VhZ2VcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZUxhbmd1YWdlKCk6IHN0cmluZyB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdygpO1xuICByZXR1cm4gKHdpbiBhcyBXaW5kb3cpLm5hdmlnYXRvci5sYW5ndWFnZSB8fCBcImVuXCI7XG4gIC8vIHJldHVybiB3aW4/LltXSU5ET1dfS0VZUy5MQU5HVUFHRV9TRUxFQ1RFRF0gfHwgKHdpbi5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgJycpLnNwbGl0KCctJylbMF0gfHwgXCJlblwiO1xufVxuXG5cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gR2VuZXJhdGVzIGEgcmFuZG9tIHN0cmluZyBvciBudW1iZXIgb2Ygc3BlY2lmaWVkIGxlbmd0aFxuICogQHN1bW1hcnkgVGhpcyB1dGlsaXR5IGZ1bmN0aW9uIGNyZWF0ZXMgYSByYW5kb20gc3RyaW5nIG9mIGEgc3BlY2lmaWVkIGxlbmd0aC5cbiAqIEl0IGNhbiBnZW5lcmF0ZSBlaXRoZXIgYWxwaGFudW1lcmljIHN0cmluZ3MgKGluY2x1ZGluZyB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZSBsZXR0ZXJzKVxuICogb3IgbnVtZXJpYy1vbmx5IHN0cmluZ3MuIFRoaXMgaXMgdXNlZnVsIGZvciBjcmVhdGluZyByYW5kb20gSURzLCB0ZW1wb3JhcnkgcGFzc3dvcmRzLFxuICogb3Igb3RoZXIgcmFuZG9tIGlkZW50aWZpZXJzIHRocm91Z2hvdXQgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPThdIC0gVGhlIGxlbmd0aCBvZiB0aGUgcmFuZG9tIHZhbHVlIHRvIGdlbmVyYXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvbmx5TnVtYmVycz1mYWxzZV0gLSBXaGV0aGVyIHRvIGdlbmVyYXRlIG9ubHkgbnVtZXJpYyBjaGFyYWN0ZXJzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEEgcmFuZG9tbHkgZ2VuZXJhdGVkIHN0cmluZyBvZiB0aGUgc3BlY2lmaWVkIGxlbmd0aCBhbmQgY2hhcmFjdGVyIHNldFxuICpcbiAqIEBmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbVZhbHVlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbVZhbHVlKGxlbmd0aDogbnVtYmVyID0gOCwgb25seU51bWJlcnM6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gIGNvbnN0IGNoYXJzID0gb25seU51bWJlcnNcbiAgICA/ICcwMTIzNDU2Nzg5J1xuICAgIDogJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5JztcbiAgbGV0IHJlc3VsdCA9ICcnO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKVxuICAgIHJlc3VsdCArPSBjaGFycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcnMubGVuZ3RoKSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgYm9vbGVhbiBvciBhIGJvb2xlYW4gdmFsdWUgdG8gYSBib29sZWFuIHR5cGUuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHsoJ3RydWUnIHwgJ2ZhbHNlJyB8IGJvb2xlYW4pfSBwcm9wIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnQuIENhbiBiZSB0aGUgc3RyaW5nICd0cnVlJywgJ2ZhbHNlJywgb3IgYSBib29sZWFuLlxuICogQHJldHVybnMge2Jvb2xlYW59IFRoZSBib29sZWFuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBpbnB1dCB2YWx1ZS4gUmV0dXJucyB0cnVlIGlmIHRoZSBpbnB1dCBpcyB0aGUgc3RyaW5nICd0cnVlJyBvciBib29sZWFuIHRydWUsIGZhbHNlIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ1RvQm9vbGVhbihwcm9wOiAndHJ1ZScgfCAnZmFsc2UnIHwgYm9vbGVhbik6IGJvb2xlYW4ge1xuICBpZih0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpXG4gICAgcHJvcCA9IHByb3AudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnID8gdHJ1ZSA6IGZhbHNlO1xuICByZXR1cm4gcHJvcDtcbn1cblxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgRGF0ZSBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyhzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKX0gZGF0ZSAtIFRoZSB2YWx1ZSB0byBjaGVjay4gQ2FuIGJlIGEgRGF0ZSBvYmplY3QsIGEgdGltZXN0YW1wIG51bWJlciwgb3IgYSBkYXRlIHN0cmluZ1xuICogQHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIERhdGUgb2JqZWN0IChub3QgTmFOKSwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkRGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChkYXRlIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNOYU4oZGF0ZSBhcyB1bmtub3duIGFzIG51bWJlcikpIHx8ICgoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0UmVnZXggPSBuZXcgUmVnRXhwKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLykudGVzdChkYXRlIGFzIHN0cmluZylcbiAgICAgIGlmKHR5cGVvZiBkYXRlICE9PSBQcmltaXRpdmVzLlNUUklORyB8fCAhKGRhdGUgYXMgc3RyaW5nKT8uaW5jbHVkZXMoJ1QnKSAmJiAhdGVzdFJlZ2V4KVxuICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgIGRhdGUgPSAoZGF0ZSBhcyBzdHJpbmcpLnNwbGl0KCdUJylbMF07XG4gICAgaWYoIW5ldyBSZWdFeHAoL15cXGR7NH0tXFxkezJ9LVxcZHsyfSQvKS50ZXN0KGRhdGUpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuICEhKG5ldyBEYXRlKGRhdGUpKTtcbiAgIH0pKCk7XG4gIH0gY2F0Y2goZXJyb3I6IHVua25vd24pIHtcbiAgICBnZXRMb2dnZXIoaXNWYWxpZERhdGUpLmVycm9yKGVycm9yIGFzIEVycm9yIHwgc3RyaW5nKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgZGF0ZSBpbnRvIGEgbG9jYWxpemVkIHN0cmluZyByZXByZXNlbnRhdGlvblxuICpcbiAqIEBwYXJhbSB7KHN0cmluZyB8IERhdGUgfCBudW1iZXIpfSBkYXRlIC0gVGhlIGRhdGUgdG8gZm9ybWF0LiBDYW4gYmUgYSBEYXRlIG9iamVjdCwgYSB0aW1lc3RhbXAgbnVtYmVyLCBvciBhIGRhdGUgc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xvY2FsZV0gLSBUaGUgbG9jYWxlIHRvIHVzZSBmb3IgZm9ybWF0dGluZy4gSWYgbm90IHByb3ZpZGVkLCB0aGUgc3lzdGVtJ3MgbG9jYWxlIHdpbGwgYmUgdXNlZFxuICogQHJldHVybiB7KERhdGUgfCBzdHJpbmcpfSBBIGZvcm1hdHRlZCBkYXRlIHN0cmluZyBpbiB0aGUgZm9ybWF0IEREL01NL1lZWVkgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgbG9jYWxlLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgb3JpZ2luYWwgaW5wdXQgYXMgYSBzdHJpbmcgaWYgdGhlIGRhdGUgaXMgaW52YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyLCBsb2NhbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBEYXRlIHwgc3RyaW5nIHtcblxuICBpZighbG9jYWxlKVxuICAgIGxvY2FsZSA9IGdldExvY2FsZUxhbmd1YWdlKCk7XG5cbiAgaWYodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBkYXRlID09PSAnbnVtYmVyJylcbiAgICBkYXRlID0gbmV3IERhdGUodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnID8gZGF0ZS5yZXBsYWNlKC9cXC8vZywgJy0nKSA6IGRhdGUpO1xuXG4gIGlmKCFpc1ZhbGlkRGF0ZShkYXRlKSlcbiAgICByZXR1cm4gYCR7ZGF0ZX1gIGFzIHN0cmluZztcbiAgY29uc3QgciA9IGRhdGUudG9Mb2NhbGVTdHJpbmcobG9jYWxlLCB7XG4gICAgICB5ZWFyOiBcIm51bWVyaWNcIixcbiAgICAgIGRheTogXCIyLWRpZ2l0XCIsXG4gICAgICBtb250aDogJzItZGlnaXQnXG4gIH0pO1xuXG5cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8gcGFyc2UgYSBkYXRlIHN0cmluZywgRGF0ZSBvYmplY3QsIG9yIG51bWJlciBpbnRvIGEgdmFsaWQgRGF0ZSBvYmplY3RcbiAqXG4gKiBAcGFyYW0geyhzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKX0gZGF0ZSAtIFRoZSBkYXRlIHRvIHBhcnNlLiBDYW4gYmUgYSBEYXRlIG9iamVjdCwgYSB0aW1lc3RhbXAgbnVtYmVyLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGEgZGF0ZSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBcIkREL01NL1lZWVkgSEg6TU06U1M6TVNcIlxuICogQHJldHVybiB7KERhdGUgfCBudWxsKX0gQSB2YWxpZCBEYXRlIG9iamVjdCBpZiBwYXJzaW5nIGlzIHN1Y2Nlc3NmdWwsIG9yIG51bGwgaWYgdGhlIGRhdGUgaXMgaW52YWxpZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgb3IgZG9lc24ndCBtYXRjaCB0aGUgZXhwZWN0ZWQgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRvVmFsaWREYXRlKGRhdGU6IHN0cmluZyB8IERhdGUgfCBudW1iZXIpOiBEYXRlIHwgbnVsbCB7XG4gIGlmKGlzVmFsaWREYXRlKGRhdGUpKVxuICAgIHJldHVybiBkYXRlIGFzIERhdGU7XG5cbiAgaWYoIWAke2RhdGV9YC5pbmNsdWRlcygnLycpKVxuICAgIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IFtkYXRlU3RyaW5nLCB0aW1lU3RyaW5nXSA9IChkYXRlIGFzIHN0cmluZykuc3BsaXQoJyAnKTtcbiAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0cmluZy5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICBjb25zdCBbaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kc10gPSB0aW1lU3RyaW5nLnNwbGl0KCc6JykubWFwKE51bWJlcik7XG4gIGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCAtIDEsIGRheSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcyk7XG5cbiAgaWYoIWlzVmFsaWREYXRlKGRhdGUpKSB7XG4gICAgY29uc29sZS53YXJuKCdwYXJzZVRvVmFsaWREYXRlIC0gSW52YWxpZCBkYXRlIGZvcm1hdCcsIGRhdGUpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRhdGU7XG59XG5cblxuLyoqXG4gKiBNYXBzIGFuIGl0ZW0gb2JqZWN0IHVzaW5nIGEgcHJvdmlkZWQgbWFwcGVyIG9iamVjdCBhbmQgb3B0aW9uYWwgYWRkaXRpb25hbCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7S2V5VmFsdWV9IGl0ZW0gLSBUaGUgc291cmNlIG9iamVjdCB0byBiZSBtYXBwZWQuXG4gKiBAcGFyYW0ge0tleVZhbHVlfSBtYXBwZXIgLSBBbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBtYXBwaW5nIHJ1bGVzLiBLZXlzIHJlcHJlc2VudCB0aGUgbmV3IHByb3BlcnR5IG5hbWVzLFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHZhbHVlcyByZXByZXNlbnQgdGhlIHBhdGggdG8gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGluIHRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtLZXlWYWx1ZX0gW3Byb3BzXSAtIE9wdGlvbmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbWFwcGVkIG9iamVjdC5cbiAqIEByZXR1cm5zIHtLZXlWYWx1ZX0gQSBuZXcgb2JqZWN0IHdpdGggcHJvcGVydGllcyBtYXBwZWQgYWNjb3JkaW5nIHRvIHRoZSBtYXBwZXIgb2JqZWN0IGFuZCBpbmNsdWRpbmcgYW55IGFkZGl0aW9uYWwgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGl0ZW1NYXBwZXIoaXRlbTogS2V5VmFsdWUsIG1hcHBlcjogS2V5VmFsdWUsIHByb3BzPzogS2V5VmFsdWUpOiBLZXlWYWx1ZSB7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhtYXBwZXIpLnJlZHVjZSgoYWNjdW06IEtleVZhbHVlLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBjb25zdCBhcnJheVZhbHVlID0gKHZhbHVlIGFzIHN0cmluZykuc3BsaXQoJy4nKTtcbiAgICBpZiAoIXZhbHVlKSB7XG4gICAgICBhY2N1bVtrZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChhcnJheVZhbHVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBhY2N1bVtrZXldID0gaXRlbT8uW3ZhbHVlIGFzIHN0cmluZ10gfHwgdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgdmFsO1xuXG4gICAgICAgIGZvciAoY29uc3QgX3ZhbHVlIG9mIGFycmF5VmFsdWUpXG4gICAgICAgICAgdmFsID0gIXZhbFxuICAgICAgICAgICAgPyBpdGVtW192YWx1ZV1cbiAgICAgICAgICAgIDogKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZSh2YWwpIDogdmFsKVtfdmFsdWVdO1xuXG4gICAgICAgIGlmIChpc1ZhbGlkRGF0ZShuZXcgRGF0ZSh2YWwpKSkgdmFsID0gYCR7Zm9ybWF0RGF0ZSh2YWwpfWA7XG5cbiAgICAgICAgYWNjdW1ba2V5XSA9IHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCA/IHZhbHVlIDogdmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMgfHwge30sIGFjY3VtKTtcbiAgfSwge30pO1xufVxuXG4vKipcbiAqIE1hcHMgYW4gYXJyYXkgb2YgZGF0YSBvYmplY3RzIHVzaW5nIGEgcHJvdmlkZWQgbWFwcGVyIG9iamVjdC5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSByZXN1bHRpbmcgbWFwcGVkIGl0ZW1zLlxuICogQHBhcmFtIHthbnlbXX0gZGF0YSAtIFRoZSBhcnJheSBvZiBkYXRhIG9iamVjdHMgdG8gYmUgbWFwcGVkLlxuICogQHBhcmFtIHtLZXlWYWx1ZX0gbWFwcGVyIC0gQW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgbWFwcGluZyBydWxlcy5cbiAqIEBwYXJhbSB7S2V5VmFsdWV9IFtwcm9wc10gLSBBZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1hcHBlZCBpdGVtcy5cbiAqXG4gKiBAcmV0dXJucyB7VFtdfSAtIFRoZSBhcnJheSBvZiBtYXBwZWQgaXRlbXMuIElmIGFuIGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGFycmF5IGRvZXMgbm90IGhhdmUgYW55IG5vbi1udWxsIHZhbHVlcyBhZnRlciBtYXBwaW5nLFxuICogdGhlIG9yaWdpbmFsIGl0ZW0gaXMgcmV0dXJuZWQgaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFNYXBwZXI8VD4oZGF0YTogVFtdLCBtYXBwZXI6IEtleVZhbHVlLCBwcm9wcz86IEtleVZhbHVlKTogVFtdIHtcbiAgaWYgKCFkYXRhIHx8ICFkYXRhLmxlbmd0aCkgcmV0dXJuIFtdO1xuICByZXR1cm4gZGF0YS5yZWR1Y2UoKGFjY3VtOiBUW10sIGN1cnIpID0+IHtcbiAgICBjb25zdCBpdGVtID0gaXRlbU1hcHBlcihjdXJyIGFzIEtleVZhbHVlLCBtYXBwZXIsIHByb3BzKSBhcyBUO1xuICAgIGNvbnN0IGhhc1ZhbHVlcyA9XG4gICAgICBbLi4ubmV3IFNldChPYmplY3QudmFsdWVzKGl0ZW0gYXMgVFtdKSldLmZpbHRlcigodmFsdWUpID0+IHZhbHVlKS5sZW5ndGggPlxuICAgICAgMDtcbiAgICAvLyBjYXNvIG8gaXRlbSBmaWx0cmFkbyBuw6NvIHBvc3N1YSBuZW5odW0gdmFsb3IsIHBhc3NhciBvIG9iamV0byBvcmlnaW5hbFxuICAgIGFjY3VtLnB1c2goaGFzVmFsdWVzID8gaXRlbSA6IGN1cnIpO1xuICAgIHJldHVybiBhY2N1bTtcbiAgfSwgW10pO1xufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVGb2N1c1RyYXAoKTogdm9pZCB7XG4gIGNvbnN0IGRvYyA9IGdldFdpbmRvd0RvY3VtZW50KCk7XG4gIGlmKGRvYz8uYWN0aXZlRWxlbWVudClcbiAgICAoZG9jLmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5ibHVyKCk7XG59XG4iXX0=
402
+ /**
403
+ * @description Cleans and normalizes whitespace in a string value
404
+ * @summary This utility function trims leading and trailing whitespace from a string
405
+ * and replaces multiple consecutive whitespace characters with a single space.
406
+ * Optionally converts the result to lowercase for consistent text processing.
407
+ * This is useful for normalizing user input, search terms, or data sanitization.
408
+ *
409
+ * @param {string} value - The string value to clean and normalize
410
+ * @param {boolean} [lowercase=false] - Whether to convert the result to lowercase
411
+ * @return {string} The cleaned and normalized string
412
+ *
413
+ * @function cleanSpaces
414
+ * @memberOf module:for-angular
415
+ */
416
+ export function cleanSpaces(value = "", lowercase = false) {
417
+ value = `${value}`.trim().replace(/\s+/g, ' ');
418
+ return lowercase ? value.toLowerCase() : value;
419
+ }
420
+ /**
421
+ * @description Determines if the user's system is currently in dark mode
422
+ * @summary This function checks the user's color scheme preference using the CSS media query
423
+ * '(prefers-color-scheme: dark)'. It returns a boolean indicating whether the system is
424
+ * currently set to dark mode. This is useful for implementing theme-aware functionality
425
+ * and adjusting UI elements based on the user's preferred color scheme.
426
+ *
427
+ * @return {Promise<boolean>} True if the system is in dark mode, false otherwise
428
+ *
429
+ * @function isDarkMode
430
+ * @memberOf module:for-angular
431
+ */
432
+ export async function isDarkMode() {
433
+ const { matches } = getWindow().matchMedia('(prefers-color-scheme: dark)');
434
+ return matches;
435
+ }
436
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2hlbHBlcnMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUscUJBQXFCLEVBQXVCLE1BQU0saUNBQWlDLENBQUM7QUFDN0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVsRCxJQUFJLGtCQUF1QyxDQUFDO0FBRTVDOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQjtJQUNwQyxJQUFJLENBQUMsa0JBQWtCO1FBQ3JCLGtCQUFrQixHQUFHLElBQUkscUJBQXFCLEVBQUUsQ0FBQztJQUNuRCxPQUFPLGtCQUFrQixDQUFDO0FBQzVCLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsVUFBa0IsV0FBVztJQUM3RCxJQUFJLENBQUMsT0FBTztRQUNWLE9BQU8sU0FBUyxFQUFFLENBQUM7SUFDckIsTUFBTSxHQUFHLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDeEIsT0FBTyxDQUNMLFNBQVMsRUFBRTtRQUNYLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFDLFdBQVcsRUFBRTtRQUNqRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUMvQyxDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLElBQVksRUFDWixNQUFlLEVBQ2YsS0FBYztJQUVkLE1BQU0sSUFBSSxHQUFHLE1BQU0s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LE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1QsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE1BQU0sR0FBRyxHQUFHLGlCQUFpQixFQUFFLENBQUM7SUFDaEMsSUFBRyxHQUFHLEVBQUUsYUFBYTtRQUNsQixHQUFHLENBQUMsYUFBNkIsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxFQUFFLFlBQXFCLEtBQUs7SUFDeEUsS0FBSyxHQUFHLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMvQyxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDakQsQ0FBQztBQUdEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVO0lBQzlCLE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUN6RSxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbmplY3RhYmxlUmVnaXN0cnlJbXAsIEluamVjdGFibGVzUmVnaXN0cnkgfSBmcm9tICdAZGVjYWYtdHMvaW5qZWN0YWJsZS1kZWNvcmF0b3JzJztcbmltcG9ydCB7IFByaW1pdGl2ZXMgfSBmcm9tICdAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb24nO1xuaW1wb3J0IHsgS2V5VmFsdWUsIFN0cmluZ09yQm9vbGVhbiwgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMnO1xuaW1wb3J0IHsgRnVuY3Rpb25MaWtlIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzJztcbmltcG9ydCB7IGdldExvZ2dlciB9IGZyb20gJy4uL2Zvci1hbmd1bGFyLm1vZHVsZSc7XG5cbmxldCBpbmplY3RhYmxlUmVnaXN0cnk6IEluamVjdGFibGVzUmVnaXN0cnk7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBpbmplY3RhYmxlcyByZWdpc3RyeVxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzaW5nbGV0b24gcGF0dGVybiBmb3IgdGhlIEluamVjdGFibGVzUmVnaXN0cnkuXG4gKiBJdCByZXR1cm5zIHRoZSBleGlzdGluZyByZWdpc3RyeSBpbnN0YW5jZSBpZiBvbmUgZXhpc3RzLCBvciBjcmVhdGVzIGEgbmV3IGluc3RhbmNlXG4gKiBpZiBub25lIGV4aXN0cy4gVGhlIHJlZ2lzdHJ5IGlzIHVzZWQgdG8gc3RvcmUgYW5kIHJldHJpZXZlIGluamVjdGFibGUgZGVwZW5kZW5jaWVzXG4gKiB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcmV0dXJuIHtJbmplY3RhYmxlc1JlZ2lzdHJ5fSBUaGUgc2luZ2xldG9uIGluamVjdGFibGVzIHJlZ2lzdHJ5IGluc3RhbmNlXG4gKlxuICogQGZ1bmN0aW9uIGdldEluamVjdGFibGVzUmVnaXN0cnlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluamVjdGFibGVzUmVnaXN0cnkoKTogSW5qZWN0YWJsZXNSZWdpc3RyeSB7XG4gIGlmICghaW5qZWN0YWJsZVJlZ2lzdHJ5KVxuICAgIGluamVjdGFibGVSZWdpc3RyeSA9IG5ldyBJbmplY3RhYmxlUmVnaXN0cnlJbXAoKTtcbiAgcmV0dXJuIGluamVjdGFibGVSZWdpc3RyeTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGV0ZXJtaW5lcyBpZiB0aGUgYXBwbGljYXRpb24gaXMgcnVubmluZyBpbiBkZXZlbG9wbWVudCBtb2RlXG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgcnVubmluZyBpbiBhIGRldmVsb3BtZW50XG4gKiBlbnZpcm9ubWVudC4gSXQgdXNlcyBBbmd1bGFyJ3MgaXNEZXZNb2RlKCkgZnVuY3Rpb24gYW5kIGFsc28gY2hlY2tzIHRoZSB3aW5kb3cgY29udGV4dFxuICogYW5kIGhvc3RuYW1lIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRleHQgcGFyYW1ldGVyLiBUaGlzIGlzIHVzZWZ1bCBmb3IgZW5hYmxpbmdcbiAqIGRldmVsb3BtZW50LXNwZWNpZmljIGZlYXR1cmVzIG9yIGxvZ2dpbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IFtjb250ZXh0PSdsb2NhbGhvc3QnXSAtIFRoZSBjb250ZXh0IHN0cmluZyB0byBjaGVjayBhZ2FpbnN0IHRoZSBjdXJyZW50IGVudmlyb25tZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBydW5uaW5nIGluIGRldmVsb3BtZW50IG1vZGUsIGZhbHNlIG90aGVyd2lzZVxuICpcbiAqIEBmdW5jdGlvbiBpc0RldmVsb3BtZW50TW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEZXZlbG9wbWVudE1vZGUoY29udGV4dDogc3RyaW5nID0gJ2xvY2FsaG9zdCcpOiBib29sZWFuIHtcbiAgaWYgKCFjb250ZXh0KVxuICAgIHJldHVybiBpc0Rldk1vZGUoKTtcbiAgY29uc3Qgd2luID0gZ2V0V2luZG93KCk7XG4gIHJldHVybiAoXG4gICAgaXNEZXZNb2RlKCkgfHxcbiAgICB3aW4/LlsnZW52J10/LlsnQ09OVEVYVCddLnRvTG93ZXJDYXNlKCkgIT09IGNvbnRleHQudG9Mb3dlckNhc2UoKSB8fFxuICAgIHdpbj8uWydsb2NhdGlvbiddPy5ob3N0bmFtZT8uaW5jbHVkZXMoY29udGV4dClcbiAgKTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGlzcGF0Y2hlcyBhIGN1c3RvbSBldmVudCB0byB0aGUgZG9jdW1lbnQgd2luZG93XG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYW5kIGRpc3BhdGNoZXMgYSBjdXN0b20gZXZlbnQgdG8gdGhlIGJyb3dzZXIgd2luZG93LlxuICogSXQncyB1c2VmdWwgZm9yIGNyb3NzLWNvbXBvbmVudCBjb21tdW5pY2F0aW9uIG9yIGZvciB0cmlnZ2VyaW5nIGFwcGxpY2F0aW9uLXdpZGUgZXZlbnRzLlxuICogVGhlIGZ1bmN0aW9uIGFsbG93cyBzcGVjaWZ5aW5nIHRoZSBldmVudCBuYW1lLCBkZXRhaWwgZGF0YSwgYW5kIGFkZGl0aW9uYWwgZXZlbnQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBjdXN0b20gZXZlbnQgdG8gZGlzcGF0Y2hcbiAqIEBwYXJhbSB7dW5rbm93bn0gZGV0YWlsIC0gVGhlIGRhdGEgdG8gaW5jbHVkZSBpbiB0aGUgZXZlbnQncyBkZXRhaWwgcHJvcGVydHlcbiAqIEBwYXJhbSB7b2JqZWN0fSBbcHJvcHNdIC0gT3B0aW9uYWwgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciB0aGUgY3VzdG9tIGV2ZW50XG4gKiBAcmV0dXJuIHt2b2lkfVxuICpcbiAqIEBmdW5jdGlvbiB3aW5kb3dFdmVudEVtaXR0ZXJcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpbmRvd0V2ZW50RW1pdHRlcihcbiAgbmFtZTogc3RyaW5nLFxuICBkZXRhaWw6IHVua25vd24sXG4gIHByb3BzPzogb2JqZWN0XG4pOiB2b2lkIHtcbiAgY29uc3QgZGF0YSA9IE9iamVjdC5hc3NpZ24oXG4gICAge1xuICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgIGNvbXBvc2VkOiB0cnVlLFxuICAgICAgY2FuY2VsYWJsZTogZmFsc2UsXG4gICAgICBkZXRhaWw6IGRldGFpbCxcbiAgICB9LFxuICAgIHByb3BzIHx8IHt9XG4gICk7XG4gIChnZXRXaW5kb3coKSBhcyBXaW5kb3cpLmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KG5hbWUsIGRhdGEpKTtcbn1cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhIHByb3BlcnR5IGZyb20gdGhlIHdpbmRvdydzIGRvY3VtZW50IG9iamVjdFxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHNhZmUgd2F5IHRvIGFjY2VzcyBwcm9wZXJ0aWVzIG9uIHRoZSB3aW5kb3cncyBkb2N1bWVudCBvYmplY3QuXG4gKiBJdCB1c2VzIHRoZSBnZXRXaW5kb3dEb2N1bWVudCBmdW5jdGlvbiB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIGRvY3VtZW50LCB0aGVuIGFjY2Vzc2VzXG4gKiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LiBUaGlzIGlzIHVzZWZ1bCBmb3IgYnJvd3NlciBlbnZpcm9ubWVudCBpbnRlcmFjdGlvbnMgdGhhdCBuZWVkXG4gKiB0byBhY2Nlc3MgZG9jdW1lbnQgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHJldHJpZXZlIGZyb20gdGhlIGRvY3VtZW50IG9iamVjdFxuICogQHJldHVybiB7YW55fSBUaGUgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBwcm9wZXJ0eSwgb3IgdW5kZWZpbmVkIGlmIHRoZSBkb2N1bWVudCBvciBwcm9wZXJ0eSBkb2Vzbid0IGV4aXN0XG4gKlxuICogQGZ1bmN0aW9uIGdldE9uV2luZG93RG9jdW1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9uV2luZG93RG9jdW1lbnQoa2V5OiBzdHJpbmcpOiBEb2N1bWVudCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGRvYyA9IGdldFdpbmRvd0RvY3VtZW50KCk/LltrZXkgYXMga2V5b2YgRG9jdW1lbnRdO1xuICByZXR1cm4gZG9jIGluc3RhbmNlb2YgRG9jdW1lbnQgP1xuICAgIGRvYyA6IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIHRoZSBkb2N1bWVudCBvYmplY3QgZnJvbSB0aGUgd2luZG93XG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgc2FmZSB3YXkgdG8gYWNjZXNzIHRoZSBkb2N1bWVudCBvYmplY3QgZnJvbSB0aGUgd2luZG93LlxuICogSXQgdXNlcyB0aGUgZ2V0T25XaW5kb3cgZnVuY3Rpb24gdG8gcmV0cmlldmUgdGhlICdkb2N1bWVudCcgcHJvcGVydHkgZnJvbSB0aGUgd2luZG93IG9iamVjdC5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBicm93c2VyIGVudmlyb25tZW50IGludGVyYWN0aW9ucyB0aGF0IG5lZWQgYWNjZXNzIHRvIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBAcmV0dXJuIHtEb2N1bWVudCB8IHVuZGVmaW5lZH0gVGhlIHdpbmRvdydzIGRvY3VtZW50IG9iamVjdCwgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0V2luZG93RG9jdW1lbnRcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvd0RvY3VtZW50KCk6IERvY3VtZW50IHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGdldE9uV2luZG93KCdkb2N1bWVudCcpIGFzIERvY3VtZW50O1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSBwcm9wZXJ0eSBmcm9tIHRoZSB3aW5kb3cgb2JqZWN0XG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgc2FmZSB3YXkgdG8gYWNjZXNzIHByb3BlcnRpZXMgb24gdGhlIHdpbmRvdyBvYmplY3QuXG4gKiBJdCB1c2VzIHRoZSBnZXRXaW5kb3cgZnVuY3Rpb24gdG8gZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSB3aW5kb3csIHRoZW4gYWNjZXNzZXNcbiAqIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkuIFRoaXMgaXMgdXNlZnVsIGZvciBicm93c2VyIGVudmlyb25tZW50IGludGVyYWN0aW9ucyB0aGF0IG5lZWRcbiAqIHRvIGFjY2VzcyB3aW5kb3cgcHJvcGVydGllcyBvciBBUElzLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gcmV0cmlldmUgZnJvbSB0aGUgd2luZG93IG9iamVjdFxuICogQHJldHVybiB7dW5rbm93biB8IHVuZGVmaW5lZH0gVGhlIHZhbHVlIG9mIHRoZSBzcGVjaWZpZWQgcHJvcGVydHksIG9yIHVuZGVmaW5lZCBpZiB0aGUgd2luZG93IG9yIHByb3BlcnR5IGRvZXNuJ3QgZXhpc3RcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0T25XaW5kb3dcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9uV2luZG93KGtleTogc3RyaW5nKTogdW5rbm93biB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBnZXRXaW5kb3coKT8uW2tleV07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFNldHMgYSBwcm9wZXJ0eSBvbiB0aGUgd2luZG93IG9iamVjdFxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIHdheSB0byBzZXQgcHJvcGVydGllcyBvbiB0aGUgd2luZG93IG9iamVjdC5cbiAqIEl0IHVzZXMgdGhlIGdldFdpbmRvdyBmdW5jdGlvbiB0byBnZXQgYSByZWZlcmVuY2UgdG8gdGhlIHdpbmRvdywgdGhlbiBzZXRzXG4gKiB0aGUgc3BlY2lmaWVkIHByb3BlcnR5IHRvIHRoZSBwcm92aWRlZCB2YWx1ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIHN0b3JpbmdcbiAqIGdsb2JhbCBkYXRhIG9yIGZ1bmN0aW9ucyB0aGF0IG5lZWQgdG8gYmUgYWNjZXNzaWJsZSBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdG8gc2V0IG9uIHRoZSB3aW5kb3cgb2JqZWN0XG4gKiBAcGFyYW0ge2FueX0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gYXNzaWduIHRvIHRoZSBwcm9wZXJ0eVxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb24gc2V0T25XaW5kb3dcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldE9uV2luZG93KGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bik6IHZvaWQge1xuICBnZXRXaW5kb3coKVtrZXldID0gdmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgZ2xvYmFsIHdpbmRvdyBvYmplY3RcbiAqIEBzdW1tYXJ5IFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBzYWZlIHdheSB0byBhY2Nlc3MgdGhlIGdsb2JhbCB3aW5kb3cgb2JqZWN0LlxuICogSXQgdXNlcyBnbG9iYWxUaGlzIHRvIGVuc3VyZSBjb21wYXRpYmlsaXR5IGFjcm9zcyBkaWZmZXJlbnQgSmF2YVNjcmlwdCBlbnZpcm9ubWVudHMuXG4gKiBUaGlzIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIHVzZWQgYnkgb3RoZXIgd2luZG93LXJlbGF0ZWQgdXRpbGl0eSBmdW5jdGlvbnMgdG9cbiAqIGFjY2VzcyB0aGUgd2luZG93IG9iamVjdC5cbiAqXG4gKiBAcmV0dXJuIHtXaW5kb3d9IFRoZSBnbG9iYWwgd2luZG93IG9iamVjdFxuICpcbiAqIEBmdW5jdGlvbiBnZXRXaW5kb3dcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvdygpOiBXaW5kb3cgJiBLZXlWYWx1ZSB7XG4gIHJldHVybiAoZ2xvYmFsVGhpcyBhcyBLZXlWYWx1ZSk/Llsnd2luZG93J10gYXMgV2luZG93ICYgS2V5VmFsdWU7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgd2lkdGggb2YgdGhlIGJyb3dzZXIgd2luZG93XG4gKiBAc3VtbWFyeSBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gZ2V0IHRoZSBjdXJyZW50IHdpZHRoIG9mIHRoZSBicm93c2VyIHdpbmRvdy5cbiAqIEl0IHVzZXMgdGhlIGdldE9uV2luZG93IGZ1bmN0aW9uIHRvIGFjY2VzcyB0aGUgJ2lubmVyV2lkdGgnIHByb3BlcnR5IG9mIHRoZSB3aW5kb3cgb2JqZWN0LlxuICogVGhpcyBpcyB1c2VmdWwgZm9yIHJlc3BvbnNpdmUgZGVzaWduIGltcGxlbWVudGF0aW9ucyBhbmQgdmlld3BvcnQtYmFzZWQgY2FsY3VsYXRpb25zLlxuICpcbiAqIEByZXR1cm4ge251bWJlciB8IHVuZGVmaW5lZH0gVGhlIGN1cnJlbnQgd2lkdGggb2YgdGhlIGJyb3dzZXIgd2luZG93IGluIHBpeGVsc1xuICpcbiAqIEBmdW5jdGlvbiBnZXRXaW5kb3dXaWR0aFxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2luZG93V2lkdGgoKTogbnVtYmVyIHtcbiAgcmV0dXJuIGdldE9uV2luZG93KCdpbm5lcldpZHRoJykgYXMgbnVtYmVyIHx8IDA7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENoZWNrcyBpZiBhIHZhbHVlIGlzICBub3QgdW5kZWZpbmVkXG4gKiBAc3VtbWFyeSBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gdmFsdWUgaXMgbm90IHVuZGVmaW5lZC5cbiAqIEl0J3MgYSBzaW1wbGUgd3JhcHBlciB0aGF0IG1ha2VzIGNvZGUgbW9yZSByZWFkYWJsZSB3aGVuIGNoZWNraW5nIGZvciBkZWZpbmVkIHZhbHVlcy5cbiAqIFRoZSBmdW5jdGlvbiBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjaGVja2luZyBTdHJpbmdPckJvb2xlYW4gcHJvcGVydGllcyB0aGF0IG1pZ2h0IGJlIHVuZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ09yQm9vbGVhbiB8IHVuZGVmaW5lZH0gcHJvcCAtIFRoZSBwcm9wZXJ0eSB0byBjaGVja1xuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgcHJvcGVydHkgaXMgbm90IHVuZGVmaW5lZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKlxuICogQGZ1bmN0aW9uIGlzTm90VW5kZWZpbmVkXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vdFVuZGVmaW5lZChwcm9wOiBTdHJpbmdPckJvb2xlYW4gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcbiAgcmV0dXJuIChwcm9wICE9PSB1bmRlZmluZWQpIGFzIGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIGxvY2FsZSBzdHJpbmcgZnJvbSBhIGNsYXNzIG5hbWUgb3IgaW5zdGFuY2VcbiAqIEBzdW1tYXJ5IFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBjb252ZXJ0cyBhIGNsYXNzIG5hbWUgb3IgaW5zdGFuY2UgaW50byBhIGxvY2FsZSBzdHJpbmdcbiAqIHRoYXQgY2FuIGJlIHVzZWQgZm9yIGludGVybmF0aW9uYWxpemF0aW9uIHB1cnBvc2VzLiBJdCBoYW5kbGVzIGRpZmZlcmVudCBpbnB1dCB0eXBlc1xuICogKHN0cmluZywgZnVuY3Rpb24sIG9yIG9iamVjdCkgYW5kIGFwcGxpZXMgZm9ybWF0dGluZyBydWxlcyB0byBnZW5lcmF0ZSBhIGNvbnNpc3RlbnRcbiAqIGxvY2FsZSBpZGVudGlmaWVyLiBGb3Igc2hvcnQgbmFtZXMgKGxlc3MgdGhhbiAzIHBhcnRzKSwgaXQgcmV2ZXJzZXMgdGhlIGRvdC1zZXBhcmF0ZWRcbiAqIHN0cmluZy4gRm9yIGxvbmdlciBuYW1lcywgaXQgdXNlcyB0aGUgbGFzdCBwYXJ0IGFzIGEgcHJlZml4IGFuZCBqb2lucyB0aGUgcmVzdCB3aXRoXG4gKiB1bmRlcnNjb3Jlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xGdW5jdGlvbkxpa2V8b2JqZWN0fSBpbnN0YW5jZSAtIFRoZSBpbnB1dCB0byBnZW5lcmF0ZSB0aGUgbG9jYWxlIGZyb20gKGNsYXNzIG5hbWUsIGNvbnN0cnVjdG9yLCBvciBpbnN0YW5jZSlcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3VmZml4XSAtIE9wdGlvbmFsIHN0cmluZyB0byBhcHBlbmQgdG8gdGhlIGluc3RhbmNlIG5hbWUgYmVmb3JlIHByb2Nlc3NpbmdcbiAqIEByZXR1cm4ge3N0cmluZ30gQSBmb3JtYXR0ZWQgbG9jYWxlIHN0cmluZyBkZXJpdmVkIGZyb20gdGhlIGlucHV0XG4gKlxuICogQGZ1bmN0aW9uIGdldExvY2FsZUZyb21DbGFzc05hbWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExvY2FsZUZyb21DbGFzc05hbWUoXG4gIGluc3RhbmNlOiBzdHJpbmcgfCBGdW5jdGlvbkxpa2UgfCBLZXlWYWx1ZSxcbiAgc3VmZml4Pzogc3RyaW5nXG4pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGluc3RhbmNlICE9PSBQcmltaXRpdmVzLlNUUklORylcbiAgICBpbnN0YW5jZSA9IChpbnN0YW5jZSBhcyBGdW5jdGlvbkxpa2UpLm5hbWUgfHwgKGluc3RhbmNlIGFzIG9iamVjdCk/LmNvbnN0cnVjdG9yPy5uYW1lO1xuXG4gIGxldCBuYW1lOiBzdHJpbmcgfCBzdHJpbmdbXSA9IGluc3RhbmNlIGFzIHN0cmluZztcblxuICBpZiAoc3VmZml4KVxuICAgIG5hbWUgPSBgJHtpbnN0YW5jZX0ke3N1ZmZpeC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN1ZmZpeC5zbGljZSgxKX1gO1xuXG4gIG5hbWUgPSBuYW1lLnJlcGxhY2UoL198LS9nLCAnJykucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csICh3b3JkOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChpbmRleCA+IDEpIHdvcmQgPSAnLicgKyB3b3JkO1xuICAgICAgcmV0dXJuIHdvcmQudG9Mb3dlckNhc2UoKTtcbiAgICB9KS5zcGxpdCgnLicpO1xuXG4gIGlmIChuYW1lLmxlbmd0aCA8IDMpXG4gICAgcmV0dXJuIG5hbWUucmV2ZXJzZSgpLmpvaW4oJy4nKTtcblxuICBjb25zdCBwcmVmZml4ID0gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuICBuYW1lLnBvcCgpO1xuICBuYW1lID0gbmFtZS5qb2luKCdfJyk7XG4gIHJldHVybiBgJHtwcmVmZml4fS4ke25hbWV9YDtcbn1cblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyB0aGUgY3VycmVudCBsb2NhbGUgbGFuZ3VhZ2VcbiAqIEBzdW1tYXJ5IFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBnZXRzIHRoZSBjdXJyZW50IGxvY2FsZSBsYW5ndWFnZSBiYXNlZCBvbiB0aGUgdXNlcidzIGJyb3dzZXIgc2V0dGluZ3MuXG4gKiBJdCBwcm92aWRlcyBhIGNvbnNpc3RlbnQgd2F5IHRvIGFjY2VzcyB0aGUgdXNlcidzIGxhbmd1YWdlIHByZWZlcmVuY2UgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24uXG4gKiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUgYnJvd3NlcidzIG5hdmlnYXRvci5sYW5ndWFnZSB2YWx1ZSwgZGVmYXVsdGluZyB0byAnZW4nIGlmIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY3VycmVudCBsb2NhbGUgbGFuZ3VhZ2UgKGUuZy4sICdlbicsICdmcicpXG4gKlxuICogQGZ1bmN0aW9uIGdldExvY2FsZUxhbmd1YWdlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2NhbGVMYW5ndWFnZSgpOiBzdHJpbmcge1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coKTtcbiAgcmV0dXJuICh3aW4gYXMgV2luZG93KS5uYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgXCJlblwiO1xuICAvLyByZXR1cm4gd2luPy5bV0lORE9XX0tFWVMuTEFOR1VBR0VfU0VMRUNURURdIHx8ICh3aW4ubmF2aWdhdG9yLmxhbmd1YWdlIHx8ICcnKS5zcGxpdCgnLScpWzBdIHx8IFwiZW5cIjtcbn1cblxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEdlbmVyYXRlcyBhIHJhbmRvbSBzdHJpbmcgb3IgbnVtYmVyIG9mIHNwZWNpZmllZCBsZW5ndGhcbiAqIEBzdW1tYXJ5IFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBjcmVhdGVzIGEgcmFuZG9tIHN0cmluZyBvZiBhIHNwZWNpZmllZCBsZW5ndGguXG4gKiBJdCBjYW4gZ2VuZXJhdGUgZWl0aGVyIGFscGhhbnVtZXJpYyBzdHJpbmdzIChpbmNsdWRpbmcgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2UgbGV0dGVycylcbiAqIG9yIG51bWVyaWMtb25seSBzdHJpbmdzLiBUaGlzIGlzIHVzZWZ1bCBmb3IgY3JlYXRpbmcgcmFuZG9tIElEcywgdGVtcG9yYXJ5IHBhc3N3b3JkcyxcbiAqIG9yIG90aGVyIHJhbmRvbSBpZGVudGlmaWVycyB0aHJvdWdob3V0IHRoZSBhcHBsaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD04XSAtIFRoZSBsZW5ndGggb2YgdGhlIHJhbmRvbSB2YWx1ZSB0byBnZW5lcmF0ZVxuICogQHBhcmFtIHtib29sZWFufSBbb25seU51bWJlcnM9ZmFsc2VdIC0gV2hldGhlciB0byBnZW5lcmF0ZSBvbmx5IG51bWVyaWMgY2hhcmFjdGVyc1xuICogQHJldHVybiB7c3RyaW5nfSBBIHJhbmRvbWx5IGdlbmVyYXRlZCBzdHJpbmcgb2YgdGhlIHNwZWNpZmllZCBsZW5ndGggYW5kIGNoYXJhY3RlciBzZXRcbiAqXG4gKiBAZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21WYWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21WYWx1ZShsZW5ndGg6IG51bWJlciA9IDgsIG9ubHlOdW1iZXJzOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICBjb25zdCBjaGFycyA9IG9ubHlOdW1iZXJzXG4gICAgPyAnMDEyMzQ1Njc4OSdcbiAgICA6ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7XG4gIGxldCByZXN1bHQgPSAnJztcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKylcbiAgICByZXN1bHQgKz0gY2hhcnMuY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJzLmxlbmd0aCkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIGJvb2xlYW4gb3IgYSBib29sZWFuIHZhbHVlIHRvIGEgYm9vbGVhbiB0eXBlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7KCd0cnVlJyB8ICdmYWxzZScgfCBib29sZWFuKX0gcHJvcCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0LiBDYW4gYmUgdGhlIHN0cmluZyAndHJ1ZScsICdmYWxzZScsIG9yIGEgYm9vbGVhbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBUaGUgYm9vbGVhbiByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW5wdXQgdmFsdWUuIFJldHVybnMgdHJ1ZSBpZiB0aGUgaW5wdXQgaXMgdGhlIHN0cmluZyAndHJ1ZScgb3IgYm9vbGVhbiB0cnVlLCBmYWxzZSBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdHJpbmdUb0Jvb2xlYW4ocHJvcDogJ3RydWUnIHwgJ2ZhbHNlJyB8IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgaWYodHlwZW9mIHByb3AgPT09ICdzdHJpbmcnKVxuICAgIHByb3AgPSBwcm9wLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJyA/IHRydWUgOiBmYWxzZTtcbiAgcmV0dXJuIHByb3A7XG59XG5cblxuLyoqXG4gKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIERhdGUgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsoc3RyaW5nIHwgRGF0ZSB8IG51bWJlcil9IGRhdGUgLSBUaGUgdmFsdWUgdG8gY2hlY2suIENhbiBiZSBhIERhdGUgb2JqZWN0LCBhIHRpbWVzdGFtcCBudW1iZXIsIG9yIGEgZGF0ZSBzdHJpbmdcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGUgdmFsdWUgaXMgYSB2YWxpZCBEYXRlIG9iamVjdCAobm90IE5hTiksIG90aGVyd2lzZSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUgJiYgIWlzTmFOKGRhdGUgYXMgdW5rbm93biBhcyBudW1iZXIpKSB8fCAoKCkgPT4ge1xuICAgICAgY29uc3QgdGVzdFJlZ2V4ID0gbmV3IFJlZ0V4cCgvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9JC8pLnRlc3QoZGF0ZSBhcyBzdHJpbmcpXG4gICAgICBpZih0eXBlb2YgZGF0ZSAhPT0gUHJpbWl0aXZlcy5TVFJJTkcgfHwgIShkYXRlIGFzIHN0cmluZyk/LmluY2x1ZGVzKCdUJykgJiYgIXRlc3RSZWdleClcbiAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICBkYXRlID0gKGRhdGUgYXMgc3RyaW5nKS5zcGxpdCgnVCcpWzBdO1xuICAgIGlmKCFuZXcgUmVnRXhwKC9eXFxkezR9LVxcZHsyfS1cXGR7Mn0kLykudGVzdChkYXRlKSlcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIHJldHVybiAhIShuZXcgRGF0ZShkYXRlKSk7XG4gICB9KSgpO1xuICB9IGNhdGNoKGVycm9yOiB1bmtub3duKSB7XG4gICAgZ2V0TG9nZ2VyKGlzVmFsaWREYXRlKS5lcnJvcihlcnJvciBhcyBFcnJvciB8IHN0cmluZyk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGRhdGUgaW50byBhIGxvY2FsaXplZCBzdHJpbmcgcmVwcmVzZW50YXRpb25cbiAqXG4gKiBAcGFyYW0geyhzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKX0gZGF0ZSAtIFRoZSBkYXRlIHRvIGZvcm1hdC4gQ2FuIGJlIGEgRGF0ZSBvYmplY3QsIGEgdGltZXN0YW1wIG51bWJlciwgb3IgYSBkYXRlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IFtsb2NhbGVdIC0gVGhlIGxvY2FsZSB0byB1c2UgZm9yIGZvcm1hdHRpbmcuIElmIG5vdCBwcm92aWRlZCwgdGhlIHN5c3RlbSdzIGxvY2FsZSB3aWxsIGJlIHVzZWRcbiAqIEByZXR1cm4geyhEYXRlIHwgc3RyaW5nKX0gQSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGZvcm1hdCBERC9NTS9ZWVlZIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIGxvY2FsZSxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgdGhlIG9yaWdpbmFsIGlucHV0IGFzIGEgc3RyaW5nIGlmIHRoZSBkYXRlIGlzIGludmFsaWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdERhdGUoZGF0ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlciwgbG9jYWxlPzogc3RyaW5nIHwgdW5kZWZpbmVkKTogRGF0ZSB8IHN0cmluZyB7XG5cbiAgaWYoIWxvY2FsZSlcbiAgICBsb2NhbGUgPSBnZXRMb2NhbGVMYW5ndWFnZSgpO1xuXG4gIGlmKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZGF0ZSA9PT0gJ251bWJlcicpXG4gICAgZGF0ZSA9IG5ldyBEYXRlKHR5cGVvZiBkYXRlID09PSAnc3RyaW5nJyA/IGRhdGUucmVwbGFjZSgvXFwvL2csICctJykgOiBkYXRlKTtcblxuICBpZighaXNWYWxpZERhdGUoZGF0ZSkpXG4gICAgcmV0dXJuIGAke2RhdGV9YCBhcyBzdHJpbmc7XG4gIGNvbnN0IHIgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKGxvY2FsZSwge1xuICAgICAgeWVhcjogXCJudW1lcmljXCIsXG4gICAgICBkYXk6IFwiMi1kaWdpdFwiLFxuICAgICAgbW9udGg6ICcyLWRpZ2l0J1xuICB9KTtcblxuXG4gIHJldHVybiByO1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIHBhcnNlIGEgZGF0ZSBzdHJpbmcsIERhdGUgb2JqZWN0LCBvciBudW1iZXIgaW50byBhIHZhbGlkIERhdGUgb2JqZWN0XG4gKlxuICogQHBhcmFtIHsoc3RyaW5nIHwgRGF0ZSB8IG51bWJlcil9IGRhdGUgLSBUaGUgZGF0ZSB0byBwYXJzZS4gQ2FuIGJlIGEgRGF0ZSBvYmplY3QsIGEgdGltZXN0YW1wIG51bWJlcixcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBhIGRhdGUgc3RyaW5nIGluIHRoZSBmb3JtYXQgXCJERC9NTS9ZWVlZIEhIOk1NOlNTOk1TXCJcbiAqIEByZXR1cm4geyhEYXRlIHwgbnVsbCl9IEEgdmFsaWQgRGF0ZSBvYmplY3QgaWYgcGFyc2luZyBpcyBzdWNjZXNzZnVsLCBvciBudWxsIGlmIHRoZSBkYXRlIGlzIGludmFsaWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUb1ZhbGlkRGF0ZShkYXRlOiBzdHJpbmcgfCBEYXRlIHwgbnVtYmVyKTogRGF0ZSB8IG51bGwge1xuICBpZihpc1ZhbGlkRGF0ZShkYXRlKSlcbiAgICByZXR1cm4gZGF0ZSBhcyBEYXRlO1xuXG4gIGlmKCFgJHtkYXRlfWAuaW5jbHVkZXMoJy8nKSlcbiAgICByZXR1cm4gbnVsbDtcblxuICBjb25zdCBbZGF0ZVN0cmluZywgdGltZVN0cmluZ10gPSAoZGF0ZSBhcyBzdHJpbmcpLnNwbGl0KCcgJyk7XG4gIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVTdHJpbmcuc3BsaXQoJy8nKS5tYXAoTnVtYmVyKTtcbiAgY29uc3QgW2hvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHNdID0gdGltZVN0cmluZy5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xuICBkYXRlID0gbmV3IERhdGUoeWVhciwgbW9udGggLSAxLCBkYXksIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMpO1xuXG4gIGlmKCFpc1ZhbGlkRGF0ZShkYXRlKSkge1xuICAgIGNvbnNvbGUud2FybigncGFyc2VUb1ZhbGlkRGF0ZSAtIEludmFsaWQgZGF0ZSBmb3JtYXQnLCBkYXRlKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5cbi8qKlxuICogTWFwcyBhbiBpdGVtIG9iamVjdCB1c2luZyBhIHByb3ZpZGVkIG1hcHBlciBvYmplY3QgYW5kIG9wdGlvbmFsIGFkZGl0aW9uYWwgcHJvcGVydGllcy5cbiAqXG4gKiBAcGFyYW0ge0tleVZhbHVlfSBpdGVtIC0gVGhlIHNvdXJjZSBvYmplY3QgdG8gYmUgbWFwcGVkLlxuICogQHBhcmFtIHtLZXlWYWx1ZX0gbWFwcGVyIC0gQW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgbWFwcGluZyBydWxlcy4gS2V5cyByZXByZXNlbnQgdGhlIG5ldyBwcm9wZXJ0eSBuYW1lcyxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB2YWx1ZXMgcmVwcmVzZW50IHRoZSBwYXRoIHRvIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbiB0aGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7S2V5VmFsdWV9IFtwcm9wc10gLSBPcHRpb25hbCBhZGRpdGlvbmFsIHByb3BlcnRpZXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIG1hcHBlZCBvYmplY3QuXG4gKiBAcmV0dXJucyB7S2V5VmFsdWV9IEEgbmV3IG9iamVjdCB3aXRoIHByb3BlcnRpZXMgbWFwcGVkIGFjY29yZGluZyB0byB0aGUgbWFwcGVyIG9iamVjdCBhbmQgaW5jbHVkaW5nIGFueSBhZGRpdGlvbmFsIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpdGVtTWFwcGVyKGl0ZW06IEtleVZhbHVlLCBtYXBwZXI6IEtleVZhbHVlLCBwcm9wcz86IEtleVZhbHVlKTogS2V5VmFsdWUge1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMobWFwcGVyKS5yZWR1Y2UoKGFjY3VtOiBLZXlWYWx1ZSwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgY29uc3QgYXJyYXlWYWx1ZSA9ICh2YWx1ZSBhcyBzdHJpbmcpLnNwbGl0KCcuJyk7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgYWNjdW1ba2V5XSA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoYXJyYXlWYWx1ZS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgYWNjdW1ba2V5XSA9IGl0ZW0/Llt2YWx1ZSBhcyBzdHJpbmddIHx8ICh2YWx1ZSAhPT0ga2V5ID8gdmFsdWUgOiBcIlwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCB2YWw7XG5cbiAgICAgICAgZm9yIChjb25zdCBfdmFsdWUgb2YgYXJyYXlWYWx1ZSlcbiAgICAgICAgICB2YWwgPSAhdmFsXG4gICAgICAgICAgICA/IGl0ZW1bX3ZhbHVlXVxuICAgICAgICAgICAgOiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKHZhbCkgOiB2YWwpW192YWx1ZV07XG5cbiAgICAgICAgaWYgKGlzVmFsaWREYXRlKG5ldyBEYXRlKHZhbCkpKSB2YWwgPSBgJHtmb3JtYXREYXRlKHZhbCl9YDtcblxuICAgICAgICBhY2N1bVtrZXldID0gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkID8gdmFsdWUgOiB2YWw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBwcm9wcyB8fCB7fSwgYWNjdW0pO1xuICB9LCB7fSk7XG59XG5cbi8qKlxuICogTWFwcyBhbiBhcnJheSBvZiBkYXRhIG9iamVjdHMgdXNpbmcgYSBwcm92aWRlZCBtYXBwZXIgb2JqZWN0LlxuICpcbiAqIEB0ZW1wbGF0ZSBUIC0gVGhlIHR5cGUgb2YgdGhlIHJlc3VsdGluZyBtYXBwZWQgaXRlbXMuXG4gKiBAcGFyYW0ge2FueVtdfSBkYXRhIC0gVGhlIGFycmF5IG9mIGRhdGEgb2JqZWN0cyB0byBiZSBtYXBwZWQuXG4gKiBAcGFyYW0ge0tleVZhbHVlfSBtYXBwZXIgLSBBbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBtYXBwaW5nIHJ1bGVzLlxuICogQHBhcmFtIHtLZXlWYWx1ZX0gW3Byb3BzXSAtIEFkZGl0aW9uYWwgcHJvcGVydGllcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgbWFwcGVkIGl0ZW1zLlxuICpcbiAqIEByZXR1cm5zIHtUW119IC0gVGhlIGFycmF5IG9mIG1hcHBlZCBpdGVtcy4gSWYgYW4gaXRlbSBpbiB0aGUgb3JpZ2luYWwgYXJyYXkgZG9lcyBub3QgaGF2ZSBhbnkgbm9uLW51bGwgdmFsdWVzIGFmdGVyIG1hcHBpbmcsXG4gKiB0aGUgb3JpZ2luYWwgaXRlbSBpcyByZXR1cm5lZCBpbnN0ZWFkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YU1hcHBlcjxUPihkYXRhOiBUW10sIG1hcHBlcjogS2V5VmFsdWUsIHByb3BzPzogS2V5VmFsdWUpOiBUW10ge1xuICBpZiAoIWRhdGEgfHwgIWRhdGEubGVuZ3RoKSByZXR1cm4gW107XG4gIHJldHVybiBkYXRhLnJlZHVjZSgoYWNjdW06IFRbXSwgY3VycikgPT4ge1xuICAgIGNvbnN0IGl0ZW0gPSBpdGVtTWFwcGVyKGN1cnIgYXMgS2V5VmFsdWUsIG1hcHBlciwgcHJvcHMpIGFzIFQ7XG4gICAgY29uc3QgaGFzVmFsdWVzID1cbiAgICAgIFsuLi5uZXcgU2V0KE9iamVjdC52YWx1ZXMoaXRlbSBhcyBUW10pKV0uZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUpLmxlbmd0aCA+XG4gICAgICAwO1xuICAgIGFjY3VtLnB1c2goaGFzVmFsdWVzID8gaXRlbSA6IGN1cnIpO1xuICAgIHJldHVybiBhY2N1bTtcbiAgfSwgW10pO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZW1vdmVzIGZvY3VzIGZyb20gdGhlIGN1cnJlbnRseSBhY3RpdmUgRE9NIGVsZW1lbnRcbiAqIEBzdW1tYXJ5IFRoaXMgdXRpbGl0eSBmdW5jdGlvbiBibHVycyB0aGUgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsXG4gKiBlZmZlY3RpdmVseSByZW1vdmluZyBmb2N1cyB0cmFwcyB0aGF0IG1pZ2h0IHByZXZlbnQgcHJvcGVyIG5hdmlnYXRpb24gb3Iga2V5Ym9hcmRcbiAqIGludGVyYWN0aW9uLiBJdCBzYWZlbHkgYWNjZXNzZXMgdGhlIGRvY3VtZW50J3MgYWN0aXZlRWxlbWVudCBhbmQgY2FsbHMgYmx1cigpIGlmXG4gKiBhbiBlbGVtZW50IGlzIGN1cnJlbnRseSBmb2N1c2VkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgYWNjZXNzaWJpbGl0eSBhbmQgdXNlciBleHBlcmllbmNlXG4gKiBpbXByb3ZlbWVudHMsIHBhcnRpY3VsYXJseSB3aGVuIGNsb3NpbmcgbW9kYWxzIG9yIGRpYWxvZ3MuXG4gKlxuICogQHJldHVybiB7dm9pZH1cbiAqXG4gKiBAZnVuY3Rpb24gcmVtb3ZlRm9jdXNUcmFwXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmZvci1hbmd1bGFyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVGb2N1c1RyYXAoKTogdm9pZCB7XG4gIGNvbnN0IGRvYyA9IGdldFdpbmRvd0RvY3VtZW50KCk7XG4gIGlmKGRvYz8uYWN0aXZlRWxlbWVudClcbiAgICAoZG9jLmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpPy5ibHVyKCk7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIENsZWFucyBhbmQgbm9ybWFsaXplcyB3aGl0ZXNwYWNlIGluIGEgc3RyaW5nIHZhbHVlXG4gKiBAc3VtbWFyeSBUaGlzIHV0aWxpdHkgZnVuY3Rpb24gdHJpbXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIGEgc3RyaW5nXG4gKiBhbmQgcmVwbGFjZXMgbXVsdGlwbGUgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIHdpdGggYSBzaW5nbGUgc3BhY2UuXG4gKiBPcHRpb25hbGx5IGNvbnZlcnRzIHRoZSByZXN1bHQgdG8gbG93ZXJjYXNlIGZvciBjb25zaXN0ZW50IHRleHQgcHJvY2Vzc2luZy5cbiAqIFRoaXMgaXMgdXNlZnVsIGZvciBub3JtYWxpemluZyB1c2VyIGlucHV0LCBzZWFyY2ggdGVybXMsIG9yIGRhdGEgc2FuaXRpemF0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAtIFRoZSBzdHJpbmcgdmFsdWUgdG8gY2xlYW4gYW5kIG5vcm1hbGl6ZVxuICogQHBhcmFtIHtib29sZWFufSBbbG93ZXJjYXNlPWZhbHNlXSAtIFdoZXRoZXIgdG8gY29udmVydCB0aGUgcmVzdWx0IHRvIGxvd2VyY2FzZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY2xlYW5lZCBhbmQgbm9ybWFsaXplZCBzdHJpbmdcbiAqXG4gKiBAZnVuY3Rpb24gY2xlYW5TcGFjZXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Zm9yLWFuZ3VsYXJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFuU3BhY2VzKHZhbHVlOiBzdHJpbmcgPSBcIlwiLCBsb3dlcmNhc2U6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gIHZhbHVlID0gYCR7dmFsdWV9YC50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuICByZXR1cm4gbG93ZXJjYXNlID8gdmFsdWUudG9Mb3dlckNhc2UoKSA6IHZhbHVlO1xufVxuXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERldGVybWluZXMgaWYgdGhlIHVzZXIncyBzeXN0ZW0gaXMgY3VycmVudGx5IGluIGRhcmsgbW9kZVxuICogQHN1bW1hcnkgVGhpcyBmdW5jdGlvbiBjaGVja3MgdGhlIHVzZXIncyBjb2xvciBzY2hlbWUgcHJlZmVyZW5jZSB1c2luZyB0aGUgQ1NTIG1lZGlhIHF1ZXJ5XG4gKiAnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScuIEl0IHJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgc3lzdGVtIGlzXG4gKiBjdXJyZW50bHkgc2V0IHRvIGRhcmsgbW9kZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyB0aGVtZS1hd2FyZSBmdW5jdGlvbmFsaXR5XG4gKiBhbmQgYWRqdXN0aW5nIFVJIGVsZW1lbnRzIGJhc2VkIG9uIHRoZSB1c2VyJ3MgcHJlZmVycmVkIGNvbG9yIHNjaGVtZS5cbiAqXG4gKiBAcmV0dXJuIHtQcm9taXNlPGJvb2xlYW4+fSBUcnVlIGlmIHRoZSBzeXN0ZW0gaXMgaW4gZGFyayBtb2RlLCBmYWxzZSBvdGhlcndpc2VcbiAqXG4gKiBAZnVuY3Rpb24gaXNEYXJrTW9kZVxuICogQG1lbWJlck9mIG1vZHVsZTpmb3ItYW5ndWxhclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gaXNEYXJrTW9kZSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3Qge21hdGNoZXN9ID0gZ2V0V2luZG93KCkubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpO1xuICByZXR1cm4gbWF0Y2hlcztcbn1cbiJdfQ==