@rangertechnologies/ngnxt 2.1.47 → 2.1.49
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/esm2022/lib/components/custom-calendar/custom-calendar.component.mjs +96 -25
- package/esm2022/lib/components/custom-model/custom-model.component.mjs +3 -3
- package/esm2022/lib/components/custom-table/custom-table.component.mjs +4 -3
- package/esm2022/lib/components/custom-time/custom-time.component.mjs +3 -2
- package/esm2022/lib/nxt-app.module.mjs +3 -1
- package/esm2022/lib/pages/booklet/booklet.component.mjs +82 -4
- package/esm2022/lib/pages/questionbook/questionbook.component.mjs +57 -44
- package/esm2022/lib/pipe/get-value.pipe.mjs +11 -1
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/rangertechnologies-ngnxt.mjs +447 -271
- package/fesm2022/rangertechnologies-ngnxt.mjs.map +1 -1
- package/lib/components/custom-calendar/custom-calendar.component.d.ts +8 -3
- package/lib/components/custom-table/custom-table.component.d.ts +1 -1
- package/lib/nxt-app.module.d.ts +1 -1
- package/lib/pages/booklet/booklet.component.d.ts +5 -1
- package/lib/pages/questionbook/questionbook.component.d.ts +4 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/rangertechnologies-ngnxt-2.1.49.tgz +0 -0
- package/rangertechnologies-ngnxt-2.1.47.tgz +0 -0
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
import * as i1 from "@angular/common";
|
|
4
|
-
import * as i2 from "
|
|
4
|
+
import * as i2 from "../../pages/questionbook/questionbook.component";
|
|
5
|
+
import * as i3 from "../custom-model/custom-model.component";
|
|
5
6
|
export class CustomCalendarComponent {
|
|
6
7
|
eventSelected = new EventEmitter();
|
|
8
|
+
// VD 06Sep24 calendar changes
|
|
9
|
+
dateSelected = new EventEmitter();
|
|
7
10
|
allEvents = [];
|
|
8
11
|
question;
|
|
9
12
|
entries = [];
|
|
@@ -24,6 +27,8 @@ export class CustomCalendarComponent {
|
|
|
24
27
|
saveButtonValue = 'Save';
|
|
25
28
|
modalFooter = true;
|
|
26
29
|
editingEventId;
|
|
30
|
+
editingEntryGroup;
|
|
31
|
+
showAppoinmentSection = true;
|
|
27
32
|
ngOnInit() {
|
|
28
33
|
if (this.question?.input) {
|
|
29
34
|
this.allEvents = this.question.input;
|
|
@@ -79,9 +84,17 @@ export class CustomCalendarComponent {
|
|
|
79
84
|
day.events = this.allEvents.filter(event => event.date.toDateString() === day.date.toDateString());
|
|
80
85
|
});
|
|
81
86
|
this.eventSelected.emit(this.allEvents);
|
|
87
|
+
// VD 06Sep24 calendar changes
|
|
88
|
+
let calendar = {};
|
|
89
|
+
calendar['year'] = year;
|
|
90
|
+
calendar['month'] = month + 1;
|
|
91
|
+
console.log(calendar);
|
|
92
|
+
this.dateSelected.emit(calendar);
|
|
82
93
|
}
|
|
83
94
|
selectDay(day) {
|
|
84
95
|
console.log(day);
|
|
96
|
+
// VD 06Sep24 calendar changes
|
|
97
|
+
this.showAppoinmentSection = true;
|
|
85
98
|
this.selectedDay = day;
|
|
86
99
|
// this.eventSelected.emit(day?.events);
|
|
87
100
|
const previouslySelectedDay = this.calendarDays.find(d => d.isSelected);
|
|
@@ -92,11 +105,14 @@ export class CustomCalendarComponent {
|
|
|
92
105
|
day.isSelected = true;
|
|
93
106
|
}
|
|
94
107
|
previousMonth() {
|
|
108
|
+
this.showAppoinmentSection = false;
|
|
95
109
|
this.currentDate.setMonth(this.currentDate.getMonth() - 1);
|
|
96
110
|
this.currentDate = new Date(this.currentDate); // Ensure the date object is updated
|
|
97
111
|
this.generateCalendar();
|
|
98
112
|
}
|
|
99
113
|
nextMonth() {
|
|
114
|
+
// VD 06Sep24 calendar changes
|
|
115
|
+
this.showAppoinmentSection = false;
|
|
100
116
|
this.currentDate.setMonth(this.currentDate.getMonth() + 1);
|
|
101
117
|
this.currentDate = new Date(this.currentDate); // Ensure the date object is updated
|
|
102
118
|
this.generateCalendar();
|
|
@@ -106,7 +122,12 @@ export class CustomCalendarComponent {
|
|
|
106
122
|
this.calendarQuestion = this.referenceQuestions.map(q => ({ ...q, input: '' }));
|
|
107
123
|
this.referenceQuestions.forEach(ques => {
|
|
108
124
|
// clear the input
|
|
109
|
-
if (ques.
|
|
125
|
+
if (ques.Type__c == 'Dropdown') {
|
|
126
|
+
delete ques.input;
|
|
127
|
+
delete ques.selectedValue;
|
|
128
|
+
// VD 06Sep24 calendar changes
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
110
131
|
delete ques.input;
|
|
111
132
|
}
|
|
112
133
|
});
|
|
@@ -114,39 +135,79 @@ export class CustomCalendarComponent {
|
|
|
114
135
|
console.log(this.referenceQuestions);
|
|
115
136
|
this.editingEventId = null;
|
|
116
137
|
}
|
|
117
|
-
|
|
138
|
+
// VD 06Sep24 calendar changes
|
|
139
|
+
editEvent(event, entryGroup) {
|
|
118
140
|
this.isModalOpen = true;
|
|
119
|
-
|
|
120
|
-
this.
|
|
141
|
+
this.referenceQuestions = Object.values(entryGroup);
|
|
142
|
+
this.calendarQuestion = [...this.referenceQuestions]; // Make a copy of the current entries to edit
|
|
121
143
|
this.editingEventId = event.id;
|
|
122
|
-
this.
|
|
144
|
+
this.editingEntryGroup = entryGroup; // Store the entry group being edited
|
|
145
|
+
this.generateCalendar(); // Regenerate the calendar to reflect changes
|
|
123
146
|
}
|
|
124
|
-
deleteEvent(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
147
|
+
deleteEvent(eventId, entryGroup) {
|
|
148
|
+
const event = this.allEvents.find(e => e.id === eventId);
|
|
149
|
+
if (event) {
|
|
150
|
+
// Find the index of the entryGroup to delete
|
|
151
|
+
const entryIndex = event.entries.indexOf(entryGroup);
|
|
152
|
+
if (entryIndex > -1) {
|
|
153
|
+
event.entries.splice(entryIndex, 1); // Remove the specific entry
|
|
154
|
+
}
|
|
155
|
+
// If the event has no more entries, remove the event entirely
|
|
156
|
+
if (event.entries.length === 0) {
|
|
157
|
+
const eventIndex = this.allEvents.indexOf(event);
|
|
158
|
+
if (eventIndex > -1) {
|
|
159
|
+
this.allEvents.splice(eventIndex, 1); // Remove the entire event
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
this.generateCalendar(); // Regenerate the calendar to reflect the changes
|
|
128
164
|
}
|
|
129
165
|
closeModal() {
|
|
130
166
|
this.isModalOpen = false;
|
|
131
167
|
}
|
|
168
|
+
// VD 06Sep24 calendar changes
|
|
132
169
|
addEvent(day, entryQues) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
170
|
+
// Transform new entries into the desired format
|
|
171
|
+
const newEntries = entryQues.reduce((acc, q) => {
|
|
172
|
+
acc[q.Id] = { ...q };
|
|
173
|
+
return acc;
|
|
174
|
+
}, {});
|
|
175
|
+
// Find an existing event for the given date
|
|
176
|
+
const existingEvent = day.events.find(event => event.date === day.date);
|
|
177
|
+
if (existingEvent) {
|
|
178
|
+
// Merge new entries into the existing event's entries array
|
|
179
|
+
// Check if the entries array already contains an object with the same ID
|
|
180
|
+
const existingEntries = existingEvent.entries.map(entry => ({ ...entry }));
|
|
181
|
+
// Append new entries to the existing entries
|
|
182
|
+
existingEntries.push(newEntries);
|
|
183
|
+
existingEvent.entries = existingEntries;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Create a new event if it doesn't exist for the given date
|
|
187
|
+
const newEvent = {
|
|
188
|
+
id: this.generateId(),
|
|
189
|
+
date: day.date,
|
|
190
|
+
entries: [newEntries] // Wrap the new entries in an array
|
|
191
|
+
};
|
|
192
|
+
day.events.push(newEvent);
|
|
193
|
+
this.allEvents.push(newEvent);
|
|
194
|
+
}
|
|
143
195
|
this.generateCalendar();
|
|
196
|
+
console.log('allEvents', this.allEvents);
|
|
144
197
|
}
|
|
198
|
+
// VD 06Sep24 calendar changes
|
|
145
199
|
onSave() {
|
|
146
200
|
if (this.editingEventId !== null) {
|
|
147
201
|
const event = this.allEvents.find(e => e.id === this.editingEventId);
|
|
148
|
-
if (event) {
|
|
149
|
-
|
|
202
|
+
if (event && this.editingEntryGroup) {
|
|
203
|
+
// Update the specific entry group within the event
|
|
204
|
+
const entryIndex = event.entries.findIndex(entryGroup => entryGroup === this.editingEntryGroup);
|
|
205
|
+
if (entryIndex > -1) {
|
|
206
|
+
event.entries[entryIndex] = this.calendarQuestion.reduce((acc, q) => {
|
|
207
|
+
acc[q.Id] = { ...q };
|
|
208
|
+
return acc;
|
|
209
|
+
}, {});
|
|
210
|
+
}
|
|
150
211
|
}
|
|
151
212
|
}
|
|
152
213
|
else {
|
|
@@ -175,20 +236,30 @@ export class CustomCalendarComponent {
|
|
|
175
236
|
console.log('calender question');
|
|
176
237
|
console.log(this.calendarQuestion);
|
|
177
238
|
}
|
|
239
|
+
// VD 06Sep24 calendar changes
|
|
178
240
|
generateId() {
|
|
179
241
|
return '_' + Math.random().toString(36).substr(2, 9);
|
|
180
242
|
}
|
|
243
|
+
getEntryKeys(entryGroup) {
|
|
244
|
+
return Object.keys(entryGroup);
|
|
245
|
+
}
|
|
246
|
+
removeCharacters(questionText) {
|
|
247
|
+
let updatedText = questionText?.replace(/<[^>]*>/g, '');
|
|
248
|
+
return updatedText;
|
|
249
|
+
}
|
|
181
250
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
182
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomCalendarComponent, selector: "app-custom-calendar", inputs: { allEvents: "allEvents", question: "question" }, outputs: { eventSelected: "eventSelected" }, ngImport: i0, template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n
|
|
251
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomCalendarComponent, selector: "app-custom-calendar", inputs: { allEvents: "allEvents", question: "question" }, outputs: { eventSelected: "eventSelected", dateSelected: "dateSelected" }, ngImport: i0, template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n <div class=\"calendar-header\">\n <button (click)=\"previousMonth()\"><< Previous >></button>\n <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n <button (click)=\"nextMonth()\"><< Next >></button>\n </div>\n <div class=\"calendar-grid\">\n <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n\n <div\n class=\"calendar-day\"\n *ngFor=\"let day of calendarDays\"\n [class.not-current-month]=\"!day.isCurrentMonth\"\n [class.past]=\"day.isPast\"\n [class.today]=\"day.isToday\"\n [class.future]=\"day.isFuture\"\n [class.selected]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n <div class=\"day-number\">{{ day.date.getDate() }}\n <span *ngIf=\"day.events.length > 0\" class=\"entry-indicator\" [class.select]=\"day.isSelected\"></span>\n </div>\n <!-- <div *ngFor=\"let event of day.events\" >\n <div *ngFor=\"let entryGroup of event.entries\" class=\"event\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\">\n <div *ngIf=\"entryGroup[key].Type__c == 'Time'\">\n {{ entryGroup[key].input?.value | date: 'shortTime' }}\n </div>\n <div *ngIf=\"entryGroup[key].Type__c != 'Time'\">\n {{ entryGroup[key].input }}\n </div>\n </div>\n </div>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"appoinappointment\">\n <div class=\"appointments-container\">\n <h4>Add Appointment</h4>\n <button *ngIf=\"selectedDay\" (click)=\"addAppointment()\">Add</button>\n </div>\n <!--VD 06Sep24 calendar updates--> \n <div *ngIf=\"showAppoinmentSection && selectedDay?.events.length > 0\" class=\"appointments-container\">\n <h4>Appointments</h4>\n <div *ngFor=\"let event of selectedDay?.events\">\n <div class=\"event\" *ngFor=\"let entryGroup of event.entries\">\n <div class=\"event-info\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\" class=\"entry-row\">\n <div *ngIf=\"entryGroup[key].Question_Text__c\" class=\"entry-text\">\n {{removeCharacters(entryGroup[key].Question_Text__c)}}:\n </div>\n <div class=\"entry-value\">\n <span *ngIf=\"entryGroup[key].Type__c != 'Time' && entryGroup[key].Type__c != 'Link'\">{{ entryGroup[key].input }}</span>\n <span *ngIf=\"entryGroup[key].Type__c == 'Time'\">{{ entryGroup[key].input | date: 'shortTime' }}</span>\n <span *ngIf=\"entryGroup[key].Type__c == 'Link'\">\n <a href=\"{{entryGroup[key].input}}\">{{removeCharacters(entryGroup[key].Question_Text__c)}}</a>\n </span>\n </div>\n </div>\n <div class=\"event-actions\">\n <button (click)=\"editEvent(event,entryGroup)\">Edit</button>\n <button (click)=\"deleteEvent(event.id,entryGroup)\">Delete</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<app-custom-model\n [modalTitle]=\"modalTitle\"\n [isModalOpen]=\"isModalOpen\"\n [modalSize]=\"modalSize\"\n [saveButtonValue]=\"saveButtonValue\"\n [modalFooter]=\"modalFooter\"\n (saveButtonEmit)=\"onSave()\"\n (cancelButtonEmit)=\"onCancel()\"\n>\n<lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\" (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n</app-custom-model>\n\n\n \n \n ", styles: [".calendar-container{flex:1}.appoinappointment{flex:1;margin-left:10px}.calendar-header{display:flex;justify-content:space-between;align-items:center}.selected{box-shadow:0 0 5px #00000080;background-color:green!important;color:#fff!important}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-of-week{text-align:center;font-weight:700;padding:5px;background-color:#f0f0f0;border:1px solid #ccc}.calendar-day{border:1px solid #ccc;padding:5px;display:flex;flex-direction:column;align-items:flex-start;background-color:#fff;position:relative;cursor:pointer}.calendar-day.not-current-month{background-color:#f0f0f0}.calendar-day.past{color:#aaa}.calendar-day.today{background-color:#e6ffe6;font-weight:700}.calendar-day.future{color:#000}.day-number{font-size:1.2em;margin-bottom:5px}.event{background-color:#d1e7dd;border-left:4px solid #0f5132;margin:5px 0;padding:2px 5px;border-radius:3px}.event-title{font-weight:700}.event-time{font-size:.8em}input[type=text],input[type=time]{width:100%;margin-top:5px;box-sizing:border-box}button{margin-top:5px;align-self:stretch;margin-left:0!important}.calendar-header button{margin-top:5px;align-self:stretch;margin-left:0!important;border:none;background:none}.align-calendar{display:flex;width:100%}.form-group.content-box{padding-bottom:0!important}.entry-indicator{position:absolute;top:5px;right:5px;width:10px;height:10px;background-color:#0f5132;border-radius:50%}.select{background-color:#fff}.entry-row{display:flex;align-items:center;margin-bottom:5px}.entry-text{font-weight:700;margin-right:10px;white-space:nowrap}.entry-value{flex:1;word-break:break-word}.entry-value a{color:#4caf50}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.QuestionbookComponent, selector: "lib-questionbook", inputs: ["qbItem", "questionItem", "translatedQuestions", "questions", "errorFieldId", "labelValue", "token", "dropDownData"], outputs: ["handleDropDown", "handleQuestion", "hadleDropDownDependent", "handleCalendarDate"] }, { kind: "component", type: i3.CustomModelComponent, selector: "app-custom-model", inputs: ["modalTitle", "isModalOpen", "modalSize", "saveButtonValue", "modalFooter"], outputs: ["saveButtonEmit", "cancelButtonEmit"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
|
|
183
252
|
}
|
|
184
253
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomCalendarComponent, decorators: [{
|
|
185
254
|
type: Component,
|
|
186
|
-
args: [{ selector: 'app-custom-calendar', template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n
|
|
255
|
+
args: [{ selector: 'app-custom-calendar', template: "<div class=\"align-calendar\">\n <div class=\"calendar-container\">\n <div class=\"calendar-header\">\n <button (click)=\"previousMonth()\"><< Previous >></button>\n <h3>{{ currentDate | date: 'MMMM yyyy' }}</h3>\n <button (click)=\"nextMonth()\"><< Next >></button>\n </div>\n <div class=\"calendar-grid\">\n <div class=\"day-of-week\" *ngFor=\"let day of daysOfWeek\">{{ day }}</div>\n\n <div\n class=\"calendar-day\"\n *ngFor=\"let day of calendarDays\"\n [class.not-current-month]=\"!day.isCurrentMonth\"\n [class.past]=\"day.isPast\"\n [class.today]=\"day.isToday\"\n [class.future]=\"day.isFuture\"\n [class.selected]=\"day.isSelected\"\n (click)=\"selectDay(day)\"\n >\n <div class=\"day-number\">{{ day.date.getDate() }}\n <span *ngIf=\"day.events.length > 0\" class=\"entry-indicator\" [class.select]=\"day.isSelected\"></span>\n </div>\n <!-- <div *ngFor=\"let event of day.events\" >\n <div *ngFor=\"let entryGroup of event.entries\" class=\"event\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\">\n <div *ngIf=\"entryGroup[key].Type__c == 'Time'\">\n {{ entryGroup[key].input?.value | date: 'shortTime' }}\n </div>\n <div *ngIf=\"entryGroup[key].Type__c != 'Time'\">\n {{ entryGroup[key].input }}\n </div>\n </div>\n </div>\n </div> -->\n </div>\n </div>\n </div>\n <div class=\"appoinappointment\">\n <div class=\"appointments-container\">\n <h4>Add Appointment</h4>\n <button *ngIf=\"selectedDay\" (click)=\"addAppointment()\">Add</button>\n </div>\n <!--VD 06Sep24 calendar updates--> \n <div *ngIf=\"showAppoinmentSection && selectedDay?.events.length > 0\" class=\"appointments-container\">\n <h4>Appointments</h4>\n <div *ngFor=\"let event of selectedDay?.events\">\n <div class=\"event\" *ngFor=\"let entryGroup of event.entries\">\n <div class=\"event-info\">\n <div *ngFor=\"let key of getEntryKeys(entryGroup)\" class=\"entry-row\">\n <div *ngIf=\"entryGroup[key].Question_Text__c\" class=\"entry-text\">\n {{removeCharacters(entryGroup[key].Question_Text__c)}}:\n </div>\n <div class=\"entry-value\">\n <span *ngIf=\"entryGroup[key].Type__c != 'Time' && entryGroup[key].Type__c != 'Link'\">{{ entryGroup[key].input }}</span>\n <span *ngIf=\"entryGroup[key].Type__c == 'Time'\">{{ entryGroup[key].input | date: 'shortTime' }}</span>\n <span *ngIf=\"entryGroup[key].Type__c == 'Link'\">\n <a href=\"{{entryGroup[key].input}}\">{{removeCharacters(entryGroup[key].Question_Text__c)}}</a>\n </span>\n </div>\n </div>\n <div class=\"event-actions\">\n <button (click)=\"editEvent(event,entryGroup)\">Edit</button>\n <button (click)=\"deleteEvent(event.id,entryGroup)\">Delete</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n<app-custom-model\n [modalTitle]=\"modalTitle\"\n [isModalOpen]=\"isModalOpen\"\n [modalSize]=\"modalSize\"\n [saveButtonValue]=\"saveButtonValue\"\n [modalFooter]=\"modalFooter\"\n (saveButtonEmit)=\"onSave()\"\n (cancelButtonEmit)=\"onCancel()\"\n>\n<lib-questionbook [qbItem]=\"qbRefrenceBook\" [questions]=\"referenceQuestions\" (handleQuestion)=\"handleQuestionEvent($event)\"></lib-questionbook>\n</app-custom-model>\n\n\n \n \n ", styles: [".calendar-container{flex:1}.appoinappointment{flex:1;margin-left:10px}.calendar-header{display:flex;justify-content:space-between;align-items:center}.selected{box-shadow:0 0 5px #00000080;background-color:green!important;color:#fff!important}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.day-of-week{text-align:center;font-weight:700;padding:5px;background-color:#f0f0f0;border:1px solid #ccc}.calendar-day{border:1px solid #ccc;padding:5px;display:flex;flex-direction:column;align-items:flex-start;background-color:#fff;position:relative;cursor:pointer}.calendar-day.not-current-month{background-color:#f0f0f0}.calendar-day.past{color:#aaa}.calendar-day.today{background-color:#e6ffe6;font-weight:700}.calendar-day.future{color:#000}.day-number{font-size:1.2em;margin-bottom:5px}.event{background-color:#d1e7dd;border-left:4px solid #0f5132;margin:5px 0;padding:2px 5px;border-radius:3px}.event-title{font-weight:700}.event-time{font-size:.8em}input[type=text],input[type=time]{width:100%;margin-top:5px;box-sizing:border-box}button{margin-top:5px;align-self:stretch;margin-left:0!important}.calendar-header button{margin-top:5px;align-self:stretch;margin-left:0!important;border:none;background:none}.align-calendar{display:flex;width:100%}.form-group.content-box{padding-bottom:0!important}.entry-indicator{position:absolute;top:5px;right:5px;width:10px;height:10px;background-color:#0f5132;border-radius:50%}.select{background-color:#fff}.entry-row{display:flex;align-items:center;margin-bottom:5px}.entry-text{font-weight:700;margin-right:10px;white-space:nowrap}.entry-value{flex:1;word-break:break-word}.entry-value a{color:#4caf50}\n"] }]
|
|
187
256
|
}], propDecorators: { eventSelected: [{
|
|
188
257
|
type: Output
|
|
258
|
+
}], dateSelected: [{
|
|
259
|
+
type: Output
|
|
189
260
|
}], allEvents: [{
|
|
190
261
|
type: Input
|
|
191
262
|
}], question: [{
|
|
192
263
|
type: Input
|
|
193
264
|
}] } });
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBaUJ0RyxNQUFNLE9BQU8sdUJBQXVCO0lBRXhCLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBQ3pDLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdEIsUUFBUSxDQUFVO0lBRTNCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDYixrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDeEIsY0FBYyxDQUFLO0lBQ25CLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUV0QixXQUFXLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUMvQixZQUFZLEdBQWtCLEVBQUUsQ0FBQztJQUNqQyxVQUFVLEdBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUV0RyxhQUFhLEdBQVcsRUFBRSxDQUFDO0lBQzNCLFlBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIsY0FBYyxHQUFXLEVBQUUsQ0FBQztJQUM1QixPQUFPLEdBQVcsRUFBRSxDQUFDO0lBQ3JCLFdBQVcsR0FBdUIsSUFBSSxDQUFDO0lBRXZDLFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDcEIs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TUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbnRlcmZhY2UgQ2FsZW5kYXJEYXkge1xuICBkYXRlOiBEYXRlO1xuICBldmVudHM6IGFueVtdO1xuICBpc0N1cnJlbnRNb250aDogYm9vbGVhbjtcbiAgaXNQYXN0OiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc0Z1dHVyZTogYm9vbGVhbjtcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGV2ZW50U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgYWxsRXZlbnRzOiBhbnlbXSA9IFtdOyBcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG5cbiAgZW50cmllcyA9IFtdO1xuICByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgcWJSZWZyZW5jZUJvb2s6YW55O1xuICBjYWxlbmRhclF1ZXN0aW9uID0gW107XG5cbiAgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBjYWxlbmRhckRheXM6IENhbGVuZGFyRGF5W10gPSBbXTtcbiAgZGF5c09mV2Vlazogc3RyaW5nW10gPSBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J107XG5cbiAgbmV3RXZlbnRUaXRsZTogc3RyaW5nID0gJyc7XG4gIG5ld0V2ZW50VGltZTogc3RyaW5nID0gJyc7XG4gIG5ld0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgbmV3TGluazogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIG1vZGFsVGl0bGUgPSAnQ3VzdG9tIE1vZGFsJztcbiAgbW9kYWxTaXplID0gJ2xhcmdlJztcbiAgc2F2ZUJ1dHRvblZhbHVlID0gJ1NhdmUnO1xuICBtb2RhbEZvb3RlciA9IHRydWU7XG4gIGVkaXRpbmdFdmVudElkOiBudW1iZXI7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgfVxuICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwcm9jZXNzUXVlc3Rpb24oKXtcbiAgICB0aGlzLmVudHJpZXMgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ0ZpZWxkc19NZXRhX19jJ10pO1xuICAgIHRoaXMucWJSZWZyZW5jZUJvb2sgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSk7XG4gICAgbGV0IHRpdGxlID0gdGhpcy5xYlJlZnJlbmNlQm9vaz8ucXVlc3Rpb25ib29rPy5UaXRsZV9fYztcbiAgICB0aGlzLm1vZGFsVGl0bGUgPSB0aXRsZTtcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICAgIGlmKHRoaXMuZW50cmllcy5sZW5ndGggPiAwKXtcbiAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgaWYoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSl7XG4gICAgICAgICAgICAgbGV0IHFSZWZlcmVuY2UgPSBKU09OLnBhcnNlKGVsZW1lbnQucXVlc3Rpb25SZWZlcmVuY2UpO1xuICAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xuICAgICAgICAgICB9XG4gICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdlbnRyaWVzLS0+Jyk7XG4gICAgY29uc29sZS5sb2coJ3F1ZXN0aW9uLS0+Jyk7XG4gICAgY29uc29sZS5sb2codGhpcy5lbnRyaWVzKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG5cbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZW5kT2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7XG5cbiAgICBjb25zdCBzdGFydERheU9mV2VlayA9IHN0YXJ0T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBlbmREYXlPZldlZWsgPSBlbmRPZk1vbnRoLmdldERheSgpO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRPZk1vbnRoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXlPZldlZWspO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZE9mTW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZShlbmREYXRlLmdldERhdGUoKSArICg2IC0gZW5kRGF5T2ZXZWVrKSk7XG5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgIFxuICAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cy5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgfVxuXG5cbiAgc2VsZWN0RGF5KGRheTogQ2FsZW5kYXJEYXkpIHtcbiAgICBjb25zb2xlLmxvZyhkYXkpO1xuICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBkYXk7XG4gICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChkYXk/LmV2ZW50cyk7XG4gICAgY29uc3QgcHJldmlvdXNseVNlbGVjdGVkRGF5ID0gdGhpcy5jYWxlbmRhckRheXMuZmluZChkID0+IGQuaXNTZWxlY3RlZCk7XG4gICAgaWYgKHByZXZpb3VzbHlTZWxlY3RlZERheSkge1xuICAgICAgcHJldmlvdXNseVNlbGVjdGVkRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2VsZWN0IHRoZSBjbGlja2VkIGRheVxuICAgIGRheS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByZXZpb3VzTW9udGgoKSB7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgLSAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgbmV4dE1vbnRoKCkge1xuICAgIHRoaXMuY3VycmVudERhdGUuc2V0TW9udGgodGhpcy5jdXJyZW50RGF0ZS5nZXRNb250aCgpICsgMSk7XG4gICAgdGhpcy5jdXJyZW50RGF0ZSA9IG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGUpOyAvLyBFbnN1cmUgdGhlIGRhdGUgb2JqZWN0IGlzIHVwZGF0ZWRcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIGFkZEFwcG9pbnRtZW50KCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucy5tYXAocSA9PiAoeyAuLi5xLCBpbnB1dDogJycgfSkpO1xuICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAvLyBjbGVhciB0aGUgaW5wdXRcbiAgICAgIGlmKHF1ZXMuaW5wdXQpe1xuICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTsnKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gICAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IG51bGw7XG4gIH1cblxuICBlZGl0RXZlbnQoZXZlbnQpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgIC8vIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IGV2ZW50LmVudHJpZXMubWFwKHEgPT4gKHsgLi4ucSB9KSk7XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMgPSBldmVudC5lbnRyaWVzLm1hcChxID0+ICh7IC4uLnEgfSkpO1xuICAgIHRoaXMuZWRpdGluZ0V2ZW50SWQgPSBldmVudC5pZDtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcbiAgfVxuICBcbiAgZGVsZXRlRXZlbnQoZGF5OiBDYWxlbmRhckRheSwgZXZlbnRJZDogc3RyaW5nKSB7XG4gICAgZGF5LmV2ZW50cyA9IGRheS5ldmVudHMuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmlkICE9PSBldmVudElkKTtcbiAgICB0aGlzLmFsbEV2ZW50cyA9IHRoaXMuYWxsRXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC5pZCAhPT0gZXZlbnRJZCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBjbG9zZU1vZGFsKCkge1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG4gIGFkZEV2ZW50KGRheTogQ2FsZW5kYXJEYXksZW50cnlRdWVzKSB7XG4gICAgY29uc3QgbmV3RXZlbnQgID0ge1xuICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxuICAgICAgZGF0ZTogZGF5LmRhdGUsXG4gICAgICBlbnRyaWVzOiBlbnRyeVF1ZXMubWFwKHEgPT4gKHsgLi4ucSB9KSlcbiAgICB9O1xuICAgIGRheS5ldmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgdGhpcy5hbGxFdmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgY29uc29sZS5sb2coJ2FsbEV2ZW50cycpO1xuICAgIGNvbnNvbGUubG9nKHRoaXMuYWxsRXZlbnRzKTtcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcblxuICB9XG5cbiAgb25TYXZlKCkge1xuICAgIGlmICh0aGlzLmVkaXRpbmdFdmVudElkICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBldmVudCA9IHRoaXMuYWxsRXZlbnRzLmZpbmQoZSA9PiBlLmlkID09PSB0aGlzLmVkaXRpbmdFdmVudElkKTtcbiAgICAgIGlmIChldmVudCkge1xuICAgICAgICBldmVudC5lbnRyaWVzID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLm1hcChxID0+ICh7IC4uLnEgfSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZERheSkge1xuICAgICAgICB0aGlzLmFkZEV2ZW50KHRoaXMuc2VsZWN0ZWREYXksIHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcpO1xuICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICB9XG5cbiAgaGFuZGxlUXVlc3Rpb25FdmVudChxdWVzKXtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcXVlc3Rpb25zIGFycmF5IHdpdGggdGhlIG5ldyBxdWVzdGlvblxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24uZmluZEluZGV4KHEgPT4gcS5JZCA9PT0gcXVlcy5JZCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAvLyBJZiBxdWVzdGlvbiBhbHJlYWR5IGV4aXN0cywgdXBkYXRlIGl0XG4gICAgICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbltpbmRleF0gPSBxdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgcXVlc3Rpb24gZG9lc24ndCBleGlzdCwgYWRkIGl0IHRvIHRoZSBhcnJheVxuICAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucHVzaChxdWVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdjYWxlbmRlciBxdWVzdGlvbicpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhclF1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICBnZW5lcmF0ZUlkKCkge1xuICAgICAgcmV0dXJuICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KTtcbiAgICB9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJhbGlnbi1jYWxlbmRhclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInByZXZpb3VzTW9udGgoKVwiPjw8IFByZXZpb3VzID4+PC9idXR0b24+XG4gICAgICAgICAgPGgzPnt7IGN1cnJlbnREYXRlIHwgZGF0ZTogJ01NTU0geXl5eScgfX08L2gzPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5leHRNb250aCgpXCI+PDwgTmV4dCA+PjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWdyaWRcIj5cbiAgICAgICAgICA8IS0tIERheXMgb2YgdGhlIFdlZWsgSGVhZGVyIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXktb2Ytd2Vla1wiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mV2Vla1wiPnt7IGRheSB9fTwvZGl2PlxuICAgICAgXG4gICAgICAgICAgPCEtLSBDYWxlbmRhciBEYXlzIC0tPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItZGF5XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY2FsZW5kYXJEYXlzXCJcbiAgICAgICAgICAgIFtjbGFzcy5ub3QtY3VycmVudC1tb250aF09XCIhZGF5LmlzQ3VycmVudE1vbnRoXCJcbiAgICAgICAgICAgIFtjbGFzcy5wYXN0XT1cImRheS5pc1Bhc3RcIlxuICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImRheS5pc1RvZGF5XCJcbiAgICAgICAgICAgIFtjbGFzcy5mdXR1cmVdPVwiZGF5LmlzRnV0dXJlXCJcbiAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiIFxuICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdERheShkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW51bWJlclwiPnt7IGRheS5kYXRlLmdldERhdGUoKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXZlbnQgb2YgZGF5LmV2ZW50c1wiIGNsYXNzPVwiZXZlbnRcIj5cbiAgICAgICAgICAgICAgPGRpdiAgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGV2ZW50Py5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LlR5cGVfX2MgPT0gJ1RpbWUnXCI+e3sgZW50cnkuaW5wdXQ/LnZhbHVlIHwgZGF0ZTogJ3Nob3J0VGltZScgIH19PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHBvaW5hcHBvaW50bWVudFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwb2ludG1lbnRzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGg0PkFkZCBBcHBvaW50bWVudDwvaDQ+XG4gICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWREYXlcIiAoY2xpY2spPVwiYWRkQXBwb2ludG1lbnQoKVwiPkFkZDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHBvaW50bWVudHMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8aDQgKm5nSWY9XCJzZWxlY3RlZERheT8uZXZlbnRzLmxlbmd0aCA+IDBcIj5BcHBvaW50bWVudHM8L2g0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50XCIgKm5nRm9yPVwibGV0IGV2ZW50IG9mIHNlbGVjdGVkRGF5Py5ldmVudHNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAgKm5nRm9yPVwibGV0IGVudHJ5IG9mIGV2ZW50Py5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5LlR5cGVfX2MgIT0gJ1RpbWUnXCI+e3sgZW50cnkuaW5wdXQgfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnkuVHlwZV9fYyA9PSAnVGltZSdcIj57eyBlbnRyeS5pbnB1dD8udmFsdWUgfCBkYXRlOiAnbWVkaXVtRGF0ZScgIH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV2ZW50LWFjdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gIChjbGljayk9XCJlZGl0RXZlbnQoZXZlbnQpXCI+RWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRXZlbnQoc2VsZWN0ZWREYXksIGV2ZW50LmlkKVwiPkRlbGV0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj4gICAgICAgICAgXG4gICAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cblxuPGFwcC1jdXN0b20tbW9kZWxcbiAgW21vZGFsVGl0bGVdPVwibW9kYWxUaXRsZVwiXG4gIFtpc01vZGFsT3Blbl09XCJpc01vZGFsT3BlblwiXG4gIFttb2RhbFNpemVdPVwibW9kYWxTaXplXCJcbiAgW3NhdmVCdXR0b25WYWx1ZV09XCJzYXZlQnV0dG9uVmFsdWVcIlxuICBbbW9kYWxGb290ZXJdPVwibW9kYWxGb290ZXJcIlxuICAoc2F2ZUJ1dHRvbkVtaXQpPVwib25TYXZlKClcIlxuICAoY2FuY2VsQnV0dG9uRW1pdCk9XCJvbkNhbmNlbCgpXCJcbj5cbjxhcHAtcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJSZWZyZW5jZUJvb2tcIiBbcXVlc3Rpb25zXT1cInJlZmVyZW5jZVF1ZXN0aW9uc1wiIChoYW5kbGVRdWVzdGlvbik9XCJoYW5kbGVRdWVzdGlvbkV2ZW50KCRldmVudClcIj48L2FwcC1xdWVzdGlvbmJvb2s+XG48L2FwcC1jdXN0b20tbW9kZWw+XG5cblxuICBcbiAgXG4gICJdfQ==
|
|
265
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLWNhbGVuZGFyL2N1c3RvbS1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7OztBQWlCdEcsTUFBTSxPQUFPLHVCQUF1QjtJQUV4QixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUNsRCw4QkFBOEI7SUFDcEIsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDeEMsU0FBUyxHQUFVLEVBQUUsQ0FBQztJQUN0QixRQUFRLENBQVU7SUFFM0IsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNiLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUN4QixjQUFjLENBQUs7SUFDbkIsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBRXRCLFdBQVcsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQy9CLFlBQVksR0FBa0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsR0FBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXRHLGFBQWEsR0FBVyxFQUFFLENBQUM7SUFDM0IsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixjQUFjLEdBQVcsRUFBRSxDQUFDO0lBQzVCLE9BQU8sR0FBVyxFQUFFLENBQUM7SUFDckIsV0FB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VUFBVSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFlBQW1CO1FBQ2xDLElBQUksV0FBVyxHQUFHLFlBQVksRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELE9BQU8sV0FBVyxDQUFDO0lBQ3RCLENBQUM7d0dBalJXLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLGdNQ2pCcEMsd2lJQXVGRTs7NEZEdEVXLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7OEJBTXJCLGFBQWE7c0JBQXRCLE1BQU07Z0JBRUcsWUFBWTtzQkFBckIsTUFBTTtnQkFDRSxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbnRlcmZhY2UgQ2FsZW5kYXJEYXkge1xuICBkYXRlOiBEYXRlO1xuICBldmVudHM6IGFueVtdO1xuICBpc0N1cnJlbnRNb250aDogYm9vbGVhbjtcbiAgaXNQYXN0OiBib29sZWFuO1xuICBpc1RvZGF5OiBib29sZWFuO1xuICBpc0Z1dHVyZTogYm9vbGVhbjtcbiAgaXNTZWxlY3RlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jdXN0b20tY2FsZW5kYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY3VzdG9tLWNhbGVuZGFyLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21DYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQE91dHB1dCgpIGV2ZW50U2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQElucHV0KCkgYWxsRXZlbnRzOiBhbnlbXSA9IFtdOyBcbiAgQElucHV0KCkgcXVlc3Rpb246IFF1ZXN0aW9uXG5cbiAgZW50cmllcyA9IFtdO1xuICByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgcWJSZWZyZW5jZUJvb2s6YW55O1xuICBjYWxlbmRhclF1ZXN0aW9uID0gW107XG5cbiAgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICBjYWxlbmRhckRheXM6IENhbGVuZGFyRGF5W10gPSBbXTtcbiAgZGF5c09mV2Vlazogc3RyaW5nW10gPSBbJ1N1bmRheScsICdNb25kYXknLCAnVHVlc2RheScsICdXZWRuZXNkYXknLCAnVGh1cnNkYXknLCAnRnJpZGF5JywgJ1NhdHVyZGF5J107XG5cbiAgbmV3RXZlbnRUaXRsZTogc3RyaW5nID0gJyc7XG4gIG5ld0V2ZW50VGltZTogc3RyaW5nID0gJyc7XG4gIG5ld0Rlc2NyaXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgbmV3TGluazogc3RyaW5nID0gJyc7XG4gIHNlbGVjdGVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuXG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIG1vZGFsVGl0bGUgPSAnQ3VzdG9tIE1vZGFsJztcbiAgbW9kYWxTaXplID0gJ2xhcmdlJztcbiAgc2F2ZUJ1dHRvblZhbHVlID0gJ1NhdmUnO1xuICBtb2RhbEZvb3RlciA9IHRydWU7XG4gIGVkaXRpbmdFdmVudElkOiBudW1iZXI7XG4gIGVkaXRpbmdFbnRyeUdyb3VwOiBhbnk7XG4gIHNob3dBcHBvaW5tZW50U2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgIGlmKHRoaXMucXVlc3Rpb24/LmlucHV0KXtcbiAgICAgIHRoaXMuYWxsRXZlbnRzID0gdGhpcy5xdWVzdGlvbi5pbnB1dDtcbiAgICAgfVxuICAgIHRoaXMucHJvY2Vzc1F1ZXN0aW9uKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwcm9jZXNzUXVlc3Rpb24oKXtcbiAgICB0aGlzLmVudHJpZXMgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ0ZpZWxkc19NZXRhX19jJ10pO1xuICAgIHRoaXMucWJSZWZyZW5jZUJvb2sgPSBKU09OLnBhcnNlKHRoaXMucXVlc3Rpb25bJ1FCX1JlZmVyZW5jZV9RdWVzdGlvbnNfX2MnXSk7XG4gICAgbGV0IHRpdGxlID0gdGhpcy5xYlJlZnJlbmNlQm9vaz8ucXVlc3Rpb25ib29rPy5UaXRsZV9fYztcbiAgICB0aGlzLm1vZGFsVGl0bGUgPSB0aXRsZTtcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICAgIGlmKHRoaXMuZW50cmllcy5sZW5ndGggPiAwKXtcbiAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgaWYoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSl7XG4gICAgICAgICAgICAgbGV0IHFSZWZlcmVuY2UgPSBKU09OLnBhcnNlKGVsZW1lbnQucXVlc3Rpb25SZWZlcmVuY2UpO1xuICAgICAgICAgICAgIHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xuICAgICAgICAgICB9XG4gICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnNvbGUubG9nKCdlbnRyaWVzLS0+Jyk7XG4gICAgY29uc29sZS5sb2coJ3F1ZXN0aW9uLS0+Jyk7XG4gICAgY29uc29sZS5sb2codGhpcy5lbnRyaWVzKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gIH1cblxuICBnZW5lcmF0ZUNhbGVuZGFyKCkge1xuICAgIGNvbnN0IHllYXIgPSB0aGlzLmN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgbW9udGggPSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCk7XG5cbiAgICBjb25zdCBzdGFydE9mTW9udGggPSBuZXcgRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gICAgY29uc3QgZW5kT2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoICsgMSwgMCk7XG5cbiAgICBjb25zdCBzdGFydERheU9mV2VlayA9IHN0YXJ0T2ZNb250aC5nZXREYXkoKTtcbiAgICBjb25zdCBlbmREYXlPZldlZWsgPSBlbmRPZk1vbnRoLmdldERheSgpO1xuXG4gICAgY29uc3Qgc3RhcnREYXRlID0gbmV3IERhdGUoc3RhcnRPZk1vbnRoKTtcbiAgICBzdGFydERhdGUuc2V0RGF0ZShzdGFydERhdGUuZ2V0RGF0ZSgpIC0gc3RhcnREYXlPZldlZWspO1xuXG4gICAgY29uc3QgZW5kRGF0ZSA9IG5ldyBEYXRlKGVuZE9mTW9udGgpO1xuICAgIGVuZERhdGUuc2V0RGF0ZShlbmREYXRlLmdldERhdGUoKSArICg2IC0gZW5kRGF5T2ZXZWVrKSk7XG5cbiAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuc2V0SG91cnMoMCwgMCwgMCwgMCkpO1xuICAgIFxuICAgICAgdGhpcy5jYWxlbmRhckRheXMgPSBbXTtcbiAgICAgIGZvciAobGV0IGQgPSBuZXcgRGF0ZShzdGFydERhdGUpOyBkIDw9IGVuZERhdGU7IGQuc2V0RGF0ZShkLmdldERhdGUoKSArIDEpKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkKTtcbiAgICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaCh7XG4gICAgICAgICAgZGF0ZTogZGF0ZSxcbiAgICAgICAgICBldmVudHM6IFtdLFxuICAgICAgICAgIGlzQ3VycmVudE1vbnRoOiBkLmdldE1vbnRoKCkgPT09IG1vbnRoLFxuICAgICAgICAgIGlzUGFzdDogZGF0ZSA8IHRvZGF5LFxuICAgICAgICAgIGlzVG9kYXk6IGRhdGUuZ2V0VGltZSgpID09PSB0b2RheS5nZXRUaW1lKCksXG4gICAgICAgICAgaXNGdXR1cmU6IGRhdGUgPiB0b2RheSxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAvLyBQb3B1bGF0ZSBjYWxlbmRhciB3aXRoIGV2ZW50cyBmcm9tIGFsbEV2ZW50cyBhcnJheVxuICAgIHRoaXMuY2FsZW5kYXJEYXlzLmZvckVhY2goZGF5ID0+IHtcbiAgICAgIGRheS5ldmVudHMgPSB0aGlzLmFsbEV2ZW50cy5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuZGF0ZS50b0RhdGVTdHJpbmcoKSA9PT0gZGF5LmRhdGUudG9EYXRlU3RyaW5nKCkpO1xuICAgIH0pO1xuICAgIHRoaXMuZXZlbnRTZWxlY3RlZC5lbWl0KHRoaXMuYWxsRXZlbnRzKTtcbiAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgbGV0IGNhbGVuZGFyID0ge31cbiAgICBjYWxlbmRhclsneWVhciddID0geWVhcjtcbiAgICBjYWxlbmRhclsnbW9udGgnXSA9IG1vbnRoICsgMTtcbiAgICBjb25zb2xlLmxvZyhjYWxlbmRhcik7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChjYWxlbmRhcik7XG4gIH1cblxuXG4gIHNlbGVjdERheShkYXk6IENhbGVuZGFyRGF5KSB7XG4gICAgY29uc29sZS5sb2coZGF5KTtcbiAgICAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0ZWREYXkgPSBkYXk7XG4gICAvLyB0aGlzLmV2ZW50U2VsZWN0ZWQuZW1pdChkYXk/LmV2ZW50cyk7XG4gICAgY29uc3QgcHJldmlvdXNseVNlbGVjdGVkRGF5ID0gdGhpcy5jYWxlbmRhckRheXMuZmluZChkID0+IGQuaXNTZWxlY3RlZCk7XG4gICAgaWYgKHByZXZpb3VzbHlTZWxlY3RlZERheSkge1xuICAgICAgcHJldmlvdXNseVNlbGVjdGVkRGF5LmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gU2VsZWN0IHRoZSBjbGlja2VkIGRheVxuICAgIGRheS5pc1NlbGVjdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHByZXZpb3VzTW9udGgoKSB7XG4gICAgdGhpcy5zaG93QXBwb2lubWVudFNlY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnREYXRlLnNldE1vbnRoKHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSAtIDEpO1xuICAgIHRoaXMuY3VycmVudERhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnREYXRlKTsgLy8gRW5zdXJlIHRoZSBkYXRlIG9iamVjdCBpcyB1cGRhdGVkXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBuZXh0TW9udGgoKSB7XG4gICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgIHRoaXMuc2hvd0FwcG9pbm1lbnRTZWN0aW9uID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50RGF0ZS5zZXRNb250aCh0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkgKyAxKTtcbiAgICB0aGlzLmN1cnJlbnREYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50RGF0ZSk7IC8vIEVuc3VyZSB0aGUgZGF0ZSBvYmplY3QgaXMgdXBkYXRlZFxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgYWRkQXBwb2ludG1lbnQoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbiA9IHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zLm1hcChxID0+ICh7IC4uLnEsIGlucHV0OiAnJyB9KSk7XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgIC8vIGNsZWFyIHRoZSBpbnB1dFxuICAgICAgaWYocXVlcy5UeXBlX19jID09ICdEcm9wZG93bicpe1xuICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgICAgZGVsZXRlIHF1ZXMuc2VsZWN0ZWRWYWx1ZTtcbiAgICAgICAgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICAgICAgfWVsc2Uge1xuICAgICAgICBkZWxldGUgcXVlcy5pbnB1dDtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnIGNvbnNvbGUubG9nKHRoaXMucmVmZXJlbmNlUXVlc3Rpb25zKTsnKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyk7XG4gICAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IG51bGw7XG4gIH1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcblxuZWRpdEV2ZW50KGV2ZW50OiBhbnksIGVudHJ5R3JvdXA6IGFueSkge1xuICB0aGlzLmlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMgPSBPYmplY3QudmFsdWVzKGVudHJ5R3JvdXApO1xuICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24gPSBbLi4udGhpcy5yZWZlcmVuY2VRdWVzdGlvbnNdOyAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3VycmVudCBlbnRyaWVzIHRvIGVkaXRcbiAgdGhpcy5lZGl0aW5nRXZlbnRJZCA9IGV2ZW50LmlkO1xuICB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwID0gZW50cnlHcm91cDsgLy8gU3RvcmUgdGhlIGVudHJ5IGdyb3VwIGJlaW5nIGVkaXRlZFxuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCBjaGFuZ2VzXG59XG5cblxuZGVsZXRlRXZlbnQoIGV2ZW50SWQ6IG51bWJlciwgZW50cnlHcm91cDogYW55KSB7XG4gIGNvbnN0IGV2ZW50ID0gdGhpcy5hbGxFdmVudHMuZmluZChlID0+IGUuaWQgPT09IGV2ZW50SWQpO1xuICBpZiAoZXZlbnQpIHtcbiAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIHRoZSBlbnRyeUdyb3VwIHRvIGRlbGV0ZVxuICAgICAgY29uc3QgZW50cnlJbmRleCA9IGV2ZW50LmVudHJpZXMuaW5kZXhPZihlbnRyeUdyb3VwKTtcbiAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICBldmVudC5lbnRyaWVzLnNwbGljZShlbnRyeUluZGV4LCAxKTsgLy8gUmVtb3ZlIHRoZSBzcGVjaWZpYyBlbnRyeVxuICAgICAgfVxuXG4gICAgICAvLyBJZiB0aGUgZXZlbnQgaGFzIG5vIG1vcmUgZW50cmllcywgcmVtb3ZlIHRoZSBldmVudCBlbnRpcmVseVxuICAgICAgaWYgKGV2ZW50LmVudHJpZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZXZlbnRJbmRleCA9IHRoaXMuYWxsRXZlbnRzLmluZGV4T2YoZXZlbnQpO1xuICAgICAgICAgIGlmIChldmVudEluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgdGhpcy5hbGxFdmVudHMuc3BsaWNlKGV2ZW50SW5kZXgsIDEpOyAvLyBSZW1vdmUgdGhlIGVudGlyZSBldmVudFxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgfVxuICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTsgLy8gUmVnZW5lcmF0ZSB0aGUgY2FsZW5kYXIgdG8gcmVmbGVjdCB0aGUgY2hhbmdlc1xufVxuXG5cbiAgY2xvc2VNb2RhbCgpIHtcbiAgICB0aGlzLmlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIH1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgYWRkRXZlbnQoZGF5OiBDYWxlbmRhckRheSwgZW50cnlRdWVzKSB7XG4gICAgLy8gVHJhbnNmb3JtIG5ldyBlbnRyaWVzIGludG8gdGhlIGRlc2lyZWQgZm9ybWF0XG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJ5UXVlcy5yZWR1Y2UoKGFjYywgcSkgPT4ge1xuICAgICAgICBhY2NbcS5JZF0gPSB7IC4uLnEgfTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICAvLyBGaW5kIGFuIGV4aXN0aW5nIGV2ZW50IGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnQgPSBkYXkuZXZlbnRzLmZpbmQoZXZlbnQgPT4gZXZlbnQuZGF0ZSA9PT0gZGF5LmRhdGUpO1xuXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcbiAgICAgICAgLy8gTWVyZ2UgbmV3IGVudHJpZXMgaW50byB0aGUgZXhpc3RpbmcgZXZlbnQncyBlbnRyaWVzIGFycmF5XG4gICAgICAgIC8vIENoZWNrIGlmIHRoZSBlbnRyaWVzIGFycmF5IGFscmVhZHkgY29udGFpbnMgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgSURcbiAgICAgICAgY29uc3QgZXhpc3RpbmdFbnRyaWVzID0gZXhpc3RpbmdFdmVudC5lbnRyaWVzLm1hcChlbnRyeSA9PiAoeyAuLi5lbnRyeSB9KSk7XG5cbiAgICAgICAgLy8gQXBwZW5kIG5ldyBlbnRyaWVzIHRvIHRoZSBleGlzdGluZyBlbnRyaWVzXG4gICAgICAgIGV4aXN0aW5nRW50cmllcy5wdXNoKG5ld0VudHJpZXMpO1xuICAgICAgICBleGlzdGluZ0V2ZW50LmVudHJpZXMgPSBleGlzdGluZ0VudHJpZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGV2ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgICAgIGNvbnN0IG5ld0V2ZW50ID0ge1xuICAgICAgICAgICAgaWQ6IHRoaXMuZ2VuZXJhdGVJZCgpLFxuICAgICAgICAgICAgZGF0ZTogZGF5LmRhdGUsXG4gICAgICAgICAgICBlbnRyaWVzOiBbbmV3RW50cmllc10gLy8gV3JhcCB0aGUgbmV3IGVudHJpZXMgaW4gYW4gYXJyYXlcbiAgICAgICAgfTtcbiAgICAgICAgZGF5LmV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICAgICAgdGhpcy5hbGxFdmVudHMucHVzaChuZXdFdmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gICAgY29uc29sZS5sb2coJ2FsbEV2ZW50cycsIHRoaXMuYWxsRXZlbnRzKTtcbn1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgb25TYXZlKCkge1xuICAgIGlmICh0aGlzLmVkaXRpbmdFdmVudElkICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5hbGxFdmVudHMuZmluZChlID0+IGUuaWQgPT09IHRoaXMuZWRpdGluZ0V2ZW50SWQpO1xuICAgICAgICBpZiAoZXZlbnQgJiYgdGhpcy5lZGl0aW5nRW50cnlHcm91cCkge1xuICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzcGVjaWZpYyBlbnRyeSBncm91cCB3aXRoaW4gdGhlIGV2ZW50XG4gICAgICAgICAgICBjb25zdCBlbnRyeUluZGV4ID0gZXZlbnQuZW50cmllcy5maW5kSW5kZXgoZW50cnlHcm91cCA9PiBlbnRyeUdyb3VwID09PSB0aGlzLmVkaXRpbmdFbnRyeUdyb3VwKTtcbiAgICAgICAgICAgIGlmIChlbnRyeUluZGV4ID4gLTEpIHtcbiAgICAgICAgICAgICAgICBldmVudC5lbnRyaWVzW2VudHJ5SW5kZXhdID0gdGhpcy5jYWxlbmRhclF1ZXN0aW9uLnJlZHVjZSgoYWNjLCBxKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFjY1txLklkXSA9IHsgLi4ucSB9O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIH0sIHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF5KSB7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50KHRoaXMuc2VsZWN0ZWREYXksIHRoaXMuY2FsZW5kYXJRdWVzdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG59XG5cbiAgb25DYW5jZWwoKSB7XG4gICAgY29uc29sZS5sb2coJ0NhbmNlbCBidXR0b24gY2xpY2tlZCcpO1xuICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICB9XG5cbiAgaGFuZGxlUXVlc3Rpb25FdmVudChxdWVzKXtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgcXVlc3Rpb25zIGFycmF5IHdpdGggdGhlIG5ldyBxdWVzdGlvblxuICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmNhbGVuZGFyUXVlc3Rpb24uZmluZEluZGV4KHEgPT4gcS5JZCA9PT0gcXVlcy5JZCk7XG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAvLyBJZiBxdWVzdGlvbiBhbHJlYWR5IGV4aXN0cywgdXBkYXRlIGl0XG4gICAgICAgIHRoaXMuY2FsZW5kYXJRdWVzdGlvbltpbmRleF0gPSBxdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgcXVlc3Rpb24gZG9lc24ndCBleGlzdCwgYWRkIGl0IHRvIHRoZSBhcnJheVxuICAgICAgICB0aGlzLmNhbGVuZGFyUXVlc3Rpb24ucHVzaChxdWVzKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGUubG9nKCdjYWxlbmRlciBxdWVzdGlvbicpO1xuICAgICAgY29uc29sZS5sb2codGhpcy5jYWxlbmRhclF1ZXN0aW9uKTtcbiAgICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gICAgZ2VuZXJhdGVJZCgpIHtcbiAgICAgIHJldHVybiAnXycgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSk7XG4gICAgfVxuXG4gICAgZ2V0RW50cnlLZXlzKGVudHJ5R3JvdXA6IGFueSk6IHN0cmluZ1tdIHtcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnRyeUdyb3VwKTtcbiAgfVxuXG4gIHJlbW92ZUNoYXJhY3RlcnMocXVlc3Rpb25UZXh0OnN0cmluZyl7XG4gICAgbGV0IHVwZGF0ZWRUZXh0ID0gcXVlc3Rpb25UZXh0Py5yZXBsYWNlKC88W14+XSo+L2csICcnKTtcbiAgICByZXR1cm4gdXBkYXRlZFRleHQ7XG4gfVxuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYWxpZ24tY2FsZW5kYXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwicHJldmlvdXNNb250aCgpXCI+PDwgUHJldmlvdXMgPj48L2J1dHRvbj5cbiAgICAgICAgICA8aDM+e3sgY3VycmVudERhdGUgfCBkYXRlOiAnTU1NTSB5eXl5JyB9fTwvaDM+XG4gICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibmV4dE1vbnRoKClcIj48PCBOZXh0ID4+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1ncmlkXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1vZi13ZWVrXCIgKm5nRm9yPVwibGV0IGRheSBvZiBkYXlzT2ZXZWVrXCI+e3sgZGF5IH19PC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItZGF5XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBjYWxlbmRhckRheXNcIlxuICAgICAgICAgICAgICBbY2xhc3Mubm90LWN1cnJlbnQtbW9udGhdPVwiIWRheS5pc0N1cnJlbnRNb250aFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wYXN0XT1cImRheS5pc1Bhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MudG9kYXldPVwiZGF5LmlzVG9kYXlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZnV0dXJlXT1cImRheS5pc0Z1dHVyZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJkYXkuaXNTZWxlY3RlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5LW51bWJlclwiPnt7IGRheS5kYXRlLmdldERhdGUoKSB9fVxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmV2ZW50cy5sZW5ndGggPiAwXCIgY2xhc3M9XCJlbnRyeS1pbmRpY2F0b3JcIiBbY2xhc3Muc2VsZWN0XT1cImRheS5pc1NlbGVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0Zvcj1cImxldCBldmVudCBvZiBkYXkuZXZlbnRzXCIgPlxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCIgY2xhc3M9XCJldmVudFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBnZXRFbnRyeUtleXMoZW50cnlHcm91cClcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdUaW1lJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZW50cnlHcm91cFtrZXldLmlucHV0Py52YWx1ZSB8IGRhdGU6ICdzaG9ydFRpbWUnIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgIT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBlbnRyeUdyb3VwW2tleV0uaW5wdXQgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJhcHBvaW5hcHBvaW50bWVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QWRkIEFwcG9pbnRtZW50PC9oND5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwic2VsZWN0ZWREYXlcIiAoY2xpY2spPVwiYWRkQXBwb2ludG1lbnQoKVwiPkFkZDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tVkQgMDZTZXAyNCBjYWxlbmRhciB1cGRhdGVzLS0+IFxuICAgICAgPGRpdiAqbmdJZj1cInNob3dBcHBvaW5tZW50U2VjdGlvbiAmJiBzZWxlY3RlZERheT8uZXZlbnRzLmxlbmd0aCA+IDBcIiBjbGFzcz1cImFwcG9pbnRtZW50cy1jb250YWluZXJcIj5cbiAgICAgICAgICA8aDQ+QXBwb2ludG1lbnRzPC9oND5cbiAgICAgICAgICA8ZGl2ICAqbmdGb3I9XCJsZXQgZXZlbnQgb2Ygc2VsZWN0ZWREYXk/LmV2ZW50c1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnRcIiAqbmdGb3I9XCJsZXQgZW50cnlHcm91cCBvZiBldmVudC5lbnRyaWVzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJldmVudC1pbmZvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGdldEVudHJ5S2V5cyhlbnRyeUdyb3VwKVwiIGNsYXNzPVwiZW50cnktcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2NcIiBjbGFzcz1cImVudHJ5LXRleHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3JlbW92ZUNoYXJhY3RlcnMoZW50cnlHcm91cFtrZXldLlF1ZXN0aW9uX1RleHRfX2MpfX06XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeS12YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgIT0gJ1RpbWUnICYmIGVudHJ5R3JvdXBba2V5XS5UeXBlX19jICE9ICdMaW5rJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImVudHJ5R3JvdXBba2V5XS5UeXBlX19jID09ICdUaW1lJ1wiPnt7IGVudHJ5R3JvdXBba2V5XS5pbnB1dCB8IGRhdGU6ICdzaG9ydFRpbWUnIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZW50cnlHcm91cFtrZXldLlR5cGVfX2MgPT0gJ0xpbmsnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e2VudHJ5R3JvdXBba2V5XS5pbnB1dH19XCI+e3tyZW1vdmVDaGFyYWN0ZXJzKGVudHJ5R3JvdXBba2V5XS5RdWVzdGlvbl9UZXh0X19jKX19PC9hPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXZlbnQtYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZWRpdEV2ZW50KGV2ZW50LGVudHJ5R3JvdXApXCI+RWRpdDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGVsZXRlRXZlbnQoZXZlbnQuaWQsZW50cnlHcm91cClcIj5EZWxldGU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxhcHAtY3VzdG9tLW1vZGVsXG4gIFttb2RhbFRpdGxlXT1cIm1vZGFsVGl0bGVcIlxuICBbaXNNb2RhbE9wZW5dPVwiaXNNb2RhbE9wZW5cIlxuICBbbW9kYWxTaXplXT1cIm1vZGFsU2l6ZVwiXG4gIFtzYXZlQnV0dG9uVmFsdWVdPVwic2F2ZUJ1dHRvblZhbHVlXCJcbiAgW21vZGFsRm9vdGVyXT1cIm1vZGFsRm9vdGVyXCJcbiAgKHNhdmVCdXR0b25FbWl0KT1cIm9uU2F2ZSgpXCJcbiAgKGNhbmNlbEJ1dHRvbkVtaXQpPVwib25DYW5jZWwoKVwiXG4+XG48bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiUmVmcmVuY2VCb29rXCIgW3F1ZXN0aW9uc109XCJyZWZlcmVuY2VRdWVzdGlvbnNcIiAoaGFuZGxlUXVlc3Rpb24pPVwiaGFuZGxlUXVlc3Rpb25FdmVudCgkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuPC9hcHAtY3VzdG9tLW1vZGVsPlxuXG5cbiAgXG4gIFxuICAiXX0=
|
|
@@ -25,11 +25,11 @@ export class CustomModelComponent {
|
|
|
25
25
|
this.saveButtonEmit.emit();
|
|
26
26
|
}
|
|
27
27
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomModelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomModelComponent, selector: "app-custom-model", inputs: { modalTitle: "modalTitle", isModalOpen: "isModalOpen", modalSize: "modalSize", saveButtonValue: "saveButtonValue", modalFooter: "modalFooter" }, outputs: { saveButtonEmit: "saveButtonEmit", cancelButtonEmit: "cancelButtonEmit" }, ngImport: i0, template: "<div *ngIf=\"isModalOpen\" class=\"modal\" [ngClass]=\"modalSize\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <span class=\"close\" (click)=\"onCancel()\">×</span>\n <h2>{{ modalTitle }}</h2>\n </div>\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\" *ngIf=\"modalFooter\">\n <button (click)=\"
|
|
28
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: CustomModelComponent, selector: "app-custom-model", inputs: { modalTitle: "modalTitle", isModalOpen: "isModalOpen", modalSize: "modalSize", saveButtonValue: "saveButtonValue", modalFooter: "modalFooter" }, outputs: { saveButtonEmit: "saveButtonEmit", cancelButtonEmit: "cancelButtonEmit" }, ngImport: i0, template: "<div *ngIf=\"isModalOpen\" class=\"modal\" [ngClass]=\"modalSize\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <span class=\"close\" (click)=\"onCancel()\">×</span>\n <h2>{{ modalTitle }}</h2>\n </div>\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <!-- /* VD 06Sep24 styling changes */-->\n <div class=\"modal-footer\" *ngIf=\"modalFooter\">\n <button (click)=\"onCancel()\">Cancel</button>\n <button (click)=\"onSave()\">{{ saveButtonValue }}</button>\n </div>\n </div>\n</div>\n ", styles: [".modal{display:block;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#0006}.modal-content{background-color:#fefefe;margin:5% auto;padding:20px;border:1px solid #888;width:70%;max-width:90%;max-height:80vh;overflow-y:auto}.modal-header,.modal-footer{padding:10px;text-align:center;display:block}.modal-body{max-height:60vh;overflow-y:auto}.close{color:#aaa;float:right;font-size:28px;font-weight:700}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-footer button{padding:10px 20px;margin:5px;font-size:16px;border:1px solid #ccc;border-radius:4px;cursor:pointer;background-color:#f5f5f5;color:#333}.modal-footer button:hover{background-color:#e0e0e0;border-color:#bbb}@media (max-width: 768px){.modal-content{width:90%;margin:10% auto}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
29
29
|
}
|
|
30
30
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CustomModelComponent, decorators: [{
|
|
31
31
|
type: Component,
|
|
32
|
-
args: [{ selector: 'app-custom-model', template: "<div *ngIf=\"isModalOpen\" class=\"modal\" [ngClass]=\"modalSize\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <span class=\"close\" (click)=\"onCancel()\">×</span>\n <h2>{{ modalTitle }}</h2>\n </div>\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <div class=\"modal-footer\" *ngIf=\"modalFooter\">\n <button (click)=\"
|
|
32
|
+
args: [{ selector: 'app-custom-model', template: "<div *ngIf=\"isModalOpen\" class=\"modal\" [ngClass]=\"modalSize\">\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <span class=\"close\" (click)=\"onCancel()\">×</span>\n <h2>{{ modalTitle }}</h2>\n </div>\n <div class=\"modal-body\">\n <ng-content></ng-content>\n </div>\n <!-- /* VD 06Sep24 styling changes */-->\n <div class=\"modal-footer\" *ngIf=\"modalFooter\">\n <button (click)=\"onCancel()\">Cancel</button>\n <button (click)=\"onSave()\">{{ saveButtonValue }}</button>\n </div>\n </div>\n</div>\n ", styles: [".modal{display:block;position:fixed;z-index:1;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:#0006}.modal-content{background-color:#fefefe;margin:5% auto;padding:20px;border:1px solid #888;width:70%;max-width:90%;max-height:80vh;overflow-y:auto}.modal-header,.modal-footer{padding:10px;text-align:center;display:block}.modal-body{max-height:60vh;overflow-y:auto}.close{color:#aaa;float:right;font-size:28px;font-weight:700}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer}.modal-footer button{padding:10px 20px;margin:5px;font-size:16px;border:1px solid #ccc;border-radius:4px;cursor:pointer;background-color:#f5f5f5;color:#333}.modal-footer button:hover{background-color:#e0e0e0;border-color:#bbb}@media (max-width: 768px){.modal-content{width:90%;margin:10% auto}}\n"] }]
|
|
33
33
|
}], ctorParameters: function () { return []; }, propDecorators: { modalTitle: [{
|
|
34
34
|
type: Input
|
|
35
35
|
}], isModalOpen: [{
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
|
|
|
45
45
|
}], cancelButtonEmit: [{
|
|
46
46
|
type: Output
|
|
47
47
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW1vZGVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9jb21wb25lbnRzL2N1c3RvbS1tb2RlbC9jdXN0b20tbW9kZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbnh0LWFwcC9zcmMvbGliL2NvbXBvbmVudHMvY3VzdG9tLW1vZGVsL2N1c3RvbS1tb2RlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7QUFPdEcsTUFBTSxPQUFPLG9CQUFvQjtJQUUvQixnQkFBZ0IsQ0FBQztJQUNSLFVBQVUsQ0FBTTtJQUNoQixXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDZixlQUFlLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbEIsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7SUFDekMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUVyRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBR0QsUUFBUTtJQUNSLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDN0IsQ0FBQzt3R0E3QlUsb0JBQW9COzRGQUFwQixvQkFBb0IsdVNDUGpDLGttQkFnQkU7OzRGRFRXLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxrQkFBa0I7MEVBT25CLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY3VzdG9tLW1vZGVsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbS1tb2RlbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2N1c3RvbS1tb2RlbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tTW9kZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG4gIEBJbnB1dCgpIG1vZGFsVGl0bGU6IGFueTtcbiAgQElucHV0KCkgaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kYWxTaXplID0gJyc7XG4gIEBJbnB1dCgpIHNhdmVCdXR0b25WYWx1ZSA9ICdTYXZlJztcbiAgQElucHV0KCkgbW9kYWxGb290ZXIgPSB0cnVlO1xuICBAT3V0cHV0KCkgc2F2ZUJ1dHRvbkVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbEJ1dHRvbkVtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBvblNhdmUoKSB7XG4gICAgdGhpcy5zYXZlQnV0dG9uRW1pdC5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbCgpIHtcbiAgICB0aGlzLmNhbmNlbEJ1dHRvbkVtaXQuZW1pdCgpO1xuICB9XG5cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgfVxuXG4gIGNsb3NlTW9kYWwoKSB7XG4gICAgdGhpcy5jYW5jZWxCdXR0b25FbWl0LmVtaXQoZmFsc2UpO1xuICB9XG5cbiAgc2F2ZU1vZGFsKCkge1xuICAgIHRoaXMuc2F2ZUJ1dHRvbkVtaXQuZW1pdCgpO1xuICB9XG5cbn1cbiIsIjxkaXYgKm5nSWY9XCJpc01vZGFsT3BlblwiIGNsYXNzPVwibW9kYWxcIiBbbmdDbGFzc109XCJtb2RhbFNpemVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj4mdGltZXM7PC9zcGFuPlxuICAgICAgICA8aDI+e3sgbW9kYWxUaXRsZSB9fTwvaDI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSAvKiBWRCAwNlNlcDI0IHN0eWxpbmcgY2hhbmdlcyAqLy0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiICpuZ0lmPVwibW9kYWxGb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblNhdmUoKVwiPnt7IHNhdmVCdXR0b25WYWx1ZSB9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiAgIl19
|