@yuuvis/client-core 0.6.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 (153) hide show
  1. package/README.md +111 -0
  2. package/esm2022/index.mjs +65 -0
  3. package/esm2022/lib/client-core.module.mjs +117 -0
  4. package/esm2022/lib/client-core.shared.module.mjs +18 -0
  5. package/esm2022/lib/common/pipes/filesize.pipe.mjs +37 -0
  6. package/esm2022/lib/common/pipes/index.mjs +6 -0
  7. package/esm2022/lib/common/pipes/keys.pipe.mjs +17 -0
  8. package/esm2022/lib/common/pipes/locale-date.pipe.mjs +45 -0
  9. package/esm2022/lib/common/pipes/locale-number.pipe.mjs +115 -0
  10. package/esm2022/lib/common/pipes/safe-html.pipe.mjs +44 -0
  11. package/esm2022/lib/common/services/native-notifications.interface.mjs +2 -0
  12. package/esm2022/lib/common/services/native-notifications.mjs +40 -0
  13. package/esm2022/lib/model/dms-object.interface.mjs +2 -0
  14. package/esm2022/lib/model/dms-object.model.mjs +79 -0
  15. package/esm2022/lib/model/object-flavor.interface.mjs +2 -0
  16. package/esm2022/lib/model/range-value.interface.mjs +2 -0
  17. package/esm2022/lib/model/yuv-error.model.mjs +37 -0
  18. package/esm2022/lib/model/yuv-user.model.mjs +38 -0
  19. package/esm2022/lib/service/audit/audit.interface.mjs +2 -0
  20. package/esm2022/lib/service/audit/audit.service.mjs +135 -0
  21. package/esm2022/lib/service/auth/auth.interceptor.mjs +50 -0
  22. package/esm2022/lib/service/auth/auth.interface.mjs +7 -0
  23. package/esm2022/lib/service/auth/auth.service.mjs +130 -0
  24. package/esm2022/lib/service/auth/oidc.service.mjs +81 -0
  25. package/esm2022/lib/service/backend/api.enum.mjs +11 -0
  26. package/esm2022/lib/service/backend/backend.interface.mjs +2 -0
  27. package/esm2022/lib/service/backend/backend.service.mjs +206 -0
  28. package/esm2022/lib/service/bpm/bpm.interface.mjs +8 -0
  29. package/esm2022/lib/service/bpm/bpm.service.mjs +51 -0
  30. package/esm2022/lib/service/cache/app-cache.service.mjs +51 -0
  31. package/esm2022/lib/service/catalog/catalog.interface.mjs +2 -0
  32. package/esm2022/lib/service/catalog/catalog.service.mjs +13 -0
  33. package/esm2022/lib/service/clipboard/clipboard.interface.mjs +2 -0
  34. package/esm2022/lib/service/clipboard/clipboard.service.mjs +90 -0
  35. package/esm2022/lib/service/config/config.interface.mjs +6 -0
  36. package/esm2022/lib/service/config/config.service.mjs +115 -0
  37. package/esm2022/lib/service/config/core-config.mjs +20 -0
  38. package/esm2022/lib/service/config/core-config.tokens.mjs +9 -0
  39. package/esm2022/lib/service/connection/connection.service.mjs +36 -0
  40. package/esm2022/lib/service/connection/offline.interceptor.mjs +28 -0
  41. package/esm2022/lib/service/core-init/core-init.service.mjs +29 -0
  42. package/esm2022/lib/service/core-init/missing-translation-handler.mjs +10 -0
  43. package/esm2022/lib/service/core-init/translate-json-loader.mjs +117 -0
  44. package/esm2022/lib/service/device/device.interface.mjs +6 -0
  45. package/esm2022/lib/service/device/device.service.mjs +144 -0
  46. package/esm2022/lib/service/dms/dms.service.interface.mjs +2 -0
  47. package/esm2022/lib/service/dms/dms.service.mjs +440 -0
  48. package/esm2022/lib/service/event/event.interface.mjs +2 -0
  49. package/esm2022/lib/service/event/event.service.mjs +38 -0
  50. package/esm2022/lib/service/event/events.mjs +14 -0
  51. package/esm2022/lib/service/idm/idm.interface.mjs +2 -0
  52. package/esm2022/lib/service/idm/idm.service.mjs +34 -0
  53. package/esm2022/lib/service/logger/logger-console.service.mjs +73 -0
  54. package/esm2022/lib/service/logger/logger.interface.mjs +2 -0
  55. package/esm2022/lib/service/logger/logger.mjs +27 -0
  56. package/esm2022/lib/service/notification/notification.service.mjs +131 -0
  57. package/esm2022/lib/service/object-config/object-config.interface.mjs +2 -0
  58. package/esm2022/lib/service/object-config/object-config.service.mjs +229 -0
  59. package/esm2022/lib/service/pending-changes/pending-changes-component.interface.mjs +5 -0
  60. package/esm2022/lib/service/pending-changes/pending-changes-guard.service.mjs +25 -0
  61. package/esm2022/lib/service/pending-changes/pending-changes.service.mjs +123 -0
  62. package/esm2022/lib/service/prediction/prediction.interface.mjs +2 -0
  63. package/esm2022/lib/service/prediction/prediction.service.mjs +60 -0
  64. package/esm2022/lib/service/search/search.service.interface.mjs +39 -0
  65. package/esm2022/lib/service/search/search.service.mjs +178 -0
  66. package/esm2022/lib/service/session-storage/session-storage.service.mjs +50 -0
  67. package/esm2022/lib/service/system/object-form.interface.mjs +2 -0
  68. package/esm2022/lib/service/system/system.enum.mjs +179 -0
  69. package/esm2022/lib/service/system/system.interface.mjs +2 -0
  70. package/esm2022/lib/service/system/system.service.mjs +597 -0
  71. package/esm2022/lib/service/upload/upload.interface.mjs +2 -0
  72. package/esm2022/lib/service/upload/upload.service.mjs +228 -0
  73. package/esm2022/lib/service/user/user.service.mjs +211 -0
  74. package/esm2022/lib/util/utils.helper.enum.mjs +15 -0
  75. package/esm2022/lib/util/utils.mjs +373 -0
  76. package/esm2022/yuuvis-client-core.mjs +5 -0
  77. package/fesm2022/yuuvis-client-core.mjs +4775 -0
  78. package/fesm2022/yuuvis-client-core.mjs.map +1 -0
  79. package/index.d.ts +61 -0
  80. package/lib/client-core.module.d.ts +20 -0
  81. package/lib/client-core.shared.module.d.ts +10 -0
  82. package/lib/common/pipes/filesize.pipe.d.ts +18 -0
  83. package/lib/common/pipes/index.d.ts +5 -0
  84. package/lib/common/pipes/keys.pipe.d.ts +10 -0
  85. package/lib/common/pipes/locale-date.pipe.d.ts +12 -0
  86. package/lib/common/pipes/locale-number.pipe.d.ts +47 -0
  87. package/lib/common/pipes/safe-html.pipe.d.ts +28 -0
  88. package/lib/common/services/native-notifications.d.ts +8 -0
  89. package/lib/common/services/native-notifications.interface.d.ts +5 -0
  90. package/lib/model/dms-object.interface.d.ts +16 -0
  91. package/lib/model/dms-object.model.d.ts +26 -0
  92. package/lib/model/object-flavor.interface.d.ts +30 -0
  93. package/lib/model/range-value.interface.d.ts +9 -0
  94. package/lib/model/yuv-error.model.d.ts +18 -0
  95. package/lib/model/yuv-user.model.d.ts +44 -0
  96. package/lib/service/audit/audit.interface.d.ts +47 -0
  97. package/lib/service/audit/audit.service.d.ts +35 -0
  98. package/lib/service/auth/auth.interceptor.d.ts +12 -0
  99. package/lib/service/auth/auth.interface.d.ts +34 -0
  100. package/lib/service/auth/auth.service.d.ts +50 -0
  101. package/lib/service/auth/oidc.service.d.ts +16 -0
  102. package/lib/service/backend/api.enum.d.ts +7 -0
  103. package/lib/service/backend/backend.interface.d.ts +29 -0
  104. package/lib/service/backend/backend.service.d.ts +118 -0
  105. package/lib/service/bpm/bpm.interface.d.ts +86 -0
  106. package/lib/service/bpm/bpm.service.d.ts +19 -0
  107. package/lib/service/cache/app-cache.service.d.ts +18 -0
  108. package/lib/service/catalog/catalog.interface.d.ts +12 -0
  109. package/lib/service/catalog/catalog.service.d.ts +5 -0
  110. package/lib/service/clipboard/clipboard.interface.d.ts +11 -0
  111. package/lib/service/clipboard/clipboard.service.d.ts +23 -0
  112. package/lib/service/config/config.interface.d.ts +34 -0
  113. package/lib/service/config/config.service.d.ts +45 -0
  114. package/lib/service/config/core-config.d.ts +14 -0
  115. package/lib/service/config/core-config.tokens.d.ts +7 -0
  116. package/lib/service/connection/connection.service.d.ts +25 -0
  117. package/lib/service/connection/offline.interceptor.d.ts +15 -0
  118. package/lib/service/core-init/core-init.service.d.ts +11 -0
  119. package/lib/service/core-init/missing-translation-handler.d.ts +8 -0
  120. package/lib/service/core-init/translate-json-loader.d.ts +20 -0
  121. package/lib/service/device/device.interface.d.ts +15 -0
  122. package/lib/service/device/device.service.d.ts +54 -0
  123. package/lib/service/dms/dms.service.d.ts +153 -0
  124. package/lib/service/dms/dms.service.interface.d.ts +59 -0
  125. package/lib/service/event/event.interface.d.ts +13 -0
  126. package/lib/service/event/event.service.d.ts +23 -0
  127. package/lib/service/event/events.d.ts +12 -0
  128. package/lib/service/idm/idm.interface.d.ts +5 -0
  129. package/lib/service/idm/idm.service.d.ts +9 -0
  130. package/lib/service/logger/logger-console.service.d.ts +20 -0
  131. package/lib/service/logger/logger.d.ts +17 -0
  132. package/lib/service/logger/logger.interface.d.ts +10 -0
  133. package/lib/service/notification/notification.service.d.ts +71 -0
  134. package/lib/service/object-config/object-config.interface.d.ts +62 -0
  135. package/lib/service/object-config/object-config.service.d.ts +38 -0
  136. package/lib/service/pending-changes/pending-changes-component.interface.d.ts +6 -0
  137. package/lib/service/pending-changes/pending-changes-guard.service.d.ts +14 -0
  138. package/lib/service/pending-changes/pending-changes.service.d.ts +57 -0
  139. package/lib/service/prediction/prediction.interface.d.ts +18 -0
  140. package/lib/service/prediction/prediction.service.d.ts +15 -0
  141. package/lib/service/search/search.service.d.ts +46 -0
  142. package/lib/service/search/search.service.interface.d.ts +119 -0
  143. package/lib/service/session-storage/session-storage.service.d.ts +15 -0
  144. package/lib/service/system/object-form.interface.d.ts +46 -0
  145. package/lib/service/system/system.enum.d.ts +141 -0
  146. package/lib/service/system/system.interface.d.ts +146 -0
  147. package/lib/service/system/system.service.d.ts +168 -0
  148. package/lib/service/upload/upload.interface.d.ts +55 -0
  149. package/lib/service/upload/upload.service.d.ts +34 -0
  150. package/lib/service/user/user.service.d.ts +69 -0
  151. package/lib/util/utils.d.ts +118 -0
  152. package/lib/util/utils.helper.enum.d.ts +13 -0
  153. package/package.json +33 -0
