awf-test-lib 0.1.9 → 0.1.10

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 (218) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +10 -30
  4. package/src/lib/core/core-routing.module.ts +10 -0
  5. package/src/lib/core/core.module.ts +35 -0
  6. package/src/lib/core/menu/menu.component.css +18 -0
  7. package/src/lib/core/menu/menu.component.html +8 -0
  8. package/src/lib/core/menu/menu.component.spec.ts +23 -0
  9. package/src/lib/core/menu/menu.component.ts +28 -0
  10. package/src/lib/core/menu-consomer/menu-consomer.component.html +20 -0
  11. package/src/lib/core/menu-consomer/menu-consomer.component.scss +20 -0
  12. package/src/lib/core/menu-consomer/menu-consomer.component.spec.ts +25 -0
  13. package/src/lib/core/menu-consomer/menu-consomer.component.ts +21 -0
  14. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.html +7 -0
  15. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.scss +17 -0
  16. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.spec.ts +25 -0
  17. package/src/lib/core/menu-ge-portal/menu-ge-portal.component.ts +24 -0
  18. package/src/lib/core/menu-warranty/menu-warranty.component.html +20 -0
  19. package/src/lib/core/menu-warranty/menu-warranty.component.scss +16 -0
  20. package/src/lib/core/menu-warranty/menu-warranty.component.spec.ts +25 -0
  21. package/src/lib/core/menu-warranty/menu-warranty.component.ts +31 -0
  22. package/src/lib/core/not-found/not-found.component.css +31 -0
  23. package/src/lib/core/not-found/not-found.component.html +6 -0
  24. package/src/lib/core/not-found/not-found.component.spec.ts +23 -0
  25. package/src/lib/core/not-found/not-found.component.ts +15 -0
  26. package/src/lib/core/top-bar/top-bar.component.css +116 -0
  27. package/src/lib/core/top-bar/top-bar.component.html +1 -0
  28. package/src/lib/core/top-bar/top-bar.component.spec.ts +23 -0
  29. package/src/lib/core/top-bar/top-bar.component.ts +39 -0
  30. package/{lib/models/account.model.d.ts → src/lib/models/account.model.ts} +6 -3
  31. package/src/lib/models/alternativeDate.model.ts +6 -0
  32. package/src/lib/models/applicationName.ts +6 -0
  33. package/{lib/models/cancelPMMailRequest.model.d.ts → src/lib/models/cancelPMMailRequest.model.ts} +3 -1
  34. package/src/lib/models/customObject.model.ts +4 -0
  35. package/src/lib/models/detailedPmJob.model.ts +25 -0
  36. package/src/lib/models/emailStatus.ts +4 -0
  37. package/src/lib/models/emailType.ts +17 -0
  38. package/src/lib/models/eventStatus.ts +8 -0
  39. package/src/lib/models/field.ts +7 -0
  40. package/src/lib/models/language.ts +4 -0
  41. package/{lib/models/mailRequest.model.d.ts → src/lib/models/mailRequest.model.ts} +3 -1
  42. package/src/lib/models/pMGroupedJob.model.ts +4 -0
  43. package/{lib/models/pmJob.model.d.ts → src/lib/models/pmJob.model.ts} +7 -6
  44. package/src/lib/models/pmJobRequest.model.ts +6 -0
  45. package/{lib/models/pmJobStatus.d.ts → src/lib/models/pmJobStatus.ts} +8 -3
  46. package/src/lib/models/reason.model.ts +7 -0
  47. package/src/lib/models/reasonCode.ts +9 -0
  48. package/src/lib/models/reasonContact.ts +7 -0
  49. package/{lib/models/reportDateMailRequest.model.d.ts → src/lib/models/reportDateMailRequest.model.ts} +3 -1
  50. package/src/lib/models/role.ts +5 -0
  51. package/src/lib/models/service.model.ts +8 -0
  52. package/src/lib/models/serviceName.ts +14 -0
  53. package/{lib/models/socialLoginRequest.model.d.ts → src/lib/models/socialLoginRequest.model.ts} +1 -1
  54. package/src/lib/models/socialMadia.ts +4 -0
  55. package/src/lib/models/stingBoolean.ts +7 -0
  56. package/src/lib/models/system.ts +15 -0
  57. package/{lib/models/theme.model.d.ts → src/lib/models/theme.model.ts} +18 -11
  58. package/src/lib/models/tokenStatus.ts +6 -0
  59. package/src/lib/models/warranty.ts +18 -0
  60. package/src/lib/pipes/pipes/pipes.module.ts +14 -0
  61. package/src/lib/pipes/subrtring-w.pipe.spec.ts +8 -0
  62. package/src/lib/pipes/subrtring-w.pipe.ts +16 -0
  63. package/src/lib/pipes/substring.pipe.spec.ts +8 -0
  64. package/src/lib/pipes/substring.pipe.ts +15 -0
  65. package/src/lib/shared/choose-another-date/choose-another-date.component.html +9 -0
  66. package/src/lib/shared/choose-another-date/choose-another-date.component.scss +4 -0
  67. package/src/lib/shared/choose-another-date/choose-another-date.component.spec.ts +25 -0
  68. package/src/lib/shared/choose-another-date/choose-another-date.component.ts +126 -0
  69. package/src/lib/shared/confirm-dialog/confirm-dialog.component.html +27 -0
  70. package/src/lib/shared/confirm-dialog/confirm-dialog.component.scss +0 -0
  71. package/src/lib/shared/confirm-dialog/confirm-dialog.component.spec.ts +25 -0
  72. package/src/lib/shared/confirm-dialog/confirm-dialog.component.ts +35 -0
  73. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.css +0 -0
  74. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.html +19 -0
  75. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.spec.ts +23 -0
  76. package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.ts +36 -0
  77. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.html +25 -0
  78. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.scss +23 -0
  79. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.spec.ts +25 -0
  80. package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.ts +28 -0
  81. package/src/lib/shared/contact/contact.component.css +144 -0
  82. package/src/lib/shared/contact/contact.component.html +136 -0
  83. package/src/lib/shared/contact/contact.component.spec.ts +23 -0
  84. package/src/lib/shared/contact/contact.component.ts +176 -0
  85. package/src/lib/shared/contact-support/contact-support.component.html +130 -0
  86. package/src/lib/shared/contact-support/contact-support.component.scss +10 -0
  87. package/src/lib/shared/contact-support/contact-support.component.spec.ts +25 -0
  88. package/src/lib/shared/contact-support/contact-support.component.ts +182 -0
  89. package/src/lib/shared/dashboard/dashboard.component.html +81 -0
  90. package/src/lib/shared/dashboard/dashboard.component.scss +5 -0
  91. package/src/lib/shared/dashboard/dashboard.component.spec.ts +23 -0
  92. package/src/lib/shared/dashboard/dashboard.component.ts +21 -0
  93. package/src/lib/shared/maintenance-list/maintenance-list.component.html +105 -0
  94. package/src/lib/shared/maintenance-list/maintenance-list.component.scss +26 -0
  95. package/src/lib/shared/maintenance-list/maintenance-list.component.spec.ts +25 -0
  96. package/src/lib/shared/maintenance-list/maintenance-list.component.ts +398 -0
  97. package/src/lib/shared/shared-routing.module.ts +10 -0
  98. package/src/lib/shared/shared.module.ts +84 -0
  99. package/src/lib/shared/show-links/show-links.component.html +49 -0
  100. package/src/lib/shared/show-links/show-links.component.scss +0 -0
  101. package/src/lib/shared/show-links/show-links.component.spec.ts +25 -0
  102. package/src/lib/shared/show-links/show-links.component.ts +80 -0
  103. package/src/lib/shared/system-list/system-list.component.css +0 -0
  104. package/src/lib/shared/system-list/system-list.component.html +40 -0
  105. package/src/lib/shared/system-list/system-list.component.spec.ts +23 -0
  106. package/src/lib/shared/system-list/system-list.component.ts +26 -0
  107. package/{public-api.d.ts → src/public-api.ts} +16 -1
  108. package/src/test.ts +27 -0
  109. package/tsconfig.lib.dev.json +10 -0
  110. package/tsconfig.lib.json +15 -0
  111. package/tsconfig.lib.pp.json +10 -0
  112. package/tsconfig.lib.prod.json +10 -0
  113. package/tsconfig.spec.json +17 -0
  114. package/esm2020/awf-test-lib.mjs +0 -5
  115. package/esm2020/lib/core/core-routing.module.mjs +0 -18
  116. package/esm2020/lib/core/core.module.mjs +0 -51
  117. package/esm2020/lib/core/menu/menu.component.mjs +0 -40
  118. package/esm2020/lib/core/menu-consomer/menu-consomer.component.mjs +0 -27
  119. package/esm2020/lib/core/menu-ge-portal/menu-ge-portal.component.mjs +0 -31
  120. package/esm2020/lib/core/menu-warranty/menu-warranty.component.mjs +0 -35
  121. package/esm2020/lib/core/not-found/not-found.component.mjs +0 -19
  122. package/esm2020/lib/core/top-bar/top-bar.component.mjs +0 -41
  123. package/esm2020/lib/models/account.model.mjs +0 -3
  124. package/esm2020/lib/models/alternativeDate.model.mjs +0 -3
  125. package/esm2020/lib/models/applicationName.mjs +0 -7
  126. package/esm2020/lib/models/cancelPMMailRequest.model.mjs +0 -4
  127. package/esm2020/lib/models/customObject.model.mjs +0 -3
  128. package/esm2020/lib/models/detailedPmJob.model.mjs +0 -3
  129. package/esm2020/lib/models/emailStatus.mjs +0 -6
  130. package/esm2020/lib/models/emailType.mjs +0 -15
  131. package/esm2020/lib/models/eventStatus.mjs +0 -9
  132. package/esm2020/lib/models/field.mjs +0 -9
  133. package/esm2020/lib/models/language.mjs +0 -6
  134. package/esm2020/lib/models/mailRequest.model.mjs +0 -3
  135. package/esm2020/lib/models/pMGroupedJob.model.mjs +0 -3
  136. package/esm2020/lib/models/pmJob.model.mjs +0 -3
  137. package/esm2020/lib/models/pmJobRequest.model.mjs +0 -3
  138. package/esm2020/lib/models/pmJobStatus.mjs +0 -17
  139. package/esm2020/lib/models/reason.model.mjs +0 -3
  140. package/esm2020/lib/models/reasonCode.mjs +0 -9
  141. package/esm2020/lib/models/reasonContact.mjs +0 -8
  142. package/esm2020/lib/models/reportDateMailRequest.model.mjs +0 -4
  143. package/esm2020/lib/models/role.mjs +0 -7
  144. package/esm2020/lib/models/service.model.mjs +0 -3
  145. package/esm2020/lib/models/serviceName.mjs +0 -12
  146. package/esm2020/lib/models/socialLoginRequest.model.mjs +0 -3
  147. package/esm2020/lib/models/socialMadia.mjs +0 -5
  148. package/esm2020/lib/models/stingBoolean.mjs +0 -6
  149. package/esm2020/lib/models/system.mjs +0 -3
  150. package/esm2020/lib/models/theme.model.mjs +0 -2
  151. package/esm2020/lib/models/tokenStatus.mjs +0 -7
  152. package/esm2020/lib/models/warranty.mjs +0 -3
  153. package/esm2020/lib/pipes/pipes/pipes.module.mjs +0 -21
  154. package/esm2020/lib/pipes/subrtring-w.pipe.mjs +0 -20
  155. package/esm2020/lib/pipes/substring.pipe.mjs +0 -16
  156. package/esm2020/lib/shared/choose-another-date/choose-another-date.component.mjs +0 -110
  157. package/esm2020/lib/shared/confirm-dialog/confirm-dialog.component.mjs +0 -44
  158. package/esm2020/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.mjs +0 -42
  159. package/esm2020/lib/shared/confirmed-date-information/confirmed-date-information.component.mjs +0 -38
  160. package/esm2020/lib/shared/contact/contact.component.mjs +0 -167
  161. package/esm2020/lib/shared/contact-support/contact-support.component.mjs +0 -164
  162. package/esm2020/lib/shared/dashboard/dashboard.component.mjs +0 -34
  163. package/esm2020/lib/shared/maintenance-list/maintenance-list.component.mjs +0 -347
  164. package/esm2020/lib/shared/shared-routing.module.mjs +0 -18
  165. package/esm2020/lib/shared/shared.module.mjs +0 -144
  166. package/esm2020/lib/shared/show-links/show-links.component.mjs +0 -81
  167. package/esm2020/lib/shared/system-list/system-list.component.mjs +0 -32
  168. package/esm2020/public-api.mjs +0 -48
  169. package/fesm2015/awf-test-lib.mjs +0 -1569
  170. package/fesm2015/awf-test-lib.mjs.map +0 -1
  171. package/fesm2020/awf-test-lib.mjs +0 -1565
  172. package/fesm2020/awf-test-lib.mjs.map +0 -1
  173. package/index.d.ts +0 -5
  174. package/lib/core/core-routing.module.d.ts +0 -7
  175. package/lib/core/core.module.d.ts +0 -15
  176. package/lib/core/menu/menu.component.d.ts +0 -17
  177. package/lib/core/menu-consomer/menu-consomer.component.d.ts +0 -12
  178. package/lib/core/menu-ge-portal/menu-ge-portal.component.d.ts +0 -13
  179. package/lib/core/menu-warranty/menu-warranty.component.d.ts +0 -15
  180. package/lib/core/not-found/not-found.component.d.ts +0 -10
  181. package/lib/core/top-bar/top-bar.component.d.ts +0 -13
  182. package/lib/models/alternativeDate.model.d.ts +0 -6
  183. package/lib/models/applicationName.d.ts +0 -5
  184. package/lib/models/customObject.model.d.ts +0 -3
  185. package/lib/models/detailedPmJob.model.d.ts +0 -23
  186. package/lib/models/emailStatus.d.ts +0 -4
  187. package/lib/models/emailType.d.ts +0 -13
  188. package/lib/models/eventStatus.d.ts +0 -7
  189. package/lib/models/field.d.ts +0 -7
  190. package/lib/models/language.d.ts +0 -4
  191. package/lib/models/pMGroupedJob.model.d.ts +0 -3
  192. package/lib/models/pmJobRequest.model.d.ts +0 -5
  193. package/lib/models/reason.model.d.ts +0 -4
  194. package/lib/models/reasonCode.d.ts +0 -7
  195. package/lib/models/reasonContact.d.ts +0 -6
  196. package/lib/models/role.d.ts +0 -5
  197. package/lib/models/service.model.d.ts +0 -8
  198. package/lib/models/serviceName.d.ts +0 -10
  199. package/lib/models/socialMadia.d.ts +0 -3
  200. package/lib/models/stingBoolean.d.ts +0 -4
  201. package/lib/models/system.d.ts +0 -14
  202. package/lib/models/tokenStatus.d.ts +0 -5
  203. package/lib/models/warranty.d.ts +0 -17
  204. package/lib/pipes/pipes/pipes.module.d.ts +0 -9
  205. package/lib/pipes/subrtring-w.pipe.d.ts +0 -7
  206. package/lib/pipes/substring.pipe.d.ts +0 -7
  207. package/lib/shared/choose-another-date/choose-another-date.component.d.ts +0 -33
  208. package/lib/shared/confirm-dialog/confirm-dialog.component.d.ts +0 -20
  209. package/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.d.ts +0 -19
  210. package/lib/shared/confirmed-date-information/confirmed-date-information.component.d.ts +0 -16
  211. package/lib/shared/contact/contact.component.d.ts +0 -39
  212. package/lib/shared/contact-support/contact-support.component.d.ts +0 -49
  213. package/lib/shared/dashboard/dashboard.component.d.ts +0 -17
  214. package/lib/shared/maintenance-list/maintenance-list.component.d.ts +0 -79
  215. package/lib/shared/shared-routing.module.d.ts +0 -7
  216. package/lib/shared/shared.module.d.ts +0 -40
  217. package/lib/shared/show-links/show-links.component.d.ts +0 -23
  218. package/lib/shared/system-list/system-list.component.d.ts +0 -15
