@arsedizioni/ars-utils 18.5.62 → 19.0.1

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 (178) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +10 -10
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +41 -41
  4. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
  5. package/fesm2022/arsedizioni-ars-utils-core.mjs +99 -99
  6. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  7. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +10 -10
  8. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  9. package/fesm2022/arsedizioni-ars-utils-help.mjs +13 -13
  10. package/fesm2022/arsedizioni-ars-utils-help.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +10 -10
  12. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  13. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
  14. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs.map +1 -1
  15. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +7 -7
  16. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs.map +1 -1
  17. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +58 -58
  18. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs.map +1 -1
  19. package/fesm2022/arsedizioni-ars-utils-ui.mjs +34 -34
  20. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  21. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +7 -7
  22. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  23. package/fesm2022/arsedizioni-ars-utils.mjs.map +1 -1
  24. package/package.json +9 -33
  25. package/clipper.ui/ui/clipper.scss +0 -530
  26. package/esm2022/arsedizioni-ars-utils.mjs +0 -5
  27. package/esm2022/clipper.common/arsedizioni-ars-utils-clipper.common.mjs +0 -5
  28. package/esm2022/clipper.common/common/common.module.mjs +0 -16
  29. package/esm2022/clipper.common/common/definitions.mjs +0 -2041
  30. package/esm2022/clipper.common/common/interceptors/auth.interceptor.mjs +0 -100
  31. package/esm2022/clipper.common/common/messages.mjs +0 -36
  32. package/esm2022/clipper.common/common/services/clipper.service.mjs +0 -1011
  33. package/esm2022/clipper.common/public_api.mjs +0 -5
  34. package/esm2022/clipper.ui/arsedizioni-ars-utils-clipper.ui.mjs +0 -5
  35. package/esm2022/clipper.ui/documents.mjs +0 -50
  36. package/esm2022/clipper.ui/public_api.mjs +0 -18
  37. package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +0 -766
  38. package/esm2022/clipper.ui/ui/document/document.component.mjs +0 -688
  39. package/esm2022/clipper.ui/ui/document-index/document-index.component.mjs +0 -118
  40. package/esm2022/clipper.ui/ui/document-manager/document-manager.mjs +0 -441
  41. package/esm2022/clipper.ui/ui/document-menu/document-menu.component.mjs +0 -217
  42. package/esm2022/clipper.ui/ui/references/references.component.mjs +0 -380
  43. package/esm2022/clipper.ui/ui/search-calendar/search-calendar.component.mjs +0 -116
  44. package/esm2022/clipper.ui/ui/search-dialog/search-dialog.component.mjs +0 -339
  45. package/esm2022/clipper.ui/ui/search-facets/search-facets.component.mjs +0 -251
  46. package/esm2022/clipper.ui/ui/search-free-text-help/search-free-text-help.component.mjs +0 -17
  47. package/esm2022/clipper.ui/ui/search-free-text-query-builder/search-free-text-query-builder.component.mjs +0 -106
  48. package/esm2022/clipper.ui/ui/search-result-item/search-result-item.component.mjs +0 -120
  49. package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +0 -531
  50. package/esm2022/core/arsedizioni-ars-utils-core.mjs +0 -5
  51. package/esm2022/core/core.module.mjs +0 -151
  52. package/esm2022/core/dateFnsAdapter.mjs +0 -203
  53. package/esm2022/core/definitions.mjs +0 -47
  54. package/esm2022/core/directives/autoFocusDirective.mjs +0 -22
  55. package/esm2022/core/directives/changeDateIntervalDirective.mjs +0 -48
  56. package/esm2022/core/directives/copyClipboardDirective.mjs +0 -46
  57. package/esm2022/core/directives/validators.mjs +0 -502
  58. package/esm2022/core/pipes/format.pipe.mjs +0 -53
  59. package/esm2022/core/pipes/replace.pipe.mjs +0 -29
  60. package/esm2022/core/pipes/safe-html.pipe.mjs +0 -24
  61. package/esm2022/core/pipes/safe-url.pipe.mjs +0 -24
  62. package/esm2022/core/pipes/search-callback.pipe.mjs +0 -21
  63. package/esm2022/core/pipes/search-filter.pipe.mjs +0 -50
  64. package/esm2022/core/public_api.mjs +0 -22
  65. package/esm2022/core/selectable.mjs +0 -131
  66. package/esm2022/core/services/broadcast.service.mjs +0 -35
  67. package/esm2022/core/services/broadcastChannelManager.mjs +0 -80
  68. package/esm2022/core/services/environment.service.mjs +0 -29
  69. package/esm2022/core/services/screen.service.mjs +0 -23
  70. package/esm2022/core/services/theme.service.mjs +0 -140
  71. package/esm2022/core/system.mjs +0 -664
  72. package/esm2022/evolution.common/arsedizioni-ars-utils-evolution.common.mjs +0 -5
  73. package/esm2022/evolution.common/common/common.module.mjs +0 -16
  74. package/esm2022/evolution.common/common/definitions.mjs +0 -454
  75. package/esm2022/evolution.common/common/interceptors/auth.interceptor.mjs +0 -100
  76. package/esm2022/evolution.common/common/messages.mjs +0 -8
  77. package/esm2022/evolution.common/common/services/evolution.service.mjs +0 -490
  78. package/esm2022/evolution.common/public_api.mjs +0 -5
  79. package/esm2022/help/arsedizioni-ars-utils-help.mjs +0 -5
  80. package/esm2022/help/components/help-viewer/help-viewer.component.mjs +0 -442
  81. package/esm2022/help/definitions.mjs +0 -2
  82. package/esm2022/help/help.module.mjs +0 -12
  83. package/esm2022/help/public_api.mjs +0 -7
  84. package/esm2022/help/services/help.service.mjs +0 -77
  85. package/esm2022/public_api.mjs +0 -15
  86. package/esm2022/support.common/arsedizioni-ars-utils-support.common.mjs +0 -5
  87. package/esm2022/support.common/common/common.module.mjs +0 -16
  88. package/esm2022/support.common/common/definitions.mjs +0 -29
  89. package/esm2022/support.common/common/interceptors/auth.interceptor.mjs +0 -100
  90. package/esm2022/support.common/common/messages.mjs +0 -13
  91. package/esm2022/support.common/common/services/support.service.mjs +0 -289
  92. package/esm2022/support.common/public_api.mjs +0 -8
  93. package/esm2022/support.ui/arsedizioni-ars-utils-support.ui.mjs +0 -5
  94. package/esm2022/support.ui/public_api.mjs +0 -5
  95. package/esm2022/support.ui/ui/notifications-browser/notification/notification.component.mjs +0 -80
  96. package/esm2022/support.ui/ui/notifications-browser/notifications-browser.component.mjs +0 -233
  97. package/esm2022/tinymce/arsedizioni-ars-utils-tinymce.mjs +0 -5
  98. package/esm2022/tinymce/full-screen-editor/full-screen-editor.component.mjs +0 -48
  99. package/esm2022/tinymce/public_api.mjs +0 -7
  100. package/esm2022/tinymce/tinymce.module.mjs +0 -19
  101. package/esm2022/tinymce/utils.mjs +0 -150
  102. package/esm2022/ui/arsedizioni-ars-utils-ui.mjs +0 -5
  103. package/esm2022/ui/public_api.mjs +0 -12
  104. package/esm2022/ui/ui/components/button-selector/button-selector.component.mjs +0 -150
  105. package/esm2022/ui/ui/components/button-toggle/button-toggle.component.mjs +0 -51
  106. package/esm2022/ui/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +0 -30
  107. package/esm2022/ui/ui/components/chips-selector/chips-selector.component.mjs +0 -272
  108. package/esm2022/ui/ui/components/file-input/file-input.component.mjs +0 -264
  109. package/esm2022/ui/ui/components/file-preview/file-preview.component.mjs +0 -73
  110. package/esm2022/ui/ui/components/filter-bar/filter-bar.component.mjs +0 -356
  111. package/esm2022/ui/ui/definitions.mjs +0 -2
  112. package/esm2022/ui/ui/dialogs/busy/busy-dialog.component.mjs +0 -47
  113. package/esm2022/ui/ui/dialogs/confirm/confirm-dialog.component.mjs +0 -101
  114. package/esm2022/ui/ui/dialogs/credentials/credentials-dialog.component.mjs +0 -86
  115. package/esm2022/ui/ui/dialogs/info/info-dialog.component.mjs +0 -51
  116. package/esm2022/ui/ui/dialogs/prompt/prompt-dialog.component.mjs +0 -77
  117. package/esm2022/ui/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +0 -79
  118. package/esm2022/ui/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +0 -72
  119. package/esm2022/ui/ui/dialogs/recover-password/recover-password-dialog.component.mjs +0 -49
  120. package/esm2022/ui/ui/dialogs/reset-password/reset-password-dialog.component.mjs +0 -89
  121. package/esm2022/ui/ui/dialogs/select/select-dialog.component.mjs +0 -374
  122. package/esm2022/ui/ui/dialogs/select-file/select-file-dialog.component.mjs +0 -106
  123. package/esm2022/ui/ui/dialogs/select-picture/select-picture-dialog.component.mjs +0 -62
  124. package/esm2022/ui/ui/dialogs/select-tree/select-tree-dialog.component.mjs +0 -277
  125. package/esm2022/ui/ui/dialogs/send-to/send-to-dialog.component.mjs +0 -90
  126. package/esm2022/ui/ui/dialogs/toast/toast.component.mjs +0 -32
  127. package/esm2022/ui/ui/directives/resize-table-column.directive.mjs +0 -63
  128. package/esm2022/ui/ui/filters.mjs +0 -43
  129. package/esm2022/ui/ui/paginatorIntl.mjs +0 -34
  130. package/esm2022/ui/ui/services/dialog.service.mjs +0 -417
  131. package/esm2022/ui/ui/services/ui.service.mjs +0 -21
  132. package/esm2022/ui/ui/ui.module.mjs +0 -21
  133. package/esm2022/ui.application/arsedizioni-ars-utils-ui.application.mjs +0 -5
  134. package/esm2022/ui.application/public_api.mjs +0 -21
  135. package/esm2022/ui.application/ui/components/button-selector/button-selector.component.mjs +0 -150
  136. package/esm2022/ui.application/ui/components/button-toggle/button-toggle.component.mjs +0 -51
  137. package/esm2022/ui.application/ui/components/calendar-empty-header/calendar-empy-header.component.mjs +0 -30
  138. package/esm2022/ui.application/ui/components/chips-selector/chips-selector.component.mjs +0 -272
  139. package/esm2022/ui.application/ui/components/file-input/file-input.component.mjs +0 -264
  140. package/esm2022/ui.application/ui/components/file-preview/file-preview.component.mjs +0 -73
  141. package/esm2022/ui.application/ui/components/filter-bar/filter-bar.component.mjs +0 -356
  142. package/esm2022/ui.application/ui/definitions.mjs +0 -31
  143. package/esm2022/ui.application/ui/dialogs/prompt/prompt-dialog.component.mjs +0 -77
  144. package/esm2022/ui.application/ui/dialogs/prompt-date/prompt-date-dialog.component.mjs +0 -79
  145. package/esm2022/ui.application/ui/dialogs/prompt-time/prompt-time-dialog.component.mjs +0 -72
  146. package/esm2022/ui.application/ui/dialogs/select/select-dialog.component.mjs +0 -374
  147. package/esm2022/ui.application/ui/dialogs/select-file/select-file-dialog.component.mjs +0 -106
  148. package/esm2022/ui.application/ui/dialogs/select-picture/select-picture-dialog.component.mjs +0 -62
  149. package/esm2022/ui.application/ui/dialogs/select-tree/select-tree-dialog.component.mjs +0 -277
  150. package/esm2022/ui.application/ui/dialogs/send-to/send-to-dialog.component.mjs +0 -90
  151. package/esm2022/ui.application/ui/directives/resize-table-column.directive.mjs +0 -63
  152. package/esm2022/ui.application/ui/filters.mjs +0 -43
  153. package/esm2022/ui.application/ui/services/applicationDialog.service.mjs +0 -304
  154. package/esm2022/ui.application/ui/ui.module.mjs +0 -30
  155. package/esm2022/ui.oauth/arsedizioni-ars-utils-ui.oauth.mjs +0 -5
  156. package/esm2022/ui.oauth/public_api.mjs +0 -6
  157. package/esm2022/ui.oauth/ui/components/login/login-oauth.component.mjs +0 -199
  158. package/esm2022/ui.oauth/ui/definitions.mjs +0 -7
  159. package/esm2022/ui.oauth/ui/ui.module.mjs +0 -13
  160. package/styles/ui.colors.scss +0 -77
  161. package/styles/ui.scss +0 -318
  162. package/ui/ui/components/button-selector/button-selector.component.d.ts +0 -52
  163. package/ui/ui/components/button-toggle/button-toggle.component.d.ts +0 -28
  164. package/ui/ui/components/calendar-empty-header/calendar-empy-header.component.d.ts +0 -11
  165. package/ui/ui/components/chips-selector/chips-selector.component.d.ts +0 -82
  166. package/ui/ui/components/file-input/file-input.component.d.ts +0 -88
  167. package/ui/ui/components/file-preview/file-preview.component.d.ts +0 -26
  168. package/ui/ui/components/filter-bar/filter-bar.component.d.ts +0 -83
  169. package/ui/ui/dialogs/prompt/prompt-dialog.component.d.ts +0 -18
  170. package/ui/ui/dialogs/prompt-date/prompt-date-dialog.component.d.ts +0 -18
  171. package/ui/ui/dialogs/prompt-time/prompt-time-dialog.component.d.ts +0 -18
  172. package/ui/ui/dialogs/select/select-dialog.component.d.ts +0 -122
  173. package/ui/ui/dialogs/select-file/select-file-dialog.component.d.ts +0 -36
  174. package/ui/ui/dialogs/select-picture/select-picture-dialog.component.d.ts +0 -26
  175. package/ui/ui/dialogs/select-tree/select-tree-dialog.component.d.ts +0 -98
  176. package/ui/ui/dialogs/send-to/send-to-dialog.component.d.ts +0 -28
  177. package/ui/ui/directives/resize-table-column.directive.d.ts +0 -19
  178. package/ui/ui/filters.d.ts +0 -57
