@osovitny/anatoly 3.17.2 → 3.17.3

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.
@@ -50,4 +50,9 @@ export const ClientApps = AppCoreSettings?.clientApps;
50
50
  //ClientApp
51
51
  export const AppName = document.getElementById('appName').getAttribute('data-appname');
52
52
  export const AppSettings = getAppSettingsByName(AppName);
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb25zdHMvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFFO0lBQ25DLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUV0QixJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxCLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBSTtJQUN2QyxJQUFJLElBQUksR0FBRyxVQUFVLENBQUM7SUFFdEIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0QyxDQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FDdEIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FDNUQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUVyRCxRQUFRO0FBQ1IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxHQUFHLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsZUFBZSxFQUFFLFVBQVUsQ0FBQztBQUV0RCxXQUFXO0FBQ1gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFzQixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3RyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjYgSnVuIDIwMjBcclxuXHJcbiAgRXhhbXBsZXM6XHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3NyYy9zZXJ2ZXIvZWRpdG9yU2VydmljZXMudHNcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21haW4vc3JjL2NvbXBpbGVyL2NvcmUudHNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ3NCeUlkKGlkKSB7XHJcbiAgbGV0IGFwcHMgPSBDbGllbnRBcHBzO1xyXG5cclxuICBpZiAoYXBwcyAmJiBpZCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhcHAgPSBhcHBzW2ldO1xyXG5cclxuICAgICAgaWYgKGFwcC5pZCA9PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ3NCeU5hbWUobmFtZSkge1xyXG4gIGxldCBhcHBzID0gQ2xpZW50QXBwcztcclxuXHJcbiAgaWYgKGFwcHMgJiYgbmFtZSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhcHAgPSBhcHBzW2ldO1xyXG5cclxuICAgICAgaWYgKGFwcC5uYW1lID09IG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFwcENvcmVTZXR0aW5ncyA9IEpTT04ucGFyc2UoXHJcbiAgKChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBDb3JlU2V0dGluZ3MnKVxyXG4gICkgYXMgSFRNTElucHV0RWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkYXRhLWFwcGNvcmVzZXR0aW5ncycpXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgTDEwTlVybCA9IGAke0FwcENvcmVTZXR0aW5ncz8ubDEwblVybH1gO1xyXG5cclxuLy9XZWJBcHBcclxuZXhwb3J0IGNvbnN0IEFwcFZlcnNpb24gPSBgJHtBcHBDb3JlU2V0dGluZ3M/LnZlcnNpb259YDtcclxuZXhwb3J0IGNvbnN0IEFwaVVybCA9IGAke0FwcENvcmVTZXR0aW5ncz8uYXBpVXJsfWA7XHJcbmV4cG9ydCBjb25zdCBDbGllbnRBcHBzID0gQXBwQ29yZVNldHRpbmdzPy5jbGllbnRBcHBzO1xyXG5cclxuLy9DbGllbnRBcHBcclxuZXhwb3J0IGNvbnN0IEFwcE5hbWUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcE5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXBwbmFtZScpO1xyXG5leHBvcnQgY29uc3QgQXBwU2V0dGluZ3MgPSBnZXRBcHBTZXR0aW5nc0J5TmFtZShBcHBOYW1lKTtcclxuXHJcbiJdfQ==
53
+ //DateFormats
54
+ export const DateFormats = {
55
+ date: 'dd MMM yyyy',
56
+ dateTime: 'dd MMM yyyy HH:mm'
57
+ };
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb25zdHMvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxFQUFFO0lBQ25DLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUV0QixJQUFJLElBQUksSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRWxCLElBQUksR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsSUFBSTtJQUN2QyxJQUFJLElBQUksR0FBRyxVQUFVLENBQUM7SUFFdEIsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFbEIsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0QyxDQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FDdEIsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FDNUQsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxHQUFHLGVBQWUsRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUVyRCxRQUFRO0FBQ1IsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEdBQUcsZUFBZSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxHQUFHLGVBQWUsRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsZUFBZSxFQUFFLFVBQVUsQ0FBQztBQUV0RCxXQUFXO0FBQ1gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFJLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFzQixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3RyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFekQsYUFBYTtBQUNiLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixJQUFJLEVBQUUsYUFBYTtJQUNuQixRQUFRLEVBQUUsbUJBQW1CO0NBQzlCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjYgSnVuIDIwMjBcclxuXHJcbiAgRXhhbXBsZXM6XHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3NyYy9zZXJ2ZXIvZWRpdG9yU2VydmljZXMudHNcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21haW4vc3JjL2NvbXBpbGVyL2NvcmUudHNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ3NCeUlkKGlkKSB7XHJcbiAgbGV0IGFwcHMgPSBDbGllbnRBcHBzO1xyXG5cclxuICBpZiAoYXBwcyAmJiBpZCkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhcHAgPSBhcHBzW2ldO1xyXG5cclxuICAgICAgaWYgKGFwcC5pZCA9PSBpZCkge1xyXG4gICAgICAgIHJldHVybiBhcHA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwU2V0dGluZ3NCeU5hbWUobmFtZSkge1xyXG4gIGxldCBhcHBzID0gQ2xpZW50QXBwcztcclxuXHJcbiAgaWYgKGFwcHMgJiYgbmFtZSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcHBzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBhcHAgPSBhcHBzW2ldO1xyXG5cclxuICAgICAgaWYgKGFwcC5uYW1lID09IG5hbWUpIHtcclxuICAgICAgICByZXR1cm4gYXBwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gbnVsbDtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFwcENvcmVTZXR0aW5ncyA9IEpTT04ucGFyc2UoXHJcbiAgKChcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhcHBDb3JlU2V0dGluZ3MnKVxyXG4gICkgYXMgSFRNTElucHV0RWxlbWVudCkuZ2V0QXR0cmlidXRlKCdkYXRhLWFwcGNvcmVzZXR0aW5ncycpXHJcbik7XHJcblxyXG5leHBvcnQgY29uc3QgTDEwTlVybCA9IGAke0FwcENvcmVTZXR0aW5ncz8ubDEwblVybH1gO1xyXG5cclxuLy9XZWJBcHBcclxuZXhwb3J0IGNvbnN0IEFwcFZlcnNpb24gPSBgJHtBcHBDb3JlU2V0dGluZ3M/LnZlcnNpb259YDtcclxuZXhwb3J0IGNvbnN0IEFwaVVybCA9IGAke0FwcENvcmVTZXR0aW5ncz8uYXBpVXJsfWA7XHJcbmV4cG9ydCBjb25zdCBDbGllbnRBcHBzID0gQXBwQ29yZVNldHRpbmdzPy5jbGllbnRBcHBzO1xyXG5cclxuLy9DbGllbnRBcHBcclxuZXhwb3J0IGNvbnN0IEFwcE5hbWUgPSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FwcE5hbWUnKSBhcyBIVE1MSW5wdXRFbGVtZW50KS5nZXRBdHRyaWJ1dGUoJ2RhdGEtYXBwbmFtZScpO1xyXG5leHBvcnQgY29uc3QgQXBwU2V0dGluZ3MgPSBnZXRBcHBTZXR0aW5nc0J5TmFtZShBcHBOYW1lKTtcclxuXHJcbi8vRGF0ZUZvcm1hdHNcclxuZXhwb3J0IGNvbnN0IERhdGVGb3JtYXRzID0ge1xyXG4gIGRhdGU6ICdkZCBNTU0geXl5eScsXHJcbiAgZGF0ZVRpbWU6ICdkZCBNTU0geXl5eSBISDptbSdcclxufVxyXG5cclxuIl19
@@ -93,38 +93,5 @@ export class Convert {
93
93
  return Boolean(value);
94
94
  }
95
95
  }