@@ -1,38 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "primeng/api";
5
- import * as i3 from "primeng/button";
6
- import * as i4 from "primeng/dialog";
7
- export class ConfirmedDateInformationComponent {
8
- constructor() {
9
- this.closeConfirmedDateInfo = new EventEmitter();
10
- }
11
- ngOnDestroy() {
12
- // this.displayConfirmedDateInfos = false;
13
- }
14
- confirmDate() {
15
- this.closeConfirmedDateInfo.emit(true);
16
- }
17
- }
18
- ConfirmedDateInformationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ConfirmedDateInformationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
19
- ConfirmedDateInformationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ConfirmedDateInformationComponent, selector: "app-confirmed-date-information", inputs: { displayConfirmedDateInfos: "displayConfirmedDateInfos", startDateTime: "startDateTime", endDateTime: "endDateTime", globaltranslate: "globaltranslate", translate: "translate", moreDates: "moreDates" }, outputs: { closeConfirmedDateInfo: "closeConfirmedDateInfo" }, ngImport: i0, template: "<p-dialog [header]=\"globaltranslate.information\" [(visible)]=\"displayConfirmedDateInfos\" [modal]=\"true\" [style]=\"{width: '50vw'}\" (onHide)=\"confirmDate()\" [maximizable]=\"true\" [baseZIndex]=\"10000\" [draggable]=\"false\" [resizable]=\"false\">\r\n <i class=\"pi pi-check icon-check\"></i>\r\n\r\n \r\n <div *ngIf=\"moreDates\" style=\"text-align:center ;\">\r\n <br><br>\r\n {{translate.textMoreDates}}\r\n <br><br>\r\n\r\n </div>\r\n <div *ngIf=\"!moreDates\">\r\n <div class=\"text-center\">\r\n <p> {{translate.text }} <br> {{translate.start}} : <i class=\"pi pi-calendar\"></i> &nbsp; <strong>\r\n {{startDateTime | date: 'dd MMM yyyy'}}</strong> <br> {{translate.from}}: <strong>08:00 </strong> </p>\r\n </div>\r\n <br><br>\r\n <p>{{translate.infoEmail}}</p>\r\n\r\n </div>\r\n \r\n\r\n <ng-template pTemplate=\"footer\">\r\n <p-button icon=\"pi pi-times \" (click)=\"confirmDate()\" label=\"Close\" class=\" text-center d-block\"></p-button>\r\n </ng-template>\r\n</p-dialog>", styles: ["p-dialog p{font-size:14px;line-height:34px;margin-top:30px}p-dialog .icon-check{text-align:center;color:#fff;background:var(--primarycolor);width:80px;height:80px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:30px;font-weight:700;margin:auto}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass", "ariaLabel"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ConfirmedDateInformationComponent, decorators: [{
21
- type: Component,
22
- args: [{ selector: 'app-confirmed-date-information', template: "<p-dialog [header]=\"globaltranslate.information\" [(visible)]=\"displayConfirmedDateInfos\" [modal]=\"true\" [style]=\"{width: '50vw'}\" (onHide)=\"confirmDate()\" [maximizable]=\"true\" [baseZIndex]=\"10000\" [draggable]=\"false\" [resizable]=\"false\">\r\n <i class=\"pi pi-check icon-check\"></i>\r\n\r\n \r\n <div *ngIf=\"moreDates\" style=\"text-align:center ;\">\r\n <br><br>\r\n {{translate.textMoreDates}}\r\n <br><br>\r\n\r\n </div>\r\n <div *ngIf=\"!moreDates\">\r\n <div class=\"text-center\">\r\n <p> {{translate.text }} <br> {{translate.start}} : <i class=\"pi pi-calendar\"></i> &nbsp; <strong>\r\n {{startDateTime | date: 'dd MMM yyyy'}}</strong> <br> {{translate.from}}: <strong>08:00 </strong> </p>\r\n </div>\r\n <br><br>\r\n <p>{{translate.infoEmail}}</p>\r\n\r\n </div>\r\n \r\n\r\n <ng-template pTemplate=\"footer\">\r\n <p-button icon=\"pi pi-times \" (click)=\"confirmDate()\" label=\"Close\" class=\" text-center d-block\"></p-button>\r\n </ng-template>\r\n</p-dialog>", styles: ["p-dialog p{font-size:14px;line-height:34px;margin-top:30px}p-dialog .icon-check{text-align:center;color:#fff;background:var(--primarycolor);width:80px;height:80px;display:flex;justify-content:center;align-items:center;border-radius:50%;font-size:30px;font-weight:700;margin:auto}\n"] }]
23
- }], ctorParameters: function () { return []; }, propDecorators: { displayConfirmedDateInfos: [{
24
- type: Input
25
- }], startDateTime: [{
26
- type: Input
27
- }], endDateTime: [{
28
- type: Input
29
- }], globaltranslate: [{
30
- type: Input
31
- }], translate: [{
32
- type: Input
33
- }], moreDates: [{
34
- type: Input
35
- }], closeConfirmedDateInfo: [{
36
- type: Output
37
- }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXdmLXRlc3QtbGliL3NyYy9saWIvc2hhcmVkL2NvbmZpcm1lZC1kYXRlLWluZm9ybWF0aW9uL2NvbmZpcm1lZC1kYXRlLWluZm9ybWF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbi9jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFPbEYsTUFBTSxPQUFPLGlDQUFpQztJQVExQztRQURVLDJCQUFzQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7SUFDL0MsQ0FBQztJQUVqQixXQUFXO1FBQ1QsMkNBQTJDO0lBQzdDLENBQUM7SUFHRCxXQUFXO1FBRVAsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxDQUFDOzsrSEFsQlEsaUNBQWlDO21IQUFqQyxpQ0FBaUMseVZDUDlDLDJrQ0F3Qlc7NEZEakJFLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDSSxnQ0FBZ0M7MEVBS2pDLHlCQUF5QjtzQkFBakMsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksc0JBQXNCO3NCQUEvQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1jb25maXJtZWQtZGF0ZS1pbmZvcm1hdGlvbicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybWVkRGF0ZUluZm9ybWF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95ICB7XHJcbiAgICBASW5wdXQoKSBkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9zITogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHN0YXJ0RGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBASW5wdXQoKSBlbmREYXRlVGltZSE6IGFueTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZSE6IGFueTtcclxuICAgIEBJbnB1dCgpIHRyYW5zbGF0ZSE6IGFueTtcclxuICAgIEBJbnB1dCgpIG1vcmVEYXRlcyE6IGJvb2xlYW47XHJcbiAgICBAT3V0cHV0KCkgY2xvc2VDb25maXJtZWREYXRlSW5mbyA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgIC8vICB0aGlzLmRpc3BsYXlDb25maXJtZWREYXRlSW5mb3MgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uZmlybURhdGUoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuY2xvc2VDb25maXJtZWREYXRlSW5mby5lbWl0KHRydWUpO1xyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8cC1kaWFsb2cgW2hlYWRlcl09XCJnbG9iYWx0cmFuc2xhdGUuaW5mb3JtYXRpb25cIiBbKHZpc2libGUpXT1cImRpc3BsYXlDb25maXJtZWREYXRlSW5mb3NcIiBbbW9kYWxdPVwidHJ1ZVwiIFtzdHlsZV09XCJ7d2lkdGg6ICc1MHZ3J31cIiAob25IaWRlKT1cImNvbmZpcm1EYXRlKClcIiBbbWF4aW1pemFibGVdPVwidHJ1ZVwiIFtiYXNlWkluZGV4XT1cIjEwMDAwXCIgW2RyYWdnYWJsZV09XCJmYWxzZVwiIFtyZXNpemFibGVdPVwiZmFsc2VcIj5cclxuICAgIDxpIGNsYXNzPVwicGkgcGktY2hlY2sgaWNvbi1jaGVja1wiPjwvaT5cclxuXHJcbiAgIFxyXG4gICAgPGRpdiAqbmdJZj1cIm1vcmVEYXRlc1wiIHN0eWxlPVwidGV4dC1hbGlnbjpjZW50ZXIgO1wiPlxyXG4gICAgICAgIDxicj48YnI+XHJcbiAgICAgICAge3t0cmFuc2xhdGUudGV4dE1vcmVEYXRlc319XHJcbiAgICAgICAgPGJyPjxicj5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhbW9yZURhdGVzXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxwPiB7e3RyYW5zbGF0ZS50ZXh0IH19IDxicj4ge3t0cmFuc2xhdGUuc3RhcnR9fSA6IDxpIGNsYXNzPVwicGkgcGktY2FsZW5kYXJcIj48L2k+ICZuYnNwOyA8c3Ryb25nPlxyXG4gICAgICAgICAgICB7e3N0YXJ0RGF0ZVRpbWUgfCAgZGF0ZTogJ2RkIE1NTSB5eXl5J319PC9zdHJvbmc+IDxicj4ge3t0cmFuc2xhdGUuZnJvbX19OiA8c3Ryb25nPjA4OjAwIDwvc3Ryb25nPiA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGJyPjxicj5cclxuICAgICAgICA8cD57e3RyYW5zbGF0ZS5pbmZvRW1haWx9fTwvcD5cclxuXHJcbiAgICA8L2Rpdj5cclxuICAgXHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImZvb3RlclwiPlxyXG4gICAgICAgIDxwLWJ1dHRvbiBpY29uPVwicGkgcGktdGltZXMgXCIgKGNsaWNrKT1cImNvbmZpcm1EYXRlKClcIiBsYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCIgdGV4dC1jZW50ZXIgZC1ibG9ja1wiPjwvcC1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3AtZGlhbG9nPiJdfQ==
@@ -1,167 +0,0 @@
1
- import { Component, Output, Input, EventEmitter, } from '@angular/core';
2
- import { Validators } from '@angular/forms';
3
- import { MessageService } from 'primeng/api';
4
- import { PmJobStatus } from '../../models/pmJobStatus';
5
- import { ReasonCode } from '../../models/reasonCode';
6
- import { ReasonContact } from '../../models/reasonContact';
7
- import { DatePipe } from '@angular/common';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/forms";
10
- import * as i2 from "primeng/api";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "primeng/inputtext";
13
- import * as i5 from "primeng/toast";
14
- import * as i6 from "primeng/inputtextarea";
15
- import * as i7 from "primeng/dropdown";
16
- export class ContactComponent {
17
- constructor(formBuilder, messageService, datePipe) {
18
- this.formBuilder = formBuilder;
19
- this.messageService = messageService;
20
- this.datePipe = datePipe;
21
- this.loading = false;
22
- this.submitted = false;
23
- this.systems = [];
24
- this.selectedSystems = [];
25
- this.sendForm = new EventEmitter();
26
- this.systemContainPm = true;
27
- this.showPm = false;
28
- }
29
- ngOnChanges() {
30
- this.reasons = this.reasons.filter((x) => x.code == ReasonCode.SDI || x.code == ReasonCode.OTH);
31
- this.selectPM(this.selectedSystem);
32
- this.loadForm();
33
- }
34
- // convenience getter for easy access to form fields
35
- get f() {
36
- return this.form.controls;
37
- }
38
- preventStringKeypress(event) {
39
- if (isNaN(Number(String.fromCharCode(event.charCode))) ||
40
- String.fromCharCode(event.charCode) === ' ') {
41
- event.preventDefault();
42
- }
43
- }
44
- onSubmit() {
45
- this.submitted = true;
46
- if (this.form.invalid) {
47
- this.messageService.add({
48
- severity: 'error',
49
- summary: 'Error',
50
- detail: 'The form is invalid',
51
- });
52
- return;
53
- }
54
- console.log(this.form.value.pms);
55
- let detailedPmJob = {};
56
- detailedPmJob.name = this.form.value.name;
57
- detailedPmJob.phone = this.form.value.phone;
58
- detailedPmJob.extentionOrComment = this.form.value.extentionOrComment;
59
- detailedPmJob.email = this.form.value.email;
60
- detailedPmJob.reason = this.form.value.reason.name;
61
- detailedPmJob.comment = this.form.value.message;
62
- if (this.form.value.pms !== undefined) {
63
- detailedPmJob.pmJob = this.form.value.pms;
64
- }
65
- detailedPmJob.systemName = this.selectedSystem.name;
66
- detailedPmJob.systemId = this.selectedSystem.systemId;
67
- detailedPmJob.siteName = this.selectedSystem.siteName;
68
- detailedPmJob.siteCity = this.selectedSystem.siteCity;
69
- detailedPmJob.sitePostalCode = this.selectedSystem.sitePostalCode;
70
- detailedPmJob.toUpdate = true;
71
- if (this.form.value.pms !== undefined) {
72
- detailedPmJob.selectedDate = detailedPmJob.pmJob.startDateTime;
73
- }
74
- detailedPmJob.reasonContact = ReasonContact.Contact;
75
- detailedPmJob.futureStatus = this.slectsFutureStatus(this.form.value.reason.code);
76
- console.log();
77
- this.sendForm.emit(detailedPmJob);
78
- }
79
- slectsFutureStatus(status) {
80
- switch (status) {
81
- case ReasonCode.MPM:
82
- return PmJobStatus.WAITING;
83
- case ReasonCode.RPM:
84
- return PmJobStatus.REPORTED;
85
- case ReasonCode.CPM:
86
- return PmJobStatus.CANCELLED;
87
- case ReasonCode.SDI:
88
- return PmJobStatus.DESINSTALLED;
89
- case ReasonCode.OTH:
90
- return PmJobStatus.OTHER;
91
- default:
92
- return 'Erreur';
93
- }
94
- }
95
- loadForm() {
96
- let name = sessionStorage.getItem('userName');
97
- let email = sessionStorage.getItem('email');
98
- let phone = sessionStorage.getItem('mobilePhoneNumber');
99
- this.form = this.formBuilder.group({
100
- name: [
101
- name !== 'null' ? name : '',
102
- [Validators.required, Validators.minLength(3)],
103
- ],
104
- email: [
105
- email !== 'null' ? email : '',
106
- [Validators.required, Validators.email],
107
- ],
108
- phone: [phone !== 'null' ? phone : '', [Validators.required]],
109
- extentionOrComment: [''],
110
- reason: ['', [Validators.required]],
111
- systems: [[], [Validators.required]],
112
- pms: [[], this.showPm ? [] : []],
113
- message: ['', [Validators.required, Validators.minLength(15)]],
114
- });
115
- }
116
- selectPM(selectedSystem) {
117
- //console.log(selectedSystem)
118
- this.systemContainPm = true;
119
- if (selectedSystem === undefined) {
120
- return;
121
- }
122
- else {
123
- if (selectedSystem.pmJobs.length === 0) {
124
- this.showPm = false;
125
- }
126
- else {
127
- this.selectedSystem = selectedSystem;
128
- this.pmJobs = selectedSystem.pmJobs;
129
- this.pmJobs.forEach((element) => {
130
- if (element.startDateTime) {
131
- if (element.caseType == 'Planned Maintenance') {
132
- element.wokorderDetails = element.workorderNumber + ' - ' + this.datePipe.transform(element.startDateTime, 'dd MMM yyyy') + ' - ' + this.translate.typePlanned;
133
- }
134
- else if (element.caseType == "QARA") {
135
- element.wokorderDetails = element.workorderNumber + ' - ' + this.datePipe.transform(element.startDateTime, 'dd MMM yyyy') + ' - ' + this.translate.typeQARA;
136
- }
137
- else {
138
- element.wokorderDetails = element.workorderNumber + " - " + this.datePipe.transform(element.startDateTime, 'dd MMM yyyy');
139
- }
140
- }
141
- });
142
- this.showPm = true;
143
- }
144
- }
145
- }
146
- }
147
- ContactComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ContactComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MessageService }, { token: i3.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
148
- ContactComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: ContactComponent, selector: "awf-contact", inputs: { loading: "loading", submitted: "submitted", systems: "systems", selectedSystems: "selectedSystems", translate: "translate", reasons: "reasons" }, outputs: { sendForm: "sendForm" }, providers: [MessageService, DatePipe], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-6\">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n <div class=\"p-col-12 p-md-6\">\r\n <span class=\"titre\">{{translate.placeholderextentionOrComment}}</span>:\r\n <input [placeholder]=\"translate.placeholderextentionOrComment\" type=\"text\" pInputText formControlName=\"extentionOrComment\">\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n \r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span>:\r\n <p-dropdown \r\n [options]=\"pmJobs\" \r\n [placeholder]=\"translate.selectPM\" \r\n [(ngModel)]=\"selectedPm\" \r\n [optionLabel]=\"'wokorderDetails'\" \r\n formControlName=\"pms\" \r\n optionDisabled=\"inactive\" \r\n [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\">\r\n </p-dropdown> \r\n <!-- <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>-->\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]" }, { kind: "component", type: i5.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "style", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "directive", type: i6.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize"], outputs: ["onResize"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.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: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i7.Dropdown, selector: "p-dropdown", inputs: ["scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "filterPlaceholder", "filterLocale", "inputId", "selectId", "dataKey", "filterBy", "autofocus", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "overlayDirection", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "options", "filterValue"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
149
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: ContactComponent, decorators: [{
150
- type: Component,
151
- args: [{ selector: 'awf-contact', providers: [MessageService, DatePipe], template: "<div *ngIf=\"translate && reasons \">\r\n <section class=\"pt-0\">\r\n <div class=\"app-section-header-img\">\r\n <div class=\"container pt-4\">\r\n <div class=\"\">\r\n <h2>{{translate.title}} </h2>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n <section class=\"py-5 background-light\">\r\n <div class=\"container px-lg-5\">\r\n <div class=\"row align-items-center\">\r\n <div class=\"col-md-6\">\r\n <div class=\"container-contact100\">\r\n <div class=\"wrap-contact100\">\r\n <form [formGroup]=\"form\" *ngIf=\"form && systems && reasons\" class=\"contact100-form validate-form\">\r\n <span class=\"contact100-form-title\">{{translate.title}} </span>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderName}}</span> <span class=\"requis\">* </span>:\r\n <input [placeholder]=\"translate.placeholderName\" type=\"text\" pInputText formControlName=\"name\" [ngClass]=\"{ 'is-invalid': submitted && f.name.invalid }\">\r\n <div *ngIf=\"submitted && f.name.errors\">\r\n <div class=\"requis\" *ngIf=\"f.name.errors.required\">{{translate.requiredName}}</div>\r\n <div class=\"requis\" *ngIf=\"f.name.errors.minlength\">{{translate.requiredNameMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderEmail}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderEmail\" type=\"text\" pInputText formControlName=\"email\" [ngClass]=\"{ 'is-invalid': submitted && f.email.invalid }\">\r\n <div *ngIf=\"submitted && f.email.errors\">\r\n <div class=\"requis\" *ngIf=\"f.email.errors.required\">{{translate.requiredEmail}}</div>\r\n <div class=\"requis\" *ngIf=\"f.email.errors.email\">{{translate.requiredEmailFormat}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-6\">\r\n <span class=\"titre\">{{translate.placeholderPhone}}</span> <span class=\"requis\">*</span>:\r\n <input [placeholder]=\"translate.placeholderPhone\" type=\"text\" pInputText formControlName=\"phone\" [ngClass]=\"{ 'is-invalid': submitted && f.phone.invalid }\" (keypress)=\"preventStringKeypress($event)\">\r\n <div *ngIf=\"submitted && f.phone.errors\">\r\n <div class=\"requis\" *ngIf=\"f.phone.errors.required\">{{translate.requiredPhone}}</div>\r\n </div>\r\n </div>\r\n <div class=\"p-col-12 p-md-6\">\r\n <span class=\"titre\">{{translate.placeholderextentionOrComment}}</span>:\r\n <input [placeholder]=\"translate.placeholderextentionOrComment\" type=\"text\" pInputText formControlName=\"extentionOrComment\">\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedSystems}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown (click)=\"selectPM(selectedSystem)\" [options]=\"systems\" [placeholder]=\"translate.selectSystem\" [(ngModel)]=\"selectedSystem\" [optionLabel]=\"'name'\" formControlName=\"systems\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.systems.invalid }\"></p-dropdown> \r\n \r\n <div *ngIf=\"submitted && f.systems.errors\">\r\n <div class=\"requis\" *ngIf=\"f.systems.errors.required\">{{translate.requiredSystem}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\" *ngIf=\"showPm\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.RelatedPMs}}</span>:\r\n <p-dropdown \r\n [options]=\"pmJobs\" \r\n [placeholder]=\"translate.selectPM\" \r\n [(ngModel)]=\"selectedPm\" \r\n [optionLabel]=\"'wokorderDetails'\" \r\n formControlName=\"pms\" \r\n optionDisabled=\"inactive\" \r\n [ngClass]=\"{ 'is-invalid': submitted && f.pms.invalid }\">\r\n </p-dropdown> \r\n <!-- <div *ngIf=\"submitted && f.pms.errors\">\r\n <div class=\"requis\" *ngIf=\"f.pms.errors.required\">{{translate.requiredPM }}</div>\r\n </div>-->\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.reason}}</span> <span class=\"requis\">*</span>:\r\n <p-dropdown [options]=\"reasons\" [placeholder]=\"translate.selectReason\" [(ngModel)]=\"selectedReason\" optionLabel=\"name\" formControlName=\"reason\" optionDisabled=\"inactive\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"></p-dropdown>\r\n <!-- <input [placeholder]=\"translate.reason\" type=\"text\" pInputText formControlName=\"reason\" [ngClass]=\"{ 'is-invalid': submitted && f.reason.invalid }\"> -->\r\n <div *ngIf=\"submitted && f.reason.errors\">\r\n <div class=\"requis\" *ngIf=\"f.reason.errors.required\">{{translate.reasonRequired}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"p-grid p-fluid p-mt-2\">\r\n <div class=\"p-col-12 p-md-12 \">\r\n <span class=\"titre\">{{translate.placeholderMessage}} </span> <span class=\"requis\">*</span>:\r\n <textarea pInputTextarea style=\" min-height:100px;height:100%;width:100%;\" [placeholder]=\"translate.placeholderMessage +'...'\" formControlName=\"message\" [ngClass]=\"{ 'is-invalid': submitted && f.message.errors }\"></textarea>\r\n <div *ngIf=\"submitted && f.message.errors\">\r\n <div class=\"requis\" *ngIf=\"f.message.errors.required\">{{translate.requiredMessage}}</div>\r\n <div class=\"requis\" *ngIf=\"f.message.errors.minlength\">{{translate.requiredMessageMin}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n <br>\r\n <div class=\"container-contact100-form-btn\">\r\n <div class=\"wrap-contact100-form-btn\">\r\n <div class=\"contact100-form-bgbtn\"></div>\r\n <button class=\"btn-warranty mt-3\" (click)=\"onSubmit()\">\r\n {{translate.send}}\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-6 contact\">\r\n <iframe src=\"https://maps.google.com/maps?q=283,%20Rue%20De%20la%20Miniere-BP34%20%2078533%20BUC%20%E2%80%93%20Cedex&amp;t=&amp;z=13&amp;ie=UTF8&amp;iwloc=&amp;output=embed\" width=\"100%\" height=\"250\" style=\"border:0;\" allowfullscreen=\"\" loading=\"lazy\"></iframe>\r\n <h6 class=\"fs-4 mt-3\"> {{translate.information}}</h6>\r\n <section class=\"mb-4\">\r\n <div class=\"\">\r\n <i class=\"pi pi-envelope\"></i><label> &nbsp; {{translate.emailText}}</label>\r\n <p class=\"\">{{translate.email}} </p>\r\n </div>\r\n <div class=\" mt-4\">\r\n <i class=\"pi pi-map\"></i><label> &nbsp; {{translate.addressText}}</label>\r\n <p class=\"\">{{translate.adress}}</p>\r\n <p class=\"\">{{translate.town}}</p>\r\n <p class=\"\">{{translate.country}}</p>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </section>\r\n</div>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n", styles: ["h1,h2,h3,h4,h5,h6,p,span,label,::placeholder{font-family:var(--font)}.app-section-header-img{background-image:url(/assets/img/GEPortal/contact.png);background-repeat:no-repeat;background-size:cover;background-position:center center;display:flex;align-items:center;height:237px}@media (max-width: var(--smallscreen)){.app-section-header-img{height:auto}}.app-section-header-img h2{font-size:48px;font-family:var(--font);font-weight:600;color:#fff;text-align:center}@media (max-width: var(--smallscreen)){.app-section-header-img h2{font-size:30px}}@media (max-width: var(--smallscreen)){.app-section-header-img{padding-left:15px;padding-right:15px}}@media (max-width: var(--tinyscreen)){.app-section-header-img{height:200px}}h2{font-weight:600}a:focus{outline:none!important}a:hover{text-decoration:none}input{outline:none;border:none}input.input100{height:62px;padding:0 20px 0 58px}input[type=number]{appearance:none;-webkit-appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}textarea{outline:none;border:none}textarea.input100{min-height:199px;padding:19px 20px 0 23px}textarea:focus,input:focus{border-color:transparent!important}.container-contact100{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;padding:15px}.wrap-contact100{width:550px;background:transparent;padding:30px 0 80px}.contact100-form-title{display:block;font-family:var(--font);font-size:30px;color:#43383e;line-height:1.2;text-align:left;padding-bottom:35px}.wrap-input100{width:100%;position:relative;background-color:#fff;margin-bottom:17px}.label-input100{display:flex;justify-content:center;align-items:center;width:58px;height:62px;position:absolute;top:0;left:0;cursor:pointer;font-size:18px;color:#999}.input100{display:block;width:100%;background:transparent;font-size:15px;color:#43383e;line-height:1.2;padding:0 5px}@media (max-width: var(--smallscreen)){.contact iframe{width:auto}}.contact label{margin-left:10px;color:#a2a2a2;font-weight:700}.contact i{color:#a2a2a2;font-weight:700}.contact .social li{display:inline;padding:10px}\n"] }]
152
- }], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.MessageService }, { type: i3.DatePipe }]; }, propDecorators: { loading: [{
153
- type: Input
154
- }], submitted: [{
155
- type: Input
156
- }], systems: [{
157
- type: Input
158
- }], selectedSystems: [{
159
- type: Input
160
- }], translate: [{
161
- type: Input
162
- }], reasons: [{
163
- type: Input
164
- }], sendForm: [{
165
- type: Output
166
- }] } });
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvY29udGFjdC9jb250YWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9jb250YWN0L2NvbnRhY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBRU4sS0FBSyxFQUNMLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQTBCLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFJN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7QUFRM0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdCM0IsWUFDVSxXQUF3QixFQUN4QixjQUE4QixFQUM5QixRQUFrQjtRQUZsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWxCbkIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFHOUIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBTTNELG9C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QUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUNwQjtTQUNGO0lBQ0gsQ0FBQzs7OEdBckpVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHFPQUZoQixDQUFDLGNBQWMsRUFBQyxRQUFRLENBQUMsK0NDdkJ0Qyx1b1ZBd0lBOzRGRC9HYSxnQkFBZ0I7a0JBTjVCLFNBQVM7K0JBQ0UsYUFBYSxhQUdaLENBQUMsY0FBYyxFQUFDLFFBQVEsQ0FBQztzSkFHM0IsT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE91dHB1dCxcclxuICBPbkNoYW5nZXMsXHJcbiAgSW5wdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgRGV0YWlsZWRQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9kZXRhaWxlZFBtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFBtSm9iU3RhdHVzIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BtSm9iU3RhdHVzJztcclxuaW1wb3J0IHsgUmVhc29uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3JlYXNvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFJlYXNvbkNvZGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29kZSc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcbmltcG9ydCB7IFN5c3RlbSB9IGZyb20gJy4uLy4uL21vZGVscy9zeXN0ZW0nO1xyXG5pbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F3Zi1jb250YWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29udGFjdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29udGFjdC5jb21wb25lbnQuY3NzJ10sXHJcbiAgcHJvdmlkZXJzOiBbTWVzc2FnZVNlcnZpY2UsRGF0ZVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29udGFjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN5c3RlbXM6IFN5c3RlbVtdID0gW107XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRTeXN0ZW1zOiBTeXN0ZW1bXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZSE6IGFueTtcclxuICBASW5wdXQoKSByZWFzb25zITogUmVhc29uW107XHJcbiAgQE91dHB1dCgpIHNlbmRGb3JtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBmb3JtITogRm9ybUdyb3VwO1xyXG4gIHNlbGVjdGVkUmVhc29uITogYW55O1xyXG4gIHNlbGVjdGVkU3lzdGVtITogU3lzdGVtO1xyXG4gIHNlbGVjdGVkUG0hOiBhbnk7XHJcbiAgcG1Kb2JzITogYW55W107XHJcbiAgc3lzdGVtQ29udGFpblBtID0gdHJ1ZTtcclxuXHJcbiAgc2hvd1BtID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcclxuXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcclxuICAgIHRoaXMucmVhc29ucyA9IHRoaXMucmVhc29ucy5maWx0ZXIoXHJcbiAgICAgICh4KSA9PiB4LmNvZGUgPT0gUmVhc29uQ29kZS5TREkgfHwgeC5jb2RlID09IFJlYXNvbkNvZGUuT1RIXHJcbiAgICApO1xyXG4gICAgdGhpcy5zZWxlY3RQTSh0aGlzLnNlbGVjdGVkU3lzdGVtKTtcclxuICAgIHRoaXMubG9hZEZvcm0oKTtcclxuICB9XHJcblxyXG4gIC8vIGNvbnZlbmllbmNlIGdldHRlciBmb3IgZWFzeSBhY2Nlc3MgdG8gZm9ybSBmaWVsZHNcclxuICBnZXQgZigpIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50U3RyaW5nS2V5cHJlc3MoZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICBpc05hTihOdW1iZXIoU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSkpKSB8fFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKGV2ZW50LmNoYXJDb2RlKSA9PT0gJyAnXHJcbiAgICApIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xyXG5cclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7XHJcbiAgICAgICAgc2V2ZXJpdHk6ICdlcnJvcicsXHJcbiAgICAgICAgc3VtbWFyeTogJ0Vycm9yJyxcclxuICAgICAgICBkZXRhaWw6ICdUaGUgZm9ybSBpcyBpbnZhbGlkJyxcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZyh0aGlzLmZvcm0udmFsdWUucG1zKTtcclxuICAgIGxldCBkZXRhaWxlZFBtSm9iID0ge30gYXMgRGV0YWlsZWRQbUpvYjtcclxuICAgIGRldGFpbGVkUG1Kb2IubmFtZSA9IHRoaXMuZm9ybS52YWx1ZS5uYW1lO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5waG9uZSA9IHRoaXMuZm9ybS52YWx1ZS5waG9uZTtcclxuICAgIGRldGFpbGVkUG1Kb2IuZXh0ZW50aW9uT3JDb21tZW50ID0gdGhpcy5mb3JtLnZhbHVlLmV4dGVudGlvbk9yQ29tbWVudDtcclxuICAgIGRldGFpbGVkUG1Kb2IuZW1haWwgPSB0aGlzLmZvcm0udmFsdWUuZW1haWw7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnJlYXNvbiA9IHRoaXMuZm9ybS52YWx1ZS5yZWFzb24ubmFtZTtcclxuICAgIGRldGFpbGVkUG1Kb2IuY29tbWVudCA9IHRoaXMuZm9ybS52YWx1ZS5tZXNzYWdlO1xyXG4gICAgaWYgKHRoaXMuZm9ybS52YWx1ZS5wbXMgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBkZXRhaWxlZFBtSm9iLnBtSm9iID0gdGhpcy5mb3JtLnZhbHVlLnBtcztcclxuICAgIH1cclxuICAgIGRldGFpbGVkUG1Kb2Iuc3lzdGVtTmFtZSA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0ubmFtZTtcclxuICAgIGRldGFpbGVkUG1Kb2Iuc3lzdGVtSWQgPSB0aGlzLnNlbGVjdGVkU3lzdGVtLnN5c3RlbUlkO1xyXG4gICAgZGV0YWlsZWRQbUpvYi5zaXRlTmFtZSA9IHRoaXMuc2VsZWN0ZWRTeXN0ZW0uc2l0ZU5hbWU7XHJcbiAgICBkZXRhaWxlZFBtSm9iLnNpdGVDaXR5ID0gdGhpcy5zZWxlY3RlZFN5c3RlbS5zaXRlQ2l0eTtcclxuICAgIGRldGFpbGVkUG1Kb2Iuc2l0ZVBvc3RhbENvZGUgPSB0aGlzLnNlbGVjdGVkU3lzdGVtLnNpdGVQb3N0YWxDb2RlO1xyXG4gICAgZGV0YWlsZWRQbUpvYi50b1VwZGF0ZSA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5mb3JtLnZhbHVlLnBtcyAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGRldGFpbGVkUG1Kb2Iuc2VsZWN0ZWREYXRlID0gZGV0YWlsZWRQbUpvYi5wbUpvYi5zdGFydERhdGVUaW1lO1xyXG4gICAgfVxyXG4gICAgZGV0YWlsZWRQbUpvYi5yZWFzb25Db250YWN0ID0gUmVhc29uQ29udGFjdC5Db250YWN0O1xyXG4gICAgZGV0YWlsZWRQbUpvYi5mdXR1cmVTdGF0dXMgPSB0aGlzLnNsZWN0c0Z1dHVyZVN0YXR1cyhcclxuICAgICAgdGhpcy5mb3JtLnZhbHVlLnJlYXNvbi5jb2RlXHJcbiAgICApO1xyXG4gICAgY29uc29sZS5sb2coKTtcclxuICAgIHRoaXMuc2VuZEZvcm0uZW1pdChkZXRhaWxlZFBtSm9iKTtcclxuICB9XHJcblxyXG4gIHNsZWN0c0Z1dHVyZVN0YXR1cyhzdGF0dXM6IGFueSkge1xyXG4gICAgc3dpdGNoIChzdGF0dXMpIHtcclxuICAgICAgY2FzZSBSZWFzb25Db2RlLk1QTTpcclxuICAgICAgICByZXR1cm4gUG1Kb2JTdGF0dXMuV0FJVElORztcclxuICAgICAgY2FzZSBSZWFzb25Db2RlLlJQTTpcclxuICAgICAgICByZXR1cm4gUG1Kb2JTdGF0dXMuUkVQT1JURUQ7XHJcbiAgICAgIGNhc2UgUmVhc29uQ29kZS5DUE06XHJcbiAgICAgICAgcmV0dXJuIFBtSm9iU3RhdHVzLkNBTkNFTExFRDtcclxuICAgICAgY2FzZSBSZWFzb25Db2RlLlNESTpcclxuICAgICAgICByZXR1cm4gUG1Kb2JTdGF0dXMuREVTSU5TVEFMTEVEO1xyXG4gICAgICBjYXNlIFJlYXNvbkNvZGUuT1RIOlxyXG4gICAgICAgIHJldHVybiBQbUpvYlN0YXR1cy5PVEhFUjtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gJ0VycmV1cic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkRm9ybSgpIHtcclxuICAgIGxldCBuYW1lID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgndXNlck5hbWUnKSBhcyBzdHJpbmc7XHJcbiAgICBsZXQgZW1haWwgPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdlbWFpbCcpIGFzIHN0cmluZztcclxuICAgIGxldCBwaG9uZSA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ21vYmlsZVBob25lTnVtYmVyJykgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5mb3JtID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIG5hbWU6IFtcclxuICAgICAgICBuYW1lICE9PSAnbnVsbCcgPyBuYW1lIDogJycsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXSxcclxuICAgICAgXSxcclxuICAgICAgZW1haWw6IFtcclxuICAgICAgICBlbWFpbCAhPT0gJ251bGwnID8gZW1haWwgOiAnJyxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIHBob25lOiBbcGhvbmUgIT09ICdudWxsJyA/IHBob25lIDogJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIGV4dGVudGlvbk9yQ29tbWVudDogWycnXSxcclxuICAgICAgcmVhc29uOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXHJcbiAgICAgIHN5c3RlbXM6IFtbXSwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcclxuICAgICAgcG1zOiBbW10sIHRoaXMuc2hvd1BtID8gW10gOiBbXV0sXHJcbiAgICAgIG1lc3NhZ2U6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDE1KV1dLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZWxlY3RQTShzZWxlY3RlZFN5c3RlbTogYW55KSB7XHJcbiAgICAvL2NvbnNvbGUubG9nKHNlbGVjdGVkU3lzdGVtKVxyXG4gICAgdGhpcy5zeXN0ZW1Db250YWluUG0gPSB0cnVlO1xyXG4gICAgaWYgKHNlbGVjdGVkU3lzdGVtID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHNlbGVjdGVkU3lzdGVtLnBtSm9icy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICB0aGlzLnNob3dQbSA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTeXN0ZW0gPSBzZWxlY3RlZFN5c3RlbTtcclxuICAgICAgICB0aGlzLnBtSm9icyA9IHNlbGVjdGVkU3lzdGVtLnBtSm9icztcclxuICAgICAgICB0aGlzLnBtSm9icy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5zdGFydERhdGVUaW1lKSB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNhc2VUeXBlID09ICdQbGFubmVkIE1haW50ZW5hbmNlJykge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQud29rb3JkZXJEZXRhaWxzID0gZWxlbWVudC53b3Jrb3JkZXJOdW1iZXIgKyAnIC0gJyArICB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShlbGVtZW50LnN0YXJ0RGF0ZVRpbWUsICdkZCBNTU0geXl5eScpICsgJyAtICcgKyB0aGlzLnRyYW5zbGF0ZS50eXBlUGxhbm5lZDtcclxuICAgICAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5jYXNlVHlwZSA9PVwiUUFSQVwiKXtcclxuICAgICAgICAgICAgICBlbGVtZW50Lndva29yZGVyRGV0YWlscyA9IGVsZW1lbnQud29ya29yZGVyTnVtYmVyICsgJyAtICcgKyAgdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZWxlbWVudC5zdGFydERhdGVUaW1lLCAnZGQgTU1NIHl5eXknKSArICcgLSAnICsgdGhpcy50cmFuc2xhdGUudHlwZVFBUkE7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICBlbGVtZW50Lndva29yZGVyRGV0YWlscyA9IGVsZW1lbnQud29ya29yZGVyTnVtYmVyICsgXCIgLSBcIisgIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGVsZW1lbnQuc3RhcnREYXRlVGltZSwgJ2RkIE1NTSB5eXl5Jyk7ICAgIFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zaG93UG0gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgKm5nSWY9XCJ0cmFuc2xhdGUgJiYgcmVhc29ucyBcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwicHQtMFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VjdGlvbi1oZWFkZXItaW1nXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgcHQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMj57e3RyYW5zbGF0ZS50aXRsZX19IDwvaDI+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cInB5LTUgYmFja2dyb3VuZC1saWdodFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgcHgtbGctNVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1jb250YWN0MTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwLWNvbnRhY3QxMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwiZm9ybSAmJiBzeXN0ZW1zICYmIHJlYXNvbnNcIiBjbGFzcz1cImNvbnRhY3QxMDAtZm9ybSB2YWxpZGF0ZS1mb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjb250YWN0MTAwLWZvcm0tdGl0bGVcIj57e3RyYW5zbGF0ZS50aXRsZX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZX19PC9zcGFuPiA8c3BhbiBjbGFzcz1cInJlcXVpc1wiPiogPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgcElucHV0VGV4dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLm5hbWUuaW52YWxpZCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYubmFtZS5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWROYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLm5hbWUuZXJyb3JzLm1pbmxlbmd0aFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkTmFtZU1pbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlckVtYWlsXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cImVtYWlsXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLmVtYWlsLmludmFsaWQgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLmVtYWlsLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYuZW1haWwuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRFbWFpbH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5lbWFpbC5lcnJvcnMuZW1haWxcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZEVtYWlsRm9ybWF0fX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlclBob25lXCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cInBob25lXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBob25lLmludmFsaWQgfVwiIChrZXlwcmVzcyk9XCJwcmV2ZW50U3RyaW5nS2V5cHJlc3MoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnBob25lLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucGhvbmUuZXJyb3JzLnJlcXVpcmVkXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRQaG9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5wbGFjZWhvbGRlcmV4dGVudGlvbk9yQ29tbWVudH19PC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnBsYWNlaG9sZGVyZXh0ZW50aW9uT3JDb21tZW50XCIgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IGZvcm1Db250cm9sTmFtZT1cImV4dGVudGlvbk9yQ29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLlJlbGF0ZWRTeXN0ZW1zfX08L3NwYW4+IDxzcGFuIGNsYXNzPVwicmVxdWlzXCI+Kjwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biAoY2xpY2spPVwic2VsZWN0UE0oc2VsZWN0ZWRTeXN0ZW0pXCIgW29wdGlvbnNdPVwic3lzdGVtc1wiIFtwbGFjZWhvbGRlcl09XCJ0cmFuc2xhdGUuc2VsZWN0U3lzdGVtXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFN5c3RlbVwiIFtvcHRpb25MYWJlbF09XCInbmFtZSdcIiBmb3JtQ29udHJvbE5hbWU9XCJzeXN0ZW1zXCIgIG9wdGlvbkRpc2FibGVkPVwiaW5hY3RpdmVcIiBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGYuc3lzdGVtcy5pbnZhbGlkIH1cIj48L3AtZHJvcGRvd24+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnN5c3RlbXMuZXJyb3JzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlcXVpc1wiICpuZ0lmPVwiZi5zeXN0ZW1zLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlcXVpcmVkU3lzdGVtfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiICpuZ0lmPVwic2hvd1BtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLlJlbGF0ZWRQTXN9fTwvc3Bhbj46XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1kcm9wZG93biAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwicG1Kb2JzXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5zZWxlY3RQTVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRQbVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCInd29rb3JkZXJEZXRhaWxzJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBtc1wiICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25EaXNhYmxlZD1cImluYWN0aXZlXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnBtcy5pbnZhbGlkIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cInN1Ym1pdHRlZCAmJiBmLnBtcy5lcnJvcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVxdWlzXCIgKm5nSWY9XCJmLnBtcy5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZFBNIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4tLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtZ3JpZCBwLWZsdWlkIHAtbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2wtMTIgcC1tZC0xMiBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0cmVcIj57e3RyYW5zbGF0ZS5yZWFzb259fTwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duIFtvcHRpb25zXT1cInJlYXNvbnNcIiBbcGxhY2Vob2xkZXJdPVwidHJhbnNsYXRlLnNlbGVjdFJlYXNvblwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRSZWFzb25cIiBvcHRpb25MYWJlbD1cIm5hbWVcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWFzb25cIiAgb3B0aW9uRGlzYWJsZWQ9XCJpbmFjdGl2ZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5yZWFzb24uaW52YWxpZCB9XCI+PC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5yZWFzb25cIiB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgZm9ybUNvbnRyb2xOYW1lPVwicmVhc29uXCIgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmLnJlYXNvbi5pbnZhbGlkIH1cIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3VibWl0dGVkICYmIGYucmVhc29uLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYucmVhc29uLmVycm9ycy5yZXF1aXJlZFwiPnt7dHJhbnNsYXRlLnJlYXNvblJlcXVpcmVkfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1ncmlkIHAtZmx1aWQgcC1tdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbC0xMiBwLW1kLTEyIFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRyZVwiPnt7dHJhbnNsYXRlLnBsYWNlaG9sZGVyTWVzc2FnZX19IDwvc3Bhbj4gPHNwYW4gY2xhc3M9XCJyZXF1aXNcIj4qPC9zcGFuPjpcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBwSW5wdXRUZXh0YXJlYSBzdHlsZT1cIiBtaW4taGVpZ2h0OjEwMHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7XCIgW3BsYWNlaG9sZGVyXT1cInRyYW5zbGF0ZS5wbGFjZWhvbGRlck1lc3NhZ2UgKycuLi4nXCIgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9ycyB9XCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJtaXR0ZWQgJiYgZi5tZXNzYWdlLmVycm9yc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYubWVzc2FnZS5lcnJvcnMucmVxdWlyZWRcIj57e3RyYW5zbGF0ZS5yZXF1aXJlZE1lc3NhZ2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXF1aXNcIiAqbmdJZj1cImYubWVzc2FnZS5lcnJvcnMubWlubGVuZ3RoXCI+e3t0cmFuc2xhdGUucmVxdWlyZWRNZXNzYWdlTWlufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItY29udGFjdDEwMC1mb3JtLWJ0blwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcC1jb250YWN0MTAwLWZvcm0tYnRuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFjdDEwMC1mb3JtLWJnYnRuXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuLXdhcnJhbnR5IG10LTNcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dHJhbnNsYXRlLnNlbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBjb250YWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSBzcmM9XCJodHRwczovL21hcHMuZ29vZ2xlLmNvbS9tYXBzP3E9MjgzLCUyMFJ1ZSUyMERlJTIwbGElMjBNaW5pZXJlLUJQMzQlMjAlMjA3ODUzMyUyMEJVQyUyMCVFMiU4MCU5MyUyMENlZGV4JmFtcDt0PSZhbXA7ej0xMyZhbXA7aWU9VVRGOCZhbXA7aXdsb2M9JmFtcDtvdXRwdXQ9ZW1iZWRcIiB3aWR0aD1cIjEwMCVcIiBoZWlnaHQ9XCIyNTBcIiBzdHlsZT1cImJvcmRlcjowO1wiIGFsbG93ZnVsbHNjcmVlbj1cIlwiIGxvYWRpbmc9XCJsYXp5XCI+PC9pZnJhbWU+XHJcbiAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnMtNCBtdC0zXCI+IHt7dHJhbnNsYXRlLmluZm9ybWF0aW9ufX08L2g2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwibWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cInBpIHBpLWVudmVsb3BlXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmVtYWlsVGV4dH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUuZW1haWx9fSA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIG10LTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktbWFwXCI+PC9pPjxsYWJlbD4gJm5ic3A7IHt7dHJhbnNsYXRlLmFkZHJlc3NUZXh0fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5hZHJlc3N9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiXCI+e3t0cmFuc2xhdGUudG93bn19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJcIj57e3RyYW5zbGF0ZS5jb3VudHJ5fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcbjwvZGl2PlxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG4iXX0=