@bravobit/bb-foundation 0.21.2 → 0.21.5

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 (140) hide show
  1. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  2. package/esm2020/auth/lib/auth.module.mjs +4 -4
  3. package/esm2020/auth/lib/auth.service.mjs +3 -3
  4. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  5. package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
  6. package/esm2020/auth/lib/directives/role.directive.mjs +3 -3
  7. package/esm2020/auth/lib/guards/anonymous.guard.mjs +3 -3
  8. package/esm2020/auth/lib/guards/authenticated.guard.mjs +3 -3
  9. package/esm2020/auth/lib/helpers/mapper.helper.mjs +3 -3
  10. package/esm2020/auth/lib/permissions.service.mjs +3 -3
  11. package/esm2020/collections/lib/collections.module.mjs +4 -4
  12. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  13. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  14. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  15. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +3 -3
  16. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +3 -3
  17. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
  18. package/esm2020/controls/lib/controls.module.mjs +4 -4
  19. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  20. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  21. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  22. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  23. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  24. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
  25. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  26. package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
  27. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  28. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  29. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  30. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  31. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  32. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  33. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  34. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  35. package/esm2020/dialog/lib/dialog.module.mjs +4 -4
  36. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  37. package/esm2020/elements/lib/avatar/avatar.component.mjs +3 -3
  38. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  39. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
  40. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
  41. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  42. package/esm2020/elements/lib/directives/autosize.directive.mjs +3 -3
  43. package/esm2020/elements/lib/directives/focus-trap.directive.mjs +3 -3
  44. package/esm2020/elements/lib/directives/focus.directive.mjs +3 -3
  45. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  46. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  47. package/esm2020/elements/lib/directives/template.directive.mjs +3 -3
  48. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
  49. package/esm2020/elements/lib/elements.module.mjs +4 -4
  50. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
  51. package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
  52. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  53. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  54. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  55. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
  56. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  57. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  58. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  59. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  60. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  61. package/esm2020/http/lib/http.module.mjs +4 -4
  62. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  63. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  64. package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
  65. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  66. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  67. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  68. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  69. package/esm2020/lib/core/services/network.service.mjs +3 -3
  70. package/esm2020/lib/core/services/patch.service.mjs +3 -3
  71. package/esm2020/lib/core/services/platform.service.mjs +3 -3
  72. package/esm2020/localize/lib/localize.module.mjs +4 -4
  73. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  74. package/esm2020/localize/lib/localize.service.mjs +3 -3
  75. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  76. package/esm2020/localize/lib/views/localize-template-or-string.directive.mjs +3 -3
  77. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  78. package/esm2020/masking/lib/directives/currency-mask.directive.mjs +35 -0
  79. package/esm2020/masking/lib/directives/date-mask.directive.mjs +35 -0
  80. package/esm2020/masking/lib/directives/input-mask.directive.mjs +118 -0
  81. package/esm2020/masking/lib/input-mask.interface.mjs +1 -1
  82. package/esm2020/masking/lib/masking.module.mjs +22 -8
  83. package/esm2020/masking/lib/masking.service.mjs +20 -11
  84. package/esm2020/masking/public_api.mjs +4 -2
  85. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  86. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  87. package/esm2020/notifications/lib/notifications.module.mjs +4 -4
  88. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  89. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  90. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  91. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  92. package/esm2020/storage/lib/storage.service.mjs +3 -3
  93. package/esm2020/table/lib/components/table/table.component.mjs +9 -9
  94. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  95. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  96. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  97. package/esm2020/table/lib/table.module.mjs +4 -4
  98. package/esm2020/theming/lib/theming.module.mjs +4 -4
  99. package/esm2020/theming/lib/theming.service.mjs +3 -3
  100. package/fesm2015/bravobit-bb-foundation-auth.mjs +31 -31
  101. package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
  102. package/fesm2015/bravobit-bb-foundation-controls.mjs +14 -14
  103. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
  104. package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
  105. package/fesm2015/bravobit-bb-foundation-elements.mjs +85 -85
  106. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  107. package/fesm2015/bravobit-bb-foundation-localize.mjs +19 -19
  108. package/fesm2015/bravobit-bb-foundation-masking.mjs +138 -39
  109. package/fesm2015/bravobit-bb-foundation-masking.mjs.map +1 -1
  110. package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
  111. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
  112. package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
  113. package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
  114. package/fesm2015/bravobit-bb-foundation-theming.mjs +7 -7
  115. package/fesm2015/bravobit-bb-foundation.mjs +24 -24
  116. package/fesm2020/bravobit-bb-foundation-auth.mjs +31 -31
  117. package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
  118. package/fesm2020/bravobit-bb-foundation-controls.mjs +14 -14
  119. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
  120. package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
  121. package/fesm2020/bravobit-bb-foundation-elements.mjs +85 -85
  122. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  123. package/fesm2020/bravobit-bb-foundation-localize.mjs +19 -19
  124. package/fesm2020/bravobit-bb-foundation-masking.mjs +125 -34
  125. package/fesm2020/bravobit-bb-foundation-masking.mjs.map +1 -1
  126. package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
  127. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
  128. package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
  129. package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
  130. package/fesm2020/bravobit-bb-foundation-theming.mjs +7 -7
  131. package/fesm2020/bravobit-bb-foundation.mjs +24 -24
  132. package/masking/lib/directives/currency-mask.directive.d.ts +17 -0
  133. package/masking/lib/directives/date-mask.directive.d.ts +17 -0
  134. package/masking/lib/{input-mask.directive.d.ts → directives/input-mask.directive.d.ts} +7 -5
  135. package/masking/lib/input-mask.interface.d.ts +5 -6
  136. package/masking/lib/masking.module.d.ts +4 -2
  137. package/masking/lib/masking.service.d.ts +2 -2
  138. package/masking/public_api.d.ts +3 -1
  139. package/package.json +1 -1
  140. package/esm2020/masking/lib/input-mask.directive.mjs +0 -110