96
- /* Date ---------------------------------------------------------------------BEGIN*/
97
- static localToUtcDate(value) {
98
- if (value) {
99
- return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate());
100
- }
101
- return null;
102
- }
103
- static localToUtcDateTime(value) {
104
- if (value) {
105
- return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());
106
- }
107
- return null;
108
- }
109
- static utcToLocalDate(value) {
110
- if (value) {
111
- return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()));
112
- }
113
- return null;
114
- }
115
- static utcToLocalDateTime(value) {
116
- if (value) {
117
- return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
118
- }
119
- return null;
120
- }
121
- static dateToString(date) {
122
- return date.getFullYear() +
123
- '-' + this.pad(date.getMonth() + 1) +
124
- '-' + this.pad(date.getDate()) +
125
- ' ' + this.pad(date.getHours()) +
126
- ':' + this.pad(date.getMinutes()) +
127
- ':' + this.pad(date.getSeconds());
128
- }
129
96
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2NvbnZlcnRzL2NvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNLE9BQU8sT0FBTztJQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUN2QixJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLO1FBQzNDLEtBQUssSUFBSSxDQUFDLElBQUksV0FBVztZQUFFLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFZO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDekIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUE7UUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDakIsTUFBTSxDQUFDLGVBQWUsQ0FBQztpQkFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWCxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQzthQUNJLENBQUM7WUFDSixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixNQUFNLENBQUMsZUFBZSxDQUFDO2lCQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO2FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXLEVBQUUsWUFBb0IsR0FBRztRQUM5RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFlBQW9CLEdBQUc7UUFDakUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFRO1FBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBRyxPQUFPLEVBQ1YsQ0FBQztZQUNDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQU87UUFDbEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvSCxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1FBQ2pDLFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkMsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssR0FBRztnQkFDTixPQUFPLElBQUksQ0FBQztZQUVkLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssSUFBSTtnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsb0ZBQW9GO0lBQzdFLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBVztRQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBVztRQUMxQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFDM0UsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQ2hHLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFXO1FBQ3RDLElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsS0FBVztRQUMxQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUMzRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FDckYsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUk7UUFDN0IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3ZCLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDbkMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzlCLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDI5IEp1bmUgMjAyMFxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbmV4cG9ydCBjbGFzcyBDb252ZXJ0IHtcclxuICBwcml2YXRlIHN0YXRpYyBwYWQobnVtYmVyKSB7XHJcbiAgICBpZiAobnVtYmVyIDwgMTApIHtcclxuICAgICAgcmV0dXJuICcwJyArIG51bWJlcjtcclxuICAgIH1cclxuICAgIHJldHVybiBudW1iZXI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVudW1Ub1N0cmluZyhlbnVtZXJhdGlvbiwgdmFsdWUpIHtcclxuICAgIGZvciAobGV0IGsgaW4gZW51bWVyYXRpb24pIGlmIChlbnVtZXJhdGlvbltrXSA9PSB2YWx1ZSkgcmV0dXJuIGs7XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGVudW1Ub0FycmF5KGVudW1lcmF0aW9uLCB2YWx1ZUFzSW50ID0gdHJ1ZSwgbm90SW5jbHVkZXM/KSB7XHJcbiAgICBjb25zdCBub3RJbmNsdWRlRmlsZXIgPSAodmFsdWUpID0+IHtcclxuICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAobm90SW5jbHVkZXMpIHtcclxuICAgICAgICBmb3IgKGxldCBpIGluIG5vdEluY2x1ZGVzKSB7XHJcbiAgICAgICAgICBpZiAobm90SW5jbHVkZXNbaV0gPT0gdmFsdWUpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZUFzSW50KSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtZXJhdGlvbilcclxuICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobm90SW5jbHVkZUZpbGVyKVxyXG4gICAgICAgICAgICAgICAgICAgLm1hcChrZXkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHBhcnNlSW50KGtleSksXHJcbiAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGVudW1lcmF0aW9uW2tleV1cclxuICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXMoZW51bWVyYXRpb24pXHJcbiAgICAgICAgICAgICAgICAgICAuZmlsdGVyKG5vdEluY2x1ZGVGaWxlcilcclxuICAgICAgICAgICAgICAgICAgIC5tYXAoa2V5ID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBrZXksXHJcbiAgICAgICAgICAgICAgICAgICAgIHRleHQ6IGVudW1lcmF0aW9uW2tleV1cclxuICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nVG9BcnJheShzdHI6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcgPSAnLCcpIHtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmV0dXJuIHN0ci5zcGxpdChzZXBhcmF0b3IpLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nVG9JbnRBcnJheShzdHI6IHN0cmluZywgc2VwYXJhdG9yOiBzdHJpbmcgPSAnLCcpIHtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmV0dXJuIHN0ci5zcGxpdChzZXBhcmF0b3IpLmZpbHRlcihlbGVtZW50ID0+IGVsZW1lbnQpLm1hcCh2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgY29tcGFueTJTdHJpbmcoY29tcDphbnkpOnN0cmluZyB7XHJcbiAgICBsZXQgY29tcGFueSA9IEpTT04ucGFyc2UoY29tcCk7XHJcbiAgICBpZihjb21wYW55KVxyXG4gICAge1xyXG4gICAgICByZXR1cm4gYCR7Y29tcGFueS5uYW1lfSAke2NvbXBhbnkucGhvbmV9ICR7Y29tcGFueS5lbWFpbH0gJHtjb21wYW55LndlYnNpdGVVcmx9YDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYWRkcmVzczJTdHJpbmcoYWRyOmFueSk6c3RyaW5nIHtcclxuICAgIGxldCBhZGRyZXNzID0gSlNPTi5wYXJzZShhZHIpO1xyXG4gICAgcmV0dXJuIGAke2FkZHJlc3Muc3RyZWV0fSAke2FkZHJlc3Muc3RyZWV0Mn0gJHthZGRyZXNzLmNpdHl9ICR7YWRkcmVzcy5zdGF0ZU9yUmVnaW9ufSAke2FkZHJlc3MuemlwY29kZX0gJHthZGRyZXNzLmNvdW50cnl9YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc3RyaW5nVG9Cb29sZWFuKHZhbHVlKSB7XHJcbiAgICBzd2l0Y2ggKHZhbHVlLnRvTG93ZXJDYXNlKCkudHJpbSgpKSB7XHJcbiAgICAgIGNhc2UgXCJ0cnVlXCI6XHJcbiAgICAgIGNhc2UgXCJ5ZXNcIjpcclxuICAgICAgY2FzZSBcIjFcIjpcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuXHJcbiAgICAgIGNhc2UgXCJmYWxzZVwiOlxyXG4gICAgICBjYXNlIFwibm9cIjpcclxuICAgICAgY2FzZSBcIjBcIjpcclxuICAgICAgY2FzZSBudWxsOlxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogRGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1CRUdJTiovXHJcbiAgcHVibGljIHN0YXRpYyBsb2NhbFRvVXRjRGF0ZSh2YWx1ZTogRGF0ZSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSwgdmFsdWUuZ2V0VVRDRGF0ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbG9jYWxUb1V0Y0RhdGVUaW1lKHZhbHVlOiBEYXRlKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRVVENGdWxsWWVhcigpLCB2YWx1ZS5nZXRVVENNb250aCgpLCB2YWx1ZS5nZXRVVENEYXRlKCksXHJcbiAgICAgICAgICB2YWx1ZS5nZXRVVENIb3VycygpLCB2YWx1ZS5nZXRVVENNaW51dGVzKCksIHZhbHVlLmdldFVUQ1NlY29uZHMoKSwgdmFsdWUuZ2V0VVRDTWlsbGlzZWNvbmRzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdXRjVG9Mb2NhbERhdGUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1dGNUb0xvY2FsRGF0ZVRpbWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSxcclxuICAgICAgICAgIHZhbHVlLmdldEhvdXJzKCksIHZhbHVlLmdldE1pbnV0ZXMoKSwgdmFsdWUuZ2V0U2Vjb25kcygpLCB2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZGF0ZVRvU3RyaW5nKGRhdGUpIHtcclxuICAgIHJldHVybiBkYXRlLmdldEZ1bGxZZWFyKCkgK1xyXG4gICAgICAnLScgKyB0aGlzLnBhZChkYXRlLmdldE1vbnRoKCkgKyAxKSArXHJcbiAgICAgICctJyArIHRoaXMucGFkKGRhdGUuZ2V0RGF0ZSgpKSArXHJcbiAgICAgICcgJyArIHRoaXMucGFkKGRhdGUuZ2V0SG91cnMoKSkgK1xyXG4gICAgICAnOicgKyB0aGlzLnBhZChkYXRlLmdldE1pbnV0ZXMoKSkgK1xyXG4gICAgICAnOicgKyB0aGlzLnBhZChkYXRlLmdldFNlY29uZHMoKSk7XHJcbiAgfVxyXG4gIC8qIERhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EKi9cclxufVxyXG4iXX0=
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuYXRvbHkvc3JjL2xpYi9jb3JlL2NvbnZlcnRzL2NvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNLE9BQU8sT0FBTztJQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUN2QixJQUFJLE1BQU0sR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUNoQixPQUFPLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDdEIsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxLQUFLO1FBQzNDLEtBQUssSUFBSSxDQUFDLElBQUksV0FBVztZQUFFLElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUs7Z0JBQUUsT0FBTyxDQUFDLENBQUM7UUFFakUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFZO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDO1lBRUQsSUFBSSxXQUFXLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxJQUFJLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSzt3QkFDekIsT0FBTyxLQUFLLENBQUM7Z0JBQ2pCLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUE7UUFFRCxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztpQkFDakIsTUFBTSxDQUFDLGVBQWUsQ0FBQztpQkFDdkIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDWCxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFDcEIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUM7YUFDdkIsQ0FBQyxDQUFDLENBQUM7UUFDbkIsQ0FBQzthQUNJLENBQUM7WUFDSixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUNqQixNQUFNLENBQUMsZUFBZSxDQUFDO2lCQUN2QixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNYLEtBQUssRUFBRSxHQUFHO2dCQUNWLElBQUksRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDO2FBQ3ZCLENBQUMsQ0FBQyxDQUFDO1FBQ25CLENBQUM7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXLEVBQUUsWUFBb0IsR0FBRztRQUM5RCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBVyxFQUFFLFlBQW9CLEdBQUc7UUFDakUsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFRO1FBQ25DLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBRyxPQUFPLEVBQ1YsQ0FBQztZQUNDLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbkYsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQU87UUFDbEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLGFBQWEsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMvSCxDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLO1FBQ2pDLFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7WUFDbkMsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssR0FBRztnQkFDTixPQUFPLElBQUksQ0FBQztZQUVkLEtBQUssT0FBTyxDQUFDO1lBQ2IsS0FBSyxJQUFJLENBQUM7WUFDVixLQUFLLEdBQUcsQ0FBQztZQUNULEtBQUssSUFBSTtnQkFDUCxPQUFPLEtBQUssQ0FBQztZQUVmO2dCQUNFLE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMjkgSnVuZSAyMDIwXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNsYXNzIENvbnZlcnQge1xyXG4gIHByaXZhdGUgc3RhdGljIHBhZChudW1iZXIpIHtcclxuICAgIGlmIChudW1iZXIgPCAxMCkge1xyXG4gICAgICByZXR1cm4gJzAnICsgbnVtYmVyO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bWJlcjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW51bVRvU3RyaW5nKGVudW1lcmF0aW9uLCB2YWx1ZSkge1xyXG4gICAgZm9yIChsZXQgayBpbiBlbnVtZXJhdGlvbikgaWYgKGVudW1lcmF0aW9uW2tdID09IHZhbHVlKSByZXR1cm4gaztcclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgZW51bVRvQXJyYXkoZW51bWVyYXRpb24sIHZhbHVlQXNJbnQgPSB0cnVlLCBub3RJbmNsdWRlcz8pIHtcclxuICAgIGNvbnN0IG5vdEluY2x1ZGVGaWxlciA9ICh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAoaXNOYU4oTnVtYmVyKHZhbHVlKSkpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmIChub3RJbmNsdWRlcykge1xyXG4gICAgICAgIGZvciAobGV0IGkgaW4gbm90SW5jbHVkZXMpIHtcclxuICAgICAgICAgIGlmIChub3RJbmNsdWRlc1tpXSA9PSB2YWx1ZSlcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZhbHVlQXNJbnQpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGVudW1lcmF0aW9uKVxyXG4gICAgICAgICAgICAgICAgICAgLmZpbHRlcihub3RJbmNsdWRlRmlsZXIpXHJcbiAgICAgICAgICAgICAgICAgICAubWFwKGtleSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQoa2V5KSxcclxuICAgICAgICAgICAgICAgICAgICAgdGV4dDogZW51bWVyYXRpb25ba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cyhlbnVtZXJhdGlvbilcclxuICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobm90SW5jbHVkZUZpbGVyKVxyXG4gICAgICAgICAgICAgICAgICAgLm1hcChrZXkgPT4gKHtcclxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGtleSxcclxuICAgICAgICAgICAgICAgICAgICAgdGV4dDogZW51bWVyYXRpb25ba2V5XVxyXG4gICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0FycmF5KHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcsJykge1xyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICByZXR1cm4gc3RyLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0ludEFycmF5KHN0cjogc3RyaW5nLCBzZXBhcmF0b3I6IHN0cmluZyA9ICcsJykge1xyXG4gICAgaWYgKHN0cikge1xyXG4gICAgICByZXR1cm4gc3RyLnNwbGl0KHNlcGFyYXRvcikuZmlsdGVyKGVsZW1lbnQgPT4gZWxlbWVudCkubWFwKHZhbHVlID0+IHBhcnNlSW50KHZhbHVlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFtdO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBjb21wYW55MlN0cmluZyhjb21wOmFueSk6c3RyaW5nIHtcclxuICAgIGxldCBjb21wYW55ID0gSlNPTi5wYXJzZShjb21wKTtcclxuICAgIGlmKGNvbXBhbnkpXHJcbiAgICB7XHJcbiAgICAgIHJldHVybiBgJHtjb21wYW55Lm5hbWV9ICR7Y29tcGFueS5waG9uZX0gJHtjb21wYW55LmVtYWlsfSAke2NvbXBhbnkud2Vic2l0ZVVybH1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBhZGRyZXNzMlN0cmluZyhhZHI6YW55KTpzdHJpbmcge1xyXG4gICAgbGV0IGFkZHJlc3MgPSBKU09OLnBhcnNlKGFkcik7XHJcbiAgICByZXR1cm4gYCR7YWRkcmVzcy5zdHJlZXR9ICR7YWRkcmVzcy5zdHJlZXQyfSAke2FkZHJlc3MuY2l0eX0gJHthZGRyZXNzLnN0YXRlT3JSZWdpb259ICR7YWRkcmVzcy56aXBjb2RlfSAke2FkZHJlc3MuY291bnRyeX1gO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmdUb0Jvb2xlYW4odmFsdWUpIHtcclxuICAgIHN3aXRjaCAodmFsdWUudG9Mb3dlckNhc2UoKS50cmltKCkpIHtcclxuICAgICAgY2FzZSBcInRydWVcIjpcclxuICAgICAgY2FzZSBcInllc1wiOlxyXG4gICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG5cclxuICAgICAgY2FzZSBcImZhbHNlXCI6XHJcbiAgICAgIGNhc2UgXCJub1wiOlxyXG4gICAgICBjYXNlIFwiMFwiOlxyXG4gICAgICBjYXNlIG51bGw6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,58 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 09 Feb 2024
12
+
13
+ Source:
14
+ https://github.com/date-fns/date-fns/blob/main/src/toDate/index.ts
15
+
16
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
17
+ </file>
18
+ */
19
+ export class DateConvert {
20
+ static toDate(argument) {
21
+ const argStr = Object.prototype.toString.call(argument);
22
+ if (argument instanceof Date || (typeof argument === "object" && argStr === "[object Date]")) {
23
+ return argument;
24
+ }
25
+ else if (typeof argument === "number" || argStr === "[object Number]" ||
26
+ typeof argument === "string" || argStr === "[object String]") {
27
+ return new Date(argument);
28
+ }
29
+ else {
30
+ return new Date(NaN);
31
+ }
32
+ }
33
+ static localToUtcDate(value) {
34
+ if (value) {
35
+ return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate());
36
+ }
37
+ return null;
38
+ }
39
+ static localToUtcDateTime(value) {
40
+ if (value) {
41
+ return new Date(value.getUTCFullYear(), value.getUTCMonth(), value.getUTCDate(), value.getUTCHours(), value.getUTCMinutes(), value.getUTCSeconds(), value.getUTCMilliseconds());
42
+ }
43
+ return null;
44
+ }
45
+ static utcToLocalDate(value) {
46
+ if (value) {
47
+ return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate()));
48
+ }
49
+ return null;
50
+ }
51
+ static utcToLocalDateTime(value) {
52
+ if (value) {
53
+ return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
54
+ }
55
+ return null;
56
+ }
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZUNvbnZlcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9jb252ZXJ0cy9kYXRlQ29udmVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFpQkU7QUFFRixNQUFNLE9BQU8sV0FBVztJQUNmLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBZ0M7UUFDbkQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXhELElBQUksUUFBUSxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxNQUFNLEtBQUssZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM3RixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO2FBQ0ksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLGlCQUFpQjtZQUM1RCxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksTUFBTSxLQUFLLGlCQUFpQixFQUFFLENBQUM7WUFDdEUsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QixDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQVc7UUFDdEMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQVc7UUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQzNFLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEVBQUUsS0FBSyxDQUFDLGFBQWEsRUFBRSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxDQUNoRyxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBVztRQUN0QyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNwRixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQVc7UUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFDM0UsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEtBQUssQ0FBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQ3JGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDkgRmViIDIwMjRcclxuXHJcbiAgU291cmNlOlxyXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFpbi9zcmMvdG9EYXRlL2luZGV4LnRzXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGVDb252ZXJ0IHtcclxuICBwdWJsaWMgc3RhdGljIHRvRGF0ZShhcmd1bWVudDogRGF0ZSB8IG51bWJlciB8IHN0cmluZyk6IERhdGUge1xyXG4gICAgY29uc3QgYXJnU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3VtZW50KTtcclxuXHJcbiAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2VvZiBEYXRlIHx8ICh0eXBlb2YgYXJndW1lbnQgPT09IFwib2JqZWN0XCIgJiYgYXJnU3RyID09PSBcIltvYmplY3QgRGF0ZV1cIikpIHtcclxuICAgICAgcmV0dXJuIGFyZ3VtZW50O1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGFyZ3VtZW50ID09PSBcIm51bWJlclwiIHx8IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IE51bWJlcl1cIiB8fFxyXG4gICAgICAgICAgICAgdHlwZW9mIGFyZ3VtZW50ID09PSBcInN0cmluZ1wiIHx8IGFyZ1N0ciA9PT0gXCJbb2JqZWN0IFN0cmluZ11cIikge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUoYXJndW1lbnQpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZShOYU4pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBsb2NhbFRvVXRjRGF0ZSh2YWx1ZTogRGF0ZSk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICByZXR1cm4gbmV3IERhdGUodmFsdWUuZ2V0VVRDRnVsbFllYXIoKSwgdmFsdWUuZ2V0VVRDTW9udGgoKSwgdmFsdWUuZ2V0VVRDRGF0ZSgpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgbG9jYWxUb1V0Y0RhdGVUaW1lKHZhbHVlOiBEYXRlKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKHZhbHVlKSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGF0ZSh2YWx1ZS5nZXRVVENGdWxsWWVhcigpLCB2YWx1ZS5nZXRVVENNb250aCgpLCB2YWx1ZS5nZXRVVENEYXRlKCksXHJcbiAgICAgICAgICB2YWx1ZS5nZXRVVENIb3VycygpLCB2YWx1ZS5nZXRVVENNaW51dGVzKCksIHZhbHVlLmdldFVUQ1NlY29uZHMoKSwgdmFsdWUuZ2V0VVRDTWlsbGlzZWNvbmRzKClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgdXRjVG9Mb2NhbERhdGUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyB1dGNUb0xvY2FsRGF0ZVRpbWUodmFsdWU6IERhdGUpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICBpZiAodmFsdWUpIHtcclxuICAgICAgcmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKHZhbHVlLmdldEZ1bGxZZWFyKCksIHZhbHVlLmdldE1vbnRoKCksIHZhbHVlLmdldERhdGUoKSxcclxuICAgICAgICAgIHZhbHVlLmdldEhvdXJzKCksIHZhbHVlLmdldE1pbnV0ZXMoKSwgdmFsdWUuZ2V0U2Vjb25kcygpLCB2YWx1ZS5nZXRNaWxsaXNlY29uZHMoKSlcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
@@ -17,6 +17,7 @@
17
17
  export * from './consts/settings';