@@ -0,0 +1,144 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { DeviceDetectorService } from 'ngx-device-detector';
3
+ import { debounceTime, fromEvent, ReplaySubject } from 'rxjs';
4
+ import { DeviceScreenOrientation } from './device.interface';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * This service is used to adapt styles and designs of the client to
8
+ * different devices and screen sizes.
9
+ *
10
+ * Using `screenChange$` observable you are able to monitor changes to
11
+ * the screen size and act upon it.
12
+ *
13
+ * This service will also adds attributes to the body tag that reflect the
14
+ * current screen/device state. This way you can apply secific styles in your
15
+ * css files for different screen resolutions and orientations.
16
+ *
17
+ * Attributes applied to the body tag are:
18
+ *
19
+ * - `data-screen` - [s, m, l, xl] - for different screen sizes
20
+ * (s: for mobile phone like screen sizes, m: for tablet like screen
21
+ * sizes, 'l': for desktop like screen sizes, 'xl': for screen sizes exceeding
22
+ * the desktop screen size).
23
+ *
24
+ * - `data-orientation` - [portrait, landscape] - for the current screen orientation
25
+ *
26
+ * - `data-touch-enabled` - [true] - if the device has touch capabilities (won't be added if the device doesn't have touch capabilities)
27
+ *
28
+ * ```html
29
+ * <body data-screen-size="s" data-screen-orientation="portrait" data-touch-enabled="true">
30
+ * ...
31
+ * </body>
32
+ * ```
33
+ */
34
+ export class DeviceService {
35
+ #deviceDetectorService;
36
+ #upperScreenBoundary;
37
+ #resize$;
38
+ #screen;
39
+ #screenSource;
40
+ constructor() {
41
+ this.#deviceDetectorService = inject(DeviceDetectorService);
42
+ this.#upperScreenBoundary = {
43
+ small: 600,
44
+ mediumPortrait: 900,
45
+ mediumLandscape: 1200,
46
+ large: 1800
47
+ };
48
+ this.#resize$ = fromEvent(window, 'resize').pipe(debounceTime(this.#getDebounceTime()));
49
+ this.#screenSource = new ReplaySubject(1);
50
+ this.screenChange$ = this.#screenSource.asObservable();
51
+ /**
52
+ * if the device is a mobile device (android / iPhone / windows-phone etc)
53
+ */
54
+ this.isMobile = this.#deviceDetectorService.isMobile();
55
+ /**
56
+ * if the device us a tablet (iPad etc)
57
+ */
58
+ this.isTablet = this.#deviceDetectorService.isTablet();
59
+ /**
60
+ * if the app is running on a Desktop browser
61
+ */
62
+ this.isDesktop = this.#deviceDetectorService.isDesktop();
63
+ this.info = this.#deviceDetectorService.getDeviceInfo();
64
+ this.isTouchEnabled = this.#isTouchEnabled();
65
+ this.#resize$.subscribe((e) => {
66
+ this.#setScreen();
67
+ });
68
+ }
69
+ init() {
70
+ this.#setScreen();
71
+ }
72
+ #isTouchEnabled() {
73
+ return 'ontouchstart' in window || navigator.maxTouchPoints > 0;
74
+ }
75
+ #setScreen() {
76
+ const bounds = {
77
+ width: window.innerWidth,
78
+ height: window.innerHeight
79
+ };
80
+ let orientation = bounds.width >= bounds.height ? DeviceScreenOrientation.LANDSCAPE : DeviceScreenOrientation.PORTRAIT;
81
+ if (this.isMobile && window.screen['orientation']) {
82
+ const screenOrientation = window.screen['orientation'].type;
83
+ if (screenOrientation === 'landscape-primary' || screenOrientation === 'landscape-secondary') {
84
+ orientation = DeviceScreenOrientation.LANDSCAPE;
85
+ }
86
+ else if (screenOrientation === 'portrait-primary' || screenOrientation === 'portrait-secondary') {
87
+ orientation = DeviceScreenOrientation.PORTRAIT;
88
+ }
89
+ }
90
+ this.#screen = {
91
+ size: this.#getScreenSize(bounds, orientation),
92
+ orientation,
93
+ width: bounds.width,
94
+ height: bounds.height
95
+ };
96
+ this.#screenSource.next(this.#screen);
97
+ this.#setupDOM(this.#screen);
98
+ // force change detection because resize will not be recognized by Angular in some cases
99
+ // TODO: check: causes recursive ticks in some cases ...
100
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
101
+ setTimeout(() => { }, 0);
102
+ }
103
+ #setupDOM(screen) {
104
+ const body = document.querySelector('body');
105
+ body.setAttribute('data-screen-size', screen.size);
106
+ body.setAttribute('data-screen-orientation', screen.orientation);
107
+ if (this.isTouchEnabled)
108
+ body.setAttribute('data-touch-enabled', 'true');
109
+ else
110
+ body.removeAttribute('data-touch-enabled');
111
+ }
112
+ #getScreenSize(bounds, orientation) {
113
+ if (this.#isBelow(this.#upperScreenBoundary.small, bounds)) {
114
+ return 's';
115
+ }
116
+ else if (this.#isBelow(orientation === 'landscape' ? this.#upperScreenBoundary.mediumLandscape : this.#upperScreenBoundary.mediumPortrait, bounds)) {
117
+ return 'm';
118
+ }
119
+ else if (this.#isBelow(this.#upperScreenBoundary.large, bounds)) {
120
+ return 'l';
121
+ }
122
+ else {
123
+ return 'xl';
124
+ }
125
+ }
126
+ #isBelow(size, bounds) {
127
+ const landscape = bounds.width < this.#upperScreenBoundary.large ? bounds.width >= bounds.height : false;
128
+ return (landscape && bounds.height < size) || (!landscape && bounds.width < size);
129
+ }
130
+ #getDebounceTime() {
131
+ // on mobile devices resize only happens when rotating the device or when
132
+ // keyboard appears, so we dont't need to debounce
133
+ return this.isMobile ? 0 : 500;
134
+ }
135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
136
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, providedIn: 'root' }); }
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DeviceService, decorators: [{
139
+ type: Injectable,
140
+ args: [{
141
+ providedIn: 'root'
142
+ }]
143
+ }], ctorParameters: () => [] });
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtY29yZS9zcmMvbGliL3NlcnZpY2UvZGV2aWNlL2RldmljZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxxQkFBcUIsRUFBYyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQW9DLHVCQUF1QixFQUFjLE1BQU0sb0JBQW9CLENBQUM7O0FBQzNHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFJSCxNQUFNLE9BQU8sYUFBYTtJQUN4QixzQkFBc0IsQ0FBaUM7SUFFdkQsb0JBQW9CLENBS2xCO0lBRUYsUUFBUSxDQUEyRTtJQUNuRixPQUFPLENBQWdCO0lBQ3ZCLGFBQWEsQ0FBc0M7SUFrQm5EO1FBN0JBLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXZELHlCQUFvQixHQUFHO1lBQ3JCLEtBQUssRUFBRSxHQUFHO1lBQ1YsY0FBYyxFQUFFLEdBQUc7WUFDbkIsZUFBZSxFQUFFLElBQUk7WUFDckIsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDO1FBRUYsYUFBUSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFbkYsa0JBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBZSxDQUFDLENBQUMsQ0FBQztRQUNuRCxrQkFBYSxHQUE2QixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTVFOztXQUVHO1FBQ0gsYUFBUSxHQUFZLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMzRDs7V0FFRztRQUNILGFBQVEsR0FBWSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0Q7O1dBRUc7UUFDSCxjQUFTLEdBQVksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdELFNBQUksR0FBZ0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hFLG1CQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBR3RDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBUSxFQUFFLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLGNBQWMsSUFBSSxNQUFNLElBQUksU0FBUyxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFVBQVU7UUFDUixNQUFNLE1BQU0sR0FBdUI7WUFDakMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQ3hCLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVztTQUMzQixDQUFDO1FBQ0YsSUFBSSxXQUFXLEdBQTRCLE1BQU0sQ0FBQyxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUM7UUFFaEosSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNsRCxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzVELElBQUksaUJBQWlCLEtBQUssbUJBQW1CLElBQUksaUJBQWlCLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztnQkFDN0YsV0FBVyxHQUFHLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztZQUNsRCxDQUFDO2lCQUFNLElBQUksaUJBQWlCLEtBQUssa0JBQWtCLElBQUksaUJBQWlCLEtBQUssb0JBQW9CLEVBQUUsQ0FBQztnQkFDbEcsV0FBVyxHQUFHLHVCQUF1QixDQUFDLFFBQVEsQ0FBQztZQUNqRCxDQUFDO1FBQ0gsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsV0FBVyxDQUFDO1lBQzlDLFdBQVc7WUFDWCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNO1NBQ3RCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0Isd0ZBQXdGO1FBQ3hGLHdEQUF3RDtRQUV4RCxnRUFBZ0U7UUFDaEUsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUxQixDQUFDO0lBRUQsU0FBUyxDQUFDLE1BQW9CO1FBQzVCLE1BQU0sSUFBSSxHQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBb0IsQ0FBQztRQUNoRixJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixFQUFFLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNqRSxJQUFJLElBQUksQ0FBQyxjQUFjO1lBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsRUFBRSxNQUFNLENBQUMsQ0FBQzs7WUFDcEUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxjQUFjLENBQUMsTUFBMEIsRUFBRSxXQUFvQztRQUM3RSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sR0FBRyxDQUFDO1FBQ2IsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDckosT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNsRSxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZLEVBQUUsTUFBMEI7UUFDL0MsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUN6RyxPQUFPLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCx5RUFBeUU7UUFDekUsa0RBQWtEO1FBQ2xELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDakMsQ0FBQzsrR0F4R1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERldmljZURldGVjdG9yU2VydmljZSwgRGV2aWNlSW5mbyB9IGZyb20gJ25neC1kZXZpY2UtZGV0ZWN0b3InO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmcm9tRXZlbnQsIE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERldmljZVNjcmVlbiwgRGV2aWNlU2NyZWVuQm91bmRzLCBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbiwgU2NyZWVuU2l6ZSB9IGZyb20gJy4vZGV2aWNlLmludGVyZmFjZSc7XG4vKipcbiAqIFRoaXMgc2VydmljZSBpcyB1c2VkIHRvIGFkYXB0IHN0eWxlcyBhbmQgZGVzaWducyBvZiB0aGUgY2xpZW50IHRvIFxuICogZGlmZmVyZW50IGRldmljZXMgYW5kIHNjcmVlbiBzaXplcy5cbiAqIFxuICogVXNpbmcgYHNjcmVlbkNoYW5nZSRgIG9ic2VydmFibGUgeW91IGFyZSBhYmxlIHRvIG1vbml0b3IgY2hhbmdlcyB0byBcbiAqIHRoZSBzY3JlZW4gc2l6ZSBhbmQgYWN0IHVwb24gaXQuXG4gKlxuICogVGhpcyBzZXJ2aWNlIHdpbGwgYWxzbyBhZGRzIGF0dHJpYnV0ZXMgdG8gdGhlIGJvZHkgdGFnIHRoYXQgcmVmbGVjdCB0aGUgXG4gKiBjdXJyZW50IHNjcmVlbi9kZXZpY2Ugc3RhdGUuIFRoaXMgd2F5IHlvdSBjYW4gYXBwbHkgc2VjaWZpYyBzdHlsZXMgaW4geW91ciBcbiAqIGNzcyBmaWxlcyBmb3IgZGlmZmVyZW50IHNjcmVlbiByZXNvbHV0aW9ucyBhbmQgb3JpZW50YXRpb25zLlxuICpcbiAqIEF0dHJpYnV0ZXMgYXBwbGllZCB0byB0aGUgYm9keSB0YWcgYXJlOlxuICpcbiAqIC0gYGRhdGEtc2NyZWVuYCAtIFtzLCBtLCBsLCB4bF0gLSBmb3IgZGlmZmVyZW50IHNjcmVlbiBzaXplcyBcbiAqIChzOiBmb3IgbW9iaWxlIHBob25lIGxpa2Ugc2NyZWVuIHNpemVzLCBtOiBmb3IgdGFibGV0IGxpa2Ugc2NyZWVuIFxuICogc2l6ZXMsICdsJzogZm9yIGRlc2t0b3AgbGlrZSBzY3JlZW4gc2l6ZXMsICd4bCc6IGZvciBzY3JlZW4gc2l6ZXMgZXhjZWVkaW5nIFxuICogdGhlIGRlc2t0b3Agc2NyZWVuIHNpemUpLiBcbiAqXG4gKiAtIGBkYXRhLW9yaWVudGF0aW9uYCAtIFtwb3J0cmFpdCwgbGFuZHNjYXBlXSAtIGZvciB0aGUgY3VycmVudCBzY3JlZW4gb3JpZW50YXRpb25cbiAqIFxuICogLSBgZGF0YS10b3VjaC1lbmFibGVkYCAtIFt0cnVlXSAtIGlmIHRoZSBkZXZpY2UgaGFzIHRvdWNoIGNhcGFiaWxpdGllcyAod29uJ3QgYmUgYWRkZWQgaWYgdGhlIGRldmljZSBkb2Vzbid0IGhhdmUgdG91Y2ggY2FwYWJpbGl0aWVzKSAgXG4gKiBcbiAqIGBgYGh0bWxcbiAqIDxib2R5IGRhdGEtc2NyZWVuLXNpemU9XCJzXCIgZGF0YS1zY3JlZW4tb3JpZW50YXRpb249XCJwb3J0cmFpdFwiIGRhdGEtdG91Y2gtZW5hYmxlZD1cInRydWVcIj5cbiAqIC4uLlxuICogPC9ib2R5PlxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIERldmljZVNlcnZpY2Uge1xuICAjZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlID0gaW5qZWN0KERldmljZURldGVjdG9yU2VydmljZSk7XG5cbiAgI3VwcGVyU2NyZWVuQm91bmRhcnkgPSB7XG4gICAgc21hbGw6IDYwMCxcbiAgICBtZWRpdW1Qb3J0cmFpdDogOTAwLFxuICAgIG1lZGl1bUxhbmRzY2FwZTogMTIwMCxcbiAgICBsYXJnZTogMTgwMFxuICB9O1xuXG4gICNyZXNpemUkID0gZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpLnBpcGUoZGVib3VuY2VUaW1lKHRoaXMuI2dldERlYm91bmNlVGltZSgpKSk7XG4gICNzY3JlZW4/OiBEZXZpY2VTY3JlZW47XG4gICNzY3JlZW5Tb3VyY2UgPSBuZXcgUmVwbGF5U3ViamVjdDxEZXZpY2VTY3JlZW4+KDEpO1xuICBzY3JlZW5DaGFuZ2UkOiBPYnNlcnZhYmxlPERldmljZVNjcmVlbj4gPSB0aGlzLiNzY3JlZW5Tb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgLyoqXG4gICAqIGlmIHRoZSBkZXZpY2UgaXMgYSBtb2JpbGUgZGV2aWNlIChhbmRyb2lkIC8gaVBob25lIC8gd2luZG93cy1waG9uZSBldGMpXG4gICAqL1xuICBpc01vYmlsZTogYm9vbGVhbiA9IHRoaXMuI2RldmljZURldGVjdG9yU2VydmljZS5pc01vYmlsZSgpO1xuICAvKipcbiAgICogIGlmIHRoZSBkZXZpY2UgdXMgYSB0YWJsZXQgKGlQYWQgZXRjKVxuICAgKi9cbiAgaXNUYWJsZXQ6IGJvb2xlYW4gPSB0aGlzLiNkZXZpY2VEZXRlY3RvclNlcnZpY2UuaXNUYWJsZXQoKTtcbiAgLyoqXG4gICAqIGlmIHRoZSBhcHAgaXMgcnVubmluZyBvbiBhIERlc2t0b3AgYnJvd3NlclxuICAgKi9cbiAgaXNEZXNrdG9wOiBib29sZWFuID0gdGhpcy4jZGV2aWNlRGV0ZWN0b3JTZXJ2aWNlLmlzRGVza3RvcCgpO1xuICBpbmZvPzogRGV2aWNlSW5mbyA9IHRoaXMuI2RldmljZURldGVjdG9yU2VydmljZS5nZXREZXZpY2VJbmZvKCk7XG4gIGlzVG91Y2hFbmFibGVkID0gdGhpcy4jaXNUb3VjaEVuYWJsZWQoKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLiNyZXNpemUkLnN1YnNjcmliZSgoZTogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMuI3NldFNjcmVlbigpO1xuICAgIH0pO1xuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLiNzZXRTY3JlZW4oKTtcbiAgfVxuXG4gICNpc1RvdWNoRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gJ29udG91Y2hzdGFydCcgaW4gd2luZG93IHx8IG5hdmlnYXRvci5tYXhUb3VjaFBvaW50cyA+IDA7XG4gIH1cblxuICAjc2V0U2NyZWVuKCk6IHZvaWQge1xuICAgIGNvbnN0IGJvdW5kczogRGV2aWNlU2NyZWVuQm91bmRzID0ge1xuICAgICAgd2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICB9O1xuICAgIGxldCBvcmllbnRhdGlvbjogRGV2aWNlU2NyZWVuT3JpZW50YXRpb24gPSBib3VuZHMud2lkdGggPj0gYm91bmRzLmhlaWdodCA/IERldmljZVNjcmVlbk9yaWVudGF0aW9uLkxBTkRTQ0FQRSA6IERldmljZVNjcmVlbk9yaWVudGF0aW9uLlBPUlRSQUlUO1xuXG4gICAgaWYgKHRoaXMuaXNNb2JpbGUgJiYgd2luZG93LnNjcmVlblsnb3JpZW50YXRpb24nXSkge1xuICAgICAgY29uc3Qgc2NyZWVuT3JpZW50YXRpb24gPSB3aW5kb3cuc2NyZWVuWydvcmllbnRhdGlvbiddLnR5cGU7XG4gICAgICBpZiAoc2NyZWVuT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUtcHJpbWFyeScgfHwgc2NyZWVuT3JpZW50YXRpb24gPT09ICdsYW5kc2NhcGUtc2Vjb25kYXJ5Jykge1xuICAgICAgICBvcmllbnRhdGlvbiA9IERldmljZVNjcmVlbk9yaWVudGF0aW9uLkxBTkRTQ0FQRTtcbiAgICAgIH0gZWxzZSBpZiAoc2NyZWVuT3JpZW50YXRpb24gPT09ICdwb3J0cmFpdC1wcmltYXJ5JyB8fCBzY3JlZW5PcmllbnRhdGlvbiA9PT0gJ3BvcnRyYWl0LXNlY29uZGFyeScpIHtcbiAgICAgICAgb3JpZW50YXRpb24gPSBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbi5QT1JUUkFJVDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy4jc2NyZWVuID0ge1xuICAgICAgc2l6ZTogdGhpcy4jZ2V0U2NyZWVuU2l6ZShib3VuZHMsIG9yaWVudGF0aW9uKSxcbiAgICAgIG9yaWVudGF0aW9uLFxuICAgICAgd2lkdGg6IGJvdW5kcy53aWR0aCxcbiAgICAgIGhlaWdodDogYm91bmRzLmhlaWdodFxuICAgIH07XG4gICAgdGhpcy4jc2NyZWVuU291cmNlLm5leHQodGhpcy4jc2NyZWVuKTtcbiAgICB0aGlzLiNzZXR1cERPTSh0aGlzLiNzY3JlZW4pO1xuICAgIC8vIGZvcmNlIGNoYW5nZSBkZXRlY3Rpb24gYmVjYXVzZSByZXNpemUgd2lsbCBub3QgYmUgcmVjb2duaXplZCBieSBBbmd1bGFyIGluIHNvbWUgY2FzZXNcbiAgICAvLyBUT0RPOiBjaGVjazogY2F1c2VzIHJlY3Vyc2l2ZSB0aWNrcyBpbiBzb21lIGNhc2VzIC4uLlxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge30sIDApO1xuXG4gIH1cblxuICAjc2V0dXBET00oc2NyZWVuOiBEZXZpY2VTY3JlZW4pIHtcbiAgICBjb25zdCBib2R5OiBIVE1MQm9keUVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykgYXMgSFRNTEJvZHlFbGVtZW50O1xuICAgIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1zaXplJywgc2NyZWVuLnNpemUpO1xuICAgIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXNjcmVlbi1vcmllbnRhdGlvbicsIHNjcmVlbi5vcmllbnRhdGlvbik7XG4gICAgaWYgKHRoaXMuaXNUb3VjaEVuYWJsZWQpIGJvZHkuc2V0QXR0cmlidXRlKCdkYXRhLXRvdWNoLWVuYWJsZWQnLCAndHJ1ZScpO1xuICAgIGVsc2UgYm9keS5yZW1vdmVBdHRyaWJ1dGUoJ2RhdGEtdG91Y2gtZW5hYmxlZCcpO1xuICB9XG5cbiAgI2dldFNjcmVlblNpemUoYm91bmRzOiBEZXZpY2VTY3JlZW5Cb3VuZHMsIG9yaWVudGF0aW9uOiBEZXZpY2VTY3JlZW5PcmllbnRhdGlvbik6IFNjcmVlblNpemUge1xuICAgIGlmICh0aGlzLiNpc0JlbG93KHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkuc21hbGwsIGJvdW5kcykpIHtcbiAgICAgIHJldHVybiAncyc7XG4gICAgfSBlbHNlIGlmICh0aGlzLiNpc0JlbG93KG9yaWVudGF0aW9uID09PSAnbGFuZHNjYXBlJyA/IHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkubWVkaXVtTGFuZHNjYXBlIDogdGhpcy4jdXBwZXJTY3JlZW5Cb3VuZGFyeS5tZWRpdW1Qb3J0cmFpdCwgYm91bmRzKSkge1xuICAgICAgcmV0dXJuICdtJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuI2lzQmVsb3codGhpcy4jdXBwZXJTY3JlZW5Cb3VuZGFyeS5sYXJnZSwgYm91bmRzKSkge1xuICAgICAgcmV0dXJuICdsJztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICd4bCc7XG4gICAgfVxuICB9XG5cbiAgI2lzQmVsb3coc2l6ZTogbnVtYmVyLCBib3VuZHM6IERldmljZVNjcmVlbkJvdW5kcyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxhbmRzY2FwZSA9IGJvdW5kcy53aWR0aCA8IHRoaXMuI3VwcGVyU2NyZWVuQm91bmRhcnkubGFyZ2UgPyBib3VuZHMud2lkdGggPj0gYm91bmRzLmhlaWdodCA6IGZhbHNlO1xuICAgIHJldHVybiAobGFuZHNjYXBlICYmIGJvdW5kcy5oZWlnaHQgPCBzaXplKSB8fCAoIWxhbmRzY2FwZSAmJiBib3VuZHMud2lkdGggPCBzaXplKTtcbiAgfVxuXG4gICNnZXREZWJvdW5jZVRpbWUoKSB7XG4gICAgLy8gb24gbW9iaWxlIGRldmljZXMgcmVzaXplIG9ubHkgaGFwcGVucyB3aGVuIHJvdGF0aW5nIHRoZSBkZXZpY2Ugb3Igd2hlblxuICAgIC8vIGtleWJvYXJkIGFwcGVhcnMsIHNvIHdlIGRvbnQndCBuZWVkIHRvIGRlYm91bmNlXG4gICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgPyAwIDogNTAwO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG1zLnNlcnZpY2UuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LWNvcmUvc3JjL2xpYi9zZXJ2aWNlL2Rtcy9kbXMuc2VydmljZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0RGVsZXRlT3B0aW9ucyB7XG4gIC8vIHdoZXRoZXIgdG8gZW1pdCB0aGUgcmVzdWx0IG9mIHRoZSBkZWxldGUgb3BlcmF0aW9uIGludG8gdGhlIGFwcC4gSWYgc2V0IHRvIHRydWUsXG4gIC8vIHRoZSByZXN1bHQgd2lsbCBub3QgYmUgZW1pdHRlZCB2aWEgdGhlIGBvYmplY3REZWxldGVkYCBldmVudFxuICBzaWxlbnQ/OiBib29sZWFuO1xuICAvLyB3aGV0ZXIgdG8gd2FpdCBmb3IgdGhlIHNlYXJjaCBpbmRleCB0byBiZSBjb25zaXN0ZW50IGFmdGVyIHRoZSBkZWxldGUgb3BlcmF0aW9uXG4gIHdhaXRGb3JTZWFyY2hDb25zaXN0ZW5jeT86IGJvb2xlYW47XG4gIC8vIHdoZXRoZXIgdGhlIHdob2xlIGRlbGV0ZSBvcGVyYXRpb24gc2hvdWxkIGZhaWwgaWYgb25lIG9mIHRoZSBvYmplY3RzIGNvdWxkIG5vdCBiZSBkZWxldGVkXG4gIGdyZWVkeT86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIE9iamVjdERlbGV0ZVJlc3VsdCB7XG4gIC8vIElEIG9mIHRoZSBvYmplY3Qgc3VwcG9zZWQgdG8gYmUgZGVsZXRlZFxuICBpZDogc3RyaW5nO1xuICAvLyBwcm9wZXJ0aWVzIG9mIHRoZSBvYmplY3Qgc3VwcG9zZWQgdG8gYmUgZGVsZXRlZFxuICBwcm9wZXJ0aWVzPzogeyBba2V5OiBzdHJpbmddOiB7IHZhbHVlOiBhbnkgfSB9O1xuICAvLyBlcnJvciB0aGF0IG9jY3VyZWQgZHVyaW5nIHRoZSBkZWxldGUgb3BlcmF0aW9uXG4gIF9lcnJvcj86IE9iamVjdERlbGV0ZUVycm9yO1xufVxuZXhwb3J0IGludGVyZmFjZSBPYmplY3REZWxldGVFcnJvciB7XG4gIHN0YXR1czogbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0TW92ZU9wdGlvbnMge1xuICAvLyBJZiB0cnVlLCB0aGUgb2JzZXJ2YWJsZSB3aWxsIHJlc29sdmUgYWZ0ZXIgdGhlIHNlYXJjaCBpbmRleCBpcyB1cGRhdGVkIGFzIHdlbGxcbiAgd2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PzogYm9vbGVhbjtcbiAgc2lsZW50PzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgT2JqZWN0Q29weU9wdGlvbnMge1xuICAvLyBJZiB0cnVlLCB0aGUgb2JzZXJ2YWJsZSB3aWxsIHJlc29sdmUgYWZ0ZXIgdGhlIHNlYXJjaCBpbmRleCBpcyB1cGRhdGVkIGFzIHdlbGxcbiAgd2FpdEZvclNlYXJjaENvbnNpc3RlbmN5PzogYm9vbGVhbjtcbn1cblxuLy8gaW50ZXJmYWNlcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBDb3JlLUFQSVxuZXhwb3J0IGludGVyZmFjZSBDb3JlQXBpT2JqZWN0IHtcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PjtcbiAgY29udGVudFN0cmVhbXM/OiBQYXJ0aWFsPENvbnRlbnRTdHJlYW0+W107XG59XG5leHBvcnQgaW50ZXJmYWNlIENvcmVBcGlPYmplY3RQcm9wZXJ0eSB7XG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRTdHJlYW0ge1xuICBjb250ZW50U3RyZWFtSWQ6IHN0cmluZztcbiAgcmVwb3NpdG9yeUlkOiBzdHJpbmc7XG4gIGRpZ2VzdDogc3RyaW5nO1xuICBmaWxlTmFtZTogc3RyaW5nO1xuICBzaXplOiBudW1iZXI7XG4gIGFyY2hpdmVQYXRoPzogc3RyaW5nO1xuICByYW5nZT86IHN0cmluZztcbiAgbWltZVR5cGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3JlQXBpQmF0Y2hSZXNwb25zZSB7XG4gIGhhc01vcmVJdGVtczogYm9vbGVhbjtcbiAgbnVtSXRlbXM6IG51bWJlcjtcbiAgb2JqZWN0czogQ29yZUFwaVJlc3BvbnNlW107XG4gIHRvdGFsTnVtSXRlbXM6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUFwaVJlc3BvbnNlIHtcbiAgcHJvcGVydGllczogUmVjb3JkPHN0cmluZywgQ29yZUFwaU9iamVjdFByb3BlcnR5PjtcbiAgY29udGVudFN0cmVhbXM/OiBDb250ZW50U3RyZWFtW107XG4gIG9wdGlvbnM6IHtcbiAgICAnc3lzdGVtOnJlc3BvbnNlJzoge1xuICAgICAgaHR0cFN0YXR1c0NvZGU6IG51bWJlcjtcbiAgICAgIHNlcnZpY2VFcnJvckNvZGU/OiBudW1iZXI7XG4gICAgICBtZXNzYWdlOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==