@esfaenza/core 17.3.17 → 19.2.2

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 (112) hide show
  1. package/components/base/embedding.component.d.ts +1 -1
  2. package/fesm2022/esfaenza-core-components.mjs +123 -111
  3. package/fesm2022/esfaenza-core-components.mjs.map +1 -1
  4. package/fesm2022/esfaenza-core-directives.mjs +22 -22
  5. package/fesm2022/esfaenza-core-modules.mjs +16 -22
  6. package/fesm2022/esfaenza-core-modules.mjs.map +1 -1
  7. package/fesm2022/esfaenza-core-pipes.mjs +19 -19
  8. package/fesm2022/esfaenza-core-services.mjs +50 -44
  9. package/fesm2022/esfaenza-core-services.mjs.map +1 -1
  10. package/fesm2022/esfaenza-core.mjs +15 -39
  11. package/fesm2022/esfaenza-core.mjs.map +1 -1
  12. package/lib/core.module.d.ts +22 -23
  13. package/modules/classes/_shared.module.d.ts +3 -4
  14. package/modules/classes/t_c.module.d.ts +4 -5
  15. package/package.json +84 -104
  16. package/theme/initial.scss +16 -15
  17. package/esm2022/components/back-top/back-top.component.mjs +0 -43
  18. package/esm2022/components/base/base.component.mjs +0 -67
  19. package/esm2022/components/base/embedding.component.mjs +0 -64
  20. package/esm2022/components/base/reactive.component.mjs +0 -28
  21. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -80
  22. package/esm2022/components/components.module.mjs +0 -97
  23. package/esm2022/components/error/404/pagenotfound.component.mjs +0 -36
  24. package/esm2022/components/error/500/servererror.component.mjs +0 -47
  25. package/esm2022/components/error/Angular/angularerror.component.mjs +0 -62
  26. package/esm2022/components/es-image-cropper/es-image-cropper.component.mjs +0 -82
  27. package/esm2022/components/es-modal/es-modal-head/es-modal-head.component.mjs +0 -22
  28. package/esm2022/components/es-modal/es-modal.component.mjs +0 -40
  29. package/esm2022/components/esfaenza-core-components.mjs +0 -5
  30. package/esm2022/components/external-page/external_pages.component.mjs +0 -48
  31. package/esm2022/components/jace-login/jace-login.component.mjs +0 -31
  32. package/esm2022/components/jace-resource/jace-resource.component.mjs +0 -68
  33. package/esm2022/components/labeled-span/labeled-span.component.mjs +0 -25
  34. package/esm2022/components/navbar/navbar.component.loc.mjs +0 -41
  35. package/esm2022/components/navbar/navbar.component.mjs +0 -223
  36. package/esm2022/components/page/pages.component.mjs +0 -60
  37. package/esm2022/components/public-api.mjs +0 -22
  38. package/esm2022/components/redirecter/redirecter.component.mjs +0 -65
  39. package/esm2022/components/sidebar/sidebar.component.loc.mjs +0 -39
  40. package/esm2022/components/sidebar/sidebar.component.mjs +0 -286
  41. package/esm2022/components/user_infos/user_infos.component.loc.mjs +0 -43
  42. package/esm2022/components/user_infos/user_infos.component.mjs +0 -148
  43. package/esm2022/directives/componentHost/componentHost.directive.mjs +0 -29
  44. package/esm2022/directives/directives.module.mjs +0 -21
  45. package/esm2022/directives/draggable/draggable.directive.mjs +0 -49
  46. package/esm2022/directives/es-modal/es-modal.directive.mjs +0 -79
  47. package/esm2022/directives/es-routerLink/es-routerLink.directive.mjs +0 -55
  48. package/esm2022/directives/esfaenza-core-directives.mjs +0 -5
  49. package/esm2022/directives/public-api.mjs +0 -8
  50. package/esm2022/directives/slim-scroll/slim-scroll.directive.mjs +0 -41
  51. package/esm2022/directives/widget/widget.directive.mjs +0 -37
  52. package/esm2022/domain/esfaenza-core-domain.mjs +0 -5
  53. package/esm2022/domain/models/core/ApplicationJob.mjs +0 -3
  54. package/esm2022/domain/models/core/ApplicationMenu.mjs +0 -26
  55. package/esm2022/domain/models/core/ApplicationRoutes.mjs +0 -3
  56. package/esm2022/domain/models/core/EnvOptions.mjs +0 -13
  57. package/esm2022/domain/models/core/GenericItem.mjs +0 -12
  58. package/esm2022/domain/models/core/KeyValue.mjs +0 -15
  59. package/esm2022/domain/models/global_search/SaerchResultContainer.mjs +0 -6
  60. package/esm2022/domain/models/global_search/SearchResult.mjs +0 -8
  61. package/esm2022/domain/models/jace/AccountScope.mjs +0 -8
  62. package/esm2022/domain/models/jace/ActiveModuleView.mjs +0 -6
  63. package/esm2022/domain/models/jace/CategoriesWithModules.mjs +0 -7
  64. package/esm2022/domain/models/jace/JaceAccount.mjs +0 -3
  65. package/esm2022/domain/models/jace/JaceIdentity.mjs +0 -15
  66. package/esm2022/domain/models/jace/JaceModule.mjs +0 -10
  67. package/esm2022/domain/models/jace/JacePermission.mjs +0 -3
  68. package/esm2022/domain/models/jace/JaceRole.mjs +0 -9
  69. package/esm2022/domain/models/jace/JaceUser.mjs +0 -3
  70. package/esm2022/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +0 -7
  71. package/esm2022/domain/models/user/UpdatePasswordDto.mjs +0 -11
  72. package/esm2022/domain/models/user/UpdateProfilePictureDto.mjs +0 -6
  73. package/esm2022/domain/models/user/UserAccount.mjs +0 -3
  74. package/esm2022/domain/public-api.mjs +0 -23
  75. package/esm2022/domain/tokens.mjs +0 -17
  76. package/esm2022/esfaenza-core.mjs +0 -5
  77. package/esm2022/helpers/classes/ResizeListener.mjs +0 -38
  78. package/esm2022/helpers/esfaenza-core-helpers.mjs +0 -5
  79. package/esm2022/helpers/public-api.mjs +0 -2
  80. package/esm2022/lib/app.component.mjs +0 -34
  81. package/esm2022/lib/core.module.mjs +0 -258
  82. package/esm2022/modules/classes/_base.module.mjs +0 -32
  83. package/esm2022/modules/classes/_embedding.module.mjs +0 -27
  84. package/esm2022/modules/classes/_shared.module.mjs +0 -47
  85. package/esm2022/modules/classes/t_c.module.mjs +0 -85
  86. package/esm2022/modules/esfaenza-core-modules.mjs +0 -5
  87. package/esm2022/modules/public-api.mjs +0 -5
  88. package/esm2022/pipes/classes/included_in.pipe.mjs +0 -20
  89. package/esm2022/pipes/classes/safe_html.pipe.mjs +0 -21
  90. package/esm2022/pipes/classes/safe_script.pipe.mjs +0 -21
  91. package/esm2022/pipes/classes/safe_style.pipe.mjs +0 -21
  92. package/esm2022/pipes/classes/safe_url.pipe.mjs +0 -21
  93. package/esm2022/pipes/esfaenza-core-pipes.mjs +0 -5
  94. package/esm2022/pipes/pipes.module.mjs +0 -20
  95. package/esm2022/pipes/public-api.mjs +0 -7
  96. package/esm2022/public-api.mjs +0 -3
  97. package/esm2022/services/classes/app.accesstoken.mjs +0 -1042
  98. package/esm2022/services/classes/app.completedjobredirection.mjs +0 -18
  99. package/esm2022/services/classes/app.errorhandler.mjs +0 -41
  100. package/esm2022/services/classes/app.event.mjs +0 -27
  101. package/esm2022/services/classes/app.globalsearch.mjs +0 -34
  102. package/esm2022/services/classes/app.httpextensions.loc.mjs +0 -15
  103. package/esm2022/services/classes/app.httpextensions.mjs +0 -90
  104. package/esm2022/services/classes/app.menufilter.mjs +0 -21
  105. package/esm2022/services/classes/app.routeguard.mjs +0 -23
  106. package/esm2022/services/classes/app.session.mjs +0 -40
  107. package/esm2022/services/classes/app.state.mjs +0 -229
  108. package/esm2022/services/classes/preferences/app.cache.persistor.mjs +0 -94
  109. package/esm2022/services/classes/preferences/app.preference.persistor.mjs +0 -94
  110. package/esm2022/services/classes/preferences/user/app.userpreferences.base.mjs +0 -101
  111. package/esm2022/services/esfaenza-core-services.mjs +0 -5
  112. package/esm2022/services/public-api.mjs +0 -14