18
18
  //converts
19
19
  export * from './converts/convert';
20
+ export * from './converts/dateConvert';
20
21
  export * from './converts/xmlFormatter';
21
22
  export * from './go/base-go.service';
22
23
  export * from './guards/once-import.guard';
@@ -48,6 +49,7 @@ export * from './services/web-storage.service';
48
49
  export * from './browser';
49
50
  export * from './dom';
50
51
  export * from './guid';
52
+ export * from './is';
51
53
  export * from './subs';
52
54
  export * from './utils';
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLFFBQVE7QUFDUixjQUFjLG1CQUFtQixDQUFDO0FBRWxDLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUM7QUFFL0MsY0FBYztBQUNkLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsb0NBQW9DLENBQUM7QUFFbkQsU0FBUztBQUNULGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYywyQkFBMkIsQ0FBQztBQUUxQyxRQUFRO0FBQ1IsY0FBYyw2QkFBNkIsQ0FBQztBQUU1QyxlQUFlO0FBQ2YsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsK0NBQStDLENBQUM7QUFFOUQsYUFBYTtBQUNiLGNBQWMseUJBQXlCLENBQUM7QUFFeEMsVUFBVTtBQUNWLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyx1QkFBdUIsQ0FBQTtBQUNyQyxjQUFjLHFDQUFxQyxDQUFBO0FBQ25ELGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsZ0NBQWdDLENBQUE7QUFFOUMsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMiBBdWcgMjAyMlxyXG5cclxuICBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBPc292aXRueSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbjwvZmlsZT5cclxuKi9cclxuXHJcbi8vY29uc3RzXHJcbmV4cG9ydCAqIGZyb20gJy4vY29uc3RzL3NldHRpbmdzJztcclxuXHJcbi8vY29udmVydHNcclxuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJ0cy9jb252ZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJ0cy94bWxGb3JtYXR0ZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9nby9iYXNlLWdvLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9vbmNlLWltcG9ydC5ndWFyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJjZXB0b3JzL2h0dHBJbnRlcmNlcHRvcic7XHJcblxyXG4vL2xvY2FsaXphdGlvblxyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGl6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9zZXR0aW5ncy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlJztcclxuXHJcbi8vbG9nZ2luZ1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcvZ2xvYmFsRXJyb3JIYW5kbGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2dnaW5nL2xvZ2dpbmcuc2VydmljZSc7XHJcblxyXG4vL21vZGVsc1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9hcHBjb250ZXh0LnNlcnZpY2UnO1xyXG5cclxuLy9ub3RpZmljYXRpb25zXHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucy9hbGVydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMvaW50ZXJmYWNlcy9ub3RpZmljYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMvc2VydmljZXMvbm90aWZpY2F0aW9uLXNlcnZpY2UnO1xyXG5cclxuLy9wZXJmb3JtYW5jZVxyXG5leHBvcnQgKiBmcm9tICcuL3BlcmZvcm1hbmNlL3N0b3B3YXRjaCc7XHJcblxyXG4vL3NlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXBwY29udGV4dC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kbS5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pZGxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvYWRpbmcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc3RhcnRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy93ZWItc3RvcmFnZS5zZXJ2aWNlJ1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9icm93c2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9kb20nO1xyXG5leHBvcnQgKiBmcm9tICcuL2d1aWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3N1YnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcclxuIl19
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLFFBQVE7QUFDUixjQUFjLG1CQUFtQixDQUFDO0FBRWxDLFVBQVU7QUFDVixjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQztBQUUvQyxjQUFjO0FBQ2QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxvQ0FBb0MsQ0FBQztBQUVuRCxTQUFTO0FBQ1QsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDJCQUEyQixDQUFDO0FBRTFDLFFBQVE7QUFDUixjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGVBQWU7QUFDZixjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQ0FBK0MsQ0FBQztBQUU5RCxhQUFhO0FBQ2IsY0FBYyx5QkFBeUIsQ0FBQztBQUV4QyxVQUFVO0FBQ1YsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMscUNBQXFDLENBQUE7QUFDbkQsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyxnQ0FBZ0MsQ0FBQTtBQUU5QyxjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLE1BQU0sQ0FBQztBQUNyQixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbjxmaWxlPlxyXG4gIFByb2plY3Q6XHJcbiAgICBAb3Nvdml0bnkvYW5hdG9seVxyXG5cclxuICBBdXRob3JzOlxyXG4gICAgVmFkaW0gT3Nvdml0bnkgdmFkaW1Ab3Nvdml0bnkuY29tXHJcbiAgICBBbmF0b2x5IE9zb3ZpdG55IGFuYXRvbHlAb3Nvdml0bnkuY29tXHJcblxyXG4gIENyZWF0ZWQ6XHJcbiAgICAyIEF1ZyAyMDIyXHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9jb25zdHNcclxuZXhwb3J0ICogZnJvbSAnLi9jb25zdHMvc2V0dGluZ3MnO1xyXG5cclxuLy9jb252ZXJ0c1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRzL2NvbnZlcnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbnZlcnRzL2RhdGVDb252ZXJ0JztcclxuZXhwb3J0ICogZnJvbSAnLi9jb252ZXJ0cy94bWxGb3JtYXR0ZXInO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9nby9iYXNlLWdvLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2d1YXJkcy9vbmNlLWltcG9ydC5ndWFyZCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJjZXB0b3JzL2h0dHBJbnRlcmNlcHRvcic7XHJcblxyXG4vL2xvY2FsaXphdGlvblxyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGl6ZS5waXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9zZXR0aW5ncy5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xvY2FsaXphdGlvbi9sb2NhbGl6YXRpb24ubW9kdWxlJztcclxuXHJcbi8vbG9nZ2luZ1xyXG5leHBvcnQgKiBmcm9tICcuL2xvZ2dpbmcvZ2xvYmFsRXJyb3JIYW5kbGVyJztcclxuZXhwb3J0ICogZnJvbSAnLi9sb2dnaW5nL2xvZ2dpbmcuc2VydmljZSc7XHJcblxyXG4vL21vZGVsc1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9hcHBjb250ZXh0LnNlcnZpY2UnO1xyXG5cclxuLy9ub3RpZmljYXRpb25zXHJcbmV4cG9ydCAqIGZyb20gJy4vbm90aWZpY2F0aW9ucy9hbGVydHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMvaW50ZXJmYWNlcy9ub3RpZmljYXRpb24nO1xyXG5leHBvcnQgKiBmcm9tICcuL25vdGlmaWNhdGlvbnMvc2VydmljZXMvbm90aWZpY2F0aW9uLXNlcnZpY2UnO1xyXG5cclxuLy9wZXJmb3JtYW5jZVxyXG5leHBvcnQgKiBmcm9tICcuL3BlcmZvcm1hbmNlL3N0b3B3YXRjaCc7XHJcblxyXG4vL3NlcnZpY2VzXHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvYXBwY29udGV4dC5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9kbS5zZXJ2aWNlJ1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2dvb2dsZS1hbmFseXRpY3Muc2VydmljZSdcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9pZGxlLnNlcnZpY2UnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL2xvYWRpbmcuc2VydmljZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvc3RhcnRlci5zZXJ2aWNlJztcclxuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy93ZWItc3RvcmFnZS5zZXJ2aWNlJ1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9icm93c2VyJztcclxuZXhwb3J0ICogZnJvbSAnLi9kb20nO1xyXG5leHBvcnQgKiBmcm9tICcuL2d1aWQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2lzJztcclxuZXhwb3J0ICogZnJvbSAnLi9zdWJzJztcclxuZXhwb3J0ICogZnJvbSAnLi91dGlscyc7XHJcbiJdfQ==
@@ -0,0 +1,79 @@
1
+ /*
2
+ <file>
3
+ Project:
4
+ @osovitny/anatoly
5
+
6
+ Authors:
7
+ Vadim Osovitny vadim@osovitny.com
8
+ Anatoly Osovitny anatoly@osovitny.com
9
+
10
+ Created:
11
+ 09 Feb 2024
12
+
13
+ Sources:
14
+ https://github.com/date-fns/date-fns/blob/main/src/isDate/index.ts
15
+ https://github.com/date-fns/date-fns/blob/main/src/isValid/index.ts
16
+
17
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
18
+ </file>
19
+ */
20
+ export class is {
21
+ /**
22
+ * @name isDate
23
+ * @summary Is the given value a date?
24
+ */
25
+ static date(value) {
26
+ return (value instanceof Date ||
27
+ (typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]"));
28
+ }
29
+ /**
30
+ * @name isDateValid
31
+ * @summary Is the given date valid?
32
+ */
33
+ static dateValid(date) {
34
+ if (!is.date(date) && typeof date !== "number") {
35
+ return false;
36
+ }
37
+ let d = new Date(date);
38
+ return !isNaN(Number(d));
39
+ }
40
+ static dateInvalid(date) {
41
+ return !is.dateValid(date);
42
+ }
43
+ static string(value) {
44
+ return (typeof value === 'string' || value instanceof String);
45
+ }
46
+ static number(value) {
47
+ return (typeof value === 'number');
48
+ }
49
+ static boolean(value) {
50
+ return (typeof value === 'boolean');
51
+ }
52
+ static objectNullOrEmpty(obj) {
53
+ return !obj || Object.keys(obj).length == 0;
54
+ }
55
+ }
56
+ /*
57
+
58
+ is = {
59
+ DONE string: function (obj) { return (typeof obj === 'string'); },
60
+ DONE number: function (obj) { return (typeof obj === 'number'); },
61
+ DONE bool: function (obj) { return (typeof obj === 'boolean'); },
62
+ array: function (obj) { return (obj instanceof Array); },
63
+ undefined: function (obj) { return (typeof obj === 'undefined'); },
64
+ 'null': function (obj) { return (obj === null); },
65
+ notNull: function (obj) { return (obj !== null); },
66
+ invalid: function (obj) { return (is['null'](obj) || is.undefined(obj)); },
67
+ valid: function (obj) { return (!is['null'](obj) && !is.undefined(obj)); },
68
+ emptyString: function (obj) { return (is.string(obj) && (obj.length == 0)); },
69
+ nonEmptyString: function (obj) { return (is.string(obj) && (obj.length > 0)); },
70
+ emptyArray: function (obj) { return (is.array(obj) && (obj.length == 0)); },
71
+ nonEmptyArray: function (obj) { return (is.array(obj) && (obj.length > 0)); },
72
+ document: function (obj) { return (obj === document); },
73
+ window: function (obj) { return (obj === window); },
74
+ element: function (obj) { return (obj instanceof HTMLElement); },
75
+ event: function (obj) { return (obj instanceof Event); },
76
+ link: function (obj) { return (is.element(obj) && (obj.tagName == 'A')); }
77
+ };
78
+ */
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9pcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBa0JFO0FBRUYsTUFBTSxPQUFPLEVBQUU7SUFDYjs7O01BR0U7SUFDSyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUs7UUFDdEIsT0FBTyxDQUNMLEtBQUssWUFBWSxJQUFJO1lBQ3JCLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxlQUFlLENBQUMsQ0FDekYsQ0FBQztJQUNKLENBQUM7SUFFRDs7O01BR0U7SUFDSyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUk7UUFDMUIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRU0sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQzVCLE9BQU8sQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUs7UUFDeEIsT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLFlBQVksTUFBTSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSztRQUN4QixPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSztRQUN6QixPQUFPLENBQUMsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBc0JFIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA5IEZlYiAyMDI0XHJcblxyXG4gIFNvdXJjZXM6XHJcbiAgICBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYWluL3NyYy9pc0RhdGUvaW5kZXgudHNcclxuICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21haW4vc3JjL2lzVmFsaWQvaW5kZXgudHNcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG5leHBvcnQgY2xhc3MgaXMge1xyXG4gIC8qKlxyXG4gICAqIEBuYW1lIGlzRGF0ZVxyXG4gICAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB2YWx1ZSBhIGRhdGU/XHJcbiAgKi9cclxuICBwdWJsaWMgc3RhdGljIGRhdGUodmFsdWUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHZhbHVlIGluc3RhbmNlb2YgRGF0ZSB8fFxyXG4gICAgICAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09IFwiW29iamVjdCBEYXRlXVwiKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBuYW1lIGlzRGF0ZVZhbGlkXHJcbiAgICogQHN1bW1hcnkgSXMgdGhlIGdpdmVuIGRhdGUgdmFsaWQ/XHJcbiAgKi9cclxuICBwdWJsaWMgc3RhdGljIGRhdGVWYWxpZChkYXRlKTogYm9vbGVhbiB7XHJcbiAgICBpZiAoIWlzLmRhdGUoZGF0ZSkgJiYgdHlwZW9mIGRhdGUgIT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICByZXR1cm4gIWlzTmFOKE51bWJlcihkKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGRhdGVJbnZhbGlkKGRhdGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhaXMuZGF0ZVZhbGlkKGRhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBzdHJpbmcodmFsdWUpIHtcclxuICAgIHJldHVybiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB8fCB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG51bWJlcih2YWx1ZSkge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYm9vbGVhbih2YWx1ZSkge1xyXG4gICAgcmV0dXJuICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIG9iamVjdE51bGxPckVtcHR5KG9iaikge1xyXG4gICAgcmV0dXJuICFvYmogfHwgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggPT0gMDtcclxuICB9XHJcbn1cclxuXHJcbi8qXHJcblxyXG5pcyA9IHtcclxuICBET05FIHN0cmluZzogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKTsgfSxcclxuICBET05FIG51bWJlcjogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICdudW1iZXInKTsgfSxcclxuICBET05FIGJvb2w6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuICh0eXBlb2Ygb2JqID09PSAnYm9vbGVhbicpOyB9LFxyXG4gIGFycmF5OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqIGluc3RhbmNlb2YgQXJyYXkpOyB9LFxyXG4gIHVuZGVmaW5lZDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKHR5cGVvZiBvYmogPT09ICd1bmRlZmluZWQnKTsgfSxcclxuICAnbnVsbCc6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogPT09IG51bGwpOyB9LFxyXG4gIG5vdE51bGw6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogIT09IG51bGwpOyB9LFxyXG4gIGludmFsaWQ6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpc1snbnVsbCddKG9iaikgfHwgaXMudW5kZWZpbmVkKG9iaikpOyB9LFxyXG4gIHZhbGlkOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoIWlzWydudWxsJ10ob2JqKSAmJiAhaXMudW5kZWZpbmVkKG9iaikpOyB9LFxyXG4gIGVtcHR5U3RyaW5nOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuc3RyaW5nKG9iaikgJiYgKG9iai5sZW5ndGggPT0gMCkpOyB9LFxyXG4gIG5vbkVtcHR5U3RyaW5nOiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAoaXMuc3RyaW5nKG9iaikgJiYgKG9iai5sZW5ndGggPiAwKSk7IH0sXHJcbiAgZW1wdHlBcnJheTogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKGlzLmFycmF5KG9iaikgJiYgKG9iai5sZW5ndGggPT0gMCkpOyB9LFxyXG4gIG5vbkVtcHR5QXJyYXk6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChpcy5hcnJheShvYmopICYmIChvYmoubGVuZ3RoID4gMCkpOyB9LFxyXG4gIGRvY3VtZW50OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqID09PSBkb2N1bWVudCk7IH0sXHJcbiAgd2luZG93OiBmdW5jdGlvbiAob2JqKSB7IHJldHVybiAob2JqID09PSB3aW5kb3cpOyB9LFxyXG4gIGVsZW1lbnQ6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogaW5zdGFuY2VvZiBIVE1MRWxlbWVudCk7IH0sXHJcbiAgZXZlbnQ6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIChvYmogaW5zdGFuY2VvZiBFdmVudCk7IH0sXHJcbiAgbGluazogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gKGlzLmVsZW1lbnQob2JqKSAmJiAob2JqLnRhZ05hbWUgPT0gJ0EnKSk7IH1cclxufTtcclxuKi9cclxuIl19
@@ -10,21 +10,25 @@
10
10
  Created:
11
11
  05 May 2020
12
12
 
13
+ Source:
14
+ https://date-fns.org/v3.3.1/docs/formatDistance
15
+ https://date-fns.org/v3.3.1/docs/formatDistanceToNow
16
+
13
17
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
14
18
  </file>
15
19
  */
16
20
  //Node
17
21
  import { Injectable, Output, EventEmitter } from '@angular/core';
18
- //Date fns
19
- import { format, isValid, formatDistanceToNow, formatDistance } from 'date-fns';
22
+ //date-fns
23
+ import { format, formatDistanceToNow, formatDistance } from 'date-fns';
20
24
  import { utcToZonedTime } from 'date-fns-tz';
21
25
  // VadimOS: IE11-fix. DON'T change next imports!
22
26
  // Reason: https://github.com/date-fns/date-fns/issues/666
23
27
  import enUS from 'date-fns/locale/en-US';
24
- //App
25
- import { Convert } from '../converts/convert';
26
28
  import { Subs } from '../subs';
27
- import { Utils } from '../utils';
29
+ import { DateFormats } from '../consts/settings';
30
+ import { DateConvert } from '../converts/dateConvert';
31
+ import { is } from '../is';
28
32
  import * as i0 from "@angular/core";
29
33
  import * as i1 from "@ngx-translate/core";
30
34
  export class LocalizationService {
@@ -87,7 +91,7 @@ export class LocalizationService {
87
91
  }
88
92
  return dfnLocale;
89
93
  }
90
- //getLocalized...
94
+ //getLocalized
91
95
  getLocalizedValue(key, params) {
92
96
  const value = this.translate.instant(key);
93
97
  if (!params || params.length === 0) {
@@ -95,91 +99,36 @@ export class LocalizationService {
95
99
  }
96
100
  return this.format(value, params);
97
101
  }
98
- getLocalizedDate(key) {
99
- let date = new Date(key);
100
- if (isValid(date)) {
101
- let localDate = Convert.utcToLocalDate(date);
102
- return format(localDate, 'dd MMM yyyy', this.dateFnsLocale);
103
- }
104
- return "Invalid Date";
105
- }
106
- getLocalizedDateTime(key) {
107
- let date = new Date(key);
108
- if (isValid(date)) {
109
- let localDate = Convert.utcToLocalDateTime(date);
110
- return format(localDate, 'dd MMM yyyy HH:mm', this.dateFnsLocale);
102
+ getLocalizedDate(value) {
103
+ let date = DateConvert.toDate(value);
104
+ if (is.dateInvalid(date)) {
105
+ return "Invalid Date";
111
106
  }
112
- return "Invalid Date";
107
+ return format(date, DateFormats.date, this.dateFnsLocale);
113
108
  }
114
- getLocalizedDistanceInWords(endedDate, startedDate) {
115
- if (isValid(new Date(endedDate)) && isValid(new Date(startedDate))) {
116
- return formatDistance(new Date(endedDate), new Date(startedDate), this.dateFnsLocale);
109
+ getLocalizedDateTime(value) {
110
+ let date = DateConvert.toDate(value);
111
+ if (is.dateInvalid(date)) {
112
+ return "Invalid Date";
117
113
  }
118
- return "Invalid Date";
114
+ return format(date, DateFormats.dateTime, this.dateFnsLocale);
119
115
  }
120
- getLocalizedDistanceToNowInWords(date) {
121
- if (isValid(new Date(date))) {
122
- return formatDistanceToNow(new Date(date), this.dateFnsLocale);
123
- }
124
- return "Invalid Date";
116
+ //UTC ---------------------------------------------------------------------BEGIN
117
+ getUTCToLocalizedDate(value) {
118
+ return this.safeUtcToZonedTime(value, DateFormats.date);
125
119
  }
126
- //UTC Operations --------------------------------------------------------------
127
- getUTCToLocalizedDate(key) {
128
- if (!Utils.isString(key)) {
129
- key = key.toString();
130
- }
131
- if (key) {
132
- if (key.indexOf("T") == -1) {
133
- key = key.replace(" ", "T");
134
- }
135
- if (key.indexOf("Z") == -1) {
136
- key = key + "Z";
137
- }
138
- }
139
- let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
140
- if (browserTimeZone) {
141
- let localDateTime = utcToZonedTime(key, browserTimeZone);
142
- return format(localDateTime, 'dd.MM.yyyy', this.dateFnsLocale);
143
- }
144
- else {
145
- return format(new Date(key), 'dd.MM.yyyy', this.dateFnsLocale);
146
- }
120
+ getUTCToLocalizedDateTime(value) {
121
+ return this.safeUtcToZonedTime(value, DateFormats.dateTime);
147
122
  }
148
- getUTCToLocalizedDateTime(key) {
149
- if (!Utils.isString(key)) {
150
- key = key.toString();
151
- }
152
- if (key) {
153
- if (key.indexOf("T") == -1) {
154
- key = key.replace(" ", "T");
155
- }
156
- if (key.indexOf("Z") == -1) {
157
- key = key + "Z";
158
- }
159
- }
160
- let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
161
- if (browserTimeZone) {
162
- let localDateTime = utcToZonedTime(key, browserTimeZone);
163
- return format(localDateTime, 'dd.MM.yyyy HH:mm', this.dateFnsLocale);
123
+ safeUtcToZonedTime(date, conversionFormat = null) {
124
+ if (!date) {
125
+ return null;
164
126
  }
165
- else {
166
- return format(new Date(key), 'dd.MM.yyyy HH:mm', this.dateFnsLocale);
167
- }
168
- }
169
- //https://date-fns.org/v1.30.1/docs/distanceInWords
170
- getUTCToLocalizedDistanceToNowInWords(date) {
171
- date = this.safeUtcToZonedTime(date);
172
- if (isValid(new Date(date))) {
173
- return formatDistanceToNow(new Date(date), this.dateFnsLocale);
174
- }
175
- return "Invalid Date";
176
- }
177
- safeUtcToZonedTime(date) {
178
127
  let result = date;
179
128
  try {
180
- if (date) {
181
- if (date.indexOf("T") == -1) {
182
- date = date.replace(" ", "T");
129
+ if (typeof date === 'string') {
130
+ if (date.indexOf("T") > -1) {
131
+ date = date.replace("T", " ");
183
132
  }
184
133
  if (date.indexOf("Z") == -1) {
185
134
  date = date + "Z";
@@ -187,19 +136,45 @@ export class LocalizationService {
187
136
  }
188
137
  let browserTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
189
138
  if (browserTimeZone) {
190
- result = utcToZonedTime(date, browserTimeZone).toString();
139
+ if (conversionFormat) {
140
+ result = utcToZonedTime(date, browserTimeZone);
141
+ result = format(result, conversionFormat, this.dateFnsLocale);
142
+ }
143
+ else {
144
+ result = utcToZonedTime(date, browserTimeZone).toString();
145
+ }
191
146
  }
192
147
  else {
193
- result = new Date(date).toString();
148
+ if (conversionFormat) {
149
+ result = format(new Date(date), conversionFormat, this.dateFnsLocale);
150
+ }
151
+ else {
152
+ result = new Date(date).toString();
153
+ }
194
154
  }
195
155
  }
196
156
  catch {
197
- if (date) {
198
- console.log("UTC to Local conversion failed for :" + date.toString());
199
- }
157
+ result = "Invalid Date";
200
158
  }
201
159
  return result;
202
160
  }
161
+ //UTC ---------------------------------------------------------------------END
162
+ //Distance ----------------------------------------------------------------BEGIN
163
+ getLocalizedDistanceInWords(endedDateStr, startedDateStr) {
164
+ let endedDate = DateConvert.toDate(endedDateStr);
165
+ let startedDate = DateConvert.toDate(startedDateStr);
166
+ if (is.dateInvalid(endedDate) || is.dateInvalid(startedDate)) {
167
+ return "Invalid Date";
168
+ }
169
+ return formatDistance(endedDate, startedDate, this.dateFnsLocale);
170
+ }
171
+ getLocalizedDistanceToNowInWords(value) {
172
+ let date = DateConvert.toDate(value);
173
+ if (is.dateInvalid(date)) {
174
+ return "Invalid Date";
175
+ }
176
+ return formatDistanceToNow(date, this.dateFnsLocale);
177
+ }
203
178
  static { this.ɵfac = function LocalizationService_Factory(t) { return new (t || LocalizationService)(i0.ɵɵinject(i1.TranslateService)); }; }
204
179
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LocalizationService, factory: LocalizationService.ɵfac, providedIn: 'root' }); }
205
180
  }
@@ -211,4 +186,4 @@ export class LocalizationService {
211
186
  }], () => [{ type: i1.TranslateService }], { langchange: [{
212
187
  type: Output
213
188
  }] }); })();
214
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0VBY0U7QUFFRixNQUFNO0FBQ04sT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRzVFLFVBQVU7QUFDVixPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDaEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxnREFBZ0Q7QUFDaEQsMERBQTBEO0FBQzFELE9BQU8sSUFBSSxNQUFNLHVCQUF1QixDQUFDO0FBRXpDLEtBQUs7QUFDTCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFLakMsTUFBTSxPQUFPLG1CQUFtQjtJQVc5QixZQUFvQixTQUEyQjtRQUEzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQVZ2QyxTQUFJLEdBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUdoQyxNQUFNO1FBQ0UsdUJBQWtCLEdBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBRS9CLFNBQVM7UUFDQyxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHM0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTyxNQUFNLENBQUMsR0FBVyxFQUFFLElBQUk7UUFDOUIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxVQUFVLEtBQUssRUFBRSxNQUFNO1lBQ3BELE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVztnQkFDdkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsQ0FBQyxDQUFDLEtBQUssQ0FDTjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFBLENBQUM7SUFFRixpQkFBaUIsQ0FBQyxTQUEyQjtRQUMzQyxNQUFNO1FBQ04sTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUVoRixPQUFPO1FBQ1AsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUV0QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFzQixFQUFFLEVBQUU7WUFDaEYsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVc7SUFDWCxxQkFBcUIsQ0FBQyxTQUFtQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFBWTtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQWdCO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxPQUFPO0lBQ1AsZ0JBQWdCO1FBQ2QsSUFBSSxTQUFjLENBQUM7UUFFbkIsUUFBUSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLEtBQUssSUFBSTtnQkFDUCxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7Z0JBQzdCLE1BQU07WUFFUjtnQkFDRSxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDakMsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFFRCxpQkFBaUI7SUFDakIsaUJBQWlCLENBQUMsR0FBVyxFQUFFLE1BQWM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ25DLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEdBQVc7UUFDMUIsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFekIsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzdDLE9BQU8sTUFBTSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzlELENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsb0JBQW9CLENBQUMsR0FBVztRQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV6QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xCLElBQUksU0FBUyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxPQUFPLE1BQU0sQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsMkJBQTJCLENBQUMsU0FBaUIsRUFBRSxXQUFtQjtRQUNoRSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDbkUsT0FBTyxjQUFjLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hGLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0NBQWdDLENBQUMsSUFBWTtRQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUVELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwrRUFBK0U7SUFDL0UscUJBQXFCLENBQUMsR0FBRztRQUN2QixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksR0FBRyxFQUFFLENBQUM7WUFDUixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0IsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO1FBRXZFLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsSUFBSSxhQUFhLEdBQUcsY0FBYyxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN6RCxPQUFPLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRSxDQUFDO2FBQ0ksQ0FBQztZQUNKLE9BQU8sTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUM7SUFFRCx5QkFBeUIsQ0FBQyxHQUFXO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDOUIsQ0FBQztZQUNELElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUMzQixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztZQUNsQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7UUFFdkUsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUNwQixJQUFJLGFBQWEsR0FBRyxjQUFjLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sTUFBTSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkUsQ0FBQzthQUNJLENBQUM7WUFDSixPQUFPLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQscUNBQXFDLENBQUMsSUFBWTtRQUNoRCxJQUFJLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJDLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1QixPQUFPLG1CQUFtQixDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQUk7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBRWxCLElBQ0EsQ0FBQztZQUNDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDaEMsQ0FBQztnQkFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsSUFBSSxHQUFHLElBQUksR0FBRyxHQUFHLENBQUM7Z0JBQ3BCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUN2RSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUNwQixNQUFNLEdBQUcsY0FBYyxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1RCxDQUFDO2lCQUNJLENBQUM7Z0JBQ0osTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFDQSxDQUFDO1lBQ0MsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBQ3ZFLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztvRkE1TlUsbUJBQW1CO3VFQUFuQixtQkFBbUIsV0FBbkIsbUJBQW1CLG1CQUZsQixNQUFNOztpRkFFUCxtQkFBbUI7Y0FIL0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CO2lEQVVXLFVBQVU7a0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG48ZmlsZT5cclxuICBQcm9qZWN0OlxyXG4gICAgQG9zb3ZpdG55L2FuYXRvbHlcclxuXHJcbiAgQXV0aG9yczpcclxuICAgIFZhZGltIE9zb3ZpdG55IHZhZGltQG9zb3ZpdG55LmNvbVxyXG4gICAgQW5hdG9seSBPc292aXRueSBhbmF0b2x5QG9zb3ZpdG55LmNvbVxyXG5cclxuICBDcmVhdGVkOlxyXG4gICAgMDUgTWF5IDIwMjBcclxuXHJcbiAgQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgT3Nvdml0bnkgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG48L2ZpbGU+XHJcbiovXHJcblxyXG4vL05vZGVcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlLCBMYW5nQ2hhbmdlRXZlbnQgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuXHJcbi8vRGF0ZSBmbnNcclxuaW1wb3J0IHsgZm9ybWF0LCBpc1ZhbGlkLCBmb3JtYXREaXN0YW5jZVRvTm93LCBmb3JtYXREaXN0YW5jZSB9IGZyb20gJ2RhdGUtZm5zJztcclxuaW1wb3J0IHsgdXRjVG9ab25lZFRpbWUgfSBmcm9tICdkYXRlLWZucy10eic7XHJcblxyXG4vLyBWYWRpbU9TOiBJRTExLWZpeC4gRE9OJ1QgY2hhbmdlIG5leHQgaW1wb3J0cyFcclxuLy8gUmVhc29uOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzY2NlxyXG5pbXBvcnQgZW5VUyBmcm9tICdkYXRlLWZucy9sb2NhbGUvZW4tVVMnO1xyXG5cclxuLy9BcHBcclxuaW1wb3J0IHsgQ29udmVydCB9IGZyb20gJy4uL2NvbnZlcnRzL2NvbnZlcnQnO1xyXG5pbXBvcnQgeyBTdWJzIH0gZnJvbSAnLi4vc3Vicyc7XHJcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgcHJpdmF0ZSBzdWJzOiBTdWJzID0gbmV3IFN1YnMoKTtcclxuICBwcml2YXRlIGRhdGVGbnNMb2NhbGU6IGFueTtcclxuXHJcbiAgLy9pMTBuXHJcbiAgcHJpdmF0ZSBzdXBwb3J0ZWRMYW5ndWFnZXM6IGFueSA9IFsnZW4nLCAncnUnLCAnZXMnXTtcclxuICBwcml2YXRlIGRlZmF1bHRMYW5ndWFnZSA9ICdlbic7XHJcblxyXG4gIC8vT3V0cHV0c1xyXG4gIEBPdXRwdXQoKSBsYW5nY2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcclxuICAgIHRoaXMuc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKHRoaXMuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcclxuICAgIHRoaXMuc2V0RGVmYXVsdExhbmd1YWdlKHRoaXMuZGVmYXVsdExhbmd1YWdlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdChzdHI6IHN0cmluZywgYXJncykge1xyXG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC97KFxcZCspfS9nLCBmdW5jdGlvbiAobWF0Y2gsIG51bWJlcikge1xyXG4gICAgICByZXR1cm4gdHlwZW9mIGFyZ3NbbnVtYmVyXSAhPSAndW5kZWZpbmVkJ1xyXG4gICAgICAgID8gYXJnc1tudW1iZXJdXHJcbiAgICAgICAgOiBtYXRjaFxyXG4gICAgICAgIDtcclxuICAgIH0pO1xyXG4gIH07XHJcblxyXG4gIGNvbmZpZ3VyZVNldHRpbmdzKHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSk6IHN0cmluZyB7XHJcbiAgICAvL2kxMG5cclxuICAgIGNvbnN0IGJyb3dzZXJMYW5nID0gdHJhbnNsYXRlLmdldEJyb3dzZXJMYW5nKCk7XHJcbiAgICBjb25zdCBsYW5nID0gYnJvd3NlckxhbmcubWF0Y2goL2VufHJ1fGVzLykgPyBicm93c2VyTGFuZyA6IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG5cclxuICAgIC8vZGF0ZXNcclxuICAgIHRoaXMuZGF0ZUZuc0xvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcblxyXG4gICAgdGhpcy5zdWJzLnNpbmsgPSB0aGlzLnRyYW5zbGF0ZS5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudDogTGFuZ0NoYW5nZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdMYW5ndWFnZSBDaGFuZ2VkJyk7XHJcbiAgICAgIHRoaXMubGFuZ2NoYW5nZS5lbWl0KGV2ZW50LmxhbmcpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGxhbmc7XHJcbiAgfVxyXG5cclxuICAvL0xhbmd1YWdlc1xyXG4gIHNldFN1cHBvcnRlZExhbmd1YWdlcyhsYW5ndWFnZXM6IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5hZGRMYW5ncyhsYW5ndWFnZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0RGVmYXVsdExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2xhdGUuc2V0RGVmYXVsdExhbmcobGFuZyk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS51c2UobGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QnJvd3Nlckxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICB9XHJcblxyXG4gIC8vRGF0ZXNcclxuICBnZXREYXRlZm5zTG9jYWxlKCk6IGFueSB7XHJcbiAgICBsZXQgZGZuTG9jYWxlOiBhbnk7XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmdldEJyb3dzZXJMYW5ndWFnZSgpKSB7XHJcbiAgICAgIGNhc2UgJ2VuJzpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICBkZm5Mb2NhbGUgPSB7IGxvY2FsZTogZW5VUyB9O1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBkZm5Mb2NhbGU7XHJcbiAgfVxyXG5cclxuICAvL2dldExvY2FsaXplZC4uLlxyXG4gIGdldExvY2FsaXplZFZhbHVlKGtleTogc3RyaW5nLCBwYXJhbXM/OiBhbnlbXSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoa2V5KTtcclxuXHJcbiAgICBpZiAoIXBhcmFtcyB8fCBwYXJhbXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5mb3JtYXQodmFsdWUsIHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gbmV3IERhdGUoa2V5KTtcclxuXHJcbiAgICBpZiAoaXNWYWxpZChkYXRlKSkge1xyXG4gICAgICBsZXQgbG9jYWxEYXRlID0gQ29udmVydC51dGNUb0xvY2FsRGF0ZShkYXRlKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGUsICdkZCBNTU0geXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREYXRlVGltZShrZXk6IHN0cmluZykge1xyXG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShrZXkpO1xyXG5cclxuICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XHJcbiAgICAgIGxldCBsb2NhbERhdGUgPSBDb252ZXJ0LnV0Y1RvTG9jYWxEYXRlVGltZShkYXRlKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGUsICdkZCBNTU0geXl5eSBISDptbScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREaXN0YW5jZUluV29yZHMoZW5kZWREYXRlOiBzdHJpbmcsIHN0YXJ0ZWREYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoZW5kZWREYXRlKSkgJiYgaXNWYWxpZChuZXcgRGF0ZShzdGFydGVkRGF0ZSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShuZXcgRGF0ZShlbmRlZERhdGUpLCBuZXcgRGF0ZShzdGFydGVkRGF0ZSksIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgfVxyXG5cclxuICBnZXRMb2NhbGl6ZWREaXN0YW5jZVRvTm93SW5Xb3JkcyhkYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKGlzVmFsaWQobmV3IERhdGUoZGF0ZSkpKSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXREaXN0YW5jZVRvTm93KG5ldyBEYXRlKGRhdGUpLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gIH1cclxuXHJcbiAgLy9VVEMgT3BlcmF0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gIGdldFVUQ1RvTG9jYWxpemVkRGF0ZShrZXkpIHtcclxuICAgIGlmICghVXRpbHMuaXNTdHJpbmcoa2V5KSkge1xyXG4gICAgICBrZXkgPSBrZXkudG9TdHJpbmcoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoa2V5KSB7XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlRcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkucmVwbGFjZShcIiBcIiwgXCJUXCIpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChrZXkuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICBrZXkgPSBrZXkgKyBcIlpcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBicm93c2VyVGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcblxyXG4gICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICBsZXQgbG9jYWxEYXRlVGltZSA9IHV0Y1RvWm9uZWRUaW1lKGtleSwgYnJvd3NlclRpbWVab25lKTtcclxuICAgICAgcmV0dXJuIGZvcm1hdChsb2NhbERhdGVUaW1lLCAnZGQuTU0ueXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZvcm1hdChuZXcgRGF0ZShrZXkpLCAnZGQuTU0ueXl5eScsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGVUaW1lKGtleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIVV0aWxzLmlzU3RyaW5nKGtleSkpIHtcclxuICAgICAga2V5ID0ga2V5LnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGtleSkge1xyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJUXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5LnJlcGxhY2UoXCIgXCIsIFwiVFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJaXCIpID09IC0xKSB7XHJcbiAgICAgICAga2V5ID0ga2V5ICsgXCJaXCI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgIGlmIChicm93c2VyVGltZVpvbmUpIHtcclxuICAgICAgbGV0IGxvY2FsRGF0ZVRpbWUgPSB1dGNUb1pvbmVkVGltZShrZXksIGJyb3dzZXJUaW1lWm9uZSk7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobG9jYWxEYXRlVGltZSwgJ2RkLk1NLnl5eXkgSEg6bW0nLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmb3JtYXQobmV3IERhdGUoa2V5KSwgJ2RkLk1NLnl5eXkgSEg6bW0nLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9odHRwczovL2RhdGUtZm5zLm9yZy92MS4zMC4xL2RvY3MvZGlzdGFuY2VJbldvcmRzXHJcbiAgZ2V0VVRDVG9Mb2NhbGl6ZWREaXN0YW5jZVRvTm93SW5Xb3JkcyhkYXRlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgZGF0ZSA9IHRoaXMuc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUpO1xyXG5cclxuICAgIGlmIChpc1ZhbGlkKG5ldyBEYXRlKGRhdGUpKSkge1xyXG4gICAgICByZXR1cm4gZm9ybWF0RGlzdGFuY2VUb05vdyhuZXcgRGF0ZShkYXRlKSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICB9XHJcblxyXG4gIHNhZmVVdGNUb1pvbmVkVGltZShkYXRlKTogc3RyaW5nIHtcclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAoZGF0ZSkge1xyXG4gICAgICAgIGlmIChkYXRlLmluZGV4T2YoXCJUXCIpID09IC0xKSB7XHJcbiAgICAgICAgICBkYXRlID0gZGF0ZS5yZXBsYWNlKFwiIFwiLCBcIlRcIik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZGF0ZS5pbmRleE9mKFwiWlwiKSA9PSAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUgKyBcIlpcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCBicm93c2VyVGltZVpvbmUgPSBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmU7XHJcbiAgICAgIGlmIChicm93c2VyVGltZVpvbmUpIHtcclxuICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY2F0Y2hcclxuICAgIHtcclxuICAgICAgaWYgKGRhdGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIlVUQyB0byBMb2NhbCBjb252ZXJzaW9uIGZhaWxlZCBmb3IgOlwiICsgZGF0ZS50b1N0cmluZygpKVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmF0b2x5L3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24vbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtCRTtBQUVGLE1BQU07QUFDTixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFHNUUsVUFBVTtBQUNWLE9BQU8sRUFBRSxNQUFNLEVBQVcsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFN0MsZ0RBQWdEO0FBQ2hELDBEQUEwRDtBQUMxRCxPQUFPLElBQUksTUFBTSx1QkFBdUIsQ0FBQztBQUl6QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE9BQU8sQ0FBQzs7O0FBSzNCLE1BQU0sT0FBTyxtQkFBbUI7SUFXOUIsWUFBb0IsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFWdkMsU0FBSSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFHaEMsTUFBTTtRQUNFLHVCQUFrQixHQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3QyxvQkFBZSxHQUFHLElBQUksQ0FBQztRQUUvQixTQUFTO1FBQ0MsZUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRzNELElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJ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QztJQUNELDhFQUE4RTtJQUU5RSxnRkFBZ0Y7SUFDaEYsMkJBQTJCLENBQUMsWUFBb0IsRUFBRSxjQUFzQjtRQUN0RSxJQUFJLFNBQVMsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pELElBQUksV0FBVyxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFckQsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUM3RCxPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUMsU0FBUyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELGdDQUFnQyxDQUFDLEtBQWE7UUFDNUMsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLGNBQWMsQ0FBQztRQUN4QixDQUFDO1FBRUQsT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7b0ZBdkxVLG1CQUFtQjt1RUFBbkIsbUJBQW1CLFdBQW5CLG1CQUFtQixtQkFGbEIsTUFBTTs7aUZBRVAsbUJBQW1CO2NBSC9CLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjtpREFVVyxVQUFVO2tCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuPGZpbGU+XHJcbiAgUHJvamVjdDpcclxuICAgIEBvc292aXRueS9hbmF0b2x5XHJcblxyXG4gIEF1dGhvcnM6XHJcbiAgICBWYWRpbSBPc292aXRueSB2YWRpbUBvc292aXRueS5jb21cclxuICAgIEFuYXRvbHkgT3Nvdml0bnkgYW5hdG9seUBvc292aXRueS5jb21cclxuXHJcbiAgQ3JlYXRlZDpcclxuICAgIDA1IE1heSAyMDIwXHJcblxyXG4gIFNvdXJjZTpcclxuICAgIGh0dHBzOi8vZGF0ZS1mbnMub3JnL3YzLjMuMS9kb2NzL2Zvcm1hdERpc3RhbmNlXHJcbiAgICBodHRwczovL2RhdGUtZm5zLm9yZy92My4zLjEvZG9jcy9mb3JtYXREaXN0YW5jZVRvTm93XHJcblxyXG4gIENvcHlyaWdodCAoYykgMjAxNi0yMDIyIE9zb3ZpdG55IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuPC9maWxlPlxyXG4qL1xyXG5cclxuLy9Ob2RlXHJcbmltcG9ydCB7IEluamVjdGFibGUsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgTGFuZ0NoYW5nZUV2ZW50IH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcblxyXG4vL2RhdGUtZm5zXHJcbmltcG9ydCB7IGZvcm1hdCwgaXNWYWxpZCwgZm9ybWF0RGlzdGFuY2VUb05vdywgZm9ybWF0RGlzdGFuY2UgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IHV0Y1RvWm9uZWRUaW1lIH0gZnJvbSAnZGF0ZS1mbnMtdHonO1xyXG5cclxuLy8gVmFkaW1PUzogSUUxMS1maXguIERPTidUIGNoYW5nZSBuZXh0IGltcG9ydHMhXHJcbi8vIFJlYXNvbjogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2lzc3Vlcy82NjZcclxuaW1wb3J0IGVuVVMgZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VuLVVTJztcclxuXHJcbi8vQXBwXHJcbmltcG9ydCB7IENvbnZlcnQgfSBmcm9tICcuLi9jb252ZXJ0cy9jb252ZXJ0JztcclxuaW1wb3J0IHsgU3VicyB9IGZyb20gJy4uL3N1YnMnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uL3V0aWxzJztcclxuaW1wb3J0IHsgRGF0ZUZvcm1hdHMgfSBmcm9tICcuLi9jb25zdHMvc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBEYXRlQ29udmVydCB9IGZyb20gJy4uL2NvbnZlcnRzL2RhdGVDb252ZXJ0JztcclxuaW1wb3J0IHsgaXMgfSBmcm9tICcuLi9pcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBwcml2YXRlIHN1YnM6IFN1YnMgPSBuZXcgU3VicygpO1xyXG4gIHByaXZhdGUgZGF0ZUZuc0xvY2FsZTogYW55O1xyXG5cclxuICAvL2kxMG5cclxuICBwcml2YXRlIHN1cHBvcnRlZExhbmd1YWdlczogYW55ID0gWydlbicsICdydScsICdlcyddO1xyXG4gIHByaXZhdGUgZGVmYXVsdExhbmd1YWdlID0gJ2VuJztcclxuXHJcbiAgLy9PdXRwdXRzXHJcbiAgQE91dHB1dCgpIGxhbmdjaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xyXG4gICAgdGhpcy5zZXRTdXBwb3J0ZWRMYW5ndWFnZXModGhpcy5zdXBwb3J0ZWRMYW5ndWFnZXMpO1xyXG4gICAgdGhpcy5zZXREZWZhdWx0TGFuZ3VhZ2UodGhpcy5kZWZhdWx0TGFuZ3VhZ2UpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLnN1YnMudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZm9ybWF0KHN0cjogc3RyaW5nLCBhcmdzKSB7XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL3soXFxkKyl9L2csIGZ1bmN0aW9uIChtYXRjaCwgbnVtYmVyKSB7XHJcbiAgICAgIHJldHVybiB0eXBlb2YgYXJnc1tudW1iZXJdICE9ICd1bmRlZmluZWQnXHJcbiAgICAgICAgPyBhcmdzW251bWJlcl1cclxuICAgICAgICA6IG1hdGNoXHJcbiAgICAgICAgO1xyXG4gICAgfSk7XHJcbiAgfTtcclxuXHJcbiAgY29uZmlndXJlU2V0dGluZ3ModHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKTogc3RyaW5nIHtcclxuICAgIC8vaTEwblxyXG4gICAgY29uc3QgYnJvd3NlckxhbmcgPSB0cmFuc2xhdGUuZ2V0QnJvd3NlckxhbmcoKTtcclxuICAgIGNvbnN0IGxhbmcgPSBicm93c2VyTGFuZy5tYXRjaCgvZW58cnV8ZXMvKSA/IGJyb3dzZXJMYW5nIDogdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XHJcblxyXG4gICAgLy9kYXRlc1xyXG4gICAgdGhpcy5kYXRlRm5zTG9jYWxlID0geyBsb2NhbGU6IGVuVVMgfTtcclxuXHJcbiAgICB0aGlzLnN1YnMuc2luayA9IHRoaXMudHJhbnNsYXRlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50OiBMYW5nQ2hhbmdlRXZlbnQpID0+IHtcclxuICAgICAgY29uc29sZS5sb2coJ0xhbmd1YWdlIENoYW5nZWQnKTtcclxuICAgICAgdGhpcy5sYW5nY2hhbmdlLmVtaXQoZXZlbnQubGFuZyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbGFuZztcclxuICB9XHJcblxyXG4gIC8vTGFuZ3VhZ2VzXHJcbiAgc2V0U3VwcG9ydGVkTGFuZ3VhZ2VzKGxhbmd1YWdlczogc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLmFkZExhbmdzKGxhbmd1YWdlcyk7XHJcbiAgfVxyXG5cclxuICBzZXREZWZhdWx0TGFuZ3VhZ2UobGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zbGF0ZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcclxuICB9XHJcblxyXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5ndWFnZSk7XHJcbiAgfVxyXG5cclxuICBnZXRCcm93c2VyTGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZS5nZXRCcm93c2VyTGFuZygpO1xyXG4gIH1cclxuXHJcbiAgLy9EYXRlc1xyXG4gIGdldERhdGVmbnNMb2NhbGUoKTogYW55IHtcclxuICAgIGxldCBkZm5Mb2NhbGU6IGFueTtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZ2V0QnJvd3Nlckxhbmd1YWdlKCkpIHtcclxuICAgICAgY2FzZSAnZW4nOlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGRmbkxvY2FsZSA9IHsgbG9jYWxlOiBlblVTIH07XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGRmbkxvY2FsZTtcclxuICB9XHJcblxyXG4gIC8vZ2V0TG9jYWxpemVkXHJcbiAgZ2V0TG9jYWxpemVkVmFsdWUoa2V5OiBzdHJpbmcsIHBhcmFtcz86IGFueVtdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudChrZXkpO1xyXG5cclxuICAgIGlmICghcGFyYW1zIHx8IHBhcmFtcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmZvcm1hdCh2YWx1ZSwgcGFyYW1zKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGUodmFsdWUpOiBzdHJpbmcge1xyXG4gICAgbGV0IGRhdGUgPSBEYXRlQ29udmVydC50b0RhdGUodmFsdWUpO1xyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGRhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgRGF0ZUZvcm1hdHMuZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcblxyXG4gIGdldExvY2FsaXplZERhdGVUaW1lKHZhbHVlKTogc3RyaW5nIHtcclxuICAgIGxldCBkYXRlID0gRGF0ZUNvbnZlcnQudG9EYXRlKHZhbHVlKTtcclxuICAgIGlmIChpcy5kYXRlSW52YWxpZChkYXRlKSkge1xyXG4gICAgICByZXR1cm4gXCJJbnZhbGlkIERhdGVcIjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZm9ybWF0KGRhdGUsIERhdGVGb3JtYXRzLmRhdGVUaW1lLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tQkVHSU5cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGUodmFsdWUpIHtcclxuICAgIHJldHVybiB0aGlzLnNhZmVVdGNUb1pvbmVkVGltZSh2YWx1ZSwgRGF0ZUZvcm1hdHMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXRVVENUb0xvY2FsaXplZERhdGVUaW1lKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYWZlVXRjVG9ab25lZFRpbWUodmFsdWUsIERhdGVGb3JtYXRzLmRhdGVUaW1lKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2FmZVV0Y1RvWm9uZWRUaW1lKGRhdGUsIGNvbnZlcnNpb25Gb3JtYXQgPSBudWxsKTogc3RyaW5nIHtcclxuICAgIGlmICghZGF0ZSl7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXN1bHQgPSBkYXRlO1xyXG5cclxuICAgIHRyeVxyXG4gICAge1xyXG4gICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlRcIikgPiAtMSkge1xyXG4gICAgICAgICAgZGF0ZSA9IGRhdGUucmVwbGFjZShcIlRcIiwgXCIgXCIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGRhdGUuaW5kZXhPZihcIlpcIikgPT0gLTEpIHtcclxuICAgICAgICAgIGRhdGUgPSBkYXRlICsgXCJaXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgYnJvd3NlclRpbWVab25lID0gSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29sdmVkT3B0aW9ucygpLnRpbWVab25lO1xyXG5cclxuICAgICAgaWYgKGJyb3dzZXJUaW1lWm9uZSkge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpO1xyXG4gICAgICAgICAgcmVzdWx0ID0gZm9ybWF0KHJlc3VsdCwgY29udmVyc2lvbkZvcm1hdCwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXN1bHQgPSB1dGNUb1pvbmVkVGltZShkYXRlLCBicm93c2VyVGltZVpvbmUpLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChjb252ZXJzaW9uRm9ybWF0KSB7XHJcbiAgICAgICAgICByZXN1bHQgPSBmb3JtYXQobmV3IERhdGUoZGF0ZSksIGNvbnZlcnNpb25Gb3JtYXQsIHRoaXMuZGF0ZUZuc0xvY2FsZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgcmVzdWx0ID0gbmV3IERhdGUoZGF0ZSkudG9TdHJpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgIHJlc3VsdCA9IFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgLy9VVEMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcblxyXG4gIC8vRGlzdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJFR0lOXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VJbldvcmRzKGVuZGVkRGF0ZVN0cjogc3RyaW5nLCBzdGFydGVkRGF0ZVN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGxldCBlbmRlZERhdGUgPSBEYXRlQ29udmVydC50b0RhdGUoZW5kZWREYXRlU3RyKTtcclxuICAgIGxldCBzdGFydGVkRGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZShzdGFydGVkRGF0ZVN0cik7XHJcblxyXG4gICAgaWYgKGlzLmRhdGVJbnZhbGlkKGVuZGVkRGF0ZSkgfHwgaXMuZGF0ZUludmFsaWQoc3RhcnRlZERhdGUpKSB7XHJcbiAgICAgIHJldHVybiBcIkludmFsaWQgRGF0ZVwiO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmb3JtYXREaXN0YW5jZShlbmRlZERhdGUsIHN0YXJ0ZWREYXRlLCB0aGlzLmRhdGVGbnNMb2NhbGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG9jYWxpemVkRGlzdGFuY2VUb05vd0luV29yZHModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgZGF0ZSA9IERhdGVDb252ZXJ0LnRvRGF0ZSh2YWx1ZSk7XHJcbiAgICBpZiAoaXMuZGF0ZUludmFsaWQoZGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFwiSW52YWxpZCBEYXRlXCI7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZvcm1hdERpc3RhbmNlVG9Ob3coZGF0ZSwgdGhpcy5kYXRlRm5zTG9jYWxlKTtcclxuICB9XHJcbiAgLy9EaXN0YW5jZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRU5EXHJcbn1cclxuXHJcbiJdfQ==