awf-test-lib 0.1.12 → 0.1.13
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.
- package/esm2020/awf-test-lib.mjs +5 -0
- package/esm2020/lib/core/core-routing.module.mjs +18 -0
- package/esm2020/lib/core/core.module.mjs +51 -0
- package/esm2020/lib/core/menu/menu.component.mjs +40 -0
- package/esm2020/lib/core/menu-consomer/menu-consomer.component.mjs +27 -0
- package/esm2020/lib/core/menu-ge-portal/menu-ge-portal.component.mjs +31 -0
- package/esm2020/lib/core/menu-warranty/menu-warranty.component.mjs +35 -0
- package/esm2020/lib/core/not-found/not-found.component.mjs +19 -0
- package/esm2020/lib/core/top-bar/top-bar.component.mjs +41 -0
- package/esm2020/lib/models/account.model.mjs +3 -0
- package/esm2020/lib/models/alternativeDate.model.mjs +3 -0
- package/esm2020/lib/models/applicationName.mjs +7 -0
- package/esm2020/lib/models/cancelPMMailRequest.model.mjs +4 -0
- package/esm2020/lib/models/customObject.model.mjs +3 -0
- package/esm2020/lib/models/detailedPmJob.model.mjs +3 -0
- package/esm2020/lib/models/emailStatus.mjs +6 -0
- package/esm2020/lib/models/emailType.mjs +15 -0
- package/esm2020/lib/models/eventStatus.mjs +9 -0
- package/esm2020/lib/models/field.mjs +9 -0
- package/esm2020/lib/models/language.mjs +6 -0
- package/esm2020/lib/models/mailRequest.model.mjs +3 -0
- package/esm2020/lib/models/pMGroupedJob.model.mjs +3 -0
- package/esm2020/lib/models/pmJob.model.mjs +3 -0
- package/esm2020/lib/models/pmJobRequest.model.mjs +3 -0
- package/esm2020/lib/models/pmJobStatus.mjs +17 -0
- package/esm2020/lib/models/reason.model.mjs +3 -0
- package/esm2020/lib/models/reasonCode.mjs +9 -0
- package/esm2020/lib/models/reasonContact.mjs +8 -0
- package/esm2020/lib/models/reportDateMailRequest.model.mjs +4 -0
- package/esm2020/lib/models/role.mjs +7 -0
- package/esm2020/lib/models/service.model.mjs +3 -0
- package/esm2020/lib/models/serviceName.mjs +12 -0
- package/esm2020/lib/models/socialLoginRequest.model.mjs +3 -0
- package/esm2020/lib/models/socialMadia.mjs +5 -0
- package/esm2020/lib/models/stingBoolean.mjs +6 -0
- package/esm2020/lib/models/system.mjs +3 -0
- package/esm2020/lib/models/theme.model.mjs +2 -0
- package/esm2020/lib/models/tokenStatus.mjs +7 -0
- package/esm2020/lib/models/warranty.mjs +3 -0
- package/esm2020/lib/pipes/pipes/pipes.module.mjs +21 -0
- package/esm2020/lib/pipes/subrtring-w.pipe.mjs +20 -0
- package/esm2020/lib/pipes/substring.pipe.mjs +16 -0
- package/esm2020/lib/shared/choose-another-date/choose-another-date.component.mjs +110 -0
- package/esm2020/lib/shared/confirm-dialog/confirm-dialog.component.mjs +44 -0
- package/esm2020/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.mjs +42 -0
- package/esm2020/lib/shared/confirmed-date-information/confirmed-date-information.component.mjs +38 -0
- package/esm2020/lib/shared/contact/contact.component.mjs +162 -0
- package/esm2020/lib/shared/contact-support/contact-support.component.mjs +160 -0
- package/esm2020/lib/shared/dashboard/dashboard.component.mjs +34 -0
- package/esm2020/lib/shared/maintenance-list/maintenance-list.component.mjs +347 -0
- package/esm2020/lib/shared/shared-routing.module.mjs +18 -0
- package/esm2020/lib/shared/shared.module.mjs +144 -0
- package/esm2020/lib/shared/show-links/show-links.component.mjs +81 -0
- package/esm2020/lib/shared/system-list/system-list.component.mjs +32 -0
- package/esm2020/public-api.mjs +48 -0
- package/fesm2015/awf-test-lib.mjs +1560 -0
- package/fesm2015/awf-test-lib.mjs.map +1 -0
- package/fesm2020/awf-test-lib.mjs +1556 -0
- package/fesm2020/awf-test-lib.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/core/core-routing.module.d.ts +7 -0
- package/lib/core/core.module.d.ts +15 -0
- package/lib/core/menu/menu.component.d.ts +17 -0
- package/lib/core/menu-consomer/menu-consomer.component.d.ts +12 -0
- package/lib/core/menu-ge-portal/menu-ge-portal.component.d.ts +13 -0
- package/lib/core/menu-warranty/menu-warranty.component.d.ts +15 -0
- package/lib/core/not-found/not-found.component.d.ts +10 -0
- package/lib/core/top-bar/top-bar.component.d.ts +13 -0
- package/{src/lib/models/account.model.ts → lib/models/account.model.d.ts} +3 -6
- package/lib/models/alternativeDate.model.d.ts +6 -0
- package/lib/models/applicationName.d.ts +5 -0
- package/{src/lib/models/cancelPMMailRequest.model.ts → lib/models/cancelPMMailRequest.model.d.ts} +1 -3
- package/lib/models/customObject.model.d.ts +3 -0
- package/lib/models/detailedPmJob.model.d.ts +23 -0
- package/lib/models/emailStatus.d.ts +4 -0
- package/lib/models/emailType.d.ts +13 -0
- package/lib/models/eventStatus.d.ts +7 -0
- package/lib/models/field.d.ts +7 -0
- package/lib/models/language.d.ts +4 -0
- package/{src/lib/models/mailRequest.model.ts → lib/models/mailRequest.model.d.ts} +1 -3
- package/lib/models/pMGroupedJob.model.d.ts +3 -0
- package/{src/lib/models/pmJob.model.ts → lib/models/pmJob.model.d.ts} +6 -7
- package/lib/models/pmJobRequest.model.d.ts +5 -0
- package/{src/lib/models/pmJobStatus.ts → lib/models/pmJobStatus.d.ts} +3 -8
- package/lib/models/reason.model.d.ts +4 -0
- package/lib/models/reasonCode.d.ts +7 -0
- package/lib/models/reasonContact.d.ts +6 -0
- package/{src/lib/models/reportDateMailRequest.model.ts → lib/models/reportDateMailRequest.model.d.ts} +1 -3
- package/lib/models/role.d.ts +5 -0
- package/lib/models/service.model.d.ts +8 -0
- package/lib/models/serviceName.d.ts +10 -0
- package/{src/lib/models/socialLoginRequest.model.ts → lib/models/socialLoginRequest.model.d.ts} +1 -1
- package/lib/models/socialMadia.d.ts +3 -0
- package/lib/models/stingBoolean.d.ts +4 -0
- package/lib/models/system.d.ts +14 -0
- package/{src/lib/models/theme.model.ts → lib/models/theme.model.d.ts} +11 -18
- package/lib/models/tokenStatus.d.ts +5 -0
- package/lib/models/warranty.d.ts +17 -0
- package/lib/pipes/pipes/pipes.module.d.ts +9 -0
- package/lib/pipes/subrtring-w.pipe.d.ts +7 -0
- package/lib/pipes/substring.pipe.d.ts +7 -0
- package/lib/shared/choose-another-date/choose-another-date.component.d.ts +33 -0
- package/lib/shared/confirm-dialog/confirm-dialog.component.d.ts +20 -0
- package/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.d.ts +19 -0
- package/lib/shared/confirmed-date-information/confirmed-date-information.component.d.ts +16 -0
- package/lib/shared/contact/contact.component.d.ts +39 -0
- package/lib/shared/contact-support/contact-support.component.d.ts +49 -0
- package/lib/shared/dashboard/dashboard.component.d.ts +17 -0
- package/lib/shared/maintenance-list/maintenance-list.component.d.ts +79 -0
- package/lib/shared/shared-routing.module.d.ts +7 -0
- package/lib/shared/shared.module.d.ts +40 -0
- package/lib/shared/show-links/show-links.component.d.ts +23 -0
- package/lib/shared/system-list/system-list.component.d.ts +15 -0
- package/package.json +30 -10
- package/{src/public-api.ts → public-api.d.ts} +1 -16
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -7
- package/src/lib/core/core-routing.module.ts +0 -10
- package/src/lib/core/core.module.ts +0 -35
- package/src/lib/core/menu/menu.component.css +0 -18
- package/src/lib/core/menu/menu.component.html +0 -8
- package/src/lib/core/menu/menu.component.spec.ts +0 -23
- package/src/lib/core/menu/menu.component.ts +0 -28
- package/src/lib/core/menu-consomer/menu-consomer.component.html +0 -20
- package/src/lib/core/menu-consomer/menu-consomer.component.scss +0 -20
- package/src/lib/core/menu-consomer/menu-consomer.component.spec.ts +0 -25
- package/src/lib/core/menu-consomer/menu-consomer.component.ts +0 -21
- package/src/lib/core/menu-ge-portal/menu-ge-portal.component.html +0 -7
- package/src/lib/core/menu-ge-portal/menu-ge-portal.component.scss +0 -17
- package/src/lib/core/menu-ge-portal/menu-ge-portal.component.spec.ts +0 -25
- package/src/lib/core/menu-ge-portal/menu-ge-portal.component.ts +0 -24
- package/src/lib/core/menu-warranty/menu-warranty.component.html +0 -20
- package/src/lib/core/menu-warranty/menu-warranty.component.scss +0 -16
- package/src/lib/core/menu-warranty/menu-warranty.component.spec.ts +0 -25
- package/src/lib/core/menu-warranty/menu-warranty.component.ts +0 -31
- package/src/lib/core/not-found/not-found.component.css +0 -31
- package/src/lib/core/not-found/not-found.component.html +0 -6
- package/src/lib/core/not-found/not-found.component.spec.ts +0 -23
- package/src/lib/core/not-found/not-found.component.ts +0 -15
- package/src/lib/core/top-bar/top-bar.component.css +0 -116
- package/src/lib/core/top-bar/top-bar.component.html +0 -1
- package/src/lib/core/top-bar/top-bar.component.spec.ts +0 -23
- package/src/lib/core/top-bar/top-bar.component.ts +0 -39
- package/src/lib/models/alternativeDate.model.ts +0 -6
- package/src/lib/models/applicationName.ts +0 -6
- package/src/lib/models/customObject.model.ts +0 -4
- package/src/lib/models/detailedPmJob.model.ts +0 -25
- package/src/lib/models/emailStatus.ts +0 -4
- package/src/lib/models/emailType.ts +0 -17
- package/src/lib/models/eventStatus.ts +0 -8
- package/src/lib/models/field.ts +0 -7
- package/src/lib/models/language.ts +0 -4
- package/src/lib/models/pMGroupedJob.model.ts +0 -4
- package/src/lib/models/pmJobRequest.model.ts +0 -6
- package/src/lib/models/reason.model.ts +0 -7
- package/src/lib/models/reasonCode.ts +0 -9
- package/src/lib/models/reasonContact.ts +0 -7
- package/src/lib/models/role.ts +0 -5
- package/src/lib/models/service.model.ts +0 -8
- package/src/lib/models/serviceName.ts +0 -14
- package/src/lib/models/socialMadia.ts +0 -4
- package/src/lib/models/stingBoolean.ts +0 -7
- package/src/lib/models/system.ts +0 -15
- package/src/lib/models/tokenStatus.ts +0 -6
- package/src/lib/models/warranty.ts +0 -18
- package/src/lib/pipes/pipes/pipes.module.ts +0 -14
- package/src/lib/pipes/subrtring-w.pipe.spec.ts +0 -8
- package/src/lib/pipes/subrtring-w.pipe.ts +0 -16
- package/src/lib/pipes/substring.pipe.spec.ts +0 -8
- package/src/lib/pipes/substring.pipe.ts +0 -15
- package/src/lib/shared/choose-another-date/choose-another-date.component.html +0 -9
- package/src/lib/shared/choose-another-date/choose-another-date.component.scss +0 -4
- package/src/lib/shared/choose-another-date/choose-another-date.component.spec.ts +0 -25
- package/src/lib/shared/choose-another-date/choose-another-date.component.ts +0 -126
- package/src/lib/shared/confirm-dialog/confirm-dialog.component.html +0 -27
- package/src/lib/shared/confirm-dialog/confirm-dialog.component.scss +0 -0
- package/src/lib/shared/confirm-dialog/confirm-dialog.component.spec.ts +0 -25
- package/src/lib/shared/confirm-dialog/confirm-dialog.component.ts +0 -35
- package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.css +0 -0
- package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.html +0 -19
- package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.spec.ts +0 -23
- package/src/lib/shared/confirm-dialog-contact/confirm-dialog-contact.component.ts +0 -36
- package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.html +0 -25
- package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.scss +0 -23
- package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.spec.ts +0 -25
- package/src/lib/shared/confirmed-date-information/confirmed-date-information.component.ts +0 -28
- package/src/lib/shared/contact/contact.component.css +0 -144
- package/src/lib/shared/contact/contact.component.html +0 -136
- package/src/lib/shared/contact/contact.component.spec.ts +0 -23
- package/src/lib/shared/contact/contact.component.ts +0 -171
- package/src/lib/shared/contact-support/contact-support.component.html +0 -130
- package/src/lib/shared/contact-support/contact-support.component.scss +0 -10
- package/src/lib/shared/contact-support/contact-support.component.spec.ts +0 -25
- package/src/lib/shared/contact-support/contact-support.component.ts +0 -176
- package/src/lib/shared/dashboard/dashboard.component.html +0 -81
- package/src/lib/shared/dashboard/dashboard.component.scss +0 -5
- package/src/lib/shared/dashboard/dashboard.component.spec.ts +0 -23
- package/src/lib/shared/dashboard/dashboard.component.ts +0 -21
- package/src/lib/shared/maintenance-list/maintenance-list.component.html +0 -106
- package/src/lib/shared/maintenance-list/maintenance-list.component.scss +0 -26
- package/src/lib/shared/maintenance-list/maintenance-list.component.spec.ts +0 -25
- package/src/lib/shared/maintenance-list/maintenance-list.component.ts +0 -398
- package/src/lib/shared/shared-routing.module.ts +0 -10
- package/src/lib/shared/shared.module.ts +0 -84
- package/src/lib/shared/show-links/show-links.component.html +0 -49
- package/src/lib/shared/show-links/show-links.component.scss +0 -0
- package/src/lib/shared/show-links/show-links.component.spec.ts +0 -25
- package/src/lib/shared/show-links/show-links.component.ts +0 -80
- package/src/lib/shared/system-list/system-list.component.css +0 -0
- package/src/lib/shared/system-list/system-list.component.html +0 -40
- package/src/lib/shared/system-list/system-list.component.spec.ts +0 -23
- package/src/lib/shared/system-list/system-list.component.ts +0 -26
- package/src/test.ts +0 -27
- package/tsconfig.lib.dev.json +0 -10
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.pp.json +0 -10
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
@@ -0,0 +1,34 @@
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "@angular/router";
|
4
|
+
import * as i2 from "primeng/table";
|
5
|
+
import * as i3 from "primeng/api";
|
6
|
+
import * as i4 from "@angular/common";
|
7
|
+
export class DashboardComponent {
|
8
|
+
constructor() {
|
9
|
+
this.toBeScheduledMaintenanceList = [];
|
10
|
+
this.alreadyScheduledMaintenanceList = [];
|
11
|
+
}
|
12
|
+
ngOnChanges(changes) { }
|
13
|
+
}
|
14
|
+
DashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DashboardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
15
|
+
DashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: DashboardComponent, selector: "awf-dashboard", inputs: { name: "name", email: "email", number: "number", systems: "systems", toBeScheduledMaintenanceList: "toBeScheduledMaintenanceList", alreadyScheduledMaintenanceList: "alreadyScheduledMaintenanceList", translate: "translate" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"GE\">\r\n <div class=\"home\">\r\n <h3 class=\"title\">{{translate.title}}</h3>\r\n <div class=\"row\">\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 card-bg\" style=\"cursor: pointer;\" routerLink=\"./systems\">\r\n <div class=\"conteur\">\r\n <img class=\"d-block mx-auto\" height=\"60px\" src=\"assets/img/GEPortal/tools.png\">\r\n <h3 class=\"counter text-center mt-4\">{{systems.length}} {{translate.systems}}</h3>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12 card-bg\" style=\"cursor: pointer;\" routerLink=\"./maintenance\">\r\n <div class=\"conteur conteur bg--primary\">\r\n <img class=\"d-block mx-auto \" height=\"60px\" src=\"assets/img/GEPortal/calendar-check.png\">\r\n <h3 class=\"counter text-center mt-4\">{{toBeScheduledMaintenanceList.length}} {{translate.upComing}}</h3>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-md-6 card-bg\">\r\n <div class=\"d-block mx-auto conteur bg--primary\">\r\n <img class=\"d-block mx-auto\" height=\"60px\" src=\"assets/img/GEPortal/calendar-check.png\">\r\n <h3 class=\"counter text-center mt-4\"> {{alreadyScheduledMaintenanceList.length}} {{translate.toValidate}}</h3>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-12 card-bg\">\r\n <div class=\"conteur\">\r\n <h4> {{translate.upcoming}}</h4>\r\n <p-table [value]=\"toBeScheduledMaintenanceList\" responsiveLayout=\"scroll\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>{{translate.name}}</th>\r\n <th>{{translate.systemId}}</th>\r\n <th>{{translate.workorderId}}</th>\r\n <th>{{translate.endDateTime}}</th>\r\n </tr>\r\n </ng-template> \r\n <ng-template pTemplate=\"body\" let-product>\r\n <tr>\r\n <td>{{product.systemName }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber}}</td>\r\n <td>{{product.pmJob.endDateTime | date: 'dd MMM yyyy '}} </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\" >\r\n <div routerLink=\"./contact\" class=\"card- d-grid text-center justify-content-center align-items-center p-5\" style=\"cursor: pointer;\">\r\n <img src=\"assets/img/GEPortal/phone.png\" width=\"80px\" class=\"img-fluid mx-auto\">\r\n <h5 class=\"mt-5\">\u00A0{{ translate.contact}}</h5>\r\n </div>\r\n <div class=\"card- d-grid mt-4 p-4\">\r\n <h4>{{ translate.profil}}</h4>\r\n <div class=\"d-flex align-items-center mb-3 mt-4\"> <img src=\"assets/img/GEPortal/user.png\">\r\n <p> {{name}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/mail.png\">\r\n <p> {{email}}</p>\r\n </div>\r\n <!-- <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/map.png\">\r\n <p>31 rue marseille France</p>\r\n </div> -->\r\n <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/phone-call.png\">\r\n <p> {{number}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["h3.counter{font-size:20px}\n"], dependencies: [{ kind: "directive", type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: DashboardComponent, decorators: [{
|
17
|
+
type: Component,
|
18
|
+
args: [{ selector: 'awf-dashboard', template: "<div class=\"GE\">\r\n <div class=\"home\">\r\n <h3 class=\"title\">{{translate.title}}</h3>\r\n <div class=\"row\">\r\n <div class=\"col-md-8\">\r\n <div class=\"row\">\r\n <div class=\"col-md-12 card-bg\" style=\"cursor: pointer;\" routerLink=\"./systems\">\r\n <div class=\"conteur\">\r\n <img class=\"d-block mx-auto\" height=\"60px\" src=\"assets/img/GEPortal/tools.png\">\r\n <h3 class=\"counter text-center mt-4\">{{systems.length}} {{translate.systems}}</h3>\r\n </div>\r\n </div>\r\n </div>\r\n <br>\r\n\r\n <div class=\"row\">\r\n <div class=\"col-md-12 card-bg\" style=\"cursor: pointer;\" routerLink=\"./maintenance\">\r\n <div class=\"conteur conteur bg--primary\">\r\n <img class=\"d-block mx-auto \" height=\"60px\" src=\"assets/img/GEPortal/calendar-check.png\">\r\n <h3 class=\"counter text-center mt-4\">{{toBeScheduledMaintenanceList.length}} {{translate.upComing}}</h3>\r\n </div>\r\n </div>\r\n <!-- <div class=\"col-md-6 card-bg\">\r\n <div class=\"d-block mx-auto conteur bg--primary\">\r\n <img class=\"d-block mx-auto\" height=\"60px\" src=\"assets/img/GEPortal/calendar-check.png\">\r\n <h3 class=\"counter text-center mt-4\"> {{alreadyScheduledMaintenanceList.length}} {{translate.toValidate}}</h3>\r\n </div>\r\n </div> -->\r\n </div>\r\n <div class=\"row mt-4\">\r\n <div class=\"col-md-12 card-bg\">\r\n <div class=\"conteur\">\r\n <h4> {{translate.upcoming}}</h4>\r\n <p-table [value]=\"toBeScheduledMaintenanceList\" responsiveLayout=\"scroll\">\r\n <ng-template pTemplate=\"header\">\r\n <tr>\r\n <th>{{translate.name}}</th>\r\n <th>{{translate.systemId}}</th>\r\n <th>{{translate.workorderId}}</th>\r\n <th>{{translate.endDateTime}}</th>\r\n </tr>\r\n </ng-template> \r\n <ng-template pTemplate=\"body\" let-product>\r\n <tr>\r\n <td>{{product.systemName }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber}}</td>\r\n <td>{{product.pmJob.endDateTime | date: 'dd MMM yyyy '}} </td>\r\n </tr>\r\n </ng-template>\r\n </p-table>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"col-md-4\" >\r\n <div routerLink=\"./contact\" class=\"card- d-grid text-center justify-content-center align-items-center p-5\" style=\"cursor: pointer;\">\r\n <img src=\"assets/img/GEPortal/phone.png\" width=\"80px\" class=\"img-fluid mx-auto\">\r\n <h5 class=\"mt-5\">\u00A0{{ translate.contact}}</h5>\r\n </div>\r\n <div class=\"card- d-grid mt-4 p-4\">\r\n <h4>{{ translate.profil}}</h4>\r\n <div class=\"d-flex align-items-center mb-3 mt-4\"> <img src=\"assets/img/GEPortal/user.png\">\r\n <p> {{name}}</p>\r\n </div>\r\n <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/mail.png\">\r\n <p> {{email}}</p>\r\n </div>\r\n <!-- <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/map.png\">\r\n <p>31 rue marseille France</p>\r\n </div> -->\r\n <div class=\"d-flex align-items-center mb-3\"> <img src=\"assets/img/GEPortal/phone-call.png\">\r\n <p> {{number}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["h3.counter{font-size:20px}\n"] }]
|
19
|
+
}], ctorParameters: function () { return []; }, propDecorators: { name: [{
|
20
|
+
type: Input
|
21
|
+
}], email: [{
|
22
|
+
type: Input
|
23
|
+
}], number: [{
|
24
|
+
type: Input
|
25
|
+
}], systems: [{
|
26
|
+
type: Input
|
27
|
+
}], toBeScheduledMaintenanceList: [{
|
28
|
+
type: Input
|
29
|
+
}], alreadyScheduledMaintenanceList: [{
|
30
|
+
type: Input
|
31
|
+
}], translate: [{
|
32
|
+
type: Input
|
33
|
+
}] } });
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9kYXNoYm9hcmQvZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7Ozs7O0FBVTFFLE1BQU0sT0FBTyxrQkFBa0I7SUFRN0I7UUFIUyxpQ0FBNEIsR0FBb0IsRUFBRSxDQUFDO1FBQ25ELG9DQUErQixHQUFvQixFQUFFLENBQUM7SUFFL0MsQ0FBQztJQUNqQixXQUFXLENBQUMsT0FBc0IsSUFBUyxDQUFDOztnSEFUakMsa0JBQWtCO29HQUFsQixrQkFBa0Isb1RDVi9CLDRwSkFpRkE7NEZEdkVhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlOzBFQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkNoYW5nZXMsSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGV0YWlsZWRQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9kZXRhaWxlZFBtSm9iLm1vZGVsJztcclxuaW1wb3J0IHsgU3lzdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3N5c3RlbSc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhd2YtZGFzaGJvYXJkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcclxuICBASW5wdXQoKSBuYW1lITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGVtYWlsITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG51bWJlciE6IHN0cmluZztcclxuICBASW5wdXQoKSBzeXN0ZW1zITogU3lzdGVtW10gO1xyXG4gIEBJbnB1dCgpIHRvQmVTY2hlZHVsZWRNYWludGVuYW5jZUxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGFscmVhZHlTY2hlZHVsZWRNYWludGVuYW5jZUxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIHRyYW5zbGF0ZSE6IGFueTsgXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJHRVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhvbWVcIj5cclxuICAgICAgICA8aDMgY2xhc3M9XCJ0aXRsZVwiPnt7dHJhbnNsYXRlLnRpdGxlfX08L2gzPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjYXJkLWJnXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgcm91dGVyTGluaz1cIi4vc3lzdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZXVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiBoZWlnaHQ9XCI2MHB4XCIgc3JjPVwiYXNzZXRzL2ltZy9HRVBvcnRhbC90b29scy5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImNvdW50ZXIgdGV4dC1jZW50ZXIgbXQtNFwiPnt7c3lzdGVtcy5sZW5ndGh9fSAmbmJzcDsge3t0cmFuc2xhdGUuc3lzdGVtc319PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxicj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjYXJkLWJnXCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCIgcm91dGVyTGluaz1cIi4vbWFpbnRlbmFuY2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRldXIgY29udGV1ciBiZy0tcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiZC1ibG9jayBteC1hdXRvIFwiIGhlaWdodD1cIjYwcHhcIiBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL2NhbGVuZGFyLWNoZWNrLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiY291bnRlciB0ZXh0LWNlbnRlciBtdC00XCI+e3t0b0JlU2NoZWR1bGVkTWFpbnRlbmFuY2VMaXN0Lmxlbmd0aH19ICZuYnNwOyB7e3RyYW5zbGF0ZS51cENvbWluZ319PC9oMz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY2FyZC1iZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ibG9jayBteC1hdXRvIGNvbnRldXIgYmctLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJkLWJsb2NrIG14LWF1dG9cIiAgaGVpZ2h0PVwiNjBweFwiIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvY2FsZW5kYXItY2hlY2sucG5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJjb3VudGVyIHRleHQtY2VudGVyIG10LTRcIj4ge3thbHJlYWR5U2NoZWR1bGVkTWFpbnRlbmFuY2VMaXN0Lmxlbmd0aH19ICZuYnNwOyB7e3RyYW5zbGF0ZS50b1ZhbGlkYXRlfX08L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY2FyZC1iZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGV1clwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0PiB7e3RyYW5zbGF0ZS51cGNvbWluZ319PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlIFt2YWx1ZV09XCJ0b0JlU2NoZWR1bGVkTWFpbnRlbmFuY2VMaXN0XCIgcmVzcG9uc2l2ZUxheW91dD1cInNjcm9sbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPnt7dHJhbnNsYXRlLm5hbWV9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3t0cmFuc2xhdGUuc3lzdGVtSWR9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3t0cmFuc2xhdGUud29ya29yZGVySWR9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+e3t0cmFuc2xhdGUuZW5kRGF0ZVRpbWV9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT4gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcHJvZHVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5zeXN0ZW1OYW1lIH19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3Quc3lzdGVtSWQgfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXJ9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLmVuZERhdGVUaW1lIHwgZGF0ZTogJ2RkIE1NTSB5eXl5ICd9fSA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtdGFibGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCIgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiByb3V0ZXJMaW5rPVwiLi9jb250YWN0XCIgY2xhc3M9XCJjYXJkLSBkLWdyaWQgdGV4dC1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcC01XCIgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1nL0dFUG9ydGFsL3Bob25lLnBuZ1wiIHdpZHRoPVwiODBweFwiIGNsYXNzPVwiaW1nLWZsdWlkIG14LWF1dG9cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDUgY2xhc3M9XCJtdC01XCI+wqB7eyB0cmFuc2xhdGUuY29udGFjdH19PC9oNT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtIGQtZ3JpZCBtdC00IHAtNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoND57eyB0cmFuc2xhdGUucHJvZmlsfX08L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIG1iLTMgbXQtNFwiPiA8aW1nIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvdXNlci5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Jm5ic3A7e3tuYW1lfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPiA8aW1nIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvbWFpbC5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Jm5ic3A7e3tlbWFpbH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPiA8aW1nIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvbWFwLnBuZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cD4zMSBydWUgbWFyc2VpbGxlIEZyYW5jZTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgbWItM1wiPiA8aW1nIHNyYz1cImFzc2V0cy9pbWcvR0VQb3J0YWwvcGhvbmUtY2FsbC5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHA+Jm5ic3A7e3tudW1iZXJ9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
@@ -0,0 +1,347 @@
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
2
|
+
import { ConfirmationService, MessageService } from 'primeng/api';
|
3
|
+
import { EmailType } from '../../models/emailType';
|
4
|
+
import { EventStatus } from '../../models/eventStatus';
|
5
|
+
import { PmJobStatus } from '../../models/pmJobStatus';
|
6
|
+
import { ReasonContact } from '../../models/reasonContact';
|
7
|
+
import { StingBoolean } from '../../models/stingBoolean';
|
8
|
+
import * as i0 from "@angular/core";
|
9
|
+
import * as i1 from "@angular/common";
|
10
|
+
import * as i2 from "primeng/table";
|
11
|
+
import * as i3 from "primeng/api";
|
12
|
+
import * as i4 from "primeng/inputtext";
|
13
|
+
import * as i5 from "primeng/toast";
|
14
|
+
import * as i6 from "primeng/tooltip";
|
15
|
+
import * as i7 from "primeng/overlaypanel";
|
16
|
+
import * as i8 from "primeng/button";
|
17
|
+
import * as i9 from "../choose-another-date/choose-another-date.component";
|
18
|
+
import * as i10 from "../confirm-dialog/confirm-dialog.component";
|
19
|
+
import * as i11 from "../confirmed-date-information/confirmed-date-information.component";
|
20
|
+
import * as i12 from "../contact-support/contact-support.component";
|
21
|
+
import * as i13 from "../show-links/show-links.component";
|
22
|
+
import * as i14 from "../confirm-dialog-contact/confirm-dialog-contact.component";
|
23
|
+
export class MaintenanceListComponent {
|
24
|
+
constructor() {
|
25
|
+
this.maintenanceList = [];
|
26
|
+
this.maintenanceListNotDisplayed = [];
|
27
|
+
this.pmJobList = [];
|
28
|
+
this.displayConfirmedDateInfo = false;
|
29
|
+
this.emitForUpdate = new EventEmitter();
|
30
|
+
this.emitForAlternativeDates = new EventEmitter();
|
31
|
+
this.sendContactMeEmail = new EventEmitter();
|
32
|
+
this.sendForm = new EventEmitter();
|
33
|
+
this.detailedPmJobLinkedList = [];
|
34
|
+
this.alternativeDatesSelected = [];
|
35
|
+
this.displaycontactSupport = false;
|
36
|
+
this.displayConfirmDialog = false;
|
37
|
+
this.displayConfirmDialogContact = false;
|
38
|
+
this.displayShowLinks = false;
|
39
|
+
this.displayAnotherDate = false;
|
40
|
+
this.isWithLinks = false;
|
41
|
+
this.isProposedDate = true;
|
42
|
+
this.reasonContact = "";
|
43
|
+
this.first = 0;
|
44
|
+
}
|
45
|
+
ngOnDestroy() {
|
46
|
+
if (this.updatePmSubscription) {
|
47
|
+
this.updatePmSubscription.unsubscribe();
|
48
|
+
}
|
49
|
+
if (this.alternativeDatesSubscription) {
|
50
|
+
this.alternativeDatesSubscription.unsubscribe();
|
51
|
+
}
|
52
|
+
}
|
53
|
+
applyFilterGlobal($event, stringVal) {
|
54
|
+
this.dt?.filterGlobal($event.target.value, stringVal);
|
55
|
+
}
|
56
|
+
selectElement(element) {
|
57
|
+
this.alternativeDatesList = null;
|
58
|
+
this.emailTypes = [];
|
59
|
+
if (element) {
|
60
|
+
this.pmSelectedStatus = element.status;
|
61
|
+
}
|
62
|
+
if (element.pmJob.groupList) {
|
63
|
+
this.isWithLinks = element.pmJob.groupList?.length > 0 ? true : false;
|
64
|
+
}
|
65
|
+
this.selectedWorkorderId = element.pmJob.workorderNumber;
|
66
|
+
this.maintenanceSelected = element;
|
67
|
+
this.maintenanceSelected.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
|
68
|
+
if (!this.isAlreadyScheduled) {
|
69
|
+
this.getAlternativeDates(element.pmJob);
|
70
|
+
}
|
71
|
+
this.startDateTime = this.maintenanceSelected.pmJob.startDateTime;
|
72
|
+
this.endDateTime = this.maintenanceSelected.pmJob.endDateTime;
|
73
|
+
this.getLinkedPmJob();
|
74
|
+
}
|
75
|
+
getAlternativeDates(pmJob) {
|
76
|
+
this.emitForAlternativeDates.emit(pmJob);
|
77
|
+
}
|
78
|
+
getLinkedPmJob() {
|
79
|
+
this.detailedPmJobLinkedList = [];
|
80
|
+
if (this.maintenanceSelected.pmJob.groupList) {
|
81
|
+
this.maintenanceSelected.pmJob.groupList.forEach((linked) => {
|
82
|
+
this.maintenanceList.forEach((item) => {
|
83
|
+
if (linked.workorderId === item.pmJob.workorderId) {
|
84
|
+
this.detailedPmJobLinkedList.push(item);
|
85
|
+
}
|
86
|
+
});
|
87
|
+
});
|
88
|
+
}
|
89
|
+
// if the linked PM in the other maintenance list not selected
|
90
|
+
if (this.maintenanceSelected.pmJob.groupList && (this.maintenanceSelected.pmJob.groupList.length !== this.detailedPmJobLinkedList.length)) {
|
91
|
+
this.maintenanceSelected.pmJob.groupList.forEach((linked) => {
|
92
|
+
this.maintenanceListNotDisplayed.forEach((item) => {
|
93
|
+
item.toUpdate = false;
|
94
|
+
if (linked.workorderId === item.pmJob.workorderId) {
|
95
|
+
this.detailedPmJobLinkedList.push(item);
|
96
|
+
}
|
97
|
+
});
|
98
|
+
});
|
99
|
+
}
|
100
|
+
}
|
101
|
+
confirmDialog() {
|
102
|
+
this.isProposedDate = true;
|
103
|
+
this.op.hide();
|
104
|
+
this.displayConfirmDialog = true;
|
105
|
+
}
|
106
|
+
closeConfirmDialog(confirm) {
|
107
|
+
this.displayConfirmDialog = false;
|
108
|
+
this.maintenanceSelected.futureStatus = PmJobStatus.ACCEPTED;
|
109
|
+
if (confirm) {
|
110
|
+
if (!this.isProposedDate) {
|
111
|
+
this.updateAlternativeDate();
|
112
|
+
}
|
113
|
+
else {
|
114
|
+
this.updateProposedDate();
|
115
|
+
}
|
116
|
+
this.emailTypes.push(EmailType.Accepted_CSC);
|
117
|
+
this.emailTypes.push(EmailType.Accepted_Clients);
|
118
|
+
this.updatePmJob();
|
119
|
+
}
|
120
|
+
}
|
121
|
+
closeConfirmDialogContact(confirm) {
|
122
|
+
this.displayConfirmDialogContact = false;
|
123
|
+
if (confirm) {
|
124
|
+
this.emailTypes = [];
|
125
|
+
if (this.reasonContact === ReasonContact.ContactFormPm) {
|
126
|
+
this.emailTypes.push(EmailType.ContactMe_Clients);
|
127
|
+
this.emailTypes.push(EmailType.ContactMe_CSC);
|
128
|
+
}
|
129
|
+
else if (this.reasonContact === ReasonContact.CancelFormPm) {
|
130
|
+
this.maintenanceSelected.pmJob.customObject = {};
|
131
|
+
this.maintenanceSelected.pmJob.customObject.customerWaiting = StingBoolean.YES;
|
132
|
+
this.maintenanceSelected.futureStatus = PmJobStatus.WAITING;
|
133
|
+
this.emailTypes.push(EmailType.CancelPM_CSC);
|
134
|
+
this.emailTypes.push(EmailType.CancelPM_Clients);
|
135
|
+
}
|
136
|
+
else {
|
137
|
+
this.maintenanceSelected.pmJob.customObject = {};
|
138
|
+
this.maintenanceSelected.pmJob.customObject.customerWaiting = StingBoolean.YES;
|
139
|
+
this.maintenanceSelected.futureStatus = PmJobStatus.WAITING;
|
140
|
+
this.emailTypes.push(EmailType.SendNewDates_CSC);
|
141
|
+
this.emailTypes.push(EmailType.SendNewDates_Clients);
|
142
|
+
}
|
143
|
+
this.updateLinkedPMFormContact();
|
144
|
+
this.closeContactSupport(true);
|
145
|
+
}
|
146
|
+
}
|
147
|
+
updateLinkedPMFormContact() {
|
148
|
+
this.pmJobList = [];
|
149
|
+
this.pmJobList.push(this.maintenanceSelected);
|
150
|
+
if (this.detailedPmJobLinkedList.length > 0) {
|
151
|
+
this.detailedPmJobLinkedList.forEach((item) => {
|
152
|
+
item.futureStatus = item.status;
|
153
|
+
item.selectedDate = item.pmJob.startDateTime;
|
154
|
+
item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
|
155
|
+
if (this.reasonContact === ReasonContact.MoreDatesFormPm || this.reasonContact === ReasonContact.CancelFormPm) {
|
156
|
+
item.reason = this.maintenanceSelected.reason;
|
157
|
+
item.reasonContact = this.maintenanceSelected.reasonContact;
|
158
|
+
item.pmJob.customObject = {};
|
159
|
+
item.pmJob.customObject.customerWaiting = StingBoolean.YES;
|
160
|
+
item.futureStatus = PmJobStatus.WAITING;
|
161
|
+
}
|
162
|
+
this.pmJobList.push(item);
|
163
|
+
});
|
164
|
+
}
|
165
|
+
this.callApiToUpdate();
|
166
|
+
}
|
167
|
+
closeContactSupport(event) {
|
168
|
+
this.displaycontactSupport = false;
|
169
|
+
this.showDate = false;
|
170
|
+
this.reasonContact = "";
|
171
|
+
}
|
172
|
+
proposeAnotherDate() {
|
173
|
+
this.isProposedDate = false;
|
174
|
+
this.op.hide();
|
175
|
+
this.displayAnotherDate = true;
|
176
|
+
}
|
177
|
+
contactSupport(fromOtherDate) {
|
178
|
+
this.op.hide();
|
179
|
+
this.reasonContact = fromOtherDate ? ReasonContact.MoreDatesFormPm : ReasonContact.ContactFormPm;
|
180
|
+
this.displaycontactSupport = true;
|
181
|
+
}
|
182
|
+
showLinks(element) {
|
183
|
+
if (element) {
|
184
|
+
this.selectElement(element);
|
185
|
+
}
|
186
|
+
this.op.hide();
|
187
|
+
this.displayShowLinks = true;
|
188
|
+
}
|
189
|
+
closeShowLinks() {
|
190
|
+
this.displayShowLinks = false;
|
191
|
+
}
|
192
|
+
closeConfirmedDateInfo() {
|
193
|
+
this.displayConfirmedDateInfo = false;
|
194
|
+
}
|
195
|
+
acceptDate(alternativeDates) {
|
196
|
+
this.displayConfirmDialog = true;
|
197
|
+
this.alternativeDatesSelected = alternativeDates;
|
198
|
+
this.findDatesSelected();
|
199
|
+
}
|
200
|
+
findDatesSelected() {
|
201
|
+
this.alternativeDatesSelected.forEach((alternativeDate) => {
|
202
|
+
if (alternativeDate.selected === "Yes") {
|
203
|
+
this.startDateTime = alternativeDate.startDateTime;
|
204
|
+
this.endDateTime = alternativeDate.endDateTime;
|
205
|
+
this.maintenanceSelected.selectedDate = alternativeDate.startDateTime;
|
206
|
+
return;
|
207
|
+
}
|
208
|
+
});
|
209
|
+
}
|
210
|
+
closeAnotherDate(event) {
|
211
|
+
this.displayAnotherDate = false;
|
212
|
+
if (event === false) {
|
213
|
+
this.alreadyScheduledMsg = false;
|
214
|
+
this.op.hide();
|
215
|
+
this.contactSupport(true);
|
216
|
+
}
|
217
|
+
}
|
218
|
+
updatePmJob() {
|
219
|
+
this.pmJobList = [];
|
220
|
+
this.pmJobList.push(this.maintenanceSelected);
|
221
|
+
if (this.detailedPmJobLinkedList.length > 0) {
|
222
|
+
this.detailedPmJobLinkedList.forEach((pMJob) => {
|
223
|
+
this.pmJobList.push(pMJob);
|
224
|
+
});
|
225
|
+
}
|
226
|
+
this.callApiToUpdate();
|
227
|
+
}
|
228
|
+
editPm() {
|
229
|
+
this.alreadyScheduledMsg = true;
|
230
|
+
this.op.hide();
|
231
|
+
this.reasonContact = ReasonContact.CancelFormPm;
|
232
|
+
this.prepareForPopup();
|
233
|
+
this.displaycontactSupport = true;
|
234
|
+
}
|
235
|
+
prepareForPopup() {
|
236
|
+
if (this.maintenanceSelected.pmJob.customerAccepted === "Yes") {
|
237
|
+
this.startDateTime = this.maintenanceSelected.pmJob.startDateTime;
|
238
|
+
this.endDateTime = this.maintenanceSelected.pmJob.endDateTime;
|
239
|
+
}
|
240
|
+
else {
|
241
|
+
this.alternativeDatesSelected = this.maintenanceSelected.pmJob.alternativeDates;
|
242
|
+
this.findDatesSelected();
|
243
|
+
}
|
244
|
+
}
|
245
|
+
updateProposedDate() {
|
246
|
+
this.maintenanceSelected.pmJob.customerAccepted = StingBoolean.YES;
|
247
|
+
this.maintenanceSelected.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
|
248
|
+
this.detailedPmJobLinkedList.forEach((item) => {
|
249
|
+
item.pmJob.customerAccepted = StingBoolean.YES;
|
250
|
+
item.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
|
251
|
+
item.futureStatus = PmJobStatus.ACCEPTED;
|
252
|
+
item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
|
253
|
+
});
|
254
|
+
}
|
255
|
+
updateAlternativeDate() {
|
256
|
+
this.findDatesSelected();
|
257
|
+
this.maintenanceSelected.pmJob.alternativeDates = this.alternativeDatesSelected;
|
258
|
+
this.detailedPmJobLinkedList.forEach((item) => {
|
259
|
+
item.pmJob.alternativeDates = this.alternativeDatesSelected;
|
260
|
+
item.pmJob.eventStatus = EventStatus.ASSIGNEDANC;
|
261
|
+
item.futureStatus = PmJobStatus.ACCEPTED;
|
262
|
+
item.WorkorderNumberSelected = this.maintenanceSelected.pmJob.workorderId;
|
263
|
+
});
|
264
|
+
this.displayAnotherDate = false;
|
265
|
+
}
|
266
|
+
sendContactMeForm(contactMeRequest) {
|
267
|
+
this.moreDates = false;
|
268
|
+
if (contactMeRequest.reasonContact === ReasonContact.MoreDatesFormPm) {
|
269
|
+
this.moreDates = true;
|
270
|
+
}
|
271
|
+
this.displayConfirmDialogContact = true;
|
272
|
+
this.maintenanceSelected = contactMeRequest;
|
273
|
+
}
|
274
|
+
callApiToUpdate() {
|
275
|
+
let PmJobListForUpdate = {};
|
276
|
+
PmJobListForUpdate.pmJobList = this.pmJobList;
|
277
|
+
PmJobListForUpdate.emailTypes = this.emailTypes;
|
278
|
+
this.emitForUpdate.emit(PmJobListForUpdate);
|
279
|
+
}
|
280
|
+
transformStatus(status) {
|
281
|
+
switch (status) {
|
282
|
+
case PmJobStatus.NEW: return this.status.new;
|
283
|
+
case PmJobStatus.ACCEPTED: return this.status.accepted;
|
284
|
+
case PmJobStatus.CLOSED: return this.status.closed;
|
285
|
+
case PmJobStatus.Late: return this.status.late;
|
286
|
+
case PmJobStatus.OPEN: return this.status.open;
|
287
|
+
case PmJobStatus.WAITING: return this.status.waiting;
|
288
|
+
case PmJobStatus.DONE: return this.status.done;
|
289
|
+
case PmJobStatus.VALIDATED: return this.status.validated;
|
290
|
+
default: return "Erreur";
|
291
|
+
}
|
292
|
+
}
|
293
|
+
getStatusTooltip(status) {
|
294
|
+
switch (status) {
|
295
|
+
case PmJobStatus.ACCEPTED: return this.status.acceptedTooltip;
|
296
|
+
case PmJobStatus.NEW: return this.status.newTooltip;
|
297
|
+
case PmJobStatus.CLOSED: return this.status.closedTooltip;
|
298
|
+
case PmJobStatus.Late: return this.status.lateTooltip;
|
299
|
+
case PmJobStatus.OPEN: return this.status.openTooltip;
|
300
|
+
case PmJobStatus.WAITING: return this.status.waitingTooltip;
|
301
|
+
case PmJobStatus.DONE: return this.status.doneTooltip;
|
302
|
+
case PmJobStatus.VALIDATED: return this.status.validatedTooltip;
|
303
|
+
default: return "Erreur";
|
304
|
+
}
|
305
|
+
}
|
306
|
+
}
|
307
|
+
MaintenanceListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MaintenanceListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
308
|
+
MaintenanceListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.10", type: MaintenanceListComponent, selector: "awf-maintenance-list", inputs: { translate: "translate", reasons: "reasons", globaltranslate: "globaltranslate", maintenanceList: "maintenanceList", maintenanceListNotDisplayed: "maintenanceListNotDisplayed", pmJobList: "pmJobList", isAlreadyScheduled: "isAlreadyScheduled", displayConfirmedDateInfo: "displayConfirmedDateInfo", alternativeDatesList: "alternativeDatesList", status: "status" }, outputs: { emitForUpdate: "emitForUpdate", emitForAlternativeDates: "emitForAlternativeDates", sendContactMeEmail: "sendContactMeEmail", sendForm: "sendForm" }, providers: [MessageService, ConfirmationService], viewQueries: [{ propertyName: "dt", first: true, predicate: ["dt"], descendants: true }, { propertyName: "op", first: true, predicate: ["op"], descendants: true }], ngImport: i0, template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" \r\n[globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\" [first]=\"first\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"room\">{{translate.maintenanceList.room}}\r\n <p-sortIcon field=\"room\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }} </td>\r\n <td>{{product.room }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'Planned Maintenance'\">{{translate.maintenanceList.typePlanned}}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'QARA'\">{{translate.maintenanceList.typeQARA}}</td>\r\n <td>\r\n <span [class]=\"'product-status status-' + product.status\"\r\n [pTooltip]=\"getStatusTooltip(product.status)\">\r\n {{transformStatus(product.status)}}\r\n </span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList === null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [moreDates]=\"moreDates\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfos]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "virtualRowHeight", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll"], outputs: ["selectAllChange", "selectionChange", "contextMenuSelectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: i2.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i2.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { 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.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "fitContent", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { kind: "component", type: i7.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "directive", type: i8.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i9.ChooseAnotherDateComponent, selector: "app-choose-another-date", inputs: ["displayAnotherDate", "globaltranslate", "translate", "alternativeDatesList"], outputs: ["closeAnotherDate", "acceptDate"] }, { kind: "component", type: i10.ConfirmDialogComponent, selector: "app-confirm-dialog", inputs: ["displayConfirmDialog", "startDateTime", "endDateTime", "globaltranslate", "translate", "isProposedDate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialog"] }, { kind: "component", type: i11.ConfirmedDateInformationComponent, selector: "app-confirmed-date-information", inputs: ["displayConfirmedDateInfos", "startDateTime", "endDateTime", "globaltranslate", "translate", "moreDates"], outputs: ["closeConfirmedDateInfo"] }, { kind: "component", type: i12.ContactSupportComponent, selector: "app-contact-support", inputs: ["displaycontactSupport", "globaltranslate", "translate", "showDate", "detailedPmJob", "reasonContact", "reasons"], outputs: ["sendDetailedPm", "sendForm", "closeContactSupport"] }, { kind: "component", type: i13.ShowLinksComponent, selector: "app-show-links", inputs: ["displayShowLinks", "detailedPmJobLinkedList", "selectedWorkorderId", "globaltranslate", "translate", "status"], outputs: ["closeShowLinks"] }, { kind: "component", type: i14.ConfirmDialogContactComponent, selector: "app-confirm-dialog-contact", inputs: ["displayConfirmDialogContact", "startDateTime", "endDateTime", "globaltranslate", "translate", "detailedPmJobLinkedList"], outputs: ["closeConfirmDialogContact"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
309
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MaintenanceListComponent, decorators: [{
|
310
|
+
type: Component,
|
311
|
+
args: [{ selector: 'awf-maintenance-list', providers: [MessageService, ConfirmationService], template: "<p-table #dt [value]=\"maintenanceList\" responsiveLayout=\"stack\" [rows]=\"10\" [showCurrentPageReport]=\"true\" [rowsPerPageOptions]=\"[5,10,25,50]\" \r\n[globalFilterFields]=\"['systemId','pmJob.caseId','systemName','pmJob.workorderNumber','pmJob.startDateTime','pmJob.endDateTime','pmJob.case_type','pmJob.case_category','status']\"\r\n [rowHover]=\"true\" dataKey=\"id\" [currentPageReportTemplate]=\"globaltranslate.countPages\" [first]=\"first\">\r\n <ng-template pTemplate=\"caption\">\r\n <div>\r\n <span class=\"p-input-icon-left\">\r\n <i class=\"pi pi-search\"></i>\r\n <input pInputText type=\"text\" (input)=\"applyFilterGlobal($event, 'contains')\"\r\n [placeholder]=\"globaltranslate.search\" />\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template pTemplate=\"header\" let-columns>\r\n <tr>\r\n <!-- <th pSortableColumn=\"caseId\">Case Id <p-sortIcon field=\"caseId\"></p-sortIcon> -->\r\n <th pSortableColumn=\"systemName\">{{translate.maintenanceList.system}}\r\n <p-sortIcon field=\"systemName\"></p-sortIcon>\r\n <th pSortableColumn=\"room\">{{translate.maintenanceList.room}}\r\n <p-sortIcon field=\"room\"></p-sortIcon>\r\n <th pSortableColumn=\"systemId\">System Id\r\n <p-sortIcon field=\"systemId\"></p-sortIcon>\r\n <th pSortableColumn=\"workorderNumber\">{{translate.maintenanceList.workOrder}}\r\n <p-sortIcon field=\"workorderNumber\"></p-sortIcon>\r\n <th pSortableColumn=\"startDateTime\">{{translate.maintenanceList.startDate}}\r\n <p-sortIcon field=\"startDateTime\"></p-sortIcon>\r\n <th pSortableColumn=\"case_type\">{{translate.maintenanceList.type}}\r\n <p-sortIcon field=\"case_type\"></p-sortIcon>\r\n <th pSortableColumn=\"status\">{{translate.maintenanceList.status}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th pSortableColumn=\"status\" >{{translate.maintenanceList.NbrLinks}}\r\n <p-sortIcon field=\"status\"></p-sortIcon>\r\n <th> Action</th>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"body\" let-product let-columns=\"columns\">\r\n <tr> \r\n <td>{{product.systemName }} </td>\r\n <td>{{product.room }}</td>\r\n <td>{{product.systemId }}</td>\r\n <td>{{product.pmJob.workorderNumber }}</td>\r\n <td>{{product.pmJob.startDateTime | date: 'dd MMM yyyy ' }}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'Planned Maintenance'\">{{translate.maintenanceList.typePlanned}}</td>\r\n <td *ngIf=\"product.pmJob.caseType === 'QARA'\">{{translate.maintenanceList.typeQARA}}</td>\r\n <td>\r\n <span [class]=\"'product-status status-' + product.status\"\r\n [pTooltip]=\"getStatusTooltip(product.status)\">\r\n {{transformStatus(product.status)}}\r\n </span>\r\n </td>\r\n <td *ngIf=\"product.pmJob.groupList !== null \" (click)=\"showLinks(product)\"> <span class=\"circle\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td *ngIf=\"product.pmJob.groupList === null\" (click)=\"showLinks(product)\"> <span class=\"circlelinked\">{{product.pmJob.groupList.length }}</span> <i class=\"pi pi-link\" style=\"font-size: 1rem\"></i> </td>\r\n <td>\r\n <button pButton pRipple type=\"button\" label=\"\" icon=\"pi pi-calendar\" class=\"p-button-rounded\" #actualTarget (click)=\"selectElement(product)\" (click)=\"op.toggle($event)\" [disabled]=\"((product.status ==='late' || product.status ==='accepted') && !isAlreadyScheduled) || product.status ==='waiting'\"></button>\r\n </td>\r\n </tr>\r\n </ng-template>\r\n <ng-template pTemplate=\"summary\">\r\n <div class=\"p-d-flex p-ai-center p-jc-between\">\r\n {{globaltranslate.count}} {{maintenanceList ? maintenanceList.length : 0 }} {{globaltranslate.elements}}.\r\n </div>\r\n </ng-template>\r\n</p-table>\r\n\r\n<p-toast position=\"top-center\"></p-toast>\r\n<p-overlayPanel #op [dismissable]=\"true\" [showCloseIcon]=\"false\" [showTransitionOptions]=\"'0ms'\" [hideTransitionOptions]=\"'0ms'\">\r\n <ng-template pTemplate>\r\n\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled\" icon=\"pi pi-thumbs-up\" (click)=\"confirmDialog()\" [label]=\"translate.maintenanceList.confirmDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n <hr *ngIf=\"!isAlreadyScheduled\">\r\n <button style=\"width: 100%;\" *ngIf=\"!isAlreadyScheduled && (alternativeDatesList !== null) \" icon=\"pi pi-calendar-plus\" (click)=\"proposeAnotherDate()\" [label]=\"translate.maintenanceList.chooseAnotherDate\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"!isAlreadyScheduled && (alternativeDatesList!==null) \">\r\n <button style=\"width: 100%;\" icon=\"pi pi-phone\" (click)=\"contactSupport(false)\" [label]=\"translate.maintenanceList.contactSuppor\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isWithLinks\">\r\n <button style=\"width: 100%;\" icon=\"pi pi-link\" *ngIf=\"isWithLinks\" (click)=\"showLinks()\" [label]=\"translate.maintenanceList.showLinks\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\"></button>\r\n <hr *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\">\r\n <button style=\"width: 100%;\" *ngIf=\"isAlreadyScheduled && pmSelectedStatus ==='validated'\" icon=\"pi pi-pencil\" (click)=\"editPm()\" [label]=\"translate.maintenanceList.cancel\" class=\"p-button-text p-button-raised\" pButton pRipple type=\"button\">\r\n </button>\r\n </ng-template>\r\n</p-overlayPanel>\r\n\r\n<div *ngIf=\"displaycontactSupport \" >\r\n <app-contact-support [reasonContact]=\"reasonContact\" (closeContactSupport)=\"closeContactSupport($event)\" (sendDetailedPm)=\"sendContactMeForm($event)\" [detailedPmJob] =\"maintenanceSelected\" [globaltranslate]=\"globaltranslate\" [reasons]=\"reasons\" [translate]=\"translate.contactSupport\" [displaycontactSupport]=\"displaycontactSupport\" [showDate]=\"showDate\" ></app-contact-support>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialog\">\r\n <app-confirm-dialog [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [isProposedDate]=\"isProposedDate\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialog\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialog]=\"displayConfirmDialog\" (closeConfirmDialog)=\"closeConfirmDialog($event)\">\r\n </app-confirm-dialog>\r\n</div>\r\n<div *ngIf=\"displayConfirmDialogContact\">\r\n <app-confirm-dialog-contact [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDialogContact\"\r\n [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmDialogContact]=\"displayConfirmDialogContact\" (closeConfirmDialogContact)=\"closeConfirmDialogContact($event)\">\r\n </app-confirm-dialog-contact >\r\n</div>\r\n<div *ngIf=\"displayConfirmedDateInfo\">\r\n <app-confirmed-date-information [moreDates]=\"moreDates\" [globaltranslate]=\"globaltranslate\" [translate]=\"translate.confirmDateInformation\" [startDateTime]=\"startDateTime\" [endDateTime]=\"endDateTime\" [displayConfirmedDateInfos]=\"displayConfirmedDateInfo\" (closeConfirmedDateInfo)=\"closeConfirmedDateInfo()\"></app-confirmed-date-information>\r\n</div>\r\n<div *ngIf=\"displayAnotherDate && alternativeDatesList\">\r\n <app-choose-another-date [globaltranslate]=\"globaltranslate\" [translate]=\"translate.chooseAnotherDate\" [alternativeDatesList]=\"alternativeDatesList\" [displayAnotherDate]=\"displayAnotherDate\" (closeAnotherDate)=\"closeAnotherDate($event)\" (acceptDate)=\"acceptDate($event)\">\r\n </app-choose-another-date>\r\n</div>\r\n<div *ngIf=\"displayShowLinks && selectedWorkorderId\">\r\n <app-show-links [status]=\"status\" [selectedWorkorderId]=\"selectedWorkorderId\" [translate]=\"translate\" [globaltranslate]=\"globaltranslate\" [displayShowLinks]=\"displayShowLinks\" (closeShowLinks)=\"closeShowLinks()\" [detailedPmJobLinkedList]=\"detailedPmJobLinkedList\"></app-show-links>\r\n</div>\r\n\r\n\r\n", styles: ["span.circle{background:#f86359;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#f8f8f8;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}span.circlelinked{background:#80a161;border-radius:50%;-moz-border-radius:50%;-webkit-border-radius:50%;color:#fff;display:inline-block;font-weight:700;line-height:20px;margin-right:5px;text-align:center;width:20px}\n"] }]
|
312
|
+
}], ctorParameters: function () { return []; }, propDecorators: { dt: [{
|
313
|
+
type: ViewChild,
|
314
|
+
args: ['dt']
|
315
|
+
}], op: [{
|
316
|
+
type: ViewChild,
|
317
|
+
args: ['op']
|
318
|
+
}], translate: [{
|
319
|
+
type: Input
|
320
|
+
}], reasons: [{
|
321
|
+
type: Input
|
322
|
+
}], globaltranslate: [{
|
323
|
+
type: Input
|
324
|
+
}], maintenanceList: [{
|
325
|
+
type: Input
|
326
|
+
}], maintenanceListNotDisplayed: [{
|
327
|
+
type: Input
|
328
|
+
}], pmJobList: [{
|
329
|
+
type: Input
|
330
|
+
}], isAlreadyScheduled: [{
|
331
|
+
type: Input
|
332
|
+
}], displayConfirmedDateInfo: [{
|
333
|
+
type: Input
|
334
|
+
}], alternativeDatesList: [{
|
335
|
+
type: Input
|
336
|
+
}], emitForUpdate: [{
|
337
|
+
type: Output
|
338
|
+
}], emitForAlternativeDates: [{
|
339
|
+
type: Output
|
340
|
+
}], sendContactMeEmail: [{
|
341
|
+
type: Output
|
342
|
+
}], status: [{
|
343
|
+
type: Input
|
344
|
+
}], sendForm: [{
|
345
|
+
type: Output
|
346
|
+
}] } });
|
347
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hd2YtdGVzdC1saWIvc3JjL2xpYi9zaGFyZWQvbWFpbnRlbmFuY2UtbGlzdC9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2F3Zi10ZXN0LWxpYi9zcmMvbGliL3NoYXJlZC9tYWludGVuYW5jZS1saXN0L21haW50ZW5hbmNlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUlsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3ZELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBU3pELE1BQU0sT0FBTyx3QkFBd0I7SUEwQ2pDO1FBcENTLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQUN0QyxnQ0FBMkIsR0FBb0IsRUFBRSxDQUFDO1FBQ2xELGNBQVMsR0FBb0IsRUFBRSxDQUFDO1FBRWhDLDZCQUF3QixHQUFDLEtBQUssQ0FBQztRQUU5QixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDeEMsNEJBQXVCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUNsRCx1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Q0FBQyxjQUFjLENBQUM7WUFDN0QsS0FBSyxXQUFXLENBQUMsSUFBSyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztZQUN2RCxLQUFLLFdBQVcsQ0FBQyxTQUFVLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7WUFDakUsT0FBUSxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7U0FDN0I7SUFDTCxDQUFDOztzSEEvV1Esd0JBQXdCOzBHQUF4Qix3QkFBd0Isb2tCQUZ0QixDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQywrTEMxQnBELDB5UkEwR0E7NEZEOUVhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDSSxzQkFBc0IsYUFHckIsQ0FBQyxjQUFjLEVBQUUsbUJBQW1CLENBQUM7MEVBRy9CLEVBQUU7c0JBQWxCLFNBQVM7dUJBQUMsSUFBSTtnQkFDRSxFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ04sU0FBUztzQkFBakIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csb0JBQW9CO3NCQUE1QixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csdUJBQXVCO3NCQUFoQyxNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRSxNQUFNO3NCQUFkLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE91dHB1dCxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ3ByaW1lbmcvdGFibGUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERldGFpbGVkUG1Kb2IgfSBmcm9tICcuLi8uLi9tb2RlbHMvZGV0YWlsZWRQbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IEFsdGVybmF0aXZlRGF0ZSB9IGZyb20gJy4uLy4uL21vZGVscy9hbHRlcm5hdGl2ZURhdGUubW9kZWwnO1xyXG5pbXBvcnQgeyBFbWFpbFR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZW1haWxUeXBlJztcclxuaW1wb3J0IHsgRXZlbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnRTdGF0dXMnO1xyXG5pbXBvcnQgeyBQbUpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYi5tb2RlbCc7XHJcbmltcG9ydCB7IFBNR3JvdXBlZEpvYiB9IGZyb20gJy4uLy4uL21vZGVscy9wTUdyb3VwZWRKb2IubW9kZWwnO1xyXG5pbXBvcnQgeyBQbUpvYlN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9wbUpvYlN0YXR1cyc7XHJcbmltcG9ydCB7IFJlYXNvbkNvbnRhY3QgfSBmcm9tICcuLi8uLi9tb2RlbHMvcmVhc29uQ29udGFjdCc7XHJcbmltcG9ydCB7IFN0aW5nQm9vbGVhbiB9IGZyb20gJy4uLy4uL21vZGVscy9zdGluZ0Jvb2xlYW4nO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhd2YtbWFpbnRlbmFuY2UtbGlzdCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vbWFpbnRlbmFuY2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYWludGVuYW5jZS1saXN0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZSwgQ29uZmlybWF0aW9uU2VydmljZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYWludGVuYW5jZUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG4gICAgQFZpZXdDaGlsZCgnZHQnKSBkdDogVGFibGUgfCB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdvcCcpIG9wOiBhbnkgfCB1bmRlZmluZWQ7XHJcbiAgICBASW5wdXQoKSB0cmFuc2xhdGU6IGFueTtcclxuICAgIEBJbnB1dCgpIHJlYXNvbnM6IGFueTtcclxuICAgIEBJbnB1dCgpIGdsb2JhbHRyYW5zbGF0ZTogYW55O1xyXG4gICAgQElucHV0KCkgbWFpbnRlbmFuY2VMaXN0OiBEZXRhaWxlZFBtSm9iW10gPSBbXTtcclxuICAgIEBJbnB1dCgpIG1haW50ZW5hbmNlTGlzdE5vdERpc3BsYXllZDogRGV0YWlsZWRQbUpvYltdID0gW107XHJcbiAgICBASW5wdXQoKSBwbUpvYkxpc3Q6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgQElucHV0KCkgaXNBbHJlYWR5U2NoZWR1bGVkITogQm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGRpc3BsYXlDb25maXJtZWREYXRlSW5mbz1mYWxzZTtcclxuICAgIEBJbnB1dCgpIGFsdGVybmF0aXZlRGF0ZXNMaXN0ITogYW55IDtcclxuICAgIEBPdXRwdXQoKSBlbWl0Rm9yVXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICBAT3V0cHV0KCkgZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZW5kQ29udGFjdE1lRW1haWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIEBJbnB1dCgpIHN0YXR1czogYW55O1xyXG4gICBcclxuICAgIEBPdXRwdXQoKSBzZW5kRm9ybTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBtb3JlRGF0ZXMhOmJvb2xlYW47XHJcbiAgICBkZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA6IERldGFpbGVkUG1Kb2JbXSA9IFtdO1xyXG4gICAgdXBkYXRlUG1TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcbiAgICBhbHRlcm5hdGl2ZURhdGVzU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgc2hvd0RhdGUhOiBib29sZWFuO1xyXG4gICAgbWFpbnRlbmFuY2VTZWxlY3RlZCE6IERldGFpbGVkUG1Kb2I7XHJcbiAgICBzdGFydERhdGVUaW1lITogYW55O1xyXG4gICAgZW5kRGF0ZVRpbWUhOiBhbnk7XHJcbiAgICBzZWxlY3RlZFdvcmtvcmRlcklkITogYW55O1xyXG4gICAgYWx0ZXJuYXRpdmVEYXRlITogQWx0ZXJuYXRpdmVEYXRlIDtcclxuICAgIGFsdGVybmF0aXZlRGF0ZXNTZWxlY3RlZDogQWx0ZXJuYXRpdmVEYXRlW10gPSBbXTtcclxuICAgIGRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlDb25maXJtRGlhbG9nQ29udGFjdCA9IGZhbHNlO1xyXG4gICAgZGlzcGxheVNob3dMaW5rcyAgPSBmYWxzZTtcclxuICAgIGRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgaXNXaXRoTGlua3MgPSBmYWxzZTtcclxuICAgIGlzUHJvcG9zZWREYXRlID0gdHJ1ZTtcclxuICAgIHBtU2VsZWN0ZWRTdGF0dXMhOnN0cmluZyA7XHJcbiAgICBlbWFpbFR5cGVzITpzdHJpbmdbXTsgXHJcbiAgICBhbHJlYWR5U2NoZWR1bGVkTXNnICE6Ym9vbGVhbjtcclxuICAgIHJlYXNvbkNvbnRhY3Q9XCJcIjtcclxuICAgIGNvbnRhY3RNZVJlcXVlc3QhOkRldGFpbGVkUG1Kb2IgO1xyXG4gICAgZmlyc3QgPSAwO1xyXG4gICAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVBtU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgIH1cclxuICAgIGFwcGx5RmlsdGVyR2xvYmFsKCRldmVudDogYW55LCBzdHJpbmdWYWw6IGFueSkge1xyXG4gICAgICAgIHRoaXMuZHQ/LmZpbHRlckdsb2JhbChcclxuICAgICAgICAgICAgKCRldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsXHJcbiAgICAgICAgICAgIHN0cmluZ1ZhbFxyXG4gICAgICAgICk7XHJcbiAgICB9ICAgXHJcbiAgICBzZWxlY3RFbGVtZW50KGVsZW1lbnQ6IERldGFpbGVkUG1Kb2IpIHtcclxuICAgICAgICB0aGlzLmFsdGVybmF0aXZlRGF0ZXNMaXN0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVtYWlsVHlwZXMgPVtdO1xyXG4gICAgICAgIGlmKGVsZW1lbnQpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLnBtU2VsZWN0ZWRTdGF0dXMgPSBlbGVtZW50LnN0YXR1cyA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgICAgaWYoZWxlbWVudC5wbUpvYi5ncm91cExpc3QpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmlzV2l0aExpbmtzID0gZWxlbWVudC5wbUpvYi5ncm91cExpc3Q/Lmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkV29ya29yZGVySWQgPSBlbGVtZW50LnBtSm9iLndvcmtvcmRlck51bWJlcjtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQgPSBlbGVtZW50O1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5Xb3Jrb3JkZXJOdW1iZXJTZWxlY3RlZCA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5pc0FscmVhZHlTY2hlZHVsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRBbHRlcm5hdGl2ZURhdGVzKGVsZW1lbnQucG1Kb2IpOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgdGhpcy5lbmREYXRlVGltZSA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5lbmREYXRlVGltZTtcclxuICAgICAgICB0aGlzLmdldExpbmtlZFBtSm9iKCk7XHJcbiAgICB9XHJcbiAgICBnZXRBbHRlcm5hdGl2ZURhdGVzKHBtSm9iIDogUG1Kb2IgKSAge1xyXG4gICAgICAgIHRoaXMuZW1pdEZvckFsdGVybmF0aXZlRGF0ZXMuZW1pdChwbUpvYik7XHJcbiAgICB9XHJcbiAgICBnZXRMaW5rZWRQbUpvYigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdCA9W107XHJcbiAgICAgICAgaWYodGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmdyb3VwTGlzdClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QuZm9yRWFjaCgobGlua2VkIDogUE1Hcm91cGVkSm9iICApICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZUxpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB0aGUgbGlua2VkIFBNIGluIHRoZSBvdGhlciBtYWludGVuYW5jZSBsaXN0IG5vdCBzZWxlY3RlZFxyXG4gICAgICAgIGlmKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QgJiYgKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ncm91cExpc3QubGVuZ3RoICE9PSB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0Lmxlbmd0aCkpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZ3JvdXBMaXN0LmZvckVhY2goKGxpbmtlZCA6IFBNR3JvdXBlZEpvYiAgKSAgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VMaXN0Tm90RGlzcGxheWVkLmZvckVhY2goKGl0ZW0gOkRldGFpbGVkUG1Kb2IgICkgID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnRvVXBkYXRlID0gZmFsc2UgO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGxpbmtlZC53b3Jrb3JkZXJJZCA9PT0gaXRlbS5wbUpvYi53b3Jrb3JkZXJJZClcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgICBjb25maXJtRGlhbG9nKCkge1xyXG4gICAgICAgIHRoaXMuaXNQcm9wb3NlZERhdGUgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlDb25maXJtRGlhbG9nID0gdHJ1ZTtcclxuICAgIH0gIFxyXG4gICAgY2xvc2VDb25maXJtRGlhbG9nKGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2cgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgIGlmIChjb25maXJtKSB7XHJcbiAgICAgICAgICAgIGlmKCF0aGlzLmlzUHJvcG9zZWREYXRlKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVBbHRlcm5hdGl2ZURhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHsgIFxyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVQcm9wb3NlZERhdGUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQWNjZXB0ZWRfQ1NDKSA7XHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5BY2NlcHRlZF9DbGllbnRzKSA7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlUG1Kb2IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbmZpcm1EaWFsb2dDb250YWN0KGNvbmZpcm06IGFueSkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0ID0gZmFsc2U7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKGNvbmZpcm0pIHtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcyA9IFtdIGFzIHN0cmluZ1tdO1xyXG4gICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuQ29udGFjdEZvcm1QbSApXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVtYWlsVHlwZXMucHVzaChFbWFpbFR5cGUuQ29udGFjdE1lX0NsaWVudHMpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNvbnRhY3RNZV9DU0MpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tT2JqZWN0PSB7fTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3QuY3VzdG9tZXJXYWl0aW5nID1TdGluZ0Jvb2xlYW4uWUVTIDtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5DYW5jZWxQTV9DU0MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLkNhbmNlbFBNX0NsaWVudHMpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbU9iamVjdC5jdXN0b21lcldhaXRpbmcgPVN0aW5nQm9vbGVhbi5ZRVM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQuZnV0dXJlU3RhdHVzID0gIFBtSm9iU3RhdHVzLldBSVRJTkcgOyAgXHJcbiAgICAgICAgICAgICAgICAgdGhpcy5lbWFpbFR5cGVzLnB1c2goRW1haWxUeXBlLlNlbmROZXdEYXRlc19DU0MpO1xyXG4gICAgICAgICAgICAgICAgIHRoaXMuZW1haWxUeXBlcy5wdXNoKEVtYWlsVHlwZS5TZW5kTmV3RGF0ZXNfQ2xpZW50cyk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxpbmtlZFBNRm9ybUNvbnRhY3QoKTtcclxuXHJcbiAgICAgICAgICAgICB0aGlzLmNsb3NlQ29udGFjdFN1cHBvcnQodHJ1ZSkgO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICB9XHJcbiAgICB1cGRhdGVMaW5rZWRQTUZvcm1Db250YWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdCA9W107XHJcbiAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaCh0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQpO1xyXG4gICAgICAgIGlmKHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QubGVuZ3RoID4wKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5mb3JFYWNoKChpdGVtOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcbiAgICAgICAgICAgICAgICBpdGVtLmZ1dHVyZVN0YXR1cyA9ICBpdGVtLnN0YXR1cyA7XHJcbiAgICAgICAgICAgICAgICBpdGVtLnNlbGVjdGVkRGF0ZSA9IGl0ZW0ucG1Kb2Iuc3RhcnREYXRlVGltZTtcclxuICAgICAgICAgICAgICAgIGl0ZW0uV29ya29yZGVyTnVtYmVyU2VsZWN0ZWQgPSAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLndvcmtvcmRlcklkIDtcclxuICAgICAgICAgICAgICAgICBpZih0aGlzLnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtICB8fHRoaXMucmVhc29uQ29udGFjdCA9PT0gUmVhc29uQ29udGFjdC5DYW5jZWxGb3JtUG0gKVxyXG4gICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlYXNvbiA9IHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5yZWFzb247XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWFzb25Db250YWN0ID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnJlYXNvbkNvbnRhY3Q7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5wbUpvYi5jdXN0b21PYmplY3Q9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucG1Kb2IuY3VzdG9tT2JqZWN0LmN1c3RvbWVyV2FpdGluZyA9U3RpbmdCb29sZWFuLllFUyA7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5mdXR1cmVTdGF0dXMgPSAgUG1Kb2JTdGF0dXMuV0FJVElORyA7ICBcclxuICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuICAgIH1cclxuICAgIGNsb3NlQ29udGFjdFN1cHBvcnQoZXZlbnQgOmFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucmVhc29uQ29udGFjdCA9XCJcIjtcclxuXHJcbiAgICB9XHJcbiAgICBwcm9wb3NlQW5vdGhlckRhdGUoKSB7XHJcbiAgICAgICAgdGhpcy5pc1Byb3Bvc2VkRGF0ZSA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBjb250YWN0U3VwcG9ydChmcm9tT3RoZXJEYXRlIDogYm9vbGVhbikge1xyXG4gICAgIFxyXG5cclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICBcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSBmcm9tT3RoZXJEYXRlID8gUmVhc29uQ29udGFjdC5Nb3JlRGF0ZXNGb3JtUG0gOiAgUmVhc29uQ29udGFjdC5Db250YWN0Rm9ybVBtIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7ICBcclxuICAgIH1cclxuICAgIHNob3dMaW5rcyhlbGVtZW50PzphbnkpXHJcbiAgICB7XHJcbiAgICAgICAgaWYoZWxlbWVudClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0RWxlbWVudChlbGVtZW50KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMub3AuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMuZGlzcGxheVNob3dMaW5rcyA9IHRydWUgO1xyXG4gICAgfVxyXG4gICAgY2xvc2VTaG93TGlua3MoKXtcclxuICAgICAgICB0aGlzLmRpc3BsYXlTaG93TGlua3MgPSBmYWxzZSA7XHJcbiAgICB9XHJcbiAgICBjbG9zZUNvbmZpcm1lZERhdGVJbmZvKCkge1xyXG4gICAgICAgIHRoaXMuZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBhY2NlcHREYXRlKGFsdGVybmF0aXZlRGF0ZXM6IEFsdGVybmF0aXZlRGF0ZVtdKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgPSBhbHRlcm5hdGl2ZURhdGVzO1xyXG4gICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgIH1cclxuICAgIGZpbmREYXRlc1NlbGVjdGVkKCl7XHJcbiAgICAgICAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQuZm9yRWFjaCgoYWx0ZXJuYXRpdmVEYXRlOiBBbHRlcm5hdGl2ZURhdGUpID0+IHtcclxuICAgICAgICAgICAgaWYoYWx0ZXJuYXRpdmVEYXRlLnNlbGVjdGVkPT09XCJZZXNcIilcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZERhdGVUaW1lID0gYWx0ZXJuYXRpdmVEYXRlLmVuZERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnNlbGVjdGVkRGF0ZSA9IGFsdGVybmF0aXZlRGF0ZS5zdGFydERhdGVUaW1lO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjbG9zZUFub3RoZXJEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlBbm90aGVyRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmKGV2ZW50PT09ZmFsc2UpXHJcbiAgICAgICAge1xyXG4gICAgICAgIHRoaXMuYWxyZWFkeVNjaGVkdWxlZE1zZyA9IGZhbHNlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLmNvbnRhY3RTdXBwb3J0KHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHVwZGF0ZVBtSm9iKCkge1xyXG4gICAgICAgIHRoaXMucG1Kb2JMaXN0ID1bXTtcclxuICAgICAgICB0aGlzLnBtSm9iTGlzdC5wdXNoKHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCk7XHJcbiAgICAgICAgaWYodGhpcy5kZXRhaWxlZFBtSm9iTGlua2VkTGlzdC5sZW5ndGggPjApXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLmRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0LmZvckVhY2goKHBNSm9iOkRldGFpbGVkUG1Kb2IpICA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5wbUpvYkxpc3QucHVzaChwTUpvYik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jYWxsQXBpVG9VcGRhdGUoKTtcclxuXHJcbiAgICB9XHJcbiAgICBlZGl0UG0oKXtcclxuICAgICAgICB0aGlzLmFscmVhZHlTY2hlZHVsZWRNc2cgPSB0cnVlIDtcclxuICAgICAgICB0aGlzLm9wLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnJlYXNvbkNvbnRhY3QgPSAgIFJlYXNvbkNvbnRhY3QuQ2FuY2VsRm9ybVBtIDtcclxuICAgICAgICB0aGlzLnByZXBhcmVGb3JQb3B1cCgpIDtcclxuICAgICAgICB0aGlzLmRpc3BsYXljb250YWN0U3VwcG9ydCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBwcmVwYXJlRm9yUG9wdXAoKXtcclxuICAgICAgICBpZih0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuY3VzdG9tZXJBY2NlcHRlZCA9PT1cIlllc1wiKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5zdGFydERhdGVUaW1lID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLnN0YXJ0RGF0ZVRpbWU7XHJcbiAgICAgICAgICAgIHRoaXMuZW5kRGF0ZVRpbWUgPSB0aGlzLm1haW50ZW5hbmNlU2VsZWN0ZWQucG1Kb2IuZW5kRGF0ZVRpbWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuYWx0ZXJuYXRpdmVEYXRlc1NlbGVjdGVkID0gdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXM7XHJcbiAgICAgICAgICAgIHRoaXMuZmluZERhdGVzU2VsZWN0ZWQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgdXBkYXRlUHJvcG9zZWREYXRlKCl7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSBTdGluZ0Jvb2xlYW4uWUVTO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi5ldmVudFN0YXR1cyA9IEV2ZW50U3RhdHVzLkFTU0lHTkVEQU5DO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmN1c3RvbWVyQWNjZXB0ZWQgPSBTdGluZ0Jvb2xlYW4uWUVTO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB1cGRhdGVBbHRlcm5hdGl2ZURhdGUoKXtcclxuICAgICAgICB0aGlzLmZpbmREYXRlc1NlbGVjdGVkKCk7XHJcbiAgICAgICAgdGhpcy5tYWludGVuYW5jZVNlbGVjdGVkLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgIHRoaXMuZGV0YWlsZWRQbUpvYkxpbmtlZExpc3QuZm9yRWFjaCgoaXRlbSA6RGV0YWlsZWRQbUpvYiAgKSAgPT4ge1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmFsdGVybmF0aXZlRGF0ZXMgPSAgdGhpcy5hbHRlcm5hdGl2ZURhdGVzU2VsZWN0ZWQgO1xyXG4gICAgICAgICAgICBpdGVtLnBtSm9iLmV2ZW50U3RhdHVzID0gRXZlbnRTdGF0dXMuQVNTSUdORURBTkM7XHJcbiAgICAgICAgICAgIGl0ZW0uZnV0dXJlU3RhdHVzID0gUG1Kb2JTdGF0dXMuQUNDRVBURUQgO1xyXG4gICAgICAgICAgICBpdGVtLldvcmtvcmRlck51bWJlclNlbGVjdGVkID0gIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZC5wbUpvYi53b3Jrb3JkZXJJZCA7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5QW5vdGhlckRhdGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHNlbmRDb250YWN0TWVGb3JtKGNvbnRhY3RNZVJlcXVlc3Q6YW55KXtcclxuICAgICAgICB0aGlzLm1vcmVEYXRlcyA9IGZhbHNlO1xyXG4gICAgICAgIGlmKCBjb250YWN0TWVSZXF1ZXN0LnJlYXNvbkNvbnRhY3QgPT09IFJlYXNvbkNvbnRhY3QuTW9yZURhdGVzRm9ybVBtIClcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubW9yZURhdGVzID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3QgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubWFpbnRlbmFuY2VTZWxlY3RlZCA9IGNvbnRhY3RNZVJlcXVlc3QgO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGxBcGlUb1VwZGF0ZSgpe1xyXG4gICAgICAgIGxldCBQbUpvYkxpc3RGb3JVcGRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgUG1Kb2JMaXN0Rm9yVXBkYXRlLnBtSm9iTGlzdCA9IHRoaXMucG1Kb2JMaXN0O1xyXG4gICAgICAgIFBtSm9iTGlzdEZvclVwZGF0ZS5lbWFpbFR5cGVzID0gdGhpcy5lbWFpbFR5cGVzO1xyXG4gICAgICAgIHRoaXMuZW1pdEZvclVwZGF0ZS5lbWl0KFBtSm9iTGlzdEZvclVwZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhbnNmb3JtU3RhdHVzKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk5FVyA6IHJldHVybiB0aGlzLnN0YXR1cy5uZXc7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQUNDRVBURUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuYWNjZXB0ZWQ7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuQ0xPU0VEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmNsb3NlZDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5MYXRlIDogcmV0dXJuIHRoaXMuc3RhdHVzLmxhdGU7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuT1BFTiA6IHJldHVybiB0aGlzLnN0YXR1cy5vcGVuO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLldBSVRJTkcgOiByZXR1cm4gdGhpcy5zdGF0dXMud2FpdGluZztcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmU7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuVkFMSURBVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLnZhbGlkYXRlZDtcclxuICAgICAgICAgICAgZGVmYXVsdCA6IHJldHVybiBcIkVycmV1clwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRTdGF0dXNUb29sdGlwKHN0YXR1czogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHN0YXR1cykge1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLkFDQ0VQVEVEIDogcmV0dXJuIHRoaXMuc3RhdHVzLmFjY2VwdGVkVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ORVcgOiByZXR1cm4gdGhpcy5zdGF0dXMubmV3VG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5DTE9TRUQgOiByZXR1cm4gdGhpcy5zdGF0dXMuY2xvc2VkVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5MYXRlIDogcmV0dXJuIHRoaXMuc3RhdHVzLmxhdGVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLk9QRU4gOiByZXR1cm4gdGhpcy5zdGF0dXMub3BlblRvb2x0aXA7XHJcbiAgICAgICAgICAgIGNhc2UgUG1Kb2JTdGF0dXMuV0FJVElORyA6IHJldHVybiB0aGlzLnN0YXR1cy53YWl0aW5nVG9vbHRpcDtcclxuICAgICAgICAgICAgY2FzZSBQbUpvYlN0YXR1cy5ET05FIDogcmV0dXJuIHRoaXMuc3RhdHVzLmRvbmVUb29sdGlwO1xyXG4gICAgICAgICAgICBjYXNlIFBtSm9iU3RhdHVzLlZBTElEQVRFRCA6IHJldHVybiB0aGlzLnN0YXR1cy52YWxpZGF0ZWRUb29sdGlwO1xyXG4gICAgICAgICAgICBkZWZhdWx0IDogcmV0dXJuIFwiRXJyZXVyXCI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufVxyXG4iLCI8cC10YWJsZSAjZHQgW3ZhbHVlXT1cIm1haW50ZW5hbmNlTGlzdFwiIHJlc3BvbnNpdmVMYXlvdXQ9XCJzdGFja1wiIFtyb3dzXT1cIjEwXCIgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCIgW3Jvd3NQZXJQYWdlT3B0aW9uc109XCJbNSwxMCwyNSw1MF1cIiBcclxuW2dsb2JhbEZpbHRlckZpZWxkc109XCJbJ3N5c3RlbUlkJywncG1Kb2IuY2FzZUlkJywnc3lzdGVtTmFtZScsJ3BtSm9iLndvcmtvcmRlck51bWJlcicsJ3BtSm9iLnN0YXJ0RGF0ZVRpbWUnLCdwbUpvYi5lbmREYXRlVGltZScsJ3BtSm9iLmNhc2VfdHlwZScsJ3BtSm9iLmNhc2VfY2F0ZWdvcnknLCdzdGF0dXMnXVwiXHJcbiAgICBbcm93SG92ZXJdPVwidHJ1ZVwiIGRhdGFLZXk9XCJpZFwiIFtjdXJyZW50UGFnZVJlcG9ydFRlbXBsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZS5jb3VudFBhZ2VzXCIgW2ZpcnN0XT1cImZpcnN0XCI+XHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY2FwdGlvblwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktc2VhcmNoXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IHBJbnB1dFRleHQgdHlwZT1cInRleHRcIiAoaW5wdXQpPVwiYXBwbHlGaWx0ZXJHbG9iYWwoJGV2ZW50LCAnY29udGFpbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cImdsb2JhbHRyYW5zbGF0ZS5zZWFyY2hcIiAvPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiIGxldC1jb2x1bW5zPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPCEtLSA8dGggcFNvcnRhYmxlQ29sdW1uPVwiY2FzZUlkXCI+Q2FzZSBJZCA8cC1zb3J0SWNvbiBmaWVsZD1cImNhc2VJZFwiPjwvcC1zb3J0SWNvbj4gLS0+XHJcbiAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzeXN0ZW1OYW1lXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN5c3RlbX19XHJcbiAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbU5hbWVcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwicm9vbVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC5yb29tfX1cclxuICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInJvb21cIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3lzdGVtSWRcIj5TeXN0ZW0gSWRcclxuICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN5c3RlbUlkXCI+PC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJ3b3Jrb3JkZXJOdW1iZXJcIj57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3Qud29ya09yZGVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJ3b3Jrb3JkZXJOdW1iZXJcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBwU29ydGFibGVDb2x1bW49XCJzdGFydERhdGVUaW1lXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN0YXJ0RGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN0YXJ0RGF0ZVRpbWVcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cImNhc2VfdHlwZVwiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC50eXBlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjYXNlX3R5cGVcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggcFNvcnRhYmxlQ29sdW1uPVwic3RhdHVzXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnN0YXR1c319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJzdGF0dXNcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHBTb3J0YWJsZUNvbHVtbj1cInN0YXR1c1wiID57e3RyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuTmJyTGlua3N9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInN0YXR1c1wiPjwvcC1zb3J0SWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiBBY3Rpb248L3RoPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcHJvZHVjdCBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cclxuICAgICAgICA8dHI+ICAgXHJcbiAgICAgICAgICAgIDx0ZD57e3Byb2R1Y3Quc3lzdGVtTmFtZSB9fSA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnJvb20gfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnN5c3RlbUlkIH19PC90ZD5cclxuICAgICAgICAgICAgPHRkPnt7cHJvZHVjdC5wbUpvYi53b3Jrb3JkZXJOdW1iZXIgfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+e3twcm9kdWN0LnBtSm9iLnN0YXJ0RGF0ZVRpbWUgfCBkYXRlOiAnZGQgTU1NIHl5eXkgJyB9fTwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZCAqbmdJZj1cInByb2R1Y3QucG1Kb2IuY2FzZVR5cGUgPT09ICdQbGFubmVkIE1haW50ZW5hbmNlJ1wiPnt7dHJhbnNsYXRlLm1haW50ZW5hbmNlTGlzdC50eXBlUGxhbm5lZH19PC90ZD5cclxuICAgICAgICAgICAgPHRkICpuZ0lmPVwicHJvZHVjdC5wbUpvYi5jYXNlVHlwZSA9PT0gJ1FBUkEnXCI+e3t0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnR5cGVRQVJBfX08L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ3Byb2R1Y3Qtc3RhdHVzIHN0YXR1cy0nICsgcHJvZHVjdC5zdGF0dXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImdldFN0YXR1c1Rvb2x0aXAocHJvZHVjdC5zdGF0dXMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3RyYW5zZm9ybVN0YXR1cyhwcm9kdWN0LnN0YXR1cyl9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJwcm9kdWN0LnBtSm9iLmdyb3VwTGlzdCAhPT0gbnVsbCBcIiAoY2xpY2spPVwic2hvd0xpbmtzKHByb2R1Y3QpXCI+IDxzcGFuIGNsYXNzPVwiY2lyY2xlXCI+e3twcm9kdWN0LnBtSm9iLmdyb3VwTGlzdC5sZW5ndGggfX08L3NwYW4+IDxpIGNsYXNzPVwicGkgcGktbGlua1wiIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtXCI+PC9pPiA8L3RkPlxyXG4gICAgICAgICAgICA8dGQgKm5nSWY9XCJwcm9kdWN0LnBtSm9iLmdyb3VwTGlzdCA9PT0gbnVsbFwiIChjbGljayk9XCJzaG93TGlua3MocHJvZHVjdClcIj4gPHNwYW4gY2xhc3M9XCJjaXJjbGVsaW5rZWRcIj57e3Byb2R1Y3QucG1Kb2IuZ3JvdXBMaXN0Lmxlbmd0aCB9fTwvc3Bhbj4gPGkgY2xhc3M9XCJwaSBwaS1saW5rXCIgc3R5bGU9XCJmb250LXNpemU6IDFyZW1cIj48L2k+IDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIiBsYWJlbD1cIlwiIGljb249XCJwaSBwaS1jYWxlbmRhclwiIGNsYXNzPVwicC1idXR0b24tcm91bmRlZFwiICNhY3R1YWxUYXJnZXQgKGNsaWNrKT1cInNlbGVjdEVsZW1lbnQocHJvZHVjdClcIiAoY2xpY2spPVwib3AudG9nZ2xlKCRldmVudClcIiBbZGlzYWJsZWRdPVwiKChwcm9kdWN0LnN0YXR1cyA9PT0nbGF0ZScgIHx8IHByb2R1Y3Quc3RhdHVzID09PSdhY2NlcHRlZCcpICYmICFpc0FscmVhZHlTY2hlZHVsZWQpIHx8IHByb2R1Y3Quc3RhdHVzID09PSd3YWl0aW5nJ1wiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cInN1bW1hcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC1kLWZsZXggcC1haS1jZW50ZXIgcC1qYy1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgIHt7Z2xvYmFsdHJhbnNsYXRlLmNvdW50fX0ge3ttYWludGVuYW5jZUxpc3QgPyBtYWludGVuYW5jZUxpc3QubGVuZ3RoIDogMCB9fSB7e2dsb2JhbHRyYW5zbGF0ZS5lbGVtZW50c319LlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuPC9wLXRhYmxlPlxyXG5cclxuPHAtdG9hc3QgcG9zaXRpb249XCJ0b3AtY2VudGVyXCI+PC9wLXRvYXN0PlxyXG48cC1vdmVybGF5UGFuZWwgI29wIFtkaXNtaXNzYWJsZV09XCJ0cnVlXCIgW3Nob3dDbG9zZUljb25dPVwiZmFsc2VcIiBbc2hvd1RyYW5zaXRpb25PcHRpb25zXT1cIicwbXMnXCIgW2hpZGVUcmFuc2l0aW9uT3B0aW9uc109XCInMG1zJ1wiPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZFwiIGljb249XCJwaSBwaS10aHVtYnMtdXBcIiAoY2xpY2spPVwiY29uZmlybURpYWxvZygpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29uZmlybURhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiIWlzQWxyZWFkeVNjaGVkdWxlZCAmJiAoYWx0ZXJuYXRpdmVEYXRlc0xpc3QgIT09IG51bGwpIFwiIGljb249XCJwaSBwaS1jYWxlbmRhci1wbHVzXCIgKGNsaWNrKT1cInByb3Bvc2VBbm90aGVyRGF0ZSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2hvb3NlQW5vdGhlckRhdGVcIiBjbGFzcz1cInAtYnV0dG9uLXRleHQgcC1idXR0b24tcmFpc2VkXCIgcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIj48L2J1dHRvbj5cclxuICAgICAgICA8aHIgKm5nSWY9XCIhaXNBbHJlYWR5U2NoZWR1bGVkICYmIChhbHRlcm5hdGl2ZURhdGVzTGlzdCE9PW51bGwpIFwiPlxyXG4gICAgICAgIDxidXR0b24gc3R5bGU9XCJ3aWR0aDogMTAwJTtcIiBpY29uPVwicGkgcGktcGhvbmVcIiAoY2xpY2spPVwiY29udGFjdFN1cHBvcnQoZmFsc2UpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY29udGFjdFN1cHBvclwiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzV2l0aExpbmtzXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiIGljb249XCJwaSBwaS1saW5rXCIgKm5nSWY9XCJpc1dpdGhMaW5rc1wiIChjbGljayk9XCJzaG93TGlua3MoKVwiIFtsYWJlbF09XCJ0cmFuc2xhdGUubWFpbnRlbmFuY2VMaXN0LnNob3dMaW5rc1wiIGNsYXNzPVwicC1idXR0b24tdGV4dCBwLWJ1dHRvbi1yYWlzZWRcIiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiPjwvYnV0dG9uPlxyXG4gICAgICAgIDxociAqbmdJZj1cImlzQWxyZWFkeVNjaGVkdWxlZCAmJiBwbVNlbGVjdGVkU3RhdHVzID09PSd2YWxpZGF0ZWQnXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiICpuZ0lmPVwiaXNBbHJlYWR5U2NoZWR1bGVkICYmIHBtU2VsZWN0ZWRTdGF0dXMgPT09J3ZhbGlkYXRlZCdcIiBpY29uPVwicGkgcGktcGVuY2lsXCIgKGNsaWNrKT1cImVkaXRQbSgpXCIgW2xhYmVsXT1cInRyYW5zbGF0ZS5tYWludGVuYW5jZUxpc3QuY2FuY2VsXCIgY2xhc3M9XCJwLWJ1dHRvbi10ZXh0IHAtYnV0dG9uLXJhaXNlZFwiIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L3Atb3ZlcmxheVBhbmVsPlxyXG5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXljb250YWN0U3VwcG9ydCBcIiA+XHJcbiAgICA8YXBwLWNvbnRhY3Qtc3VwcG9ydCBbcmVhc29uQ29udGFjdF09XCJyZWFzb25Db250YWN0XCIgKGNsb3NlQ29udGFjdFN1cHBvcnQpPVwiY2xvc2VDb250YWN0U3VwcG9ydCgkZXZlbnQpXCIgKHNlbmREZXRhaWxlZFBtKT1cInNlbmRDb250YWN0TWVGb3JtKCRldmVudClcIiBbZGV0YWlsZWRQbUpvYl0gPVwibWFpbnRlbmFuY2VTZWxlY3RlZFwiIFtnbG9iYWx0cmFuc2xhdGVdPVwiZ2xvYmFsdHJhbnNsYXRlXCIgIFtyZWFzb25zXT1cInJlYXNvbnNcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb250YWN0U3VwcG9ydFwiIFtkaXNwbGF5Y29udGFjdFN1cHBvcnRdPVwiZGlzcGxheWNvbnRhY3RTdXBwb3J0XCIgW3Nob3dEYXRlXT1cInNob3dEYXRlXCIgPjwvYXBwLWNvbnRhY3Qtc3VwcG9ydD5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ1wiPlxyXG4gICAgPGFwcC1jb25maXJtLWRpYWxvZyAgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICBbaXNQcm9wb3NlZERhdGVdPVwiaXNQcm9wb3NlZERhdGVcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EaWFsb2dcIlxyXG4gICAgICAgIFtzdGFydERhdGVUaW1lXT1cInN0YXJ0RGF0ZVRpbWVcIiBbZW5kRGF0ZVRpbWVdPVwiZW5kRGF0ZVRpbWVcIiBbZGlzcGxheUNvbmZpcm1EaWFsb2ddPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dcIiAoY2xvc2VDb25maXJtRGlhbG9nKT1cImNsb3NlQ29uZmlybURpYWxvZygkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZz5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RcIj5cclxuICAgIDxhcHAtY29uZmlybS1kaWFsb2ctY29udGFjdCAgW2RldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XT1cImRldGFpbGVkUG1Kb2JMaW5rZWRMaXN0XCIgICAgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jb25maXJtRGlhbG9nQ29udGFjdFwiXHJcbiAgICAgICAgW3N0YXJ0RGF0ZVRpbWVdPVwic3RhcnREYXRlVGltZVwiIFtlbmREYXRlVGltZV09XCJlbmREYXRlVGltZVwiIFtkaXNwbGF5Q29uZmlybURpYWxvZ0NvbnRhY3RdPVwiZGlzcGxheUNvbmZpcm1EaWFsb2dDb250YWN0XCIgKGNsb3NlQ29uZmlybURpYWxvZ0NvbnRhY3QpPVwiY2xvc2VDb25maXJtRGlhbG9nQ29udGFjdCgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jb25maXJtLWRpYWxvZy1jb250YWN0ID5cclxuPC9kaXY+XHJcbjxkaXYgKm5nSWY9XCJkaXNwbGF5Q29uZmlybWVkRGF0ZUluZm9cIj5cclxuICAgIDxhcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24gW21vcmVEYXRlc109XCJtb3JlRGF0ZXNcIiBbZ2xvYmFsdHJhbnNsYXRlXT1cImdsb2JhbHRyYW5zbGF0ZVwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlLmNvbmZpcm1EYXRlSW5mb3JtYXRpb25cIiBbc3RhcnREYXRlVGltZV09XCJzdGFydERhdGVUaW1lXCIgW2VuZERhdGVUaW1lXT1cImVuZERhdGVUaW1lXCIgW2Rpc3BsYXlDb25maXJtZWREYXRlSW5mb3NdPVwiZGlzcGxheUNvbmZpcm1lZERhdGVJbmZvXCIgKGNsb3NlQ29uZmlybWVkRGF0ZUluZm8pPVwiY2xvc2VDb25maXJtZWREYXRlSW5mbygpXCI+PC9hcHAtY29uZmlybWVkLWRhdGUtaW5mb3JtYXRpb24+XHJcbjwvZGl2PlxyXG48ZGl2ICpuZ0lmPVwiZGlzcGxheUFub3RoZXJEYXRlICYmIGFsdGVybmF0aXZlRGF0ZXNMaXN0XCI+XHJcbiAgICA8YXBwLWNob29zZS1hbm90aGVyLWRhdGUgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbdHJhbnNsYXRlXT1cInRyYW5zbGF0ZS5jaG9vc2VBbm90aGVyRGF0ZVwiIFthbHRlcm5hdGl2ZURhdGVzTGlzdF09XCJhbHRlcm5hdGl2ZURhdGVzTGlzdFwiIFtkaXNwbGF5QW5vdGhlckRhdGVdPVwiZGlzcGxheUFub3RoZXJEYXRlXCIgKGNsb3NlQW5vdGhlckRhdGUpPVwiY2xvc2VBbm90aGVyRGF0ZSgkZXZlbnQpXCIgKGFjY2VwdERhdGUpPVwiYWNjZXB0RGF0ZSgkZXZlbnQpXCI+XHJcbiAgICA8L2FwcC1jaG9vc2UtYW5vdGhlci1kYXRlPlxyXG48L2Rpdj5cclxuPGRpdiAqbmdJZj1cImRpc3BsYXlTaG93TGlua3MgJiYgc2VsZWN0ZWRXb3Jrb3JkZXJJZFwiPlxyXG4gICAgPGFwcC1zaG93LWxpbmtzIFtzdGF0dXNdPVwic3RhdHVzXCIgW3NlbGVjdGVkV29ya29yZGVySWRdPVwic2VsZWN0ZWRXb3Jrb3JkZXJJZFwiIFt0cmFuc2xhdGVdPVwidHJhbnNsYXRlXCIgW2dsb2JhbHRyYW5zbGF0ZV09XCJnbG9iYWx0cmFuc2xhdGVcIiBbZGlzcGxheVNob3dMaW5rc109XCJkaXNwbGF5U2hvd0xpbmtzXCIgKGNsb3NlU2hvd0xpbmtzKT1cImNsb3NlU2hvd0xpbmtzKClcIiBbZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RdPVwiZGV0YWlsZWRQbUpvYkxpbmtlZExpc3RcIj48L2FwcC1zaG93LWxpbmtzPlxyXG48L2Rpdj5cclxuXHJcblxyXG4iXX0=
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import { NgModule } from '@angular/core';
|
2
|
+
import { RouterModule } from '@angular/router';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
import * as i1 from "@angular/router";
|
5
|
+
const routes = [];
|
6
|
+
export class SharedRoutingModule {
|
7
|
+
}
|
8
|
+
SharedRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
9
|
+
SharedRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
10
|
+
SharedRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: SharedRoutingModule, decorators: [{
|
12
|
+
type: NgModule,
|
13
|
+
args: [{
|
14
|
+
imports: [RouterModule.forChild(routes)],
|
15
|
+
exports: [RouterModule]
|
16
|
+
}]
|
17
|
+
}] });
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXdmLXRlc3QtbGliL3NyYy9saWIvc2hhcmVkL3NoYXJlZC1yb3V0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRXZELE1BQU0sTUFBTSxHQUFXLEVBQUUsQ0FBQztBQU0xQixNQUFNLE9BQU8sbUJBQW1COztpSEFBbkIsbUJBQW1CO2tIQUFuQixtQkFBbUIsd0NBRnBCLFlBQVk7a0hBRVgsbUJBQW1CLFlBSHBCLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7NEZBRVgsbUJBQW1CO2tCQUovQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxyXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRSb3V0aW5nTW9kdWxlIHsgfVxyXG4iXX0=
|