@acorex/core 7.22.0 → 7.23.0

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/{dateTime → date-time}/README.md +2 -2
  2. package/{dateTime → date-time}/lib/datetime.class.d.ts +1 -0
  3. package/{dateTime → date-time}/lib/formatters/datetime-formatter.d.ts +1 -1
  4. package/{dateTime → date-time}/lib/formatters/timeleft-formatter.d.ts +1 -1
  5. package/esm2022/acorex-core.mjs +1 -1
  6. package/esm2022/config/lib/configs.mjs +1 -1
  7. package/esm2022/config/lib/configs.service.mjs +3 -3
  8. package/esm2022/date-time/acorex-core-date-time.mjs +5 -0
  9. package/esm2022/date-time/index.mjs +11 -0
  10. package/esm2022/date-time/lib/calendar.service.mjs +100 -0
  11. package/esm2022/date-time/lib/dateTime.config.mjs +50 -0
  12. package/esm2022/date-time/lib/datetime.class.mjs +337 -0
  13. package/esm2022/date-time/lib/datetime.module.mjs +27 -0
  14. package/esm2022/date-time/lib/datetime.pipe.mjs +29 -0
  15. package/esm2022/date-time/lib/formatters/datetime-formatter.mjs +32 -0
  16. package/esm2022/date-time/lib/formatters/timeleft-formatter.mjs +91 -0
  17. package/esm2022/date-time/lib/georgian.calendar.mjs +203 -0
  18. package/esm2022/date-time/lib/holidays.loader.mjs +13 -0
  19. package/esm2022/date-time/lib/jalali.calendar.mjs +440 -0
  20. package/esm2022/events/lib/event.service.mjs +4 -4
  21. package/esm2022/events/lib/event.type.mjs +1 -1
  22. package/esm2022/file/lib/file-download-ref.class.mjs +1 -1
  23. package/esm2022/file/lib/file-size-formatter.mjs +4 -4
  24. package/esm2022/file/lib/file-upload-ref.class.mjs +1 -1
  25. package/esm2022/file/lib/file.module.mjs +6 -6
  26. package/esm2022/file/lib/file.service.mjs +5 -5
  27. package/esm2022/format/lib/format.config.mjs +1 -1
  28. package/esm2022/format/lib/format.module.mjs +13 -16
  29. package/esm2022/format/lib/format.pipe.mjs +10 -6
  30. package/esm2022/format/lib/format.service.mjs +19 -16
  31. package/esm2022/format/lib/format.types.mjs +1 -1
  32. package/esm2022/format/lib/formatters/number-formatter.mjs +6 -7
  33. package/esm2022/format/lib/formatters/string-formatter.mjs +1 -1
  34. package/esm2022/image/lib/image.service.mjs +4 -4
  35. package/esm2022/index.mjs +2 -2
  36. package/esm2022/lib/core.component.mjs +12 -0
  37. package/esm2022/memorize/lib/memorize.decorator.mjs +1 -1
  38. package/esm2022/pipes/lib/safe/safe.pipe.mjs +4 -4
  39. package/esm2022/platform/lib/platform.service.mjs +47 -42
  40. package/esm2022/storage/cookie-storage.service.mjs +15 -8
  41. package/esm2022/storage/local-storage.service.mjs +46 -10
  42. package/esm2022/storage/session-storage.service.mjs +3 -3
  43. package/esm2022/translation/lib/translation-scope.resolver.mjs +4 -4
  44. package/esm2022/translation/lib/translation.config.mjs +2 -2
  45. package/esm2022/translation/lib/translation.loader.mjs +3 -3
  46. package/esm2022/translation/lib/translation.module.mjs +10 -10
  47. package/esm2022/translation/lib/translation.service.mjs +19 -11
  48. package/esm2022/translation/lib/translation.types.mjs +1 -1
  49. package/esm2022/translation/lib/translator.directive.mjs +5 -5
  50. package/esm2022/translation/lib/translator.pipe.mjs +4 -4
  51. package/esm2022/utils/lib/auto-unsubscribe.mjs +4 -4
  52. package/esm2022/utils/lib/color-util.mjs +4 -2
  53. package/esm2022/utils/lib/drawing-util.mjs +6 -3
  54. package/esm2022/utils/lib/html-util.mjs +17 -3
  55. package/esm2022/utils/lib/string-util.mjs +1 -1
  56. package/esm2022/validation/lib/rules/between-rule.mjs +7 -7
  57. package/esm2022/validation/lib/rules/callback-rule.mjs +10 -7
  58. package/esm2022/validation/lib/rules/equal-rule.mjs +7 -7
  59. package/esm2022/validation/lib/rules/greater-than.mjs +12 -8
  60. package/esm2022/validation/lib/rules/length-rule.mjs +10 -7
  61. package/esm2022/validation/lib/rules/less-than-rule.mjs +12 -8
  62. package/esm2022/validation/lib/rules/maxlength-rule.mjs +12 -9
  63. package/esm2022/validation/lib/rules/minlength-rule.mjs +12 -9
  64. package/esm2022/validation/lib/rules/regex-rule.mjs +15 -12
  65. package/esm2022/validation/lib/rules/required-rule.mjs +14 -14
  66. package/esm2022/validation/lib/validation.config.mjs +3 -3
  67. package/esm2022/validation/lib/validation.module.mjs +15 -19
  68. package/esm2022/validation/lib/validation.service.mjs +19 -16
  69. package/esm2022/validation/lib/validation.types.mjs +1 -1
  70. package/fesm2022/acorex-core-config.mjs +3 -3
  71. package/fesm2022/acorex-core-config.mjs.map +1 -1
  72. package/fesm2022/{acorex-core-dateTime.mjs → acorex-core-date-time.mjs} +96 -45
  73. package/fesm2022/acorex-core-date-time.mjs.map +1 -0
  74. package/fesm2022/acorex-core-events.mjs +3 -3
  75. package/fesm2022/acorex-core-events.mjs.map +1 -1
  76. package/fesm2022/acorex-core-file.mjs +12 -12
  77. package/fesm2022/acorex-core-file.mjs.map +1 -1
  78. package/fesm2022/acorex-core-format.mjs +43 -40
  79. package/fesm2022/acorex-core-format.mjs.map +1 -1
  80. package/fesm2022/acorex-core-image.mjs +3 -3
  81. package/fesm2022/acorex-core-image.mjs.map +1 -1
  82. package/fesm2022/acorex-core-memorize.mjs.map +1 -1
  83. package/fesm2022/acorex-core-pipes.mjs +3 -3
  84. package/fesm2022/acorex-core-pipes.mjs.map +1 -1
  85. package/fesm2022/acorex-core-platform.mjs +46 -41
  86. package/fesm2022/acorex-core-platform.mjs.map +1 -1
  87. package/fesm2022/acorex-core-storage.mjs +63 -20
  88. package/fesm2022/acorex-core-storage.mjs.map +1 -1
  89. package/fesm2022/acorex-core-translation.mjs +31 -23
  90. package/fesm2022/acorex-core-translation.mjs.map +1 -1
  91. package/fesm2022/acorex-core-utils.mjs +27 -8
  92. package/fesm2022/acorex-core-utils.mjs.map +1 -1
  93. package/fesm2022/acorex-core-validation.mjs +110 -88
  94. package/fesm2022/acorex-core-validation.mjs.map +1 -1
  95. package/fesm2022/acorex-core.mjs +14 -1
  96. package/fesm2022/acorex-core.mjs.map +1 -1
  97. package/file/lib/file-size-formatter.d.ts +1 -1
  98. package/format/lib/format.config.d.ts +1 -1
  99. package/format/lib/format.service.d.ts +5 -5
  100. package/format/lib/formatters/number-formatter.d.ts +1 -1
  101. package/format/lib/formatters/string-formatter.d.ts +1 -1
  102. package/index.d.ts +1 -2
  103. package/lib/core.component.d.ts +5 -0
  104. package/package.json +15 -15
  105. package/storage/local-storage.service.d.ts +6 -0
  106. package/translation/lib/translation-scope.resolver.d.ts +1 -1
  107. package/translation/lib/translation.config.d.ts +2 -2
  108. package/translation/lib/translation.loader.d.ts +3 -3
  109. package/validation/lib/rules/between-rule.d.ts +2 -2
  110. package/validation/lib/rules/callback-rule.d.ts +2 -2
  111. package/validation/lib/rules/equal-rule.d.ts +2 -2
  112. package/validation/lib/rules/greater-than.d.ts +2 -2
  113. package/validation/lib/rules/length-rule.d.ts +2 -2
  114. package/validation/lib/rules/less-than-rule.d.ts +2 -2
  115. package/validation/lib/rules/maxlength-rule.d.ts +2 -2
  116. package/validation/lib/rules/minlength-rule.d.ts +2 -2
  117. package/validation/lib/rules/regex-rule.d.ts +2 -2
  118. package/validation/lib/rules/required-rule.d.ts +2 -2
  119. package/validation/lib/validation.service.d.ts +4 -4
  120. package/esm2022/dateTime/acorex-core-dateTime.mjs +0 -5
  121. package/esm2022/dateTime/index.mjs +0 -11
  122. package/esm2022/dateTime/lib/calendar.service.mjs +0 -91
  123. package/esm2022/dateTime/lib/dateTime.config.mjs +0 -50
  124. package/esm2022/dateTime/lib/datetime.class.mjs +0 -325
  125. package/esm2022/dateTime/lib/datetime.module.mjs +0 -21
  126. package/esm2022/dateTime/lib/datetime.pipe.mjs +0 -29
  127. package/esm2022/dateTime/lib/formatters/datetime-formatter.mjs +0 -30
  128. package/esm2022/dateTime/lib/formatters/timeleft-formatter.mjs +0 -91
  129. package/esm2022/dateTime/lib/georgian.calendar.mjs +0 -198
  130. package/esm2022/dateTime/lib/holidays.loader.mjs +0 -13
  131. package/esm2022/dateTime/lib/jalali.calendar.mjs +0 -423
  132. package/fesm2022/acorex-core-dateTime.mjs.map +0 -1
  133. /package/{dateTime → date-time}/index.d.ts +0 -0
  134. /package/{dateTime → date-time}/lib/calendar.service.d.ts +0 -0
  135. /package/{dateTime → date-time}/lib/dateTime.config.d.ts +0 -0
  136. /package/{dateTime → date-time}/lib/datetime.module.d.ts +0 -0
  137. /package/{dateTime → date-time}/lib/datetime.pipe.d.ts +0 -0
  138. /package/{dateTime → date-time}/lib/georgian.calendar.d.ts +0 -0
  139. /package/{dateTime → date-time}/lib/holidays.loader.d.ts +0 -0
  140. /package/{dateTime → date-time}/lib/jalali.calendar.d.ts +0 -0
@@ -38,9 +38,7 @@ const isTablet = (win) => {
38
38
  const height = win.innerHeight;
39
39
  const smallest = Math.min(width, height);
40
40
  const largest = Math.max(width, height);
41
- return (isIpad(win) ||
42
- isAndroidTablet(win) ||
43
- (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400));
41
+ return isIpad(win) || isAndroidTablet(win) || (smallest > 460 && smallest < 820 && largest > 780 && largest < 1400);
44
42
  };
45
43
  const isMobile = (win) => matchMedia(win, '(any-pointer:coarse)');
46
44
  const isTouch = (win) => matchMedia(win, '(any-pointer:coarse)');
@@ -103,7 +101,12 @@ export class AXPlatform {
103
101
  return !this.isLandscape();
104
102
  }
105
103
  is(name) {
106
- return PLATFORMS_MAP[name](window) || false;
104
+ if (isBrowser()) {
105
+ return PLATFORMS_MAP[name](window) || false;
106
+ }
107
+ else {
108
+ return false;
109
+ }
107
110
  }
108
111
  get screenSize() {
109
112
  return (['SM', 'MD', 'LG', 'XL', '2XL', '3XL', '4XL'].find((name) => PLATFORMS_MAP[name](window) == true) || '5XL');
@@ -136,21 +139,23 @@ export class AXPlatform {
136
139
  }
137
140
  }