@@ -1,39 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { LocalizationService } from "@esfaenza/localizations";
3
- import * as i0 from "@angular/core";
4
- export class SideBarLoc extends LocalizationService {
5
- constructor(injector) {
6
- super(injector);
7
- super.set("it->en", "Sessione Scaduta", ["Expired session"]);
8
- super.set("it->en", "Backend Offline", ["Backend Offline"]);
9
- super.set("it->en", "Sembra che il Backend sia momentaneamente offline. Questa pagina si aggiornera' automaticamente non appena la situazione tornera' alla normalita'. Ci scusiamo per il disagio", ["Backend seems to be currently offline. This page will reset itself when the situation goes back to normal. Sorry for the inconvenience"]);
10
- super.set("it->en", "Ripulisci la Cache", ["Clear Caches"]);
11
- super.set("it->en", "Cache Ripulita", ["Cache Cleared"]);
12
- super.set("it->en", "Ambiente di Produzione", ["Production Environment"]);
13
- super.set("it->en", "È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["A new version is available for this application. It is suggested to reload this page (CTRL + F5)"]);
14
- super.set("it->en", "Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)", ["Session informations (Tenant/Account) has changed after a login to a different module with the same Tenant/Username using the same browser. It is suggested to reload this page (CTRL + F5)"]);
15
- super.set("it->en", "Cambia Modulo", ["Change module"]);
16
- super.set("it->en", "Cambia Tenant", ["Change tenant"]);
17
- super.set("it->en", "Usa notifiche semplici", ["Use simple alerts"]);
18
- super.set("it->en", "Consenti notifiche eleganti", ["Allow fancy alerts"]);
19
- super.set("it->en", "Ambiente di Sviluppo", ["Development Environment"]);
20
- super.set("it->en", "Ambiente di Sviluppo A", ["Development Environment A"]);
21
- super.set("it->en", "Ambiente di Sviluppo B", ["Development Environment B"]);
22
- super.set("it->en", "Ripulisci le Preferenze Utente", ["Clear User Preferences"]);
23
- super.set("it->en", "Preferenze utente ripulite", ["User preferences has been cleared"]);
24
- super.set("it->en", "Ambiente di Staging", ["Staging Environment"]);
25
- super.set("it->en", "Ambiente di Staging A", ["Staging A Environment"]);
26
- super.set("it->en", "L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.", ["Current session has expired.<br>Please login back into the application."]);
27
- super.set("it->en", "Notifiche", ["Notifications"]);
28
- super.set("it->en", "Job Applicativi", ["Application Jobs"]);
29
- super.set("it->en", "Al momento non c'è nulla in esecuzione", ["Nothing being executed at the moment"]);
30
- super.set("it->en", "Job Completato", ["Job Completed"]);
31
- super.set("it->en", "Scrivere almeno 3 caratteri per utilizzare la ricerca globale", ["You must write at least 3 characters in order to use the Global Research"]);
32
- }
33
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SideBarLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SideBarLoc }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SideBarLoc, decorators: [{
37
- type: Injectable
38
- }], ctorParameters: () => [{ type: i0.Injector }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQubG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy9zaWRlYmFyL3NpZGViYXIuY29tcG9uZW50LmxvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sVUFBVyxTQUFRLG1CQUFtQjtJQUMvQyxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUM1RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSwrS0FBK0ssRUFBRSxDQUFDLHdJQUF3SSxDQUFDLENBQUMsQ0FBQztRQUNqVixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdCQUF3QixFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1FBQzFFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlIQUFpSCxFQUFFLENBQUMsa0dBQWtHLENBQUMsQ0FBQyxDQUFBO1FBQzVPLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhNQUE4TSxFQUFFLENBQUMsNkxBQTZMLENBQUMsQ0FBQyxDQUFDO1FBQ3JhLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDeEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN4RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2QkFBNkIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQztRQUMzRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztRQUM3RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0MsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUNsRixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw0QkFBNEIsRUFBRSxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQztRQUN6RixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUNwRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztRQUN4RSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSw2RkFBNkYsRUFBRSxDQUFDLHlFQUF5RSxDQUFDLENBQUMsQ0FBQztRQUNoTSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHdDQUF3QyxFQUFFLENBQUMsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO1FBQ3hHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN6RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSwrREFBK0QsRUFBRSxDQUFDLDBFQUEwRSxDQUFDLENBQUMsQ0FBQztJQUN2SyxDQUFDOytHQTVCUSxVQUFVO21IQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNpZGVCYXJMb2MgZXh0ZW5kcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJTZXNzaW9uZSBTY2FkdXRhXCIsIFtcIkV4cGlyZWQgc2Vzc2lvblwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQmFja2VuZCBPZmZsaW5lXCIsIFtcIkJhY2tlbmQgT2ZmbGluZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiU2VtYnJhIGNoZSBpbCBCYWNrZW5kIHNpYSBtb21lbnRhbmVhbWVudGUgb2ZmbGluZS4gUXVlc3RhIHBhZ2luYSBzaSBhZ2dpb3JuZXJhJyBhdXRvbWF0aWNhbWVudGUgbm9uIGFwcGVuYSBsYSBzaXR1YXppb25lIHRvcm5lcmEnIGFsbGEgbm9ybWFsaXRhJy4gQ2kgc2N1c2lhbW8gcGVyIGlsIGRpc2FnaW9cIiwgW1wiQmFja2VuZCBzZWVtcyB0byBiZSBjdXJyZW50bHkgb2ZmbGluZS4gVGhpcyBwYWdlIHdpbGwgcmVzZXQgaXRzZWxmIHdoZW4gdGhlIHNpdHVhdGlvbiBnb2VzIGJhY2sgdG8gbm9ybWFsLiBTb3JyeSBmb3IgdGhlIGluY29udmVuaWVuY2VcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlJpcHVsaXNjaSBsYSBDYWNoZVwiLCBbXCJDbGVhciBDYWNoZXNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkNhY2hlIFJpcHVsaXRhXCIsIFtcIkNhY2hlIENsZWFyZWRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFByb2R1emlvbmVcIiwgW1wiUHJvZHVjdGlvbiBFbnZpcm9ubWVudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiw4ggZGlzcG9uaWJpbGUgdW5hIG51b3ZhIHZlcnNpb25lIHBlciBsJ2FwcGxpY2F6aW9uZSBjb3JyZW50ZS4gU2kgc3VnZ2VyaXNjZSBkaSByaWNhcmljYXJlIGxhIHBhZ2luYSAoQ1RSTCArIEY1KVwiLCBbXCJBIG5ldyB2ZXJzaW9uIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyBhcHBsaWNhdGlvbi4gSXQgaXMgc3VnZ2VzdGVkIHRvIHJlbG9hZCB0aGlzIHBhZ2UgKENUUkwgKyBGNSlcIl0pXHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiTGUgaW5mb3JtYXppb25pIGRpIFNlc3Npb25lIChUZW5hbnQvQWNjb3VudCkgc29ubyBjYW1iaWF0ZSBhIHNlZ3VpdG8gZGkgdW4gbG9naW4gc3UgbW9kdWxvIGRpdmVyc28gdXRpbGl6emFuZG8gZGl2ZXJzbyBUZW5hbnQvVXRlbnRlIHN1bGxvIHN0ZXNzbyBicm93c2VyLiBTaSBzdWdnZXJpc2NlIGRpIHJpY2FyaWNhcmUgbGEgcGFnaW5hIChDVFJMICsgRjUpXCIsIFtcIlNlc3Npb24gaW5mb3JtYXRpb25zIChUZW5hbnQvQWNjb3VudCkgaGFzIGNoYW5nZWQgYWZ0ZXIgYSBsb2dpbiB0byBhIGRpZmZlcmVudCBtb2R1bGUgd2l0aCB0aGUgc2FtZSBUZW5hbnQvVXNlcm5hbWUgdXNpbmcgdGhlIHNhbWUgYnJvd3Nlci4gSXQgaXMgc3VnZ2VzdGVkIHRvIHJlbG9hZCB0aGlzIHBhZ2UgKENUUkwgKyBGNSlcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkNhbWJpYSBNb2R1bG9cIiwgW1wiQ2hhbmdlIG1vZHVsZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQ2FtYmlhIFRlbmFudFwiLCBbXCJDaGFuZ2UgdGVuYW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJVc2Egbm90aWZpY2hlIHNlbXBsaWNpXCIsIFtcIlVzZSBzaW1wbGUgYWxlcnRzXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJDb25zZW50aSBub3RpZmljaGUgZWxlZ2FudGlcIiwgW1wiQWxsb3cgZmFuY3kgYWxlcnRzXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbWJpZW50ZSBkaSBTdmlsdXBwb1wiLCBbXCJEZXZlbG9wbWVudCBFbnZpcm9ubWVudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQW1iaWVudGUgZGkgU3ZpbHVwcG8gQVwiLCBbXCJEZXZlbG9wbWVudCBFbnZpcm9ubWVudCBBXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJBbWJpZW50ZSBkaSBTdmlsdXBwbyBCXCIsIFtcIkRldmVsb3BtZW50IEVudmlyb25tZW50IEJcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlJpcHVsaXNjaSBsZSBQcmVmZXJlbnplIFV0ZW50ZVwiLCBbXCJDbGVhciBVc2VyIFByZWZlcmVuY2VzXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJQcmVmZXJlbnplIHV0ZW50ZSByaXB1bGl0ZVwiLCBbXCJVc2VyIHByZWZlcmVuY2VzIGhhcyBiZWVuIGNsZWFyZWRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFtYmllbnRlIGRpIFN0YWdpbmdcIiwgW1wiU3RhZ2luZyBFbnZpcm9ubWVudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiQW1iaWVudGUgZGkgU3RhZ2luZyBBXCIsIFtcIlN0YWdpbmcgQSBFbnZpcm9ubWVudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiTCdhdHR1YWxlIHNlc3Npb25lIGRpIGxhdm9ybyBub24gw6ggcGnDuSB2YWxpZGEuPGJyPlNpIHByZWdhIGRpIGVzZWd1aXJlIG51b3ZhbWVudGUgaWwgbG9naW4uXCIsIFtcIkN1cnJlbnQgc2Vzc2lvbiBoYXMgZXhwaXJlZC48YnI+UGxlYXNlIGxvZ2luIGJhY2sgaW50byB0aGUgYXBwbGljYXRpb24uXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJpdC0+ZW5cIiwgXCJOb3RpZmljaGVcIiwgW1wiTm90aWZpY2F0aW9uc1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiaXQtPmVuXCIsIFwiSm9iIEFwcGxpY2F0aXZpXCIsIFtcIkFwcGxpY2F0aW9uIEpvYnNcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkFsIG1vbWVudG8gbm9uIGMnw6ggbnVsbGEgaW4gZXNlY3V6aW9uZVwiLCBbXCJOb3RoaW5nIGJlaW5nIGV4ZWN1dGVkIGF0IHRoZSBtb21lbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIkpvYiBDb21wbGV0YXRvXCIsIFtcIkpvYiBDb21wbGV0ZWRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcIml0LT5lblwiLCBcIlNjcml2ZXJlIGFsbWVubyAzIGNhcmF0dGVyaSBwZXIgdXRpbGl6emFyZSBsYSByaWNlcmNhIGdsb2JhbGVcIiwgW1wiWW91IG11c3Qgd3JpdGUgYXQgbGVhc3QgMyBjaGFyYWN0ZXJzIGluIG9yZGVyIHRvIHVzZSB0aGUgR2xvYmFsIFJlc2VhcmNoXCJdKTtcclxuICAgIH1cclxufSJdfQ==
@@ -1,286 +0,0 @@
1
- // Angular
2
- import { ChangeDetectionStrategy, Component, HostListener, Inject, Optional, ViewChild, ViewEncapsulation } from "@angular/core";
3
- import { NavigationEnd, RouterLinkActive, RouterLink } from "@angular/router";
4
- import { NgClass, NgFor, NgTemplateOutlet, NgIf } from "@angular/common";
5
- // Configurazioni
6
- import { LocalizationService, LocalizationModule } from "@esfaenza/localizations";
7
- // EsFaenza
8
- import { MENU, MENU_LOCALIZATION } from "@esfaenza/core/domain";
9
- import { SlimScroll } from "@esfaenza/core/directives";
10
- // Librerie
11
- import { firstValueFrom } from "rxjs";
12
- import { EsTableColumnsDefinition, EsTableModule } from "@esfaenza/es-table";
13
- import { FormsModule } from "@angular/forms";
14
- import { SideBarLoc } from "./sidebar.component.loc";
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "@esfaenza/localizations";
17
- import * as i2 from "@angular/router";
18
- import * as i3 from "@esfaenza/core/services";
19
- import * as i4 from "@esfaenza/extensions";
20
- import * as i5 from "@esfaenza/access-control";
21
- import * as i6 from "@angular/forms";
22
- import * as i7 from "@esfaenza/es-table";
23
- export class Sidebar {
24
- constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService, sr, globalSearchService, profile, msgExts) {
25
- this.lc = lc;
26
- this.cdr = cdr;
27
- this._elementRef = _elementRef;
28
- this._router = _router;
29
- this._state = _state;
30
- this.zone = zone;
31
- this.utiExts = utiExts;
32
- this.aac = aac;
33
- this.menuItemsRaw = menuItemsRaw;
34
- this.menuFilteringService = menuFilteringService;
35
- this.sr = sr;
36
- this.globalSearchService = globalSearchService;
37
- this.profile = profile;
38
- this.msgExts = msgExts;
39
- this.isMenuCollapsed = false;
40
- this.isMenuShouldCollapsed = false;
41
- this.applicationVersion = myconfig.AppData.ComponentVersion;
42
- this.applicationName = myconfig.AppData.ModuleDescription;
43
- this.user = "";
44
- this.tenant = "";
45
- //#endregion
46
- //#region Gestione Ricerca Globale
47
- this.SelectedResult = null;
48
- this.ShowSingleTable = false;
49
- this.searchingTerm = false;
50
- this.lc = this.lc.generateFromType(lcMenu);
51
- this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
52
- this.isMenuCollapsed = isCollapsed;
53
- this.cdr.markForCheck();
54
- });
55
- this._state.subscribe("application.DeployAvailable", (available) => {
56
- if (available)
57
- this.ngOnInit();
58
- });
59
- this._router.events.subscribe(event => {
60
- if (event instanceof NavigationEnd) {
61
- let width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
62
- if (width <= 768)
63
- this._state.notifyDataChanged("menu.isCollapsed", true);
64
- window.scrollTo(0, 0);
65
- }
66
- });
67
- this.getUserProfileData();
68
- }
69
- async ngOnInit() {
70
- let tmpMenuItems = this.getMenuItems();
71
- this.menuItems = await firstValueFrom(this.menuFilteringService.filter(tmpMenuItems));
72
- if (this._shouldMenuCollapse())
73
- this.menuCollapse();
74
- this.updateSidebarHeight();
75
- this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
76
- this.cdr.markForCheck();
77
- }
78
- getMenuItems() {
79
- let menus = this.utiExts.deepClone(this.menuItemsRaw);
80
- // Giro 1 assegno il livello ai root
81
- for (let i = 0; i < menus.length; i++) {
82
- let t = menus[i];
83
- t.level = 1;
84
- t.padding_left = 18;
85
- t.visible = !t.ac || this.aac.has(t.ac);
86
- // Giro ricorsivo
87
- if (t.subMenu && t.subMenu.length > 0)
88
- this.checkSubMenuOverClaims(t, 1);
89
- }
90
- return menus;
91
- }
92
- checkSubMenuOverClaims(menuItem, level) {
93
- for (let i = 0; i < menuItem.subMenu.length; i++) {
94
- let t = menuItem.subMenu[i];
95
- t.level = level + 1;
96
- t.visible = !t.ac || this.aac.has(t.ac);
97
- t.padding_left = t.level * 18;
98
- if (t.subMenu && t.subMenu.length > 0)
99
- this.checkSubMenuOverClaims(t, level + 1);
100
- }
101
- }
102
- //#region JQuery
103
- onWindowResize() {
104
- var isMenuShouldCollapsed = this._shouldMenuCollapse();
105
- if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {
106
- this.menuCollapseStateChange(isMenuShouldCollapsed);
107
- }
108
- this.isMenuShouldCollapsed = isMenuShouldCollapsed;
109
- this.updateSidebarHeight();
110
- }
111
- _shouldMenuCollapse() {
112
- return window.innerWidth <= 768;
113
- }
114
- menuCollapse() {
115
- this.menuCollapseStateChange(true);
116
- this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
117
- }
118
- menuCollapseStateChange(isCollapsed) {
119
- this.isMenuCollapsed = isCollapsed;
120
- this._state.notifyDataChanged("menu.isCollapsed", this.isMenuCollapsed);
121
- }
122
- menuExpand() {
123
- this.menuCollapseStateChange(false);
124
- this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
125
- }
126
- hoverItem(jQueryevent) {
127
- if (!this.isMenuCollapsed) {
128
- this.showHoverElem = true;
129
- this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;
130
- this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;
131
- jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
132
- jQuery(".sidebar-hover-elem").css("height", this.hoverElemHeight + "px");
133
- jQuery(".sidebar-hover-elem").addClass("show-hover-elem");
134
- }
135
- }
136
- sendAwayHoverElement() {
137
- this.hoverElemTop = -200;
138
- jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
139
- }
140
- updateSidebarHeight() {
141
- let marginTop = 60 + 40;
142
- let footerHeight = 150;
143
- this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;
144
- }
145
- //Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone
146
- //generando un po' di irresponsività iniziale... succede solo col click... boh
147
- collapseMenu(jQueryevent, item) {
148
- if (this.isMenuCollapsed)
149
- this.menuExpand();
150
- if (!item.level)
151
- console.warn("Livello non presente in un oggetto del menu!");
152
- //N.B: Tutte le funzioni di JQuery le esguo fuori da Angular dato che c'� una buona probabilit� che siano eventi asincroni
153
- this.zone.runOutsideAngular(() => { this.outsideAngularClickHandler(jQueryevent, item); });
154
- return false;
155
- }
156
- outsideAngularClickHandler(jQueryevent, item) {
157
- let levelClass = item.level ? "level-" + (item.level) : "";
158
- let levelClassPlusOne = item.level ? "level-" + (item.level + 1) : "";
159
- let slidePeriod = 400;
160
- var link = jQuery(jQueryevent.currentTarget);
161
- //Se l'elemento non è espanso
162
- if (!link.closest(".sidebar-item-expanded" + "_" + levelClass).length) {
163
- //Tiro su tutti gli elementi dello stesso livello espansi e li chiudo
164
- //Se ho compresso un menu vado a vedere se c'è anche un altro menu di livello pi� basso da richiudere
165
- jQuery("ul.nav-sidebar li" + "." + (levelClassPlusOne)).each(function () {
166
- let closestLi = jQuery(this).closest("li");
167
- if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
168
- closestLi.children("ul").slideUp(slidePeriod);
169
- //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
170
- closestLi.removeClass("sidebar-item-expanded" + "_" + (levelClassPlusOne));
171
- closestLi.removeClass("sidebar-item-expanded");
172
- }
173
- });
174
- //Dopodich� richiudo tutti quelli del mio livello attuale
175
- jQuery("ul.nav-sidebar li" + "." + levelClass).each(function () {
176
- let closestLi = jQuery(this).closest("li");
177
- if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
178
- closestLi.children("ul").slideUp(slidePeriod);
179
- //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
180
- closestLi.removeClass("sidebar-item-expanded" + "_" + levelClass);
181
- closestLi.removeClass("sidebar-item-expanded");
182
- }
183
- });
184
- //Dopodich� espando quello attuale
185
- link.next().slideDown(slidePeriod);
186
- if (item.subMenu) {
187
- //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
188
- link.closest("li").addClass("sidebar-item-expanded" + "_" + levelClass);
189
- link.closest("li").addClass("sidebar-item-expanded");
190
- }
191
- }
192
- else {
193
- //Altrimenti, se l'elemento è già espanso lo chiudo
194
- if (item.subMenu) {
195
- //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
196
- link.closest("li").removeClass("sidebar-item-expanded" + "_" + levelClass);
197
- link.closest("li").removeClass("sidebar-item-expanded");
198
- }
199
- link.next().slideUp(slidePeriod);
200
- }
201
- }
202
- //#endregion
203
- //#region Footer
204
- onChangeTenant() {
205
- window.location.href = `${myconfig.AuthUrl}/#/login;client=${myconfig.Client}`;
206
- }
207
- onLogout() {
208
- window.location.href = `${myconfig.AuthUrl}/#/logout;client=${myconfig.Client}`;
209
- }
210
- async getUserProfileData() {
211
- var identity = this.sr.getJaceIdentity();
212
- if (identity) {
213
- this.user = identity.FullName;
214
- this.tenant = identity.TenantName;
215
- await this.profile.doReloadProfilePicture();
216
- this.cdr.markForCheck();
217
- }
218
- }
219
- onSearchRequest() {
220
- this.searchingTerm = true;
221
- this.searchResult = null;
222
- if (!this.globalSearchService.Enabled)
223
- return;
224
- if (this.searchTerm.trim().length < 3) {
225
- this.msgExts.simpleWarning(this.lc.loc("Scrivere almeno 3 caratteri per utilizzare la ricerca globale"));
226
- return;
227
- }
228
- this.globalSearchService.search(this.searchTerm).subscribe(t => {
229
- this.searchingTerm = false;
230
- this.searchResult = t;
231
- // Short-circuit in assenza di risultati
232
- if ((this.searchResult.results.length || 0) === 0) {
233
- this.cdr.markForCheck();
234
- return;
235
- }
236
- this.searchResult.results.forEach(t => {
237
- t.est_cols = t.columns.map(c => {
238
- let colLink = this.globalSearchService.generateColumnLink(c);
239
- return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);
240
- });
241
- this.cdr.markForCheck();
242
- });
243
- });
244
- }
245
- onSearchModelChanged() {
246
- if (!this.searchingTerm)
247
- this.closeSearch();
248
- }
249
- closeSearch() {
250
- this.searchingTerm = false;
251
- this.searchResult = null;
252
- this.cdr.markForCheck();
253
- }
254
- FilterSearchResults(item = null) {
255
- this.SelectedResult = null;
256
- this.ShowSingleTable = true;
257
- requestAnimationFrame(() => {
258
- if (item)
259
- this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);
260
- else
261
- this.ShowSingleTable = false;
262
- this.cdr.markForCheck();
263
- });
264
- }
265
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Sidebar, deps: [{ token: i1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.Router }, { token: i3.AppState }, { token: i0.NgZone }, { token: i4.UtilityService }, { token: i5.AccessControlService }, { token: MENU }, { token: i3.MenuFilteringService }, { token: i3.TokenService }, { token: i3.GlobalSearchService }, { token: i3.UserPreferencesService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component }); }
266
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\"\r\n [class.has-sub-menu]=\"item.subMenu\" \r\n [class.sidebar-item-expanded]=\"item.expanded\"\r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div [style.padding.px]=\"isMenuCollapsed ? 5 : 15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!profile.ProfilePicture\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"profile.ProfilePicture\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist .level-1{background-color:#364357}.sidebar-sublist .level-2{background-color:#2e3a4b}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:\"Font Awesome 6 Pro\";content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#024a88;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#677ea1!important}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff;padding:10px 0 0 15px}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-font{color:#fffac2;font-family:Work Sans;font-size:15px;line-height:1;text-transform:uppercase;font-weight:700;padding-left:5px;padding-bottom:2px;overflow:hidden}.app-logo-font-container{display:inline-block;vertical-align:bottom;width:calc(var(--sidebar-width) - 70px);margin:0;height:auto;overflow:hidden}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,#34415400);height:42px;width:230px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fff;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}.app-sidebar.menu-collapsed .app-sidebar-footer-op{display:block;padding-left:12px;padding-top:5px;margin:0;width:16px}\n"], dependencies: [{ kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i6.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["EsThTdProvider", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
267
- }
268
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Sidebar, decorators: [{
269
- type: Component,
270
- args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }], standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, FormsModule, EsTableModule, LocalizationModule], template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\"\r\n [class.has-sub-menu]=\"item.subMenu\" \r\n [class.sidebar-item-expanded]=\"item.expanded\"\r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div [style.padding.px]=\"isMenuCollapsed ? 5 : 15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!profile.ProfilePicture\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"profile.ProfilePicture\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link || '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: [".app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist .level-1{background-color:#364357}.sidebar-sublist .level-2{background-color:#2e3a4b}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:\"Font Awesome 6 Pro\";content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#024a88;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#677ea1!important}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff;padding:10px 0 0 15px}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-font{color:#fffac2;font-family:Work Sans;font-size:15px;line-height:1;text-transform:uppercase;font-weight:700;padding-left:5px;padding-bottom:2px;overflow:hidden}.app-logo-font-container{display:inline-block;vertical-align:bottom;width:calc(var(--sidebar-width) - 70px);margin:0;height:auto;overflow:hidden}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,#34415400);height:42px;width:230px;z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fff;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}.app-sidebar.menu-collapsed .app-sidebar-footer-op{display:block;padding-left:12px;padding-top:5px;margin:0;width:16px}\n"] }]
271
- }], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.Type, decorators: [{
272
- type: Optional
273
- }, {
274
- type: Inject,
275
- args: [MENU_LOCALIZATION]
276
- }] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.Router }, { type: i3.AppState }, { type: i0.NgZone }, { type: i4.UtilityService }, { type: i5.AccessControlService }, { type: undefined, decorators: [{
277
- type: Inject,
278
- args: [MENU]
279
- }] }, { type: i3.MenuFilteringService }, { type: i3.TokenService }, { type: i3.GlobalSearchService }, { type: i3.UserPreferencesService }, { type: i4.MessageService }], propDecorators: { sidebar: [{
280
- type: ViewChild,
281
- args: ["sidebar", { static: true }]
282
- }], onWindowResize: [{
283
- type: HostListener,
284
- args: ["window:resize"]
285
- }] } });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWxGLFdBQVc7QUFDWCxPQUFPLEVBQStCLElBQUksRUFBRSxpQkFBaUIsRUFBdUMsTUFBTSx1QkFBdUIsQ0FBQztBQUlsSSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsV0FBVztBQUNYLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7OztBQWVyRCxNQUFNLE9BQU8sT0FB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QkFBa0IsQ0FBQzs7MEJBb0J0RyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlCQUFpQjs7MEJBQ3dFLE1BQU07MkJBQUMsSUFBSTsyTUFKcEgsT0FBTztzQkFBOUMsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQTBFL0IsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE5nWm9uZSwgT3B0aW9uYWwsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmsgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBFc0ZhZW56YVxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1lbnUsIEVudk9wdGlvbnMsIE1FTlUsIE1FTlVfTE9DQUxJWkFUSU9OLCBTZWFyY2hSZXN1bHQsIFNlYXJjaFJlc3VsdENvbnRhaW5lciB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIEdsb2JhbFNlYXJjaFNlcnZpY2UsIE1lbnVGaWx0ZXJpbmdTZXJ2aWNlLCBUb2tlblNlcnZpY2UsIFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBTbGltU2Nyb2xsIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RpcmVjdGl2ZXNcIjtcclxuXHJcbi8vIExpYnJlcmllXHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uLCBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBTaWRlQmFyTG9jIH0gZnJvbSBcIi4vc2lkZWJhci5jb21wb25lbnQubG9jXCI7XHJcblxyXG5kZWNsYXJlIHZhciBteWNvbmZpZzogRW52T3B0aW9ucztcclxuZGVjbGFyZSB2YXIgalF1ZXJ5O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogXCJzaWRlYmFyXCIsXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdHlsZVVybHM6IFtcIi4vc2lkZWJhci5jb21wb25lbnQuc2Nzc1wiXSxcclxuICAgIHRlbXBsYXRlVXJsOiBcIi4vc2lkZWJhci5jb21wb25lbnQuaHRtbFwiLFxyXG4gICAgdmlld1Byb3ZpZGVyczogW3sgcHJvdmlkZTogTG9jYWxpemF0aW9uU2VydmljZSwgdXNlQ2xhc3M6IFNpZGVCYXJMb2MgfV0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgaW1wb3J0czogW05nQ2xhc3MsIFNsaW1TY3JvbGwsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBSb3V0ZXJMaW5rQWN0aXZlLCBSb3V0ZXJMaW5rLCBGb3Jtc01vZHVsZSwgRXNUYWJsZU1vZHVsZSwgTG9jYWxpemF0aW9uTW9kdWxlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2lkZWJhciB7XHJcbiAgICBwdWJsaWMgbWVudUl0ZW1zOiBBcnJheTxhbnk+O1xyXG4gICAgcHVibGljIG1lbnVIZWlnaHQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyBpc01lbnVDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHB1YmxpYyBpc01lbnVTaG91bGRDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBwdWJsaWMgc2hvd0hvdmVyRWxlbTogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBob3ZlckVsZW1IZWlnaHQ6IG51bWJlcjtcclxuICAgIHB1YmxpYyBob3ZlckVsZW1Ub3A6IG51bWJlcjtcclxuXHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25WZXJzaW9uID0gbXljb25maWcuQXBwRGF0YS5Db21wb25lbnRWZXJzaW9uO1xyXG4gICAgcHVibGljIGFwcGxpY2F0aW9uTmFtZSA9IG15Y29uZmlnLkFwcERhdGEuTW9kdWxlRGVzY3JpcHRpb247XHJcbiAgICBwdWJsaWMgdXNlciA9IFwiXCI7XHJcbiAgICBwdWJsaWMgdGVuYW50ID0gXCJcIjtcclxuXHJcbiAgICBAVmlld0NoaWxkKFwic2lkZWJhclwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaWRlYmFyOiBFbGVtZW50UmVmO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBsYzogTG9jYWxpemF0aW9uU2VydmljZSwgQE9wdGlvbmFsKCkgQEluamVjdChNRU5VX0xPQ0FMSVpBVElPTikgbGNNZW51OiBUeXBlPExvY2FsaXphdGlvblNlcnZpY2U+LCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIHB1YmxpYyBfc3RhdGU6IEFwcFN0YXRlLCBwcml2YXRlIHpvbmU6IE5nWm9uZSwgcHJpdmF0ZSB1dGlFeHRzOiBVdGlsaXR5U2VydmljZSwgcHJpdmF0ZSBhYWM6IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlLCBASW5qZWN0KE1FTlUpIHByaXZhdGUgbWVudUl0ZW1zUmF3OiBBcHBsaWNhdGlvbk1lbnVbXSxcclxuICAgICAgICBwcml2YXRlIG1lbnVGaWx0ZXJpbmdTZXJ2aWNlOiBNZW51RmlsdGVyaW5nU2VydmljZSwgcHVibGljIHNyOiBUb2tlblNlcnZpY2UsIHB1YmxpYyBnbG9iYWxTZWFyY2hTZXJ2aWNlOiBHbG9iYWxTZWFyY2hTZXJ2aWNlLCBwdWJsaWMgcHJvZmlsZTogVXNlclByZWZlcmVuY2VzU2VydmljZSwgcHJpdmF0ZSBtc2dFeHRzOiBNZXNzYWdlU2VydmljZSkge1xyXG5cclxuICAgICAgICB0aGlzLmxjID0gdGhpcy5sYy5nZW5lcmF0ZUZyb21UeXBlKGxjTWVudSk7XHJcblxyXG4gICAgICAgIHRoaXMuX3N0YXRlLnN1YnNjcmliZShcIm1lbnUuaXNDb2xsYXBzZWRcIiwgKGlzQ29sbGFwc2VkKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJhcHBsaWNhdGlvbi5EZXBsb3lBdmFpbGFibGVcIiwgKGF2YWlsYWJsZTogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoYXZhaWxhYmxlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShldmVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcclxuICAgICAgICAgICAgICAgIGxldCB3aWR0aCA9ICh3aW5kb3cuaW5uZXJXaWR0aCA+IDApID8gd2luZG93LmlubmVyV2lkdGggOiBzY3JlZW4ud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpZiAod2lkdGggPD0gNzY4KVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmdldFVzZXJQcm9maWxlRGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBuZ09uSW5pdCgpIHtcclxuICAgICAgICBsZXQgdG1wTWVudUl0ZW1zID0gdGhpcy5nZXRNZW51SXRlbXMoKTtcclxuICAgICAgICB0aGlzLm1lbnVJdGVtcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubWVudUZpbHRlcmluZ1NlcnZpY2UuZmlsdGVyKHRtcE1lbnVJdGVtcykpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fc2hvdWxkTWVudUNvbGxhcHNlKCkpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUNvbGxhcHNlKCk7XHJcblxyXG4gICAgICAgIHRoaXMudXBkYXRlU2lkZWJhckhlaWdodCgpO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLnNldFNpZGViYXJXaWR0aCh0aGlzLnNpZGViYXIubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCk7XHJcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRNZW51SXRlbXMoKTogQXBwbGljYXRpb25NZW51W10ge1xyXG4gICAgICAgIGxldCBtZW51cyA9IHRoaXMudXRpRXh0cy5kZWVwQ2xvbmUodGhpcy5tZW51SXRlbXNSYXcpO1xyXG5cclxuICAgICAgICAvLyBHaXJvIDEgYXNzZWdubyBpbCBsaXZlbGxvIGFpIHJvb3RcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0ID0gbWVudXNbaV0gYXMgYW55O1xyXG4gICAgICAgICAgICB0LmxldmVsID0gMTtcclxuICAgICAgICAgICAgdC5wYWRkaW5nX2xlZnQgPSAxODtcclxuICAgICAgICAgICAgdC52aXNpYmxlID0gIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpO1xyXG5cclxuICAgICAgICAgICAgLy8gR2lybyByaWNvcnNpdm9cclxuICAgICAgICAgICAgaWYgKHQuc3ViTWVudSAmJiB0LnN1Yk1lbnUubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tTdWJNZW51T3ZlckNsYWltcyh0LCAxKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZW51cztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrU3ViTWVudU92ZXJDbGFpbXMobWVudUl0ZW06IEFwcGxpY2F0aW9uTWVudSwgbGV2ZWw6IG51bWJlcikge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWVudUl0ZW0uc3ViTWVudS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgdCA9IG1lbnVJdGVtLnN1Yk1lbnVbaV0gYXMgYW55O1xyXG4gICAgICAgICAgICB0LmxldmVsID0gbGV2ZWwgKyAxO1xyXG4gICAgICAgICAgICB0LnZpc2libGUgPSAhdC5hYyB8fCB0aGlzLmFhYy5oYXModC5hYyk7XHJcbiAgICAgICAgICAgIHQucGFkZGluZ19sZWZ0ID0gdC5sZXZlbCAqIDE4O1xyXG4gICAgICAgICAgICBpZiAodC5zdWJNZW51ICYmIHQuc3ViTWVudS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5jaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKHQsIGxldmVsICsgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vI3JlZ2lvbiBKUXVlcnlcclxuICAgIEBIb3N0TGlzdGVuZXIoXCJ3aW5kb3c6cmVzaXplXCIpXHJcbiAgICBwdWJsaWMgb25XaW5kb3dSZXNpemUoKTogdm9pZCB7XHJcbiAgICAgICAgdmFyIGlzTWVudVNob3VsZENvbGxhcHNlZCA9IHRoaXMuX3Nob3VsZE1lbnVDb2xsYXBzZSgpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc01lbnVTaG91bGRDb2xsYXBzZWQgIT09IGlzTWVudVNob3VsZENvbGxhcHNlZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKGlzTWVudVNob3VsZENvbGxhcHNlZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNNZW51U2hvdWxkQ29sbGFwc2VkID0gaXNNZW51U2hvdWxkQ29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2lkZWJhckhlaWdodCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3Nob3VsZE1lbnVDb2xsYXBzZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPD0gNzY4O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZW51Q29sbGFwc2UoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZSh0cnVlKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBtZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShpc0NvbGxhcHNlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaXNNZW51Q29sbGFwc2VkID0gaXNDb2xsYXBzZWQ7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRoaXMuaXNNZW51Q29sbGFwc2VkKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUV4cGFuZCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm1lbnVDb2xsYXBzZVN0YXRlQ2hhbmdlKGZhbHNlKTtcclxuICAgICAgICB0aGlzLl9zdGF0ZS5zZXRTaWRlYmFyV2lkdGgodGhpcy5zaWRlYmFyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBob3Zlckl0ZW0oalF1ZXJ5ZXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuaXNNZW51Q29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0hvdmVyRWxlbSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaG92ZXJFbGVtSGVpZ2h0ID0galF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuaG92ZXJFbGVtVG9wID0galF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XHJcblxyXG4gICAgICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcInRvcFwiLCB0aGlzLmhvdmVyRWxlbVRvcCArIFwicHhcIik7XHJcbiAgICAgICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwiaGVpZ2h0XCIsIHRoaXMuaG92ZXJFbGVtSGVpZ2h0ICsgXCJweFwiKTtcclxuICAgICAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5hZGRDbGFzcyhcInNob3ctaG92ZXItZWxlbVwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNlbmRBd2F5SG92ZXJFbGVtZW50KCkge1xyXG4gICAgICAgIHRoaXMuaG92ZXJFbGVtVG9wID0gLTIwMDtcclxuXHJcbiAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5jc3MoXCJ0b3BcIiwgdGhpcy5ob3ZlckVsZW1Ub3AgKyBcInB4XCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB1cGRhdGVTaWRlYmFySGVpZ2h0KCk6IHZvaWQge1xyXG4gICAgICAgIGxldCBtYXJnaW5Ub3AgPSA2MCArIDQwO1xyXG4gICAgICAgIGxldCBmb290ZXJIZWlnaHQgPSAxNTA7XHJcblxyXG4gICAgICAgIHRoaXMubWVudUhlaWdodCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jbGllbnRIZWlnaHQgLSBtYXJnaW5Ub3AgLSBmb290ZXJIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgLy9Ob25vc3RhbnRlIHF1ZXN0YSBmdW56aW9uZSBzaWEgY29sbGVnYXRhIGNvbiAoY2xpY2sub3V0LXpvbmUpIHBlciBxdWFsY2hlIG1vdGl2byBhbmd1bGFyIGxlIGVzZWd1ZSBjb211bnF1ZSBuZWxsYSBzdWEgem9uZVxyXG4gICAgLy9nZW5lcmFuZG8gdW4gcG8nIGRpIGlycmVzcG9uc2l2aXTDoCBpbml6aWFsZS4uLiBzdWNjZWRlIHNvbG8gY29sIGNsaWNrLi4uIGJvaFxyXG4gICAgcHVibGljIGNvbGxhcHNlTWVudShqUXVlcnlldmVudCwgaXRlbSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGlmICh0aGlzLmlzTWVudUNvbGxhcHNlZClcclxuICAgICAgICAgICAgdGhpcy5tZW51RXhwYW5kKCk7XHJcblxyXG4gICAgICAgIGlmICghaXRlbS5sZXZlbClcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTGl2ZWxsbyBub24gcHJlc2VudGUgaW4gdW4gb2dnZXR0byBkZWwgbWVudSFcIik7XHJcblxyXG4gICAgICAgIC8vTi5COiBUdXR0ZSBsZSBmdW56aW9uaSBkaSBKUXVlcnkgbGUgZXNndW8gZnVvcmkgZGEgQW5ndWxhciBkYXRvIGNoZSBjJ++/vSB1bmEgYnVvbmEgcHJvYmFiaWxpdO+/vSBjaGUgc2lhbm8gZXZlbnRpIGFzaW5jcm9uaVxyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7IHRoaXMub3V0c2lkZUFuZ3VsYXJDbGlja0hhbmRsZXIoalF1ZXJ5ZXZlbnQsIGl0ZW0pOyB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgb3V0c2lkZUFuZ3VsYXJDbGlja0hhbmRsZXIoalF1ZXJ5ZXZlbnQsIGl0ZW0pIHtcclxuICAgICAgICBsZXQgbGV2ZWxDbGFzcyA9IGl0ZW0ubGV2ZWwgPyBcImxldmVsLVwiICsgKGl0ZW0ubGV2ZWwpIDogXCJcIjtcclxuICAgICAgICBsZXQgbGV2ZWxDbGFzc1BsdXNPbmUgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsICsgMSkgOiBcIlwiO1xyXG4gICAgICAgIGxldCBzbGlkZVBlcmlvZCA9IDQwMDtcclxuXHJcbiAgICAgICAgdmFyIGxpbmsgPSBqUXVlcnkoalF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldCk7XHJcblxyXG4gICAgICAgIC8vU2UgbCdlbGVtZW50byBub24gw6ggZXNwYW5zb1xyXG4gICAgICAgIGlmICghbGluay5jbG9zZXN0KFwiLnNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgLy9UaXJvIHN1IHR1dHRpIGdsaSBlbGVtZW50aSBkZWxsbyBzdGVzc28gbGl2ZWxsbyBlc3BhbnNpIGUgbGkgY2hpdWRvXHJcblxyXG4gICAgICAgICAgICAvL1NlIGhvIGNvbXByZXNzbyB1biBtZW51IHZhZG8gYSB2ZWRlcmUgc2UgYyfDqCBhbmNoZSB1biBhbHRybyBtZW51IGRpIGxpdmVsbG8gcGnvv70gYmFzc28gZGEgcmljaGl1ZGVyZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyAobGV2ZWxDbGFzc1BsdXNPbmUpKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgKGxldmVsQ2xhc3NQbHVzT25lKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gcmljaGl1ZG8gdHV0dGkgcXVlbGxpIGRlbCBtaW8gbGl2ZWxsbyBhdHR1YWxlXHJcbiAgICAgICAgICAgIGpRdWVyeShcInVsLm5hdi1zaWRlYmFyIGxpXCIgKyBcIi5cIiArIGxldmVsQ2xhc3MpLmVhY2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNsb3Nlc3RMaSA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KFwibGlcIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikubGVuZ3RoICYmIGNsb3Nlc3RMaS5oYXNDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLnNsaWRlVXAoc2xpZGVQZXJpb2QpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vTGUgdXNvIHNlbXByZSBlbnRyYW1iZSBpbnNpZW1lLiBMYSBwcmltYSDDqCBsYSBjbGFzc2UgcGVyIGxhIGxvZ2ljYSwgbGEgc2Vjb25kYSBwZXIgbGUgYW5pbWF6aW9uaVxyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy9Eb3BvZGljaO+/vSBlc3BhbmRvIHF1ZWxsbyBhdHR1YWxlXHJcbiAgICAgICAgICAgIGxpbmsubmV4dCgpLnNsaWRlRG93bihzbGlkZVBlcmlvZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJNZW51KSB7XHJcbiAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIGxldmVsQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgbGluay5jbG9zZXN0KFwibGlcIikuYWRkQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvL0FsdHJpbWVudGksIHNlIGwnZWxlbWVudG8gw6ggZ2nDoCBlc3BhbnNvIGxvIGNoaXVkb1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5zdWJNZW51KSB7XHJcbiAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIGxldmVsQ2xhc3MpO1xyXG4gICAgICAgICAgICAgICAgbGluay5jbG9zZXN0KFwibGlcIikucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxpbmsubmV4dCgpLnNsaWRlVXAoc2xpZGVQZXJpb2QpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBGb290ZXJcclxuICAgIHB1YmxpYyBvbkNoYW5nZVRlbmFudCgpIHtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGAke215Y29uZmlnLkF1dGhVcmx9LyMvbG9naW47Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uTG9nb3V0KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vIy9sb2dvdXQ7Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRVc2VyUHJvZmlsZURhdGEoKSB7XHJcbiAgICAgICAgdmFyIGlkZW50aXR5ID0gdGhpcy5zci5nZXRKYWNlSWRlbnRpdHkoKTtcclxuXHJcbiAgICAgICAgaWYgKGlkZW50aXR5KSB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlciA9IGlkZW50aXR5LkZ1bGxOYW1lO1xyXG4gICAgICAgICAgICB0aGlzLnRlbmFudCA9IGlkZW50aXR5LlRlbmFudE5hbWU7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJvZmlsZS5kb1JlbG9hZFByb2ZpbGVQaWN0dXJlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG5cclxuICAgIC8vI3JlZ2lvbiBHZXN0aW9uZSBSaWNlcmNhIEdsb2JhbGVcclxuICAgIHB1YmxpYyBTZWxlY3RlZFJlc3VsdDogU2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIHB1YmxpYyBTaG93U2luZ2xlVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBzZWFyY2hpbmdUZXJtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdENvbnRhaW5lcjtcclxuXHJcbiAgICBvblNlYXJjaFJlcXVlc3QoKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5nbG9iYWxTZWFyY2hTZXJ2aWNlLkVuYWJsZWQpXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybS50cmltKCkubGVuZ3RoIDwgMykge1xyXG4gICAgICAgICAgICB0aGlzLm1zZ0V4dHMuc2ltcGxlV2FybmluZyh0aGlzLmxjLmxvYyhcIlNjcml2ZXJlIGFsbWVubyAzIGNhcmF0dGVyaSBwZXIgdXRpbGl6emFyZSBsYSByaWNlcmNhIGdsb2JhbGVcIikpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdsb2JhbFNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRoaXMuc2VhcmNoVGVybSkuc3Vic2NyaWJlKHQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaGluZ1Rlcm0gPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSB0O1xyXG5cclxuICAgICAgICAgICAgLy8gU2hvcnQtY2lyY3VpdCBpbiBhc3NlbnphIGRpIHJpc3VsdGF0aVxyXG4gICAgICAgICAgICBpZiAoKHRoaXMuc2VhcmNoUmVzdWx0LnJlc3VsdHMubGVuZ3RoIHx8IDApID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQucmVzdWx0cy5mb3JFYWNoKHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgdC5lc3RfY29scyA9IHQuY29sdW1ucy5tYXAoYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvbExpbmsgPSB0aGlzLmdsb2JhbFNlYXJjaFNlcnZpY2UuZ2VuZXJhdGVDb2x1bW5MaW5rKGMpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uKGMuZGVzY3JpcHRpb24sIGMuaWQsIGNvbExpbms/LnJvdXRlUGF0aCwgY29sTGluaz8ucm91dGVQcm9wZXJ0aWVzKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VhcmNoTW9kZWxDaGFuZ2VkKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zZWFyY2hpbmdUZXJtKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlU2VhcmNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VTZWFyY2goKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hpbmdUZXJtID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG5cclxuICAgIEZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbTogU2VhcmNoUmVzdWx0ID0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMuU2VsZWN0ZWRSZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuU2hvd1NpbmdsZVRhYmxlID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0pXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHQ/LnJlc3VsdHM/LmZpbmQoZiA9PiBmLmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24pO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vI2VuZHJlZ2lvblxyXG59IiwiPGRpdiAjc2lkZWJhciBjbGFzcz1cImFwcC1zaWRlYmFyXCIgW2NsYXNzLm1lbnUtY29sbGFwc2VkXT1cImlzTWVudUNvbGxhcHNlZFwiIChtb3VzZWxlYXZlLm91dC16b25lKT1cInNlbmRBd2F5SG92ZXJFbGVtZW50KCk7XCI+XHJcbiAgICA8IS0tSmFjZSBMb2dvLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLWxvZ28tY29udGFpbmVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1wb2ludGVyXCIgW3JvdXRlckxpbmtdPVwiWycvcGFnZXMvZGFzaGJvYXJkJ11cIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDEwcHg7IG92ZXJmbG93OiBoaWRkZW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJhcHAtbG9nby1pbWdcIiBzcmM9XCJhc3NldHMvaW1nL2xvZ28vaGVhZGxvZ29fc21hbGwucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLWxvZ28tZm9udC1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC1sb2dvLWZvbnRcIj57e2FwcGxpY2F0aW9uTmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtbG9nby1pbWctc21cIiBzcmM9XCJhc3NldHMvaW1nL2xvZ28vaGVhZGxvZ29fc21hbGwucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1SaWNlcmNhIGdsb2JhbGUtLT5cclxuICAgIDxkaXYgKm5nSWY9XCIhaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1zZWFyY2hcIj5cclxuICAgICAgICA8Zm9ybSBub3ZhbGlkYXRlIHJvbGU9XCJzZWFyY2hcIiBjbGFzcz1cImFwcC1zZWFyY2hcIiAobmdTdWJtaXQpPVwib25TZWFyY2hSZXF1ZXN0KClcIj5cclxuICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9XCJSaWNlcmNhLi4uXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hUZXJtXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2hNb2RlbENoYW5nZWQoKVwiIG5hbWU9XCJzZWFyY2hcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8YT48aSBjbGFzcz1cImZhciBmYS1tYWduaWZ5aW5nLWdsYXNzXCI+PC9pPjwvYT5cclxuICAgICAgICA8L2Zvcm0+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS1CYXJyYSBsYXRlcmFsZSBjb24gdHV0dGUgbGUgdm9jaSBkaSBNZW51LS0+XHJcbiAgICA8dWwgY2xhc3M9XCJuYXYgbmF2LXNpZGViYXIgZmxleC1jb2x1bW4gZmxleC1ub3dyYXBcIiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgem9vbTogMVwiIHNsaW0tc2Nyb2xsIFtzbGltU2Nyb2xsT3B0aW9uc109XCJ7aGVpZ2h0OiBtZW51SGVpZ2h0ICsgKGlzTWVudUNvbGxhcHNlZCA/IDU1IDogMCl9XCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51SXRlbXM7IGxldCBsYXN0ID0gbGFzdDtcIj5cclxuICAgICAgICAgICAgPGxpICpuZ0lmPVwiaXRlbS52aXNpYmxlXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtaXRlbSBsZXZlbC17e2l0ZW0ubGV2ZWx9fVwiIFxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLm1hcmdpbi1ib3R0b21dPVwibGFzdCA/ICc0MnB4JyA6ICcwcHgnXCJcclxuICAgICAgICAgICAgICAgIFtjbGFzcy5oYXMtc3ViLW1lbnVdPVwiaXRlbS5zdWJNZW51XCIgXHJcbiAgICAgICAgICAgICAgICBbY2xhc3Muc2lkZWJhci1pdGVtLWV4cGFuZGVkXT1cIml0ZW0uZXhwYW5kZWRcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwiaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dCA6IHsgJGltcGxpY2l0OiBpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvdWw+XHJcbiAgICA8IS0tU2VsZXR0b3JlIEJhcnJhIGRlaSBNZW51LS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1ob3Zlci1lbGVtXCI+PC9kaXY+XHJcbiAgICA8IS0tRm9vdGVyICpuZ0lmPVwiIWlzTWVudUNvbGxhcHNlZFwiLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyXCI+XHJcbiAgICAgICAgPCEtLU1pbnVzY29sbyBmYWRlIHRyYSBzaWRlYmFyIGUgaW5pemlvIGZvb3Rlci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItZmFkZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgW3N0eWxlLnBhZGRpbmcucHhdPVwiaXNNZW51Q29sbGFwc2VkID8gNSA6IDE1XCI+XHJcbiAgICAgICAgICAgIDwhLS1JbmZvcm1hemlvbmkgdXRlbnRlIGNvbGxlZ2F0by0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tTWVudHJlIHN0byBhbmNvcmEgY2FyaWNhbmRvIGxhIFByb2ZpbGVQaWMgbWkgYXNzaWN1cm8gZGkgbW9zdHJhcmUgdW4gcGxhY2Vob2xkZXItLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcHJvZmlsZS5Qcm9maWxlUGljdHVyZVwiIGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItaW1nLXBsYWNlaG9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtMnggZmEtc3Bpbm5lciBmYS1zcGluLXB1bHNlXCIgc3R5bGU9XCJjb2xvcjogYmxhY2s7IG1hcmdpbi10b3A6IDVweDtcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwhLS1VbmEgdm9sdGEgY2FyaWNhdGEgbGEgUHJvZmlsZVBpYyBuYXNjb25kbyBpbCBwbGFjZWhvbGRlciBlIGxhIG1vc3Ryby0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb2ZpbGUuUHJvZmlsZVBpY3R1cmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwicHJvZmlsZS5Qcm9maWxlUGljdHVyZVwiIGFsdD1cIlwiIGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItaW1nIGFwcC1wb2ludGVyXCIgW3JvdXRlckxpbmtdPVwiWycvcGFnZXMvcHJvZmlsZSddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci11c2VyLXN0YXR1c1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8IS0tVXNlcm5hbWUgYW5pbWF0byBxdWFuZG8gc3VwZXJhIGkgMTUgY2FyYXR0ZXJpLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItbmFtZS1jb250YWluZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlcm5hbWUtdGV4dFwiIFtjbGFzcy51c2VybmFtZS10ZXh0LWFuaW1hdG9yXT1cInVzZXI/Lmxlbmd0aCA+IDE1XCI+e3t1c2VyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGVuYW50bmFtZS10ZXh0XCI+e3t0ZW5hbnR9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tT3BlcmF6aW9uaSByYXBpZGUgKExvZ291dCwgQ2FtYmlhIHRlbmFudCwgR3VpZGEsIFN1cHBvcnRvLC4uLiktLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1xdWljay1vcHNcIiBbc3R5bGUuZGlzcGxheV09XCJpc01lbnVDb2xsYXBzZWQgPyAnaW5saW5lJyA6ICdmbGV4J1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DaGFuZ2VUZW5hbnQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCIgW3N0eWxlLm1hcmdpbi10b3AucHhdPVwiaXNNZW51Q29sbGFwc2VkID8gMTAgOiAwXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtbGVmdFwiPjwvaT48c3BhbiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIj4mbmJzcDtDYW1iaWEgVGVuYW50PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25Mb2dvdXQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCIgW3N0eWxlLm1hcmdpbi10b3AucHhdPVwiaXNNZW51Q29sbGFwc2VkID8gMTAgOiAwXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtZnJvbS1icmFja2V0XCI+PC9pPjxzcGFuICpuZ0lmPVwiIWlzTWVudUNvbGxhcHNlZFwiPiZuYnNwO0xvZ291dDwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1WZXJzaW9uZSBjb3JyZW50ZSBhcHBsaWNhemlvbmUtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci12ZXJcIj5cclxuICAgICAgICAgICAgICAgIHZ7e2FwcGxpY2F0aW9uVmVyc2lvbn19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPG5nLXRlbXBsYXRlICNtZW51SXRlbSBsZXQtaXRlbT5cclxuICAgIDxhIFtzdHlsZS5wYWRkaW5nLWxlZnQucHhdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIighaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLnN1Yk1lbnUpIHx8IGl0ZW0ud2lwXCIgW2hyZWZdPVwiaXRlbS5saW5rIHx8ICcjJ1wiIChjbGljayk9XCJpdGVtLndpcCAmJiAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiIHRhcmdldD1cIl9ibGFua1wiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiAobW91c2VlbnRlci5vdXQtem9uZSk9XCJob3Zlckl0ZW0oJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+PHNwYW4+e3sgaXRlbS50aXRsZSB8IGxvY2FsaXplIDogbGMgfX08L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGEgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJpdGVtLnBhZGRpbmdfbGVmdFwiICpuZ0lmPVwiaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLnN1Yk1lbnUgJiYgIWl0ZW0ud2lwXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIFtyb3V0ZXJMaW5rXT1cIltpdGVtLnJvdXRlckxpbmtdXCIgW3F1ZXJ5UGFyYW1zXT1cIml0ZW0ucXVlcnlQYXJhbXNcIiByb3V0ZXJMaW5rQWN0aXZlPVwiYWN0aXZlLWxpbmtcIiAoY2xpY2sub3V0LXpvbmUpPVwiY29sbGFwc2VNZW51KCRldmVudCwgaXRlbSlcIiAobW91c2VlbnRlci5vdXQtem9uZSk9XCJob3Zlckl0ZW0oJGV2ZW50KVwiPlxyXG4gICAgICAgIDxpICpuZ0lmPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ7eyBpdGVtLmljb24gfX1cIj48L2k+PHNwYW4+e3sgaXRlbS50aXRsZSB8IGxvY2FsaXplIDogbGMgfX08L3NwYW4+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPGEgW3N0eWxlLnBhZGRpbmctbGVmdC5weF09XCJpdGVtLnBhZGRpbmdfbGVmdFwiICpuZ0lmPVwiaXRlbS5zdWJNZW51ICYmICFpdGVtLndpcFwiIChjbGljay5vdXQtem9uZSk9XCJjb2xsYXBzZU1lbnUoJGV2ZW50LCBpdGVtKVwiIFthdHRyLmhyZWZdPVwiJydcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgICAgIDxiIGNsYXNzPVwiZmEgZmEtYW5nbGUtZG93blwiPjwvYj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8dWwgKm5nSWY9XCJpdGVtLnN1Yk1lbnVcIiBjbGFzcz1cInNpZGViYXItc3VibGlzdFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1Yml0ZW0gb2YgaXRlbS5zdWJNZW51XCIgPlxyXG4gICAgICAgICAgICA8bGkgKm5nSWY9XCJzdWJpdGVtLnZpc2libGVcIiBjbGFzcz1cInNpZGViYXItc3VibGlzdC1pdGVtIGxldmVsLXt7aXRlbS5sZXZlbH19XCIgW2NsYXNzLnNpZGViYXItaXRlbS13aXBdPVwic3ViaXRlbS53aXBcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dCA6IHskaW1wbGljaXQ6IHN1Yml0ZW19XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3VsPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLSBPdmVybGF5IHBlciBsYSByaWNlcmNhIGdsb2JhbGUgLS0+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtIHx8IHNlYXJjaFJlc3VsdFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1hYnNvbHV0ZSBhcHAtc2VhcmNoLWJhY2tncm91bmRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1yZXN1bHQtYm94XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+PGkgY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L2k+U3RvIGVmZmV0dHVhbmRvIGxhIHJpY2VyY2EuLi48L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWFyY2hSZXN1bHQgJiYgIXNlYXJjaGluZ1Rlcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cImhlaWdodDogMTAwJTtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIHNpbmlzdHJhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQmxvY2NvIGNvbiBsZSBjYXRlZ29yaWUgZGVpIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1yZWxhdGl2ZVwiPjxhIGNsYXNzPVwiZmEgZmEtdGltZXMgdGV4dC1kYW5nZXIgYXBwLWFic29sdXRlIGFwcC1yaWdodC0wIGFwcC1mcy0yMCBhcHAtcG9pbnRlclwiIChjbGljayk9XCJjbG9zZVNlYXJjaCgpO1wiPjwvYT48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND5DYXRlZ29yaWUgZGkgUmljZXJjYTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cygpXCI+e3tTZWxlY3RlZFJlc3VsdCA/ICctJyA6ICc+J319IE1vc3RyYSBUdXR0bzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWFyY2hSZXN1bHQucmVzdWx0c1wiIGNsYXNzPVwiYXBwLXBvaW50ZXIgYXBwLWxpbmtcIiBbY2xhc3MuYXBwLWJvbGRdPVwiU2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwiRmlsdGVyU2VhcmNoUmVzdWx0cyhpdGVtKVwiPnt7U2VsZWN0ZWRSZXN1bHQ/LmRlc2NyaXB0aW9uID09IGl0ZW0uZGVzY3JpcHRpb24gPyAnPicgOiAnLSd9fSBNb3N0cmEge3tpdGVtLmRlc2NyaXB0aW9ufX0gKHt7aXRlbS5pdGVtcz8ubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGV0dGFnbGlvIHJpc3VsdGF0aSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIiBzdHlsZT1cIm92ZXJmbG93OiBhdXRvOyBoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhU2VsZWN0ZWRSZXN1bHQgJiYgIVNob3dTaW5nbGVUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmVzIG9mIHNlYXJjaFJlc3VsdC5yZXN1bHRzOyBsZXQgaSA9IGluZGV4O1wiIGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCIgW3N0eWxlLm1hcmdpbi1ib3R0b20ucHhdPVwiaSA9PSAoc2VhcmNoUmVzdWx0LnJlc3VsdHM/Lmxlbmd0aCAtIDEpID8gMiA6IDEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7cmVzLmRlc2NyaXB0aW9ufX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcy10YWJsZSBbKG5nTW9kZWwpXT1cInJlcy5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwicmVzLmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJTZWxlY3RlZFJlc3VsdCAmJiBTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+e3tTZWxlY3RlZFJlc3VsdC5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJTZWxlY3RlZFJlc3VsdC5pdGVtc1wiIFtEeW5hbWljUm93Q29sdW1uc0RlZmluaXRpb25dPVwiU2VsZWN0ZWRSZXN1bHQuZXN0X2NvbHNcIiBbQXJyYXltb2RlSXRlbXNQZXJQYWdlXT1cIjEwXCI+PC9lcy10YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNwYXppbyBhIGRlc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLWNvbnRhaW5lcj4iXX0=
@@ -1,43 +0,0 @@
1
- import { Injectable } from "@angular/core";
2
- import { LocalizationService } from "@esfaenza/localizations";
3
- import * as i0 from "@angular/core";
4
- export class UserInfoComponentLoc extends LocalizationService {
5
- constructor(injector) {
6
- super(injector);
7
- super.set("en->it", "Name", ["Nome"]);
8
- super.set("en->it", "Last Login Date", ["Data ultimo accesso"]);
9
- super.set("en->it", "ID Account", ["Codice Account"]);
10
- super.set("en->it", "ID User", ["Codice Utente"]);
11
- super.set("en->it", "Description", ["Descrizione"]);
12
- super.set("en->it", "Tenant Name", ["Nome Tenant"]);
13
- super.set("en->it", "Delete", ["Cancella"]);
14
- super.set("en->it", "Save", ["Salva"]);
15
- super.set("en->it", "Clear User Preferences", ["Ripulisci Preferenze Utente"]);
16
- super.set("en->it", "Old Password", ["Vecchia Password"]);
17
- super.set("en->it", "New Password", ["Nuova Password"]);
18
- super.set("en->it", "Confirm Password", ["Conferma nuova password"]);
19
- super.set("en->it", "Phone Number", ["Numero di Cellulare"]);
20
- super.set("en->it", "Email", ["Email"]);
21
- super.set("en->it", "Change password for all tenants", ["Cambia password per tutti i Tenant"]);
22
- super.set("en->it", "Change password for external systems", ["Cambia password per sistemi esterni"]);
23
- super.set("en->it", "Change", ["Modifica"]);
24
- super.set("en->it", "Recovery Info", ["Informazioni di Recupero"]);
25
- super.set("en->it", "Visibility Info", ["Info Visibilita'"]);
26
- super.set("en->it", "Roles", ["Ruoli"]);
27
- super.set("en->it", "Permissions", ["Permessi"]);
28
- super.set("en->it", "Preference", ["Preferenze"]);
29
- super.set("en->it", "Reset", ["Reimposta"]);
30
- super.set("en->it", "Upload Image", ["Carica Immagine"]);
31
- super.set("en->it", "Show Advanced", ["Mostra Avanzate"]);
32
- super.set("en->it", "Change Profile Picture", ["Cambia Immagine del Profilo"]);
33
- super.set("en->it", "Delete Profile Picture", ["Rimuovi Immagine del Profilo"]);
34
- super.set("en->it", "Password", ["Password"]);
35
- super.set("en->it", "Error", ["Errore"]);
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserInfoComponentLoc, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserInfoComponentLoc }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserInfoComponentLoc, decorators: [{
41
- type: Injectable
42
- }], ctorParameters: () => [{ type: i0.Injector }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcl9pbmZvcy5jb21wb25lbnQubG9jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL3NyYy91c2VyX2luZm9zL3VzZXJfaW5mb3MuY29tcG9uZW50LmxvYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUc5RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsbUJBQW1CO0lBQ3pELFlBQVksUUFBa0I7UUFDMUIsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDdEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7UUFDaEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3RELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDbEQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUNwRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2QyxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUMvRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxjQUFjLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDMUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQ3hELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGtCQUFrQixFQUFFLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGNBQWMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQztRQUM3RCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlDQUFpQyxFQUFFLENBQUMsb0NBQW9DLENBQUMsQ0FBQyxDQUFDO1FBQy9GLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLHNDQUFzQyxFQUFFLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JHLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDO1FBQ25FLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDeEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUNqRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3pELEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUMxRCxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FBQztRQUMvRSxLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FBQztRQUNoRixLQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzsrR0FoQ1Esb0JBQW9CO21IQUFwQixvQkFBb0I7OzRGQUFwQixvQkFBb0I7a0JBRGhDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2xvY2FsaXphdGlvbnNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFVzZXJJbmZvQ29tcG9uZW50TG9jIGV4dGVuZHMgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiTmFtZVwiLCBbXCJOb21lXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJMYXN0IExvZ2luIERhdGVcIiwgW1wiRGF0YSB1bHRpbW8gYWNjZXNzb1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiSUQgQWNjb3VudFwiLCBbXCJDb2RpY2UgQWNjb3VudFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiSUQgVXNlclwiLCBbXCJDb2RpY2UgVXRlbnRlXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJEZXNjcmlwdGlvblwiLCBbXCJEZXNjcml6aW9uZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiVGVuYW50IE5hbWVcIiwgW1wiTm9tZSBUZW5hbnRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIkRlbGV0ZVwiLCBbXCJDYW5jZWxsYVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiU2F2ZVwiLCBbXCJTYWx2YVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiQ2xlYXIgVXNlciBQcmVmZXJlbmNlc1wiLCBbXCJSaXB1bGlzY2kgUHJlZmVyZW56ZSBVdGVudGVcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIk9sZCBQYXNzd29yZFwiLCBbXCJWZWNjaGlhIFBhc3N3b3JkXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJOZXcgUGFzc3dvcmRcIiwgW1wiTnVvdmEgUGFzc3dvcmRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIkNvbmZpcm0gUGFzc3dvcmRcIiwgW1wiQ29uZmVybWEgbnVvdmEgcGFzc3dvcmRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIlBob25lIE51bWJlclwiLCBbXCJOdW1lcm8gZGkgQ2VsbHVsYXJlXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJFbWFpbFwiLCBbXCJFbWFpbFwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiQ2hhbmdlIHBhc3N3b3JkIGZvciBhbGwgdGVuYW50c1wiLCBbXCJDYW1iaWEgcGFzc3dvcmQgcGVyIHR1dHRpIGkgVGVuYW50XCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJDaGFuZ2UgcGFzc3dvcmQgZm9yIGV4dGVybmFsIHN5c3RlbXNcIiwgW1wiQ2FtYmlhIHBhc3N3b3JkIHBlciBzaXN0ZW1pIGVzdGVybmlcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIkNoYW5nZVwiLCBbXCJNb2RpZmljYVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUmVjb3ZlcnkgSW5mb1wiLCBbXCJJbmZvcm1hemlvbmkgZGkgUmVjdXBlcm9cIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIlZpc2liaWxpdHkgSW5mb1wiLCBbXCJJbmZvIFZpc2liaWxpdGEnXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJSb2xlc1wiLCBbXCJSdW9saVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUGVybWlzc2lvbnNcIiwgW1wiUGVybWVzc2lcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIlByZWZlcmVuY2VcIiwgW1wiUHJlZmVyZW56ZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUmVzZXRcIiwgW1wiUmVpbXBvc3RhXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJVcGxvYWQgSW1hZ2VcIiwgW1wiQ2FyaWNhIEltbWFnaW5lXCJdKTtcclxuICAgICAgICBzdXBlci5zZXQoXCJlbi0+aXRcIiwgXCJTaG93IEFkdmFuY2VkXCIsIFtcIk1vc3RyYSBBdmFuemF0ZVwiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiQ2hhbmdlIFByb2ZpbGUgUGljdHVyZVwiLCBbXCJDYW1iaWEgSW1tYWdpbmUgZGVsIFByb2ZpbG9cIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIkRlbGV0ZSBQcm9maWxlIFBpY3R1cmVcIiwgW1wiUmltdW92aSBJbW1hZ2luZSBkZWwgUHJvZmlsb1wiXSk7XHJcbiAgICAgICAgc3VwZXIuc2V0KFwiZW4tPml0XCIsIFwiUGFzc3dvcmRcIiwgW1wiUGFzc3dvcmRcIl0pO1xyXG4gICAgICAgIHN1cGVyLnNldChcImVuLT5pdFwiLCBcIkVycm9yXCIsIFtcIkVycm9yZVwiXSk7XHJcbiAgICB9XHJcbn0iXX0=