@@ -1,77 +0,0 @@
1
- import { Injectable, inject } from '@angular/core';
2
- import { DialogService } from '@arsedizioni/ars-utils/ui';
3
- import { HttpClient } from '@angular/common/http';
4
- import { HelpViewerComponent } from '../components/help-viewer/help-viewer.component';
5
- import * as i0 from "@angular/core";
6
- export class HelpService {
7
- constructor() {
8
- this.httpClient = inject(HttpClient);
9
- this.dialogService = inject(DialogService);
10
- }
11
- /**
12
- * Initialize help service
13
- * @param serviceUri : the service uri
14
- */
15
- initialize(serviceUri) {
16
- this.serviceUri = serviceUri;
17
- }
18
- /**
19
- * Retrieve an help chapter
20
- * @param id the chapter id
21
- * @param query the search query
22
- */
23
- getChapter(id, query = null) {
24
- return this.httpClient.get(this.serviceUri +
25
- '/help/chapter/' +
26
- id +
27
- '/?query=' +
28
- (query == null ? '' : query));
29
- }
30
- /**
31
- * Retrieve an help chapater info
32
- * @param id the chapter id
33
- */
34
- getChapterInfo(id) {
35
- return this.httpClient.get(this.serviceUri + '/help/chapter/info/' + id);
36
- }
37
- /**
38
- * Retrieve a repository item
39
- * @param id the file id
40
- */
41
- getRepo(id) {
42
- return this.httpClient.get(this.serviceUri + '/help/repo/' + id);
43
- }
44
- /**
45
- * Retrieve an help toc
46
- */
47
- getToc() {
48
- return this.httpClient.get(this.serviceUri + '/help/toc');
49
- }
50
- /**
51
- * Open help viewer
52
- */
53
- show(id = '1') {
54
- this.dialogService.open(HelpViewerComponent, {
55
- ariaLabel: 'guida',
56
- autoFocus: false,
57
- restoreFocus: false,
58
- disableClose: true,
59
- data: {
60
- id: id
61
- },
62
- minWidth: '375px',
63
- maxWidth: '1200px',
64
- width: '100%',
65
- height: '100%'
66
- });
67
- }
68
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: HelpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
69
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: HelpService, providedIn: 'root' }); }
70
- }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: HelpService, decorators: [{
72
- type: Injectable,
73
- args: [{
74
- providedIn: 'root'
75
- }]
76
- }] });
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2hlbHAvc2VydmljZXMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUUxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFhLE1BQU0saURBQWlELENBQUM7O0FBTWpHLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBS1UsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztLQTBFL0M7SUF2RUM7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFVBQWtCO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsVUFBVSxDQUFDLEVBQVUsRUFBRSxRQUFnQixJQUFJO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVO1lBQ2IsZ0JBQWdCO1lBQ2hCLEVBQUU7WUFDRixVQUFVO1lBQ1YsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUMvQixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcscUJBQXFCLEdBQUcsRUFBRSxDQUM3QyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxHQUFHLEVBQUUsQ0FDckMsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN4QixJQUFJLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFHRDs7T0FFRztJQUNILElBQUksQ0FBQyxLQUFhLEdBQUc7UUFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MsU0FBUyxFQUFFLE9BQU87WUFDbEIsU0FBUyxFQUFFLEtBQUs7WUFDaEIsWUFBWSxFQUFFLEtBQUs7WUFDbkIsWUFBWSxFQUFFLElBQUk7WUFDbEIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsRUFBRSxFQUFFO2FBQ1A7WUFDRCxRQUFRLEVBQUUsT0FBTztZQUNqQixRQUFRLEVBQUUsUUFBUTtZQUNsQixLQUFLLEVBQUUsTUFBTTtZQUNiLE1BQU0sRUFBRSxNQUFNO1NBQ2YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0E1RVUsV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWknO1xyXG5pbXBvcnQgeyBBcGlSZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBIZWxwVmlld2VyQ29tcG9uZW50LCBJbmRleEluZm8gfSBmcm9tICcuLi9jb21wb25lbnRzL2hlbHAtdmlld2VyL2hlbHAtdmlld2VyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENoYXB0ZXIsIENoYXB0ZXJCYWcgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwU2VydmljZSB7XHJcbiAgXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpOyBcclxuICBwcml2YXRlIGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoRGlhbG9nU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBzZXJ2aWNlVXJpOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemUgaGVscCBzZXJ2aWNlXHJcbiAgICogQHBhcmFtIHNlcnZpY2VVcmkgOiB0aGUgc2VydmljZSB1cmlcclxuICAgKi9cclxuICBpbml0aWFsaXplKHNlcnZpY2VVcmk6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFuIGhlbHAgY2hhcHRlclxyXG4gICAqIEBwYXJhbSBpZCB0aGUgY2hhcHRlciBpZFxyXG4gICAqIEBwYXJhbSBxdWVyeSB0aGUgc2VhcmNoIHF1ZXJ5XHJcbiAgICovXHJcbiAgZ2V0Q2hhcHRlcihpZDogc3RyaW5nLCBxdWVyeTogc3RyaW5nID0gbnVsbCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PENoYXB0ZXJCYWc+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICtcclxuICAgICAgICAnL2hlbHAvY2hhcHRlci8nICtcclxuICAgICAgICBpZCArXHJcbiAgICAgICAgJy8/cXVlcnk9JyArXHJcbiAgICAgICAgKHF1ZXJ5ID09IG51bGwgPyAnJyA6IHF1ZXJ5KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlIGFuIGhlbHAgY2hhcGF0ZXIgaW5mb1xyXG4gICAqIEBwYXJhbSBpZCB0aGUgY2hhcHRlciBpZFxyXG4gICAqL1xyXG4gIGdldENoYXB0ZXJJbmZvKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxDaGFwdGVyPj4oXHJcbiAgICAgIHRoaXMuc2VydmljZVVyaSArICcvaGVscC9jaGFwdGVyL2luZm8vJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYSByZXBvc2l0b3J5IGl0ZW1cclxuICAgKiBAcGFyYW0gaWQgdGhlIGZpbGUgaWRcclxuICAgKi9cclxuICBnZXRSZXBvKGlkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxhbnk+PihcclxuICAgICAgdGhpcy5zZXJ2aWNlVXJpICsgJy9oZWxwL3JlcG8vJyArIGlkXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmUgYW4gaGVscCB0b2NcclxuICAgKi9cclxuICBnZXRUb2MoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8SW5kZXhJbmZvPj4oXHJcbiAgICAgIHRoaXMuc2VydmljZVVyaSArICcvaGVscC90b2MnXHJcbiAgICApO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gaGVscCB2aWV3ZXJcclxuICAgKi9cclxuICBzaG93KGlkOiBzdHJpbmcgPSAnMScpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEhlbHBWaWV3ZXJDb21wb25lbnQsIHtcclxuICAgICAgYXJpYUxhYmVsOiAnZ3VpZGEnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBpZDogaWRcclxuICAgICAgfSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnMTIwMHB4JyxcclxuICAgICAgd2lkdGg6ICcxMDAlJyxcclxuICAgICAgaGVpZ2h0OiAnMTAwJSdcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,15 +0,0 @@
1
- /*
2
- * Public API Surface of ars-utils
3
- */
4
- export * from '@arsedizioni/ars-utils/core';
5
- export * from '@arsedizioni/ars-utils/ui';
6
- export * from '@arsedizioni/ars-utils/ui.oauth';
7
- export * from '@arsedizioni/ars-utils/ui.application';
8
- export * from '@arsedizioni/ars-utils/support.common';
9
- export * from '@arsedizioni/ars-utils/support.ui';
10
- export * from '@arsedizioni/ars-utils/help';
11
- export * from '@arsedizioni/ars-utils/clipper.common';
12
- export * from '@arsedizioni/ars-utils/clipper.ui';
13
- export * from '@arsedizioni/ars-utils/tinymce';
14
- export * from '@arsedizioni/ars-utils/evolution.common';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9wdWJsaWNfYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVDQUF1QyxDQUFDO0FBQ3RELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGFycy11dGlsc1xyXG4gKi9cclxuZXhwb3J0ICogZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuZXhwb3J0ICogZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy91aSc7XHJcbmV4cG9ydCAqIGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvdWkub2F1dGgnO1xyXG5leHBvcnQgKiBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpLmFwcGxpY2F0aW9uJztcclxuZXhwb3J0ICogZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbic7XHJcbmV4cG9ydCAqIGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvc3VwcG9ydC51aSc7XHJcbmV4cG9ydCAqIGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvaGVscCc7XHJcbmV4cG9ydCAqIGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY2xpcHBlci5jb21tb24nO1xyXG5leHBvcnQgKiBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NsaXBwZXIudWknO1xyXG5leHBvcnQgKiBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3RpbnltY2UnO1xyXG5leHBvcnQgKiBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2V2b2x1dGlvbi5jb21tb24nO1xyXG5cclxuXHJcblxyXG5cclxuIl19
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public_api';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJzZWRpemlvbmktYXJzLXV0aWxzLXN1cHBvcnQuY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uL2Fyc2VkaXppb25pLWFycy11dGlscy1zdXBwb3J0LmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpY19hcGknO1xuIl19
@@ -1,16 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class ArsSupportCommonModule {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsSupportCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.10", ngImport: i0, type: ArsSupportCommonModule }); }
6
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsSupportCommonModule }); }
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: ArsSupportCommonModule, decorators: [{
9
- type: NgModule
10
- }] });
11
- // Other exports
12
- export * from './messages';
13
- export * from './definitions';
14
- export * from './interceptors/auth.interceptor';
15
- export * from './services/support.service';
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbi9jb21tb24vY29tbW9uLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUd6QyxNQUFNLE9BQU8sc0JBQXNCOytHQUF0QixzQkFBc0I7Z0hBQXRCLHNCQUFzQjtnSEFBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQURsQyxRQUFROztBQUdULGdCQUFnQjtBQUNoQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQE5nTW9kdWxlKClcclxuZXhwb3J0IGNsYXNzIEFyc1N1cHBvcnRDb21tb25Nb2R1bGUge31cclxuXHJcbi8vIE90aGVyIGV4cG9ydHNcclxuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZGVmaW5pdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ludGVyY2VwdG9ycy9hdXRoLmludGVyY2VwdG9yJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UnO1xyXG4iXX0=
@@ -1,29 +0,0 @@
1
- export var SupportServiceFlags;
2
- (function (SupportServiceFlags) {
3
- SupportServiceFlags[SupportServiceFlags["None"] = 0] = "None";
4
- SupportServiceFlags[SupportServiceFlags["NotifySystemErrors"] = 1] = "NotifySystemErrors";
5
- SupportServiceFlags[SupportServiceFlags["DisplayConnectionStateMessages"] = 2] = "DisplayConnectionStateMessages";
6
- })(SupportServiceFlags || (SupportServiceFlags = {}));
7
- export var SupportProduct;
8
- (function (SupportProduct) {
9
- SupportProduct[SupportProduct["None"] = 0] = "None";
10
- SupportProduct[SupportProduct["Clipper"] = 1] = "Clipper";
11
- SupportProduct[SupportProduct["Evolution"] = 2] = "Evolution";
12
- SupportProduct[SupportProduct["DGInfo"] = 4] = "DGInfo";
13
- })(SupportProduct || (SupportProduct = {}));
14
- export var SupportProductModule;
15
- (function (SupportProductModule) {
16
- SupportProductModule[SupportProductModule["None"] = 0] = "None";
17
- SupportProductModule[SupportProductModule["EvoFormazione"] = 1] = "EvoFormazione";
18
- SupportProductModule[SupportProductModule["EvoDPI"] = 2] = "EvoDPI";
19
- SupportProductModule[SupportProductModule["EvoSorveglianzaSanitaria"] = 4] = "EvoSorveglianzaSanitaria";
20
- SupportProductModule[SupportProductModule["EvoRegistroEScadenzario"] = 8] = "EvoRegistroEScadenzario";
21
- SupportProductModule[SupportProductModule["EvoAttrezzatureEImpianti"] = 16] = "EvoAttrezzatureEImpianti";
22
- SupportProductModule[SupportProductModule["EvoMonitoraggio"] = 32] = "EvoMonitoraggio";
23
- SupportProductModule[SupportProductModule["EvoBollettino"] = 64] = "EvoBollettino";
24
- SupportProductModule[SupportProductModule["DgiADR"] = 128] = "DgiADR";
25
- SupportProductModule[SupportProductModule["DgiRID"] = 256] = "DgiRID";
26
- SupportProductModule[SupportProductModule["DgiIMDG"] = 512] = "DgiIMDG";
27
- SupportProductModule[SupportProductModule["DgiCLP"] = 1024] = "DgiCLP";
28
- })(SupportProductModule || (SupportProductModule = {}));
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvc3VwcG9ydC5jb21tb24vY29tbW9uL2RlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLG1CQUlYO0FBSkQsV0FBWSxtQkFBbUI7SUFDN0IsNkRBQVEsQ0FBQTtJQUNSLHlGQUFzQixDQUFBO0lBQ3RCLGlIQUF1QyxDQUFBO0FBQ3pDLENBQUMsRUFKVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBSTlCO0FBa0VELE1BQU0sQ0FBTixJQUFZLGNBS1g7QUFMRCxXQUFZLGNBQWM7SUFDeEIsbURBQVEsQ0FBQTtJQUNSLHlEQUFXLENBQUE7SUFDWCw2REFBa0IsQ0FBQTtJQUNsQix1REFBZSxDQUFBO0FBQ2pCLENBQUMsRUFMVyxjQUFjLEtBQWQsY0FBYyxRQUt6QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQWFYO0FBYkQsV0FBWSxvQkFBb0I7SUFDOUIsK0RBQVEsQ0FBQTtJQUNSLGlGQUFpQixDQUFBO0lBQ2pCLG1FQUFlLENBQUE7SUFDZix1R0FBaUMsQ0FBQTtJQUNqQyxxR0FBZ0MsQ0FBQTtJQUNoQyx3R0FBaUMsQ0FBQTtJQUNqQyxzRkFBd0IsQ0FBQTtJQUN4QixrRkFBc0IsQ0FBQTtJQUN0QixxRUFBZSxDQUFBO0lBQ2YscUVBQWUsQ0FBQTtJQUNmLHVFQUFnQixDQUFBO0lBQ2hCLHNFQUFnQixDQUFBO0FBQ2xCLENBQUMsRUFiVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBYS9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9naW5SZXN1bHQgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5cclxuZXhwb3J0IGVudW0gU3VwcG9ydFNlcnZpY2VGbGFncyB7XHJcbiAgTm9uZSA9IDAsXHJcbiAgTm90aWZ5U3lzdGVtRXJyb3JzID0gMSxcclxuICBEaXNwbGF5Q29ubmVjdGlvblN0YXRlTWVzc2FnZXMgPSAxIDw8IDFcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0VXNlckluZm8ge1xyXG5cclxuICAgIGlkOiBudW1iZXI7XHJcbiAgICBncm91cHM/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgZ3JvdXBOYW1lcz86IHN0cmluZyB8IG51bGw7XHJcbiAgICBkaXNwbGF5TmFtZT86IHN0cmluZyB8IG51bGw7XHJcbiAgICBkYXNoYm9hcmQ/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgc2Vzc2lvbklkPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGVtYWlsPzogc3RyaW5nIHwgbnVsbDtcclxuICAgIGN1c3RvbWVySWQ/OiBudW1iZXIgfCBudWxsO1xyXG4gICAgY29tcGFueU5hbWU/OiBzdHJpbmcgfCBudWxsO1xyXG4gICAgcm9sZTogbnVtYmVyO1xyXG4gICAgc2NvcGVzPzogc3RyaW5nW10gfCBudWxsO1xyXG4gICAgc2xhOiBudW1iZXI7XHJcbiAgICBpc0NvbW1lcmNpYWw/OiBib29sZWFuIHwgbnVsbDtcclxuICAgIGlzQWRtaW5pc3RyYXRvcjogYm9vbGVhbjtcclxuICAgIGlzR3Vlc3Q6IGJvb2xlYW47XHJcbiAgICBpc1VzZXI6IGJvb2xlYW47XHJcbiAgICBpc09wZXJhdG9yOiBib29sZWFuO1xyXG4gICAgaXNUZW1wb3Jhcnk6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydExvZ2luUmVzdWx0IGV4dGVuZHMgTG9naW5SZXN1bHQ8U3VwcG9ydFVzZXJJbmZvPiB7IH0gXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnRMb2dpbkluZm8ge1xyXG4gIGNvbnRleHQ6IFN1cHBvcnRVc2VySW5mbztcclxuICB1c2VyQ3JlZGVudGlhbHM/OiBzdHJpbmcgfCBudWxsO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Tm90aWZpY2F0aW9uc1NlYXJjaFBhcmFtcyB7XHJcbiAgYW55Pzogc3RyaW5nIHwgbnVsbDtcclxuICBwcm9kdWN0cz86IG51bWJlciB8IG51bGw7XHJcbiAgcHJvZHVjdE1vZHVsZXM/OiBudW1iZXIgfCBudWxsO1xyXG4gIGZpcnN0PzogbnVtYmVyIHwgbnVsbDtcclxuICBjb3VudD86IG51bWJlciB8IG51bGw7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hSZXN1bHQge1xyXG4gIGludGVydmFsPzogc3RyaW5nIHwgbnVsbDtcclxuICBpdGVtcz86IFN1cHBvcnROb3RpZmljYXRpb25JbmZvW10gfCBudWxsO1xyXG4gIHRvdGFsPzogbnVtYmVyIHwgbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdXBwb3J0Tm90aWZpY2F0aW9uSW5mbyB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBwcm9kdWN0czogbnVtYmVyO1xyXG4gIHByb2R1Y3ROYW1lcz86IHN0cmluZyB8IG51bGw7XHJcbiAgcHJvZHVjdE1vZHVsZXM/OiBudW1iZXIgfCBudWxsO1xyXG4gIHByb2R1Y3RNb2R1bGVOYW1lcz86IHN0cmluZyB8IG51bGw7XHJcbiAgcHVibGlzaGluZ0RhdGU/OiBEYXRlIHwgbnVsbDtcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIHRleHQ6IHN0cmluZztcclxuICBzdGF0ZTogbnVtYmVyO1xyXG4gIGlzUHVibGlzaGVkOiBib29sZWFuO1xyXG4gIGlzSW50ZXJuYWw6IGJvb2xlYW47XHJcbiAgaXNSZWFkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnROb3RpZmljYXRpb25zTWFya1BhcmFtcyB7XHJcbiAgaWRzOiBudW1iZXJbXTtcclxuICB1bm1hcms6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN1cHBvcnRQcm9kdWN0IHtcclxuICBOb25lID0gMCxcclxuICBDbGlwcGVyID0gMSxcclxuICBFdm9sdXRpb24gPSAxIDw8IDEsXHJcbiAgREdJbmZvID0gMSA8PCAyXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFN1cHBvcnRQcm9kdWN0TW9kdWxlIHtcclxuICBOb25lID0gMCxcclxuICBFdm9Gb3JtYXppb25lID0gMSxcclxuICBFdm9EUEkgPSAxIDw8IDEsXHJcbiAgRXZvU29ydmVnbGlhbnphU2FuaXRhcmlhID0gMSA8PCAyLFxyXG4gIEV2b1JlZ2lzdHJvRVNjYWRlbnphcmlvID0gMSA8PCAzLFxyXG4gIEV2b0F0dHJlenphdHVyZUVJbXBpYW50aSA9IDEgPDwgNCxcclxuICBFdm9Nb25pdG9yYWdnaW8gPSAxIDw8IDUsXHJcbiAgRXZvQm9sbGV0dGlubyA9IDEgPDwgNixcclxuICBEZ2lBRFIgPSAxIDw8IDcsXHJcbiAgRGdpUklEID0gMSA8PCA4LFxyXG4gIERnaUlNREcgPSAxIDw8IDksXHJcbiAgRGdpQ0xQID0gMSA8PCAxMCxcclxufVxyXG4iXX0=
@@ -1,100 +0,0 @@
1
- import { HttpErrorResponse } from '@angular/common/http';
2
- import { Injectable, inject } from '@angular/core';
3
- import { catchError, finalize, switchMap, throwError } from 'rxjs';
4
- import { SupportService } from '../services/support.service';
5
- import { DialogService } from '@arsedizioni/ars-utils/ui';
6
- import { BroadcastService } from '@arsedizioni/ars-utils/core';
7
- import { SupportMessages } from '../messages';
8
- import { SupportServiceFlags } from '../definitions';
9
- import * as i0 from "@angular/core";
10
- export class SupportAuthInterceptor {
11
- constructor() {
12
- this.supportService = inject(SupportService);
13
- this.broadcastService = inject(BroadcastService);
14
- this.dialogService = inject(DialogService);
15
- this.lastErrorTime = -1;
16
- }
17
- intercept(request, next) {
18
- if (request.url.startsWith(this.supportService.serviceUri)) {
19
- request = request.clone({ withCredentials: true });
20
- return next.handle(this.addTokenToRequest(request))
21
- .pipe(finalize(() => this.dialogService.clearBusy()), catchError(error => {
22
- if (error.url.startsWith(this.supportService.serviceUri)) {
23
- if (error instanceof HttpErrorResponse &&
24
- !request.url.includes("/login") &&
25
- error.status === 401) {
26
- return this.handle401Error(request, next);
27
- }
28
- const errorStatus = parseInt(error.status ?? "0");
29
- if ((errorStatus > 0 && errorStatus < 500) || (this.supportService.flags & SupportServiceFlags.NotifySystemErrors) > 0) {
30
- const errorTime = new Date().getTime();
31
- if (errorTime - this.lastErrorTime > 5000) {
32
- this.lastErrorTime = errorTime;
33
- let message = "";
34
- switch (errorStatus) {
35
- case 0:
36
- message = "In questo momento ARS Support non è disponibile. Riprova tra qualche minuto.";
37
- break;
38
- case 403:
39
- message = "Non hai i permessi necessari per eseguire l'operazione richiesta.";
40
- break;
41
- default:
42
- message = (error.error?.message ?? error.message ?? "Impossibile eseguire l'operazione richiesta.").replaceAll("\r\n", "</p><p>");
43
- break;
44
- }
45
- const invalidSession = errorStatus === 405 || errorStatus === 410;
46
- this.dialogService.error("<p>" + message + "</p>", null, "Errore in ARS Support", undefined, undefined, invalidSession ? 5000 : 15000).afterClosed().subscribe(() => {
47
- if (invalidSession) {
48
- this.broadcastService.sendMessage(SupportMessages.LOGOUT);
49
- }
50
- });
51
- }
52
- }
53
- }
54
- return throwError(() => error);
55
- }));
56
- }
57
- return next.handle(request);
58
- }
59
- /**
60
- * Handle 401 error
61
- * @param request : the request
62
- * @param next : the http handler
63
- */
64
- handle401Error(request, next) {
65
- if (this.supportService.loggedIn()) {
66
- return this.supportService.refresh().pipe(switchMap(() => {
67
- return next.handle(this.addTokenToRequest(request));
68
- }), catchError(error => {
69
- return throwError(() => error);
70
- }));
71
- }
72
- return next.handle(request);
73
- }
74
- /**
75
- * Add token to request
76
- * @param request : the request
77
- * @param token: the token or null to use curre3nt
78
- */
79
- addTokenToRequest(request, token = null) {
80
- if (request.url.startsWith(this.supportService.serviceUri)) {
81
- if (!token)
82
- token = this.supportService.getToken();
83
- if (token) {
84
- return request.clone({
85
- setHeaders: {
86
- Authorization: 'Bearer ' + token,
87
- 'ngsw-bypass': 'ngsw-bypass'
88
- },
89
- });
90
- }
91
- }
92
- return request;
93
- }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportAuthInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportAuthInterceptor }); }
96
- }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportAuthInterceptor, decorators: [{
98
- type: Injectable
99
- }] });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fycy11dGlscy9zdXBwb3J0LmNvbW1vbi9jb21tb24vaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUF3RCxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBYyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUdyRCxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBR1UsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDNUMsa0JBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEMsa0JBQWEsR0FBVyxDQUFDLENBQUMsQ0FBQztLQW9HcEM7SUFsR0MsU0FBUyxDQUNQLE9BQXlCLEVBQ3pCLElBQWlCO1FBRWpCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNELE9BQU8sR0FBRyxP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RXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHN3aXRjaE1hcCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTdXBwb3J0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N1cHBvcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL3VpJztcclxuaW1wb3J0IHsgQnJvYWRjYXN0U2VydmljZSB9IGZyb20gJ0BhcnNlZGl6aW9uaS9hcnMtdXRpbHMvY29yZSc7XHJcbmltcG9ydCB7IFN1cHBvcnRNZXNzYWdlcyB9IGZyb20gJy4uL21lc3NhZ2VzJztcclxuaW1wb3J0IHsgU3VwcG9ydFNlcnZpY2VGbGFncyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFN1cHBvcnRBdXRoSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG5cclxuICBwcml2YXRlIHN1cHBvcnRTZXJ2aWNlID0gaW5qZWN0KFN1cHBvcnRTZXJ2aWNlKTtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2UgPSBpbmplY3QoQnJvYWRjYXN0U2VydmljZSk7XHJcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgbGFzdEVycm9yVGltZTogbnVtYmVyID0gLTE7XHJcblxyXG4gIGludGVyY2VwdChcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIGlmIChyZXF1ZXN0LnVybC5zdGFydHNXaXRoKHRoaXMuc3VwcG9ydFNlcnZpY2Uuc2VydmljZVVyaSkpIHtcclxuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSk7XHJcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuVG9SZXF1ZXN0KHJlcXVlc3QpKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpKSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IudXJsLnN0YXJ0c1dpdGgodGhpcy5zdXBwb3J0U2VydmljZS5zZXJ2aWNlVXJpKSkge1xyXG4gICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiZcclxuICAgICAgICAgICAgICAgICFyZXF1ZXN0LnVybC5pbmNsdWRlcyhcIi9sb2dpblwiKSAmJlxyXG4gICAgICAgICAgICAgICAgZXJyb3Iuc3RhdHVzID09PSA0MDFcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZTQwMUVycm9yKHJlcXVlc3QsIG5leHQpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBjb25zdCBlcnJvclN0YXR1cyA9IHBhcnNlSW50KGVycm9yLnN0YXR1cyA/PyBcIjBcIik7XHJcbiAgICAgICAgICAgICAgaWYgKChlcnJvclN0YXR1cyA+IDAgJiYgZXJyb3JTdGF0dXMgPCA1MDApIHx8ICh0aGlzLnN1cHBvcnRTZXJ2aWNlLmZsYWdzICYgU3VwcG9ydFNlcnZpY2VGbGFncy5Ob3RpZnlTeXN0ZW1FcnJvcnMpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3JUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3JUaW1lIC0gdGhpcy5sYXN0RXJyb3JUaW1lID4gNTAwMCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmxhc3RFcnJvclRpbWUgPSBlcnJvclRpbWU7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBtZXNzYWdlID0gXCJcIlxyXG4gICAgICAgICAgICAgICAgICBzd2l0Y2ggKGVycm9yU3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiSW4gcXVlc3RvIG1vbWVudG8gQVJTIFN1cHBvcnQgbm9uIMOoIGRpc3BvbmliaWxlLiBSaXByb3ZhIHRyYSBxdWFsY2hlIG1pbnV0by5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDAzOlxyXG4gICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IFwiTm9uIGhhaSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgZXNlZ3VpcmUgbCdvcGVyYXppb25lIHJpY2hpZXN0YS5cIjtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gKGVycm9yLmVycm9yPy5tZXNzYWdlID8/IGVycm9yLm1lc3NhZ2UgPz8gXCJJbXBvc3NpYmlsZSBlc2VndWlyZSBsJ29wZXJhemlvbmUgcmljaGllc3RhLlwiKS5yZXBsYWNlQWxsKFwiXFxyXFxuXCIsIFwiPC9wPjxwPlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGludmFsaWRTZXNzaW9uID0gZXJyb3JTdGF0dXMgPT09IDQwNSB8fCBlcnJvclN0YXR1cyA9PT0gNDEwO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgXCI8cD5cIiArIG1lc3NhZ2UgICsgXCI8L3A+XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBcIkVycm9yZSBpbiBBUlMgU3VwcG9ydFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaW52YWxpZFNlc3Npb24gPyA1MDAwIDogMTUwMDApLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnZhbGlkU2Vzc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoU3VwcG9ydE1lc3NhZ2VzLkxPR09VVCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBIYW5kbGUgNDAxIGVycm9yXHJcbiAqIEBwYXJhbSByZXF1ZXN0IDogdGhlIHJlcXVlc3RcclxuICogQHBhcmFtIG5leHQgOiB0aGUgaHR0cCBoYW5kbGVyXHJcbiAqL1xyXG4gIHByaXZhdGUgaGFuZGxlNDAxRXJyb3IocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpIHtcclxuICAgIGlmICh0aGlzLnN1cHBvcnRTZXJ2aWNlLmxvZ2dlZEluKCkpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3VwcG9ydFNlcnZpY2UucmVmcmVzaCgpLnBpcGUoXHJcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcclxuICAgICAgICAgIHJldHVybiBuZXh0LmhhbmRsZSh0aGlzLmFkZFRva2VuVG9SZXF1ZXN0KHJlcXVlc3QpKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIHRva2VuIHRvIHJlcXVlc3RcclxuICAgKiBAcGFyYW0gcmVxdWVzdCA6IHRoZSByZXF1ZXN0XHJcbiAgICogQHBhcmFtIHRva2VuOiB0aGUgdG9rZW4gb3IgbnVsbCB0byB1c2UgY3VycmUzbnRcclxuICAgKi9cclxuICBwcml2YXRlIGFkZFRva2VuVG9SZXF1ZXN0KFxyXG4gICAgcmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PixcclxuICAgIHRva2VuOiBzdHJpbmcgPSBudWxsXHJcbiAgKTogSHR0cFJlcXVlc3Q8YW55PiB7XHJcbiAgICBpZiAocmVxdWVzdC51cmwuc3RhcnRzV2l0aCh0aGlzLnN1cHBvcnRTZXJ2aWNlLnNlcnZpY2VVcmkpKSB7XHJcbiAgICAgIGlmICghdG9rZW4pIHRva2VuID0gdGhpcy5zdXBwb3J0U2VydmljZS5nZXRUb2tlbigpO1xyXG4gICAgICBpZiAodG9rZW4pIHtcclxuICAgICAgICByZXR1cm4gcmVxdWVzdC5jbG9uZSh7XHJcbiAgICAgICAgICBzZXRIZWFkZXJzOiB7XHJcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb246ICdCZWFyZXIgJyArIHRva2VuLFxyXG4gICAgICAgICAgICAnbmdzdy1ieXBhc3MnOiAnbmdzdy1ieXBhc3MnXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -1,13 +0,0 @@
1
- export const SupportMessages = {
2
- /**
3
- * Messages
4
- */
5
- // Login
6
- LOGIN_CHANGED: '§support-login-changed',
7
- LOGIN_COMPLETED: '§support-login-completed',
8
- LOGOUT_COMPLETED: '§support-logout-completed',
9
- LOGOUT: '§support-logout',
10
- // Notifications
11
- NOTIFICATION_READ: '§support-notification-read',
12
- };
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnMtdXRpbHMvc3VwcG9ydC5jb21tb24vY29tbW9uL21lc3NhZ2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUM3Qjs7T0FFRztJQUVILFFBQVE7SUFDUixhQUFhLEVBQUUsd0JBQXdCO0lBQ3ZDLGVBQWUsRUFBRSwwQkFBMEI7SUFDM0MsZ0JBQWdCLEVBQUUsMkJBQTJCO0lBQzdDLE1BQU0sRUFBRSxpQkFBaUI7SUFFekIsZ0JBQWdCO0lBQ2hCLGlCQUFpQixFQUFFLDRCQUE0QjtDQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFN1cHBvcnRNZXNzYWdlcyA9IHtcclxuICAvKipcclxuICAgKiBNZXNzYWdlc1xyXG4gICAqL1xyXG5cclxuICAvLyBMb2dpblxyXG4gIExPR0lOX0NIQU5HRUQ6ICfCp3N1cHBvcnQtbG9naW4tY2hhbmdlZCcsXHJcbiAgTE9HSU5fQ09NUExFVEVEOiAnwqdzdXBwb3J0LWxvZ2luLWNvbXBsZXRlZCcsXHJcbiAgTE9HT1VUX0NPTVBMRVRFRDogJ8Knc3VwcG9ydC1sb2dvdXQtY29tcGxldGVkJyxcclxuICBMT0dPVVQ6ICfCp3N1cHBvcnQtbG9nb3V0JyxcclxuXHJcbiAgLy8gTm90aWZpY2F0aW9uc1xyXG4gIE5PVElGSUNBVElPTl9SRUFEOiAnwqdzdXBwb3J0LW5vdGlmaWNhdGlvbi1yZWFkJyxcclxufTtcclxuIl19
@@ -1,289 +0,0 @@
1
- import { HttpClient, HttpHeaders } from '@angular/common/http';
2
- import { Injectable, inject, signal } from '@angular/core';
3
- import { BroadcastService, SystemUtils } from '@arsedizioni/ars-utils/core';
4
- import { EMPTY, of, throwError } from 'rxjs';
5
- import { catchError, finalize, map } from 'rxjs/operators';
6
- import { SupportMessages } from '../messages';
7
- import { SupportProduct, SupportProductModule, SupportServiceFlags } from '../definitions';
8
- import * as i0 from "@angular/core";
9
- export class SupportService {
10
- constructor() {
11
- this.httpClient = inject(HttpClient);
12
- this.broadcastService = inject(BroadcastService);
13
- this.broadcastServiceSubscription = null;
14
- this._loginInfo = null;
15
- this._serviceUri = "https://support.arsedizioni.it";
16
- this._flags = SupportServiceFlags.None;
17
- this.products = SupportProduct.None;
18
- this.productModules = SupportProductModule.None;
19
- this.unreadNotifications = signal(null);
20
- this.loggedIn = signal(false);
21
- this.loggingIn = signal(false);
22
- this.keepAlive = 0;
23
- }
24
- get loginInfo() { return this._loginInfo; }
25
- ;
26
- set loginInfo(value) {
27
- this._loginInfo = value;
28
- }
29
- get serviceUri() {
30
- return this._serviceUri;
31
- }
32
- get flags() {
33
- return this._flags;
34
- }
35
- ngOnDestroy() {
36
- // Clean-up
37
- if (this.broadcastServiceSubscription) {
38
- this.broadcastServiceSubscription.unsubscribe();
39
- }
40
- // Stop keep alive
41
- this.removeKeepAlive();
42
- }
43
- /**
44
- * Initialize service
45
- * @param serviceUri : the service uri
46
- * @param products: the supported products
47
- * @param productModules: the supported product modules
48
- * @param flags: the service flags. Default is none.
49
- */
50
- initialize(serviceUri = null, products = SupportProduct.None, productModules = SupportProductModule.None, flags = SupportServiceFlags.None) {
51
- // Create unique client id
52
- if (!localStorage.getItem('support_client_id'))
53
- localStorage.setItem('support_client_id', SystemUtils.generateUUID());
54
- // Initialize
55
- this._serviceUri = serviceUri;
56
- this._flags = flags;
57
- this.products = products;
58
- this.productModules = productModules;
59
- // React to message broadcasting
60
- if (!this.broadcastServiceSubscription) {
61
- this.broadcastServiceSubscription = this.broadcastService.getMessage().subscribe((message) => {
62
- if (message.id === SupportMessages.LOGIN_CHANGED) {
63
- setTimeout(() => {
64
- this.login(message.data.email, message.data.oauth, message.data.oauthAccessToken).subscribe({
65
- next: r => {
66
- if (r.success) {
67
- this.countUnreadNotifications();
68
- }
69
- }, error: () => { console.error("ARS Support non disponibile."); } // Avoid unwanted errors on client);
70
- });
71
- }, 500);
72
- }
73
- else if (message.id === SupportMessages.LOGOUT) {
74
- if (this.loggedIn()) {
75
- this.logout().subscribe({
76
- complete: () => {
77
- this.clear();
78
- }
79
- });
80
- }
81
- else {
82
- this.clear();
83
- }
84
- }
85
- else if (message.id === SupportMessages.NOTIFICATION_READ) {
86
- this.countUnreadNotifications();
87
- }
88
- });
89
- }
90
- // Eveluate current session storage in case of page refresh (F5)
91
- if (!this.loggedIn() && this.getToken()) {
92
- // Auto login
93
- this.loggedIn.set(true);
94
- // Notify
95
- this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);
96
- // Set keep alive
97
- this.setKeepAlive();
98
- }
99
- }
100
- /**
101
- * Set keep alive
102
- */
103
- setKeepAlive() {
104
- // Keep alive every 1 min
105
- if (this.keepAlive === 0) {
106
- this.keepAlive = window.setInterval(() => {
107
- this.ping();
108
- }, 1000 * 60);
109
- }
110
- }
111
- /**
112
- * Remove keep alive
113
- */
114
- removeKeepAlive() {
115
- if (this.keepAlive > 0) {
116
- window.clearInterval(this.keepAlive);
117
- this.keepAlive = 0;
118
- }
119
- }
120
- /**
121
- * Ping
122
- */
123
- ping() {
124
- this.httpClient.get(this._serviceUri + '/ping')
125
- .pipe(catchError(() => { return EMPTY; }))
126
- .subscribe();
127
- }
128
- /**
129
- * Set JWT token
130
- * @param value : the login result
131
- */
132
- setToken(value) {
133
- sessionStorage.setItem('support_jwt', value.token);
134
- sessionStorage.setItem('support_jwt_refresh', value.refreshToken ?? '');
135
- }
136
- /**
137
- * Return current JWT token
138
- * @param refresh: true to get the refresh token. Default is false.
139
- */
140
- getToken(refresh = false) {
141
- let token = sessionStorage.getItem(refresh ? 'support_jwt_refresh' : 'support_jwt');
142
- if (token && token[0] === '"') {
143
- return token.substring(1, token.length - 1);
144
- }
145
- return token ?? '';
146
- }
147
- /**
148
- * Perform login
149
- * @param email: the guest email
150
- * @param oauth: the optional open authentication supported
151
- * @param oauthAccessToken: the optional oauth2 access token
152
- * @returns: the login result
153
- */
154
- login(email = null, oauth = null, oauthAccessToken = null) {
155
- this.loggingIn.set(true);
156
- return this.httpClient
157
- .post(this._serviceUri + '/login', {
158
- user: oauth > 0 ? null : email,
159
- clientId: localStorage.getItem("support_client_id"),
160
- OAUTH: oauth
161
- }, {
162
- headers: !oauth
163
- ? new HttpHeaders()
164
- : new HttpHeaders()
165
- .set("Authorization", oauthAccessToken)
166
- })
167
- .pipe(catchError(err => {
168
- this.loggingIn.set(false);
169
- return throwError(() => err);
170
- }), map((r) => {
171
- this.loggingIn.set(false);
172
- if (r.success) {
173
- this.setToken(r.value);
174
- this._loginInfo = r.value.context;
175
- this.loggedIn.set(true);
176
- // Notify
177
- this.broadcastService.sendMessage(SupportMessages.LOGIN_COMPLETED);
178
- // Keep alive
179
- this.setKeepAlive();
180
- }
181
- return r;
182
- }));
183
- }
184
- /**
185
- * Perform logout
186
- */
187
- logout() {
188
- return this.httpClient
189
- .post(this._serviceUri + '/logout', {}).pipe(finalize(() => { this.removeKeepAlive(); }), map(r => {
190
- this.clear();
191
- return r;
192
- }), catchError((_e) => {
193
- this.clear();
194
- return of([]);
195
- }));
196
- }
197
- /**
198
- * Reset login refresh timer and logins state
199
- */
200
- reset() {
201
- // Clear login info
202
- this._loginInfo = null;
203
- this.loggedIn.set(false);
204
- // Notify
205
- this.broadcastService.sendMessage(SupportMessages.LOGOUT_COMPLETED);
206
- }
207
- /**
208
- * Clear login data
209
- */
210
- clear() {
211
- // Reset login
212
- this.reset();
213
- // Clear local storage
214
- sessionStorage.removeItem('support_jwt');
215
- sessionStorage.removeItem('support_jwt_refresh');
216
- }
217
- /**
218
- * Perform token refresh
219
- */
220
- refresh() {
221
- return this.httpClient.get(this._serviceUri + '/refresh2/?token=' + this.getToken(true)).pipe(map((r) => {
222
- // Update token
223
- this.setToken(r.value);
224
- }));
225
- }
226
- /**
227
- * Navigate to support service
228
- */
229
- open() {
230
- let uri = this.serviceUri ?? '';
231
- if (uri.endsWith('/api'))
232
- uri = uri.substring(0, uri.length - 4);
233
- window.open(uri);
234
- }
235
- ////
236
- // NOTIFICATIONS
237
- ////
238
- /**
239
- * Count unread notifications
240
- */
241
- countUnreadNotifications() {
242
- this.httpClient.get(this._serviceUri + '/notifications/count-unread/?products=' + (this.products ?? 0) + "&modules=" + (this.productModules ?? 0)).subscribe((r) => {
243
- if (r.success) {
244
- this.unreadNotifications.set(r.value > 0 ? r.value : null);
245
- }
246
- });
247
- }
248
- /**
249
- * Query notifications
250
- * @param params: query parameters
251
- */
252
- queryNotifications(params) {
253
- params.products = this.products ?? 0;
254
- params.productModules = this.productModules ?? 0;
255
- return this.httpClient.post(this._serviceUri + '/notifications', params);
256
- }
257
- /**
258
- * Retrieve a notification
259
- * @param id: the notification id
260
- */
261
- getNotification(id) {
262
- return this.httpClient.get(this._serviceUri +
263
- '/notifications/' +
264
- id);
265
- }
266
- /**
267
- * Mark a group of notifications as read
268
- * @param ids: the array of notification's ids to set as read
269
- */
270
- markNotifications(params) {
271
- return this.httpClient.post(this._serviceUri + '/notifications/mark', params);
272
- }
273
- /**
274
- * Download a notification document
275
- * @param documentId : the notification document id
276
- */
277
- dowloadNotificationDocument(documentId) {
278
- return this.httpClient.get(this._serviceUri + '/documents/download/' + documentId, { responseType: 'blob' });
279
- }
280
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
281
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportService, providedIn: 'root' }); }
282
- }
283
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.10", ngImport: i0, type: SupportService, decorators: [{
284
- type: Injectable,
285
- args: [{
286
- providedIn: 'root',
287
- }]
288
- }] });
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcG9ydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL3N1cHBvcnQuY29tbW9uL2NvbW1vbi9zZXJ2aWNlcy9zdXBwb3J0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFtQyxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBZ0IsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFtSixjQUFjLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7O0FBTTdQLE1BQU0sT0FBTyxjQUFjO0lBSDNCO1FBTVUsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM1QyxpQ0FBNEIsR0FBeUIsSUFBSSxDQUFDO1FBQzFELGVBQVUsR0FBMkIsSUFBSSxDQUFDO1FBTTFDLGdCQUFXLEdBQVcsZ0NBQWdDLENBQUE7UUFJdEQsV0FBTSxHQUF3QixtQkFBbUIsQ0FBQyxJQUFJLENBQUM7UUFLeEQsYUFBUSxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBQy9DLG1CQUFjLEdBQXlCLG9CQUFvQixDQUFDLElBQUksQ0FBQztR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Q0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxrQkFBa0IsQ0FBQyxNQUF3QztRQUN6RCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDekIsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsRUFDbkMsTUFBTSxDQUNQLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLEVBQVU7UUFDeEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDeEIsSUFBSSxDQUFDLFdBQVc7WUFDaEIsaUJBQWlCO1lBQ2pCLEVBQUUsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNILGlCQUFpQixDQUFDLE1BQXNDO1FBQ3RELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcscUJBQXFCLEVBQ3hDLE1BQU0sQ0FDUCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7S0FHQztJQUNELDJCQUEyQixDQUFDLFVBQWtCO1FBQzVDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ3hCLElBQUksQ0FBQyxXQUFXLEdBQUcsc0JBQXNCLEdBQUcsVUFBVSxFQUN0RCxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FDekIsQ0FBQztJQUNKLENBQUM7K0dBN1VVLGNBQWM7bUhBQWQsY0FBYyxjQUZiLE1BQU07OzRGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpUmVzdWx0LCBCcm9hZGNhc3RNZXNzYWdlSW5mbywgQnJvYWRjYXN0U2VydmljZSwgU3lzdGVtVXRpbHMgfSBmcm9tICdAYXJzZWRpemlvbmkvYXJzLXV0aWxzL2NvcmUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgb2YsIFN1YnNjcmlwdGlvbiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBTdXBwb3J0TWVzc2FnZXMgfSBmcm9tICcuLi9tZXNzYWdlcyc7XHJcbmltcG9ydCB7IFN1cHBvcnRMb2dpblJlc3VsdCwgU3VwcG9ydE5vdGlmaWNhdGlvbkluZm8sIFN1cHBvcnROb3RpZmljYXRpb25zTWFya1BhcmFtcywgU3VwcG9ydE5vdGlmaWNhdGlvbnNTZWFyY2hQYXJhbXMsIFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUmVzdWx0LCBTdXBwb3J0UHJvZHVjdCwgU3VwcG9ydFByb2R1Y3RNb2R1bGUsIFN1cHBvcnRTZXJ2aWNlRmxhZ3MsIFN1cHBvcnRVc2VySW5mbyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3VwcG9ydFNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBodHRwQ2xpZW50ID0gaW5qZWN0KEh0dHBDbGllbnQpO1xyXG4gIHByaXZhdGUgYnJvYWRjYXN0U2VydmljZSA9IGluamVjdChCcm9hZGNhc3RTZXJ2aWNlKTtcclxuICBwcml2YXRlIGJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9sb2dpbkluZm86IFN1cHBvcnRVc2VySW5mbyB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBsb2dpbkluZm8oKTogU3VwcG9ydFVzZXJJbmZvIHwgbnVsbCB7IHJldHVybiB0aGlzLl9sb2dpbkluZm8gfTtcclxuICBzZXQgbG9naW5JbmZvKHZhbHVlOiBTdXBwb3J0VXNlckluZm8gfCBudWxsKSB7XHJcbiAgICB0aGlzLl9sb2dpbkluZm8gPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NlcnZpY2VVcmk6IHN0cmluZyA9IFwiaHR0cHM6Ly9zdXBwb3J0LmFyc2VkaXppb25pLml0XCJcclxuICBnZXQgc2VydmljZVVyaSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlcnZpY2VVcmk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2ZsYWdzOiBTdXBwb3J0U2VydmljZUZsYWdzID0gU3VwcG9ydFNlcnZpY2VGbGFncy5Ob25lO1xyXG4gIGdldCBmbGFncygpOiBTdXBwb3J0U2VydmljZUZsYWdzIHtcclxuICAgIHJldHVybiB0aGlzLl9mbGFncztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcm9kdWN0czogU3VwcG9ydFByb2R1Y3QgPSBTdXBwb3J0UHJvZHVjdC5Ob25lO1xyXG4gIHB1YmxpYyBwcm9kdWN0TW9kdWxlczogU3VwcG9ydFByb2R1Y3RNb2R1bGUgPSBTdXBwb3J0UHJvZHVjdE1vZHVsZS5Ob25lO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgdW5yZWFkTm90aWZpY2F0aW9ucyA9IHNpZ25hbDxudW1iZXIgfCBudWxsPihudWxsKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBsb2dnaW5nSW4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xyXG5cclxuICBwcml2YXRlIGtlZXBBbGl2ZSA9IDA7XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgLy8gQ2xlYW4tdXBcclxuICAgIGlmICh0aGlzLmJyb2FkY2FzdFNlcnZpY2VTdWJzY3JpcHRpb24pIHtcclxuICAgICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbiAgICAvLyBTdG9wIGtlZXAgYWxpdmVcclxuICAgIHRoaXMucmVtb3ZlS2VlcEFsaXZlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHNlcnZpY2VcclxuICAgKiBAcGFyYW0gc2VydmljZVVyaSA6IHRoZSBzZXJ2aWNlIHVyaVxyXG4gICAqIEBwYXJhbSBwcm9kdWN0czogdGhlIHN1cHBvcnRlZCBwcm9kdWN0c1xyXG4gICAqIEBwYXJhbSBwcm9kdWN0TW9kdWxlczogdGhlIHN1cHBvcnRlZCBwcm9kdWN0IG1vZHVsZXNcclxuICAgKiBAcGFyYW0gZmxhZ3M6IHRoZSBzZXJ2aWNlIGZsYWdzLiBEZWZhdWx0IGlzIG5vbmUuXHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZShcclxuICAgIHNlcnZpY2VVcmk6IHN0cmluZyA9IG51bGwsXHJcbiAgICBwcm9kdWN0czogU3VwcG9ydFByb2R1Y3QgPSBTdXBwb3J0UHJvZHVjdC5Ob25lLFxyXG4gICAgcHJvZHVjdE1vZHVsZXM6IFN1cHBvcnRQcm9kdWN0TW9kdWxlID0gU3VwcG9ydFByb2R1Y3RNb2R1bGUuTm9uZSxcclxuICAgIGZsYWdzOiBTdXBwb3J0U2VydmljZUZsYWdzID0gU3VwcG9ydFNlcnZpY2VGbGFncy5Ob25lKSB7XHJcblxyXG4gICAgLy8gQ3JlYXRlIHVuaXF1ZSBjbGllbnQgaWRcclxuICAgIGlmICghbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1cHBvcnRfY2xpZW50X2lkJykpXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdXBwb3J0X2NsaWVudF9pZCcsIFN5c3RlbVV0aWxzLmdlbmVyYXRlVVVJRCgpKTtcclxuXHJcbiAgICAvLyBJbml0aWFsaXplXHJcbiAgICB0aGlzLl9zZXJ2aWNlVXJpID0gc2VydmljZVVyaTtcclxuICAgIHRoaXMuX2ZsYWdzID0gZmxhZ3M7XHJcbiAgICB0aGlzLnByb2R1Y3RzID0gcHJvZHVjdHM7XHJcbiAgICB0aGlzLnByb2R1Y3RNb2R1bGVzID0gcHJvZHVjdE1vZHVsZXM7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gbWVzc2FnZSBicm9hZGNhc3RpbmdcclxuICAgIGlmICghdGhpcy5icm9hZGNhc3RTZXJ2aWNlU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZVN1YnNjcmlwdGlvbiA9IHRoaXMuYnJvYWRjYXN0U2VydmljZS5nZXRNZXNzYWdlKCkuc3Vic2NyaWJlKChtZXNzYWdlOiBCcm9hZGNhc3RNZXNzYWdlSW5mbykgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBTdXBwb3J0TWVzc2FnZXMuTE9HSU5fQ0hBTkdFRCkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubG9naW4obWVzc2FnZS5kYXRhLmVtYWlsLCBtZXNzYWdlLmRhdGEub2F1dGgsIG1lc3NhZ2UuZGF0YS5vYXV0aEFjY2Vzc1Rva2VuKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICAgIG5leHQ6IHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmNvdW50VW5yZWFkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0sIGVycm9yOiAoKSA9PiB7IGNvbnNvbGUuZXJyb3IoXCJBUlMgU3VwcG9ydCBub24gZGlzcG9uaWJpbGUuXCIpIH0gLy8gQXZvaWQgdW53YW50ZWQgZXJyb3JzIG9uIGNsaWVudCk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLkxPR09VVCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMubG9nZ2VkSW4oKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvZ291dCgpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jbGVhcigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pZCA9PT0gU3VwcG9ydE1lc3NhZ2VzLk5PVElGSUNBVElPTl9SRUFEKSB7XHJcbiAgICAgICAgICB0aGlzLmNvdW50VW5yZWFkTm90aWZpY2F0aW9ucygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXZlbHVhdGUgY3VycmVudCBzZXNzaW9uIHN0b3JhZ2UgaW4gY2FzZSBvZiBwYWdlIHJlZnJlc2ggKEY1KVxyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluKCkgJiYgdGhpcy5nZXRUb2tlbigpKSB7XHJcbiAgICAgIC8vIEF1dG8gbG9naW5cclxuICAgICAgdGhpcy5sb2dnZWRJbi5zZXQodHJ1ZSk7XHJcbiAgICAgIC8vIE5vdGlmeVxyXG4gICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoU3VwcG9ydE1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcbiAgICAgIC8vIFNldCBrZWVwIGFsaXZlXHJcbiAgICAgIHRoaXMuc2V0S2VlcEFsaXZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQga2VlcCBhbGl2ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0S2VlcEFsaXZlKCkge1xyXG4gICAgLy8gS2VlcCBhbGl2ZSBldmVyeSAxIG1pblxyXG4gICAgaWYgKHRoaXMua2VlcEFsaXZlID09PSAwKSB7XHJcbiAgICAgIHRoaXMua2VlcEFsaXZlID0gd2luZG93LnNldEludGVydmFsKFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMucGluZygpO1xyXG4gICAgICAgIH0sIDEwMDAgKiA2MCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZW1vdmUga2VlcCBhbGl2ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVtb3ZlS2VlcEFsaXZlKCkge1xyXG4gICAgaWYgKHRoaXMua2VlcEFsaXZlID4gMCkge1xyXG4gICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbCh0aGlzLmtlZXBBbGl2ZSk7XHJcbiAgICAgIHRoaXMua2VlcEFsaXZlID0gMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBQaW5nXHJcbiAqL1xyXG4gIHBpbmcoKSB7XHJcbiAgICB0aGlzLmh0dHBDbGllbnQuZ2V0PEFwaVJlc3VsdDxudW1iZXI+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvcGluZydcclxuICAgIClcclxuICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4ge3JldHVybiBFTVBUWX0pKVxyXG4gICAgLnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFNldCBKV1QgdG9rZW5cclxuICogQHBhcmFtIHZhbHVlIDogdGhlIGxvZ2luIHJlc3VsdFxyXG4gKi9cclxuICBwcml2YXRlIHNldFRva2VuKHZhbHVlOiBTdXBwb3J0TG9naW5SZXN1bHQpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ3N1cHBvcnRfand0JywgdmFsdWUudG9rZW4pO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnc3VwcG9ydF9qd3RfcmVmcmVzaCcsIHZhbHVlLnJlZnJlc2hUb2tlbiA/PyAnJyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0dXJuIGN1cnJlbnQgSldUIHRva2VuXHJcbiAgICogQHBhcmFtIHJlZnJlc2g6IHRydWUgdG8gZ2V0IHRoZSByZWZyZXNoIHRva2VuLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAqL1xyXG4gIGdldFRva2VuKHJlZnJlc2g6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XHJcbiAgICBsZXQgdG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKHJlZnJlc2ggPyAnc3VwcG9ydF9qd3RfcmVmcmVzaCcgOiAnc3VwcG9ydF9qd3QnKTtcclxuICAgIGlmICh0b2tlbiAmJiB0b2tlblswXSA9PT0gJ1wiJykge1xyXG4gICAgICByZXR1cm4gdG9rZW4uc3Vic3RyaW5nKDEsIHRva2VuLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRva2VuID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiogUGVyZm9ybSBsb2dpbiAgIFxyXG4qIEBwYXJhbSBlbWFpbDogdGhlIGd1ZXN0IGVtYWlsXHJcbiogQHBhcmFtIG9hdXRoOiB0aGUgb3B0aW9uYWwgb3BlbiBhdXRoZW50aWNhdGlvbiBzdXBwb3J0ZWRcclxuKiBAcGFyYW0gb2F1dGhBY2Nlc3NUb2tlbjogdGhlIG9wdGlvbmFsIG9hdXRoMiBhY2Nlc3MgdG9rZW5cclxuKiBAcmV0dXJuczogdGhlIGxvZ2luIHJlc3VsdFxyXG4qL1xyXG4gIGxvZ2luKGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkID0gbnVsbCxcclxuICAgIG9hdXRoQWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsKSB7XHJcbiAgICB0aGlzLmxvZ2dpbmdJbi5zZXQodHJ1ZSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PEFwaVJlc3VsdDxTdXBwb3J0TG9naW5SZXN1bHQ+PihcclxuICAgICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9sb2dpbicsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdXNlcjogb2F1dGggPiAwID8gbnVsbCA6IGVtYWlsLFxyXG4gICAgICAgICAgY2xpZW50SWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwic3VwcG9ydF9jbGllbnRfaWRcIiksXHJcbiAgICAgICAgICBPQVVUSDogb2F1dGhcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGhlYWRlcnM6XHJcbiAgICAgICAgICAgICFvYXV0aFxyXG4gICAgICAgICAgICAgID8gbmV3IEh0dHBIZWFkZXJzKClcclxuICAgICAgICAgICAgICA6IG5ldyBIdHRwSGVhZGVycygpXHJcbiAgICAgICAgICAgICAgICAuc2V0KFwiQXV0aG9yaXphdGlvblwiLCBvYXV0aEFjY2Vzc1Rva2VuKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIG1hcCgocjogQXBpUmVzdWx0PFN1cHBvcnRMb2dpblJlc3VsdD4pID0+IHtcclxuICAgICAgICAgIHRoaXMubG9nZ2luZ0luLnNldChmYWxzZSk7XHJcbiAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0VG9rZW4oci52YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvZ2luSW5mbyA9IHIudmFsdWUuY29udGV4dDtcclxuICAgICAgICAgICAgdGhpcy5sb2dnZWRJbi5zZXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIE5vdGlmeVxyXG4gICAgICAgICAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoU3VwcG9ydE1lc3NhZ2VzLkxPR0lOX0NPTVBMRVRFRCk7XHJcbiAgICAgICAgICAgIC8vIEtlZXAgYWxpdmVcclxuICAgICAgICAgICAgdGhpcy5zZXRLZWVwQWxpdmUoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybSBsb2dvdXRcclxuICAgKi9cclxuICBsb2dvdXQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50XHJcbiAgICAgIC5wb3N0PGFueT4odGhpcy5fc2VydmljZVVyaSArICcvbG9nb3V0Jywge30pLnBpcGUoXHJcbiAgICAgICAgZmluYWxpemUoKCkgPT4geyB0aGlzLnJlbW92ZUtlZXBBbGl2ZSgpIH0pLFxyXG4gICAgICAgIG1hcChyID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xlYXIoKTtcclxuICAgICAgICAgIHJldHVybiByO1xyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGNhdGNoRXJyb3IoKF9lKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyKCk7XHJcbiAgICAgICAgICByZXR1cm4gb2YoW10pO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBsb2dpbiByZWZyZXNoIHRpbWVyIGFuZCBsb2dpbnMgc3RhdGVcclxuICAgKi9cclxuICByZXNldCgpIHtcclxuICAgIC8vIENsZWFyIGxvZ2luIGluZm9cclxuICAgIHRoaXMuX2xvZ2luSW5mbyA9IG51bGw7XHJcbiAgICB0aGlzLmxvZ2dlZEluLnNldChmYWxzZSk7XHJcblxyXG4gICAgLy8gTm90aWZ5XHJcbiAgICB0aGlzLmJyb2FkY2FzdFNlcnZpY2Uuc2VuZE1lc3NhZ2UoU3VwcG9ydE1lc3NhZ2VzLkxPR09VVF9DT01QTEVURUQpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXIgbG9naW4gZGF0YVxyXG4gICAqL1xyXG4gIGNsZWFyKCkge1xyXG4gICAgLy8gUmVzZXQgbG9naW5cclxuICAgIHRoaXMucmVzZXQoKTtcclxuXHJcbiAgICAvLyBDbGVhciBsb2NhbCBzdG9yYWdlXHJcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzdXBwb3J0X2p3dCcpO1xyXG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgnc3VwcG9ydF9qd3RfcmVmcmVzaCcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIFBlcmZvcm0gdG9rZW4gcmVmcmVzaFxyXG4gKi9cclxuICByZWZyZXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PFN1cHBvcnRMb2dpblJlc3VsdD4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9yZWZyZXNoMi8/dG9rZW49JyArIHRoaXMuZ2V0VG9rZW4odHJ1ZSlcclxuICAgICkucGlwZShtYXAoKHI6IEFwaVJlc3VsdDxTdXBwb3J0TG9naW5SZXN1bHQ+KSA9PiB7XHJcbiAgICAgIC8vIFVwZGF0ZSB0b2tlblxyXG4gICAgICB0aGlzLnNldFRva2VuKHIudmFsdWUpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGUgdG8gc3VwcG9ydCBzZXJ2aWNlXHJcbiAgICovXHJcbiAgb3BlbigpIHtcclxuICAgIGxldCB1cmkgPSB0aGlzLnNlcnZpY2VVcmkgPz8gJyc7XHJcbiAgICBpZiAodXJpLmVuZHNXaXRoKCcvYXBpJykpXHJcbiAgICAgIHVyaSA9IHVyaS5zdWJzdHJpbmcoMCwgdXJpLmxlbmd0aCAtIDQpXHJcbiAgICB3aW5kb3cub3Blbih1cmkpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLy9cclxuICAvLyBOT1RJRklDQVRJT05TXHJcbiAgLy8vL1xyXG5cclxuICAvKipcclxuICAgKiBDb3VudCB1bnJlYWQgbm90aWZpY2F0aW9uc1xyXG4gICAqL1xyXG4gIGNvdW50VW5yZWFkTm90aWZpY2F0aW9ucygpIHtcclxuICAgIHRoaXMuaHR0cENsaWVudC5nZXQ8QXBpUmVzdWx0PG51bWJlcj4+KFxyXG4gICAgICB0aGlzLl9zZXJ2aWNlVXJpICsgJy9ub3RpZmljYXRpb25zL2NvdW50LXVucmVhZC8/cHJvZHVjdHM9JyArICh0aGlzLnByb2R1Y3RzID8/IDApICsgXCImbW9kdWxlcz1cIiArICh0aGlzLnByb2R1Y3RNb2R1bGVzID8/IDApXHJcbiAgICApLnN1YnNjcmliZSgocjogQXBpUmVzdWx0PG51bWJlcj4pID0+IHtcclxuICAgICAgaWYgKHIuc3VjY2Vzcykge1xyXG4gICAgICAgIHRoaXMudW5yZWFkTm90aWZpY2F0aW9ucy5zZXQoci52YWx1ZSA+IDAgPyByLnZhbHVlIDogbnVsbClcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBRdWVyeSBub3RpZmljYXRpb25zXHJcbiAgICogQHBhcmFtIHBhcmFtczogcXVlcnkgcGFyYW1ldGVyc1xyXG4gICAqL1xyXG4gIHF1ZXJ5Tm90aWZpY2F0aW9ucyhwYXJhbXM6IFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUGFyYW1zKSB7XHJcbiAgICBwYXJhbXMucHJvZHVjdHMgPSB0aGlzLnByb2R1Y3RzID8/IDA7XHJcbiAgICBwYXJhbXMucHJvZHVjdE1vZHVsZXMgPSB0aGlzLnByb2R1Y3RNb2R1bGVzID8/IDA7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PFN1cHBvcnROb3RpZmljYXRpb25zU2VhcmNoUmVzdWx0Pj4oXHJcbiAgICAgIHRoaXMuX3NlcnZpY2VVcmkgKyAnL25vdGlmaWNhdGlvbnMnLFxyXG4gICAgICBwYXJhbXNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZSBhIG5vdGlmaWNhdGlvblxyXG4gICAqIEBwYXJhbSBpZDogdGhlIG5vdGlmaWNhdGlvbiBpZFxyXG4gICAqL1xyXG4gIGdldE5vdGlmaWNhdGlvbihpZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldDxBcGlSZXN1bHQ8U3VwcG9ydE5vdGlmaWNhdGlvbkluZm8+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArXHJcbiAgICAgICcvbm90aWZpY2F0aW9ucy8nICtcclxuICAgICAgaWRcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNYXJrIGEgZ3JvdXAgb2Ygbm90aWZpY2F0aW9ucyBhcyByZWFkXHJcbiAgICogQHBhcmFtIGlkczogdGhlIGFycmF5IG9mIG5vdGlmaWNhdGlvbidzIGlkcyB0byBzZXQgYXMgcmVhZFxyXG4gICAqL1xyXG4gIG1hcmtOb3RpZmljYXRpb25zKHBhcmFtczogU3VwcG9ydE5vdGlmaWNhdGlvbnNNYXJrUGFyYW1zKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3Q8QXBpUmVzdWx0PGJvb2xlYW4+PihcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvbm90aWZpY2F0aW9ucy9tYXJrJyxcclxuICAgICAgcGFyYW1zXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAqIERvd25sb2FkIGEgbm90aWZpY2F0aW9uIGRvY3VtZW50XHJcbiAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIG5vdGlmaWNhdGlvbiBkb2N1bWVudCBpZFxyXG4gKi9cclxuICBkb3dsb2FkTm90aWZpY2F0aW9uRG9jdW1lbnQoZG9jdW1lbnRJZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChcclxuICAgICAgdGhpcy5fc2VydmljZVVyaSArICcvZG9jdW1lbnRzL2Rvd25sb2FkLycgKyBkb2N1bWVudElkLFxyXG4gICAgICB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH1cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==