ms-time-sheet 0.0.9 → 0.0.12
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/ms-time-sheet.component.mjs +234 -389
- package/esm2022/lib/pipes/timezone-format.pipe.mjs +155 -0
- package/esm2022/lib/services/common.service.mjs +33 -3
- package/esm2022/public-api.mjs +3 -1
- package/fesm2022/ms-time-sheet.mjs +415 -392
- package/fesm2022/ms-time-sheet.mjs.map +1 -1
- package/lib/ms-time-sheet.component.d.ts +20 -20
- package/lib/pipes/timezone-format.pipe.d.ts +15 -0
- package/lib/services/common.service.d.ts +10 -0
- package/package.json +4 -2
- package/public-api.d.ts +2 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class TimezoneFormatPipe {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.formatCache = new Map();
|
|
6
|
+
}
|
|
7
|
+
transform(value, prefs, formatType = 'datetime') {
|
|
8
|
+
if (!value) {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
const timeZone = prefs?.timeZone || 'America/New_York';
|
|
12
|
+
// Convert Angular DatePipe format to moment.js format for parsing
|
|
13
|
+
const dateFormat = this.convertAngularToMomentFormat(prefs?.dateFormat || 'MM/dd/yyyy');
|
|
14
|
+
const timeFormat = this.convertAngularToMomentFormat(prefs?.timeFormat || 'HH:mm');
|
|
15
|
+
// Detect if value is time-only (e.g. '09:00', '9:00', '09:00:00' format)
|
|
16
|
+
const isTimeOnly = /^\d{1,2}:\d{2}(:\d{2})?$/.test(String(value));
|
|
17
|
+
let finalFormat;
|
|
18
|
+
if (formatType === 'date') {
|
|
19
|
+
finalFormat = dateFormat;
|
|
20
|
+
}
|
|
21
|
+
else if (formatType === 'time') {
|
|
22
|
+
finalFormat = timeFormat;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
finalFormat = `${dateFormat} ${timeFormat}`;
|
|
26
|
+
}
|
|
27
|
+
let date;
|
|
28
|
+
if (isTimeOnly) {
|
|
29
|
+
// Combine with today's date for timezone context
|
|
30
|
+
const today = new Date().toISOString().split('T')[0];
|
|
31
|
+
const timeStr = String(value);
|
|
32
|
+
// Ensure time has seconds if not present
|
|
33
|
+
const fullTimeStr = timeStr.includes(':') && timeStr.split(':').length === 2 ? `${timeStr}:00` : timeStr;
|
|
34
|
+
const dateTimeString = `${today}T${fullTimeStr}`;
|
|
35
|
+
date = new Date(dateTimeString);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Parse as date
|
|
39
|
+
if (value instanceof Date) {
|
|
40
|
+
date = value;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
date = new Date(value);
|
|
44
|
+
}
|
|
45
|
+
if (isNaN(date.getTime())) {
|
|
46
|
+
return '';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return this.formatDate(date, finalFormat, timeZone);
|
|
50
|
+
}
|
|
51
|
+
formatDate(date, format, timeZone) {
|
|
52
|
+
const options = this.parseFormatToIntlOptions(format);
|
|
53
|
+
options.timeZone = timeZone;
|
|
54
|
+
const formatter = new Intl.DateTimeFormat('en-US', options);
|
|
55
|
+
return formatter.format(date);
|
|
56
|
+
}
|
|
57
|
+
parseFormatToIntlOptions(format) {
|
|
58
|
+
const cacheKey = format;
|
|
59
|
+
if (this.formatCache.has(cacheKey)) {
|
|
60
|
+
return { ...this.formatCache.get(cacheKey) };
|
|
61
|
+
}
|
|
62
|
+
const options = {};
|
|
63
|
+
// Parse moment.js style format strings
|
|
64
|
+
// Handle year
|
|
65
|
+
if (format.includes('YYYY')) {
|
|
66
|
+
options.year = 'numeric';
|
|
67
|
+
}
|
|
68
|
+
else if (format.includes('YY')) {
|
|
69
|
+
options.year = '2-digit';
|
|
70
|
+
}
|
|
71
|
+
// Handle month
|
|
72
|
+
if (format.includes('MMMM')) {
|
|
73
|
+
options.month = 'long';
|
|
74
|
+
}
|
|
75
|
+
else if (format.includes('MMM')) {
|
|
76
|
+
options.month = 'short';
|
|
77
|
+
}
|
|
78
|
+
else if (format.includes('MM')) {
|
|
79
|
+
options.month = '2-digit';
|
|
80
|
+
}
|
|
81
|
+
else if (format.includes('M')) {
|
|
82
|
+
options.month = 'numeric';
|
|
83
|
+
}
|
|
84
|
+
// Handle day
|
|
85
|
+
if (format.includes('DD')) {
|
|
86
|
+
options.day = '2-digit';
|
|
87
|
+
}
|
|
88
|
+
else if (format.includes('D')) {
|
|
89
|
+
options.day = 'numeric';
|
|
90
|
+
}
|
|
91
|
+
// Handle weekday
|
|
92
|
+
if (format.includes('dddd')) {
|
|
93
|
+
options.weekday = 'long';
|
|
94
|
+
}
|
|
95
|
+
else if (format.includes('ddd')) {
|
|
96
|
+
options.weekday = 'short';
|
|
97
|
+
}
|
|
98
|
+
// Handle hour
|
|
99
|
+
if (format.includes('HH') || format.includes('H')) {
|
|
100
|
+
options.hour = format.includes('HH') ? '2-digit' : 'numeric';
|
|
101
|
+
options.hour12 = false;
|
|
102
|
+
}
|
|
103
|
+
else if (format.includes('hh') || format.includes('h')) {
|
|
104
|
+
options.hour = format.includes('hh') ? '2-digit' : 'numeric';
|
|
105
|
+
options.hour12 = true;
|
|
106
|
+
}
|
|
107
|
+
// Handle minute
|
|
108
|
+
if (format.includes('mm')) {
|
|
109
|
+
options.minute = '2-digit';
|
|
110
|
+
}
|
|
111
|
+
else if (format.includes('m')) {
|
|
112
|
+
options.minute = 'numeric';
|
|
113
|
+
}
|
|
114
|
+
// Handle second
|
|
115
|
+
if (format.includes('ss')) {
|
|
116
|
+
options.second = '2-digit';
|
|
117
|
+
}
|
|
118
|
+
else if (format.includes('s')) {
|
|
119
|
+
options.second = 'numeric';
|
|
120
|
+
}
|
|
121
|
+
// Handle AM/PM (overrides hour12 if explicitly set)
|
|
122
|
+
if (format.includes('A') || format.includes('a')) {
|
|
123
|
+
options.hour12 = true;
|
|
124
|
+
}
|
|
125
|
+
this.formatCache.set(cacheKey, { ...options });
|
|
126
|
+
return options;
|
|
127
|
+
}
|
|
128
|
+
convertAngularToMomentFormat(angularFormat) {
|
|
129
|
+
// Convert Angular DatePipe format to moment.js format
|
|
130
|
+
return angularFormat
|
|
131
|
+
.replace(/dd/g, 'DD') // Day of month: dd -> DD
|
|
132
|
+
.replace(/yyyy/g, 'YYYY') // Year: yyyy -> YYYY
|
|
133
|
+
.replace(/yy/g, 'YY') // Year: yy -> YY
|
|
134
|
+
.replace(/MM/g, 'MM') // Month: MM -> MM (same)
|
|
135
|
+
.replace(/M/g, 'M') // Month: M -> M (same)
|
|
136
|
+
.replace(/HH/g, 'HH') // Hour 24: HH -> HH (same)
|
|
137
|
+
.replace(/H/g, 'H') // Hour 24: H -> H (same)
|
|
138
|
+
.replace(/h/g, 'h') // Hour 12: h -> h (same)
|
|
139
|
+
.replace(/mm/g, 'mm') // Minute: mm -> mm (same)
|
|
140
|
+
.replace(/m/g, 'm') // Minute: m -> m (same)
|
|
141
|
+
.replace(/ss/g, 'ss') // Second: ss -> ss (same)
|
|
142
|
+
.replace(/s/g, 's') // Second: s -> s (same)
|
|
143
|
+
.replace(/a/g, 'a'); // AM/PM: a -> a (same)
|
|
144
|
+
}
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimezoneFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
146
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: TimezoneFormatPipe, isStandalone: true, name: "timezoneFormat" }); }
|
|
147
|
+
}
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TimezoneFormatPipe, decorators: [{
|
|
149
|
+
type: Pipe,
|
|
150
|
+
args: [{
|
|
151
|
+
name: 'timezoneFormat',
|
|
152
|
+
standalone: true
|
|
153
|
+
}]
|
|
154
|
+
}] });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXpvbmUtZm9ybWF0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tcy10aW1lLXNoZWV0L3NyYy9saWIvcGlwZXMvdGltZXpvbmUtZm9ybWF0LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7O0FBTXBELE1BQU0sT0FBTyxrQkFBa0I7SUFKL0I7UUFNVSxnQkFBVyxHQUFHLElBQUksR0FBRyxFQUFzQyxDQUFDO0tBc0pyRTtJQXBKQyxTQUFTLENBQ1AsS0FBdUMsRUFDdkMsS0FBb0UsRUFDcEUsYUFBMkMsVUFBVTtRQUVyRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLEVBQUUsUUFBUSxJQUFJLGtCQUFrQixDQUFDO1FBQ3ZELGtFQUFrRTtRQUNsRSxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN4RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxPQUFPLENBQUMsQ0FBQztRQUVuRix5RUFBeUU7UUFDekUsTUFBTSxVQUFVLEdBQUcsMEJBQTBCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWxFLElBQUksV0FBbUIsQ0FBQztRQUN4QixJQUFJLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUMxQixXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzNCLENBQUM7YUFBTSxJQUFJLFVBQVUsS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzNCLENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFH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LENBQUMsQ0FBRSx5QkFBeUI7YUFDL0MsT0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBRSxxQkFBcUI7YUFDL0MsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRSxpQkFBaUI7YUFDdkMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRSx5QkFBeUI7YUFDL0MsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBRSx1QkFBdUI7YUFDM0MsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRSwyQkFBMkI7YUFDakQsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBRSx5QkFBeUI7YUFDN0MsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBRSx5QkFBeUI7YUFDN0MsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRSwwQkFBMEI7YUFDaEQsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBRSx3QkFBd0I7YUFDNUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBRSwwQkFBMEI7YUFDaEQsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBRSx3QkFBd0I7YUFDNUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtJQUNoRCxDQUFDOytHQXZKVSxrQkFBa0I7NkdBQWxCLGtCQUFrQjs7NEZBQWxCLGtCQUFrQjtrQkFKOUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ3RpbWV6b25lRm9ybWF0JyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUaW1lem9uZUZvcm1hdFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucz4oKTtcclxuXHJcbiAgdHJhbnNmb3JtKFxyXG4gICAgdmFsdWU6IHN0cmluZyB8IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgcHJlZnM/OiB7IHRpbWVab25lOiBzdHJpbmcsIGRhdGVGb3JtYXQ6IHN0cmluZywgdGltZUZvcm1hdDogc3RyaW5nIH0sXHJcbiAgICBmb3JtYXRUeXBlOiAnZGF0ZScgfCAndGltZScgfCAnZGF0ZXRpbWUnID0gJ2RhdGV0aW1lJ1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0aW1lWm9uZSA9IHByZWZzPy50aW1lWm9uZSB8fCAnQW1lcmljYS9OZXdfWW9yayc7XHJcbiAgICAvLyBDb252ZXJ0IEFuZ3VsYXIgRGF0ZVBpcGUgZm9ybWF0IHRvIG1vbWVudC5qcyBmb3JtYXQgZm9yIHBhcnNpbmdcclxuICAgIGNvbnN0IGRhdGVGb3JtYXQgPSB0aGlzLmNvbnZlcnRBbmd1bGFyVG9Nb21lbnRGb3JtYXQocHJlZnM/LmRhdGVGb3JtYXQgfHwgJ01NL2RkL3l5eXknKTtcclxuICAgIGNvbnN0IHRpbWVGb3JtYXQgPSB0aGlzLmNvbnZlcnRBbmd1bGFyVG9Nb21lbnRGb3JtYXQocHJlZnM/LnRpbWVGb3JtYXQgfHwgJ0hIOm1tJyk7XHJcblxyXG4gICAgLy8gRGV0ZWN0IGlmIHZhbHVlIGlzIHRpbWUtb25seSAoZS5nLiAnMDk6MDAnLCAnOTowMCcsICcwOTowMDowMCcgZm9ybWF0KVxyXG4gICAgY29uc3QgaXNUaW1lT25seSA9IC9eXFxkezEsMn06XFxkezJ9KDpcXGR7Mn0pPyQvLnRlc3QoU3RyaW5nKHZhbHVlKSk7XHJcblxyXG4gICAgbGV0IGZpbmFsRm9ybWF0OiBzdHJpbmc7XHJcbiAgICBpZiAoZm9ybWF0VHlwZSA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGZpbmFsRm9ybWF0ID0gZGF0ZUZvcm1hdDtcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0VHlwZSA9PT0gJ3RpbWUnKSB7XHJcbiAgICAgIGZpbmFsRm9ybWF0ID0gdGltZUZvcm1hdDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZpbmFsRm9ybWF0ID0gYCR7ZGF0ZUZvcm1hdH0gJHt0aW1lRm9ybWF0fWA7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGRhdGU6IERhdGU7XHJcbiAgICBpZiAoaXNUaW1lT25seSkge1xyXG4gICAgICAvLyBDb21iaW5lIHdpdGggdG9kYXkncyBkYXRlIGZvciB0aW1lem9uZSBjb250ZXh0XHJcbiAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XHJcbiAgICAgIGNvbnN0IHRpbWVTdHIgPSBTdHJpbmcodmFsdWUpO1xyXG4gICAgICAvLyBFbnN1cmUgdGltZSBoYXMgc2Vjb25kcyBpZiBub3QgcHJlc2VudFxyXG4gICAgICBjb25zdCBmdWxsVGltZVN0ciA9IHRpbWVTdHIuaW5jbHVkZXMoJzonKSAmJiB0aW1lU3RyLnNwbGl0KCc6JykubGVuZ3RoID09PSAyID8gYCR7dGltZVN0cn06MDBgIDogdGltZVN0cjtcclxuICAgICAgY29uc3QgZGF0ZVRpbWVTdHJpbmcgPSBgJHt0b2RheX1UJHtmdWxsVGltZVN0cn1gO1xyXG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZVRpbWVTdHJpbmcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gUGFyc2UgYXMgZGF0ZVxyXG4gICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XHJcbiAgICAgICAgZGF0ZSA9IHZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGRhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzTmFOKGRhdGUuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1hdERhdGUoZGF0ZSwgZmluYWxGb3JtYXQsIHRpbWVab25lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0RGF0ZShkYXRlOiBEYXRlLCBmb3JtYXQ6IHN0cmluZywgdGltZVpvbmU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBvcHRpb25zID0gdGhpcy5wYXJzZUZvcm1hdFRvSW50bE9wdGlvbnMoZm9ybWF0KTtcclxuICAgIG9wdGlvbnMudGltZVpvbmUgPSB0aW1lWm9uZTtcclxuXHJcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4tVVMnLCBvcHRpb25zKTtcclxuICAgIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZUZvcm1hdFRvSW50bE9wdGlvbnMoZm9ybWF0OiBzdHJpbmcpOiBJbnRsLkRhdGVUaW1lRm9ybWF0T3B0aW9ucyB7XHJcbiAgICBjb25zdCBjYWNoZUtleSA9IGZvcm1hdDtcclxuICAgIGlmICh0aGlzLmZvcm1hdENhY2hlLmhhcyhjYWNoZUtleSkpIHtcclxuICAgICAgcmV0dXJuIHsgLi4udGhpcy5mb3JtYXRDYWNoZS5nZXQoY2FjaGVLZXkpISB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9wdGlvbnM6IEludGwuRGF0ZVRpbWVGb3JtYXRPcHRpb25zID0ge307XHJcblxyXG4gICAgLy8gUGFyc2UgbW9tZW50LmpzIHN0eWxlIGZvcm1hdCBzdHJpbmdzXHJcbiAgICAvLyBIYW5kbGUgeWVhclxyXG4gICAgaWYgKGZvcm1hdC5pbmNsdWRlcygnWVlZWScpKSB7XHJcbiAgICAgIG9wdGlvbnMueWVhciA9ICdudW1lcmljJztcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdZWScpKSB7XHJcbiAgICAgIG9wdGlvbnMueWVhciA9ICcyLWRpZ2l0JztcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgbW9udGhcclxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ01NTU0nKSkge1xyXG4gICAgICBvcHRpb25zLm1vbnRoID0gJ2xvbmcnO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ01NTScpKSB7XHJcbiAgICAgIG9wdGlvbnMubW9udGggPSAnc2hvcnQnO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ01NJykpIHtcclxuICAgICAgb3B0aW9ucy5tb250aCA9ICcyLWRpZ2l0JztcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdNJykpIHtcclxuICAgICAgb3B0aW9ucy5tb250aCA9ICdudW1lcmljJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgZGF5XHJcbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdERCcpKSB7XHJcbiAgICAgIG9wdGlvbnMuZGF5ID0gJzItZGlnaXQnO1xyXG4gICAgfSBlbHNlIGlmIChmb3JtYXQuaW5jbHVkZXMoJ0QnKSkge1xyXG4gICAgICBvcHRpb25zLmRheSA9ICdudW1lcmljJztcclxuICAgIH1cclxuXHJcbiAgICAvLyBIYW5kbGUgd2Vla2RheVxyXG4gICAgaWYgKGZvcm1hdC5pbmNsdWRlcygnZGRkZCcpKSB7XHJcbiAgICAgIG9wdGlvbnMud2Vla2RheSA9ICdsb25nJztcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdkZGQnKSkge1xyXG4gICAgICBvcHRpb25zLndlZWtkYXkgPSAnc2hvcnQnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBob3VyXHJcbiAgICBpZiAoZm9ybWF0LmluY2x1ZGVzKCdISCcpIHx8IGZvcm1hdC5pbmNsdWRlcygnSCcpKSB7XHJcbiAgICAgIG9wdGlvbnMuaG91ciA9IGZvcm1hdC5pbmNsdWRlcygnSEgnKSA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcclxuICAgICAgb3B0aW9ucy5ob3VyMTIgPSBmYWxzZTtcclxuICAgIH0gZWxzZSBpZiAoZm9ybWF0LmluY2x1ZGVzKCdoaCcpIHx8IGZvcm1hdC5pbmNsdWRlcygnaCcpKSB7XHJcbiAgICAgIG9wdGlvbnMuaG91ciA9IGZvcm1hdC5pbmNsdWRlcygnaGgnKSA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcclxuICAgICAgb3B0aW9ucy5ob3VyMTIgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBtaW51dGVcclxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ21tJykpIHtcclxuICAgICAgb3B0aW9ucy5taW51dGUgPSAnMi1kaWdpdCc7XHJcbiAgICB9IGVsc2UgaWYgKGZvcm1hdC5pbmNsdWRlcygnbScpKSB7XHJcbiAgICAgIG9wdGlvbnMubWludXRlID0gJ251bWVyaWMnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBzZWNvbmRcclxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ3NzJykpIHtcclxuICAgICAgb3B0aW9ucy5zZWNvbmQgPSAnMi1kaWdpdCc7XHJcbiAgICB9IGVsc2UgaWYgKGZvcm1hdC5pbmNsdWRlcygncycpKSB7XHJcbiAgICAgIG9wdGlvbnMuc2Vjb25kID0gJ251bWVyaWMnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhbmRsZSBBTS9QTSAob3ZlcnJpZGVzIGhvdXIxMiBpZiBleHBsaWNpdGx5IHNldClcclxuICAgIGlmIChmb3JtYXQuaW5jbHVkZXMoJ0EnKSB8fCBmb3JtYXQuaW5jbHVkZXMoJ2EnKSkge1xyXG4gICAgICBvcHRpb25zLmhvdXIxMiA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtYXRDYWNoZS5zZXQoY2FjaGVLZXksIHsgLi4ub3B0aW9ucyB9KTtcclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QW5ndWxhclRvTW9tZW50Rm9ybWF0KGFuZ3VsYXJGb3JtYXQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBDb252ZXJ0IEFuZ3VsYXIgRGF0ZVBpcGUgZm9ybWF0IHRvIG1vbWVudC5qcyBmb3JtYXRcclxuICAgIHJldHVybiBhbmd1bGFyRm9ybWF0XHJcbiAgICAgIC5yZXBsYWNlKC9kZC9nLCAnREQnKSAgLy8gRGF5IG9mIG1vbnRoOiBkZCAtPiBERFxyXG4gICAgICAucmVwbGFjZSgveXl5eS9nLCAnWVlZWScpICAvLyBZZWFyOiB5eXl5IC0+IFlZWVlcclxuICAgICAgLnJlcGxhY2UoL3l5L2csICdZWScpICAvLyBZZWFyOiB5eSAtPiBZWVxyXG4gICAgICAucmVwbGFjZSgvTU0vZywgJ01NJykgIC8vIE1vbnRoOiBNTSAtPiBNTSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL00vZywgJ00nKSAgLy8gTW9udGg6IE0gLT4gTSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL0hIL2csICdISCcpICAvLyBIb3VyIDI0OiBISCAtPiBISCAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL0gvZywgJ0gnKSAgLy8gSG91ciAyNDogSCAtPiBIIChzYW1lKVxyXG4gICAgICAucmVwbGFjZSgvaC9nLCAnaCcpICAvLyBIb3VyIDEyOiBoIC0+IGggKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9tbS9nLCAnbW0nKSAgLy8gTWludXRlOiBtbSAtPiBtbSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL20vZywgJ20nKSAgLy8gTWludXRlOiBtIC0+IG0gKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9zcy9nLCAnc3MnKSAgLy8gU2Vjb25kOiBzcyAtPiBzcyAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL3MvZywgJ3MnKSAgLy8gU2Vjb25kOiBzIC0+IHMgKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9hL2csICdhJyk7IC8vIEFNL1BNOiBhIC0+IGEgKHNhbWUpXHJcbiAgfVxyXG59Il19
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { EventEmitter, Injectable } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export class CommonService {
|
|
4
4
|
constructor() {
|
|
5
|
+
this.globalSearch = new EventEmitter();
|
|
6
|
+
this.userData = null;
|
|
5
7
|
this.activeFilteredColumns = [];
|
|
6
8
|
}
|
|
7
9
|
gethasVisibleColumns(columns) {
|
|
@@ -115,7 +117,6 @@ export class CommonService {
|
|
|
115
117
|
return result;
|
|
116
118
|
}
|
|
117
119
|
async applyFiltersToColumns(columns, filters) {
|
|
118
|
-
debugger;
|
|
119
120
|
for (const col of columns) {
|
|
120
121
|
if (!col.query) {
|
|
121
122
|
col.query = {
|
|
@@ -150,6 +151,35 @@ export class CommonService {
|
|
|
150
151
|
}
|
|
151
152
|
return columns;
|
|
152
153
|
}
|
|
154
|
+
setUserData(user) {
|
|
155
|
+
this.userData = user;
|
|
156
|
+
}
|
|
157
|
+
formatDateTimeWithPrefs() {
|
|
158
|
+
let lsUser = this.userData;
|
|
159
|
+
let timeZone = lsUser?.business_id?.time_zone ? lsUser?.business_id?.time_zone : 'UTC';
|
|
160
|
+
let dateFormat = lsUser?.date_format ? this.convertMomentToAngularDateFormat(lsUser.date_format) : 'MM/dd/yyyy';
|
|
161
|
+
let timeFormat = !lsUser?.business_id?.is_24_hour_format ? 'h:mm a' : 'H:mm';
|
|
162
|
+
return { timeZone, dateFormat, timeFormat };
|
|
163
|
+
}
|
|
164
|
+
convertMomentToAngularDateFormat(momentFormat) {
|
|
165
|
+
// Convert moment.js date format to Angular DatePipe format
|
|
166
|
+
return momentFormat
|
|
167
|
+
.replace(/DD/g, 'dd') // Day of month: DD -> dd
|
|
168
|
+
.replace(/YYYY/g, 'yyyy') // Year: YYYY -> yyyy
|
|
169
|
+
.replace(/YY/g, 'yy') // Year: YY -> yy
|
|
170
|
+
.replace(/MM/g, 'MM') // Month: MM -> MM (same)
|
|
171
|
+
.replace(/M/g, 'M') // Month: M -> M (same)
|
|
172
|
+
.replace(/HH/g, 'HH') // Hour 24: HH -> HH (same)
|
|
173
|
+
.replace(/H/g, 'H') // Hour 24: H -> H (same)
|
|
174
|
+
.replace(/hh/g, 'h') // Hour 12: hh -> h
|
|
175
|
+
.replace(/h/g, 'h') // Hour 12: h -> h (same)
|
|
176
|
+
.replace(/mm/g, 'mm') // Minute: mm -> mm (same)
|
|
177
|
+
.replace(/m/g, 'm') // Minute: m -> m (same)
|
|
178
|
+
.replace(/ss/g, 'ss') // Second: ss -> ss (same)
|
|
179
|
+
.replace(/s/g, 's') // Second: s -> s (same)
|
|
180
|
+
.replace(/A/g, 'a') // AM/PM: A -> a
|
|
181
|
+
.replace(/a/g, 'a'); // AM/PM: a -> a (same)
|
|
182
|
+
}
|
|
153
183
|
updateActiveFilteredColumns(columns) {
|
|
154
184
|
const collectFiltered = (cols) => {
|
|
155
185
|
let result = [];
|
|
@@ -204,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
204
234
|
providedIn: 'root'
|
|
205
235
|
}]
|
|
206
236
|
}], ctorParameters: () => [] });
|
|
207
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tcy10aW1lLXNoZWV0L3NyYy9saWIvc2VydmljZXMvY29tbW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFLM0MsTUFBTSxPQUFPLGFBQWE7SUFFeEI7UUFzS0YsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO0lBdEtoQixDQUFDO0lBQ2pCLG9CQUFvQixDQUFDLE9BQWM7UUFDakMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFjLEVBQVcsRUFBRTtZQUMvQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMxQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFjO1FBQ25DLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBYyxFQUFXLEVBQUU7WUFDL0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDbEMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMxQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFHRCxxQkFBcUIsQ0FBQyxPQUFjO1FBQ2xDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUVkLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDcEIsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3ZFLEtBQUssSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLG1DQUFtQztZQUNuRSxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtZQUN0QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxPQUFjO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFjLEVBQVcsRUFBRTtZQUNuRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLEVBQUUsTUFBTSxLQUFLLE9BQU8sSUFBSSxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDNUQsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMxQixPQUFPLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDeEMsQ0FBQztnQkFDRCxPQUFPLEtBQUssQ0FBQztZQUNmLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBYztRQUNwQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsT0FBYyxFQUFXLEVBQUU7WUFDbkQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksR0FBRyxFQUFFLE1BQU0sS0FBSyxNQUFNLElBQUksR0FBRyxFQUFFLFVBQVU7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQzNELElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDMUIsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUdELG1CQUFtQixDQUFDLElBQVc7UUFDN0IsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ25CLElBQUksS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDO2dCQUNuQixVQUFVLEVBQUUsQ0FBQztnQkFFYixJQUFJLEtBQUssRUFBRSxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDdEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ2xCLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dDQUNwRCxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7NEJBQ3BDLENBQUM7d0JBQ0gsQ0FBQzs2QkFBTSxDQUFDOzRCQUNOLFFBQVEsRUFBRSxDQUFDO3dCQUNiLENBQUM7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO1FBRUQsT0FBTyxVQUFVLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFHSCxxQkFBcUIsQ0FBQyxPQUFjLEVBQUUsYUFBb0I7UUFDeEQsTUFBTSxNQUFNLEdBQVUsRUFBRSxDQUFDO1FBRXpCLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDL0IsTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksSUFBSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsV0FBVyxLQUFLLEVBQUUsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1SSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqSSxJQUFJLGFBQWEsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFO29CQUN4QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7b0JBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQkFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFBLENBQUMsQ0FBQyxFQUFFO29CQUNqRCxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxVQUFVLENBQUEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2lCQUNwRixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDM0QsR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDcEMsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFN0IsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFjLEVBQUUsT0FBYztRQUN4RCxRQUFRLENBQUE7UUFDUixLQUFLLE1BQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLEtBQUssR0FBRztvQkFDVixXQUFXLEVBQUUsSUFBSTtvQkFDakIsWUFBWSxFQUFFLElBQUk7b0JBQ2xCLGVBQWUsRUFBRSxTQUFTO29CQUMxQixnQkFBZ0IsRUFBRSxJQUFJO29CQUN0QixTQUFTLEVBQUUsTUFBTTtvQkFDakIsSUFBSSxFQUFFLEVBQUU7aUJBQ1QsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFeEQsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFLENBQUM7b0JBQzVCLEdBQUcsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ3BDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7b0JBQ2pDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQztvQkFDeEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztvQkFDakMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLElBQUksSUFBSSxDQUFDO29CQUMxRCxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLFlBQVksSUFBSSxJQUFJLENBQUM7b0JBQzVELEdBQUcsQ0FBQyxLQUFLLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsZUFBZSxJQUFJLFNBQVMsQ0FBQztvQkFDdkUsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLGdCQUFnQixJQUFJLFNBQVMsQ0FBQztvQkFDekUsR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksTUFBTSxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNELEdBQUcsQ0FBQyxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN6RSxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFPRCwyQkFBMkIsQ0FBQyxPQUFjO1FBQ3hDLE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBVyxFQUFTLEVBQUU7WUFDN0MsSUFBSSxNQUFNLEdBQVUsRUFBRSxDQUFDO1lBRXZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxHQUFHLENBQUMsUUFBUSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1QyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELENBQUM7Z0JBRUQsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2QsTUFBTSxpQkFBaUIsR0FDckIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7b0JBRTdELE1BQU0sY0FBYyxHQUNsQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQzt3QkFDdkQsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVksS0FBSyxFQUFFLENBQUMsQ0FBQztvQkFFNUQsSUFBSSxpQkFBaUIsSUFBSSxjQUFjLEVBQUUsQ0FBQzt3QkFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkIsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUlELGVBQWUsQ0FBQyxPQUFZLEVBQUUsUUFBYSxFQUFFLElBQVk7UUFDckQsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNiLEtBQUssUUFBUTtnQkFDWCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFOUMsS0FBSyxRQUFRO2dCQUNYLE9BQU8sTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsS0FBSyxNQUFNLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBRTFELEtBQUssVUFBVTtnQkFDYixJQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztvQkFDaEUsT0FBTyxPQUFPLEVBQUUsRUFBRSxLQUFLLFFBQVEsRUFBRSxFQUFFLElBQUksT0FBTyxFQUFFLEtBQUssS0FBSyxRQUFRLEVBQUUsS0FBSyxDQUFDO2dCQUM1RSxDQUFDO2dCQUNELE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQztZQUU5QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBRWhELEtBQUssTUFBTTtnQkFDVCxNQUFNLFdBQVcsR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ2xELE9BQU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQzlDLENBQUMsQ0FBQyxPQUFPLEtBQUssUUFBUTtvQkFDdEIsQ0FBQyxDQUFDLFdBQVcsS0FBSyxZQUFZLENBQUM7WUFFbkM7Z0JBQ0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNILENBQUM7K0dBbk9VLGFBQWE7bUhBQWIsYUFBYSxjQUZaLE1BQU07OzRGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgZ2V0aGFzVmlzaWJsZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrVmlzaWJsZSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sPy5pc192aXNpYmxlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldGhhc0luVmlzaWJsZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrVmlzaWJsZSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoIWNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcblxyXG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICBjb3VudCArPSBjb2wuY2hpbGRyZW4ubGVuZ3RoOyAvLyBjb3VudCBjaGlsZHJlbiBpbnN0ZWFkIG9mIHBhcmVudFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvdW50ICs9IDE7IC8vIGNvdW50IHBhcmVudCBkaXJlY3RseVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNSaWdodFBpbm5lZENvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrUGlubmVkUmlnaHQgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbD8ucGlubmVkID09PSAncmlnaHQnICYmIGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldGhhc0xlZnRQaW5uZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Bpbm5lZFJpZ2h0ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2w/LnBpbm5lZCA9PT0gJ2xlZnQnICYmIGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2x1bW5zKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFeHBhbmRlZFJvd0NvdW50KGRhdGE6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIGxldCBncm91cENvdW50ID0gMDtcclxuICAgIGxldCByb3dDb3VudCA9IDA7XHJcblxyXG4gICAgZGF0YS5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgaWYgKGdyb3VwPy5pc0dyb3VwKSB7XHJcbiAgICAgICAgZ3JvdXBDb3VudCsrO1xyXG5cclxuICAgICAgICBpZiAoZ3JvdXA/LmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXA/LmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCkge1xyXG4gICAgICAgICAgICAgIGlmIChjaGlsZC5pc0V4cGFuZCAmJiBBcnJheS5pc0FycmF5KGNoaWxkLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcm93Q291bnQgKz0gY2hpbGQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByb3dDb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChncm91cENvdW50ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBkYXRhLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ3JvdXBDb3VudCArIHJvd0NvdW50O1xyXG4gIH1cclxuXHJcblxyXG5nZXRGaWx0ZXJzRnJvbUNvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnNDb25maWc6YW55IFtdKTogYW55W10ge1xyXG4gIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuIFxyXG4gIGNvbnN0IGNoZWNrQ29sdW1uID0gKGNvbDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBoYXNGaXJzdFZhbHVlID0gY29sLnF1ZXJ5Py5maXJzdF92YWx1ZSAhPSBudWxsICYmIGNvbC5xdWVyeT8uZmlyc3RfdmFsdWUgIT09IFwiXCIgJiYgZmlsdGVyc0NvbmZpZy5zb21lKChlbGUpPT4gZWxlLmZpZWxkID09IGNvbC5maWVsZCk7XHJcbiAgICBjb25zdCBoYXNJZHMgPSBBcnJheS5pc0FycmF5KGNvbC5xdWVyeT8uX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMCAmJiBmaWx0ZXJzQ29uZmlnLnNvbWUoKGVsZSk9PiBlbGUuZmllbGQgPT0gY29sLmZpZWxkKTtcclxuICAgIGlmIChoYXNGaXJzdFZhbHVlIHx8IGhhc0lkcykge1xyXG4gICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgc2VhcmNoOiBjb2wuc2VhcmNoID8/IFwiXCIsXHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICB0eXBlOiBjb2wudHlwZSxcclxuICAgICAgICBfaWRzOiBjb2wudHlwZSA9PSAnZHJvcGRvd24nPyBjb2wucXVlcnk/Ll9pZHM6IFtdLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wudHlwZSA9PSAnZHJvcGRvd24nPyBudWxsIDogKGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlID8gY29sPy5xdWVyeSA6IG51bGwpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKGNoZWNrQ29sdW1uKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbHVtbnMuZm9yRWFjaChjaGVja0NvbHVtbik7XHJcbiBcclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5hc3luYyBhcHBseUZpbHRlcnNUb0NvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnM6IGFueVtdKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gIGRlYnVnZ2VyXHJcbiAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgaWYgKCFjb2wucXVlcnkpIHtcclxuICAgICAgY29sLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF92YWx1ZTogbnVsbCxcclxuICAgICAgICBmaXJzdF9jb25kaXRpb246ICdjb250YWluJyxcclxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIF9pZHM6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVycy5maW5kKGYgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbC5maWx0ZXJWYWx1ZSA9IGZpbHRlci5faWRzID8/IFtdO1xyXG4gICAgICAgIGNvbC5zZWFyY2ggPSBmaWx0ZXIuc2VhcmNoID8/ICcnO1xyXG4gICAgICAgIGNvbC5xdWVyeS5faWRzID0gZmlsdGVyLl9pZHMgPz8gW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sLmZpbHRlclZhbHVlID0gZmlsdGVyLnNlYXJjaCA/PyBudWxsO1xyXG4gICAgICAgIGNvbC5zZWFyY2ggPSBmaWx0ZXIuc2VhcmNoID8/ICcnO1xyXG4gICAgICAgIGNvbC5xdWVyeS5maXJzdF92YWx1ZSA9IGZpbHRlci5xdWVyeT8uZmlyc3RfdmFsdWUgPz8gbnVsbDtcclxuICAgICAgICBjb2wucXVlcnkuc2Vjb25kX3ZhbHVlID0gZmlsdGVyLnF1ZXJ5Py5zZWNvbmRfdmFsdWUgPz8gbnVsbDtcclxuICAgICAgICBjb2wucXVlcnkuZmlyc3RfY29uZGl0aW9uID0gZmlsdGVyLnF1ZXJ5Py5maXJzdF9jb25kaXRpb24gPz8gJ2NvbnRhaW4nO1xyXG4gICAgICAgIGNvbC5xdWVyeS5zZWNvbmRfY29uZGl0aW9uID0gZmlsdGVyLnF1ZXJ5Py5zZWNvbmRfY29uZGl0aW9uID8/ICdjb250YWluJztcclxuICAgICAgICBjb2wucXVlcnkuY29uZGl0aW9uID0gZmlsdGVyLnF1ZXJ5Py5jb25kaXRpb24gPz8gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbC5jaGlsZHJlbiA9IGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKGNvbC5jaGlsZHJlbiwgZmlsdGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW5zO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuYWN0aXZlRmlsdGVyZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG51cGRhdGVBY3RpdmVGaWx0ZXJlZENvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY29sID0gY29sc1tpXTtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sLnF1ZXJ5KSB7XHJcbiAgICAgICAgY29uc3QgaGFzRHJvcGRvd25GaWx0ZXIgPVxyXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShjb2wucXVlcnkuX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVGaWx0ZXIgPVxyXG4gICAgICAgICAgKGNvbC5xdWVyeS5maXJzdF92YWx1ZSAmJiBjb2wucXVlcnkuZmlyc3RfdmFsdWUgIT09ICcnKSB8fFxyXG4gICAgICAgICAgKGNvbC5xdWVyeS5zZWNvbmRfdmFsdWUgJiYgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSAhPT0gJycpO1xyXG5cclxuICAgICAgICBpZiAoaGFzRHJvcGRvd25GaWx0ZXIgfHwgaGFzVmFsdWVGaWx0ZXIpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH07XHJcbiAgdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnMgPSBbLi4uY29sbGVjdEZpbHRlcmVkKGNvbHVtbnMpXTtcclxuICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnM7XHJcbn1cclxuXHJcblxyXG5cclxuaGFzRmllbGRDaGFuZ2VkKGN1cnJlbnQ6IGFueSwgb3JpZ2luYWw6IGFueSwgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gTnVtYmVyKGN1cnJlbnQpICE9PSBOdW1iZXIob3JpZ2luYWwpO1xyXG5cclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gU3RyaW5nKGN1cnJlbnQgfHwgJycpICE9PSBTdHJpbmcob3JpZ2luYWwgfHwgJycpO1xyXG5cclxuICAgICAgY2FzZSAnZHJvcGRvd24nOlxyXG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9yaWdpbmFsID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ/LmlkICE9PSBvcmlnaW5hbD8uaWQgfHwgY3VycmVudD8udmFsdWUgIT09IG9yaWdpbmFsPy52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQgIT09IG9yaWdpbmFsO1xyXG5cclxuICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oY3VycmVudCkgIT09IEJvb2xlYW4ob3JpZ2luYWwpO1xyXG5cclxuICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZShjdXJyZW50KS5nZXRUaW1lKCk7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRlID0gbmV3IERhdGUob3JpZ2luYWwpLmdldFRpbWUoKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oY3VycmVudERhdGUpIHx8IGlzTmFOKG9yaWdpbmFsRGF0ZSlcclxuICAgICAgICAgID8gY3VycmVudCAhPT0gb3JpZ2luYWxcclxuICAgICAgICAgIDogY3VycmVudERhdGUgIT09IG9yaWdpbmFsRGF0ZTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGN1cnJlbnQpICE9PSBKU09OLnN0cmluZ2lmeShvcmlnaW5hbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tcy10aW1lLXNoZWV0L3NyYy9saWIvc2VydmljZXMvY29tbW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3pELE1BQU0sT0FBTyxhQUFhO0lBRXhCO1FBbUtPLGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDekQsYUFBUSxHQUFRLElBQUksQ0FBQztRQXNDL0IsMEJBQXFCLEdBQVUsRUFBRSxDQUFDO0lBMU1oQixDQUFDO0lBQ2pCLG9CQUFvQixDQUFDLE9BQWM7UUFDakMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxPQUFjLEVBQVcsRUFBRTtZQUMvQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDakMsSUFBSSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDO29CQUMxQixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFjO1FBQ25DLE1BQU0sWUFBWSxHQUFHLENBQUMsT0FBYyxFQUFXLEVBQUU7WUFDL0MsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxHQUFHLEVBQUUsVUFBVTtvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDbEMsSUFBSSxH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QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tbW9uU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgZ2V0aGFzVmlzaWJsZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrVmlzaWJsZSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sPy5pc192aXNpYmxlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldGhhc0luVmlzaWJsZUNvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrVmlzaWJsZSA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoIWNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sdW1ucyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0VG90YWxDb2x1bW5zTGVuZ3RoKGNvbHVtbnM6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIGxldCBjb3VudCA9IDA7XHJcblxyXG4gICAgY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgIGlmIChjb2wuY2hpbGRyZW4gJiYgQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICBjb3VudCArPSBjb2wuY2hpbGRyZW4ubGVuZ3RoOyAvLyBjb3VudCBjaGlsZHJlbiBpbnN0ZWFkIG9mIHBhcmVudFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvdW50ICs9IDE7IC8vIGNvdW50IHBhcmVudCBkaXJlY3RseVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY291bnQ7XHJcbiAgfVxyXG5cclxuICBnZXRoYXNSaWdodFBpbm5lZENvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrUGlubmVkUmlnaHQgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbD8ucGlubmVkID09PSAncmlnaHQnICYmIGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2x1bW5zKTtcclxuICB9XHJcblxyXG4gIGdldGhhc0xlZnRQaW5uZWRDb2x1bW5zKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBjaGVja1Bpbm5lZFJpZ2h0ID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2w/LnBpbm5lZCA9PT0gJ2xlZnQnICYmIGNvbD8uaXNfdmlzaWJsZSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgaWYgKGNvbD8uY2hpbGRyZW4/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIGNoZWNrUGlubmVkUmlnaHQoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2x1bW5zKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFeHBhbmRlZFJvd0NvdW50KGRhdGE6IGFueVtdKTogbnVtYmVyIHtcclxuICAgIGxldCBncm91cENvdW50ID0gMDtcclxuICAgIGxldCByb3dDb3VudCA9IDA7XHJcblxyXG4gICAgZGF0YS5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgaWYgKGdyb3VwPy5pc0dyb3VwKSB7XHJcbiAgICAgICAgZ3JvdXBDb3VudCsrO1xyXG5cclxuICAgICAgICBpZiAoZ3JvdXA/LmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoZ3JvdXA/LmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgZ3JvdXAuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQuaXNHcm91cCkge1xyXG4gICAgICAgICAgICAgIGlmIChjaGlsZC5pc0V4cGFuZCAmJiBBcnJheS5pc0FycmF5KGNoaWxkLmNoaWxkcmVuKSkge1xyXG4gICAgICAgICAgICAgICAgcm93Q291bnQgKz0gY2hpbGQuY2hpbGRyZW4ubGVuZ3RoO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByb3dDb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChncm91cENvdW50ID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBkYXRhLmxlbmd0aDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ3JvdXBDb3VudCArIHJvd0NvdW50O1xyXG4gIH1cclxuXHJcblxyXG5nZXRGaWx0ZXJzRnJvbUNvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnNDb25maWc6YW55IFtdKTogYW55W10ge1xyXG4gIGNvbnN0IHJlc3VsdDogYW55W10gPSBbXTtcclxuIFxyXG4gIGNvbnN0IGNoZWNrQ29sdW1uID0gKGNvbDogYW55KSA9PiB7XHJcbiAgICBjb25zdCBoYXNGaXJzdFZhbHVlID0gY29sLnF1ZXJ5Py5maXJzdF92YWx1ZSAhPSBudWxsICYmIGNvbC5xdWVyeT8uZmlyc3RfdmFsdWUgIT09IFwiXCIgJiYgZmlsdGVyc0NvbmZpZy5zb21lKChlbGUpPT4gZWxlLmZpZWxkID09IGNvbC5maWVsZCk7XHJcbiAgICBjb25zdCBoYXNJZHMgPSBBcnJheS5pc0FycmF5KGNvbC5xdWVyeT8uX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMCAmJiBmaWx0ZXJzQ29uZmlnLnNvbWUoKGVsZSk9PiBlbGUuZmllbGQgPT0gY29sLmZpZWxkKTtcclxuICAgIGlmIChoYXNGaXJzdFZhbHVlIHx8IGhhc0lkcykge1xyXG4gICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgc2VhcmNoOiBjb2wuc2VhcmNoID8/IFwiXCIsXHJcbiAgICAgICAgZmllbGQ6IGNvbC5maWVsZCxcclxuICAgICAgICB0eXBlOiBjb2wudHlwZSxcclxuICAgICAgICBfaWRzOiBjb2wudHlwZSA9PSAnZHJvcGRvd24nPyBjb2wucXVlcnk/Ll9pZHM6IFtdLFxyXG4gICAgICAgIHF1ZXJ5OiBjb2wudHlwZSA9PSAnZHJvcGRvd24nPyBudWxsIDogKGNvbD8ucXVlcnk/LmZpcnN0X3ZhbHVlID8gY29sPy5xdWVyeSA6IG51bGwpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbC5jaGlsZHJlbi5mb3JFYWNoKGNoZWNrQ29sdW1uKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbHVtbnMuZm9yRWFjaChjaGVja0NvbHVtbik7XHJcbiBcclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5hc3luYyBhcHBseUZpbHRlcnNUb0NvbHVtbnMoY29sdW1uczogYW55W10sIGZpbHRlcnM6IGFueVtdKTogUHJvbWlzZTxhbnlbXT4ge1xyXG4gIFxyXG4gIGZvciAoY29uc3QgY29sIG9mIGNvbHVtbnMpIHtcclxuICAgIGlmICghY29sLnF1ZXJ5KSB7XHJcbiAgICAgIGNvbC5xdWVyeSA9IHtcclxuICAgICAgICBmaXJzdF92YWx1ZTogbnVsbCxcclxuICAgICAgICBzZWNvbmRfdmFsdWU6IG51bGwsXHJcbiAgICAgICAgZmlyc3RfY29uZGl0aW9uOiAnY29udGFpbicsXHJcbiAgICAgICAgc2Vjb25kX2NvbmRpdGlvbjogbnVsbCxcclxuICAgICAgICBjb25kaXRpb246ICdub25lJyxcclxuICAgICAgICBfaWRzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnMuZmluZChmID0+IGYuZmllbGQgPT09IGNvbC5maWVsZCk7XHJcblxyXG4gICAgaWYgKGZpbHRlcikge1xyXG4gICAgICBpZiAoY29sLnR5cGUgPT09ICdkcm9wZG93bicpIHtcclxuICAgICAgICBjb2wuZmlsdGVyVmFsdWUgPSBmaWx0ZXIuX2lkcyA/PyBbXTtcclxuICAgICAgICBjb2wuc2VhcmNoID0gZmlsdGVyLnNlYXJjaCA/PyAnJztcclxuICAgICAgICBjb2wucXVlcnkuX2lkcyA9IGZpbHRlci5faWRzID8/IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbC5maWx0ZXJWYWx1ZSA9IGZpbHRlci5zZWFyY2ggPz8gbnVsbDtcclxuICAgICAgICBjb2wuc2VhcmNoID0gZmlsdGVyLnNlYXJjaCA/PyAnJztcclxuICAgICAgICBjb2wucXVlcnkuZmlyc3RfdmFsdWUgPSBmaWx0ZXIucXVlcnk/LmZpcnN0X3ZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSA9IGZpbHRlci5xdWVyeT8uc2Vjb25kX3ZhbHVlID8/IG51bGw7XHJcbiAgICAgICAgY29sLnF1ZXJ5LmZpcnN0X2NvbmRpdGlvbiA9IGZpbHRlci5xdWVyeT8uZmlyc3RfY29uZGl0aW9uID8/ICdjb250YWluJztcclxuICAgICAgICBjb2wucXVlcnkuc2Vjb25kX2NvbmRpdGlvbiA9IGZpbHRlci5xdWVyeT8uc2Vjb25kX2NvbmRpdGlvbiA/PyAnY29udGFpbic7XHJcbiAgICAgICAgY29sLnF1ZXJ5LmNvbmRpdGlvbiA9IGZpbHRlci5xdWVyeT8uY29uZGl0aW9uID8/ICdub25lJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29sLmNoaWxkcmVuKSAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb2wuY2hpbGRyZW4gPSBhd2FpdCB0aGlzLmFwcGx5RmlsdGVyc1RvQ29sdW1ucyhjb2wuY2hpbGRyZW4sIGZpbHRlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY29sdW1ucztcclxufVxyXG5cclxuXHJcbiAgcHVibGljIGdsb2JhbFNlYXJjaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBwcml2YXRlIHVzZXJEYXRhOiBhbnkgPSBudWxsO1xyXG4gXHJcblxyXG4gXHJcbiAgc2V0VXNlckRhdGEodXNlcjogYW55KSB7XHJcbiAgICB0aGlzLnVzZXJEYXRhID0gdXNlcjtcclxuICB9XHJcbiBcclxuICBmb3JtYXREYXRlVGltZVdpdGhQcmVmcygpIHtcclxuICAgIGxldCBsc1VzZXIgPSB0aGlzLnVzZXJEYXRhO1xyXG4gICAgbGV0IHRpbWVab25lID0gbHNVc2VyPy5idXNpbmVzc19pZD8udGltZV96b25lID8gbHNVc2VyPy5idXNpbmVzc19pZD8udGltZV96b25lIDogJ1VUQyc7XHJcbiAgICBsZXQgZGF0ZUZvcm1hdCA9IGxzVXNlcj8uZGF0ZV9mb3JtYXQgPyB0aGlzLmNvbnZlcnRNb21lbnRUb0FuZ3VsYXJEYXRlRm9ybWF0KGxzVXNlci5kYXRlX2Zvcm1hdCkgOiAnTU0vZGQveXl5eSc7XHJcbiAgICBsZXQgdGltZUZvcm1hdCA9ICFsc1VzZXI/LmJ1c2luZXNzX2lkPy5pc18yNF9ob3VyX2Zvcm1hdCA/ICdoOm1tIGEnIDogJ0g6bW0nO1xyXG4gICAgcmV0dXJuIHt0aW1lWm9uZSwgZGF0ZUZvcm1hdCwgdGltZUZvcm1hdH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbnZlcnRNb21lbnRUb0FuZ3VsYXJEYXRlRm9ybWF0KG1vbWVudEZvcm1hdDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIC8vIENvbnZlcnQgbW9tZW50LmpzIGRhdGUgZm9ybWF0IHRvIEFuZ3VsYXIgRGF0ZVBpcGUgZm9ybWF0XHJcbiAgICByZXR1cm4gbW9tZW50Rm9ybWF0XHJcbiAgICAgIC5yZXBsYWNlKC9ERC9nLCAnZGQnKSAgLy8gRGF5IG9mIG1vbnRoOiBERCAtPiBkZFxyXG4gICAgICAucmVwbGFjZSgvWVlZWS9nLCAneXl5eScpICAvLyBZZWFyOiBZWVlZIC0+IHl5eXlcclxuICAgICAgLnJlcGxhY2UoL1lZL2csICd5eScpICAvLyBZZWFyOiBZWSAtPiB5eVxyXG4gICAgICAucmVwbGFjZSgvTU0vZywgJ01NJykgIC8vIE1vbnRoOiBNTSAtPiBNTSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL00vZywgJ00nKSAgLy8gTW9udGg6IE0gLT4gTSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL0hIL2csICdISCcpICAvLyBIb3VyIDI0OiBISCAtPiBISCAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL0gvZywgJ0gnKSAgLy8gSG91ciAyNDogSCAtPiBIIChzYW1lKVxyXG4gICAgICAucmVwbGFjZSgvaGgvZywgJ2gnKSAgLy8gSG91ciAxMjogaGggLT4gaFxyXG4gICAgICAucmVwbGFjZSgvaC9nLCAnaCcpICAvLyBIb3VyIDEyOiBoIC0+IGggKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9tbS9nLCAnbW0nKSAgLy8gTWludXRlOiBtbSAtPiBtbSAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL20vZywgJ20nKSAgLy8gTWludXRlOiBtIC0+IG0gKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9zcy9nLCAnc3MnKSAgLy8gU2Vjb25kOiBzcyAtPiBzcyAoc2FtZSlcclxuICAgICAgLnJlcGxhY2UoL3MvZywgJ3MnKSAgLy8gU2Vjb25kOiBzIC0+IHMgKHNhbWUpXHJcbiAgICAgIC5yZXBsYWNlKC9BL2csICdhJykgIC8vIEFNL1BNOiBBIC0+IGFcclxuICAgICAgLnJlcGxhY2UoL2EvZywgJ2EnKTsgLy8gQU0vUE06IGEgLT4gYSAoc2FtZSlcclxuICB9XHJcbiBcclxuXHJcblxyXG5hY3RpdmVGaWx0ZXJlZENvbHVtbnM6IGFueVtdID0gW107XHJcbnVwZGF0ZUFjdGl2ZUZpbHRlcmVkQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGFueVtdIHtcclxuICBjb25zdCBjb2xsZWN0RmlsdGVyZWQgPSAoY29sczogYW55W10pOiBhbnlbXSA9PiB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29scy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBjb2wgPSBjb2xzW2ldO1xyXG4gICAgICBpZiAoY29sLmNoaWxkcmVuICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjb2xsZWN0RmlsdGVyZWQoY29sLmNoaWxkcmVuKSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChjb2wucXVlcnkpIHtcclxuICAgICAgICBjb25zdCBoYXNEcm9wZG93bkZpbHRlciA9XHJcbiAgICAgICAgICBBcnJheS5pc0FycmF5KGNvbC5xdWVyeS5faWRzKSAmJiBjb2wucXVlcnkuX2lkcy5sZW5ndGggPiAwO1xyXG5cclxuICAgICAgICBjb25zdCBoYXNWYWx1ZUZpbHRlciA9XHJcbiAgICAgICAgICAoY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlICYmIGNvbC5xdWVyeS5maXJzdF92YWx1ZSAhPT0gJycpIHx8XHJcbiAgICAgICAgICAoY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSAmJiBjb2wucXVlcnkuc2Vjb25kX3ZhbHVlICE9PSAnJyk7XHJcblxyXG4gICAgICAgIGlmIChoYXNEcm9wZG93bkZpbHRlciB8fCBoYXNWYWx1ZUZpbHRlcikge1xyXG4gICAgICAgICAgcmVzdWx0LnB1c2goY29sKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfTtcclxuICB0aGlzLmFjdGl2ZUZpbHRlcmVkQ29sdW1ucyA9IFsuLi5jb2xsZWN0RmlsdGVyZWQoY29sdW1ucyldO1xyXG4gIHJldHVybiB0aGlzLmFjdGl2ZUZpbHRlcmVkQ29sdW1ucztcclxufVxyXG5cclxuXHJcblxyXG5oYXNGaWVsZENoYW5nZWQoY3VycmVudDogYW55LCBvcmlnaW5hbDogYW55LCB0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgIHJldHVybiBOdW1iZXIoY3VycmVudCkgIT09IE51bWJlcihvcmlnaW5hbCk7XHJcblxyXG4gICAgICBjYXNlICdzdHJpbmcnOlxyXG4gICAgICAgIHJldHVybiBTdHJpbmcoY3VycmVudCB8fCAnJykgIT09IFN0cmluZyhvcmlnaW5hbCB8fCAnJyk7XHJcblxyXG4gICAgICBjYXNlICdkcm9wZG93bic6XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyZW50ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3JpZ2luYWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICByZXR1cm4gY3VycmVudD8uaWQgIT09IG9yaWdpbmFsPy5pZCB8fCBjdXJyZW50Py52YWx1ZSAhPT0gb3JpZ2luYWw/LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3VycmVudCAhPT0gb3JpZ2luYWw7XHJcblxyXG4gICAgICBjYXNlICdib29sZWFuJzpcclxuICAgICAgICByZXR1cm4gQm9vbGVhbihjdXJyZW50KSAhPT0gQm9vbGVhbihvcmlnaW5hbCk7XHJcblxyXG4gICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IG5ldyBEYXRlKGN1cnJlbnQpLmdldFRpbWUoKTtcclxuICAgICAgICBjb25zdCBvcmlnaW5hbERhdGUgPSBuZXcgRGF0ZShvcmlnaW5hbCkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHJldHVybiBpc05hTihjdXJyZW50RGF0ZSkgfHwgaXNOYU4ob3JpZ2luYWxEYXRlKVxyXG4gICAgICAgICAgPyBjdXJyZW50ICE9PSBvcmlnaW5hbFxyXG4gICAgICAgICAgOiBjdXJyZW50RGF0ZSAhPT0gb3JpZ2luYWxEYXRlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoY3VycmVudCkgIT09IEpTT04uc3RyaW5naWZ5KG9yaWdpbmFsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuXHJcblxyXG5cclxuIl19
|
package/esm2022/public-api.mjs
CHANGED
|
@@ -3,4 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './lib/ms-time-sheet.service';
|
|
5
5
|
export * from './lib/ms-time-sheet.component';
|
|
6
|
-
|
|
6
|
+
export * from './lib/services/common.service';
|
|
7
|
+
export * from './lib/pipes/timezone-format.pipe';
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL21zLXRpbWUtc2hlZXQvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGtDQUFrQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIG1zLXRpbWUtc2hlZXRcclxuICovXHJcblxyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tcy10aW1lLXNoZWV0LnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9tcy10aW1lLXNoZWV0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9saWIvcGlwZXMvdGltZXpvbmUtZm9ybWF0LnBpcGUnO1xyXG4iXX0=
|