@acorex/core 5.0.5 → 5.0.9
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/acorex-core.d.ts +5 -0
- package/bundles/acorex-core.umd.js +1333 -0
- package/bundles/acorex-core.umd.js.map +1 -0
- package/config/tailwind.config.js +209 -0
- package/esm2015/acorex-core.js +5 -0
- package/esm2015/lib/config/configs.js +30 -0
- package/esm2015/lib/core.module.js +18 -0
- package/esm2015/lib/dateTime/datetime.class.js +260 -0
- package/esm2015/lib/dateTime/datetime.module.js +31 -0
- package/esm2015/lib/dateTime/datetime.pipe.js +25 -0
- package/esm2015/lib/dateTime/georgian.calendar.js +162 -0
- package/esm2015/lib/dateTime/index.js +5 -0
- package/esm2015/lib/dateTime/jalali.calendar.js +327 -0
- package/esm2015/lib/platform/index.js +2 -0
- package/esm2015/lib/platform/platform.service.js +132 -0
- package/esm2015/lib/translation/index.js +4 -0
- package/esm2015/lib/translation/translation.module.js +18 -0
- package/esm2015/lib/translation/translator.js +26 -0
- package/esm2015/lib/translation/translator.pipe.js +15 -0
- package/esm2015/lib/utils/drawing-util.js +27 -0
- package/esm2015/lib/utils/index.js +4 -0
- package/esm2015/lib/utils/object-util.js +83 -0
- package/esm2015/lib/utils/safe.pipe.js +30 -0
- package/esm2015/public-api.js +11 -0
- package/fesm2015/acorex-core.js +1169 -0
- package/fesm2015/acorex-core.js.map +1 -0
- package/lib/config/configs.d.ts +9 -0
- package/lib/core.module.d.ts +7 -0
- package/lib/dateTime/datetime.class.d.ts +86 -0
- package/lib/dateTime/datetime.module.d.ts +8 -0
- package/lib/dateTime/datetime.pipe.d.ts +8 -0
- package/lib/dateTime/georgian.calendar.d.ts +19 -0
- package/{src/lib/dateTime/index.ts → lib/dateTime/index.d.ts} +1 -1
- package/lib/dateTime/jalali.calendar.d.ts +34 -0
- package/lib/platform/index.d.ts +1 -0
- package/lib/platform/platform.service.d.ts +23 -0
- package/{src/lib/translation/index.ts → lib/translation/index.d.ts} +1 -1
- package/lib/translation/translation.module.d.ts +7 -0
- package/lib/translation/translator.d.ts +9 -0
- package/lib/translation/translator.pipe.d.ts +7 -0
- package/lib/utils/drawing-util.d.ts +17 -0
- package/{src/lib/utils/index.ts → lib/utils/index.d.ts} +1 -1
- package/lib/utils/object-util.d.ts +7 -0
- package/lib/utils/safe.pipe.d.ts +10 -0
- package/package.json +18 -14
- package/{src/public-api.ts → public-api.d.ts} +1 -2
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -11
- package/src/lib/config/configs.ts +0 -36
- package/src/lib/core.module.ts +0 -10
- package/src/lib/dateTime/datetime.class.ts +0 -395
- package/src/lib/dateTime/datetime.module.ts +0 -11
- package/src/lib/dateTime/datetime.pipe.ts +0 -20
- package/src/lib/dateTime/georgian.calendar.ts +0 -157
- package/src/lib/dateTime/jalali.calendar.ts +0 -376
- package/src/lib/http/http-error.class.ts +0 -7
- package/src/lib/http/http-events.interceptor.ts +0 -14
- package/src/lib/http/http-request.class.ts +0 -14
- package/src/lib/http/http-result.class.ts +0 -34
- package/src/lib/http/http.module.ts +0 -25
- package/src/lib/http/http.service.ts +0 -159
- package/src/lib/platform/index.ts +0 -1
- package/src/lib/platform/platform.service.ts +0 -185
- package/src/lib/translation/translation.module.ts +0 -12
- package/src/lib/translation/translator.pipe.ts +0 -9
- package/src/lib/translation/translator.ts +0 -31
- package/src/lib/utils/drawing-util.ts +0 -43
- package/src/lib/utils/object-util.ts +0 -82
- package/src/lib/utils/safe.pipe.ts +0 -24
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -20
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { AXConfig } from '../config/configs';
|
|
2
|
+
// @dynamic
|
|
3
|
+
export class AXDateTime {
|
|
4
|
+
constructor(value = new Date(), calendar = AXConfig.get('dateTime.type') || 'gregorian') {
|
|
5
|
+
this._calendar =
|
|
6
|
+
// typeof calendar == 'string'
|
|
7
|
+
// ? eval(`new ${AX_CALENDARS.find((c) => c.name == calendar).type}()`)
|
|
8
|
+
// : calendar;
|
|
9
|
+
typeof calendar == 'string'
|
|
10
|
+
? AXConfig.get(`dateTime.calendars.${calendar}`)
|
|
11
|
+
: calendar;
|
|
12
|
+
if (value instanceof Date) {
|
|
13
|
+
this._date = value;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
this._date = new Date(value);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
static convert(value, calendar = AXConfig.get('dateTime.type') || 'gregorian') {
|
|
20
|
+
let date;
|
|
21
|
+
if (typeof value === 'string' || value instanceof String) {
|
|
22
|
+
date = new AXDateTime(value, calendar);
|
|
23
|
+
}
|
|
24
|
+
else if (value instanceof Date) {
|
|
25
|
+
date = new AXDateTime(value, calendar);
|
|
26
|
+
}
|
|
27
|
+
else if (value instanceof AXDateTime) {
|
|
28
|
+
date = new AXDateTime(value.date, calendar);
|
|
29
|
+
}
|
|
30
|
+
return date;
|
|
31
|
+
}
|
|
32
|
+
get date() {
|
|
33
|
+
return this._date;
|
|
34
|
+
}
|
|
35
|
+
get calendar() {
|
|
36
|
+
return this._calendar;
|
|
37
|
+
}
|
|
38
|
+
clone() {
|
|
39
|
+
return new AXDateTime(this.date, this.calendar.name());
|
|
40
|
+
}
|
|
41
|
+
get dayOfMonth() {
|
|
42
|
+
return this._calendar.dayOfMonth(this.date);
|
|
43
|
+
}
|
|
44
|
+
get dayOfYear() {
|
|
45
|
+
return this._calendar.dayOfYear(this.date);
|
|
46
|
+
}
|
|
47
|
+
get dayOfWeek() {
|
|
48
|
+
return this._calendar.dayOfWeek(this.date);
|
|
49
|
+
}
|
|
50
|
+
get hour() {
|
|
51
|
+
return this._date.getHours();
|
|
52
|
+
}
|
|
53
|
+
get minute() {
|
|
54
|
+
return this._date.getMinutes();
|
|
55
|
+
}
|
|
56
|
+
get second() {
|
|
57
|
+
return this._date.getSeconds();
|
|
58
|
+
}
|
|
59
|
+
get year() {
|
|
60
|
+
return this._calendar.year(this.date);
|
|
61
|
+
}
|
|
62
|
+
get monthOfYear() {
|
|
63
|
+
return this._calendar.monthOfYear(this.date);
|
|
64
|
+
}
|
|
65
|
+
get weekOfYear() {
|
|
66
|
+
return this._calendar.weekOfYear(this.date);
|
|
67
|
+
}
|
|
68
|
+
get month() {
|
|
69
|
+
return new AXCalendarMonth(this);
|
|
70
|
+
}
|
|
71
|
+
add(unit, amount) {
|
|
72
|
+
return this._calendar.add(this.date, unit, amount);
|
|
73
|
+
}
|
|
74
|
+
set(unit = 'day', value) {
|
|
75
|
+
return this._calendar.set(this.date, unit, value);
|
|
76
|
+
}
|
|
77
|
+
duration(end, unit = 'day') {
|
|
78
|
+
const range = new AXDateTimeRange(this, AXDateTime.convert(end, this.calendar.name()));
|
|
79
|
+
return range.duration();
|
|
80
|
+
}
|
|
81
|
+
startOf(unit = 'day') {
|
|
82
|
+
return this._calendar.startOf(this.date, unit);
|
|
83
|
+
}
|
|
84
|
+
endOf(unit = 'day') {
|
|
85
|
+
return this._calendar.endOf(this.date, unit);
|
|
86
|
+
}
|
|
87
|
+
format(format = AXConfig.get('dateTime.shortDateFormat') ||
|
|
88
|
+
'DDD, dd MMM yyyy') {
|
|
89
|
+
format = format.replace('ss', this.pad(this.date.getSeconds(), 2));
|
|
90
|
+
format = format.replace('s', this.date.getSeconds().toString());
|
|
91
|
+
format = format.replace('dd', this.pad(this.calendar.dayOfMonth(this.date), 2));
|
|
92
|
+
format = format.replace('d', this.calendar.dayOfMonth(this.date).toString());
|
|
93
|
+
format = format.replace('mm', this.pad(this.date.getMinutes(), 2));
|
|
94
|
+
format = format.replace('m', this.date.getMinutes().toString());
|
|
95
|
+
format = format.replace('MMMM', this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1]);
|
|
96
|
+
format = format.replace('MMM', this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1]);
|
|
97
|
+
format = format.replace('MM', this.pad(this.calendar.monthOfYear(this.date), 2));
|
|
98
|
+
format = format.replace(/M(?![ao])/, this.calendar.monthOfYear(this.date).toString());
|
|
99
|
+
format = format.replace('DDDD', this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1]);
|
|
100
|
+
format = format.replace('DDD', this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1]);
|
|
101
|
+
format = format.replace(/D(?!e)/, this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1].substring(0, 3));
|
|
102
|
+
format = format.replace('yyyy', this.calendar.year(this.date).toString());
|
|
103
|
+
format = format.replace('YYYY', this.calendar.year(this.date).toString());
|
|
104
|
+
format = format.replace('yy', this.calendar.year(this.date).toString().substring(2));
|
|
105
|
+
format = format.replace('YY', this.calendar.year(this.date).toString().substring(2));
|
|
106
|
+
format = format.replace('HH', this.pad(this.date.getHours(), 2));
|
|
107
|
+
format = format.replace('H', this.date.getHours().toString());
|
|
108
|
+
return format;
|
|
109
|
+
}
|
|
110
|
+
pad(n, width, z = '0') {
|
|
111
|
+
n = n + '';
|
|
112
|
+
return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;
|
|
113
|
+
}
|
|
114
|
+
toString() {
|
|
115
|
+
return this.format();
|
|
116
|
+
}
|
|
117
|
+
equal(value, unit = 'day') {
|
|
118
|
+
return this.compare(value, unit) == 0;
|
|
119
|
+
}
|
|
120
|
+
compare(value, unit = 'day') {
|
|
121
|
+
const val = AXDateTime.convert(value);
|
|
122
|
+
const func = (v1, v2) => {
|
|
123
|
+
if (v1 == v2) {
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
else if (v1 > v2) {
|
|
127
|
+
return 1;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return -1;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
let p = 0;
|
|
134
|
+
switch (unit) {
|
|
135
|
+
case 'year':
|
|
136
|
+
return func(this.year, val.year);
|
|
137
|
+
case 'week':
|
|
138
|
+
p = this.compare(val, 'year');
|
|
139
|
+
return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;
|
|
140
|
+
case 'month':
|
|
141
|
+
p = this.compare(val, 'year');
|
|
142
|
+
return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;
|
|
143
|
+
case 'day':
|
|
144
|
+
p = this.compare(val, 'year');
|
|
145
|
+
return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;
|
|
146
|
+
case 'hour':
|
|
147
|
+
p = this.compare(val, 'day');
|
|
148
|
+
return p == 0 ? func(this.hour, val.hour) : p;
|
|
149
|
+
case 'minute':
|
|
150
|
+
p = this.compare(val, 'hour');
|
|
151
|
+
return p == 0 ? func(this.minute, val.minute) : p;
|
|
152
|
+
case 'second':
|
|
153
|
+
p = this.compare(val, 'minute');
|
|
154
|
+
return p == 0 ? func(this.second, val.second) : p;
|
|
155
|
+
default:
|
|
156
|
+
return func(this.date.getTime(), val.date.getTime());
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
convert(calendar) {
|
|
160
|
+
return AXDateTime.convert(this, calendar);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export class AXCalendarMonth {
|
|
164
|
+
constructor(date) {
|
|
165
|
+
this.index = date.date.getMonth();
|
|
166
|
+
this.name = date.format('MMMM');
|
|
167
|
+
this.range = new AXDateTimeRange(new AXDateTime(date.startOf('month').date, date.calendar), new AXDateTime(date.endOf('month').date, date.calendar));
|
|
168
|
+
}
|
|
169
|
+
get range() {
|
|
170
|
+
return this._range;
|
|
171
|
+
}
|
|
172
|
+
set range(v) {
|
|
173
|
+
this._range = v;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export class AXDateTimeRange {
|
|
177
|
+
constructor(startTime, endTime) {
|
|
178
|
+
this._startTime = startTime;
|
|
179
|
+
this._endTime = endTime;
|
|
180
|
+
}
|
|
181
|
+
get startTime() {
|
|
182
|
+
return this._startTime;
|
|
183
|
+
}
|
|
184
|
+
get endTime() {
|
|
185
|
+
return this._endTime;
|
|
186
|
+
}
|
|
187
|
+
duration() {
|
|
188
|
+
const result = {
|
|
189
|
+
miliseconds: 0,
|
|
190
|
+
seconds: 0,
|
|
191
|
+
minutes: 0,
|
|
192
|
+
hours: 0,
|
|
193
|
+
days: 0,
|
|
194
|
+
months: 0,
|
|
195
|
+
years: 0,
|
|
196
|
+
total: {
|
|
197
|
+
miliseconds: 0,
|
|
198
|
+
seconds: 0,
|
|
199
|
+
minutes: 0,
|
|
200
|
+
hours: 0,
|
|
201
|
+
days: 0,
|
|
202
|
+
weeks: 0,
|
|
203
|
+
months: 0,
|
|
204
|
+
years: 0,
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
const one_second = 1000;
|
|
208
|
+
const one_min = one_second * 60;
|
|
209
|
+
const one_hour = one_min * 60;
|
|
210
|
+
const one_day = one_hour * 24;
|
|
211
|
+
const one_week = one_day * 7;
|
|
212
|
+
const one_year = 365.25 * one_day;
|
|
213
|
+
const one_month = one_year / 12;
|
|
214
|
+
const startTime = this._startTime.date.getTime();
|
|
215
|
+
const endTime = this._endTime.date.getTime();
|
|
216
|
+
const diff = Math.abs(endTime - startTime);
|
|
217
|
+
//
|
|
218
|
+
result.total.miliseconds = diff;
|
|
219
|
+
result.total.seconds = Number((diff / one_second).toFixed(2));
|
|
220
|
+
result.total.minutes = Number((diff / one_min).toFixed(2));
|
|
221
|
+
result.total.hours = Number((diff / one_hour).toFixed(2));
|
|
222
|
+
result.total.days = Number((diff / one_day).toFixed(2));
|
|
223
|
+
result.total.weeks = Number((diff / one_week).toFixed(2));
|
|
224
|
+
//
|
|
225
|
+
// let months = (this.endTime.year - this.startTime.year) * 12;
|
|
226
|
+
// months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;
|
|
227
|
+
// if (this.endTime.dayOfYear < this.startTime.dayOfYear) {
|
|
228
|
+
// months--;
|
|
229
|
+
// }
|
|
230
|
+
// result.total.months = Math.abs(months);
|
|
231
|
+
// TODO: review
|
|
232
|
+
result.total.months = Number((diff / one_month).toFixed(2));
|
|
233
|
+
result.total.years = Number((diff / one_year).toFixed(2));
|
|
234
|
+
//
|
|
235
|
+
result.miliseconds = result.total.miliseconds % 1000;
|
|
236
|
+
result.seconds = Number((result.total.seconds % 60).toFixed(0));
|
|
237
|
+
result.minutes = Number((result.total.minutes % 60).toFixed(0));
|
|
238
|
+
result.hours = Number((result.total.hours % 24).toFixed(0));
|
|
239
|
+
// TODO: review
|
|
240
|
+
result.days = Number((result.total.days % 30.4).toFixed(0));
|
|
241
|
+
result.months = Number((result.total.months % 12).toFixed(0));
|
|
242
|
+
result.years = Number(result.total.years.toFixed(0));
|
|
243
|
+
return result;
|
|
244
|
+
}
|
|
245
|
+
enumurate(unit = 'day', amount = 1) {
|
|
246
|
+
// TODO: setptemper savingtime issue
|
|
247
|
+
const result = [];
|
|
248
|
+
let item = this._startTime.clone();
|
|
249
|
+
while (item.compare(this._endTime, unit) < 1) {
|
|
250
|
+
result.push(item);
|
|
251
|
+
item = item.add(unit, amount);
|
|
252
|
+
}
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
includes(value, unit = 'day') {
|
|
256
|
+
// TODO: ??
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2RhdGVUaW1lL2RhdGV0aW1lLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQTBEN0MsV0FBVztBQUNYLE1BQU0sT0FBTyxVQUFVO0lBNEJyQixZQUNFLFFBQXVCLElBQUksSUFBSSxFQUFFLEVBQ2pDLFdBQWdDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksV0FBVztRQUU1RSxJQUFJLENBQUMsU0FBUztZQUNaLDhCQUE4QjtZQUM5Qix5RUFBeUU7WUFDekUsZ0JBQWdCO1lBQ2hCLE9BQU8sUUFBUSxJQUFJLFFBQVE7Z0JBQ3pCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHNCQUFzQixRQUFRLEVBQUUsQ0FBQztnQkFDaEQsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUNmLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQWEsQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUM7SUEzQ0QsTUFBTSxDQUFDLE9BQU8sQ0FDWixLQUFpQyxFQUNqQyxXQUFtQixRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLFdBQVc7UUFFL0QsSUFBSSxJQUFnQixDQUFDO1FBQ3JCLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7WUFDeEQsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNsRDthQUFNLElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZ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QyxPQUFPLENBQ3JCLFFBQVEsRUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUN0RSxDQUFDLEVBQ0QsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUNGLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUMxRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDMUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3JCLElBQUksRUFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUN0RCxDQUFDO1FBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFD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QU0sUUFBUSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHLE9BQU8sQ0FBQztRQUNsQyxNQUFNLFNBQVMsR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBQzNDLEVBQUU7UUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRCxFQUFFO1FBQ0YsK0RBQStEO1FBQy9ELHVFQUF1RTtRQUN2RSwyREFBMkQ7UUFDM0QsZ0JBQWdCO1FBQ2hCLElBQUk7UUFDSiwwQ0FBMEM7UUFDMUMsZUFBZTtRQUNmLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsRUFBRTtRQUNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELGVBQWU7UUFDZixNQUFNLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFpQixLQUFLLEVBQUUsU0FBaUIsQ0FBQztRQUNsRCxvQ0FBb0M7UUFDcEMsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xCLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtTQUM5QjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxRQUFRLENBQUMsS0FBaUIsRUFBRSxPQUFpQixLQUFLO1FBQ2hELFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Q0FZRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2NvbmZpZ3MnO1xyXG5cclxuXHJcbi8vIGV4cG9ydCBjb25zdCBBWF9DQUxFTkRBUlM6IGFueVtdID0gW1xyXG4vLyAgIHtcclxuLy8gICAgIG5hbWU6ICdncmVnb3JpYW4nLFxyXG4vLyAgICAgdHlwZTogJ0dlb3JnaWFuQ2FsZW5kYXInXHJcbi8vICAgfSxcclxuLy8gICB7XHJcbi8vICAgICBuYW1lOiAnamFsYWxpJyxcclxuLy8gICAgIHR5cGU6ICdKYWxhbGlDYWxlbmRhcidcclxuLy8gICB9XHJcbi8vIF07XHJcbmV4cG9ydCB0eXBlIFRpbWVVbml0ID1cclxuICB8ICdzZWNvbmQnXHJcbiAgfCAnbWludXRlJ1xyXG4gIHwgJ2hvdXInXHJcbiAgfCAnZGF5J1xyXG4gIHwgJ21vbnRoJ1xyXG4gIHwgJ3llYXInXHJcbiAgfCAnd2Vlayc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXIge1xyXG4gIG1vbnRoTmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBtb250aFNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBkYXlOYW1lczogc3RyaW5nW107XHJcblxyXG4gIGRheVNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBuYW1lKCk6IHN0cmluZztcclxuXHJcbiAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuXHJcblxyXG4gIGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lO1xyXG5cclxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lO1xyXG5cclxuICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcclxuXHJcblxyXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcclxufVxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lIHtcclxuICBzdGF0aWMgY29udmVydChcclxuICAgIHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSB8IHN0cmluZyxcclxuICAgIGNhbGVuZGFyOiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnR5cGUnKSB8fCAnZ3JlZ29yaWFuJ1xyXG4gICk6IEFYRGF0ZVRpbWUge1xyXG4gICAgbGV0IGRhdGU6IEFYRGF0ZVRpbWU7XHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICBkYXRlID0gbmV3IEFYRGF0ZVRpbWUodmFsdWUgYXMgc3RyaW5nLCBjYWxlbmRhcik7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICBkYXRlID0gbmV3IEFYRGF0ZVRpbWUodmFsdWUgYXMgRGF0ZSwgY2FsZW5kYXIpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFYRGF0ZVRpbWUpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlLmRhdGUsIGNhbGVuZGFyKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XHJcblxyXG4gIGdldCBkYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcclxuICBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHZhbHVlOiBEYXRlIHwgc3RyaW5nID0gbmV3IERhdGUoKSxcclxuICAgIGNhbGVuZGFyOiBzdHJpbmcgfCBBWENhbGVuZGFyID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS50eXBlJykgfHwgJ2dyZWdvcmlhbidcclxuICApIHtcclxuICAgIHRoaXMuX2NhbGVuZGFyID1cclxuICAgICAgLy8gdHlwZW9mIGNhbGVuZGFyID09ICdzdHJpbmcnXHJcbiAgICAgIC8vICAgPyBldmFsKGBuZXcgJHtBWF9DQUxFTkRBUlMuZmluZCgoYykgPT4gYy5uYW1lID09IGNhbGVuZGFyKS50eXBlfSgpYClcclxuICAgICAgLy8gICA6IGNhbGVuZGFyO1xyXG4gICAgICB0eXBlb2YgY2FsZW5kYXIgPT0gJ3N0cmluZydcclxuICAgICAgICA/IEFYQ29uZmlnLmdldChgZGF0ZVRpbWUuY2FsZW5kYXJzLiR7Y2FsZW5kYXJ9YClcclxuICAgICAgICA6IGNhbGVuZGFyO1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLl9kYXRlID0gdmFsdWUgYXMgRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIubmFtZSgpKTtcclxuICB9XHJcblxyXG4gIGdldCBkYXlPZk1vbnRoKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZNb250aCh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheU9mWWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mWWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheU9mV2VlaygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGhvdXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldEhvdXJzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbWludXRlKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRNaW51dGVzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgc2Vjb25kKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0ZS5nZXRTZWNvbmRzKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgeWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnllYXIodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aE9mWWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgd2Vla09mWWVhcigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLndlZWtPZlllYXIodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCBtb250aCgpOiBBWENhbGVuZGFyTW9udGgge1xyXG4gICAgcmV0dXJuIG5ldyBBWENhbGVuZGFyTW9udGgodGhpcyk7XHJcbiAgfVxyXG5cclxuICBhZGQodW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuYWRkKHRoaXMuZGF0ZSwgdW5pdCwgYW1vdW50KTtcclxuICB9XHJcblxyXG4gIHNldCh1bml0OiBUaW1lVW5pdCA9ICdkYXknLCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc2V0KHRoaXMuZGF0ZSwgdW5pdCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgZHVyYXRpb24oXHJcbiAgICBlbmQ6IERhdGUgfCBBWERhdGVUaW1lLFxyXG4gICAgdW5pdDogVGltZVVuaXQgPSAnZGF5J1xyXG4gICk6IEFYVGltZVNwYW4ge1xyXG4gICAgY29uc3QgcmFuZ2UgPSBuZXcgQVhEYXRlVGltZVJhbmdlKFxyXG4gICAgICB0aGlzLFxyXG4gICAgICBBWERhdGVUaW1lLmNvbnZlcnQoZW5kLCB0aGlzLmNhbGVuZGFyLm5hbWUoKSlcclxuICAgICk7XHJcbiAgICByZXR1cm4gcmFuZ2UuZHVyYXRpb24oKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0T2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLnN0YXJ0T2YodGhpcy5kYXRlLCB1bml0KTtcclxuICB9XHJcblxyXG4gIGVuZE9mKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5lbmRPZih0aGlzLmRhdGUsIHVuaXQpO1xyXG4gIH1cclxuXHJcbiAgZm9ybWF0KFxyXG4gICAgZm9ybWF0OiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLnNob3J0RGF0ZUZvcm1hdCcpIHx8XHJcbiAgICAgICdEREQsIGRkIE1NTSB5eXl5J1xyXG4gICk6IHN0cmluZyB7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnc3MnLCB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpLCAyKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgncycsIHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCkudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ2RkJyxcclxuICAgICAgdGhpcy5wYWQodGhpcy5jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSksIDIpXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoXHJcbiAgICAgICdkJyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSkudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKCdtbScsIHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCksIDIpKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKCdtJywgdGhpcy5kYXRlLmdldE1pbnV0ZXMoKS50b1N0cmluZygpKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAnTU1NTScsXHJcbiAgICAgIHRoaXMuY2FsZW5kYXIubW9udGhOYW1lc1t0aGlzLmNhbGVuZGFyLm1vbnRoT2ZZZWFyKHRoaXMuZGF0ZSkgLSAxXVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAnTU1NJyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5tb250aFNob3J0TmFtZXNbdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMV1cclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ01NJyxcclxuICAgICAgdGhpcy5wYWQodGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLCAyKVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAvTSg/IVthb10pLyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKClcclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ0REREQnLFxyXG4gICAgICB0aGlzLmNhbGVuZGFyLmRheU5hbWVzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAnREREJyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5kYXlTaG9ydE5hbWVzW3RoaXMuY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSkgLSAxXVxyXG4gICAgKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKFxyXG4gICAgICAvRCg/IWUpLyxcclxuICAgICAgdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0uc3Vic3RyaW5nKFxyXG4gICAgICAgIDAsXHJcbiAgICAgICAgM1xyXG4gICAgICApXHJcbiAgICApO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ3l5eXknLCB0aGlzLmNhbGVuZGFyLnllYXIodGhpcy5kYXRlKS50b1N0cmluZygpKTtcclxuICAgIGZvcm1hdCA9IGZvcm1hdC5yZXBsYWNlKCdZWVlZJywgdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ3l5JyxcclxuICAgICAgdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMilcclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZShcclxuICAgICAgJ1lZJyxcclxuICAgICAgdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMilcclxuICAgICk7XHJcbiAgICBmb3JtYXQgPSBmb3JtYXQucmVwbGFjZSgnSEgnLCB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0SG91cnMoKSwgMikpO1xyXG4gICAgZm9ybWF0ID0gZm9ybWF0LnJlcGxhY2UoJ0gnLCB0aGlzLmRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpKTtcclxuICAgIHJldHVybiBmb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBhZChuLCB3aWR0aCwgeiA9ICcwJykge1xyXG4gICAgbiA9IG4gKyAnJztcclxuICAgIHJldHVybiBuLmxlbmd0aCA+PSB3aWR0aCA/IG4gOiBuZXcgQXJyYXkod2lkdGggLSBuLmxlbmd0aCArIDEpLmpvaW4oeikgKyBuO1xyXG4gIH1cclxuXHJcbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCgpO1xyXG4gIH1cclxuXHJcbiAgZXF1YWwodmFsdWU6IERhdGUgfCBBWERhdGVUaW1lLCB1bml0OiBUaW1lVW5pdCA9ICdkYXknKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb21wYXJlKHZhbHVlLCB1bml0KSA9PSAwO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZSh2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcclxuICAgIGNvbnN0IHZhbCA9IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSk7XHJcbiAgICBjb25zdCBmdW5jID0gKHYxOiBudW1iZXIsIHYyOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKHYxID09IHYyKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSBpZiAodjEgPiB2Mikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHAgPSAwO1xyXG4gICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2RheScpO1xyXG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcclxuICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2hvdXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnbWludXRlJyk7XHJcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLmRhdGUuZ2V0VGltZSgpLCB2YWwuZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvbnZlcnQoY2FsZW5kYXI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFYRGF0ZVRpbWUuY29udmVydCh0aGlzLCBjYWxlbmRhcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vbnRoIHtcclxuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xyXG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcclxuICAgIHRoaXMuX3JhbmdlID0gdjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XHJcbiAgICB0aGlzLnJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5zdGFydE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxyXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XHJcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcclxuICBzZWNvbmRzOiBudW1iZXI7XHJcbiAgbWludXRlczogbnVtYmVyO1xyXG4gIGhvdXJzOiBudW1iZXI7XHJcbiAgZGF5czogbnVtYmVyO1xyXG4gIHdlZWtzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuIHtcclxuICBtaWxpc2Vjb25kczogbnVtYmVyO1xyXG4gIHNlY29uZHM6IG51bWJlcjtcclxuICBtaW51dGVzOiBudW1iZXI7XHJcbiAgaG91cnM6IG51bWJlcjtcclxuICBkYXlzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcclxuICBwcml2YXRlIF9zdGFydFRpbWU6IEFYRGF0ZVRpbWU7XHJcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcclxuXHJcbiAgcHVibGljIGdldCBzdGFydFRpbWUoKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihzdGFydFRpbWU6IEFYRGF0ZVRpbWUgLCBlbmRUaW1lOiBBWERhdGVUaW1lICkge1xyXG4gICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xyXG4gICAgdGhpcy5fZW5kVGltZSA9IGVuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBkdXJhdGlvbigpOiBBWFRpbWVTcGFuIHtcclxuICAgIGNvbnN0IHJlc3VsdDogQVhUaW1lU3BhbiA9IHtcclxuICAgICAgbWlsaXNlY29uZHM6IDAsXHJcbiAgICAgIHNlY29uZHM6IDAsXHJcbiAgICAgIG1pbnV0ZXM6IDAsXHJcbiAgICAgIGhvdXJzOiAwLFxyXG4gICAgICBkYXlzOiAwLFxyXG4gICAgICBtb250aHM6IDAsXHJcbiAgICAgIHllYXJzOiAwLFxyXG4gICAgICB0b3RhbDoge1xyXG4gICAgICAgIG1pbGlzZWNvbmRzOiAwLFxyXG4gICAgICAgIHNlY29uZHM6IDAsXHJcbiAgICAgICAgbWludXRlczogMCxcclxuICAgICAgICBob3VyczogMCxcclxuICAgICAgICBkYXlzOiAwLFxyXG4gICAgICAgIHdlZWtzOiAwLFxyXG4gICAgICAgIG1vbnRoczogMCxcclxuICAgICAgICB5ZWFyczogMCxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25lX3NlY29uZCA9IDEwMDA7XHJcbiAgICBjb25zdCBvbmVfbWluID0gb25lX3NlY29uZCAqIDYwO1xyXG4gICAgY29uc3Qgb25lX2hvdXIgPSBvbmVfbWluICogNjA7XHJcbiAgICBjb25zdCBvbmVfZGF5ID0gb25lX2hvdXIgKiAyNDtcclxuICAgIGNvbnN0IG9uZV93ZWVrID0gb25lX2RheSAqIDc7XHJcbiAgICBjb25zdCBvbmVfeWVhciA9IDM2NS4yNSAqIG9uZV9kYXk7XHJcbiAgICBjb25zdCBvbmVfbW9udGggPSBvbmVfeWVhciAvIDEyO1xyXG4gICAgY29uc3Qgc3RhcnRUaW1lID0gdGhpcy5fc3RhcnRUaW1lLmRhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgZW5kVGltZSA9IHRoaXMuX2VuZFRpbWUuZGF0ZS5nZXRUaW1lKCk7XHJcbiAgICBjb25zdCBkaWZmID0gTWF0aC5hYnMoZW5kVGltZSAtIHN0YXJ0VGltZSk7XHJcbiAgICAvL1xyXG4gICAgcmVzdWx0LnRvdGFsLm1pbGlzZWNvbmRzID0gZGlmZjtcclxuICAgIHJlc3VsdC50b3RhbC5zZWNvbmRzID0gTnVtYmVyKChkaWZmIC8gb25lX3NlY29uZCkudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwubWludXRlcyA9IE51bWJlcigoZGlmZiAvIG9uZV9taW4pLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLmhvdXJzID0gTnVtYmVyKChkaWZmIC8gb25lX2hvdXIpLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLmRheXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfZGF5KS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC53ZWVrcyA9IE51bWJlcigoZGlmZiAvIG9uZV93ZWVrKS50b0ZpeGVkKDIpKTtcclxuICAgIC8vXHJcbiAgICAvLyBsZXQgbW9udGhzID0gKHRoaXMuZW5kVGltZS55ZWFyIC0gdGhpcy5zdGFydFRpbWUueWVhcikgKiAxMjtcclxuICAgIC8vIG1vbnRocyArPSB0aGlzLmVuZFRpbWUubW9udGhPZlllYXIgLSB0aGlzLnN0YXJ0VGltZS5tb250aE9mWWVhciArIDE7XHJcbiAgICAvLyBpZiAodGhpcy5lbmRUaW1lLmRheU9mWWVhciA8IHRoaXMuc3RhcnRUaW1lLmRheU9mWWVhcikge1xyXG4gICAgLy8gICAgIG1vbnRocy0tO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gcmVzdWx0LnRvdGFsLm1vbnRocyA9IE1hdGguYWJzKG1vbnRocyk7XHJcbiAgICAvLyBUT0RPOiByZXZpZXdcclxuICAgIHJlc3VsdC50b3RhbC5tb250aHMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbW9udGgpLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLnllYXJzID0gTnVtYmVyKChkaWZmIC8gb25lX3llYXIpLnRvRml4ZWQoMikpO1xyXG4gICAgLy9cclxuICAgIHJlc3VsdC5taWxpc2Vjb25kcyA9IHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyAlIDEwMDA7XHJcbiAgICByZXN1bHQuc2Vjb25kcyA9IE51bWJlcigocmVzdWx0LnRvdGFsLnNlY29uZHMgJSA2MCkudG9GaXhlZCgwKSk7XHJcbiAgICByZXN1bHQubWludXRlcyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1pbnV0ZXMgJSA2MCkudG9GaXhlZCgwKSk7XHJcbiAgICByZXN1bHQuaG91cnMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5ob3VycyAlIDI0KS50b0ZpeGVkKDApKTtcclxuICAgIC8vIFRPRE86IHJldmlld1xyXG4gICAgcmVzdWx0LmRheXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5kYXlzICUgMzAuNCkudG9GaXhlZCgwKSk7XHJcbiAgICByZXN1bHQubW9udGhzID0gTnVtYmVyKChyZXN1bHQudG90YWwubW9udGhzICUgMTIpLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0LnllYXJzID0gTnVtYmVyKHJlc3VsdC50b3RhbC55ZWFycy50b0ZpeGVkKDApKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBlbnVtdXJhdGUodW5pdDogVGltZVVuaXQgPSAnZGF5JywgYW1vdW50OiBudW1iZXIgPSAxKTogQVhEYXRlVGltZVtdIHtcclxuICAgIC8vIFRPRE86IHNldHB0ZW1wZXIgc2F2aW5ndGltZSBpc3N1ZVxyXG4gICAgY29uc3QgcmVzdWx0OiBBWERhdGVUaW1lW10gPSBbXTtcclxuICAgIGxldCBpdGVtID0gdGhpcy5fc3RhcnRUaW1lLmNsb25lKCk7XHJcbiAgICB3aGlsZSAoaXRlbS5jb21wYXJlKHRoaXMuX2VuZFRpbWUsIHVuaXQpIDwgMSkge1xyXG4gICAgICByZXN1bHQucHVzaChpdGVtKTtcclxuICAgICAgaXRlbSA9IGl0ZW0uYWRkKHVuaXQsIGFtb3VudClcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBpbmNsdWRlcyh2YWx1ZTogQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IGJvb2xlYW4ge1xyXG4gICAgLy8gVE9ETzogPz9cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy8gZ2V0Vmlld0NvbXBhaXJlKHZpZXcpIHtcclxuICAvLyAgICAgc3dpdGNoICh2aWV3KSB7XHJcbiAgLy8gICAgICAgICBjYXNlICdkYXknOlxyXG4gIC8vICAgICAgICAgICAgIHJldHVybiAnWU1EJztcclxuICAvLyAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNJztcclxuICAvLyAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gIC8vICAgICAgICAgICAgIHJldHVybiAnWSc7XHJcbiAgLy8gICAgIH1cclxuICAvLyB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { AXConfig } from '../config/configs';
|
|
3
|
+
import { AXDateTimePipe } from './datetime.pipe';
|
|
4
|
+
import { GeorgianCalendar } from './georgian.calendar';
|
|
5
|
+
import { JalaliCalendar } from './jalali.calendar';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export class AXDateTimeModule {
|
|
8
|
+
constructor() {
|
|
9
|
+
AXConfig.set({
|
|
10
|
+
dateTime: {
|
|
11
|
+
calendars: {
|
|
12
|
+
jalali: new JalaliCalendar(),
|
|
13
|
+
gregorian: new GeorgianCalendar()
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
AXDateTimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
+
AXDateTimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], exports: [AXDateTimePipe] });
|
|
21
|
+
AXDateTimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimeModule, providers: [], imports: [[]] });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimeModule, decorators: [{
|
|
23
|
+
type: NgModule,
|
|
24
|
+
args: [{
|
|
25
|
+
imports: [],
|
|
26
|
+
exports: [AXDateTimePipe],
|
|
27
|
+
declarations: [AXDateTimePipe],
|
|
28
|
+
providers: [],
|
|
29
|
+
}]
|
|
30
|
+
}], ctorParameters: function () { return []; } });
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYWNvcmV4L2NvcmUvc3JjL2xpYi9kYXRlVGltZS9kYXRldGltZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7QUFTbkQsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QjtRQUNJLFFBQVEsQ0FBQyxHQUFHLENBQUM7WUFDVCxRQUFRLEVBQUU7Z0JBQ04sU0FBUyxFQUFFO29CQUNQLE1BQU0sRUFBRSxJQUFJLGNBQWMsRUFBRTtvQkFDNUIsU0FBUyxFQUFFLElBQUksZ0JBQWdCLEVBQUU7aUJBQ3BDO2FBQ0o7U0FDSixDQUFDLENBQUM7SUFFUCxDQUFDOzs2R0FaUSxnQkFBZ0I7OEdBQWhCLGdCQUFnQixpQkFIVixjQUFjLGFBRG5CLGNBQWM7OEdBSWYsZ0JBQWdCLGFBRmQsRUFBRSxZQUhKLEVBQUU7MkZBS0YsZ0JBQWdCO2tCQU41QixRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsWUFBWSxFQUFFLENBQUMsY0FBYyxDQUFDO29CQUM5QixTQUFTLEVBQUUsRUFBRTtpQkFDaEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9jb25maWdzJztcclxuaW1wb3J0IHsgQVhEYXRlVGltZVBpcGUgfSBmcm9tICcuL2RhdGV0aW1lLnBpcGUnO1xyXG5pbXBvcnQgeyBHZW9yZ2lhbkNhbGVuZGFyIH0gZnJvbSAnLi9nZW9yZ2lhbi5jYWxlbmRhcic7XHJcbmltcG9ydCB7IEphbGFsaUNhbGVuZGFyIH0gZnJvbSAnLi9qYWxhbGkuY2FsZW5kYXInO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBpbXBvcnRzOiBbXSxcclxuICAgIGV4cG9ydHM6IFtBWERhdGVUaW1lUGlwZV0sXHJcbiAgICBkZWNsYXJhdGlvbnM6IFtBWERhdGVUaW1lUGlwZV0sXHJcbiAgICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZU1vZHVsZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgQVhDb25maWcuc2V0KHtcclxuICAgICAgICAgICAgZGF0ZVRpbWU6IHtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGphbGFsaTogbmV3IEphbGFsaUNhbGVuZGFyKCksXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JlZ29yaWFuOiBuZXcgR2VvcmdpYW5DYWxlbmRhcigpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { AXDateTime } from './datetime.class';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AXDateTimePipe {
|
|
5
|
+
constructor() { }
|
|
6
|
+
transform(value, format, calendar) {
|
|
7
|
+
if (value == null) {
|
|
8
|
+
return '';
|
|
9
|
+
}
|
|
10
|
+
const date = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);
|
|
11
|
+
if (!format) {
|
|
12
|
+
return date.toString();
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return date.format(format);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
AXDateTimePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
20
|
+
AXDateTimePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimePipe, name: "axDate" });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.6", ngImport: i0, type: AXDateTimePipe, decorators: [{
|
|
22
|
+
type: Pipe,
|
|
23
|
+
args: [{ name: 'axDate' }]
|
|
24
|
+
}], ctorParameters: function () { return []; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb3JlL3NyYy9saWIvZGF0ZVRpbWUvZGF0ZXRpbWUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRzlDLE1BQU0sT0FBTyxjQUFjO0lBQ3ZCLGdCQUFnQixDQUFDO0lBRWpCLFNBQVMsQ0FBQyxLQUFVLEVBQUUsTUFBZSxFQUFFLFFBQWlCO1FBQ3BELElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtZQUNmLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFDRCxNQUFNLElBQUksR0FBZSxLQUFLLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzNHLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxQjthQUNJO1lBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzlCO0lBQ0wsQ0FBQzs7MkdBZFEsY0FBYzt5R0FBZCxjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZVRyYW5zZm9ybSwgUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWERhdGVUaW1lIH0gZnJvbSAnLi9kYXRldGltZS5jbGFzcyc7XHJcblxyXG5AUGlwZSh7IG5hbWU6ICdheERhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gICAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgICB0cmFuc2Zvcm0odmFsdWU6IGFueSwgZm9ybWF0Pzogc3RyaW5nLCBjYWxlbmRhcj86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRlOiBBWERhdGVUaW1lID0gdmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lID8gdmFsdWUuY2xvbmUoKSA6IEFYRGF0ZVRpbWUuY29udmVydCh2YWx1ZSwgY2FsZW5kYXIpO1xyXG4gICAgICAgIGlmICghZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXRlLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF0ZS5mb3JtYXQoZm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { AXDateTime } from "./datetime.class";
|
|
2
|
+
export class GeorgianCalendar {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.monthNames = [
|
|
5
|
+
"January", "February", "March",
|
|
6
|
+
"April", "May", "June", "July",
|
|
7
|
+
"August", "September", "October",
|
|
8
|
+
"November", "December"
|
|
9
|
+
];
|
|
10
|
+
this.monthShortNames = [
|
|
11
|
+
"Jan", "Feb", "Mar",
|
|
12
|
+
"Apr", "May", "Jun", "Jul",
|
|
13
|
+
"Aug", "Sep", "Oct",
|
|
14
|
+
"Nov", "Dec"
|
|
15
|
+
];
|
|
16
|
+
this.dayNames = [
|
|
17
|
+
"Sunday", "Monday", "Tuesday", "Wednesday",
|
|
18
|
+
"Thursday", "Friday", "Saturday"
|
|
19
|
+
];
|
|
20
|
+
this.dayShortNames = [
|
|
21
|
+
"Sun", "Mon", "Tue", "Wed",
|
|
22
|
+
"Thu", "Fri", "Sat"
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
name() {
|
|
26
|
+
return 'gregorian';
|
|
27
|
+
}
|
|
28
|
+
dayOfMonth(date) {
|
|
29
|
+
return date.getDate();
|
|
30
|
+
}
|
|
31
|
+
dayOfYear(date) {
|
|
32
|
+
let result = 0;
|
|
33
|
+
let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
34
|
+
if (this.isLeap(date)) {
|
|
35
|
+
m[1] = 29;
|
|
36
|
+
}
|
|
37
|
+
for (let i = 0; i < date.getMonth(); i++) {
|
|
38
|
+
result = result + m[i];
|
|
39
|
+
}
|
|
40
|
+
result += date.getDate();
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
dayOfWeek(date) {
|
|
44
|
+
return date.getDay() + 1;
|
|
45
|
+
}
|
|
46
|
+
weekOfYear(date) {
|
|
47
|
+
const firstDay = new AXDateTime(date).startOf('year');
|
|
48
|
+
return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);
|
|
49
|
+
}
|
|
50
|
+
year(date) {
|
|
51
|
+
return date.getFullYear();
|
|
52
|
+
}
|
|
53
|
+
monthOfYear(date) {
|
|
54
|
+
return date.getMonth() + 1;
|
|
55
|
+
}
|
|
56
|
+
add(date, unit, amount) {
|
|
57
|
+
let value = date.valueOf();
|
|
58
|
+
switch (unit) {
|
|
59
|
+
case 'second':
|
|
60
|
+
value += 1000 * amount;
|
|
61
|
+
break;
|
|
62
|
+
case 'minute':
|
|
63
|
+
value += 60000 * amount;
|
|
64
|
+
break;
|
|
65
|
+
case 'hour':
|
|
66
|
+
value += 3600000 * amount;
|
|
67
|
+
break;
|
|
68
|
+
case 'month':
|
|
69
|
+
const v = new Date(value);
|
|
70
|
+
var mo = date.getMonth();
|
|
71
|
+
var yr = date.getFullYear();
|
|
72
|
+
mo = (mo + amount) % 12;
|
|
73
|
+
if (0 > mo) {
|
|
74
|
+
yr += (date.getMonth() + amount - mo - 12) / 12;
|
|
75
|
+
mo += 12;
|
|
76
|
+
}
|
|
77
|
+
else
|
|
78
|
+
yr += ((date.getMonth() + amount - mo) / 12);
|
|
79
|
+
v.setMonth(mo);
|
|
80
|
+
v.setFullYear(yr);
|
|
81
|
+
value = v.valueOf();
|
|
82
|
+
break;
|
|
83
|
+
case 'week':
|
|
84
|
+
value += 7 * 86400000 * amount;
|
|
85
|
+
break;
|
|
86
|
+
case 'year':
|
|
87
|
+
const yv = new Date(value);
|
|
88
|
+
yv.setFullYear(yv.getFullYear() + amount);
|
|
89
|
+
value = yv.valueOf();
|
|
90
|
+
break;
|
|
91
|
+
case 'day':
|
|
92
|
+
default:
|
|
93
|
+
value += 86400000 * amount;
|
|
94
|
+
}
|
|
95
|
+
return new AXDateTime(new Date(value), this.name());
|
|
96
|
+
}
|
|
97
|
+
set(date, unit, value) {
|
|
98
|
+
throw new Error("Method not implemented.");
|
|
99
|
+
}
|
|
100
|
+
startOf(date, unit) {
|
|
101
|
+
const clone = new Date(date.valueOf());
|
|
102
|
+
switch (unit) {
|
|
103
|
+
case 'second':
|
|
104
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);
|
|
105
|
+
return new AXDateTime(clone, this.name());
|
|
106
|
+
case 'minute':
|
|
107
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);
|
|
108
|
+
return new AXDateTime(clone, this.name());
|
|
109
|
+
case 'hour':
|
|
110
|
+
clone.setHours(clone.getHours(), 0, 0, 0);
|
|
111
|
+
return new AXDateTime(clone, this.name());
|
|
112
|
+
default:
|
|
113
|
+
case 'day':
|
|
114
|
+
clone.setHours(0, 0, 0, 0);
|
|
115
|
+
return new AXDateTime(clone, this.name());
|
|
116
|
+
case "week":
|
|
117
|
+
const index = 0;
|
|
118
|
+
const start = index >= 0 ? index : 0;
|
|
119
|
+
const day = clone.getDay();
|
|
120
|
+
const diff = clone.getDate() - day + (start > day ? start - 7 : start);
|
|
121
|
+
clone.setDate(diff);
|
|
122
|
+
return new AXDateTime(clone, this.name()).startOf('day');
|
|
123
|
+
case "month":
|
|
124
|
+
clone.setDate(1);
|
|
125
|
+
return new AXDateTime(clone, this.name()).startOf('day');
|
|
126
|
+
case "year":
|
|
127
|
+
clone.setMonth(0);
|
|
128
|
+
clone.setDate(1);
|
|
129
|
+
return new AXDateTime(clone, this.name()).startOf('day');
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
endOf(date, unit) {
|
|
133
|
+
const clone = new Date(date.valueOf());
|
|
134
|
+
switch (unit) {
|
|
135
|
+
case 'second':
|
|
136
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);
|
|
137
|
+
return new AXDateTime(clone, this.name());
|
|
138
|
+
case 'minute':
|
|
139
|
+
clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);
|
|
140
|
+
return new AXDateTime(clone, this.name());
|
|
141
|
+
case 'hour':
|
|
142
|
+
clone.setHours(clone.getHours(), 59, 59, 999);
|
|
143
|
+
return new AXDateTime(clone, this.name());
|
|
144
|
+
default:
|
|
145
|
+
case 'day':
|
|
146
|
+
clone.setHours(23, 59, 59, 999);
|
|
147
|
+
return new AXDateTime(clone, this.name());
|
|
148
|
+
case 'week':
|
|
149
|
+
return this.startOf(date, 'week').add('day', 6).endOf('day');
|
|
150
|
+
case 'month':
|
|
151
|
+
return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');
|
|
152
|
+
case "year":
|
|
153
|
+
clone.setMonth(11);
|
|
154
|
+
return new AXDateTime(clone, this.name()).endOf('month');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
isLeap(date) {
|
|
158
|
+
let leapYear = new Date(date.getFullYear(), 1, 29);
|
|
159
|
+
return leapYear.getDate() == 29;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VvcmdpYW4uY2FsZW5kYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2RhdGVUaW1lL2dlb3JnaWFuLmNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQVksTUFBTSxrQkFBa0IsQ0FBQztBQUVwRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQTdCO1FBRUksZUFBVSxHQUFHO1lBQ1QsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPO1lBQzlCLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU07WUFDOUIsUUFBUSxFQUFFLFdBQVcsRUFBRSxTQUFTO1lBQ2hDLFVBQVUsRUFBRSxVQUFVO1NBQ3pCLENBQUM7UUFFRixvQkFBZSxHQUFHO1lBQ2QsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7WUFDMUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1lBQ25CLEtBQUssRUFBRSxLQUFLO1NBQ2YsQ0FBQztRQUVGLGFBQVEsR0FBRztZQUNQLFFBQVEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFdBQVc7WUFDMUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVO1NBQ25DLENBQUM7UUFFRixrQkFBYSxHQUFHO1lBQ1osS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7U0FDdEIsQ0FBQztJQXFKTixDQUFDO0lBbkpHLElBQUk7UUFDQSxPQUFPLFdBQVcsQ0FBQTtJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFVO1FBQ2hCLElBQUksTUFBTSxHQUFHLENB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RSxDQUFDLENBQUM7WUFDOUMsS0FBSyxRQUFRO2dCQUNULEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUM5QyxRQUFRO1lBQ1IsS0FBSyxLQUFLO2dCQUNOLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLEtBQUssTUFBTTtnQkFDUCxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2hCLE1BQU0sS0FBSyxHQUFHLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQyxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdkUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsT0FBTyxJQUFJ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QUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhDYWxlbmRhciwgQVhEYXRlVGltZSwgVGltZVVuaXQgfSBmcm9tIFwiLi9kYXRldGltZS5jbGFzc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdlb3JnaWFuQ2FsZW5kYXIgaW1wbGVtZW50cyBBWENhbGVuZGFyIHtcclxuXHJcbiAgICBtb250aE5hbWVzID0gW1xyXG4gICAgICAgIFwiSmFudWFyeVwiLCBcIkZlYnJ1YXJ5XCIsIFwiTWFyY2hcIixcclxuICAgICAgICBcIkFwcmlsXCIsIFwiTWF5XCIsIFwiSnVuZVwiLCBcIkp1bHlcIixcclxuICAgICAgICBcIkF1Z3VzdFwiLCBcIlNlcHRlbWJlclwiLCBcIk9jdG9iZXJcIixcclxuICAgICAgICBcIk5vdmVtYmVyXCIsIFwiRGVjZW1iZXJcIlxyXG4gICAgXTtcclxuXHJcbiAgICBtb250aFNob3J0TmFtZXMgPSBbXHJcbiAgICAgICAgXCJKYW5cIiwgXCJGZWJcIiwgXCJNYXJcIixcclxuICAgICAgICBcIkFwclwiLCBcIk1heVwiLCBcIkp1blwiLCBcIkp1bFwiLFxyXG4gICAgICAgIFwiQXVnXCIsIFwiU2VwXCIsIFwiT2N0XCIsXHJcbiAgICAgICAgXCJOb3ZcIiwgXCJEZWNcIlxyXG4gICAgXTtcclxuXHJcbiAgICBkYXlOYW1lcyA9IFtcclxuICAgICAgICBcIlN1bmRheVwiLCBcIk1vbmRheVwiLCBcIlR1ZXNkYXlcIiwgXCJXZWRuZXNkYXlcIixcclxuICAgICAgICBcIlRodXJzZGF5XCIsIFwiRnJpZGF5XCIsIFwiU2F0dXJkYXlcIlxyXG4gICAgXTtcclxuXHJcbiAgICBkYXlTaG9ydE5hbWVzID0gW1xyXG4gICAgICAgIFwiU3VuXCIsIFwiTW9uXCIsIFwiVHVlXCIsIFwiV2VkXCIsXHJcbiAgICAgICAgXCJUaHVcIiwgXCJGcmlcIiwgXCJTYXRcIlxyXG4gICAgXTtcclxuXHJcbiAgICBuYW1lKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuICdncmVnb3JpYW4nXHJcbiAgICB9XHJcblxyXG4gICAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXREYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgZGF5T2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xyXG4gICAgICAgIGxldCBtID0gWzMxLCAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdO1xyXG4gICAgICAgIGlmICh0aGlzLmlzTGVhcChkYXRlKSkgeyBcclxuICAgICAgICAgICAgbVsxXSA9IDI5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGUuZ2V0TW9udGgoKTsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCArIG1baV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlc3VsdCArPSBkYXRlLmdldERhdGUoKTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIGRheU9mV2VlayhkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXREYXkoKSArIDE7XHJcbiAgICB9XHJcblxyXG4gICAgd2Vla09mWWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBmaXJzdERheSA9IG5ldyBBWERhdGVUaW1lKGRhdGUpLnN0YXJ0T2YoJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gTWF0aC5jZWlsKCgoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDApICsgZmlyc3REYXkuZGF0ZS5nZXREYXkoKSArIDEpIC8gNyk7XHJcbiAgICB9XHJcblxyXG4gICAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgfVxyXG5cclxuICAgIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgICAgICBsZXQgdmFsdWUgPSBkYXRlLnZhbHVlT2YoKTtcclxuICAgICAgICBzd2l0Y2ggKHVuaXQpIHtcclxuICAgICAgICAgICAgY2FzZSAnc2Vjb25kJzpcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IDEwMDAgKiBhbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdtaW51dGUnOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gNjAwMDAgKiBhbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICAgICAgICAgIHZhbHVlICs9IDM2MDAwMDAgKiBhbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1vID0gZGF0ZS5nZXRNb250aCgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHlyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgICAgICAgbW8gPSAobW8gKyBhbW91bnQpICUgMTI7XHJcbiAgICAgICAgICAgICAgICBpZiAoMCA+IG1vKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgeXIgKz0gKGRhdGUuZ2V0TW9udGgoKSArIGFtb3VudCAtIG1vIC0gMTIpIC8gMTI7XHJcbiAgICAgICAgICAgICAgICAgICAgbW8gKz0gMTI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgeXIgKz0gKChkYXRlLmdldE1vbnRoKCkgKyBhbW91bnQgLSBtbykgLyAxMik7XHJcbiAgICAgICAgICAgICAgICB2LnNldE1vbnRoKG1vKTtcclxuICAgICAgICAgICAgICAgIHYuc2V0RnVsbFllYXIoeXIpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2LnZhbHVlT2YoKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrXHJcbiAgICAgICAgICAgIGNhc2UgJ3dlZWsnOlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gNyAqIDg2NDAwMDAwICogYW1vdW50O1xyXG4gICAgICAgICAgICAgICAgYnJlYWtcclxuICAgICAgICAgICAgY2FzZSAneWVhcic6XHJcbiAgICAgICAgICAgICAgICBjb25zdCB5diA9IG5ldyBEYXRlKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIHl2LnNldEZ1bGxZZWFyKHl2LmdldEZ1bGxZZWFyKCkgKyBhbW91bnQpO1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSB5di52YWx1ZU9mKCk7XHJcbiAgICAgICAgICAgICAgICBicmVha1xyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgdmFsdWUgKz0gODY0MDAwMDAgKiBhbW91bnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMubmFtZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XHJcbiAgICAgICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XHJcbiAgICAgICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ3NlY29uZCc6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCAwLCAwLCAwKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSBcIndlZWtcIjpcclxuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gMDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gaW5kZXggPj0gMCA/IGluZGV4IDogMDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRheSA9IGNsb25lLmdldERheSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlmZiA9IGNsb25lLmdldERhdGUoKSAtIGRheSArIChzdGFydCA+IGRheSA/IHN0YXJ0IC0gNyA6IHN0YXJ0KTtcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldERhdGUoZGlmZik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKS5zdGFydE9mKCdkYXknKTtcclxuICAgICAgICAgICAgY2FzZSBcIm1vbnRoXCI6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXREYXRlKDEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKS5zdGFydE9mKCdkYXknKTtcclxuICAgICAgICAgICAgY2FzZSBcInllYXJcIjpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldE1vbnRoKDApO1xyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0RGF0ZSgxKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcy5uYW1lKCkpLnN0YXJ0T2YoJ2RheScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlbmRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xyXG4gICAgICAgIHN3aXRjaCAodW5pdCkge1xyXG4gICAgICAgICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnaG91cic6XHJcbiAgICAgICAgICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMubmFtZSgpKTtcclxuICAgICAgICAgICAgY2FzZSAnd2Vlayc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKGRhdGUsICd3ZWVrJykuYWRkKCdkYXknLCA2KS5lbmRPZignZGF5Jyk7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZShkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSArIDEsIDApLCB0aGlzLm5hbWUoKSkuZW5kT2YoJ2RheScpO1xyXG4gICAgICAgICAgICBjYXNlIFwieWVhclwiOlxyXG4gICAgICAgICAgICAgICAgY2xvbmUuc2V0TW9udGgoMTEpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzLm5hbWUoKSkuZW5kT2YoJ21vbnRoJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzTGVhcChkYXRlOiBEYXRlKSB7XHJcbiAgICAgICAgbGV0IGxlYXBZZWFyID0gbmV3IERhdGUoZGF0ZS5nZXRGdWxsWWVhcigpLCAxLCAyOSk7XHJcbiAgICAgICAgcmV0dXJuIGxlYXBZZWFyLmdldERhdGUoKSA9PSAyOTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './datetime.class';
|
|
2
|
+
export * from './datetime.module';
|
|
3
|
+
export * from './datetime.pipe';
|
|
4
|
+
export * from './georgian.calendar';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9zcmMvbGliL2RhdGVUaW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2RhdGV0aW1lLmNsYXNzJztcclxuZXhwb3J0ICogZnJvbSAnLi9kYXRldGltZS5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2RhdGV0aW1lLnBpcGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2dlb3JnaWFuLmNhbGVuZGFyJzsiXX0=
|