138
141
  autoDetectThemeMode() {
139
- const mode = localStorage.getItem('AX_THEME_MODE') || 'system';
140
- switch (mode) {
141
- case 'light':
142
- return this.switchLightMode();
143
- case 'dark':
144
- return this.switchDarkMode();
145
- case 'system':
146
- return this.switchSystemMode();
142
+ if (isBrowser()) {
143
+ const mode = localStorage.getItem('AX_THEME_MODE') || 'system';
144
+ switch (mode) {
145
+ case 'light':
146
+ return this.switchLightMode();
147
+ case 'dark':
148
+ return this.switchDarkMode();
149
+ case 'system':
150
+ return this.switchSystemMode();
151
+ }
147
152
  }
148
153
  }
149
154
  _setFullHeightRatio() {
150
155
  try {
151
- document
152
- .querySelector(':root')
153
- ?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
156
+ if (isBrowser()) {
157
+ document.querySelector(':root')?.style.setProperty('--ax-vh', window.innerHeight / 100 + 'px');
158
+ }
154
159
  }
155
160
  catch (error) {
156
161
  console.error(error);
@@ -174,47 +179,47 @@ export class AXPlatform {
174
179
  this.click = new Subject();
175
180
  this.scroll = new Subject();
176
181
  this.themeMode$ = new BehaviorSubject('system');
177
- fromEvent(window, 'resize')
178
- .pipe(debounceTime(100))
179
- .pipe(distinctUntilChanged())
180
- .subscribe((e) => {
181
- this.resize.next({
182
- nativeEvent: e,
183
- source: this,
184
- });
185
- //
186
- this._setFullHeightRatio();
187
- });
188
182
  if (isBrowser()) {
183
+ fromEvent(window, 'resize')
184
+ .pipe(debounceTime(100))
185
+ .pipe(distinctUntilChanged())
186
+ .subscribe((e) => {
187
+ this.resize.next({
188
+ nativeEvent: e,
189
+ source: this,
190
+ });
191
+ //
192
+ this._setFullHeightRatio();
193
+ });
189
194
  if (window?.matchMedia('(prefers-color-scheme: dark)').matches) {
190
195
  window?.matchMedia('(prefers-color-scheme: dark)')?.addEventListener('change', (event) => {
191
196
  // Detect System color mode
192
197
  this.autoSystemModeDetection(event);
193
198
  });
194
199
  }
200
+ document.addEventListener('click', (e) => {
201
+ this.click.next({
202
+ nativeEvent: e,
203
+ source: this,
204
+ });
205
+ }, true);
206
+ document.addEventListener('scroll', (e) => {
207
+ this.scroll.next({
208
+ nativeEvent: e,
209
+ source: this,
210
+ });
211
+ }, true);
195
212
  }
196
- document.addEventListener('click', (e) => {
197
- this.click.next({
198
- nativeEvent: e,
199
- source: this,
200
- });
201
- }, true);
202
- document.addEventListener('scroll', (e) => {
203
- this.scroll.next({
204
- nativeEvent: e,
205
- source: this,
206
- });
207
- }, true);
208
213
  // init functions
209
214
  this._setFullHeightRatio();
210
215
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
212
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }
216
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
217
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }
213
218
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXPlatform, decorators: [{
219
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXPlatform, decorators: [{
215
220
  type: Injectable,
216
221
  args: [{
217
222
  providedIn: 'root',
218
223
  }]
219
224
  }], ctorParameters: () => [] });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9wbGF0Zm9ybS9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXJHLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFdkcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUU5RSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQzdCLG1CQUFtQjtJQUNuQixJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELFVBQVU7SUFDVixJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQztBQUVGLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBRWhFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVqRixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUV2RSxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxRCxDQUFDLENBQUM7QUFFRixNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7SUFDN0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztJQUMvQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN6QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUV4QyxPQUFPLFFBQVEsR0FBRyxHQUFHLElBQUksUUFBUSxHQUFHLEdBQUcsSUFBSSxPQUFPLEdBQUcsR0FBRyxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUM7QUFDNUUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUMvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO0lBQzdCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFeEMsT0FBTyxDQUNMLE1BQU0sQ0FBQyxHQUFHLENBQUM7UUFDWCxlQUFlLENBQUMsR0FBRyxDQUFDO1FBQ3BCLENBQUMsUUFBUSxHQUFHLEdBQUcsSUFBSSxRQUFRLEdBQUcsR0FBRyxJQUFJLE9BQU8sR0FBRyxHQUFHLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxDQUN0RSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztBQUMxRSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUVsRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sU0FBUyxHQUFHLENBQUMsR0FBUSxFQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBRWxHLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxHQUFRLEVBQVcsRUFBRTtJQUM5QyxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRTdFLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FDckMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sSUFBSyxHQUFHLENBQUMsU0FBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUVoRyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFXLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0YsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLElBQUksUUFBUSxDQUFDLHFEQUFxRCxDQUFDLENBQUM7QUFDN0YsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLG9EQUFvRCxDQUFDLENBQUM7QUFFM0YsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBYSxFQUFXLEVBQUU7SUFDekQsSUFBSSxTQUFTLEVBQUU7UUFBRSxPQUFPLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQ3RELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztBQUMxRSxNQUFNLFVBQVUsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQzFFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFDMUUsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUMzRSxNQUFNLFdBQVcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQzVFLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDLENBQUM7QUFDNUUsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUMsQ0FBQztBQUU1RSxNQUFNLGFBQWEsR0FBUTtJQUN6QixPQUFPLEVBQUUsU0FBUztJQUNsQixHQUFHLEVBQUUsS0FBSztJQUNWLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0lBQ2QsTUFBTSxFQUFFLFFBQVE7SUFDaEIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsTUFBTSxFQUFFLFFBQVE7SUFDaEIsSUFBSSxFQUFFLE1BQU07SUFDWixLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsUUFBUSxFQUFFLFVBQVU7SUFDcEIsRUFBRSxFQUFFLFVBQVU7SUFDZCxFQUFFLEVBQUUsVUFBVTtJQUNkLEVBQUUsRUFBRSxVQUFVO0lBQ2QsRUFBRSxFQUFFLFVBQVU7SUFDZCxLQUFLLEVBQUUsV0FBVztJQUNsQixLQUFLLEVBQUUsV0FBVztJQUNsQixLQUFLLEVBQUUsV0FBVztDQUNuQixDQUFDO0FBRUYsTUFBTSxPQUFPLGVBQWU7Q0FHM0I7QUFLRCxNQUFNLE9BQU8sVUFBVTtJQUtyQixLQUFLO1FBQ0gsT0FBTyxRQUFRLENBQUMsR0FBRyxJQUFJLEtBQUssSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxLQUFLLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztJQUN2RyxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hELENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsRUFBRSxDQUFDLElBQStEO1FBQ2hFLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUN4RCxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FDOUMsSUFBSSxLQUFLLENBQWtCLENBQUM7SUFDL0IsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksU0FBUyxFQUFFLEVBQUU7WUFDZixJQUFJLE1BQU0sQ0FBQyxVQUFVLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLE9BQU8sRUFBRTtnQkFDbEYsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2RCxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNoQztpQkFBTTtnQkFDTCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ25DO1lBQ0QsWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDaEQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO1FBQ2pCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLElBQUksUUFBUSxDQUFDO1FBQy9ELFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBRWhDLEtBQUssTUFBTTtnQkFDVCxPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUUvQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSTtZQUNGLFFBQVE7aUJBQ0wsYUFBYSxDQUFjLE9BQU8sQ0FBQztnQkFDcEMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNuRTtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN0QjtJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFLO1FBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsS0FBSyxRQUFRLEVBQUU7WUFDM0MsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFFbkQsSUFBSSxTQUFTLEtBQUssTUFBTSxFQUFFO2dCQUN4QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZELEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNMLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDbkM7U0FDRjtJQUNILENBQUM7SUFFRDtRQTdGQSxXQUFNLEdBQTZCLElBQUksT0FBTyxFQUFtQixDQUFDO1FBQ2xFLFVBQUssR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDakUsV0FBTSxHQUE2QixJQUFJLE9BQU8sRUFBbUIsQ0FBQztRQUNsRSxlQUFVLEdBQWlDLElBQUksZUFBZSxDQUFjLFFBQVEsQ0FBQyxDQUFDO1FBMkZwRixTQUFTLENBQVUsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzVCLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7WUFDSCxFQUFFO1lBQ0YsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFTCxJQUFJLFNBQVMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxNQUFNLEVBQUUsVUFBVSxDQUFDLDhCQUE4QixDQUFDLENBQUMsT0FBTyxFQUFFO2dCQUM5RCxNQUFNLEVBQUUsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ3ZGLDJCQUEyQjtvQkFDM0IsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsQ0FBQzthQUNKO1NBQ0Y7UUFFRCxRQUFRLENBQUMsZ0JBQWdCLENBQ3ZCLE9BQU8sRUFDUCxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFFRixRQUFRLENBQUMsZ0JBQWdCLENBQ3ZCLFFBQVEsRUFDUixDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ0osSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2YsV0FBVyxFQUFFLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7UUFDRixpQkFBaUI7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0EzSVUsVUFBVTtrSEFBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgQVhUaGVtZU1vZGUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ3N5c3RlbSc7XG5leHBvcnQgdHlwZSBBWFBsYXRmb3JtcyA9ICdBbmRyb2lkJyB8ICdEZXNrdG9wJyB8ICdpT1MnIHwgJ01vYmlsZSc7XG5leHBvcnQgdHlwZSBBWEJyb3dzZXJzID0gJ0Nocm9tZScgfCAnU2FmYXJpJyB8ICdFZGdlJyB8ICdGaXJlZm94JyB8ICdPcGVyYScgfCAnTVNJRSc7XG5leHBvcnQgdHlwZSBBWFRlY2hub2xvZ2llcyA9ICdQV0EnIHwgJ0h5YnJpZCcgfCAnRWxlY3Ryb24nO1xuXG5leHBvcnQgdHlwZSBBWFNjcmVlblNpemVzID0gJ1NNJyB8ICdNRCcgfCAnTEcnIHwgJ1hMJyB8ICcyWEwnIHwgJzNYTCcgfCAnNFhMJyB8ICc1WEwnO1xuXG5jb25zdCBpc0Nocm9tZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9DaHJvbWUvaSk7XG5cbmNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5jb25zdCBpc0VkZ2UgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvRWRnZS9pKTtcblxuY29uc3QgaXNTYWZhcmkgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvU2FmYXJpL2kpO1xuXG5jb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvTVNJRS9pKSB8fCB0ZXN0VXNlckFnZW50KHdpbiwgL1RyaWRlbnQvaSk7XG5cbmNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xuXG5jb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9pUGFkL2kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpT1MgMTMrXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBpc0lwaG9uZSA9ICh3aW46IFdpbmRvdykgPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9pUGhvbmUvaSk7XG5cbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZXxpUG9kL2kpIHx8IGlzSXBhZCh3aW4pO1xuXG5jb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xuXG5jb25zdCBpc0FuZHJvaWRUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgcmV0dXJuIGlzQW5kcm9pZCh3aW4pICYmICF0ZXN0VXNlckFnZW50KHdpbiwgL21vYmlsZS9pKTtcbn07XG5cbmNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xuICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcblxuICByZXR1cm4gc21hbGxlc3QgPiAzOTAgJiYgc21hbGxlc3QgPCA1MjAgJiYgbGFyZ2VzdCA+IDYyMCAmJiBsYXJnZXN0IDwgODAwO1xufTtcblxuY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgY29uc3Qgd2lkdGggPSB3aW4uaW5uZXJXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xuICBjb25zdCBsYXJnZXN0ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgcmV0dXJuIChcbiAgICBpc0lwYWQod2luKSB8fFxuICAgIGlzQW5kcm9pZFRhYmxldCh3aW4pIHx8XG4gICAgKHNtYWxsZXN0ID4gNDYwICYmIHNtYWxsZXN0IDwgODIwICYmIGxhcmdlc3QgPiA3ODAgJiYgbGFyZ2VzdCA8IDE0MDApXG4gICk7XG59O1xuXG5jb25zdCBpc01vYmlsZSA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuY29uc3QgaXNUb3VjaCA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcoYW55LXBvaW50ZXI6Y29hcnNlKScpO1xuXG5jb25zdCBpc0Rlc2t0b3AgPSAod2luOiBXaW5kb3cpID0+ICFpc01vYmlsZSh3aW4pO1xuXG5jb25zdCBpc0h5YnJpZCA9ICh3aW46IFdpbmRvdykgPT4gaXNDb3Jkb3ZhKHdpbikgfHwgaXNDYXBhY2l0b3JOYXRpdmUod2luKTtcblxuY29uc3QgaXNDb3Jkb3ZhID0gKHdpbjogYW55KTogYm9vbGVhbiA9PiAhISh3aW5bJ2NvcmRvdmEnXSB8fCB3aW5bJ3Bob25lZ2FwJ10gfHwgd2luWydQaG9uZUdhcCddKTtcblxuY29uc3QgaXNDYXBhY2l0b3JOYXRpdmUgPSAod2luOiBhbnkpOiBib29sZWFuID0+IHtcbiAgY29uc3QgY2FwYWNpdG9yID0gd2luWydDYXBhY2l0b3InXTtcbiAgcmV0dXJuICEhKGNhcGFjaXRvciAmJiBjYXBhY2l0b3IuaXNOYXRpdmUpO1xufTtcblxuY29uc3QgaXNFbGVjdHJvbiA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9lbGVjdHJvbi9pKTtcblxuY29uc3QgaXNQV0EgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+XG4gICEhKHdpbi5tYXRjaE1lZGlhKCcoZGlzcGxheS1tb2RlOiBzdGFuZGFsb25lKScpLm1hdGNoZXMgfHwgKHdpbi5uYXZpZ2F0b3IgYXMgYW55KS5zdGFuZGFsb25lKTtcblxuZXhwb3J0IGNvbnN0IHRlc3RVc2VyQWdlbnQgPSAod2luOiBXaW5kb3csIGV4cHI6IFJlZ0V4cCkgPT4gZXhwci50ZXN0KHdpbi5uYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IGlzQnJvd3NlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PXdpbmRvdzt9Y2F0Y2goZSl7IHJldHVybiBmYWxzZTt9Jyk7XG5leHBvcnQgY29uc3QgaXNTZXJ2ZXIgPSBuZXcgRnVuY3Rpb24oJ3RyeSB7cmV0dXJuIHRoaXM9PT1nbG9iYWw7fWNhdGNoKGUpe3JldHVybiBmYWxzZTt9Jyk7XG5cbmNvbnN0IG1hdGNoTWVkaWEgPSAod2luOiBXaW5kb3csIHF1ZXJ5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgaWYgKGlzQnJvd3NlcigpKSByZXR1cm4gd2luLm1hdGNoTWVkaWEocXVlcnkpLm1hdGNoZXM7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmNvbnN0IGlzU01TY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNTc4cHgpJyk7XG5jb25zdCBpc01EU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDc2OHB4KScpO1xuY29uc3QgaXNMR1NjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA5OTJweCknKTtcbmNvbnN0IGlzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTIwMHB4KScpO1xuY29uc3QgaXMyWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTQ0MHB4KScpO1xuY29uc3QgaXMzWExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMTkyMHB4KScpO1xuY29uc3QgaXM0WExTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogMjU2MHB4KScpO1xuXG5jb25zdCBQTEFURk9STVNfTUFQOiBhbnkgPSB7XG4gIEFuZHJvaWQ6IGlzQW5kcm9pZCxcbiAgaU9TOiBpc0lPUyxcbiAgRGVza3RvcDogaXNEZXNrdG9wLFxuICBNb2JpbGU6IGlzTW9iaWxlLFxuICBUb3VjaDogaXNUb3VjaCxcbiAgQ2hyb21lOiBpc0Nocm9tZSxcbiAgRmlyZWZveDogaXNGaXJlZm94LFxuICBTYWZhcmk6IGlzU2FmYXJpLFxuICBFZGdlOiBpc0VkZ2UsXG4gIE9wZXJhOiBpc09wZXJhLFxuICBIeWJyaWQ6IGlzSHlicmlkLFxuICBQV0E6IGlzUFdBLFxuICBFbGVjdHJvbjogaXNFbGVjdHJvbixcbiAgU006IGlzU01TY3JlZW4sXG4gIE1EOiBpc01EU2NyZWVuLFxuICBMRzogaXNMR1NjcmVlbixcbiAgWEw6IGlzWExTY3JlZW4sXG4gICcyWEwnOiBpczJYTFNjcmVlbixcbiAgJzNYTCc6IGlzM1hMU2NyZWVuLFxuICAnNFhMJzogaXM0WExTY3JlZW4sXG59O1xuXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybUV2ZW50PFQgZXh0ZW5kcyBFdmVudCA9IEV2ZW50PiB7XG4gIG5hdGl2ZUV2ZW50ITogVDtcbiAgc291cmNlITogQVhQbGF0Zm9ybTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEFYUGxhdGZvcm0ge1xuICByZXNpemU6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgY2xpY2s6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgc2Nyb2xsOiBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4gPSBuZXcgU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+KCk7XG4gIHRoZW1lTW9kZSQ6IEJlaGF2aW9yU3ViamVjdDxBWFRoZW1lTW9kZT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPignc3lzdGVtJyk7XG4gIGlzUnRsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBkb2N1bWVudC5kaXIgPT0gJ3J0bCcgfHwgZG9jdW1lbnQuYm9keS5kaXIgPT0gJ3J0bCcgfHwgZG9jdW1lbnQuYm9keS5zdHlsZS5kaXJlY3Rpb24gPT0gJ3J0bCc7XG4gIH1cblxuICBpc0xhbmRzY2FwZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IDwgd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICBpc1BvcnRyYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0xhbmRzY2FwZSgpO1xuICB9XG5cbiAgaXMobmFtZTogQVhQbGF0Zm9ybXMgfCBBWEJyb3dzZXJzIHwgQVhUZWNobm9sb2dpZXMgfCBBWFNjcmVlblNpemVzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFBMQVRGT1JNU19NQVBbbmFtZV0od2luZG93KSB8fCBmYWxzZTtcbiAgfVxuXG4gIGdldCBzY3JlZW5TaXplKCk6IEFYU2NyZWVuU2l6ZXMge1xuICAgIHJldHVybiAoWydTTScsICdNRCcsICdMRycsICdYTCcsICcyWEwnLCAnM1hMJywgJzRYTCddLmZpbmQoXG4gICAgICAobmFtZSkgPT4gUExBVEZPUk1TX01BUFtuYW1lXSh3aW5kb3cpID09IHRydWUsXG4gICAgKSB8fCAnNVhMJykgYXMgQVhTY3JlZW5TaXplcztcbiAgfVxuXG4gIHN3aXRjaExpZ2h0TW9kZSgpIHtcbiAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgX2h0bWwuY2xhc3NMaXN0LnJlbW92ZSgnYXgtZGFyaycpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBWF9USEVNRV9NT0RFJywgJ2xpZ2h0Jyk7XG4gICAgdGhpcy50aGVtZU1vZGUkLm5leHQoJ2xpZ2h0Jyk7XG4gICAgcmV0dXJuICdsaWdodCc7XG4gIH1cblxuICBzd2l0Y2hEYXJrTW9kZSgpIHtcbiAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBWF9USEVNRV9NT0RFJywgJ2RhcmsnKTtcbiAgICB0aGlzLnRoZW1lTW9kZSQubmV4dCgnZGFyaycpO1xuICB9XG5cbiAgc3dpdGNoU3lzdGVtTW9kZSgpIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIGlmICh3aW5kb3cubWF0Y2hNZWRpYSAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgIH1cbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdBWF9USEVNRV9NT0RFJywgJ3N5c3RlbScpO1xuICAgICAgdGhpcy50aGVtZU1vZGUkLm5leHQoJ3N5c3RlbScpO1xuICAgIH1cbiAgfVxuXG4gIGF1dG9EZXRlY3RUaGVtZU1vZGUoKSB7XG4gICAgY29uc3QgbW9kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBWF9USEVNRV9NT0RFJykgfHwgJ3N5c3RlbSc7XG4gICAgc3dpdGNoIChtb2RlKSB7XG4gICAgICBjYXNlICdsaWdodCc6XG4gICAgICAgIHJldHVybiB0aGlzLnN3aXRjaExpZ2h0TW9kZSgpO1xuXG4gICAgICBjYXNlICdkYXJrJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dpdGNoRGFya01vZGUoKTtcblxuICAgICAgY2FzZSAnc3lzdGVtJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuc3dpdGNoU3lzdGVtTW9kZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NldEZ1bGxIZWlnaHRSYXRpbygpIHtcbiAgICB0cnkge1xuICAgICAgZG9jdW1lbnRcbiAgICAgICAgLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCc6cm9vdCcpXG4gICAgICAgID8uc3R5bGUuc2V0UHJvcGVydHkoJy0tYXgtdmgnLCB3aW5kb3cuaW5uZXJIZWlnaHQgLyAxMDAgKyAncHgnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhdXRvU3lzdGVtTW9kZURldGVjdGlvbihldmVudCkge1xuICAgIGlmICh0aGlzLnRoZW1lTW9kZSQuZ2V0VmFsdWUoKSA9PT0gJ3N5c3RlbScpIHtcbiAgICAgIGNvbnN0IHRoZW1lTW9kZSA9IGV2ZW50Lm1hdGNoZXMgPyAnZGFyaycgOiAnbGlnaHQnO1xuXG4gICAgICBpZiAodGhlbWVNb2RlID09PSAnZGFyaycpIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QuYWRkKCdheC1kYXJrJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBfaHRtbCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdodG1sJylbMF07XG4gICAgICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBmcm9tRXZlbnQ8VUlFdmVudD4od2luZG93LCAncmVzaXplJylcbiAgICAgIC5waXBlKGRlYm91bmNlVGltZSgxMDApKVxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgdGhpcy5yZXNpemUubmV4dCh7XG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5fc2V0RnVsbEhlaWdodFJhdGlvKCk7XG4gICAgICB9KTtcblxuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgaWYgKHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgICAgd2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIERldGVjdCBTeXN0ZW0gY29sb3IgbW9kZVxuICAgICAgICAgIHRoaXMuYXV0b1N5c3RlbU1vZGVEZXRlY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIChlKSA9PiB7XG4gICAgICAgIHRoaXMuY2xpY2submV4dCh7XG4gICAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXG4gICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cnVlLFxuICAgICk7XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgJ3Njcm9sbCcsXG4gICAgICAoZSkgPT4ge1xuICAgICAgICB0aGlzLnNjcm9sbC5uZXh0KHtcbiAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICBzb3VyY2U6IHRoaXMsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHRydWUsXG4gICAgKTtcbiAgICAvLyBpbml0IGZ1bmN0aW9uc1xuICAgIHRoaXMuX3NldEZ1bGxIZWlnaHRSYXRpbygpO1xuICB9XG59XG4iXX0=
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9wbGF0Zm9ybS9zcmMvbGliL3BsYXRmb3JtLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQVNwRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUUzRSxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUVyRSxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUV6RSxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQVcsRUFBVyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxhQUFhLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXJHLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBVyxFQUFXLEVBQUUsQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxJQUFJLGFBQWEsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFFdkcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxH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LG1CQUFtQixFQUFFLENBQUM7WUFDN0IsQ0FBQyxDQUFDLENBQUM7WUFDTCxJQUFJLE1BQU0sRUFBRSxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxFQUFFLFVBQVUsQ0FBQyw4QkFBOEIsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUN2RiwyQkFBMkI7b0JBQzNCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsUUFBUSxDQUFDLGdCQUFnQixDQUN2QixPQUFPLEVBQ1AsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDSixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDZCxXQUFXLEVBQUUsQ0FBQztvQkFDZCxNQUFNLEVBQUUsSUFBSTtpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0QsSUFBSSxDQUNMLENBQUM7WUFFRixRQUFRLENBQUMsZ0JBQWdCLENBQ3ZCLFFBQVEsRUFDUixDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNmLFdBQVcsRUFBRSxDQUFDO29CQUNkLE1BQU0sRUFBRSxJQUFJO2lCQUNiLENBQUMsQ0FBQztZQUNMLENBQUMsRUFDRCxJQUFJLENBQ0wsQ0FBQztRQUNKLENBQUM7UUFFRCxpQkFBaUI7UUFDakIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQzs4R0E5SVUsVUFBVTtrSEFBVixVQUFVLGNBRlQsTUFBTTs7MkZBRVAsVUFBVTtrQkFIdEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QsIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IHR5cGUgQVhUaGVtZU1vZGUgPSAnbGlnaHQnIHwgJ2RhcmsnIHwgJ3N5c3RlbSc7XG5leHBvcnQgdHlwZSBBWFBsYXRmb3JtcyA9ICdBbmRyb2lkJyB8ICdEZXNrdG9wJyB8ICdpT1MnIHwgJ01vYmlsZSc7XG5leHBvcnQgdHlwZSBBWEJyb3dzZXJzID0gJ0Nocm9tZScgfCAnU2FmYXJpJyB8ICdFZGdlJyB8ICdGaXJlZm94JyB8ICdPcGVyYScgfCAnTVNJRSc7XG5leHBvcnQgdHlwZSBBWFRlY2hub2xvZ2llcyA9ICdQV0EnIHwgJ0h5YnJpZCcgfCAnRWxlY3Ryb24nO1xuXG5leHBvcnQgdHlwZSBBWFNjcmVlblNpemVzID0gJ1NNJyB8ICdNRCcgfCAnTEcnIHwgJ1hMJyB8ICcyWEwnIHwgJzNYTCcgfCAnNFhMJyB8ICc1WEwnO1xuXG5jb25zdCBpc0Nocm9tZSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9DaHJvbWUvaSk7XG5cbmNvbnN0IGlzRmlyZWZveCA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9GaXJlZm94L2kpO1xuXG5jb25zdCBpc0VkZ2UgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvRWRnZS9pKTtcblxuY29uc3QgaXNTYWZhcmkgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvU2FmYXJpL2kpO1xuXG5jb25zdCBpc09wZXJhID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL09wZXJhL2kpIHx8IHRlc3RVc2VyQWdlbnQod2luLCAvT1BSL2kpO1xuXG5jb25zdCBpc01TSUUgPSAod2luOiBXaW5kb3cpOiBib29sZWFuID0+IHRlc3RVc2VyQWdlbnQod2luLCAvTVNJRS9pKSB8fCB0ZXN0VXNlckFnZW50KHdpbiwgL1RyaWRlbnQvaSk7XG5cbmNvbnN0IGlzTW9iaWxlV2ViID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiBpc01vYmlsZSh3aW4pICYmICFpc0h5YnJpZCh3aW4pO1xuXG5jb25zdCBpc0lwYWQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgLy8gaU9TIDEyIGFuZCBiZWxvd1xuICBpZiAodGVzdFVzZXJBZ2VudCh3aW4sIC9pUGFkL2kpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBpT1MgMTMrXG4gIGlmICh0ZXN0VXNlckFnZW50KHdpbiwgL01hY2ludG9zaC9pKSAmJiBpc01vYmlsZSh3aW4pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5jb25zdCBpc0lwaG9uZSA9ICh3aW46IFdpbmRvdykgPT4gdGVzdFVzZXJBZ2VudCh3aW4sIC9pUGhvbmUvaSk7XG5cbmNvbnN0IGlzSU9TID0gKHdpbjogV2luZG93KSA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2lQaG9uZXxpUG9kL2kpIHx8IGlzSXBhZCh3aW4pO1xuXG5jb25zdCBpc0FuZHJvaWQgPSAod2luOiBXaW5kb3cpID0+IHRlc3RVc2VyQWdlbnQod2luLCAvYW5kcm9pZHxzaW5rL2kpO1xuXG5jb25zdCBpc0FuZHJvaWRUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgcmV0dXJuIGlzQW5kcm9pZCh3aW4pICYmICF0ZXN0VXNlckFnZW50KHdpbiwgL21vYmlsZS9pKTtcbn07XG5cbmNvbnN0IGlzUGhhYmxldCA9ICh3aW46IFdpbmRvdykgPT4ge1xuICBjb25zdCB3aWR0aCA9IHdpbi5pbm5lcldpZHRoO1xuICBjb25zdCBoZWlnaHQgPSB3aW4uaW5uZXJIZWlnaHQ7XG4gIGNvbnN0IHNtYWxsZXN0ID0gTWF0aC5taW4od2lkdGgsIGhlaWdodCk7XG4gIGNvbnN0IGxhcmdlc3QgPSBNYXRoLm1heCh3aWR0aCwgaGVpZ2h0KTtcblxuICByZXR1cm4gc21hbGxlc3QgPiAzOTAgJiYgc21hbGxlc3QgPCA1MjAgJiYgbGFyZ2VzdCA+IDYyMCAmJiBsYXJnZXN0IDwgODAwO1xufTtcblxuY29uc3QgaXNUYWJsZXQgPSAod2luOiBXaW5kb3cpID0+IHtcbiAgY29uc3Qgd2lkdGggPSB3aW4uaW5uZXJXaWR0aDtcbiAgY29uc3QgaGVpZ2h0ID0gd2luLmlubmVySGVpZ2h0O1xuICBjb25zdCBzbWFsbGVzdCA9IE1hdGgubWluKHdpZHRoLCBoZWlnaHQpO1xuICBjb25zdCBsYXJnZXN0ID0gTWF0aC5tYXgod2lkdGgsIGhlaWdodCk7XG5cbiAgcmV0dXJuIGlzSXBhZCh3aW4pIHx8IGlzQW5kcm9pZFRhYmxldCh3aW4pIHx8IChzbWFsbGVzdCA+IDQ2MCAmJiBzbWFsbGVzdCA8IDgyMCAmJiBsYXJnZXN0ID4gNzgwICYmIGxhcmdlc3QgPCAxNDAwKTtcbn07XG5cbmNvbnN0IGlzTW9iaWxlID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5jb25zdCBpc1RvdWNoID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhhbnktcG9pbnRlcjpjb2Fyc2UpJyk7XG5cbmNvbnN0IGlzRGVza3RvcCA9ICh3aW46IFdpbmRvdykgPT4gIWlzTW9iaWxlKHdpbik7XG5cbmNvbnN0IGlzSHlicmlkID0gKHdpbjogV2luZG93KSA9PiBpc0NvcmRvdmEod2luKSB8fCBpc0NhcGFjaXRvck5hdGl2ZSh3aW4pO1xuXG5jb25zdCBpc0NvcmRvdmEgPSAod2luOiBhbnkpOiBib29sZWFuID0+ICEhKHdpblsnY29yZG92YSddIHx8IHdpblsncGhvbmVnYXAnXSB8fCB3aW5bJ1Bob25lR2FwJ10pO1xuXG5jb25zdCBpc0NhcGFjaXRvck5hdGl2ZSA9ICh3aW46IGFueSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBjYXBhY2l0b3IgPSB3aW5bJ0NhcGFjaXRvciddO1xuICByZXR1cm4gISEoY2FwYWNpdG9yICYmIGNhcGFjaXRvci5pc05hdGl2ZSk7XG59O1xuXG5jb25zdCBpc0VsZWN0cm9uID0gKHdpbjogV2luZG93KTogYm9vbGVhbiA9PiB0ZXN0VXNlckFnZW50KHdpbiwgL2VsZWN0cm9uL2kpO1xuXG5jb25zdCBpc1BXQSA9ICh3aW46IFdpbmRvdyk6IGJvb2xlYW4gPT4gISEod2luLm1hdGNoTWVkaWEoJyhkaXNwbGF5LW1vZGU6IHN0YW5kYWxvbmUpJykubWF0Y2hlcyB8fCAod2luLm5hdmlnYXRvciBhcyBhbnkpLnN0YW5kYWxvbmUpO1xuXG5leHBvcnQgY29uc3QgdGVzdFVzZXJBZ2VudCA9ICh3aW46IFdpbmRvdywgZXhwcjogUmVnRXhwKSA9PiBleHByLnRlc3Qod2luLm5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5leHBvcnQgY29uc3QgaXNCcm93c2VyID0gbmV3IEZ1bmN0aW9uKCd0cnkge3JldHVybiB0aGlzPT09d2luZG93O31jYXRjaChlKXsgcmV0dXJuIGZhbHNlO30nKTtcbmV4cG9ydCBjb25zdCBpc1NlcnZlciA9IG5ldyBGdW5jdGlvbigndHJ5IHtyZXR1cm4gdGhpcz09PWdsb2JhbDt9Y2F0Y2goZSl7cmV0dXJuIGZhbHNlO30nKTtcblxuY29uc3QgbWF0Y2hNZWRpYSA9ICh3aW46IFdpbmRvdywgcXVlcnk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAoaXNCcm93c2VyKCkpIHJldHVybiB3aW4ubWF0Y2hNZWRpYShxdWVyeSkubWF0Y2hlcztcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuY29uc3QgaXNTTVNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiA1NzhweCknKTtcbmNvbnN0IGlzTURTY3JlZW4gPSAod2luOiBXaW5kb3cpID0+IG1hdGNoTWVkaWEod2luLCAnKG1heC13aWR0aDogNzY4cHgpJyk7XG5jb25zdCBpc0xHU2NyZWVuID0gKHdpbjogV2luZG93KSA9PiBtYXRjaE1lZGlhKHdpbiwgJyhtYXgtd2lkdGg6IDk5MnB4KScpO1xuY29uc3QgaXNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxMjAwcHgpJyk7XG5jb25zdCBpczJYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxNDQwcHgpJyk7XG5jb25zdCBpczNYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAxOTIwcHgpJyk7XG5jb25zdCBpczRYTFNjcmVlbiA9ICh3aW46IFdpbmRvdykgPT4gbWF0Y2hNZWRpYSh3aW4sICcobWF4LXdpZHRoOiAyNTYwcHgpJyk7XG5cbmNvbnN0IFBMQVRGT1JNU19NQVA6IGFueSA9IHtcbiAgQW5kcm9pZDogaXNBbmRyb2lkLFxuICBpT1M6IGlzSU9TLFxuICBEZXNrdG9wOiBpc0Rlc2t0b3AsXG4gIE1vYmlsZTogaXNNb2JpbGUsXG4gIFRvdWNoOiBpc1RvdWNoLFxuICBDaHJvbWU6IGlzQ2hyb21lLFxuICBGaXJlZm94OiBpc0ZpcmVmb3gsXG4gIFNhZmFyaTogaXNTYWZhcmksXG4gIEVkZ2U6IGlzRWRnZSxcbiAgT3BlcmE6IGlzT3BlcmEsXG4gIEh5YnJpZDogaXNIeWJyaWQsXG4gIFBXQTogaXNQV0EsXG4gIEVsZWN0cm9uOiBpc0VsZWN0cm9uLFxuICBTTTogaXNTTVNjcmVlbixcbiAgTUQ6IGlzTURTY3JlZW4sXG4gIExHOiBpc0xHU2NyZWVuLFxuICBYTDogaXNYTFNjcmVlbixcbiAgJzJYTCc6IGlzMlhMU2NyZWVuLFxuICAnM1hMJzogaXMzWExTY3JlZW4sXG4gICc0WEwnOiBpczRYTFNjcmVlbixcbn07XG5cbmV4cG9ydCBjbGFzcyBBWFBsYXRmb3JtRXZlbnQ8VCBleHRlbmRzIEV2ZW50ID0gRXZlbnQ+IHtcbiAgbmF0aXZlRXZlbnQhOiBUO1xuICBzb3VyY2UhOiBBWFBsYXRmb3JtO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQVhQbGF0Zm9ybSB7XG4gIHJlc2l6ZTogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBjbGljazogU3ViamVjdDxBWFBsYXRmb3JtRXZlbnQ+ID0gbmV3IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PigpO1xuICBzY3JvbGw6IFN1YmplY3Q8QVhQbGF0Zm9ybUV2ZW50PiA9IG5ldyBTdWJqZWN0PEFYUGxhdGZvcm1FdmVudD4oKTtcbiAgdGhlbWVNb2RlJDogQmVoYXZpb3JTdWJqZWN0PEFYVGhlbWVNb2RlPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QVhUaGVtZU1vZGU+KCdzeXN0ZW0nKTtcbiAgaXNSdGwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmRpciA9PSAncnRsJyB8fCBkb2N1bWVudC5ib2R5LmRpciA9PSAncnRsJyB8fCBkb2N1bWVudC5ib2R5LnN0eWxlLmRpcmVjdGlvbiA9PSAncnRsJztcbiAgfVxuXG4gIGlzTGFuZHNjYXBlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgPCB3aW5kb3cuaW5uZXJXaWR0aDtcbiAgfVxuXG4gIGlzUG9ydHJhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmlzTGFuZHNjYXBlKCk7XG4gIH1cblxuICBpcyhuYW1lOiBBWFBsYXRmb3JtcyB8IEFYQnJvd3NlcnMgfCBBWFRlY2hub2xvZ2llcyB8IEFYU2NyZWVuU2l6ZXMpOiBib29sZWFuIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgfHwgZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2NyZWVuU2l6ZSgpOiBBWFNjcmVlblNpemVzIHtcbiAgICByZXR1cm4gKFsnU00nLCAnTUQnLCAnTEcnLCAnWEwnLCAnMlhMJywgJzNYTCcsICc0WEwnXS5maW5kKChuYW1lKSA9PiBQTEFURk9STVNfTUFQW25hbWVdKHdpbmRvdykgPT0gdHJ1ZSkgfHwgJzVYTCcpIGFzIEFYU2NyZWVuU2l6ZXM7XG4gIH1cblxuICBzd2l0Y2hMaWdodE1vZGUoKSB7XG4gICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgIF9odG1sLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LWRhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQVhfVEhFTUVfTU9ERScsICdsaWdodCcpO1xuICAgIHRoaXMudGhlbWVNb2RlJC5uZXh0KCdsaWdodCcpO1xuICAgIHJldHVybiAnbGlnaHQnO1xuICB9XG5cbiAgc3dpdGNoRGFya01vZGUoKSB7XG4gICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgIF9odG1sLmNsYXNzTGlzdC5hZGQoJ2F4LWRhcmsnKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQVhfVEhFTUVfTU9ERScsICdkYXJrJyk7XG4gICAgdGhpcy50aGVtZU1vZGUkLm5leHQoJ2RhcmsnKTtcbiAgfVxuXG4gIHN3aXRjaFN5c3RlbU1vZGUoKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBpZiAod2luZG93Lm1hdGNoTWVkaWEgJiYgd2luZG93Lm1hdGNoTWVkaWEoJyhwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyayknKS5tYXRjaGVzKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICB9XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnQVhfVEhFTUVfTU9ERScsICdzeXN0ZW0nKTtcbiAgICAgIHRoaXMudGhlbWVNb2RlJC5uZXh0KCdzeXN0ZW0nKTtcbiAgICB9XG4gIH1cblxuICBhdXRvRGV0ZWN0VGhlbWVNb2RlKCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgbW9kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdBWF9USEVNRV9NT0RFJykgfHwgJ3N5c3RlbSc7XG4gICAgICBzd2l0Y2ggKG1vZGUpIHtcbiAgICAgICAgY2FzZSAnbGlnaHQnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnN3aXRjaExpZ2h0TW9kZSgpO1xuXG4gICAgICAgIGNhc2UgJ2RhcmsnOlxuICAgICAgICAgIHJldHVybiB0aGlzLnN3aXRjaERhcmtNb2RlKCk7XG5cbiAgICAgICAgY2FzZSAnc3lzdGVtJzpcbiAgICAgICAgICByZXR1cm4gdGhpcy5zd2l0Y2hTeXN0ZW1Nb2RlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2V0RnVsbEhlaWdodFJhdGlvKCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJzpyb290Jyk/LnN0eWxlLnNldFByb3BlcnR5KCctLWF4LXZoJywgd2luZG93LmlubmVySGVpZ2h0IC8gMTAwICsgJ3B4Jyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b1N5c3RlbU1vZGVEZXRlY3Rpb24oZXZlbnQpIHtcbiAgICBpZiAodGhpcy50aGVtZU1vZGUkLmdldFZhbHVlKCkgPT09ICdzeXN0ZW0nKSB7XG4gICAgICBjb25zdCB0aGVtZU1vZGUgPSBldmVudC5tYXRjaGVzID8gJ2RhcmsnIDogJ2xpZ2h0JztcblxuICAgICAgaWYgKHRoZW1lTW9kZSA9PT0gJ2RhcmsnKSB7XG4gICAgICAgIGNvbnN0IF9odG1sID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2h0bWwnKVswXTtcbiAgICAgICAgX2h0bWwuY2xhc3NMaXN0LmFkZCgnYXgtZGFyaycpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgX2h0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaHRtbCcpWzBdO1xuICAgICAgICBfaHRtbC5jbGFzc0xpc3QucmVtb3ZlKCdheC1kYXJrJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICBmcm9tRXZlbnQ8VUlFdmVudD4od2luZG93LCAncmVzaXplJylcbiAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgIC5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgICB0aGlzLnJlc2l6ZS5uZXh0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vXG4gICAgICAgICAgdGhpcy5fc2V0RnVsbEhlaWdodFJhdGlvKCk7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKHdpbmRvdz8ubWF0Y2hNZWRpYSgnKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKScpLm1hdGNoZXMpIHtcbiAgICAgICAgd2luZG93Py5tYXRjaE1lZGlhKCcocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspJyk/LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChldmVudCkgPT4ge1xuICAgICAgICAgIC8vIERldGVjdCBTeXN0ZW0gY29sb3IgbW9kZVxuICAgICAgICAgIHRoaXMuYXV0b1N5c3RlbU1vZGVEZXRlY3Rpb24oZXZlbnQpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdjbGljaycsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbGljay5uZXh0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBlLFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcblxuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgJ3Njcm9sbCcsXG4gICAgICAgIChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGwubmV4dCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaW5pdCBmdW5jdGlvbnNcbiAgICB0aGlzLl9zZXRGdWxsSGVpZ2h0UmF0aW8oKTtcbiAgfVxufVxuIl19
@@ -64,7 +64,9 @@ export class AXCookieStorageService {
64
64
  name = encodeURIComponent(name);
65
65
  const regExp = AXCookieStorageService.getCookieRegExp(name);
66
66
  const result = regExp.exec(this.document.cookie);
67
- return result[1] ? AXCookieStorageService.safeDecodeURIComponent(result[1]) : '';
67
+ return result[1]
68
+ ? AXCookieStorageService.safeDecodeURIComponent(result[1])
69
+ : '';
68
70
  }
69
71
  else {
70
72
  return '';
@@ -85,8 +87,7 @@ export class AXCookieStorageService {
85
87
  if (document.cookie && document.cookie !== '') {
86
88
  document.cookie.split(';').forEach((currentCookie) => {
87
89
  const [cookieName, cookieValue] = currentCookie.split('=');
88
- cookies[AXCookieStorageService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] =
89
- AXCookieStorageService.safeDecodeURIComponent(cookieValue);
90
+ cookies[AXCookieStorageService.safeDecodeURIComponent(cookieName.replace(/^ /, ''))] = AXCookieStorageService.safeDecodeURIComponent(cookieValue);
90
91
  });
91
92
  }
92
93
  return cookies;
@@ -157,7 +158,13 @@ export class AXCookieStorageService {
157
158
  return;
158
159
  }
159
160
  const expiresDate = new Date('Thu, 01 Jan 1970 00:00:01 GMT');
160
- this.set(name, '', { expires: expiresDate, path, domain, secure, sameSite });
161
+ this.set(name, '', {
162
+ expires: expiresDate,
163
+ path,
164
+ domain,
165
+ secure,
166
+ sameSite,
167
+ });
161
168
  }
162
169
  /**
163
170
  * Delete all cookies
@@ -180,10 +187,10 @@ export class AXCookieStorageService {
180
187
  }
181
188
  }
182
189
  }
183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXCookieStorageService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
184
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXCookieStorageService }); }
190
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXCookieStorageService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
191
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXCookieStorageService }); }
185
192
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXCookieStorageService, decorators: [{
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXCookieStorageService, decorators: [{
187
194
  type: Injectable
188
195
  }], ctorParameters: () => [{ type: Document, decorators: [{
189
196
  type: Inject,
@@ -192,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
192
199
  type: Inject,
193
200
  args: [PLATFORM_ID]
194
201
  }] }] });
195
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zdG9yYWdlL3NyYy9jb29raWUtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSWhFLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDNEIsUUFBa0I7SUFDNUMsK0RBQStEO0lBQ2xDLFVBQVU7UUFGYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRWYsZUFBVSxHQUFWLFVBQVUsQ0FBQTtRQUV2QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDekMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RSxPQUFPLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBMkI7UUFDL0QsSUFBSTtZQUNGLE9BQU8sa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztTQUNoRDtRQUFDLE1BQU07WUFDTiwrQ0FBK0M7WUFDL0MsT0FBTyxtQkFBbUIsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsSUFBWTtRQUNoQixJQUFJ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LFFBQVEsYUFFUixXQUFXO2tIQU5WLHNCQUFzQjs7MkZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVTs7MEJBS04sTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhDb29raWVPcHRpb25zLCBBWFNhbWVTaXRlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudElzQWNjZXNzaWJsZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAvLyBHZXQgdGhlIGBQTEFURk9STV9JRGAgc28gd2UgY2FuIGNoZWNrIGlmIHdlJ3JlIGluIGEgYnJvd3Nlci5cbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQsXG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWUgUmVndWxhciBFeHByZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IFJlZ0V4cFxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtbXFxde30oKXw9Oys/LC4qXiRdKS9naSwgJ1xcXFwkMScpO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoJyg/Ol4nICsgZXNjYXBlZE5hbWUgKyAnfDtcXFxccyonICsgZXNjYXBlZE5hbWUgKyAnKT0oLio/KSg/Ojt8JCknLCAnZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKiBAcGFyYW0gZW5jb2RlZFVSSUNvbXBvbmVudCBBIHZhbHVlIHJlcHJlc2VudGluZyBhbiBlbmNvZGVkIFVSSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHByb2JhYmx5IGl0IGlzIG5vdCB1cmkgZW5jb2RlZC4gcmV0dXJuIGFzIGlzXG4gICAgICByZXR1cm4gZW5jb2RlZFVSSUNvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICpcbiAgICovXG4gIGNoZWNrKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gQVhDb29raWVTdG9yYWdlU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgcmV0dXJuIHJlZ0V4cC50ZXN0KHRoaXMuZG9jdW1lbnQuY29va2llKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29va2llcyBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSAmJiB0aGlzLmNoZWNrKG5hbWUpKSB7XG4gICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuXG4gICAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IEFYQ29va2llU3RvcmFnZVNlcnZpY2UuZ2V0Q29va2llUmVnRXhwKG5hbWUpO1xuICAgICAgY29uc3QgcmVzdWx0OiBSZWdFeHBFeGVjQXJyYXkgPSByZWdFeHAuZXhlYyh0aGlzLmRvY3VtZW50LmNvb2tpZSk7XG5cbiAgICAgIHJldHVybiByZXN1bHRbMV0gPyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQocmVzdWx0WzFdKSA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgY29va2llcyBpbiBKU09OIGZvcm1hdFxuICAgKlxuICAgKiBAcmV0dXJucyBhbGwgdGhlIGNvb2tpZXMgaW4ganNvblxuICAgKlxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBkb2N1bWVudDogYW55ID0gdGhpcy5kb2N1bWVudDtcblxuICAgIGlmIChkb2N1bWVudC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llICE9PSAnJykge1xuICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZm9yRWFjaCgoY3VycmVudENvb2tpZSkgPT4ge1xuICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdCgnPScpO1xuICAgICAgICBjb29raWVzW0FYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVOYW1lLnJlcGxhY2UoL14gLywgJycpKV0gPVxuICAgICAgICAgIEFYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChjb29raWVWYWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29va2llcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lICAgICBDb29raWUgbmFtZVxuICAgKiBAcGFyYW0gdmFsdWUgICAgQ29va2llIHZhbHVlXG4gICAqIEBwYXJhbSBleHBpcmVzICBOdW1iZXIgb2YgZGF5cyB1bnRpbCB0aGUgY29va2llcyBleHBpcmVzIG9yIGFuIGFjdHVhbCBgRGF0ZWBcbiAgICogQHBhcmFtIHBhdGggICAgIENvb2tpZSBwYXRoXG4gICAqIEBwYXJhbSBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgICBTZWN1cmUgZmxhZ1xuICAgKiBAcGFyYW0gc2FtZVNpdGUgT1dBU1Agc2FtZXNpdGUgdG9rZW4gYExheGAsIGBOb25lYCwgb3IgYFN0cmljdGAuIERlZmF1bHRzIHRvIGBMYXhgXG4gICAqXG4gICAqL1xuICBzZXQoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgZXhwaXJlcz86IEFYQ29va2llT3B0aW9uc1snZXhwaXJlcyddLFxuICAgIHBhdGg/OiBBWENvb2tpZU9wdGlvbnNbJ3BhdGgnXSxcbiAgICBkb21haW4/OiBBWENvb2tpZU9wdGlvbnNbJ2RvbWFpbiddLFxuICAgIHNlY3VyZT86IEFYQ29va2llT3B0aW9uc1snc2VjdXJlJ10sXG4gICAgc2FtZVNpdGU/OiBBWFNhbWVTaXRlLFxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XG4gICAqIDxwcmU+XG4gICAqIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIHNlY3VyZSAgIFNlY3VyZSBmbGFnXG4gICAqIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKiA8L3ByZT5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnMgIEJvZHkgd2l0aCBjb29raWUncyBwYXJhbXNcbiAgICpcbiAgICovXG4gIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBBWENvb2tpZU9wdGlvbnMpOiB2b2lkO1xuXG4gIHNldChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBleHBpcmVzT3JPcHRpb25zPzogQVhDb29raWVPcHRpb25zWydleHBpcmVzJ10gfCBBWENvb2tpZU9wdGlvbnMsXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZT86IEFYU2FtZVNpdGUsXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBleHBpcmVzT3JPcHRpb25zID09PSAnbnVtYmVyJyB8fFxuICAgICAgZXhwaXJlc09yT3B0aW9ucyBpbnN0YW5jZW9mIERhdGUgfHxcbiAgICAgIHBhdGggfHxcbiAgICAgIGRvbWFpbiB8fFxuICAgICAgc2VjdXJlIHx8XG4gICAgICBzYW1lU2l0ZVxuICAgICkge1xuICAgICAgY29uc3Qgb3B0aW9uc0JvZHkgPSB7XG4gICAgICAgIGV4cGlyZXM6IGV4cGlyZXNPck9wdGlvbnMgYXMgQVhDb29raWVPcHRpb25zWydleHBpcmVzJ10sXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGRvbWFpbixcbiAgICAgICAgc2VjdXJlLFxuICAgICAgICBzYW1lU2l0ZTogc2FtZVNpdGUgPyBzYW1lU2l0ZSA6ICdMYXgnLFxuICAgICAgfTtcblxuICAgICAgdGhpcy5zZXQobmFtZSwgdmFsdWUsIG9wdGlvbnNCb2R5KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgY29va2llU3RyaW5nOiBzdHJpbmcgPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgJzsnO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4cGlyZXNPck9wdGlvbnMgPyBleHBpcmVzT3JPcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgZGF0ZUV4cGlyZXM6IERhdGUgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLmdldFRpbWUoKSArIG9wdGlvbnMuZXhwaXJlcyAqIDEwMDAgKiA2MCAqIDYwICogMjQpO1xuXG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgZGF0ZUV4cGlyZXMudG9VVENTdHJpbmcoKSArICc7JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvb2tpZVN0cmluZyArPSAnZXhwaXJlcz0nICsgb3B0aW9ucy5leHBpcmVzLnRvVVRDU3RyaW5nKCkgKyAnOyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucGF0aCkge1xuICAgICAgY29va2llU3RyaW5nICs9ICdwYXRoPScgKyBvcHRpb25zLnBhdGggKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZG9tYWluKSB7XG4gICAgICBjb29raWVTdHJpbmcgKz0gJ2RvbWFpbj0nICsgb3B0aW9ucy5kb21haW4gKyAnOyc7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VjdXJlID09PSBmYWxzZSAmJiBvcHRpb25zLnNhbWVTaXRlID09PSAnTm9uZScpIHtcbiAgICAgIG9wdGlvbnMuc2VjdXJlID0gdHJ1ZTtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYFtuZ3gtY29va2llLXNlcnZpY2VdIENvb2tpZSAke25hbWV9IHdhcyBmb3JjZWQgd2l0aCBzZWN1cmUgZmxhZyBiZWNhdXNlIHNhbWVTaXRlPU5vbmUuYCArXG4gICAgICAgICAgYE1vcmUgZGV0YWlscyA6IGh0dHBzOi8vZ2l0aHViLmNvbS9zdGV2ZXJtZWlzdGVyL25neC1jb29raWUtc2VydmljZS9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTU5NzcyMDEzMGAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnc2VjdXJlOyc7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNhbWVTaXRlKSB7XG4gICAgICBvcHRpb25zLnNhbWVTaXRlID0gJ0xheCc7XG4gICAgfVxuXG4gICAgY29va2llU3RyaW5nICs9ICdzYW1lU2l0ZT0nICsgb3B0aW9ucy5zYW1lU2l0ZSArICc7JztcblxuICAgIHRoaXMuZG9jdW1lbnQuY29va2llID0gY29va2llU3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBjb29raWUgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgQ29va2llIHNlY3VyZSBmbGFnXG4gICAqIEBwYXJhbSBzYW1lU2l0ZSBDb29raWUgc2FtZVNpdGUgZmxhZyAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9TZXQtQ29va2llL1NhbWVTaXRlXG4gICAqXG4gICAqL1xuICBkZWxldGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhdGg/OiBBWENvb2tpZU9wdGlvbnNbJ3BhdGgnXSxcbiAgICBkb21haW4/OiBBWENvb2tpZU9wdGlvbnNbJ2RvbWFpbiddLFxuICAgIHNlY3VyZT86IEFYQ29va2llT3B0aW9uc1snc2VjdXJlJ10sXG4gICAgc2FtZVNpdGU6IEFYU2FtZVNpdGUgPSAnTGF4JyxcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGV4cGlyZXNEYXRlID0gbmV3IERhdGUoJ1RodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UJyk7XG4gICAgdGhpcy5zZXQobmFtZSwgJycsIHsgZXhwaXJlczogZXhwaXJlc0RhdGUsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgYWxsIGNvb2tpZXNcbiAgICpcbiAgICogQHBhcmFtIHBhdGggICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluIENvb2tpZSBkb21haW5cbiAgICogQHBhcmFtIHNlY3VyZSBJcyB0aGUgQ29va2llIHNlY3VyZVxuICAgKiBAcGFyYW0gc2FtZVNpdGUgSXMgdGhlIGNvb2tpZSBzYW1lIHNpdGVcbiAgICpcbiAgICovXG4gIGRlbGV0ZUFsbChcbiAgICBwYXRoPzogQVhDb29raWVPcHRpb25zWydwYXRoJ10sXG4gICAgZG9tYWluPzogQVhDb29raWVPcHRpb25zWydkb21haW4nXSxcbiAgICBzZWN1cmU/OiBBWENvb2tpZU9wdGlvbnNbJ3NlY3VyZSddLFxuICAgIHNhbWVTaXRlOiBBWFNhbWVTaXRlID0gJ0xheCcsXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXMgPSB0aGlzLmdldEFsbCgpO1xuXG4gICAgZm9yIChjb25zdCBjb29raWVOYW1lIGluIGNvb2tpZXMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIGlmIChjb29raWVzLmhhc093blByb3BlcnR5KGNvb2tpZU5hbWUpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGNvb2tpZU5hbWUsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llLXN0b3JhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zdG9yYWdlL3NyYy9jb29raWUtc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSWhFLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFDNEIsUUFBa0I7SUFDNUMsK0RBQStEO0lBQ2xDLFVBQVU7UUFGYixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRWYsZUFBVSxHQUFWLFVBQVUsQ0FBQTtRQUV2QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQVk7UUFDekMsTUFBTSxXQUFXLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUU1RSxPQUFPLElBQUksTUFBTSxDQUNmLE1BQU0sR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFdBQVcsR0FBRyxnQkFBZ0IsRUFDaEUsR0FBRyxDQUNKLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxtQkFBMkI7UUFDL0QsSUFBSSxDQUFDO1lBQ0gsT0FBTyxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCwrQ0FBK0M7WUFDL0MsT0FBTyxtQkFBbUIsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUss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SSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxpREFBaUQ7WUFDakQsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzFELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs4R0E5UlUsc0JBQXNCLGtCQUl2QixRQUFRLGFBRVIsV0FBVztrSEFOVixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQUtOLE1BQU07MkJBQUMsUUFBUTs7MEJBRWYsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYQ29va2llT3B0aW9ucywgQVhTYW1lU2l0ZSB9IGZyb20gJy4vc3RvcmFnZS5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhDb29raWVTdG9yYWdlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnRJc0FjY2Vzc2libGU6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgLy8gR2V0IHRoZSBgUExBVEZPUk1fSURgIHNvIHdlIGNhbiBjaGVjayBpZiB3ZSdyZSBpbiBhIGJyb3dzZXIuXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkXG4gICkge1xuICAgIHRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUgPSBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjb29raWUgUmVndWxhciBFeHByZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IFJlZ0V4cFxuICAgKlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0Q29va2llUmVnRXhwKG5hbWU6IHN0cmluZyk6IFJlZ0V4cCB7XG4gICAgY29uc3QgZXNjYXBlZE5hbWU6IHN0cmluZyA9IG5hbWUucmVwbGFjZSgvKFtbXFxde30oKXw9Oys/LC4qXiRdKS9naSwgJ1xcXFwkMScpO1xuXG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoXG4gICAgICAnKD86XicgKyBlc2NhcGVkTmFtZSArICd8O1xcXFxzKicgKyBlc2NhcGVkTmFtZSArICcpPSguKj8pKD86O3wkKScsXG4gICAgICAnZydcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHVuZW5jb2RlZCB2ZXJzaW9uIG9mIGFuIGVuY29kZWQgY29tcG9uZW50IG9mIGEgVW5pZm9ybSBSZXNvdXJjZSBJZGVudGlmaWVyIChVUkkpLlxuICAgKlxuICAgKiBAcGFyYW0gZW5jb2RlZFVSSUNvbXBvbmVudCBBIHZhbHVlIHJlcHJlc2VudGluZyBhbiBlbmNvZGVkIFVSSSBjb21wb25lbnQuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSB1bmVuY29kZWQgdmVyc2lvbiBvZiBhbiBlbmNvZGVkIGNvbXBvbmVudCBvZiBhIFVuaWZvcm0gUmVzb3VyY2UgSWRlbnRpZmllciAoVVJJKS5cbiAgICpcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHNhZmVEZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSUNvbXBvbmVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJQ29tcG9uZW50KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIHByb2JhYmx5IGl0IGlzIG5vdCB1cmkgZW5jb2RlZC4gcmV0dXJuIGFzIGlzXG4gICAgICByZXR1cm4gZW5jb2RlZFVSSUNvbXBvbmVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGB0cnVlYCBpZiB7QGxpbmsgRG9jdW1lbnR9IGlzIGFjY2Vzc2libGUsIG90aGVyd2lzZSByZXR1cm4gYGZhbHNlYFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBDb29raWUgbmFtZVxuICAgKiBAcmV0dXJucyBib29sZWFuIC0gd2hldGhlciBjb29raWUgd2l0aCBzcGVjaWZpZWQgbmFtZSBleGlzdHNcbiAgICpcbiAgICovXG4gIGNoZWNrKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuICAgIGNvbnN0IHJlZ0V4cDogUmVnRXhwID0gQVhDb29raWVTdG9yYWdlU2VydmljZS5nZXRDb29raWVSZWdFeHAobmFtZSk7XG4gICAgcmV0dXJuIHJlZ0V4cC50ZXN0KHRoaXMuZG9jdW1lbnQuY29va2llKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY29va2llcyBieSBuYW1lXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIENvb2tpZSBuYW1lXG4gICAqIEByZXR1cm5zIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqL1xuICBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSAmJiB0aGlzLmNoZWNrKG5hbWUpKSB7XG4gICAgICBuYW1lID0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpO1xuXG4gICAgICBjb25zdCByZWdFeHA6IFJlZ0V4cCA9IEFYQ29va2llU3RvcmFnZVNlcnZpY2UuZ2V0Q29va2llUmVnRXhwKG5hbWUpO1xuICAgICAgY29uc3QgcmVzdWx0OiBSZWdFeHBFeGVjQXJyYXkgPSByZWdFeHAuZXhlYyh0aGlzLmRvY3VtZW50LmNvb2tpZSk7XG5cbiAgICAgIHJldHVybiByZXN1bHRbMV1cbiAgICAgICAgPyBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQocmVzdWx0WzFdKVxuICAgICAgICA6ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgY29va2llcyBpbiBKU09OIGZvcm1hdFxuICAgKlxuICAgKiBAcmV0dXJucyBhbGwgdGhlIGNvb2tpZXMgaW4ganNvblxuICAgKlxuICAgKi9cbiAgZ2V0QWxsKCk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0ge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcbiAgICBjb25zdCBkb2N1bWVudDogYW55ID0gdGhpcy5kb2N1bWVudDtcblxuICAgIGlmIChkb2N1bWVudC5jb29raWUgJiYgZG9jdW1lbnQuY29va2llICE9PSAnJykge1xuICAgICAgZG9jdW1lbnQuY29va2llLnNwbGl0KCc7JykuZm9yRWFjaCgoY3VycmVudENvb2tpZSkgPT4ge1xuICAgICAgICBjb25zdCBbY29va2llTmFtZSwgY29va2llVmFsdWVdID0gY3VycmVudENvb2tpZS5zcGxpdCgnPScpO1xuICAgICAgICBjb29raWVzW1xuICAgICAgICAgIEFYQ29va2llU3RvcmFnZVNlcnZpY2Uuc2FmZURlY29kZVVSSUNvbXBvbmVudChcbiAgICAgICAgICAgIGNvb2tpZU5hbWUucmVwbGFjZSgvXiAvLCAnJylcbiAgICAgICAgICApXG4gICAgICAgIF0gPSBBWENvb2tpZVN0b3JhZ2VTZXJ2aWNlLnNhZmVEZWNvZGVVUklDb21wb25lbnQoY29va2llVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvb2tpZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0IGNvb2tpZSBiYXNlZCBvbiBwcm92aWRlZCBpbmZvcm1hdGlvblxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgICAgQ29va2llIG5hbWVcbiAgICogQHBhcmFtIHZhbHVlICAgIENvb2tpZSB2YWx1ZVxuICAgKiBAcGFyYW0gZXhwaXJlcyAgTnVtYmVyIG9mIGRheXMgdW50aWwgdGhlIGNvb2tpZXMgZXhwaXJlcyBvciBhbiBhY3R1YWwgYERhdGVgXG4gICAqIEBwYXJhbSBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBAcGFyYW0gZG9tYWluICAgQ29va2llIGRvbWFpblxuICAgKiBAcGFyYW0gc2VjdXJlICAgU2VjdXJlIGZsYWdcbiAgICogQHBhcmFtIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKlxuICAgKi9cbiAgc2V0KFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB2YWx1ZTogc3RyaW5nLFxuICAgIGV4cGlyZXM/OiBBWENvb2tpZU9wdGlvbnNbJ2V4cGlyZXMnXSxcbiAgICBwYXRoPzogQVhDb29raWVPcHRpb25zWydwYXRoJ10sXG4gICAgZG9tYWluPzogQVhDb29raWVPcHRpb25zWydkb21haW4nXSxcbiAgICBzZWN1cmU/OiBBWENvb2tpZU9wdGlvbnNbJ3NlY3VyZSddLFxuICAgIHNhbWVTaXRlPzogQVhTYW1lU2l0ZVxuICApOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTZXQgY29va2llIGJhc2VkIG9uIHByb3ZpZGVkIGluZm9ybWF0aW9uXG4gICAqXG4gICAqIENvb2tpZSdzIHBhcmFtZXRlcnM6XG4gICAqIDxwcmU+XG4gICAqIGV4cGlyZXMgIE51bWJlciBvZiBkYXlzIHVudGlsIHRoZSBjb29raWVzIGV4cGlyZXMgb3IgYW4gYWN0dWFsIGBEYXRlYFxuICAgKiBwYXRoICAgICBDb29raWUgcGF0aFxuICAgKiBkb21haW4gICBDb29raWUgZG9tYWluXG4gICAqIHNlY3VyZSAgIFNlY3VyZSBmbGFnXG4gICAqIHNhbWVTaXRlIE9XQVNQIHNhbWVzaXRlIHRva2VuIGBMYXhgLCBgTm9uZWAsIG9yIGBTdHJpY3RgLiBEZWZhdWx0cyB0byBgTGF4YFxuICAgKiA8L3ByZT5cbiAgICpcbiAgICogQHBhcmFtIG5hbWUgICAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSB2YWx1ZSAgICBDb29raWUgdmFsdWVcbiAgICogQHBhcmFtIG9wdGlvbnMgIEJvZHkgd2l0aCBjb29raWUncyBwYXJhbXNcbiAgICpcbiAgICovXG4gIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIG9wdGlvbnM/OiBBWENvb2tpZU9wdGlvbnMpOiB2b2lkO1xuXG4gIHNldChcbiAgICBuYW1lOiBzdHJpbmcsXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBleHBpcmVzT3JPcHRpb25zPzogQVhDb29raWVPcHRpb25zWydleHBpcmVzJ10gfCBBWENvb2tpZU9wdGlvbnMsXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZT86IEFYU2FtZVNpdGVcbiAgKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRvY3VtZW50SXNBY2Nlc3NpYmxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdHlwZW9mIGV4cGlyZXNPck9wdGlvbnMgPT09ICdudW1iZXInIHx8XG4gICAgICBleHBpcmVzT3JPcHRpb25zIGluc3RhbmNlb2YgRGF0ZSB8fFxuICAgICAgcGF0aCB8fFxuICAgICAgZG9tYWluIHx8XG4gICAgICBzZWN1cmUgfHxcbiAgICAgIHNhbWVTaXRlXG4gICAgKSB7XG4gICAgICBjb25zdCBvcHRpb25zQm9keSA9IHtcbiAgICAgICAgZXhwaXJlczogZXhwaXJlc09yT3B0aW9ucyBhcyBBWENvb2tpZU9wdGlvbnNbJ2V4cGlyZXMnXSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZG9tYWluLFxuICAgICAgICBzZWN1cmUsXG4gICAgICAgIHNhbWVTaXRlOiBzYW1lU2l0ZSA/IHNhbWVTaXRlIDogJ0xheCcsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnNldChuYW1lLCB2YWx1ZSwgb3B0aW9uc0JvZHkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBjb29raWVTdHJpbmc6IHN0cmluZyA9XG4gICAgICBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgJzsnO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGV4cGlyZXNPck9wdGlvbnMgPyBleHBpcmVzT3JPcHRpb25zIDoge307XG5cbiAgICBpZiAob3B0aW9ucy5leHBpcmVzKSB7XG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMuZXhwaXJlcyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgY29uc3QgZGF0ZUV4cGlyZXM6IERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIG9wdGlvbnMuZXhwaXJlcyAqIDEwMDAgKiA2MCAqIDYwICogMjRcbiAgICAgICAgKTtcblxuICAgICAgICBjb29raWVTdHJpbmcgKz0gJ2V4cGlyZXM9JyArIGRhdGVFeHBpcmVzLnRvVVRDU3RyaW5nKCkgKyAnOyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb29raWVTdHJpbmcgKz0gJ2V4cGlyZXM9JyArIG9wdGlvbnMuZXhwaXJlcy50b1VUQ1N0cmluZygpICsgJzsnO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnBhdGgpIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAncGF0aD0nICsgb3B0aW9ucy5wYXRoICsgJzsnO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRvbWFpbikge1xuICAgICAgY29va2llU3RyaW5nICs9ICdkb21haW49JyArIG9wdGlvbnMuZG9tYWluICsgJzsnO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zLnNlY3VyZSA9PT0gZmFsc2UgJiYgb3B0aW9ucy5zYW1lU2l0ZSA9PT0gJ05vbmUnKSB7XG4gICAgICBvcHRpb25zLnNlY3VyZSA9IHRydWU7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBbbmd4LWNvb2tpZS1zZXJ2aWNlXSBDb29raWUgJHtuYW1lfSB3YXMgZm9yY2VkIHdpdGggc2VjdXJlIGZsYWcgYmVjYXVzZSBzYW1lU2l0ZT1Ob25lLmAgK1xuICAgICAgICAgIGBNb3JlIGRldGFpbHMgOiBodHRwczovL2dpdGh1Yi5jb20vc3RldmVybWVpc3Rlci9uZ3gtY29va2llLXNlcnZpY2UvaXNzdWVzLzg2I2lzc3VlY29tbWVudC01OTc3MjAxMzBgXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWN1cmUpIHtcbiAgICAgIGNvb2tpZVN0cmluZyArPSAnc2VjdXJlOyc7XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNhbWVTaXRlKSB7XG4gICAgICBvcHRpb25zLnNhbWVTaXRlID0gJ0xheCc7XG4gICAgfVxuXG4gICAgY29va2llU3RyaW5nICs9ICdzYW1lU2l0ZT0nICsgb3B0aW9ucy5zYW1lU2l0ZSArICc7JztcblxuICAgIHRoaXMuZG9jdW1lbnQuY29va2llID0gY29va2llU3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBjb29raWUgYnkgbmFtZVxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAgIENvb2tpZSBuYW1lXG4gICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgQ29va2llIHNlY3VyZSBmbGFnXG4gICAqIEBwYXJhbSBzYW1lU2l0ZSBDb29raWUgc2FtZVNpdGUgZmxhZyAtIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvSGVhZGVycy9TZXQtQ29va2llL1NhbWVTaXRlXG4gICAqXG4gICAqL1xuICBkZWxldGUoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHBhdGg/OiBBWENvb2tpZU9wdGlvbnNbJ3BhdGgnXSxcbiAgICBkb21haW4/OiBBWENvb2tpZU9wdGlvbnNbJ2RvbWFpbiddLFxuICAgIHNlY3VyZT86IEFYQ29va2llT3B0aW9uc1snc2VjdXJlJ10sXG4gICAgc2FtZVNpdGU6IEFYU2FtZVNpdGUgPSAnTGF4J1xuICApOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZG9jdW1lbnRJc0FjY2Vzc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgZXhwaXJlc0RhdGUgPSBuZXcgRGF0ZSgnVGh1LCAwMSBKYW4gMTk3MCAwMDowMDowMSBHTVQnKTtcbiAgICB0aGlzLnNldChuYW1lLCAnJywge1xuICAgICAgZXhwaXJlczogZXhwaXJlc0RhdGUsXG4gICAgICBwYXRoLFxuICAgICAgZG9tYWluLFxuICAgICAgc2VjdXJlLFxuICAgICAgc2FtZVNpdGUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFsbCBjb29raWVzXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoICAgQ29va2llIHBhdGhcbiAgICogQHBhcmFtIGRvbWFpbiBDb29raWUgZG9tYWluXG4gICAqIEBwYXJhbSBzZWN1cmUgSXMgdGhlIENvb2tpZSBzZWN1cmVcbiAgICogQHBhcmFtIHNhbWVTaXRlIElzIHRoZSBjb29raWUgc2FtZSBzaXRlXG4gICAqXG4gICAqL1xuICBkZWxldGVBbGwoXG4gICAgcGF0aD86IEFYQ29va2llT3B0aW9uc1sncGF0aCddLFxuICAgIGRvbWFpbj86IEFYQ29va2llT3B0aW9uc1snZG9tYWluJ10sXG4gICAgc2VjdXJlPzogQVhDb29raWVPcHRpb25zWydzZWN1cmUnXSxcbiAgICBzYW1lU2l0ZTogQVhTYW1lU2l0ZSA9ICdMYXgnXG4gICk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kb2N1bWVudElzQWNjZXNzaWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvb2tpZXMgPSB0aGlzLmdldEFsbCgpO1xuXG4gICAgZm9yIChjb25zdCBjb29raWVOYW1lIGluIGNvb2tpZXMpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICAgIGlmIChjb29raWVzLmhhc093blByb3BlcnR5KGNvb2tpZU5hbWUpKSB7XG4gICAgICAgIHRoaXMuZGVsZXRlKGNvb2tpZU5hbWUsIHBhdGgsIGRvbWFpbiwgc2VjdXJlLCBzYW1lU2l0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,22 +1,58 @@
1
- import { Injectable } from '@angular/core';
1
+ import { isBrowser } from '@acorex/core/platform';
2
+ import { Inject, Injectable, InjectionToken } from '@angular/core';
3
+ import * as CryptoJS from 'crypto-js';
2
4
  import * as i0 from "@angular/core";
5
+ export const AX_LOCALSTORAGE_SECRET_KEY = new InjectionToken('AX_LOCALSTORAGE_SECRET_KEY');
3
6
  export class AXLocalStorageService {
7
+ constructor(secret_key) {
8
+ this.secret_key = secret_key;
9
+ }
4
10
  get(key) {
5
- return JSON.parse(localStorage.getItem(key) || '');
11
+ if (isBrowser()) {
12
+ return JSON.parse(localStorage.getItem(key) || '');
13
+ }
14
+ else {
15
+ return null;
16
+ }
6
17
  }
7
18
  set(key, value) {
8
- return localStorage.setItem(key, JSON.stringify(value));
19
+ if (isBrowser()) {
20
+ return localStorage.setItem(key, JSON.stringify(value));
21
+ }
9
22
  }
10
23
  clear() {
11
- return localStorage.clear();
24
+ if (isBrowser()) {
25
+ return localStorage.clear();
26
+ }
12
27
  }
13
28
  removeItem(key) {
14
- return localStorage.removeItem(key);
29
+ if (isBrowser()) {
30
+ return localStorage.removeItem(key);
31
+ }
32
+ }
33
+ setWithEncryption(key, value) {
34
+ if (isBrowser()) {
35
+ const encrypted = CryptoJS.AES.encrypt(JSON.stringify(value), this.secret_key).toString();
36
+ return localStorage.setItem(key, encrypted);
37
+ }
38
+ }
39
+ getWithEncription(key) {
40
+ if (isBrowser()) {
41
+ const encrypted = localStorage.getItem(key) || '';
42
+ const decrypted = CryptoJS.AES.decrypt(encrypted, this.secret_key).toString(CryptoJS.enc.Utf8);
43
+ return encrypted ? JSON.parse(decrypted) : {};
44
+ }
45
+ else {
46
+ return null;
47
+ }
15
48
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXLocalStorageService }); }
49
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXLocalStorageService, deps: [{ token: AX_LOCALSTORAGE_SECRET_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); }
50
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXLocalStorageService }); }
18
51
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXLocalStorageService, decorators: [{
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXLocalStorageService, decorators: [{
20
53
  type: Injectable
21
- }] });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3N0b3JhZ2Uvc3JjL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLEdBQUcsQ0FBYyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxHQUFHLENBQWMsR0FBVyxFQUFFLEtBQVE7UUFDcEMsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBZlUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIEFYU3RvcmFnZSB7XG4gIGdldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICcnKTtcbiAgfVxuXG4gIHNldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxufVxuIl19
54
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
55
+ type: Inject,
56
+ args: [AX_LOCALSTORAGE_SECRET_KEY]
57
+ }] }] });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3N0b3JhZ2Uvc3JjL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25FLE9BQU8sS0FBSyxRQUFRLE1BQU0sV0FBVyxDQUFDOztBQUd0QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBMkIsSUFBSSxjQUFjLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUduSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQXdELFVBQWtCO1FBQWxCLGVBQVUsR0FBVixVQUFVLENBQVE7SUFBRyxDQUFDO0lBRTlFLEdBQUcsQ0FBYyxHQUFXO1FBQzFCLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7SUFFRCxHQUFHLENBQWMsR0FBVyxFQUFFLEtBQVE7UUFDcEMsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBYyxHQUFXLEVBQUUsS0FBUTtRQUNsRCxJQUFJLFNBQVMsRUFBRSxFQUFFLENBQUM7WUFDaEIsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDMUYsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM5QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixDQUFjLEdBQVc7UUFDeEMsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0YsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztJQUNILENBQUM7OEdBNUNVLHFCQUFxQixrQkFDWiwwQkFBMEI7a0hBRG5DLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVTs7MEJBRUksTUFBTTsyQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc0Jyb3dzZXIgfSBmcm9tICdAYWNvcmV4L2NvcmUvcGxhdGZvcm0nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcbmltcG9ydCB7IEFYU3RvcmFnZSB9IGZyb20gJy4vc3RvcmFnZS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgQVhfTE9DQUxTVE9SQUdFX1NFQ1JFVF9LRVk6IEluamVjdGlvblRva2VuPHN0cmluZz4gPSBuZXcgSW5qZWN0aW9uVG9rZW4oJ0FYX0xPQ0FMU1RPUkFHRV9TRUNSRVRfS0VZJyk7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWExvY2FsU3RvcmFnZVNlcnZpY2UgaW1wbGVtZW50cyBBWFN0b3JhZ2Uge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KEFYX0xPQ0FMU1RPUkFHRV9TRUNSRVRfS0VZKSBwcml2YXRlIHNlY3JldF9rZXk6IHN0cmluZykge31cblxuICBnZXQ8VCA9IHVua25vd24+KGtleTogc3RyaW5nKTogVCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICcnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAoaXNCcm93c2VyKCkpIHtcbiAgICAgIHJldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgaWYgKGlzQnJvd3NlcigpKSB7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmNsZWFyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZykge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgfVxuICB9XG5cbiAgc2V0V2l0aEVuY3J5cHRpb248VCA9IHVua25vd24+KGtleTogc3RyaW5nLCB2YWx1ZTogVCkge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgZW5jcnlwdGVkID0gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoSlNPTi5zdHJpbmdpZnkodmFsdWUpLCB0aGlzLnNlY3JldF9rZXkpLnRvU3RyaW5nKCk7XG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCBlbmNyeXB0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGdldFdpdGhFbmNyaXB0aW9uPFQgPSB1bmtub3duPihrZXk6IHN0cmluZyk6IFQge1xuICAgIGlmIChpc0Jyb3dzZXIoKSkge1xuICAgICAgY29uc3QgZW5jcnlwdGVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSB8fCAnJztcbiAgICAgIGNvbnN0IGRlY3J5cHRlZCA9IENyeXB0b0pTLkFFUy5kZWNyeXB0KGVuY3J5cHRlZCwgdGhpcy5zZWNyZXRfa2V5KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XG4gICAgICByZXR1cm4gZW5jcnlwdGVkID8gSlNPTi5wYXJzZShkZWNyeXB0ZWQpIDoge307XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -13,10 +13,10 @@ export class AXSessionStorageService {
13
13
  removeItem(key) {
14
14
  return sessionStorage.removeItem(key);
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXSessionStorageService }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXSessionStorageService }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXSessionStorageService, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXSessionStorageService, decorators: [{
20
20
  type: Injectable
21
21
  }] });
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3RvcmFnZS9zcmMvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxHQUFHLENBQWMsR0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsR0FBRyxDQUFjLEdBQVcsRUFBRSxLQUFRO1FBQ3BDLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQWZVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFNlc3Npb25TdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIEFYU3RvcmFnZSB7XG4gIGdldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpO1xuICB9XG5cbiAgc2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICB9XG59XG4iXX0=
@@ -1,6 +1,6 @@
1
- import { inject } from "@angular/core";
2
- import { AXTranslationService } from "./translation.service";
3
- import { AX_TRANSLATION_CONFIG } from "./translation.config";
1
+ import { inject } from '@angular/core';
2
+ import { AXTranslationService } from './translation.service';
3
+ import { AX_TRANSLATION_CONFIG } from './translation.config';
4
4
  export const loadTranslationScope = (route, state) => {
5
5
  const translatorService = inject(AXTranslationService);
6
6
  const config = inject(AX_TRANSLATION_CONFIG);
@@ -8,4 +8,4 @@ export const loadTranslationScope = (route, state) => {
8
8
  const scopes = Array.isArray(scopeValue) ? scopeValue : [scopeValue];
9
9
  return translatorService.loadLanguagesAndScopes([translatorService.getActiveLang()], scopes);
10
10
  };
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi1zY29wZS5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUNyRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLE9BQU8saUJBQWlCLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2pHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gXCIuL3RyYW5zbGF0aW9uLnNlcnZpY2VcIjtcbmltcG9ydCB7IFJlc29sdmVGbiB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IEFYX1RSQU5TTEFUSU9OX0NPTkZJRyB9IGZyb20gXCIuL3RyYW5zbGF0aW9uLmNvbmZpZ1wiO1xuXG5leHBvcnQgY29uc3QgbG9hZFRyYW5zbGF0aW9uU2NvcGU6IFJlc29sdmVGbjx1bmtub3duPiA9IChyb3V0ZSwgc3RhdGUpID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdG9yU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gICAgY29uc3QgY29uZmlnID0gaW5qZWN0KEFYX1RSQU5TTEFUSU9OX0NPTkZJRyk7XG4gICAgY29uc3Qgc2NvcGVWYWx1ZSA9IHJvdXRlLmRhdGFbY29uZmlnLnNjb3BlUmVzb2x2ZXJLZXldO1xuICAgIGNvbnN0IHNjb3BlcyA9IEFycmF5LmlzQXJyYXkoc2NvcGVWYWx1ZSkgPyBzY29wZVZhbHVlIDogW3Njb3BlVmFsdWVdO1xuICAgIHJldHVybiB0cmFuc2xhdG9yU2VydmljZS5sb2FkTGFuZ3VhZ2VzQW5kU2NvcGVzKFt0cmFuc2xhdG9yU2VydmljZS5nZXRBY3RpdmVMYW5nKCldLCBzY29wZXMpO1xufTsiXX0=
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tc2NvcGUucmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdHJhbnNsYXRpb24vc3JjL2xpYi90cmFuc2xhdGlvbi1zY29wZS5yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF1QixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUN2RSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDdkQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3JFLE9BQU8saUJBQWlCLENBQUMsc0JBQXNCLENBQzdDLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDbkMsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFJlc29sdmVGbiB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBWF9UUkFOU0xBVElPTl9DT05GSUcgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbmZpZyc7XG5cbmV4cG9ydCBjb25zdCBsb2FkVHJhbnNsYXRpb25TY29wZTogUmVzb2x2ZUZuPHVua25vd24+ID0gKHJvdXRlLCBzdGF0ZSkgPT4ge1xuICBjb25zdCB0cmFuc2xhdG9yU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIGNvbnN0IGNvbmZpZyA9IGluamVjdChBWF9UUkFOU0xBVElPTl9DT05GSUcpO1xuICBjb25zdCBzY29wZVZhbHVlID0gcm91dGUuZGF0YVtjb25maWcuc2NvcGVSZXNvbHZlcktleV07XG4gIGNvbnN0IHNjb3BlcyA9IEFycmF5LmlzQXJyYXkoc2NvcGVWYWx1ZSkgPyBzY29wZVZhbHVlIDogW3Njb3BlVmFsdWVdO1xuICByZXR1cm4gdHJhbnNsYXRvclNlcnZpY2UubG9hZExhbmd1YWdlc0FuZFNjb3BlcyhcbiAgICBbdHJhbnNsYXRvclNlcnZpY2UuZ2V0QWN0aXZlTGFuZygpXSxcbiAgICBzY29wZXNcbiAgKTtcbn07XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { InjectionToken } from "@angular/core";
1
+ import { InjectionToken } from '@angular/core';
2
2
  export const AX_TRANSLATION_CONFIG = new InjectionToken('AX_TRANSLATION_CONFIG', {
3
3
  providedIn: 'root',
4
4
  factory: () => {
@@ -17,4 +17,4 @@ export function translationConfig(config = {}) {
17
17
  };
18
18
  return result;
19
19
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFjL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHVCQUF1QixFQUFFO0lBQ2xHLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDVixPQUFPLDBCQUEwQixDQUFDO0lBQ3RDLENBQUM7Q0FDSixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBd0I7SUFDM0QsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLFFBQVE7SUFDdEIsZ0JBQWdCLEVBQUUsT0FBTztDQUM1QixDQUFDO0FBSUYsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFNBQXFDLEVBQUU7SUFDckUsTUFBTSxNQUFNLEdBQUc7UUFDWCxHQUFHLDBCQUEwQjtRQUM3QixHQUFHLE1BQU07S0FDWixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRlTGFuZywgQVhUcmFuc2xhdGVTY29wZSB9IGZyb20gXCIuL3RyYW5zbGF0aW9uLnR5cGVzXCI7XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Db25maWcge1xuICAgIGRlZmF1bHRMYW5nOiBBWFRyYW5zbGF0ZUxhbmcsXG4gICAgZGVmYXVsdFNjb3BlOiBBWFRyYW5zbGF0ZVNjb3BlLFxuICAgIHByZWxvYWRMYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdLFxuICAgIHByZWxvYWRTY29wZXM/OiBBWFRyYW5zbGF0ZUxhbmdbXSxcbiAgICBhdmFpbGFibGVMYW5ncz86IEFYVHJhbnNsYXRlTGFuZ1tdLFxuICAgIHNjb3BlUmVzb2x2ZXJLZXk6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KCdBWF9UUkFOU0xBVElPTl9DT05GSUcnLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgcmV0dXJuIEFYVHJhbnNsYXRpb25EZWZhdWx0Q29uZmlnO1xuICAgIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IEFYVHJhbnNsYXRpb25EZWZhdWx0Q29uZmlnOiBBWFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICAgIGRlZmF1bHRMYW5nOiAnZW4nLFxuICAgIGRlZmF1bHRTY29wZTogJ2NvbW1vbicsXG4gICAgc2NvcGVSZXNvbHZlcktleTogJ3Njb3BlJyxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKGNvbmZpZzogQVhQYXJ0aWFsVHJhbnNsYXRpb25Db25maWcgPSB7fSk6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgICAgIC4uLmNvbmZpZyxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24uY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFZL0MsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQ3JELHVCQUF1QixFQUN2QjtJQUNFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDWixPQUFPLDBCQUEwQixDQUFDO0lBQ3BDLENBQUM7Q0FDRixDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBd0I7SUFDN0QsV0FBVyxFQUFFLElBQUk7SUFDakIsWUFBWSxFQUFFLFFBQVE7SUFDdEIsZ0JBQWdCLEVBQUUsT0FBTztDQUMxQixDQUFDO0FBSUYsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixTQUFxQyxFQUFFO0lBRXZDLE1BQU0sTUFBTSxHQUFHO1FBQ2IsR0FBRywwQkFBMEI7UUFDN0IsR0FBRyxNQUFNO0tBQ1YsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdGVMYW5nLCBBWFRyYW5zbGF0ZVNjb3BlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkNvbmZpZyB7XG4gIGRlZmF1bHRMYW5nOiBBWFRyYW5zbGF0ZUxhbmc7XG4gIGRlZmF1bHRTY29wZTogQVhUcmFuc2xhdGVTY29wZTtcbiAgcHJlbG9hZExhbmdzPzogQVhUcmFuc2xhdGVMYW5nW107XG4gIHByZWxvYWRTY29wZXM/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgYXZhaWxhYmxlTGFuZ3M/OiBBWFRyYW5zbGF0ZUxhbmdbXTtcbiAgc2NvcGVSZXNvbHZlcktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgQVhfVFJBTlNMQVRJT05fQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFYVHJhbnNsYXRpb25Db25maWc+KFxuICAnQVhfVFJBTlNMQVRJT05fQ09ORklHJyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICByZXR1cm4gQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWc7XG4gICAgfSxcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IEFYVHJhbnNsYXRpb25EZWZhdWx0Q29uZmlnOiBBWFRyYW5zbGF0aW9uQ29uZmlnID0ge1xuICBkZWZhdWx0TGFuZzogJ2VuJyxcbiAgZGVmYXVsdFNjb3BlOiAnY29tbW9uJyxcbiAgc2NvcGVSZXNvbHZlcktleTogJ3Njb3BlJyxcbn07XG5cbmV4cG9ydCB0eXBlIEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0gUGFydGlhbDxBWFRyYW5zbGF0aW9uQ29uZmlnPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zbGF0aW9uQ29uZmlnKFxuICBjb25maWc6IEFYUGFydGlhbFRyYW5zbGF0aW9uQ29uZmlnID0ge31cbik6IEFYVHJhbnNsYXRpb25Db25maWcge1xuICBjb25zdCByZXN1bHQgPSB7XG4gICAgLi4uQVhUcmFuc2xhdGlvbkRlZmF1bHRDb25maWcsXG4gICAgLi4uY29uZmlnLFxuICB9O1xuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -1,5 +1,5 @@
1
- import { InjectionToken } from "@angular/core";
2
- import { of } from "rxjs";
1
+ import { InjectionToken } from '@angular/core';
2
+ import { of } from 'rxjs';
3
3
  export class AXTranslationLoaderDefault {
4
4
  getTranslation(options) {
5
5
  return of({});
@@ -11,4 +11,4 @@ export const AX_TRANSLATION_LOADER = new InjectionToken('AX_TRANSLATION_LOADER',
11
11
  return new AXTranslationLoaderDefault();
12
12
  },
13
13
  });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWF0QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ25DLGNBQWMsQ0FBQyxPQUFtQztRQUM5QyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNsQixDQUFDO0NBQ0o7QUFHRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsdUJBQXVCLEVBQUU7SUFDbEcsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBQzVDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBWFRyYW5zbGF0ZUxhbmcsIEFYVHJhbnNsYXRlU2NvcGUsIEFYVHJhbnNsYXRpb24gfSBmcm9tIFwiLi90cmFuc2xhdGlvbi50eXBlc1wiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zIHtcbiAgICBsYW5nOiBBWFRyYW5zbGF0ZUxhbmcsXG4gICAgc2NvcGU/OiBBWFRyYW5zbGF0ZVNjb3BlO1xufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gICAgZ2V0VHJhbnNsYXRpb24ob3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMpOiBPYnNlcnZhYmxlPEFYVHJhbnNsYXRpb24+O1xufVxuXG5cbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCBpbXBsZW1lbnRzIEFYVHJhbnNsYXRpb25Mb2FkZXIge1xuICAgIGdldFRyYW5zbGF0aW9uKG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPiB7XG4gICAgICAgIHJldHVybiBvZih7fSk7XG4gICAgfVxufVxuXG5cbmV4cG9ydCBjb25zdCBBWF9UUkFOU0xBVElPTl9MT0FERVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48QVhUcmFuc2xhdGlvbkxvYWRlcj4oJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0KCk7XG4gICAgfSxcbn0pOyJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ubG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNL0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQWF0QyxNQUFNLE9BQU8sMEJBQTBCO0lBQ3JDLGNBQWMsQ0FDWixPQUFtQztRQUVuQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FDckQsdUJBQXVCLEVBQ3ZCO0lBQ0UsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRTtRQUNaLE9BQU8sSUFBSSwwQkFBMEIsRUFBRSxDQUFDO0lBQzFDLENBQUM7Q0FDRixDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQVhUcmFuc2xhdGVMYW5nLFxuICBBWFRyYW5zbGF0ZVNjb3BlLFxuICBBWFRyYW5zbGF0aW9uLFxufSBmcm9tICcuL3RyYW5zbGF0aW9uLnR5cGVzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnMge1xuICBsYW5nOiBBWFRyYW5zbGF0ZUxhbmc7XG4gIHNjb3BlPzogQVhUcmFuc2xhdGVTY29wZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFRyYW5zbGF0aW9uTG9hZGVyIHtcbiAgZ2V0VHJhbnNsYXRpb24oXG4gICAgb3B0aW9uczogQVhUcmFuc2xhdGlvbkxvYWRlck9wdGlvbnNcbiAgKTogT2JzZXJ2YWJsZTxBWFRyYW5zbGF0aW9uPjtcbn1cblxuZXhwb3J0IGNsYXNzIEFYVHJhbnNsYXRpb25Mb2FkZXJEZWZhdWx0IGltcGxlbWVudHMgQVhUcmFuc2xhdGlvbkxvYWRlciB7XG4gIGdldFRyYW5zbGF0aW9uKFxuICAgIG9wdGlvbnM6IEFYVHJhbnNsYXRpb25Mb2FkZXJPcHRpb25zXG4gICk6IE9ic2VydmFibGU8QVhUcmFuc2xhdGlvbj4ge1xuICAgIHJldHVybiBvZih7fSk7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEFYX1RSQU5TTEFUSU9OX0xPQURFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBWFRyYW5zbGF0aW9uTG9hZGVyPihcbiAgJ0FYX1RSQU5TTEFUSU9OX0xPQURFUicsXG4gIHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG4gICAgZmFjdG9yeTogKCkgPT4ge1xuICAgICAgcmV0dXJuIG5ldyBBWFRyYW5zbGF0aW9uTG9hZGVyRGVmYXVsdCgpO1xuICAgIH0sXG4gIH1cbik7XG4iXX0=
@@ -2,7 +2,7 @@ import { APP_INITIALIZER, NgModule } from '@angular/core';
2
2
  import { AXTranslatorPipe } from './translator.pipe';
3
3
  import { AXTranslatorDirective } from './translator.directive';
4
4
  import { AXTranslationService } from './translation.service';
5
- import { AX_TRANSLATION_CONFIG } from './translation.config';
5
+ import { AX_TRANSLATION_CONFIG, } from './translation.config';
6
6
  import * as i0 from "@angular/core";
7
7
  function initializeApp(translatorService, config) {
8
8
  return () => {
@@ -10,18 +10,18 @@ function initializeApp(translatorService, config) {
10
10
  };
11
11
  }
12
12
  export class AXTranslationModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.3", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
15
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTranslationModule, providers: [
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.2.4", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXTranslationModule, providers: [
16
16
  {
17
17
  provide: APP_INITIALIZER,
18
18
  useFactory: initializeApp,
19
19
  deps: [AXTranslationService, AX_TRANSLATION_CONFIG],
20
- multi: true
21
- }
20
+ multi: true,
21
+ },
22
22
  ] }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImport: i0, type: AXTranslationModule, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AXTranslationModule, decorators: [{
25
25
  type: NgModule,
26
26
  args: [{
27
27
  imports: [],
@@ -32,9 +32,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.3", ngImpor
32
32
  provide: APP_INITIALIZER,
33
33
  useFactory: initializeApp,
34
34
  deps: [AXTranslationService, AX_TRANSLATION_CONFIG],
35
- multi: true
36
- }
35
+ multi: true,
36
+ },
37
37
  ],
38
38
  }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHbEYsU0FBUyxhQUFhLENBQUMsaUJBQXVDLEVBQUUsTUFBMkI7SUFDekYsT0FBTyxHQUFvQixFQUFFO1FBQzNCLE9BQU8saUJBQWlCLENBQUMsc0JBQXNCLENBQzdDLE1BQU0sQ0FBQyxZQUFZLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQzNDLE1BQU0sQ0FBQyxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQTtJQUNsRCxDQUFDLENBQUM7QUFDSixDQUFDO0FBZUQsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsaUJBVmYsZ0JBQWdCLEVBQUUscUJBQXFCLGFBRDVDLGdCQUFnQixFQUFFLHFCQUFxQjsrR0FXdEMsbUJBQW1CLGFBVG5CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLFVBQVUsRUFBRSxhQUFhO2dCQUN6QixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQztnQkFDbkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzsyRkFFVSxtQkFBbUI7a0JBYi9CLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBQUU7b0JBQ1gsT0FBTyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ2xELFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO29CQUN2RCxTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFVBQVUsRUFBRSxhQUFhOzRCQUN6QixJQUFJLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JQaXBlIH0gZnJvbSAnLi90cmFuc2xhdG9yLnBpcGUnO1xuaW1wb3J0IHsgQVhUcmFuc2xhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi90cmFuc2xhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uQ29uZmlnLCBBWF9UUkFOU0xBVElPTl9DT05GSUcgfSBmcm9tICcuL3RyYW5zbGF0aW9uLmNvbmZpZyc7XG5cblxuZnVuY3Rpb24gaW5pdGlhbGl6ZUFwcCh0cmFuc2xhdG9yU2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2UsIGNvbmZpZzogQVhUcmFuc2xhdGlvbkNvbmZpZykge1xuICByZXR1cm4gKCk6IE9ic2VydmFibGU8YW55PiA9PiB7XG4gICAgcmV0dXJuIHRyYW5zbGF0b3JTZXJ2aWNlLmxvYWRMYW5ndWFnZXNBbmRTY29wZXMoXG4gICAgICBjb25maWcucHJlbG9hZExhbmdzID8/IFtjb25maWcuZGVmYXVsdExhbmddLFxuICAgICAgY29uZmlnLnByZWxvYWRTY29wZXMgPz8gW2NvbmZpZy5kZWZhdWx0U2NvcGVdKVxuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW0FYVHJhbnNsYXRvclBpcGUsIEFYVHJhbnNsYXRvckRpcmVjdGl2ZV0sXG4gIGRlY2xhcmF0aW9uczogW0FYVHJhbnNsYXRvclBpcGUsIEFYVHJhbnNsYXRvckRpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVBcHAsXG4gICAgICBkZXBzOiBbQVhUcmFuc2xhdGlvblNlcnZpY2UsIEFYX1RSQU5TTEFUSU9OX0NPTkZJR10sXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhUcmFuc2xhdGlvbk1vZHVsZSB7IH1cbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3RyYW5zbGF0aW9uL3NyYy9saWIvdHJhbnNsYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdELE9BQU8sRUFFTCxxQkFBcUIsR0FDdEIsTUFBTSxzQkFBc0IsQ0FBQzs7QUFFOUIsU0FBUyxhQUFhLENBQ3BCLGlCQUF1QyxFQUN2QyxNQUEyQjtJQUUzQixPQUFPLEdBQW9CLEVBQUU7UUFDM0IsT0FBTyxpQkFBaUIsQ0FBQyxzQkFBc0IsQ0FDN0MsTUFBTSxDQUFDLFlBQVksSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFDM0MsTUFBTSxDQUFDLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FDOUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFlRCxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFWZixnQkFBZ0IsRUFBRSxxQkFBcUIsYUFENUMsZ0JBQWdCLEVBQUUscUJBQXFCOytHQVd0QyxtQkFBbUIsYUFUbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsVUFBVSxFQUFFLGFBQWE7Z0JBQ3pCLElBQUksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Y7OzJGQUVVLG1CQUFtQjtrQkFiL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsRUFBRTtvQkFDWCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxxQkFBcUIsQ0FBQztvQkFDbEQsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7b0JBQ3ZELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLGFBQWE7NEJBQ3pCLElBQUksRUFBRSxDQUFDLG9CQUFvQixFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRvclBpcGUgfSBmcm9tICcuL3RyYW5zbGF0b3IucGlwZSc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL3RyYW5zbGF0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEFYVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIEFYVHJhbnNsYXRpb25Db25maWcsXG4gIEFYX1RSQU5TTEFUSU9OX0NPTkZJRyxcbn0gZnJvbSAnLi90cmFuc2xhdGlvbi5jb25maWcnO1xuXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKFxuICB0cmFuc2xhdG9yU2VydmljZTogQVhUcmFuc2xhdGlvblNlcnZpY2UsXG4gIGNvbmZpZzogQVhUcmFuc2xhdGlvbkNvbmZpZ1xuKSB7XG4gIHJldHVybiAoKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcbiAgICByZXR1cm4gdHJhbnNsYXRvclNlcnZpY2UubG9hZExhbmd1YWdlc0FuZFNjb3BlcyhcbiAgICAgIGNvbmZpZy5wcmVsb2FkTGFuZ3MgPz8gW2NvbmZpZy5kZWZhdWx0TGFuZ10sXG4gICAgICBjb25maWcucHJlbG9hZFNjb3BlcyA/PyBbY29uZmlnLmRlZmF1bHRTY29wZV1cbiAgICApO1xuICB9O1xufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXSxcbiAgZXhwb3J0czogW0FYVHJhbnNsYXRvclBpcGUsIEFYVHJhbnNsYXRvckRpcmVjdGl2ZV0sXG4gIGRlY2xhcmF0aW9uczogW0FYVHJhbnNsYXRvclBpcGUsIEFYVHJhbnNsYXRvckRpcmVjdGl2ZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgIHVzZUZhY3Rvcnk6IGluaXRpYWxpemVBcHAsXG4gICAgICBkZXBzOiBbQVhUcmFuc2xhdGlvblNlcnZpY2UsIEFYX1RSQU5TTEFUSU9OX0NPTkZJR10sXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFRyYW5zbGF0aW9uTW9kdWxlIHt9XG4iXX0=