@@ -1,110 +0,0 @@
1
- import { Directive, HostListener, Input, Optional, Self } from '@angular/core';
2
- import _Inputmask from 'inputmask';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/cdk/platform";
5
- import * as i2 from "@angular/forms";
6
- const InputmaskConstructor = _Inputmask.default || _Inputmask;
7
- export class BbInputMask {
8
- constructor(_ngZone, _platform, _renderer, _elementRef, _control) {
9
- this._ngZone = _ngZone;
10
- this._platform = _platform;
11
- this._renderer = _renderer;
12
- this._elementRef = _elementRef;
13
- this._control = _control;
14
- // State.
15
- this.inputMaskPlugin = null;
16
- this.nativeInputElement = null;
17
- this._inputMaskOptions = null;
18
- this._onChange = () => ({});
19
- this.onInput = (_) => ({});
20
- this.onTouched = () => ({});
21
- this.validate = (control) => !control.value || !this.inputMaskPlugin || this.inputMaskPlugin?.isValid()
22
- ? null
23
- : { inputMask: true };
24
- this.nativeInputElement = this._elementRef.nativeElement;
25
- if (this._control != null) {
26
- this._control.valueAccessor = this;
27
- }
28
- }
29
- set bbInputMask(mask) {
30
- if (!mask) {
31
- return;
32
- }
33
- this._inputMaskOptions = mask;
34
- this.updateMask();
35
- }
36
- ngOnInit() {
37
- const control = this._control.control;
38
- if (!control) {
39
- return;
40
- }
41
- control.setValidators(control.validator ? [control.validator, this.validate] : [this.validate]);
42
- control.updateValueAndValidity();
43
- }
44
- ngOnDestroy() {
45
- this.destroyMask();
46
- }
47
- writeValue(value) {
48
- if (!this.nativeInputElement) {
49
- return;
50
- }
51
- this._renderer.setProperty(this.nativeInputElement, 'value', value ?? '');
52
- }
53
- registerOnChange(fn) {
54
- this._onChange = fn;
55
- const parser = this._inputMaskOptions?.parser;
56
- this.onInput = value => this._onChange(parser && value ? parser(value) : value);
57
- }
58
- registerOnTouched(fn) {
59
- this.onTouched = fn;
60
- }
61
- setDisabledState(isDisabled) {
62
- if (!this.nativeInputElement) {
63
- return;
64
- }
65
- this._renderer.setProperty(this.nativeInputElement, 'disabled', isDisabled);
66
- }
67
- updateMask() {
68
- this.destroyMask();
69
- this.createMask();
70
- this.registerOnChange(this._onChange);
71
- }
72
- createMask() {
73
- const element = this._elementRef.nativeElement;
74
- if (!this._platform.isBrowser || !element || this._inputMaskOptions === null || Object.keys(this._inputMaskOptions).length === 0) {
75
- return;
76
- }
77
- const { parser, ...options } = this._inputMaskOptions;
78
- this.inputMaskPlugin = this._ngZone.runOutsideAngular(() => new InputmaskConstructor(options).mask(element));
79
- const control = this._control.control;
80
- if (!control) {
81
- return;
82
- }
83
- setTimeout(() => control.updateValueAndValidity());
84
- }
85
- destroyMask() {
86
- this.inputMaskPlugin?.remove();
87
- this.inputMaskPlugin = null;
88
- }
89
- }
90
- BbInputMask.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BbInputMask, deps: [{ token: i0.NgZone }, { token: i1.Platform }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
91
- BbInputMask.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.4", type: BbInputMask, selector: "input[bbInputMask]", inputs: { bbInputMask: "bbInputMask" }, host: { listeners: { "input": "onInput($event.target.value)", "blur": "onTouched($event.target.value)" } }, ngImport: i0 });
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.4", ngImport: i0, type: BbInputMask, decorators: [{
93
- type: Directive,
94
- args: [{
95
- selector: 'input[bbInputMask]'
96
- }]
97
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.Platform }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.NgControl, decorators: [{
98
- type: Optional
99
- }, {
100
- type: Self
101
- }] }]; }, propDecorators: { bbInputMask: [{
102
- type: Input
103
- }], onInput: [{
104
- type: HostListener,
105
- args: ['input', ['$event.target.value']]
106
- }], onTouched: [{
107
- type: HostListener,
108
- args: ['blur', ['$event.target.value']]
109
- }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtbWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL21hc2tpbmcvc3JjL2xpYi9pbnB1dC1tYXNrLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQTZCLFFBQVEsRUFBYSxJQUFJLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFLL0gsT0FBTyxVQUFVLE1BQU0sV0FBVyxDQUFDOzs7O0FBRW5DLE1BQU0sb0JBQW9CLEdBQUksVUFBd0QsQ0FBQyxPQUFPLElBQUksVUFBVSxDQUFDO0FBSzdHLE1BQU0sT0FBTyxXQUFXO0lBbUJwQixZQUFvQixPQUFlLEVBQ2YsU0FBbUIsRUFDbkIsU0FBb0IsRUFDcEIsV0FBdUIsRUFDSCxRQUFvQjtRQUp4QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ0gsYUFBUSxHQUFSLFFBQVEsQ0FBWTtRQVg1RCxTQUFTO1FBQ1Qsb0JBQWUsR0FBOEIsSUFBSSxDQUFDO1FBQ2xELHVCQUFrQixHQUE0QixJQUFJLENBQUM7UUFFM0Msc0JBQWlCLEdBQStCLElBQUksQ0FBQztRQUNyRCxjQUFTLEdBQThCLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFjMUQsWUFBTyxHQUF5QixDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUdqRCxjQUFTLEdBQWUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQXdDbkMsYUFBUSxHQUFHLENBQUMsT0FBd0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsSUFBSSxD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LEVBQUU7WUFDOUgsT0FBTztTQUNWO1FBRUQsTUFBTSxFQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNwRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUU3RyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTztTQUNWO1FBQ0QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVPLFdBQVc7UUFDZixJQUFJLENBQUMsZUFBZSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7O3dHQXZHUSxXQUFXOzRGQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFIdkIsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsb0JBQW9CO2lCQUNqQzs7MEJBd0JnQixRQUFROzswQkFBSSxJQUFJOzRDQXBCekIsV0FBVztzQkFEZCxLQUFLO2dCQTZCTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBSTlDLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTZWxmfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3J9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7SW5wdXRNYXNrT3B0aW9uc30gZnJvbSAnLi9pbnB1dC1tYXNrLmludGVyZmFjZSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHR5cGUgSW5wdXRtYXNrIGZyb20gJ2lucHV0bWFzayc7XG5pbXBvcnQgX0lucHV0bWFzayBmcm9tICdpbnB1dG1hc2snO1xuXG5jb25zdCBJbnB1dG1hc2tDb25zdHJ1Y3RvciA9IChfSW5wdXRtYXNrIGFzIHVua25vd24gYXMgeyBkZWZhdWx0PzogSW5wdXRtYXNrLlN0YXRpYyB9KS5kZWZhdWx0IHx8IF9JbnB1dG1hc2s7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaW5wdXRbYmJJbnB1dE1hc2tdJ1xufSlcbmV4cG9ydCBjbGFzcyBCYklucHV0TWFzazxUID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgVmFsaWRhdG9yIHtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGJiSW5wdXRNYXNrKG1hc2s6IElucHV0TWFza09wdGlvbnM8VD4gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmICghbWFzaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5faW5wdXRNYXNrT3B0aW9ucyA9IG1hc2s7XG4gICAgICAgIHRoaXMudXBkYXRlTWFzaygpO1xuICAgIH1cblxuICAgIC8vIFN0YXRlLlxuICAgIGlucHV0TWFza1BsdWdpbjogSW5wdXRtYXNrLkluc3RhbmNlIHwgbnVsbCA9IG51bGw7XG4gICAgbmF0aXZlSW5wdXRFbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIF9pbnB1dE1hc2tPcHRpb25zOiBJbnB1dE1hc2tPcHRpb25zPFQ+IHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfb25DaGFuZ2U6ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX3JlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgX2NvbnRyb2w/OiBOZ0NvbnRyb2wpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVJbnB1dEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICh0aGlzLl9jb250cm9sICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdpbnB1dCcsIFsnJGV2ZW50LnRhcmdldC52YWx1ZSddKVxuICAgIG9uSW5wdXQ6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKF86IGFueSkgPT4gKHt9KTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInLCBbJyRldmVudC50YXJnZXQudmFsdWUnXSlcbiAgICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9jb250cm9sLmNvbnRyb2w7XG4gICAgICAgIGlmICghY29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udHJvbC5zZXRWYWxpZGF0b3JzKGNvbnRyb2wudmFsaWRhdG9yID8gW2NvbnRyb2wudmFsaWRhdG9yLCB0aGlzLnZhbGlkYXRlXSA6IFt0aGlzLnZhbGlkYXRlXSk7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrKCk7XG4gICAgfVxuXG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUlucHV0RWxlbWVudCwgJ3ZhbHVlJywgdmFsdWUgPz8gJycpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2UgPSBmbjtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gdGhpcy5faW5wdXRNYXNrT3B0aW9ucz8ucGFyc2VyO1xuICAgICAgICB0aGlzLm9uSW5wdXQgPSB2YWx1ZSA9PiB0aGlzLl9vbkNoYW5nZShwYXJzZXIgJiYgdmFsdWUgPyBwYXJzZXIodmFsdWUpIDogdmFsdWUpO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIGlmICghdGhpcy5uYXRpdmVJbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLm5hdGl2ZUlucHV0RWxlbWVudCwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgdmFsaWRhdGUgPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiAhY29udHJvbC52YWx1ZSB8fCAhdGhpcy5pbnB1dE1hc2tQbHVnaW4gfHwgdGhpcy5pbnB1dE1hc2tQbHVnaW4/LmlzVmFsaWQoKVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB7aW5wdXRNYXNrOiB0cnVlfTtcblxuICAgIHByaXZhdGUgdXBkYXRlTWFzaygpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95TWFzaygpO1xuICAgICAgICB0aGlzLmNyZWF0ZU1hc2soKTtcbiAgICAgICAgdGhpcy5yZWdpc3Rlck9uQ2hhbmdlKHRoaXMuX29uQ2hhbmdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNyZWF0ZU1hc2soKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGlmICghdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyIHx8ICFlbGVtZW50IHx8IHRoaXMuX2lucHV0TWFza09wdGlvbnMgPT09IG51bGwgfHwgT2JqZWN0LmtleXModGhpcy5faW5wdXRNYXNrT3B0aW9ucykubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7cGFyc2VyLCAuLi5vcHRpb25zfSA9IHRoaXMuX2lucHV0TWFza09wdGlvbnM7XG4gICAgICAgIHRoaXMuaW5wdXRNYXNrUGx1Z2luID0gdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IG5ldyBJbnB1dG1hc2tDb25zdHJ1Y3RvcihvcHRpb25zKS5tYXNrKGVsZW1lbnQpKTtcblxuICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbC5jb250cm9sO1xuICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlc3Ryb3lNYXNrKCkge1xuICAgICAgICB0aGlzLmlucHV0TWFza1BsdWdpbj8ucmVtb3ZlKCk7XG4gICAgICAgIHRoaXMuaW5wdXRNYXNrUGx1Z2luID0gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBSZXF1aXJlZCBzbyB0aGF0IHRoZSB0ZW1wbGF0ZSB0eXBlIGNoZWNrZXIgY2FuIGluZmVyIHRoZSB0eXBlIG9mIHRoZSBjb2VyY2VkIGlucHV0cy5cbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYmJJbnB1dE1hc2s6IElucHV0TWFza09wdGlvbnM8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbn0iXX0=