bpm-core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/esm2022/bpm-core.mjs +5 -0
- package/esm2022/lib/classes/form-validation.mjs +80 -0
- package/esm2022/lib/classes/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/activities/activities.component.mjs +51 -0
- package/esm2022/lib/components/app-component-sections/comment-section/comment-section.component.mjs +66 -0
- package/esm2022/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.mjs +29 -0
- package/esm2022/lib/components/app-component-sections/faqs/faqs.component.mjs +32 -0
- package/esm2022/lib/components/app-component-sections/faqs/index.mjs +2 -0
- package/esm2022/lib/components/app-component-sections/feedback-section/feedback-section.component.mjs +236 -0
- package/esm2022/lib/components/app-component-sections/form-section/form-section.component.mjs +270 -0
- package/esm2022/lib/components/app-component-sections/index.mjs +9 -0
- package/esm2022/lib/components/app-component-sections/main-request-details/main-request-details.component.mjs +34 -0
- package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs +45 -0
- package/esm2022/lib/components/app-component-sections/service-header/service-header.component.mjs +162 -0
- package/esm2022/lib/components/app-component-sections/status/status.component.mjs +38 -0
- package/esm2022/lib/components/app-component-sections/workflow-section/workflow-section.component.mjs +162 -0
- package/esm2022/lib/components/shared-components/confirmation-popup/confirmation-popup.component.mjs +39 -0
- package/esm2022/lib/components/shared-components/delete-popup/delete-popup.component.mjs +19 -0
- package/esm2022/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.mjs +30 -0
- package/esm2022/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.mjs +28 -0
- package/esm2022/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.mjs +72 -0
- package/esm2022/lib/components/shared-components/doc-uploader/docs-uploader.component.mjs +686 -0
- package/esm2022/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.mjs +77 -0
- package/esm2022/lib/components/shared-components/form-field/attachment-section/attachment-section.component.mjs +181 -0
- package/esm2022/lib/components/shared-components/form-field/base-component/base-component.component.mjs +198 -0
- package/esm2022/lib/components/shared-components/form-field/checkbox/checkbox.component.mjs +69 -0
- package/esm2022/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.mjs +201 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-format.mjs +31 -0
- package/esm2022/lib/components/shared-components/form-field/date-picker/date-picker.component.mjs +244 -0
- package/esm2022/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.mjs +26 -0
- package/esm2022/lib/components/shared-components/form-field/form-label/form-label.component.mjs +31 -0
- package/esm2022/lib/components/shared-components/form-field/index.mjs +25 -0
- package/esm2022/lib/components/shared-components/form-field/info-item/info-item.component.mjs +72 -0
- package/esm2022/lib/components/shared-components/form-field/input/input.component.mjs +155 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/index.mjs +3 -0
- package/esm2022/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.mjs +2 -0
- package/esm2022/lib/components/shared-components/form-field/input-currency/input-currency.component.mjs +157 -0
- package/esm2022/lib/components/shared-components/form-field/input-email/input-email.component.mjs +114 -0
- package/esm2022/lib/components/shared-components/form-field/input-mask/input-mask.component.mjs +111 -0
- package/esm2022/lib/components/shared-components/form-field/input-number/input-number.component.mjs +153 -0
- package/esm2022/lib/components/shared-components/form-field/input-telephone/input-telephone.component.mjs +176 -0
- package/esm2022/lib/components/shared-components/form-field/radio/radio.component.mjs +38 -0
- package/esm2022/lib/components/shared-components/form-field/repeated-list/repeated-list.component.mjs +32 -0
- package/esm2022/lib/components/shared-components/form-field/search-employee/search-employee.component.mjs +228 -0
- package/esm2022/lib/components/shared-components/form-field/select/select.component.mjs +191 -0
- package/esm2022/lib/components/shared-components/form-field/table-list/table-list.component.mjs +116 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/special-chars.directive.mjs +39 -0
- package/esm2022/lib/components/shared-components/form-field/textarea/textarea.component.mjs +88 -0
- package/esm2022/lib/components/shared-components/form-field/toggle-button/toggle-button.component.mjs +75 -0
- package/esm2022/lib/components/shared-components/index.mjs +10 -0
- package/esm2022/lib/components/shared-components/terms-conditions/terms-conditions.component.mjs +31 -0
- package/esm2022/lib/components/shared-components/title-section/title-section.component.mjs +31 -0
- package/esm2022/lib/constants/constants.mjs +144 -0
- package/esm2022/lib/constants/index.mjs +2 -0
- package/esm2022/lib/environments/environment.local.mjs +27 -0
- package/esm2022/lib/functions/data-to-blob.mjs +12 -0
- package/esm2022/lib/functions/encode-password.mjs +14 -0
- package/esm2022/lib/functions/handel-error-response.mjs +12 -0
- package/esm2022/lib/functions/index.mjs +5 -0
- package/esm2022/lib/functions/is-valid-data.mjs +42 -0
- package/esm2022/lib/hooks/index.mjs +3 -0
- package/esm2022/lib/hooks/load-form.mjs +13 -0
- package/esm2022/lib/hooks/save-form.mjs +18 -0
- package/esm2022/lib/i18n/ar.mjs +183 -0
- package/esm2022/lib/i18n/en.mjs +187 -0
- package/esm2022/lib/i18n/index.mjs +3 -0
- package/esm2022/lib/interfaces/api-response.interface.mjs +2 -0
- package/esm2022/lib/interfaces/document-file.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form-items.interface.mjs +2 -0
- package/esm2022/lib/interfaces/form.interface.mjs +150 -0
- package/esm2022/lib/interfaces/igate-user.interface.mjs +2 -0
- package/esm2022/lib/interfaces/index.mjs +8 -0
- package/esm2022/lib/interfaces/lov-list.interface.mjs +2 -0
- package/esm2022/lib/interfaces/lov.interface.mjs +2 -0
- package/esm2022/lib/interfaces/shared.interface.mjs +2 -0
- package/esm2022/lib/pipes/currency.pipe.mjs +66 -0
- package/esm2022/lib/pipes/format-as-password.pipe.mjs +19 -0
- package/esm2022/lib/pipes/index.mjs +3 -0
- package/esm2022/lib/services/feedBack.service.mjs +80 -0
- package/esm2022/lib/services/i18n.service.mjs +36 -0
- package/esm2022/lib/services/index.mjs +3 -0
- package/esm2022/lib/services/sidenav.service.mjs +69 -0
- package/esm2022/lib/validators/ar.directive.mjs +53 -0
- package/esm2022/lib/validators/currency.directive.mjs +74 -0
- package/esm2022/lib/validators/en.directive.mjs +50 -0
- package/esm2022/lib/validators/id.validator.mjs +66 -0
- package/esm2022/lib/validators/index.mjs +8 -0
- package/esm2022/lib/validators/string-to-boolean.pipe.mjs +16 -0
- package/esm2022/lib/validators/text.directive.mjs +50 -0
- package/esm2022/lib/validators/timer.pipe.mjs +19 -0
- package/esm2022/public-api.mjs +16 -0
- package/fesm2022/bpm-core.mjs +6005 -0
- package/fesm2022/bpm-core.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/classes/form-validation.d.ts +19 -0
- package/lib/classes/index.d.ts +1 -0
- package/lib/components/app-component-sections/activities/activities.component.d.ts +22 -0
- package/lib/components/app-component-sections/comment-section/comment-section.component.d.ts +19 -0
- package/lib/components/app-component-sections/faq-sidenav/faq-sidenav.component.d.ts +13 -0
- package/lib/components/app-component-sections/faqs/faqs.component.d.ts +17 -0
- package/lib/components/app-component-sections/faqs/index.d.ts +1 -0
- package/lib/components/app-component-sections/feedback-section/feedback-section.component.d.ts +38 -0
- package/lib/components/app-component-sections/form-section/form-section.component.d.ts +58 -0
- package/lib/components/app-component-sections/index.d.ts +8 -0
- package/lib/components/app-component-sections/main-request-details/main-request-details.component.d.ts +13 -0
- package/lib/components/app-component-sections/profile-section/profile-section.component.d.ts +17 -0
- package/lib/components/app-component-sections/service-header/service-header.component.d.ts +35 -0
- package/lib/components/app-component-sections/status/status.component.d.ts +23 -0
- package/lib/components/app-component-sections/workflow-section/workflow-section.component.d.ts +29 -0
- package/lib/components/shared-components/confirmation-popup/confirmation-popup.component.d.ts +25 -0
- package/lib/components/shared-components/delete-popup/delete-popup.component.d.ts +6 -0
- package/lib/components/shared-components/dialogs/confirm-dialog/confirm-dialog.component.d.ts +11 -0
- package/lib/components/shared-components/dialogs/delete-dialog/delete-dialog.component.d.ts +11 -0
- package/lib/components/shared-components/dialogs/submit-dialog/submit-dialog.component.d.ts +15 -0
- package/lib/components/shared-components/doc-uploader/docs-uploader.component.d.ts +144 -0
- package/lib/components/shared-components/form-field/add-attachment-section/add-attachment-section.component.d.ts +16 -0
- package/lib/components/shared-components/form-field/attachment-section/attachment-section.component.d.ts +30 -0
- package/lib/components/shared-components/form-field/base-component/base-component.component.d.ts +63 -0
- package/lib/components/shared-components/form-field/checkbox/checkbox.component.d.ts +18 -0
- package/lib/components/shared-components/form-field/custom-searchable-autocomplete/custom-searchable.component.d.ts +29 -0
- package/lib/components/shared-components/form-field/date-picker/date-format.d.ts +17 -0
- package/lib/components/shared-components/form-field/date-picker/date-picker.component.d.ts +41 -0
- package/lib/components/shared-components/form-field/date-range-picker/date-range-picker.component.d.ts +10 -0
- package/lib/components/shared-components/form-field/form-label/form-label.component.d.ts +12 -0
- package/lib/components/shared-components/form-field/index.d.ts +24 -0
- package/lib/components/shared-components/form-field/info-item/info-item.component.d.ts +23 -0
- package/lib/components/shared-components/form-field/input/input.component.d.ts +32 -0
- package/lib/components/shared-components/form-field/input-autocomplete/index.d.ts +1 -0
- package/lib/components/shared-components/form-field/input-autocomplete/input-autocomplete.model.d.ts +6 -0
- package/lib/components/shared-components/form-field/input-currency/input-currency.component.d.ts +31 -0
- package/lib/components/shared-components/form-field/input-email/input-email.component.d.ts +27 -0
- package/lib/components/shared-components/form-field/input-mask/input-mask.component.d.ts +27 -0
- package/lib/components/shared-components/form-field/input-number/input-number.component.d.ts +30 -0
- package/lib/components/shared-components/form-field/input-telephone/input-telephone.component.d.ts +45 -0
- package/lib/components/shared-components/form-field/radio/radio.component.d.ts +10 -0
- package/lib/components/shared-components/form-field/repeated-list/repeated-list.component.d.ts +9 -0
- package/lib/components/shared-components/form-field/search-employee/search-employee.component.d.ts +44 -0
- package/lib/components/shared-components/form-field/select/select.component.d.ts +36 -0
- package/lib/components/shared-components/form-field/table-list/table-list.component.d.ts +26 -0
- package/lib/components/shared-components/form-field/textarea/special-chars.directive.d.ts +10 -0
- package/lib/components/shared-components/form-field/textarea/textarea.component.d.ts +20 -0
- package/lib/components/shared-components/form-field/toggle-button/toggle-button.component.d.ts +20 -0
- package/lib/components/shared-components/index.d.ts +9 -0
- package/lib/components/shared-components/terms-conditions/terms-conditions.component.d.ts +12 -0
- package/lib/components/shared-components/title-section/title-section.component.d.ts +13 -0
- package/lib/constants/constants.d.ts +122 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/environments/environment.local.d.ts +26 -0
- package/lib/functions/data-to-blob.d.ts +1 -0
- package/lib/functions/encode-password.d.ts +1 -0
- package/lib/functions/handel-error-response.d.ts +4 -0
- package/lib/functions/index.d.ts +4 -0
- package/lib/functions/is-valid-data.d.ts +1 -0
- package/lib/hooks/index.d.ts +2 -0
- package/lib/hooks/load-form.d.ts +10 -0
- package/lib/hooks/save-form.d.ts +15 -0
- package/lib/i18n/ar.d.ts +170 -0
- package/lib/i18n/en.d.ts +174 -0
- package/lib/i18n/index.d.ts +2 -0
- package/lib/interfaces/api-response.interface.d.ts +5 -0
- package/lib/interfaces/document-file.interface.d.ts +12 -0
- package/lib/interfaces/form-items.interface.d.ts +14 -0
- package/lib/interfaces/form.interface.d.ts +95 -0
- package/lib/interfaces/igate-user.interface.d.ts +16 -0
- package/lib/interfaces/index.d.ts +7 -0
- package/lib/interfaces/lov-list.interface.d.ts +10 -0
- package/lib/interfaces/lov.interface.d.ts +19 -0
- package/lib/interfaces/shared.interface.d.ts +21 -0
- package/lib/pipes/currency.pipe.d.ts +13 -0
- package/lib/pipes/format-as-password.pipe.d.ts +7 -0
- package/lib/pipes/index.d.ts +2 -0
- package/lib/services/feedBack.service.d.ts +21 -0
- package/lib/services/i18n.service.d.ts +10 -0
- package/lib/services/index.d.ts +2 -0
- package/lib/services/sidenav.service.d.ts +28 -0
- package/lib/validators/ar.directive.d.ts +11 -0
- package/lib/validators/currency.directive.d.ts +16 -0
- package/lib/validators/en.directive.d.ts +11 -0
- package/lib/validators/id.validator.d.ts +3 -0
- package/lib/validators/index.d.ts +7 -0
- package/lib/validators/string-to-boolean.pipe.d.ts +7 -0
- package/lib/validators/text.directive.d.ts +12 -0
- package/lib/validators/timer.pipe.d.ts +7 -0
- package/package.json +26 -0
- package/public-api.d.ts +13 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input, ViewChild } from '@angular/core';
|
|
2
|
+
import { ComponentOutletIoDirective } from 'ng-dynamic-component';
|
|
3
|
+
import { NgClass, NgComponentOutlet, NgIf } from '@angular/common';
|
|
4
|
+
import { MatExpansionPanel } from '@angular/material/expansion';
|
|
5
|
+
import { SatPopoverModule } from '@ncstate/sat-popover';
|
|
6
|
+
import * as Constants from '../../../constants';
|
|
7
|
+
import * as moment from 'moment';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../../services";
|
|
10
|
+
import * as i2 from "@ncstate/sat-popover";
|
|
11
|
+
export class FormSectionComponent {
|
|
12
|
+
i18n;
|
|
13
|
+
userType = 'receipient';
|
|
14
|
+
popover;
|
|
15
|
+
popoverType = 'receipient';
|
|
16
|
+
popoverPosition = { top: 0, left: 0 };
|
|
17
|
+
requestDetails;
|
|
18
|
+
userPopoverInfo = {};
|
|
19
|
+
section;
|
|
20
|
+
form;
|
|
21
|
+
lov;
|
|
22
|
+
isReadOnly;
|
|
23
|
+
isOpen;
|
|
24
|
+
isFinalApproval;
|
|
25
|
+
controllers;
|
|
26
|
+
segmentDynamicLoaderService;
|
|
27
|
+
sectionFormComponent = null;
|
|
28
|
+
sectionName = 'SECTION_NAME.requestDetails';
|
|
29
|
+
sectionNumber;
|
|
30
|
+
sectionStatusValue;
|
|
31
|
+
sectionStatusKey;
|
|
32
|
+
receipient = {
|
|
33
|
+
isShowing: false,
|
|
34
|
+
profile: null
|
|
35
|
+
};
|
|
36
|
+
delegate = {
|
|
37
|
+
isShowing: false,
|
|
38
|
+
profile: null
|
|
39
|
+
};
|
|
40
|
+
input;
|
|
41
|
+
highlightFlag;
|
|
42
|
+
processingDate;
|
|
43
|
+
randomID = Math.floor(Math.random() * (999999 - 100000)) + 100000;
|
|
44
|
+
constructor(
|
|
45
|
+
// private segmentDynamicLoaderService: SegmentDynamicLoaderService,
|
|
46
|
+
i18n) {
|
|
47
|
+
this.i18n = i18n;
|
|
48
|
+
this.highlightFlag = false;
|
|
49
|
+
}
|
|
50
|
+
ngOnInit() {
|
|
51
|
+
this.sectionFormComponent = this.segmentDynamicLoaderService.getComponent(this.section.id);
|
|
52
|
+
if (this.section.body.details.stageName) {
|
|
53
|
+
this.sectionName = this.section.body.details.stageName;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.sectionName = this.segmentDynamicLoaderService.getSectionName(this.section.id);
|
|
57
|
+
}
|
|
58
|
+
this.input = {
|
|
59
|
+
isReadOnly: this.isReadOnly,
|
|
60
|
+
lov: this.lov,
|
|
61
|
+
section: this.section,
|
|
62
|
+
controllers: this.controllers,
|
|
63
|
+
requestDetails: this.requestDetails
|
|
64
|
+
};
|
|
65
|
+
if (this.section.header && this.section.header.processingDate) {
|
|
66
|
+
this.processingDate = moment(this.section.header.processingDate)
|
|
67
|
+
.locale('en-US')
|
|
68
|
+
.format('DD/MM/YYYY HH:mm:ss');
|
|
69
|
+
}
|
|
70
|
+
this.highlightFlag = this.isOpen;
|
|
71
|
+
const x = document.querySelectorAll('#collapse' + this.sectionId());
|
|
72
|
+
if (x.length > 0) {
|
|
73
|
+
this.sectionNumber = x.length;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
ngOnChanges() {
|
|
77
|
+
if (this.section.id !== 'requestDetails' &&
|
|
78
|
+
this.section.id !== 'hrRequestDetails' &&
|
|
79
|
+
!this.sectionStatusKey &&
|
|
80
|
+
this.section.body.details.decision &&
|
|
81
|
+
this.section.body.details.decision.key) {
|
|
82
|
+
this.sectionStatusKey = this.section.body.details.decision.key;
|
|
83
|
+
}
|
|
84
|
+
if (this.section.id !== 'requestDetails' &&
|
|
85
|
+
this.section.id !== 'hrRequestDetails' &&
|
|
86
|
+
!this.sectionStatusValue &&
|
|
87
|
+
this.section.body.details.decision &&
|
|
88
|
+
this.section.body.details.decision.value) {
|
|
89
|
+
this.sectionStatusValue = this.section.body.details.decision.value;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
ngAfterViewInit() {
|
|
93
|
+
this.ServicesSubScriptions();
|
|
94
|
+
}
|
|
95
|
+
get isExpanded() {
|
|
96
|
+
const isExpandableFromBackend = this.form?.sections?.length && this.form.sections.some(section => 'expandStage' in section?.body?.details);
|
|
97
|
+
if (!isExpandableFromBackend)
|
|
98
|
+
return true;
|
|
99
|
+
return this.section?.body?.details?.expandStage === 'true';
|
|
100
|
+
}
|
|
101
|
+
ServicesSubScriptions() {
|
|
102
|
+
/* this.profileRequestorService.getForm().subscribe((data) => {
|
|
103
|
+
this.form = data;
|
|
104
|
+
});*/
|
|
105
|
+
}
|
|
106
|
+
ngAfterViewChecked() {
|
|
107
|
+
this.input = {
|
|
108
|
+
isReadOnly: this.isReadOnly,
|
|
109
|
+
lov: this.lov,
|
|
110
|
+
section: this.section,
|
|
111
|
+
controllers: this.controllers,
|
|
112
|
+
sectionId: this.section
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
sectionId() {
|
|
116
|
+
return this.section.id.split(' ').join('') + this.randomID;
|
|
117
|
+
}
|
|
118
|
+
getSectionName() {
|
|
119
|
+
return this.section.id;
|
|
120
|
+
}
|
|
121
|
+
getFormStepStatus(key) {
|
|
122
|
+
let status = 'NOT_FOUND_IN_LOV';
|
|
123
|
+
if (this.lov.formStepStatus && this.lov.formStepStatus.options) {
|
|
124
|
+
this.lov.formStepStatus.options.forEach((option) => {
|
|
125
|
+
if (option.value === key) {
|
|
126
|
+
status = option.description;
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
return status;
|
|
131
|
+
}
|
|
132
|
+
toggleSmallProfileInfo(event, personType) {
|
|
133
|
+
this.userType = personType;
|
|
134
|
+
event.stopPropagation();
|
|
135
|
+
const userInfo = this[personType];
|
|
136
|
+
if (userInfo.profile === null) {
|
|
137
|
+
this.popoverType = personType;
|
|
138
|
+
const userEmail = personType === 'receipient'
|
|
139
|
+
? this.section.header.personToThumbnail.split('=')[1]
|
|
140
|
+
: this?.section?.header?.delegatedToThumbnail.split('=')[1];
|
|
141
|
+
/*this.stateMachine
|
|
142
|
+
.dispatch(Constants.STATE_MACHINE_ACTION_EMPLOYEE_PROFILE, userEmail)
|
|
143
|
+
.then((response) => {
|
|
144
|
+
console.log(this, response);
|
|
145
|
+
|
|
146
|
+
if (response) {
|
|
147
|
+
this[personType].profile = response;
|
|
148
|
+
this.popoverPosition = {
|
|
149
|
+
top: 10,
|
|
150
|
+
left:
|
|
151
|
+
event.target.getBoundingClientRect().left +
|
|
152
|
+
event.target.getBoundingClientRect().width / 4
|
|
153
|
+
};
|
|
154
|
+
this.popover.anchor = event.target;
|
|
155
|
+
this.popover.open();
|
|
156
|
+
this.userPopoverInfo = response;
|
|
157
|
+
}
|
|
158
|
+
});*/
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
this.userPopoverInfo = this[personType].profile;
|
|
162
|
+
this.popoverPosition = {
|
|
163
|
+
top: 10,
|
|
164
|
+
left: event.target.getBoundingClientRect().left +
|
|
165
|
+
event.target.getBoundingClientRect().width / 4
|
|
166
|
+
};
|
|
167
|
+
this.popover.anchor = event.target;
|
|
168
|
+
this.popover.open();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
statusIconClass(status, type) {
|
|
172
|
+
if (status) {
|
|
173
|
+
if (status === Constants.FORM_STATUS_REJECTED ||
|
|
174
|
+
status === Constants.FORM_STATUS_CANCELLED ||
|
|
175
|
+
status.toLowerCase() === 'reject' ||
|
|
176
|
+
status.toLowerCase() === 'unsatisfied' ||
|
|
177
|
+
status.toLowerCase().includes('deny') ||
|
|
178
|
+
status.toLowerCase().includes('reject') ||
|
|
179
|
+
status.toLowerCase() === 'cancel') {
|
|
180
|
+
return type === 'status' ? 'danger' : 'close';
|
|
181
|
+
}
|
|
182
|
+
else if (status === Constants.FORM_STATUS_PENDING ||
|
|
183
|
+
status.toLowerCase() === 'pending') {
|
|
184
|
+
return type === 'status' ? 'warning' : 'clock';
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
return type === 'status' ? 'success' : 'check';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
return type === 'status' ? 'success' : 'check';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
locationHref(hrefLink) {
|
|
195
|
+
window.location.href = hrefLink;
|
|
196
|
+
}
|
|
197
|
+
statusClass(status) {
|
|
198
|
+
if (status) {
|
|
199
|
+
if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED
|
|
200
|
+
|| status.toLowerCase() === 'reject' || status.toLowerCase() === 'unsatisfied' || status.toLowerCase() === 'cancel') {
|
|
201
|
+
return 'danger';
|
|
202
|
+
}
|
|
203
|
+
else if (status === Constants.FORM_STATUS_PENDING || status.toLowerCase() === 'pending') {
|
|
204
|
+
return 'warning';
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
return 'success';
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
return 'success';
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
statusIcon(status) {
|
|
215
|
+
if (status) {
|
|
216
|
+
if (status === Constants.FORM_STATUS_REJECTED || status === Constants.FORM_STATUS_CANCELLED
|
|
217
|
+
|| status.toLowerCase() === 'reject' || status.toLowerCase() === 'unsatisfied' || status.toLowerCase() === 'cancel') {
|
|
218
|
+
return 'close';
|
|
219
|
+
}
|
|
220
|
+
else if (status === Constants.FORM_STATUS_PENDING || status.toLowerCase() === 'pending') {
|
|
221
|
+
return 'clock';
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
return 'check';
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
return 'check';
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
232
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: FormSectionComponent, isStandalone: true, selector: "app-form-section", inputs: { requestDetails: "requestDetails", section: "section", form: "form", lov: "lov", isReadOnly: "isReadOnly", isOpen: "isOpen", isFinalApproval: "isFinalApproval", controllers: "controllers", segmentDynamicLoaderService: "segmentDynamicLoaderService", sectionFormComponent: "sectionFormComponent", sectionName: "sectionName" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<!-- <div class=\"panel-heading\" role=\"button\" [id]=\"sectionId()\" *ngIf=\"showHeader()\"> -->\r\n<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"isExpanded\" *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusIconClass(sectionStatusKey,'status')}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIconClass(sectionStatusKey,'icon')}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n <ng-container *ngIf=\"(!section?.body?.details?.stage0?.isStage0 || section?.body?.details?.stage0?.isStage0 === 'false')\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'receipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-ueser-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"\r\n alt=\"\" />\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.decision?.key\"\r\n status=\"{{statusIconClass(sectionStatusKey,'status')}}\">{{ sectionStatusValue }}\r\n </ds-status>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] === 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n\r\n<sat-popover #popover [hasBackdrop]=\"true\" horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"delegate-info-popup\">\r\n <ds-avatar *ngIf=\"userType === 'receipient'\" image=\"{{section?.header?.personToThumbnail}}\" size=\"small\"></ds-avatar>\r\n <ds-avatar *ngIf=\"userType === 'delegate'\" image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\"></ds-avatar>\r\n <div class=\"delegate-info mx-0\">\r\n <div class=\"fs-16 fw-medium fc-black mb-0\">{{ userPopoverInfo?.name }}</div>\r\n <div class=\"fs-12 fw-normal fc-black mb-2\">{{ userPopoverInfo?.job?.name }}</div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"phone\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <bdi (click)=\"locationHref('tel:'+ userPopoverInfo?.contact?.work)\">{{ userPopoverInfo?.contact?.work }}</bdi>\r\n </div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"phone\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <bdi (click)=\"locationHref('tel:'+ userPopoverInfo?.contact?.mobile)\">{{ userPopoverInfo?.contact?.mobile }}</bdi>\r\n </div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"mail-o\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <span (click)=\"locationHref('mailto:'+ userPopoverInfo?.email)\">{{ userPopoverInfo?.email }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</sat-popover>\r\n\r\n\r\n\r\n<!--\r\n<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"true\" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo;\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\" [ngClass]=\"{'panel-ueser-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.['decision']?.key;\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n\r\n <app-workflow-approval\r\n [isReadOnly]=\"input.isReadOnly\"\r\n [lov]=\"input.lov\"\r\n [section]=\"input.section\"\r\n [requestDetails]=\"requestDetails\"\r\n ></app-workflow-approval>\r\n <!– <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>–>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] == 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n-->\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"], dependencies: [{ kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: ComponentOutletIoDirective, selector: "[ngComponentOutletNdcDynamicInputs],[ngComponentOutletNdcDynamicOutputs]", inputs: ["ngComponentOutletNdcDynamicInputs", "ngComponentOutletNdcDynamicOutputs"], exportAs: ["ndcDynamicIo"] }, { kind: "ngmodule", type: SatPopoverModule }, { kind: "component", type: i2.SatPopoverComponent, selector: "sat-popover", inputs: ["anchor", "horizontalAlign", "xAlign", "verticalAlign", "yAlign", "forceAlignment", "lockAlignment", "autoFocus", "restoreFocus", "scrollStrategy", "hasBackdrop", "interactiveClose", "openTransition", "closeTransition", "openAnimationStartAtScale", "closeAnimationEndAtScale", "backdropClass", "panelClass"], outputs: ["opened", "closed", "afterOpen", "afterClose", "backdropClicked", "overlayKeydown"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
233
|
+
}
|
|
234
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormSectionComponent, decorators: [{
|
|
235
|
+
type: Component,
|
|
236
|
+
args: [{ selector: 'app-form-section', standalone: true, imports: [
|
|
237
|
+
MatExpansionPanel,
|
|
238
|
+
NgIf,
|
|
239
|
+
NgComponentOutlet,
|
|
240
|
+
ComponentOutletIoDirective,
|
|
241
|
+
SatPopoverModule,
|
|
242
|
+
NgClass
|
|
243
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<!-- <div class=\"panel-heading\" role=\"button\" [id]=\"sectionId()\" *ngIf=\"showHeader()\"> -->\r\n<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"isExpanded\" *ngIf=\"form?.header?.status?.['key'] !== 'NEW' \" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusIconClass(sectionStatusKey,'status')}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIconClass(sectionStatusKey,'icon')}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n <ng-container *ngIf=\"(!section?.body?.details?.stage0?.isStage0 || section?.body?.details?.stage0?.isStage0 === 'false')\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'receipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\"\r\n [ngClass]=\"{'panel-ueser-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"\r\n alt=\"\" />\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.decision?.key\"\r\n status=\"{{statusIconClass(sectionStatusKey,'status')}}\">{{ sectionStatusValue }}\r\n </ds-status>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n\r\n <section class=\"border-top pt-4\">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] === 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n\r\n<sat-popover #popover [hasBackdrop]=\"true\" horizontalAlign=\"center\" verticalAlign=\"above\">\r\n <div class=\"delegate-info-popup\">\r\n <ds-avatar *ngIf=\"userType === 'receipient'\" image=\"{{section?.header?.personToThumbnail}}\" size=\"small\"></ds-avatar>\r\n <ds-avatar *ngIf=\"userType === 'delegate'\" image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\"></ds-avatar>\r\n <div class=\"delegate-info mx-0\">\r\n <div class=\"fs-16 fw-medium fc-black mb-0\">{{ userPopoverInfo?.name }}</div>\r\n <div class=\"fs-12 fw-normal fc-black mb-2\">{{ userPopoverInfo?.job?.name }}</div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"phone\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <bdi (click)=\"locationHref('tel:'+ userPopoverInfo?.contact?.work)\">{{ userPopoverInfo?.contact?.work }}</bdi>\r\n </div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"phone\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <bdi (click)=\"locationHref('tel:'+ userPopoverInfo?.contact?.mobile)\">{{ userPopoverInfo?.contact?.mobile }}</bdi>\r\n </div>\r\n <div class=\"user-info fc-black fs-10 mb-1\">\r\n <ds-icon icon=\"mail-o\" class=\"fs-18 fc-dark-gray\"></ds-icon>\r\n <span (click)=\"locationHref('mailto:'+ userPopoverInfo?.email)\">{{ userPopoverInfo?.email }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</sat-popover>\r\n\r\n\r\n\r\n<!--\r\n<mat-expansion-panel\r\n class=\"mb-4\" [expanded]=\"true\" hideToggle\r\n #approvalPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n\r\n <div class=\"approval-panel-container\">\r\n <div class=\"d-flex gap-2 flex-grow-1 approval-panel-title\">\r\n <ds-status\r\n status=\"{{statusClass(sectionStatusKey)}}\" no-opacity icon\r\n class=\"circle-status d-none d-sm-inline-block\">\r\n <ds-icon icon=\"{{statusIcon(sectionStatusKey)}}\"></ds-icon>\r\n </ds-status>\r\n <div class=\"d-flex flex-column flex-grow-1\">\r\n <span class=\"fs-16 fw-medium m-0\"> {{ sectionName }}</span>\r\n <bdi class=\"fs-12 fc-dark-gray fw-normal line-height-1 d-block mt-1\" *ngIf=\"section.header?.processedBy\">\r\n {{ processingDate }}\r\n </bdi>\r\n </div>\r\n </div>\r\n <div class=\"approval-panel-details gap-1\">\r\n <div\r\n class=\"d-flex align-items-center gap-3\" *ngIf=\"section?.header?.personTo;\"\r\n (click)=\"$event.stopImmediatePropagation();\">\r\n <div\r\n (click)=\"toggleSmallProfileInfo($event, 'recipient')\"\r\n class=\"d-flex align-items-center gap-2 radius-3 h-40\"\r\n [ngClass]=\"{'user-avatar-name px-0 px-md-2': !section?.header?.delegatedTo, 'p-0': section?.header?.delegatedTo}\">\r\n <ds-avatar image=\"{{section?.header?.personToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\" [ngClass]=\"{'panel-ueser-only': !section?.header?.delegatedTo}\"\r\n *ngIf=\"!section?.header?.delegatedTo\">{{ section?.header?.personTo }}</span>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"section?.header?.delegatedTo\" class=\"d-flex align-items-center gap-3\"\r\n (click)=\"toggleSmallProfileInfo($event, 'delegate')\">\r\n <img\r\n class=\"rotate-arrow\"\r\n src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMSIgaGVpZ2h0PSIxMyIgdmlld0JveD0iMCAwIDIxIDEzIj48cGF0aCBkPSJNMjEsNy43NjNhMS42MjEsMS42MjEsMCwwLDEtLjQ0Ny41OTMsMS4zMDYsMS4zMDYsMCwwLDEtLjc1LjE5NGMtNy4yODQsMC04LjU2OCwwLTE1Ljg1MywwSDMuNjY5TDMuNjMsOC42Yy4wNzcuMDY0LjE1OC4xMjQuMjI5LjE5NHExLjcxLDEuNjksMy40MiwzLjM4MWExLjAyMywxLjAyMywwLDAsMSwuMjkxLDEuMDc5Ljk5Mi45OTIsMCwwLDEtLjguNzE5LDEuMDUzLDEuMDUzLDAsMCwxLTEtLjMzMVEzLjgzMSwxMS43MTksMS44ODYsOS44Yy0uNDQyLS40MzctLjg3OS0uODgxLTEuMzMtMS4zMDlBNC41NzIsNC41NzIsMCwwLDEsMCw3LjgxNFY3LjE4NUEzMC43ODMsMzAuNzgzLDAsMCwxLDIuNzMsNC4zNzFjMS0xLjAyNywyLjAzOC0yLjAyNSwzLjA2My0zLjAzMkExLjA0OSwxLjA0OSwwLDEsMSw3LjI3NywyLjgyQzYuNCwzLjcsNS41MDksNC41Nyw0LjYyNSw1LjQ0NmMtLjMyMy4zMjEtLjY0NC42NDUtLjk3My45NzYuMDg0LjA1OS4xODEuMDI3LjI3LjAyNyw3LjI1OCwwLDguNTE2LDAsMTUuNzc1LDBBMS4xMjksMS4xMjksMCwwLDEsMjEsNy4yOXYuNDcyWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAtMC45OTkpIiBmaWxsPSIjYTU0ZWUxIi8+PC9zdmc+\"/>\r\n <div class=\"d-flex align-items-center gap-2 px-0 px-md-2 radius-3 user-avatar-name h-40\">\r\n <ds-avatar image=\"{{section?.header?.delegatedToThumbnail}}\" size=\"small\" class=\"user-avatar\"></ds-avatar>\r\n <span\r\n class=\"fs-14 fw-medium d-inline-block panel-user-name text-truncate\">{{ section?.header?.delegatedTo }}</span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <ds-status\r\n class=\"main-status\" *ngIf=\"section?.body?.details?.['decision']?.key;\"\r\n status=\"{{statusClass(section?.body?.details?.['decision']?.key)}}\">{{ section?.body?.details?.['decision']?.value }}\r\n </ds-status>\r\n </div>\r\n\r\n <div class=\"approval-panel-toggle\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\" *ngIf=\"!approvalPanel.expanded\"></ds-icon>\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\" *ngIf=\"approvalPanel.expanded\"></ds-icon>\r\n </div>\r\n\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"border-top pt-4\">\r\n\r\n <app-workflow-approval\r\n [isReadOnly]=\"input.isReadOnly\"\r\n [lov]=\"input.lov\"\r\n [section]=\"input.section\"\r\n [requestDetails]=\"requestDetails\"\r\n ></app-workflow-approval>\r\n <!– <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>–>\r\n </section>\r\n\r\n</mat-expansion-panel>\r\n<ng-container *ngIf=\"form?.header?.status?.['key'] == 'NEW' \">\r\n <ng-container *ngComponentOutlet=\"sectionFormComponent; ndcDynamicInputs: input\"></ng-container>\r\n</ng-container>\r\n-->\r\n", styles: [":host ::ng-deep .mat-expansion-panel-content{background:#fff!important}:host .mat-expansion-panel-content{background:#fff!important}:host .approval-panel-container{display:grid;grid-template-columns:40% calc(60% - 45px) 20px;grid-template-areas:\"title details toggle\";gap:.75rem;place-content:space-between;align-items:center;flex-grow:1;width:100%}@media (max-width: 991px){:host .approval-panel-container{grid-template-columns:calc(100% - 45px) 20px;grid-template-areas:\"title toggle\" \"details details\"}}:host .approval-panel-container .approval-panel-title{grid-area:title}:host .approval-panel-container .panel-user-name{max-width:120px}@media (max-width: 768px){:host .approval-panel-container .panel-user-name.panel-ueser-only{max-width:140px}:host .approval-panel-container .panel-user-name:not(.panel-ueser-only){max-width:90px}}:host .approval-panel-container .approval-panel-details{display:flex;align-items:center;justify-content:space-between;grid-area:details}:host .approval-panel-container .approval-panel-toggle{grid-area:toggle;display:flex;align-items:center;justify-content:center;width:20px}:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 25px}@media (min-width: 768px){:host ::ng-deep ds-avatar.user-avatar .avatar{--default-size: 31px;--avatar-border: 3px solid var(--light-gray)}}@media (min-width: 768px){:host ::ng-deep .user-avatar-name{padding-inline-end:1rem!important}}:host .circle-status::part(base){--status-radius: 50%;--status-size: 18px;--status-fs: 80% }:host .panel-title{min-width:40%;width:40%}@media (max-width: 576px){:host .panel-title{min-width:100%!important;width:100%!important}}:host .panel-user-status{min-width:60%;width:60%;display:flex;align-items:center;justify-content:space-between}@media (max-width: 576px){:host .panel-user-status{min-width:100%!important;width:100%!important}:host .panel-user-status .user-delegate{min-width:auto}:host .panel-user-status .main-status::part(base){--status-width: 50px}}\n"] }]
|
|
244
|
+
}], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { popover: [{
|
|
245
|
+
type: ViewChild,
|
|
246
|
+
args: ['popover']
|
|
247
|
+
}], requestDetails: [{
|
|
248
|
+
type: Input
|
|
249
|
+
}], section: [{
|
|
250
|
+
type: Input
|
|
251
|
+
}], form: [{
|
|
252
|
+
type: Input
|
|
253
|
+
}], lov: [{
|
|
254
|
+
type: Input
|
|
255
|
+
}], isReadOnly: [{
|
|
256
|
+
type: Input
|
|
257
|
+
}], isOpen: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], isFinalApproval: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}], controllers: [{
|
|
262
|
+
type: Input
|
|
263
|
+
}], segmentDynamicLoaderService: [{
|
|
264
|
+
type: Input
|
|
265
|
+
}], sectionFormComponent: [{
|
|
266
|
+
type: Input
|
|
267
|
+
}], sectionName: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}] } });
|
|
270
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvZm9ybS1zZWN0aW9uL2Zvcm0tc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtDLFNBQVMsRUFBRSxzQkFBc0IsRUFBYyxLQUFLLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXZJLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDakUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQsT0FBTyxLQUFLLFNBQVMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFTLEtBQUssTUFBTSxNQUFNLFFBQVEsQ0FBQTs7OztBQWlCbEMsTUFBTSxPQUFPLG9CQUFvQjtJQXNDdEI7SUFwQ1QsUUFBUSxHQUFHLFlBQVksQ0FBQztJQUNGLE9BQU8sQ0FBTztJQUNwQyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLGVBQWUsR0FBRyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQyxDQUFDO0lBQzNCLGNBQWMsQ0FBVTtJQUNqQyxlQUFlLEdBQVEsRUFBRSxDQUFD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LHNMQUNqQixJQUFJLDZGQUNKLGlCQUFpQixvUEFDakIsMEJBQTBCLHFPQUMxQixnQkFBZ0IsMGdCQUNoQixPQUFPOzsyRkFJRSxvQkFBb0I7a0JBZmhDLFNBQVM7K0JBQ0Usa0JBQWtCLGNBR2hCLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLElBQUk7d0JBQ0osaUJBQWlCO3dCQUNqQiwwQkFBMEI7d0JBQzFCLGdCQUFnQjt3QkFDaEIsT0FBTztxQkFDUixXQUNRLENBQUMsc0JBQXNCLENBQUM7b0ZBS1gsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUdYLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxHQUFHO3NCQUFYLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLDJCQUEyQjtzQkFBbkMsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3Q2hlY2tlZCwgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvcmVJMThuU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge0NvbXBvbmVudE91dGxldElvRGlyZWN0aXZlfSBmcm9tICduZy1keW5hbWljLWNvbXBvbmVudCc7XHJcbmltcG9ydCB7TmdDbGFzcywgTmdDb21wb25lbnRPdXRsZXQsIE5nSWZ9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7TWF0RXhwYW5zaW9uUGFuZWx9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2V4cGFuc2lvbic7XHJcbmltcG9ydCB7U2F0UG9wb3Zlck1vZHVsZX0gZnJvbSAnQG5jc3RhdGUvc2F0LXBvcG92ZXInO1xyXG5pbXBvcnQge0Zvcm0sIFNlY3Rpb259IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgKiBhcyBDb25zdGFudHMgZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0ICAgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50J1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtZm9ybS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9mb3JtLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE1hdEV4cGFuc2lvblBhbmVsLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ29tcG9uZW50T3V0bGV0LFxyXG4gICAgQ29tcG9uZW50T3V0bGV0SW9EaXJlY3RpdmUsXHJcbiAgICBTYXRQb3BvdmVyTW9kdWxlLFxyXG4gICAgTmdDbGFzc1xyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtU2VjdGlvbkNvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBBZnRlclZpZXdJbml0IHtcclxuICB1c2VyVHlwZSA9ICdyZWNlaXBpZW50JztcclxuICBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3Zlcj86IGFueTtcclxuICBwb3BvdmVyVHlwZSA9ICdyZWNlaXBpZW50JztcclxuICBwb3BvdmVyUG9zaXRpb24gPSB7dG9wOiAwLCBsZWZ0OiAwfTtcclxuICBASW5wdXQoKSByZXF1ZXN0RGV0YWlsczogU2VjdGlvbjtcclxuICB1c2VyUG9wb3ZlckluZm86IGFueSA9IHt9O1xyXG4gIEBJbnB1dCgpIHNlY3Rpb246IFNlY3Rpb247XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBsb3Y6IGFueTtcclxuICBASW5wdXQoKSBpc1JlYWRPbmx5OiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbjtcclxuICBASW5wdXQoKSBpc0ZpbmFsQXBwcm92YWw6IGJvb2xlYW47XHJcbiAgQElucHV0KCkgY29udHJvbGxlcnM6IGFueTtcclxuICBASW5wdXQoKSBzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2U6IGFueTtcclxuICBASW5wdXQoKSBzZWN0aW9uRm9ybUNvbXBvbmVudDogYW55ID0gbnVsbDtcclxuICBASW5wdXQoKSBzZWN0aW9uTmFtZSA9ICdTRUNUSU9OX05BTUUucmVxdWVzdERldGFpbHMnO1xyXG4gIHNlY3Rpb25OdW1iZXI6IG51bWJlcjtcclxuICBzZWN0aW9uU3RhdHVzVmFsdWU6IHN0cmluZztcclxuICBzZWN0aW9uU3RhdHVzS2V5OiBzdHJpbmc7XHJcbiAgcmVjZWlwaWVudCA9IHtcclxuICAgIGlzU2hvd2luZzogZmFsc2UsXHJcbiAgICBwcm9maWxlOiBudWxsXHJcbiAgfTtcclxuICBkZWxlZ2F0ZSA9IHtcclxuICAgIGlzU2hvd2luZzogZmFsc2UsXHJcbiAgICBwcm9maWxlOiBudWxsXHJcbiAgfTtcclxuICBwdWJsaWMgaW5wdXQ7XHJcbiAgaGlnaGxpZ2h0RmxhZzogYm9vbGVhbjtcclxuXHJcbiAgcHJvY2Vzc2luZ0RhdGU6IHN0cmluZztcclxuICBwdWJsaWMgcmFuZG9tSUQ6IG51bWJlciA9XHJcbiAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAoOTk5OTk5IC0gMTAwMDAwKSkgKyAxMDAwMDA7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gcHJpdmF0ZSBzZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2U6IFNlZ21lbnREeW5hbWljTG9hZGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmhpZ2hsaWdodEZsYWcgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWN0aW9uRm9ybUNvbXBvbmVudCA9IHRoaXMuc2VnbWVudER5bmFtaWNMb2FkZXJTZXJ2aWNlLmdldENvbXBvbmVudChcclxuICAgICAgdGhpcy5zZWN0aW9uLmlkXHJcbiAgICApO1xyXG5cclxuICAgIGlmICh0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLnN0YWdlTmFtZSkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscy5zdGFnZU5hbWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlY3Rpb25OYW1lID0gdGhpcy5zZWdtZW50RHluYW1pY0xvYWRlclNlcnZpY2UuZ2V0U2VjdGlvbk5hbWUodGhpcy5zZWN0aW9uLmlkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlucHV0ID0ge1xyXG4gICAgICBpc1JlYWRPbmx5OiB0aGlzLmlzUmVhZE9ubHksXHJcbiAgICAgIGxvdjogdGhpcy5sb3YsXHJcbiAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbixcclxuICAgICAgY29udHJvbGxlcnM6IHRoaXMuY29udHJvbGxlcnMsXHJcbiAgICAgIHJlcXVlc3REZXRhaWxzOiB0aGlzLnJlcXVlc3REZXRhaWxzXHJcbiAgICB9O1xyXG4gICAgaWYgKHRoaXMuc2VjdGlvbi5oZWFkZXIgJiYgdGhpcy5zZWN0aW9uLmhlYWRlci5wcm9jZXNzaW5nRGF0ZSkge1xyXG4gICAgICB0aGlzLnByb2Nlc3NpbmdEYXRlID0gbW9tZW50KHRoaXMuc2VjdGlvbi5oZWFkZXIucHJvY2Vzc2luZ0RhdGUpXHJcbiAgICAgICAgLmxvY2FsZSgnZW4tVVMnKVxyXG4gICAgICAgIC5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW06c3MnKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmhpZ2hsaWdodEZsYWcgPSB0aGlzLmlzT3BlbjtcclxuICAgIGNvbnN0IHggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjY29sbGFwc2UnICsgdGhpcy5zZWN0aW9uSWQoKSk7XHJcbiAgICBpZiAoeC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2VjdGlvbk51bWJlciA9IHgubGVuZ3RoO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuc2VjdGlvbi5pZCAhPT0gJ3JlcXVlc3REZXRhaWxzJyAmJlxyXG4gICAgICB0aGlzLnNlY3Rpb24uaWQgIT09ICdoclJlcXVlc3REZXRhaWxzJyAmJlxyXG4gICAgICAhdGhpcy5zZWN0aW9uU3RhdHVzS2V5ICYmXHJcbiAgICAgIHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMuZGVjaXNpb24gJiZcclxuICAgICAgdGhpcy5zZWN0aW9uLmJvZHkuZGV0YWlscy5kZWNpc2lvbi5rZXlcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25TdGF0dXNLZXkgPSB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmRlY2lzaW9uLmtleTtcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWN0aW9uLmlkICE9PSAncmVxdWVzdERldGFpbHMnICYmXHJcbiAgICAgIHRoaXMuc2VjdGlvbi5pZCAhPT0gJ2hyUmVxdWVzdERldGFpbHMnICYmXHJcbiAgICAgICF0aGlzLnNlY3Rpb25TdGF0dXNWYWx1ZSAmJlxyXG4gICAgICB0aGlzLnNlY3Rpb24uYm9keS5kZXRhaWxzLmRlY2lzaW9uICYmXHJcbiAgICAgIHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMuZGVjaXNpb24udmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNlY3Rpb25TdGF0dXNWYWx1ZSA9IHRoaXMuc2VjdGlvbi5ib2R5LmRldGFpbHMuZGVjaXNpb24udmFsdWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLlNlcnZpY2VzU3ViU2NyaXB0aW9ucygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBpc0V4cGFuZGFibGVGcm9tQmFja2VuZCA9IHRoaXMuZm9ybT8uc2VjdGlvbnM/Lmxlbmd0aCAmJiB0aGlzLmZvcm0uc2VjdGlvbnMuc29tZShzZWN0aW9uID0+ICdleHBhbmRTdGFnZScgaW4gc2VjdGlvbj8uYm9keT8uZGV0YWlscyk7XHJcbiAgICBpZiAoIWlzRXhwYW5kYWJsZUZyb21CYWNrZW5kKSByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiB0aGlzLnNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmV4cGFuZFN0YWdlID09PSAndHJ1ZSc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgU2VydmljZXNTdWJTY3JpcHRpb25zKCkge1xyXG4gICAgLyogIHRoaXMucHJvZmlsZVJlcXVlc3RvclNlcnZpY2UuZ2V0Rm9ybSgpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IGRhdGE7XHJcbiAgICAgIH0pOyovXHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XHJcbiAgICB0aGlzLmlucHV0ID0ge1xyXG4gICAgICBpc1JlYWRPbmx5OiB0aGlzLmlzUmVhZE9ubHksXHJcbiAgICAgIGxvdjogdGhpcy5sb3YsXHJcbiAgICAgIHNlY3Rpb246IHRoaXMuc2VjdGlvbixcclxuICAgICAgY29udHJvbGxlcnM6IHRoaXMuY29udHJvbGxlcnMsXHJcbiAgICAgIHNlY3Rpb25JZDogdGhpcy5zZWN0aW9uXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc2VjdGlvbklkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5pZC5zcGxpdCgnICcpLmpvaW4oJycpICsgdGhpcy5yYW5kb21JRDtcclxuICB9XHJcblxyXG4gIGdldFNlY3Rpb25OYW1lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5pZDtcclxuICB9XHJcblxyXG4gIGdldEZvcm1TdGVwU3RhdHVzKGtleTogc3RyaW5nKSB7XHJcbiAgICBsZXQgc3RhdHVzID0gJ05PVF9GT1VORF9JTl9MT1YnO1xyXG4gICAgaWYgKHRoaXMubG92LmZvcm1TdGVwU3RhdHVzICYmIHRoaXMubG92LmZvcm1TdGVwU3RhdHVzLm9wdGlvbnMpIHtcclxuICAgICAgdGhpcy5sb3YuZm9ybVN0ZXBTdGF0dXMub3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICBpZiAob3B0aW9uLnZhbHVlID09PSBrZXkpIHtcclxuICAgICAgICAgIHN0YXR1cyA9IG9wdGlvbi5kZXNjcmlwdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0YXR1cztcclxuICB9XHJcblxyXG4gIHRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oZXZlbnQsIHBlcnNvblR5cGUpIHtcclxuICAgIHRoaXMudXNlclR5cGUgPSBwZXJzb25UeXBlO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICBjb25zdCB1c2VySW5mbyA9IHRoaXNbcGVyc29uVHlwZV07XHJcbiAgICBpZiAodXNlckluZm8ucHJvZmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnBvcG92ZXJUeXBlID0gcGVyc29uVHlwZTtcclxuICAgICAgY29uc3QgdXNlckVtYWlsID1cclxuICAgICAgICBwZXJzb25UeXBlID09PSAncmVjZWlwaWVudCdcclxuICAgICAgICAgID8gdGhpcy5zZWN0aW9uLmhlYWRlci5wZXJzb25Ub1RodW1ibmFpbC5zcGxpdCgnPScpWzFdXHJcbiAgICAgICAgICA6IHRoaXM/LnNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9UaHVtYm5haWwuc3BsaXQoJz0nKVsxXTtcclxuICAgICAgLyp0aGlzLnN0YXRlTWFjaGluZVxyXG4gICAgICAgIC5kaXNwYXRjaChDb25zdGFudHMuU1RBVEVfTUFDSElORV9BQ1RJT05fRU1QTE9ZRUVfUFJPRklMRSwgdXNlckVtYWlsKVxyXG4gICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2codGhpcywgcmVzcG9uc2UpO1xyXG5cclxuICAgICAgICAgIGlmIChyZXNwb25zZSkge1xyXG4gICAgICAgICAgICB0aGlzW3BlcnNvblR5cGVdLnByb2ZpbGUgPSByZXNwb25zZTtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUG9zaXRpb24gPSB7XHJcbiAgICAgICAgICAgICAgdG9wOiAxMCxcclxuICAgICAgICAgICAgICBsZWZ0OlxyXG4gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgK1xyXG4gICAgICAgICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gNFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuYW5jaG9yID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIub3BlbigpO1xyXG4gICAgICAgICAgICB0aGlzLnVzZXJQb3BvdmVySW5mbyA9IHJlc3BvbnNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pOyovXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnVzZXJQb3BvdmVySW5mbyA9IHRoaXNbcGVyc29uVHlwZV0ucHJvZmlsZTtcclxuICAgICAgdGhpcy5wb3BvdmVyUG9zaXRpb24gPSB7XHJcbiAgICAgICAgdG9wOiAxMCxcclxuICAgICAgICBsZWZ0OlxyXG4gICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmxlZnQgK1xyXG4gICAgICAgICAgZXZlbnQudGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIC8gNFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnBvcG92ZXIuYW5jaG9yID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICB0aGlzLnBvcG92ZXIub3BlbigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdHVzSWNvbkNsYXNzKHN0YXR1czogc3RyaW5nLCB0eXBlOiBzdHJpbmcpIHtcclxuICAgIGlmIChzdGF0dXMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHN0YXR1cyA9PT0gQ29uc3RhbnRzLkZPUk1fU1RBVFVTX1JFSkVDVEVEIHx8XHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEIHx8XHJcbiAgICAgICAgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8XHJcbiAgICAgICAgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICd1bnNhdGlzZmllZCcgfHxcclxuICAgICAgICBzdGF0dXMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnZGVueScpIHx8XHJcbiAgICAgICAgc3RhdHVzLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3JlamVjdCcpIHx8XHJcbiAgICAgICAgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdjYW5jZWwnXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiB0eXBlID09PSAnc3RhdHVzJyA/ICdkYW5nZXInIDogJ2Nsb3NlJztcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBzdGF0dXMgPT09IENvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HIHx8XHJcbiAgICAgICAgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdwZW5kaW5nJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ3N0YXR1cycgPyAnd2FybmluZycgOiAnY2xvY2snO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB0eXBlID09PSAnc3RhdHVzJyA/ICdzdWNjZXNzJyA6ICdjaGVjayc7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0eXBlID09PSAnc3RhdHVzJyA/ICdzdWNjZXNzJyA6ICdjaGVjayc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2NhdGlvbkhyZWYoaHJlZkxpbmspIHtcclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaHJlZkxpbms7XHJcbiAgfVxyXG5cclxuICBzdGF0dXNDbGFzcyhzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Rhbmdlcic7XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUEVORElORyB8fCBzdGF0dXMudG9Mb3dlckNhc2UoKSA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgcmV0dXJuICd3YXJuaW5nJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc3RhdHVzSWNvbihzdGF0dXM6IHN0cmluZykge1xyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfUkVKRUNURUQgfHwgc3RhdHVzID09PSBDb25zdGFudHMuRk9STV9TVEFUVVNfQ0FOQ0VMTEVEXHJcbiAgICAgICAgfHwgc3RhdHVzLnRvTG93ZXJDYXNlKCkgPT09ICdyZWplY3QnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAndW5zYXRpc2ZpZWQnIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsJ1xyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb3NlJztcclxuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09IENvbnN0YW50cy5GT1JNX1NUQVRVU19QRU5ESU5HIHx8IHN0YXR1cy50b0xvd2VyQ2FzZSgpID09PSAncGVuZGluZycpIHtcclxuICAgICAgICByZXR1cm4gJ2Nsb2NrJztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gJ2NoZWNrJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICdjaGVjayc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjwhLS0gPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIiByb2xlPVwiYnV0dG9uXCIgW2lkXT1cInNlY3Rpb25JZCgpXCIgKm5nSWY9XCJzaG93SGVhZGVyKClcIj4gLS0+XHJcbjxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiAqbmdJZj1cImZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddICE9PSAnTkVXJyBcIiBoaWRlVG9nZ2xlXHJcbiAgI2FwcHJvdmFsUGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZmxleC1ncm93LTEgYXBwcm92YWwtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0ljb25DbGFzcyhzZWN0aW9uU3RhdHVzS2V5LCdzdGF0dXMnKX19XCIgbm8tb3BhY2l0eSBpY29uXHJcbiAgICAgICAgICBjbGFzcz1cImNpcmNsZS1zdGF0dXMgZC1ub25lIGQtc20taW5saW5lLWJsb2NrXCI+XHJcbiAgICAgICAgICA8ZHMtaWNvbiBpY29uPVwie3tzdGF0dXNJY29uQ2xhc3Moc2VjdGlvblN0YXR1c0tleSwnaWNvbicpfX1cIj48L2RzLWljb24+XHJcbiAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gbS0wXCI+IHt7IHNlY3Rpb25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgPGJkaSBjbGFzcz1cImZzLTEyIGZjLWRhcmstZ3JheSBmdy1ub3JtYWwgbGluZS1oZWlnaHQtMSBkLWJsb2NrXCIgKm5nSWY9XCJzZWN0aW9uLmhlYWRlcj8ucHJvY2Vzc2VkQnlcIj5cclxuICAgICAgICAgICAge3sgcHJvY2Vzc2luZ0RhdGUgfX1cclxuICAgICAgICAgIDwvYmRpPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLWRldGFpbHMgZ2FwLTFcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKCFzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5zdGFnZTA/LmlzU3RhZ2UwIHx8IHNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LnN0YWdlMD8uaXNTdGFnZTAgPT09ICdmYWxzZScpXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtM1wiICpuZ0lmPVwic2VjdGlvbj8uaGVhZGVyPy5wZXJzb25Ub1wiXHJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdyZWNlaXBpZW50JylcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiByYWRpdXMtMyBoLTQwXCJcclxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3VzZXItYXZhdGFyLW5hbWUgcHgtMCBweC1tZC0yJzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG8sICdwLTAnOiBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvfVwiPlxyXG4gICAgICAgICAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiIGNsYXNzPVwidXNlci1hdmF0YXJcIj48L2RzLWF2YXRhcj5cclxuICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwYW5lbC11ZXNlci1vbmx5JzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG99XCJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9cIj57eyBzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAqbmdJZj1cInNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9cIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVTbWFsbFByb2ZpbGVJbmZvKCRldmVudCwgJ2RlbGVnYXRlJylcIj5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvdGF0ZS1hcnJvd1wiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSGRwWkhSb1BTSXlNU0lnYUdWcFoyaDBQU0l4TXlJZ2RtbGxkMEp2ZUQwaU1DQXdJREl4SURFeklqNDhjR0YwYUNCa1BTSk5NakVzTnk0M05qTmhNUzQyTWpFc01TNDJNakVzTUN3d0xERXRMalEwTnk0MU9UTXNNUzR6TURZc01TNHpNRFlzTUN3d0xERXRMamMxTGpFNU5HTXROeTR5T0RRc01DMDRMalUyT0N3d0xURTFMamcxTXl3d1NETXVOalk1VERNdU5qTXNPQzQyWXk0d056Y3VNRFkwTGpFMU9DNHhNalF1TWpJNUxqRTVOSEV4TGpjeExERXVOamtzTXk0ME1pd3pMak00TVdFeExqQXlNeXd4TGpBeU15d3dMREFzTVN3dU1qa3hMREV1TURjNUxqazVNaTQ1T1RJc01Dd3dMREV0TGpndU56RTVMREV1TURVekxERXVNRFV6TERBc01Dd3hMVEV0TGpNek1WRXpMamd6TVN3eE1TNDNNVGtzTVM0NE9EWXNPUzQ0WXkwdU5EUXlMUzQwTXpjdExqZzNPUzB1T0RneExURXVNek10TVM0ek1EbEJOQzQxTnpJc05DNDFOeklzTUN3d0xERXNNQ3czTGpneE5GWTNMakU0TlVFek1DNDNPRE1zTXpBdU56Z3pMREFzTUN3eExESXVOek1zTkM0ek56RmpNUzB4TGpBeU55d3lMakF6T0MweUxqQXlOU3d6TGpBMk15MHpMakF6TWtFeExqQTBPU3d4TGpBME9Td3dMREVzTVN3M0xqSTNOeXd5TGpneVF6WXVOQ3d6TGpjc05TNDFNRGtzTkM0MU55dzBMall5TlN3MUxqUTBObU10TGpNeU15NHpNakV0TGpZME5DNDJORFV0TGprM015NDVOell1TURnMExqQTFPUzR4T0RFdU1ESTNMakkzTGpBeU55dzNMakkxT0N3d0xEZ3VOVEUyTERBc01UVXVOemMxTERCQk1TNHhNamtzTVM0eE1qa3NNQ3d3TERFc01qRXNOeTR5T1hZdU5EY3lXaUlnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01DQXRNQzQ1T1RrcElpQm1hV3hzUFNJallUVTBaV1V4SWk4K1BDOXpkbWMrXCJcclxuICAgICAgICAgICAgICAgIGFsdD1cIlwiIC8+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgcHgtMCBweC1tZC0yIHJhZGl1cy0zIHVzZXItYXZhdGFyLW5hbWUgaC00MFwiPlxyXG4gICAgICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmcy0xNCBmdy1tZWRpdW0gZC1pbmxpbmUtYmxvY2sgcGFuZWwtdXNlci1uYW1lIHRleHQtdHJ1bmNhdGVcIj57eyBzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICAgIGNsYXNzPVwibWFpbi1zdGF0dXNcIiAqbmdJZj1cInNlY3Rpb24/LmJvZHk/LmRldGFpbHM/LmRlY2lzaW9uPy5rZXlcIlxyXG4gICAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0ljb25DbGFzcyhzZWN0aW9uU3RhdHVzS2V5LCdzdGF0dXMnKX19XCI+e3sgc2VjdGlvblN0YXR1c1ZhbHVlIH19XHJcbiAgICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtdG9nZ2xlXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cInBsdXMtMVwiIGNsYXNzPVwiZnMtMjAgZmMtY29yYWxcIiAqbmdJZj1cIiFhcHByb3ZhbFBhbmVsLmV4cGFuZGVkXCI+PC9kcy1pY29uPlxyXG5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwibWludXNcIiBjbGFzcz1cImZzLTIwIGZjLWRhcmstZ3JheVwiICpuZ0lmPVwiYXBwcm92YWxQYW5lbC5leHBhbmRlZFwiPjwvZHMtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJib3JkZXItdG9wIHB0LTRcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic2VjdGlvbkZvcm1Db21wb25lbnQ7IG5kY0R5bmFtaWNJbnB1dHM6IGlucHV0XCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybT8uaGVhZGVyPy5zdGF0dXM/Llsna2V5J10gPT09ICdORVcnIFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic2VjdGlvbkZvcm1Db21wb25lbnQ7IG5kY0R5bmFtaWNJbnB1dHM6IGlucHV0XCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuPHNhdC1wb3BvdmVyICNwb3BvdmVyIFtoYXNCYWNrZHJvcF09XCJ0cnVlXCIgaG9yaXpvbnRhbEFsaWduPVwiY2VudGVyXCIgdmVydGljYWxBbGlnbj1cImFib3ZlXCI+XHJcbiAgPGRpdiBjbGFzcz1cImRlbGVnYXRlLWluZm8tcG9wdXBcIj5cclxuICAgIDxkcy1hdmF0YXIgKm5nSWY9XCJ1c2VyVHlwZSA9PT0gJ3JlY2VpcGllbnQnXCIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8ucGVyc29uVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiPjwvZHMtYXZhdGFyPlxyXG4gICAgPGRzLWF2YXRhciAqbmdJZj1cInVzZXJUeXBlID09PSAnZGVsZWdhdGUnXCIgaW1hZ2U9XCJ7e3NlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG9UaHVtYm5haWx9fVwiIHNpemU9XCJzbWFsbFwiPjwvZHMtYXZhdGFyPlxyXG4gICAgPGRpdiBjbGFzcz1cImRlbGVnYXRlLWluZm8gbXgtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtMTYgZnctbWVkaXVtIGZjLWJsYWNrIG1iLTBcIj57eyB1c2VyUG9wb3ZlckluZm8/Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZzLTEyIGZ3LW5vcm1hbCBmYy1ibGFjayBtYi0yXCI+e3sgdXNlclBvcG92ZXJJbmZvPy5qb2I/Lm5hbWUgfX08L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInVzZXItaW5mbyBmYy1ibGFjayBmcy0xMCBtYi0xXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cInBob25lXCIgY2xhc3M9XCJmcy0xOCBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPGJkaSAoY2xpY2spPVwibG9jYXRpb25IcmVmKCd0ZWw6JysgdXNlclBvcG92ZXJJbmZvPy5jb250YWN0Py53b3JrKVwiPnt7IHVzZXJQb3BvdmVySW5mbz8uY29udGFjdD8ud29yayB9fTwvYmRpPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInVzZXItaW5mbyBmYy1ibGFjayBmcy0xMCBtYi0xXCI+XHJcbiAgICAgICAgPGRzLWljb24gaWNvbj1cInBob25lXCIgY2xhc3M9XCJmcy0xOCBmYy1kYXJrLWdyYXlcIj48L2RzLWljb24+XHJcbiAgICAgICAgPGJkaSAoY2xpY2spPVwibG9jYXRpb25IcmVmKCd0ZWw6JysgdXNlclBvcG92ZXJJbmZvPy5jb250YWN0Py5tb2JpbGUpXCI+e3sgdXNlclBvcG92ZXJJbmZvPy5jb250YWN0Py5tb2JpbGUgfX08L2JkaT5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWluZm8gZmMtYmxhY2sgZnMtMTAgbWItMVwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJtYWlsLW9cIiBjbGFzcz1cImZzLTE4IGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8c3BhbiAoY2xpY2spPVwibG9jYXRpb25IcmVmKCdtYWlsdG86JysgdXNlclBvcG92ZXJJbmZvPy5lbWFpbClcIj57eyB1c2VyUG9wb3ZlckluZm8/LmVtYWlsIH19PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NhdC1wb3BvdmVyPlxyXG5cclxuXHJcblxyXG48IS0tXHJcbjxtYXQtZXhwYW5zaW9uLXBhbmVsXHJcbiAgY2xhc3M9XCJtYi00XCIgW2V4cGFuZGVkXT1cInRydWVcIiBoaWRlVG9nZ2xlXHJcbiAgI2FwcHJvdmFsUGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtcGFuZWwtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTIgZmxleC1ncm93LTEgYXBwcm92YWwtcGFuZWwtdGl0bGVcIj5cclxuICAgICAgICA8ZHMtc3RhdHVzXHJcbiAgICAgICAgICBzdGF0dXM9XCJ7e3N0YXR1c0NsYXNzKHNlY3Rpb25TdGF0dXNLZXkpfX1cIiBuby1vcGFjaXR5IGljb25cclxuICAgICAgICAgIGNsYXNzPVwiY2lyY2xlLXN0YXR1cyBkLW5vbmUgZC1zbS1pbmxpbmUtYmxvY2tcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJ7e3N0YXR1c0ljb24oc2VjdGlvblN0YXR1c0tleSl9fVwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8L2RzLXN0YXR1cz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLTE2IGZ3LW1lZGl1bSBtLTBcIj4ge3sgc2VjdGlvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICA8YmRpIGNsYXNzPVwiZnMtMTIgZmMtZGFyay1ncmF5IGZ3LW5vcm1hbCBsaW5lLWhlaWdodC0xIGQtYmxvY2sgbXQtMVwiICpuZ0lmPVwic2VjdGlvbi5oZWFkZXI/LnByb2Nlc3NlZEJ5XCI+XHJcbiAgICAgICAgICAgIHt7IHByb2Nlc3NpbmdEYXRlIH19XHJcbiAgICAgICAgICA8L2JkaT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1wYW5lbC1kZXRhaWxzIGdhcC0xXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCIgKm5nSWY9XCJzZWN0aW9uPy5oZWFkZXI/LnBlcnNvblRvO1wiXHJcbiAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1wiPlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU21hbGxQcm9maWxlSW5mbygkZXZlbnQsICdyZWNpcGllbnQnKVwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiByYWRpdXMtMyBoLTQwXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd1c2VyLWF2YXRhci1uYW1lIHB4LTAgcHgtbWQtMic6ICFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvLCAncC0wJzogc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUb31cIj5cclxuICAgICAgICAgICAgPGRzLWF2YXRhciBpbWFnZT1cInt7c2VjdGlvbj8uaGVhZGVyPy5wZXJzb25Ub1RodW1ibmFpbH19XCIgc2l6ZT1cInNtYWxsXCIgY2xhc3M9XCJ1c2VyLWF2YXRhclwiPjwvZHMtYXZhdGFyPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtIGQtaW5saW5lLWJsb2NrIHBhbmVsLXVzZXItbmFtZSB0ZXh0LXRydW5jYXRlXCIgW25nQ2xhc3NdPVwieydwYW5lbC11ZXNlci1vbmx5JzogIXNlY3Rpb24/LmhlYWRlcj8uZGVsZWdhdGVkVG99XCJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCI+e3sgc2VjdGlvbj8uaGVhZGVyPy5wZXJzb25UbyB9fTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgKm5nSWY9XCJzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNtYWxsUHJvZmlsZUluZm8oJGV2ZW50LCAnZGVsZWdhdGUnKVwiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJyb3RhdGUtYXJyb3dcIlxyXG4gICAgICAgICAgICAgIHNyYz1cImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIZHBaSFJvUFNJeU1TSWdhR1ZwWjJoMFBTSXhNeUlnZG1sbGQwSnZlRDBpTUNBd0lESXhJREV6SWo0OGNHRjBhQ0JrUFNKTk1qRXNOeTQzTmpOaE1TNDJNakVzTVM0Mk1qRXNNQ3d3TERFdExqUTBOeTQxT1RNc01TNHpNRFlzTVM0ek1EWXNNQ3d3TERFdExqYzFMakU1TkdNdE55NHlPRFFzTUMwNExqVTJPQ3d3TFRFMUxqZzFNeXd3U0RNdU5qWTVURE11TmpNc09DNDJZeTR3TnpjdU1EWTBMakUxT0M0eE1qUXVNakk1TGpFNU5IRXhMamN4TERFdU5qa3NNeTQwTWl3ekxqTTRNV0V4TGpBeU15d3hMakF5TXl3d0xEQXNNU3d1TWpreExERXVNRGM1TGprNU1pNDVPVElzTUN3d0xERXRMamd1TnpFNUxERXVNRFV6TERFdU1EVXpMREFzTUN3eExURXRMak16TVZFekxqZ3pNU3d4TVM0M01Ua3NNUzQ0T0RZc09TNDRZeTB1TkRReUxTNDBNemN0TGpnM09TMHVPRGd4TFRFdU16TXRNUzR6TURsQk5DNDFOeklzTkM0MU56SXNNQ3d3TERFc01DdzNMamd4TkZZM0xqRTROVUV6TUM0M09ETXNNekF1TnpnekxEQXNNQ3d4TERJdU56TXNOQzR6TnpGak1TMHhMakF5Tnl3eUxqQXpPQzB5TGpBeU5Td3pMakEyTXkwekxqQXpNa0V4TGpBME9Td3hMakEwT1N3d0xERXNNU3czTGpJM055d3lMamd5UXpZdU5Dd3pMamNzTlM0MU1Ea3NOQzQxTnl3MExqWXlOU3cxTGpRME5tTXRMak15TXk0ek1qRXRMalkwTkM0Mk5EVXRMamszTXk0NU56WXVNRGcwTGpBMU9TNHhPREV1TURJM0xqSTNMakF5Tnl3M0xqSTFPQ3d3TERndU5URTJMREFzTVRVdU56YzFMREJCTVM0eE1qa3NNUzR4TWprc01Dd3dMREVzTWpFc055NHlPWFl1TkRjeVdpSWdkSEpoYm5ObWIzSnRQU0owY21GdWMyeGhkR1VvTUNBdE1DNDVPVGtwSWlCbWFXeHNQU0lqWVRVMFpXVXhJaTgrUEM5emRtYytcIi8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHB4LTAgcHgtbWQtMiByYWRpdXMtMyB1c2VyLWF2YXRhci1uYW1lIGgtNDBcIj5cclxuICAgICAgICAgICAgICA8ZHMtYXZhdGFyIGltYWdlPVwie3tzZWN0aW9uPy5oZWFkZXI/LmRlbGVnYXRlZFRvVGh1bWJuYWlsfX1cIiBzaXplPVwic21hbGxcIiBjbGFzcz1cInVzZXItYXZhdGFyXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZnMtMTQgZnctbWVkaXVtIGQtaW5saW5lLWJsb2NrIHBhbmVsLXVzZXItbmFtZSB0ZXh0LXRydW5jYXRlXCI+e3sgc2VjdGlvbj8uaGVhZGVyPy5kZWxlZ2F0ZWRUbyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRzLXN0YXR1c1xyXG4gICAgICAgICAgY2xhc3M9XCJtYWluLXN0YXR1c1wiICpuZ0lmPVwic2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy5rZXk7XCJcclxuICAgICAgICAgIHN0YXR1cz1cInt7c3RhdHVzQ2xhc3Moc2VjdGlvbj8uYm9keT8uZGV0YWlscz8uWydkZWNpc2lvbiddPy5rZXkpfX1cIj57eyBzZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5bJ2RlY2lzaW9uJ10/LnZhbHVlIH19XHJcbiAgICAgICAgPC9kcy1zdGF0dXM+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLXBhbmVsLXRvZ2dsZVwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJwbHVzLTFcIiBjbGFzcz1cImZzLTIwIGZjLWNvcmFsXCIgKm5nSWY9XCIhYXBwcm92YWxQYW5lbC5leHBhbmRlZFwiPjwvZHMtaWNvbj5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwibWludXNcIiBjbGFzcz1cImZzLTIwIGZjLWRhcmstZ3JheVwiICpuZ0lmPVwiYXBwcm92YWxQYW5lbC5leHBhbmRlZFwiPjwvZHMtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICA8c2VjdGlvbiBjbGFzcz1cImJvcmRlci10b3AgcHQtNFwiPlxyXG5cclxuICAgIDxhcHAtd29ya2Zsb3ctYXBwcm92YWxcclxuICAgICAgW2lzUmVhZE9ubHldPVwiaW5wdXQuaXNSZWFkT25seVwiXHJcbiAgICAgIFtsb3ZdPVwiaW5wdXQubG92XCJcclxuICAgICAgW3NlY3Rpb25dPVwiaW5wdXQuc2VjdGlvblwiXHJcbiAgICAgIFtyZXF1ZXN0RGV0YWlsc109XCJyZXF1ZXN0RGV0YWlsc1wiXHJcbiAgICA+PC9hcHAtd29ya2Zsb3ctYXBwcm92YWw+XHJcbiAgICAmbHQ7ISZuZGFzaDsgICAgPG5nLWNvbnRhaW5lciAqbmdDb21wb25lbnRPdXRsZXQ9XCJzZWN0aW9uRm9ybUNvbXBvbmVudDsgbmRjRHluYW1pY0lucHV0czogaW5wdXRcIj48L25nLWNvbnRhaW5lcj4mbmRhc2g7Jmd0O1xyXG4gIDwvc2VjdGlvbj5cclxuXHJcbjwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm0/LmhlYWRlcj8uc3RhdHVzPy5bJ2tleSddID09ICdORVcnIFwiPlxyXG4gIDxuZy1jb250YWluZXIgKm5nQ29tcG9uZW50T3V0bGV0PVwic2VjdGlvbkZvcm1Db21wb25lbnQ7IG5kY0R5bmFtaWNJbnB1dHM6IGlucHV0XCI+PC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG4tLT5cclxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './service-header/service-header.component';
|
|
2
|
+
export * from './status/status.component';
|
|
3
|
+
export * from './workflow-section/workflow-section.component';
|
|
4
|
+
export * from './form-section/form-section.component';
|
|
5
|
+
export * from './main-request-details/main-request-details.component';
|
|
6
|
+
export * from './feedback-section/feedback-section.component';
|
|
7
|
+
export * from './profile-section/profile-section.component';
|
|
8
|
+
export * from './comment-section/comment-section.component';
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9icG0tY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC1zZWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLHVDQUF1QyxDQUFBO0FBQ3JELGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywrQ0FBK0MsQ0FBQTtBQUM3RCxjQUFjLDZDQUE2QyxDQUFBO0FBQzNELGNBQWMsNkNBQTZDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3NlcnZpY2UtaGVhZGVyL3NlcnZpY2UtaGVhZGVyLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9zdGF0dXMvc3RhdHVzLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi93b3JrZmxvdy1zZWN0aW9uL3dvcmtmbG93LXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL2Zvcm0tc2VjdGlvbi9mb3JtLXNlY3Rpb24uY29tcG9uZW50J1xyXG5leHBvcnQgKiBmcm9tICcuL21haW4tcmVxdWVzdC1kZXRhaWxzL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmVlZGJhY2stc2VjdGlvbi9mZWVkYmFjay1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9wcm9maWxlLXNlY3Rpb24vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudCdcclxuZXhwb3J0ICogZnJvbSAnLi9jb21tZW50LXNlY3Rpb24vY29tbWVudC1zZWN0aW9uLmNvbXBvbmVudCdcclxuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, Input } from '@angular/core';
|
|
2
|
+
import { MatAccordion, MatExpansionPanel } from '@angular/material/expansion';
|
|
3
|
+
import { NgIf } from '@angular/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../services";
|
|
6
|
+
export class MainRequestDetailsComponent {
|
|
7
|
+
i18n;
|
|
8
|
+
section;
|
|
9
|
+
lov;
|
|
10
|
+
form;
|
|
11
|
+
constructor(i18n) {
|
|
12
|
+
this.i18n = i18n;
|
|
13
|
+
}
|
|
14
|
+
get isExpanded() {
|
|
15
|
+
return this.section?.body?.details?.expandStage === 'true';
|
|
16
|
+
}
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, deps: [{ token: i1.CoreI18nService }], target: i0.ɵɵFactoryTarget.Component });
|
|
18
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: MainRequestDetailsComponent, isStandalone: true, selector: "app-main-request-details", inputs: { section: "section", lov: "lov", form: "form" }, ngImport: i0, template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"!requestPanel.expanded\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"requestPanel.expanded\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"], dependencies: [{ kind: "directive", type: MatAccordion, selector: "mat-accordion", inputs: ["hideToggle", "displayMode", "togglePosition"], exportAs: ["matAccordion"] }, { kind: "component", type: MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["hideToggle", "togglePosition"], outputs: ["afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
19
|
+
}
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: MainRequestDetailsComponent, decorators: [{
|
|
21
|
+
type: Component,
|
|
22
|
+
args: [{ selector: 'app-main-request-details', standalone: true, schemas: [CUSTOM_ELEMENTS_SCHEMA], imports: [
|
|
23
|
+
MatAccordion,
|
|
24
|
+
MatExpansionPanel,
|
|
25
|
+
NgIf
|
|
26
|
+
], template: "<mat-accordion class=\"primary-accordion main-request-accordion border-top\">\r\n <mat-expansion-panel [expanded]=\"isExpanded || (form?.sections?.length === 1 )\" class=\"mb-3\" hideToggle #requestPanel=\"matExpansionPanel\">\r\n <mat-expansion-panel-header>\r\n <h2 class=\"fs-16 fw-medium fc-coral m-0 flex-grow-1\">{{ i18n.translate('requestDetailsTitle') }}</h2>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"!requestPanel.expanded\">\r\n <ds-icon icon=\"plus-1\" class=\"fs-20 fc-coral\"></ds-icon>\r\n </div>\r\n <div class=\"d-inline-flex align-items-center gap-2\" *ngIf=\"requestPanel.expanded\">\r\n <ds-icon icon=\"minus\" class=\"fs-20 fc-dark-gray\"></ds-icon>\r\n </div>\r\n </mat-expansion-panel-header>\r\n <section class=\"default-box box-shadow p-4\">\r\n <ng-content></ng-content>\r\n </section>\r\n </mat-expansion-panel>\r\n</mat-accordion>\r\n", styles: [".main-request-accordion{--accordion-height: 65px;--accordion-radius: 0 0 4px 4px;--accordion-shadow: 0 7px 10px rgba(var(--rgb-black), 3%);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--gray);--panel-padding: 0 1.5rem;--panel-body-padding: 0 0 1.5rem;position:relative;z-index:1}@media (max-width: 576px){.main-request-accordion{--accordion-height: 55px;--panel-padding: 0 1rem;--panel-body-padding: 0 1rem 1rem}}.main-request-accordion .inner-accordion{--accordion-height: 44px;--accordion-bc: var(--light-gray);--accordion-bc-active: var(--white);--accordion-border: 1px solid var(--light-gray);--accordion-border-active: 1px solid var(--light-gray);--panel-body-padding: 0;--accordion-shadow: none;--panel-padding: 0 1.5rem}\n"] }]
|
|
27
|
+
}], ctorParameters: () => [{ type: i1.CoreI18nService }], propDecorators: { section: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], lov: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], form: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}] } });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvbWFpbi1yZXF1ZXN0LWRldGFpbHMvbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHekUsT0FBTyxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzlFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBY3ZDLE1BQU0sT0FBTywyQkFBMkI7SUFJbkI7SUFIVixPQUFPLENBQVU7SUFDakIsR0FBRyxDQUFNO0lBQ1QsSUFBSSxDQUFPO0lBQ3BCLFlBQW1CLElBQXFCO1FBQXJCLFNBQUksR0FBSixJQUFJLENBQWlCO0lBQUcsQ0FBQztJQUU1QyxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxXQUFXLEtBQUssTUFBTSxDQUFDO0lBQzdELENBQUM7dUdBUlUsMkJBQTJCOzJGQUEzQiwyQkFBMkIsOElDbEJ4QyxrN0JBZ0JBLCt6QkRISSxZQUFZLCtJQUNaLGlCQUFpQixzTEFDakIsSUFBSTs7MkZBR0ssMkJBQTJCO2tCQVp2QyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1AsQ0FBQyxzQkFBc0IsQ0FBQyxXQUN4Qjt3QkFDUCxZQUFZO3dCQUNaLGlCQUFpQjt3QkFDakIsSUFBSTtxQkFDTDtvRkFHUSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csR0FBRztzQkFBWCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29yZUkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQgeyBGb3JtLCBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7IE1hdEFjY29yZGlvbiwgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW1haW4tcmVxdWVzdC1kZXRhaWxzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbWFpbi1yZXF1ZXN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21haW4tcmVxdWVzdC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0QWNjb3JkaW9uLFxyXG4gICAgTWF0RXhwYW5zaW9uUGFuZWwsXHJcbiAgICBOZ0lmXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFpblJlcXVlc3REZXRhaWxzQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBzZWN0aW9uOiBTZWN0aW9uO1xyXG4gIEBJbnB1dCgpIGxvdjogYW55O1xyXG4gIEBJbnB1dCgpIGZvcm06IEZvcm07XHJcbiAgY29uc3RydWN0b3IocHVibGljIGkxOG46IENvcmVJMThuU2VydmljZSkge31cclxuXHJcbiAgZ2V0IGlzRXhwYW5kZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uPy5ib2R5Py5kZXRhaWxzPy5leHBhbmRTdGFnZSA9PT0gJ3RydWUnO1xyXG4gIH1cclxufVxyXG4iLCI8bWF0LWFjY29yZGlvbiBjbGFzcz1cInByaW1hcnktYWNjb3JkaW9uIG1haW4tcmVxdWVzdC1hY2NvcmRpb24gYm9yZGVyLXRvcFwiPlxyXG4gIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJpc0V4cGFuZGVkIHx8IChmb3JtPy5zZWN0aW9ucz8ubGVuZ3RoID09PSAxIClcIiBjbGFzcz1cIm1iLTNcIiBoaWRlVG9nZ2xlICNyZXF1ZXN0UGFuZWw9XCJtYXRFeHBhbnNpb25QYW5lbFwiPlxyXG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8aDIgY2xhc3M9XCJmcy0xNiBmdy1tZWRpdW0gZmMtY29yYWwgbS0wIGZsZXgtZ3Jvdy0xXCI+e3sgaTE4bi50cmFuc2xhdGUoJ3JlcXVlc3REZXRhaWxzVGl0bGUnKSB9fTwvaDI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWlubGluZS1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiIXJlcXVlc3RQYW5lbC5leHBhbmRlZFwiPlxyXG4gICAgICAgIDxkcy1pY29uIGljb249XCJwbHVzLTFcIiBjbGFzcz1cImZzLTIwIGZjLWNvcmFsXCI+PC9kcy1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCIgKm5nSWY9XCJyZXF1ZXN0UGFuZWwuZXhwYW5kZWRcIj5cclxuICAgICAgICA8ZHMtaWNvbiBpY29uPVwibWludXNcIiBjbGFzcz1cImZzLTIwIGZjLWRhcmstZ3JheVwiPjwvZHMtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkZWZhdWx0LWJveCBib3gtc2hhZG93IHAtNFwiPlxyXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG48L21hdC1hY2NvcmRpb24+XHJcbiJdfQ==
|
package/esm2022/lib/components/app-component-sections/profile-section/profile-section.component.mjs
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, EventEmitter, Inject, Input, Output } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
import { NgIf } from '@angular/common';
|
|
4
|
+
import { InfoItemComponent } from "../../shared-components";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../../services";
|
|
7
|
+
export class ProfileSectionComponent {
|
|
8
|
+
i18n;
|
|
9
|
+
sidenavService;
|
|
10
|
+
data;
|
|
11
|
+
profileFormVisibility;
|
|
12
|
+
profile;
|
|
13
|
+
message;
|
|
14
|
+
close = new EventEmitter();
|
|
15
|
+
constructor(i18n, sidenavService, data) {
|
|
16
|
+
this.i18n = i18n;
|
|
17
|
+
this.sidenavService = sidenavService;
|
|
18
|
+
this.data = data;
|
|
19
|
+
this.profile = sidenavService.data;
|
|
20
|
+
}
|
|
21
|
+
closeSidenav() {
|
|
22
|
+
this.sidenavService.publish('close', null);
|
|
23
|
+
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProfileSectionComponent, deps: [{ token: i1.CoreI18nService }, { token: i1.SidenavService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
25
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.8", type: ProfileSectionComponent, isStandalone: true, selector: "app-profile-section", inputs: { profileFormVisibility: "profileFormVisibility" }, outputs: { close: "close" }, providers: [
|
|
26
|
+
{ provide: MAT_DIALOG_DATA, useValue: {} }
|
|
27
|
+
], ngImport: i0, template: "<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep .main-sidenav{width:550px}@media (max-width: 871px){:host ::ng-deep .main-sidenav{width:100vw}}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user{padding:2.5rem 1.5rem}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a{transition:var(--default-transition)}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a:hover{text-decoration:underline}:host ::ng-deep .main-sidenav .sidenav-body ds-avatar .avatar{--default-size: 95px}:host ::ng-deep .main-sidenav .sidenav-body .employee-id:hover .copy-icon{opacity:1}:host ::ng-deep .main-sidenav .sidenav-body .employee-id .copy-icon{opacity:0;transition:all .2s linear}:host ::ng-deep .main-sidenav .sidenav-body .profile-box{justify-content:center}@media (min-width: 768px){:host ::ng-deep .main-sidenav .sidenav-body .profile-box{min-width:200px}}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item{padding:1.5rem 0;--info-gap: .5rem}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item.department-code bdi{unicode-bidi:plaintext}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item:not(:last-child){border-bottom:1px solid var(--gray)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.name{--name-width: 100%;--name-fw: var(--font-regular)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.disc{--disc-width: 100%}\n"], dependencies: [{ kind: "component", type: InfoItemComponent, selector: "app-info-item", inputs: ["label", "value", "name", "type", "dateType", "multiple", "insideTable", "hasLabel", "arrayList", "actionType", "download"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
28
|
+
}
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: ProfileSectionComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'app-profile-section', standalone: true, imports: [
|
|
32
|
+
InfoItemComponent,
|
|
33
|
+
NgIf
|
|
34
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [
|
|
35
|
+
{ provide: MAT_DIALOG_DATA, useValue: {} }
|
|
36
|
+
], template: "<div class=\"main-sidenav\">\r\n <div class=\"sidenav-title bc-white\">\r\n <h3> {{ profile?.fullName }}</h3>\r\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"closeSidenav()\"></ds-icon>\r\n </div>\r\n <div class=\"sidenav-body p-0\">\r\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\r\n <ds-avatar image=\"/group/i-gate/wm-bpm/forms/-/proxy/portrait?email={{profile?.employeeEmail}}\" class=\"mb-2\"></ds-avatar>\r\n <div class=\"d-flex flex-column gap-1\">\r\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ profile?.fullName }}</h4>\r\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\" *ngIf=\"profile?.jobPosition\">{{ profile?.jobPosition }}</h6>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\r\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'mailTo:' + profile?.employeeEmail\" class=\"fc-black\">{{ profile?.employeeEmail }}</a>\r\n </div>\r\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\" *ngIf=\"profile?.businessPhone\">\r\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\r\n <a [href]=\"'tel:' + profile?.businessPhone\" class=\"fc-black\">\r\n <bdi>{{ profile?.businessPhone }}</bdi>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"info-section no-bg px-4 pb-4\"\r\n *ngIf=\"\r\n profile?.departmentName ||\r\n profile?.generalDepartmentName ||\r\n profile?.directManagerName ||\r\n profile?.humanResourcesLocation ||\r\n profile?.nationality ||\r\n profile?.generalDepartmentCode\r\n \"\r\n >\r\n <app-info-item\r\n *ngIf=\"profile?.employeeNumber\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('employeeID')\"\r\n [value]=\"profile?.employeeNumber\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.departmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('departmentName')\"\r\n [value]=\"profile?.departmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.generalDepartmentName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('generalDepartmentName')\"\r\n [value]=\"profile?.generalDepartmentName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.directManagerName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('directManager')\"\r\n [value]=\"profile?.directManagerName\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.humanResourcesLocation\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('humanResourcesLocation')\"\r\n [value]=\"profile?.humanResourcesLocation\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.nationality\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('nationality') \"\r\n [value]=\"profile?.nationality\"\r\n ></app-info-item>\r\n\r\n <app-info-item\r\n *ngIf=\"profile?.sectorName\"\r\n class=\"info-item w-100\"\r\n [label]=\"i18n.translate('sector')\"\r\n [value]=\"profile?.sectorName\"\r\n ></app-info-item>\r\n\r\n </div>\r\n <ng-container\r\n *ngIf=\"\r\n !profile?.departmentName &&\r\n !profile?.generalDepartmentName &&\r\n !profile?.directManagerName &&\r\n !profile?.humanResourcesLocation &&\r\n !profile?.nationality &&\r\n !profile?.generalDepartmentCode\r\n \"\r\n >\r\n <ds-message type=\"emptyList\" [attr.label]=\"'noData' \"></ds-message>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [":host ::ng-deep .main-sidenav{width:550px}@media (max-width: 871px){:host ::ng-deep .main-sidenav{width:100vw}}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user{padding:2.5rem 1.5rem}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a{transition:var(--default-transition)}:host ::ng-deep .main-sidenav .sidenav-body .sidenav-user a:hover{text-decoration:underline}:host ::ng-deep .main-sidenav .sidenav-body ds-avatar .avatar{--default-size: 95px}:host ::ng-deep .main-sidenav .sidenav-body .employee-id:hover .copy-icon{opacity:1}:host ::ng-deep .main-sidenav .sidenav-body .employee-id .copy-icon{opacity:0;transition:all .2s linear}:host ::ng-deep .main-sidenav .sidenav-body .profile-box{justify-content:center}@media (min-width: 768px){:host ::ng-deep .main-sidenav .sidenav-body .profile-box{min-width:200px}}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item{padding:1.5rem 0;--info-gap: .5rem}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item.department-code bdi{unicode-bidi:plaintext}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item:not(:last-child){border-bottom:1px solid var(--gray)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.name{--name-width: 100%;--name-fw: var(--font-regular)}:host ::ng-deep .main-sidenav .sidenav-body .info-section>.info-item>.disc{--disc-width: 100%}\n"] }]
|
|
37
|
+
}], ctorParameters: () => [{ type: i1.CoreI18nService }, { type: i1.SidenavService }, { type: undefined, decorators: [{
|
|
38
|
+
type: Inject,
|
|
39
|
+
args: [MAT_DIALOG_DATA]
|
|
40
|
+
}] }], propDecorators: { profileFormVisibility: [{
|
|
41
|
+
type: Input
|
|
42
|
+
}], close: [{
|
|
43
|
+
type: Output
|
|
44
|
+
}] } });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JwbS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9hcHAtY29tcG9uZW50LXNlY3Rpb25zL3Byb2ZpbGUtc2VjdGlvbi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYnBtLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2FwcC1jb21wb25lbnQtc2VjdGlvbnMvcHJvZmlsZS1zZWN0aW9uL3Byb2ZpbGUtc2VjdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFHekQsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3JDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDOzs7QUFpQjFELE1BQU0sT0FBTyx1QkFBdUI7SUFPZjtJQUNVO0lBQ2U7SUFQbkMscUJBQXFCLENBQU07SUFDcEMsT0FBTyxDQUFrQjtJQUN6QixPQUFPLENBQU07SUFDSCxLQUFLLEdBQTBCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFNUQsWUFBbUIsSUFBcUIsRUFDWCxjQUE4QixFQUNmLElBQVM7UUFGbEMsU0FBSSxHQUFKLElBQUksQ0FBaUI7UUFDWCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ25ELElBQUksQ0FBQyxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBR0QsWUFBWTtRQUNWLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3QyxDQUFDO3VHQWhCVSx1QkFBdUIsK0VBU2QsZUFBZTsyRkFUeEIsdUJBQXVCLDJKQUp2QjtZQUNULEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRyxFQUFDO1NBQzFDLDBCQ3BCSCw2L0hBb0dBLHc2Q0R0RkksaUJBQWlCLGdNQUNqQixJQUFJOzsyRkFPSyx1QkFBdUI7a0JBZG5DLFNBQVM7K0JBQ0UscUJBQXFCLGNBR25CLElBQUksV0FDUDt3QkFDUCxpQkFBaUI7d0JBQ2pCLElBQUk7cUJBQ0wsV0FDUSxDQUFDLHNCQUFzQixDQUFDLGFBQ3RCO3dCQUNULEVBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsRUFBRyxFQUFDO3FCQUMxQzs7MEJBV1ksTUFBTTsyQkFBQyxlQUFlO3lDQVAxQixxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBR0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtNQVRfRElBTE9HX0RBVEF9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7Q29yZUkxOG5TZXJ2aWNlLCBTaWRlbmF2U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xyXG5pbXBvcnQge1Byb2ZpbGVJbmZvRHJvcH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcyc7XHJcbmltcG9ydCB7TmdJZn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtJbmZvSXRlbUNvbXBvbmVudH0gZnJvbSBcIi4uLy4uL3NoYXJlZC1jb21wb25lbnRzXCI7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcHJvZmlsZS1zZWN0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcHJvZmlsZS1zZWN0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9maWxlLXNlY3Rpb24uY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEluZm9JdGVtQ29tcG9uZW50LFxyXG4gICAgTmdJZlxyXG4gIF0sXHJcbiAgc2NoZW1hczogW0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge3Byb3ZpZGU6IE1BVF9ESUFMT0dfREFUQSwgdXNlVmFsdWU6IHsgfX1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9maWxlU2VjdGlvbkNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHByb2ZpbGVGb3JtVmlzaWJpbGl0eTogYW55O1xyXG4gIHByb2ZpbGU6IFByb2ZpbGVJbmZvRHJvcDtcclxuICBtZXNzYWdlOiBhbnk7XHJcbiAgQE91dHB1dCgpIGNsb3NlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpMThuOiBDb3JlSTE4blNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBzaWRlbmF2U2VydmljZTogU2lkZW5hdlNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMucHJvZmlsZSA9IHNpZGVuYXZTZXJ2aWNlLmRhdGE7XHJcbiAgfVxyXG5cclxuXHJcbiAgY2xvc2VTaWRlbmF2KCkge1xyXG4gICAgdGhpcy5zaWRlbmF2U2VydmljZS5wdWJsaXNoKCdjbG9zZScsIG51bGwpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1haW4tc2lkZW5hdlwiPlxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LXRpdGxlIGJjLXdoaXRlXCI+XHJcbiAgICA8aDM+IHt7IHByb2ZpbGU/LmZ1bGxOYW1lIH19PC9oMz5cclxuICAgIDxkcy1pY29uIGljb249XCJjbG9zZVwiIGNsYXNzPVwiZmMtYmxhY2sgZnMtMjAgcC0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cImNsb3NlU2lkZW5hdigpXCI+PC9kcy1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzaWRlbmF2LWJvZHkgcC0wXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBzaWRlbmF2LXVzZXIgYmMtb2ZmLXdoaXRlIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxkcy1hdmF0YXIgaW1hZ2U9XCIvZ3JvdXAvaS1nYXRlL3dtLWJwbS9mb3Jtcy8tL3Byb3h5L3BvcnRyYWl0P2VtYWlsPXt7cHJvZmlsZT8uZW1wbG95ZWVFbWFpbH19XCIgY2xhc3M9XCJtYi0yXCI+PC9kcy1hdmF0YXI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4gZ2FwLTFcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJmcy0xNiBmYy1ibGFjayBmdy1tZWRpdW0gbWItMFwiPnt7IHByb2ZpbGU/LmZ1bGxOYW1lIH19PC9oND5cclxuICAgICAgICA8aDYgY2xhc3M9XCJmcy0xMiBmYy1kYXJrLWdyYXkgZnctbm9ybWFsIG1iLTBcIiAqbmdJZj1cInByb2ZpbGU/LmpvYlBvc2l0aW9uXCI+e3sgcHJvZmlsZT8uam9iUG9zaXRpb24gfX08L2g2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtMTIgZmMtYmxhY2sgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBib3gtc2hhZG93IGJjLXdoaXRlIHJhZGl1cy00IHAtMiBwcm9maWxlLWJveFwiPlxyXG4gICAgICAgICAgPGRzLWljb24gaWNvbj1cIm1haWwtb1wiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCInbWFpbFRvOicgKyBwcm9maWxlPy5lbXBsb3llZUVtYWlsXCIgY2xhc3M9XCJmYy1ibGFja1wiPnt7IHByb2ZpbGU/LmVtcGxveWVlRW1haWwgfX08L2E+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLTEyIGZjLWJsYWNrIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgYm94LXNoYWRvdyBiYy13aGl0ZSByYWRpdXMtNCBwLTIgcHJvZmlsZS1ib3hcIiAqbmdJZj1cInByb2ZpbGU/LmJ1c2luZXNzUGhvbmVcIj5cclxuICAgICAgICAgIDxkcy1pY29uIGljb249XCJwaG9uZVwiIGNsYXNzPVwiZmMtY29yYWwgZnMtMjBcIj48L2RzLWljb24+XHJcbiAgICAgICAgICA8YSBbaHJlZl09XCIndGVsOicgKyBwcm9maWxlPy5idXNpbmVzc1Bob25lXCIgY2xhc3M9XCJmYy1ibGFja1wiPlxyXG4gICAgICAgICAgICA8YmRpPnt7IHByb2ZpbGU/LmJ1c2luZXNzUGhvbmUgfX08L2JkaT5cclxuICAgICAgICAgIDwvYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJpbmZvLXNlY3Rpb24gbm8tYmcgcHgtNCBwYi00XCJcclxuICAgICAgKm5nSWY9XCJcclxuICAgICAgICBwcm9maWxlPy5kZXBhcnRtZW50TmFtZSB8fFxyXG4gICAgICAgIHByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZSB8fFxyXG4gICAgICAgIHByb2ZpbGU/LmRpcmVjdE1hbmFnZXJOYW1lIHx8XHJcbiAgICAgICAgcHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvbiB8fFxyXG4gICAgICAgIHByb2ZpbGU/Lm5hdGlvbmFsaXR5IHx8XHJcbiAgICAgICAgcHJvZmlsZT8uZ2VuZXJhbERlcGFydG1lbnRDb2RlXHJcbiAgICAgIFwiXHJcbiAgICA+XHJcbiAgICAgIDxhcHAtaW5mby1pdGVtXHJcbiAgICAgICAgKm5nSWY9XCJwcm9maWxlPy5lbXBsb3llZU51bWJlclwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnZW1wbG95ZWVJRCcpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uZW1wbG95ZWVOdW1iZXJcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmRlcGFydG1lbnROYW1lXCJcclxuICAgICAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICAgICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkZXBhcnRtZW50TmFtZScpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uZGVwYXJ0bWVudE5hbWVcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZVwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnZ2VuZXJhbERlcGFydG1lbnROYW1lJylcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJwcm9maWxlPy5nZW5lcmFsRGVwYXJ0bWVudE5hbWVcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LmRpcmVjdE1hbmFnZXJOYW1lXCJcclxuICAgICAgICBjbGFzcz1cImluZm8taXRlbSB3LTEwMFwiXHJcbiAgICAgICAgW2xhYmVsXT1cImkxOG4udHJhbnNsYXRlKCdkaXJlY3RNYW5hZ2VyJylcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJwcm9maWxlPy5kaXJlY3RNYW5hZ2VyTmFtZVwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgICA8YXBwLWluZm8taXRlbVxyXG4gICAgICAgICpuZ0lmPVwicHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvblwiXHJcbiAgICAgICAgY2xhc3M9XCJpbmZvLWl0ZW0gdy0xMDBcIlxyXG4gICAgICAgIFtsYWJlbF09XCJpMThuLnRyYW5zbGF0ZSgnaHVtYW5SZXNvdXJjZXNMb2NhdGlvbicpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uaHVtYW5SZXNvdXJjZXNMb2NhdGlvblwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgICA8YXBwLWluZm8taXRlbVxyXG4gICAgICAgICpuZ0lmPVwicHJvZmlsZT8ubmF0aW9uYWxpdHlcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgICAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ25hdGlvbmFsaXR5JykgXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8ubmF0aW9uYWxpdHlcIlxyXG4gICAgICA+PC9hcHAtaW5mby1pdGVtPlxyXG5cclxuICAgICAgPGFwcC1pbmZvLWl0ZW1cclxuICAgICAgICAqbmdJZj1cInByb2ZpbGU/LnNlY3Rvck5hbWVcIlxyXG4gICAgICAgIGNsYXNzPVwiaW5mby1pdGVtIHctMTAwXCJcclxuICAgICAgICBbbGFiZWxdPVwiaTE4bi50cmFuc2xhdGUoJ3NlY3RvcicpXCJcclxuICAgICAgICBbdmFsdWVdPVwicHJvZmlsZT8uc2VjdG9yTmFtZVwiXHJcbiAgICAgID48L2FwcC1pbmZvLWl0ZW0+XHJcblxyXG4gICAgPC9kaXY+XHJcbiAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgIXByb2ZpbGU/LmRlcGFydG1lbnROYW1lICYmXHJcbiAgICAgICAgIXByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50TmFtZSAmJlxyXG4gICAgICAgICFwcm9maWxlPy5kaXJlY3RNYW5hZ2VyTmFtZSAmJlxyXG4gICAgICAgICFwcm9maWxlPy5odW1hblJlc291cmNlc0xvY2F0aW9uICYmXHJcbiAgICAgICAgIXByb2ZpbGU/Lm5hdGlvbmFsaXR5ICYmXHJcbiAgICAgICAgIXByb2ZpbGU/LmdlbmVyYWxEZXBhcnRtZW50Q29kZVxyXG4gICAgICBcIlxyXG4gICAgPlxyXG4gICAgICA8ZHMtbWVzc2FnZSB0eXBlPVwiZW1wdHlMaXN0XCIgW2F0dHIubGFiZWxdPVwiJ25vRGF0YScgXCI+PC9kcy1tZXNzYWdlPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|