@acorex/core 6.0.2 → 6.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,24 +1,24 @@
1
- # Core
2
-
3
- This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.0.
4
-
5
- ## Code scaffolding
6
-
7
- Run `ng generate component component-name --project core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project core`.
8
- > Note: Don't forget to add `--project core` or else it will be added to the default project in your `angular.json` file.
9
-
10
- ## Build
11
-
12
- Run `ng build core` to build the project. The build artifacts will be stored in the `dist/` directory.
13
-
14
- ## Publishing
15
-
16
- After building your library with `ng build core`, go to the dist folder `cd dist/core` and run `npm publish`.
17
-
18
- ## Running unit tests
19
-
20
- Run `ng test core` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
-
22
- ## Further help
23
-
24
- To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
1
+ # Core
2
+
3
+ This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.0.0.
4
+
5
+ ## Code scaffolding
6
+
7
+ Run `ng generate component component-name --project core` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project core`.
8
+ > Note: Don't forget to add `--project core` or else it will be added to the default project in your `angular.json` file.
9
+
10
+ ## Build
11
+
12
+ Run `ng build core` to build the project. The build artifacts will be stored in the `dist/` directory.
13
+
14
+ ## Publishing
15
+
16
+ After building your library with `ng build core`, go to the dist folder `cd dist/core` and run `npm publish`.
17
+
18
+ ## Running unit tests
19
+
20
+ Run `ng test core` to execute the unit tests via [Karma](https://karma-runner.github.io).
21
+
22
+ ## Further help
23
+
24
+ To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
@@ -278,11 +278,12 @@ export class AXDateTimeRange {
278
278
  return result;
279
279
  }
280
280
  enumurate(unit = 'day', amount = 1) {
281
- // TODO: setptemper savingtime issue
282
281
  const result = [];
283
282
  let item = this._startTime.clone();
284
283
  while (item.compare(this._endTime, unit) < 1) {
285
- result.push(item);
284
+ if (!result.some(c => c.equal(item, unit))) {
285
+ result.push(item);
286
+ }
286
287
  item = item.add(unit, amount);
287
288
  }
288
289
  return result;
@@ -292,4 +293,4 @@ export class AXDateTimeRange {
292
293
  return true;
293
294
  }
294
295
  }
295
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9kYXRlVGltZS9zcmMvZGF0ZXRpbWUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBNkQvQyxXQUFXO0FBQ1gsTUFBTSxPQUFPLFVBQVU7SUEyRHJCLFlBQ0UsUUFBdUIsSUFBSSxJQUFJLEVBQUUsRUFDakMsV0FBZ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQWtGM0QsZ0JBQVcsR0FBRztZQUNwQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDMUMsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDdkQsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUMxQyxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEYsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvRCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JELEVBQUU7WUFDRixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJ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Q0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELEVBQUU7UUFDRixNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxlQUFlO1FBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBaUIsS0FBSyxFQUFFLFNBQWlCLENBQUM7UUFDbEQsb0NBQW9DO1FBQ3BDLE1BQU0sTUFBTSxHQUFpQixFQUFFLENBQUM7UUFDaEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDOUI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCLEVBQUUsT0FBaUIsS0FBSztRQUNoRCxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBWUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbmZpZyc7XHJcblxyXG5leHBvcnQgdHlwZSBUaW1lVW5pdCA9XHJcbiAgfCAnbXMnXHJcbiAgfCAnc2Vjb25kJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdob3VyJ1xyXG4gIHwgJ2RheSdcclxuICB8ICdtb250aCdcclxuICB8ICd5ZWFyJ1xyXG4gIHwgJ3dlZWsnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWERhdGVWYWx1ZSB7XHJcbiAgeWVhcjogbnVtYmVyLFxyXG4gIG1vbnRoOiBudW1iZXIsXHJcbiAgZGF0ZTogbnVtYmVyLFxyXG4gIGhvdXJzPzogbnVtYmVyLFxyXG4gIG1pbnV0ZXM/OiBudW1iZXIsXHJcbiAgc2Vjb25kcz86IG51bWJlcixcclxuICBtcz86IG51bWJlclxyXG4gIGNhbGVuZGFyOiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXIge1xyXG4gIG1vbnRoTmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBtb250aFNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBkYXlOYW1lczogc3RyaW5nW107XHJcblxyXG4gIGRheVNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBuYW1lKCk6IHN0cmluZztcclxuXHJcbiAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZTtcclxuXHJcbiAgc2V0KGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZTtcclxuXHJcbiAgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWU7XHJcblxyXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcclxuXHJcbiAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWU7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lIHtcclxuICBzdGF0aWMgY29udmVydChcclxuICAgIHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSB8IHN0cmluZyxcclxuICAgIGNhbGVuZGFyOiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmNhbGVuZGFyJylcclxuICApOiBBWERhdGVUaW1lIHtcclxuICAgIGxldCBkYXRlOiBBWERhdGVUaW1lO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIHN0cmluZywgY2FsZW5kYXIpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIERhdGUsIGNhbGVuZGFyKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgQVhEYXRlVGltZSh2YWx1ZS5kYXRlLCBjYWxlbmRhcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZSE7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbSh2YWx1ZTogQVhEYXRlVmFsdWUgPSB7XHJcbiAgICBjYWxlbmRhcjogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5jYWxlbmRhcicpLFxyXG4gICAgeWVhcjogMSxcclxuICAgIG1vbnRoOiAxLFxyXG4gICAgZGF0ZTogMSxcclxuICAgIGhvdXJzOiAwLFxyXG4gICAgbWludXRlczogMCxcclxuICAgIHNlY29uZHM6IDAsXHJcbiAgICBtczogMFxyXG4gIH0pOiBBWERhdGVUaW1lIHtcclxuICAgIC8vIGxldCBkYXRlOiBBWERhdGVUaW1lID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdmFsdWUuY2FsZW5kYXIpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ3llYXInLCB2YWx1ZS55ZWFyKTtcclxuICAgIC8vIGRhdGUuc2V0KCdtb250aCcsIHZhbHVlLm1vbnRoKTtcclxuICAgIC8vIGRhdGUuc2V0KCdkYXknLCB2YWx1ZS5kYXRlKTtcclxuICAgIC8vIGRhdGUuc2V0KCdob3VyJywgdmFsdWUuaG91cnMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ21pbnV0ZScsIHZhbHVlLm1pbnV0ZXMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ3NlY29uZCcsIHZhbHVlLnNlY29uZHMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ21zJywgdmFsdWUubXMpO1xyXG5cclxuICAgIHJldHVybiBBWERhdGVUaW1lLnJlc29sdmVDYWxlbmRhcih2YWx1ZS5jYWxlbmRhcikuY3JlYXRlKHZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgcmVzb2x2ZUNhbGVuZGFyKGNhbGVuZGFyOiBzdHJpbmcgfCBBWENhbGVuZGFyKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGNhbGVuZGFyID09ICdzdHJpbmcnXHJcbiAgICAgID8gQVhDb25maWcuZ2V0KGBkYXRlVGltZS5jYWxlbmRhcnMuJHtjYWxlbmRhcn1gKVxyXG4gICAgICA6IGNhbGVuZGFyO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XHJcblxyXG4gIGdldCBkYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcclxuICBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgdmFsdWU6IERhdGUgfCBzdHJpbmcgPSBuZXcgRGF0ZSgpLFxyXG4gICAgY2FsZW5kYXI6IHN0cmluZyB8IEFYQ2FsZW5kYXIgPSBBWENvbmZpZy5nZXQoYGRhdGVUaW1lLmNhbGVuZGFyYClcclxuICApIHtcclxuICAgIHRoaXMuX2NhbGVuZGFyID0gQVhEYXRlVGltZS5yZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXIpO1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLl9kYXRlID0gdmFsdWUgYXMgRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vVE9ETzogcGFyc2UgamFsYWxpXHJcbiAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheU9mTW9udGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF5T2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZZZWFyKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaG91cigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0SG91cnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldE1pbnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBzZWNvbmQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vbnRoT2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCB3ZWVrT2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla09mWWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vbnRoKCk6IEFYQ2FsZW5kYXJNb250aCB7XHJcbiAgICByZXR1cm4gbmV3IEFYQ2FsZW5kYXJNb250aCh0aGlzKTtcclxuICB9XHJcblxyXG4gIGFkZCh1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5hZGQodGhpcy5kYXRlLCB1bml0LCBhbW91bnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0KHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcy5kYXRlLCB1bml0LCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBkdXJhdGlvbihcclxuICAgIGVuZDogRGF0ZSB8IEFYRGF0ZVRpbWUsXHJcbiAgICB1bml0OiBUaW1lVW5pdCA9ICdkYXknXHJcbiAgKTogQVhUaW1lU3BhbiB7XHJcbiAgICBjb25zdCByYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIEFYRGF0ZVRpbWUuY29udmVydChlbmQsIHRoaXMuY2FsZW5kYXIubmFtZSgpKVxyXG4gICAgKTtcclxuICAgIHJldHVybiByYW5nZS5kdXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc3RhcnRPZih0aGlzLmRhdGUsIHVuaXQpO1xyXG4gIH1cclxuXHJcbiAgZW5kT2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVuZE9mKHRoaXMuZGF0ZSwgdW5pdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtYXRLZXlzID0ge1xyXG4gICAgc3M6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCksIDIpLFxyXG4gICAgczogKCkgPT4gdGhpcy5kYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpLFxyXG4gICAgLy9cclxuICAgIGRkOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKSwgMiksXHJcbiAgICBkOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxyXG4gICAgLy9cclxuICAgIG1tOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0TWludXRlcygpLCAyKSxcclxuICAgIG06ICgpID0+IHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSxcclxuICAgIC8vXHJcbiAgICBNTU1NOiAoKSA9PiB0aGlzLmNhbGVuZGFyLm1vbnRoTmFtZXNbdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICBNTU06ICgpID0+IHRoaXMuY2FsZW5kYXIubW9udGhTaG9ydE5hbWVzW3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDFdLFxyXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXHJcbiAgICAvL1xyXG4gICAgRERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICBEREQ6ICgpID0+IHRoaXMuY2FsZW5kYXIuZGF5U2hvcnROYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICAvL1xyXG4gICAgeXl5eTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSxcclxuICAgIFlZWVk6ICgpID0+IHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCksXHJcbiAgICB5eTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXHJcbiAgICBZWTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXHJcbiAgICAvL1xyXG4gICAgSEg6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRIb3VycygpLCAyKSxcclxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXHJcbiAgICAvL1xyXG4gICAgaGg6ICgpID0+IHRoaXMucGFkKCh0aGlzLmRhdGUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKSwgMiksXHJcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcclxuICAgIC8vXHJcbiAgICBBOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMikgPyAnYW0nIDogJ3BtJyxcclxuICAgIGE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyKSA/ICdhbScgOiAncG0nLFxyXG4gIH07XHJcblxyXG4gIGZvcm1hdChcclxuICAgIGZvcm1hdDogc3RyaW5nID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS5zaG9ydERhdGVGb3JtYXQnKVxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoXy5vcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCBjID0+IGMubGVuZ3RoLCBbJ2Rlc2MnXSkuam9pbihcInxcIiksIFwiZ2lcIik7XHJcbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UocmUsIChtYXRjaGVkKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtYXRLZXlzW21hdGNoZWRdKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFkKG4sIHdpZHRoLCB6ID0gJzAnKSB7XHJcbiAgICBuID0gbiArICcnO1xyXG4gICAgcmV0dXJuIG4ubGVuZ3RoID49IHdpZHRoID8gbiA6IG5ldyBBcnJheSh3aWR0aCAtIG4ubGVuZ3RoICsgMSkuam9pbih6KSArIG47XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZyhmb3JtYXQ6IHN0cmluZyA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuc2hvcnREYXRlRm9ybWF0JykpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBlcXVhbCh2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xyXG4gICAgY29uc3QgdmFsID0gQVhEYXRlVGltZS5jb252ZXJ0KHZhbHVlLCB0aGlzLmNhbGVuZGFyLm5hbWUoKSk7XHJcbiAgICBjb25zdCBmdW5jID0gKHYxOiBudW1iZXIsIHYyOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKHYxID09IHYyKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSBpZiAodjEgPiB2Mikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHAgPSAwO1xyXG4gICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2RheScpO1xyXG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcclxuICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2hvdXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnbWludXRlJyk7XHJcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLmRhdGUuZ2V0VGltZSgpLCB2YWwuZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvbnZlcnQoY2FsZW5kYXI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFYRGF0ZVRpbWUuY29udmVydCh0aGlzLCBjYWxlbmRhcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vbnRoIHtcclxuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xyXG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcclxuICAgIHRoaXMuX3JhbmdlID0gdjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XHJcbiAgICB0aGlzLnJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5zdGFydE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxyXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XHJcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcclxuICBzZWNvbmRzOiBudW1iZXI7XHJcbiAgbWludXRlczogbnVtYmVyO1xyXG4gIGhvdXJzOiBudW1iZXI7XHJcbiAgZGF5czogbnVtYmVyO1xyXG4gIHdlZWtzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuIHtcclxuICBtaWxpc2Vjb25kczogbnVtYmVyO1xyXG4gIHNlY29uZHM6IG51bWJlcjtcclxuICBtaW51dGVzOiBudW1iZXI7XHJcbiAgaG91cnM6IG51bWJlcjtcclxuICBkYXlzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcclxuICBwcml2YXRlIF9zdGFydFRpbWU6IEFYRGF0ZVRpbWU7XHJcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcclxuXHJcbiAgcHVibGljIGdldCBzdGFydFRpbWUoKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihzdGFydFRpbWU6IEFYRGF0ZVRpbWUsIGVuZFRpbWU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTtcclxuICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xyXG4gIH1cclxuXHJcbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYVGltZVNwYW4gPSB7XHJcbiAgICAgIG1pbGlzZWNvbmRzOiAwLFxyXG4gICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICBtaW51dGVzOiAwLFxyXG4gICAgICBob3VyczogMCxcclxuICAgICAgZGF5czogMCxcclxuICAgICAgbW9udGhzOiAwLFxyXG4gICAgICB5ZWFyczogMCxcclxuICAgICAgdG90YWw6IHtcclxuICAgICAgICBtaWxpc2Vjb25kczogMCxcclxuICAgICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICAgIG1pbnV0ZXM6IDAsXHJcbiAgICAgICAgaG91cnM6IDAsXHJcbiAgICAgICAgZGF5czogMCxcclxuICAgICAgICB3ZWVrczogMCxcclxuICAgICAgICBtb250aHM6IDAsXHJcbiAgICAgICAgeWVhcnM6IDAsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uZV9zZWNvbmQgPSAxMDAwO1xyXG4gICAgY29uc3Qgb25lX21pbiA9IG9uZV9zZWNvbmQgKiA2MDtcclxuICAgIGNvbnN0IG9uZV9ob3VyID0gb25lX21pbiAqIDYwO1xyXG4gICAgY29uc3Qgb25lX2RheSA9IG9uZV9ob3VyICogMjQ7XHJcbiAgICBjb25zdCBvbmVfd2VlayA9IG9uZV9kYXkgKiA3O1xyXG4gICAgY29uc3Qgb25lX3llYXIgPSAzNjUuMjUgKiBvbmVfZGF5O1xyXG4gICAgY29uc3Qgb25lX21vbnRoID0gb25lX3llYXIgLyAxMjtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuX3N0YXJ0VGltZS5kYXRlLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGVuZFRpbWUgPSB0aGlzLl9lbmRUaW1lLmRhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGVuZFRpbWUgLSBzdGFydFRpbWUpO1xyXG4gICAgLy9cclxuICAgIHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyA9IGRpZmY7XHJcbiAgICByZXN1bHQudG90YWwuc2Vjb25kcyA9IE51bWJlcigoZGlmZiAvIG9uZV9zZWNvbmQpLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLm1pbnV0ZXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbWluKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC5ob3VycyA9IE51bWJlcigoZGlmZiAvIG9uZV9ob3VyKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC5kYXlzID0gTnVtYmVyKChkaWZmIC8gb25lX2RheSkudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBOdW1iZXIoKGRpZmYgLyBvbmVfd2VlaykudG9GaXhlZCgyKSk7XHJcbiAgICAvL1xyXG4gICAgLy8gbGV0IG1vbnRocyA9ICh0aGlzLmVuZFRpbWUueWVhciAtIHRoaXMuc3RhcnRUaW1lLnllYXIpICogMTI7XHJcbiAgICAvLyBtb250aHMgKz0gdGhpcy5lbmRUaW1lLm1vbnRoT2ZZZWFyIC0gdGhpcy5zdGFydFRpbWUubW9udGhPZlllYXIgKyAxO1xyXG4gICAgLy8gaWYgKHRoaXMuZW5kVGltZS5kYXlPZlllYXIgPCB0aGlzLnN0YXJ0VGltZS5kYXlPZlllYXIpIHtcclxuICAgIC8vICAgICBtb250aHMtLTtcclxuICAgIC8vIH1cclxuICAgIC8vIHJlc3VsdC50b3RhbC5tb250aHMgPSBNYXRoLmFicyhtb250aHMpO1xyXG4gICAgLy8gVE9ETzogcmV2aWV3XHJcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gTnVtYmVyKChkaWZmIC8gb25lX21vbnRoKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC55ZWFycyA9IE51bWJlcigoZGlmZiAvIG9uZV95ZWFyKS50b0ZpeGVkKDIpKTtcclxuICAgIC8vXHJcbiAgICByZXN1bHQubWlsaXNlY29uZHMgPSByZXN1bHQudG90YWwubWlsaXNlY29uZHMgJSAxMDAwO1xyXG4gICAgcmVzdWx0LnNlY29uZHMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5zZWNvbmRzICUgNjApLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0Lm1pbnV0ZXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5taW51dGVzICUgNjApLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0LmhvdXJzID0gTnVtYmVyKChyZXN1bHQudG90YWwuaG91cnMgJSAyNCkudG9GaXhlZCgwKSk7XHJcbiAgICAvLyBUT0RPOiByZXZpZXdcclxuICAgIHJlc3VsdC5kYXlzID0gTnVtYmVyKChyZXN1bHQudG90YWwuZGF5cyAlIDMwLjQpLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0Lm1vbnRocyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1vbnRocyAlIDEyKS50b0ZpeGVkKDApKTtcclxuICAgIHJlc3VsdC55ZWFycyA9IE51bWJlcihyZXN1bHQudG90YWwueWVhcnMudG9GaXhlZCgwKSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZW51bXVyYXRlKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIGFtb3VudDogbnVtYmVyID0gMSk6IEFYRGF0ZVRpbWVbXSB7XHJcbiAgICAvLyBUT0RPOiBzZXRwdGVtcGVyIHNhdmluZ3RpbWUgaXNzdWVcclxuICAgIGNvbnN0IHJlc3VsdDogQVhEYXRlVGltZVtdID0gW107XHJcbiAgICBsZXQgaXRlbSA9IHRoaXMuX3N0YXJ0VGltZS5jbG9uZSgpO1xyXG4gICAgd2hpbGUgKGl0ZW0uY29tcGFyZSh0aGlzLl9lbmRUaW1lLCB1bml0KSA8IDEpIHtcclxuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XHJcbiAgICAgIGl0ZW0gPSBpdGVtLmFkZCh1bml0LCBhbW91bnQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaW5jbHVkZXModmFsdWU6IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBib29sZWFuIHtcclxuICAgIC8vIFRPRE86ID8/XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIGdldFZpZXdDb21wYWlyZSh2aWV3KSB7XHJcbiAgLy8gICAgIHN3aXRjaCAodmlldykge1xyXG4gIC8vICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNRCc7XHJcbiAgLy8gICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgLy8gICAgICAgICAgICAgcmV0dXJuICdZTSc7XHJcbiAgLy8gICAgICAgICBjYXNlICd5ZWFyJzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1knO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXRpbWUuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29yZS9kYXRlVGltZS9zcmMvZGF0ZXRpbWUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBNkQvQyxXQUFXO0FBQ1gsTUFBTSxPQUFPLFVBQVU7SUEyRHJCLFlBQ0UsUUFBdUIsSUFBSSxJQUFJLEVBQUUsRUFDakMsV0FBZ0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQWtGM0QsZ0JBQVcsR0FBRztZQUNwQixFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDMUMsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDdkQsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUMxQyxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEYsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzRCxFQUFFO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDMUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUUsRUFBRTtZQUNGLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3BELEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztZQUMvRCxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsRUFBRTtZQUNGLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRTtZQUN4QyxFQUFFO1lBQ0YsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1lBQ3JELEVBQUU7WUFDRixDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDbEQsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ25ELENBQUM7UUE5R0EsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksS0FBSyxZQUFZLElBQUksRUFBRTtZQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQWEsQ0FBQztTQUM1QjthQUFNO1lBQ0wsb0JBQW9CO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7SUFDSCxDQUFDO0lBckVELE1BQU0sQ0FBQyxPQUFPLENBQ1osS0FBaUMsRUFDakMsV0FBbUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQztRQUVwRCxJQUFJLElBQWdCLENBQUM7UUFDckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtZQUN4RCxJQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsS0FBZSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ2xEO2FBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO1lBQ2hDLElBQUksR0FBRyxJQUFJLFVBQVUsQ0FBQyxLQUFhLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDdEMsSUFBSSxHQUFHLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQXFCO1FBQy9CLFFBQVEsRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDO1FBQzNDLElBQUksRUFBRSxDQUFDO1FBQ1AsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLEVBQUUsQ0FBQztRQUNQLEtBQUssRUFBRSxDQUFDO1FBQ1IsT0FBTyxFQUFFLENBQUM7UUFDVixPQUFPLEVBQUUsQ0FBQztRQUNWLEVBQUUsRUFBRSxDQUFDO0tBQ047UUFDQyxxRUFBcUU7UUFDckUsZ0NBQWdDO1FBQ2hDLGtDQUFrQztRQUNsQywrQkFBK0I7UUFDL0IsaUNBQWlDO1FBQ2pDLHFDQUFxQztRQUNyQyxxQ0FBcUM7UUFDckMsNEJBQTRCO1FBRTVCLE9BQU8sVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFHRCxNQUFNLENBQUMsZUFBZSxDQUFDLFFBQTZCO1FBQ2xELE9BQU8sT0FBTyxRQUFRLElBQUksUUFBUTtZQUNoQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsUUFBUSxFQUFFLENBQUM7WUFDaEQsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNmLENBQUM7SUFLRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUdELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBaUJELEtBQUs7UUFDSCxPQUFPLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBYyxFQUFFLE1BQWM7UUFDaEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsR0FBRyxDQUFDLE9BQWlCLEtBQUssRUFBRSxLQUFhO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFFBQVEsQ0FDTixHQUFzQixFQUN0QixPQUFpQixLQUFLO1FBRXRCLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBZSxDQUMvQixJQUFJLEVBQ0osVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5QyxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFpQixLQUFLO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQWlCLEtBQUs7UUFDMUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFrQ0QsTUFBTSxDQUNKLFNBQWlCLFFBQVEsQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUM7UUFFekQsTUFBTSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN6RyxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDcEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLEdBQUc7UUFDM0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUVELFFBQVEsQ0FBQyxTQUFpQixRQUFRLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQXdCLEVBQUUsT0FBaUIsS0FBSztRQUNwRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQXdCLEVBQUUsT0FBaUIsS0FBSztRQUN0RCxNQUFNLEdBQUcsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxFQUFVLEVBQUUsRUFBVSxFQUFFLEVBQUU7WUFDdEMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUNaLE9BQU8sQ0FBQyxDQUFDO2FBQ1Y7aUJBQU0sSUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNsQixPQUFPLENBQUMsQ0FBQzthQUNWO2lCQUFNO2dCQUNMLE9BQU8sQ0FBQyxDQUFDLENBQUM7YUFDWDtRQUNILENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25DLEtBQUssTUFBTTtnQkFDVCxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUQsS0FBSyxPQUFPO2dCQUNWLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5RCxLQUFLLEtBQUs7Z0JBQ1IsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFELEtBQUssTUFBTTtnQkFDVCxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEQsS0FBSyxRQUFRO2dCQUNYLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztnQkFDOUIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwRCxLQUFLLFFBQVE7Z0JBQ1gsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BEO2dCQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3hEO0lBRUgsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxlQUFlO0lBUzFCLFlBQVksSUFBZ0I7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBZSxDQUM5QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQ3pELElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFkRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQVcsS0FBSyxDQUFDLENBQWtCO1FBQ2pDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7Q0FhRjtBQXdCRCxNQUFNLE9BQU8sZUFBZTtJQVkxQixZQUFZLFNBQXFCLEVBQUUsT0FBbUI7UUFDcEQsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDNUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQVhELElBQVcsU0FBUztRQUNsQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQU9ELFFBQVE7UUFDTixNQUFNLE1BQU0sR0FBZTtZQUN6QixXQUFXLEVBQUUsQ0FBQztZQUNkLE9BQU8sRUFBRSxDQUFDO1lBQ1YsT0FBTyxFQUFFLENBQUM7WUFDVixLQUFLLEVBQUUsQ0FBQztZQUNSLElBQUksRUFBRSxDQUFDO1lBQ1AsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUUsQ0FBQztZQUNSLEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsQ0FBQztnQkFDZCxPQUFPLEVBQUUsQ0FBQztnQkFDVixPQUFPLEVBQUUsQ0FBQztnQkFDVixLQUFLLEVBQUUsQ0FBQztnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxLQUFLLEVBQUUsQ0FBQztnQkFDUixNQUFNLEVBQUUsQ0FBQztnQkFDVCxLQUFLLEVBQUUsQ0FBQzthQUNUO1NBQ0YsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBRyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDbEMsTUFBTSxTQUFTLEdBQUcsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzQyxFQUFFO1FBQ0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsRUFBRTtRQUNGLCtEQUErRDtRQUMvRCx1RUFBdUU7UUFDdkUsMkRBQTJEO1FBQzNELGdCQUFnQjtRQUNoQixJQUFJO1FBQ0osMENBQTBDO1FBQzFDLGVBQWU7UUFDZixNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFELEVBQUU7UUFDRixNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyRCxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxlQUFlO1FBQ2YsTUFBTSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlELE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxTQUFTLENBQUMsT0FBaUIsS0FBSyxFQUFFLFNBQWlCLENBQUM7UUFDbEQsTUFBTSxNQUFNLEdBQWlCLEVBQUUsQ0FBQztRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkI7WUFDRCxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUE7U0FDOUI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWlCLEVBQUUsT0FBaUIsS0FBSztRQUNoRCxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBWUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IEFYQ29uZmlnIH0gZnJvbSAnQGFjb3JleC9jb3JlL2NvbmZpZyc7XHJcblxyXG5leHBvcnQgdHlwZSBUaW1lVW5pdCA9XHJcbiAgfCAnbXMnXHJcbiAgfCAnc2Vjb25kJ1xyXG4gIHwgJ21pbnV0ZSdcclxuICB8ICdob3VyJ1xyXG4gIHwgJ2RheSdcclxuICB8ICdtb250aCdcclxuICB8ICd5ZWFyJ1xyXG4gIHwgJ3dlZWsnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWERhdGVWYWx1ZSB7XHJcbiAgeWVhcjogbnVtYmVyLFxyXG4gIG1vbnRoOiBudW1iZXIsXHJcbiAgZGF0ZTogbnVtYmVyLFxyXG4gIGhvdXJzPzogbnVtYmVyLFxyXG4gIG1pbnV0ZXM/OiBudW1iZXIsXHJcbiAgc2Vjb25kcz86IG51bWJlcixcclxuICBtcz86IG51bWJlclxyXG4gIGNhbGVuZGFyOiBzdHJpbmc7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYQ2FsZW5kYXIge1xyXG4gIG1vbnRoTmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBtb250aFNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBkYXlOYW1lczogc3RyaW5nW107XHJcblxyXG4gIGRheVNob3J0TmFtZXM6IHN0cmluZ1tdO1xyXG5cclxuICBuYW1lKCk6IHN0cmluZztcclxuXHJcbiAgZGF5T2ZNb250aChkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIG1vbnRoT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXI7XHJcblxyXG4gIHdlZWtPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlcjtcclxuXHJcbiAgeWVhcihkYXRlOiBEYXRlKTogbnVtYmVyO1xyXG5cclxuICBhZGQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIGFtb3VudDogbnVtYmVyKTogQVhEYXRlVGltZTtcclxuXHJcbiAgc2V0KGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZTtcclxuXHJcbiAgc3RhcnRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWU7XHJcblxyXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZTtcclxuXHJcbiAgY3JlYXRlKHZhbHVlOiBBWERhdGVWYWx1ZSk6IEFYRGF0ZVRpbWU7XHJcbn1cclxuXHJcblxyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWERhdGVUaW1lIHtcclxuICBzdGF0aWMgY29udmVydChcclxuICAgIHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSB8IHN0cmluZyxcclxuICAgIGNhbGVuZGFyOiBzdHJpbmcgPSBBWENvbmZpZy5nZXQoJ2RhdGVUaW1lLmNhbGVuZGFyJylcclxuICApOiBBWERhdGVUaW1lIHtcclxuICAgIGxldCBkYXRlOiBBWERhdGVUaW1lO1xyXG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdmFsdWUgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIHN0cmluZywgY2FsZW5kYXIpO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcclxuICAgICAgZGF0ZSA9IG5ldyBBWERhdGVUaW1lKHZhbHVlIGFzIERhdGUsIGNhbGVuZGFyKTtcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBBWERhdGVUaW1lKSB7XHJcbiAgICAgIGRhdGUgPSBuZXcgQVhEYXRlVGltZSh2YWx1ZS5kYXRlLCBjYWxlbmRhcik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZSE7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZnJvbSh2YWx1ZTogQVhEYXRlVmFsdWUgPSB7XHJcbiAgICBjYWxlbmRhcjogQVhDb25maWcuZ2V0KCdkYXRlVGltZS5jYWxlbmRhcicpLFxyXG4gICAgeWVhcjogMSxcclxuICAgIG1vbnRoOiAxLFxyXG4gICAgZGF0ZTogMSxcclxuICAgIGhvdXJzOiAwLFxyXG4gICAgbWludXRlczogMCxcclxuICAgIHNlY29uZHM6IDAsXHJcbiAgICBtczogMFxyXG4gIH0pOiBBWERhdGVUaW1lIHtcclxuICAgIC8vIGxldCBkYXRlOiBBWERhdGVUaW1lID0gbmV3IEFYRGF0ZVRpbWUobmV3IERhdGUoKSwgdmFsdWUuY2FsZW5kYXIpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ3llYXInLCB2YWx1ZS55ZWFyKTtcclxuICAgIC8vIGRhdGUuc2V0KCdtb250aCcsIHZhbHVlLm1vbnRoKTtcclxuICAgIC8vIGRhdGUuc2V0KCdkYXknLCB2YWx1ZS5kYXRlKTtcclxuICAgIC8vIGRhdGUuc2V0KCdob3VyJywgdmFsdWUuaG91cnMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ21pbnV0ZScsIHZhbHVlLm1pbnV0ZXMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ3NlY29uZCcsIHZhbHVlLnNlY29uZHMpO1xyXG4gICAgLy8gZGF0ZS5zZXQoJ21zJywgdmFsdWUubXMpO1xyXG5cclxuICAgIHJldHVybiBBWERhdGVUaW1lLnJlc29sdmVDYWxlbmRhcih2YWx1ZS5jYWxlbmRhcikuY3JlYXRlKHZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgcmVzb2x2ZUNhbGVuZGFyKGNhbGVuZGFyOiBzdHJpbmcgfCBBWENhbGVuZGFyKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdHlwZW9mIGNhbGVuZGFyID09ICdzdHJpbmcnXHJcbiAgICAgID8gQVhDb25maWcuZ2V0KGBkYXRlVGltZS5jYWxlbmRhcnMuJHtjYWxlbmRhcn1gKVxyXG4gICAgICA6IGNhbGVuZGFyO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2RhdGU6IERhdGU7XHJcblxyXG4gIGdldCBkYXRlKCk6IERhdGUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jYWxlbmRhcjogQVhDYWxlbmRhcjtcclxuICBnZXQgY2FsZW5kYXIoKTogQVhDYWxlbmRhciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXI7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgdmFsdWU6IERhdGUgfCBzdHJpbmcgPSBuZXcgRGF0ZSgpLFxyXG4gICAgY2FsZW5kYXI6IHN0cmluZyB8IEFYQ2FsZW5kYXIgPSBBWENvbmZpZy5nZXQoYGRhdGVUaW1lLmNhbGVuZGFyYClcclxuICApIHtcclxuICAgIHRoaXMuX2NhbGVuZGFyID0gQVhEYXRlVGltZS5yZXNvbHZlQ2FsZW5kYXIoY2FsZW5kYXIpO1xyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG4gICAgICB0aGlzLl9kYXRlID0gdmFsdWUgYXMgRGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vVE9ETzogcGFyc2UgamFsYWxpXHJcbiAgICAgIHRoaXMuX2RhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjbG9uZSgpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZSh0aGlzLmRhdGUsIHRoaXMuY2FsZW5kYXIpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRheU9mTW9udGgoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5kYXlPZk1vbnRoKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF5T2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZZZWFyKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgZGF5T2ZXZWVrKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuZGF5T2ZXZWVrKHRoaXMuZGF0ZSk7XHJcbiAgfVxyXG5cclxuICBnZXQgaG91cigpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RhdGUuZ2V0SG91cnMoKTtcclxuICB9XHJcblxyXG4gIGdldCBtaW51dGUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldE1pbnV0ZXMoKTtcclxuICB9XHJcblxyXG4gIGdldCBzZWNvbmQoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9kYXRlLmdldFNlY29uZHMoKTtcclxuICB9XHJcblxyXG4gIGdldCB5ZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vbnRoT2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKTtcclxuICB9XHJcblxyXG4gIGdldCB3ZWVrT2ZZZWFyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIud2Vla09mWWVhcih0aGlzLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IG1vbnRoKCk6IEFYQ2FsZW5kYXJNb250aCB7XHJcbiAgICByZXR1cm4gbmV3IEFYQ2FsZW5kYXJNb250aCh0aGlzKTtcclxuICB9XHJcblxyXG4gIGFkZCh1bml0OiBUaW1lVW5pdCwgYW1vdW50OiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5hZGQodGhpcy5kYXRlLCB1bml0LCBhbW91bnQpO1xyXG4gIH1cclxuXHJcbiAgc2V0KHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcclxuICAgIHJldHVybiB0aGlzLl9jYWxlbmRhci5zZXQodGhpcy5kYXRlLCB1bml0LCB2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBkdXJhdGlvbihcclxuICAgIGVuZDogRGF0ZSB8IEFYRGF0ZVRpbWUsXHJcbiAgICB1bml0OiBUaW1lVW5pdCA9ICdkYXknXHJcbiAgKTogQVhUaW1lU3BhbiB7XHJcbiAgICBjb25zdCByYW5nZSA9IG5ldyBBWERhdGVUaW1lUmFuZ2UoXHJcbiAgICAgIHRoaXMsXHJcbiAgICAgIEFYRGF0ZVRpbWUuY29udmVydChlbmQsIHRoaXMuY2FsZW5kYXIubmFtZSgpKVxyXG4gICAgKTtcclxuICAgIHJldHVybiByYW5nZS5kdXJhdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRPZih1bml0OiBUaW1lVW5pdCA9ICdkYXknKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY2FsZW5kYXIuc3RhcnRPZih0aGlzLmRhdGUsIHVuaXQpO1xyXG4gIH1cclxuXHJcbiAgZW5kT2YodW5pdDogVGltZVVuaXQgPSAnZGF5Jyk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NhbGVuZGFyLmVuZE9mKHRoaXMuZGF0ZSwgdW5pdCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9mb3JtYXRLZXlzID0ge1xyXG4gICAgc3M6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRTZWNvbmRzKCksIDIpLFxyXG4gICAgczogKCkgPT4gdGhpcy5kYXRlLmdldFNlY29uZHMoKS50b1N0cmluZygpLFxyXG4gICAgLy9cclxuICAgIGRkOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKSwgMiksXHJcbiAgICBkOiAoKSA9PiB0aGlzLmNhbGVuZGFyLmRheU9mTW9udGgodGhpcy5kYXRlKS50b1N0cmluZygpLFxyXG4gICAgLy9cclxuICAgIG1tOiAoKSA9PiB0aGlzLnBhZCh0aGlzLmRhdGUuZ2V0TWludXRlcygpLCAyKSxcclxuICAgIG06ICgpID0+IHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKSxcclxuICAgIC8vXHJcbiAgICBNTU1NOiAoKSA9PiB0aGlzLmNhbGVuZGFyLm1vbnRoTmFtZXNbdGhpcy5jYWxlbmRhci5tb250aE9mWWVhcih0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICBNTU06ICgpID0+IHRoaXMuY2FsZW5kYXIubW9udGhTaG9ydE5hbWVzW3RoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSAtIDFdLFxyXG4gICAgTU06ICgpID0+IHRoaXMucGFkKHRoaXMuY2FsZW5kYXIubW9udGhPZlllYXIodGhpcy5kYXRlKSwgMiksXHJcbiAgICAvL1xyXG4gICAgRERERDogKCkgPT4gdGhpcy5jYWxlbmRhci5kYXlOYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICBEREQ6ICgpID0+IHRoaXMuY2FsZW5kYXIuZGF5U2hvcnROYW1lc1t0aGlzLmNhbGVuZGFyLmRheU9mV2Vlayh0aGlzLmRhdGUpIC0gMV0sXHJcbiAgICAvL1xyXG4gICAgeXl5eTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKSxcclxuICAgIFlZWVk6ICgpID0+IHRoaXMuY2FsZW5kYXIueWVhcih0aGlzLmRhdGUpLnRvU3RyaW5nKCksXHJcbiAgICB5eTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXHJcbiAgICBZWTogKCkgPT4gdGhpcy5jYWxlbmRhci55ZWFyKHRoaXMuZGF0ZSkudG9TdHJpbmcoKS5zdWJzdHJpbmcoMiksXHJcbiAgICAvL1xyXG4gICAgSEg6ICgpID0+IHRoaXMucGFkKHRoaXMuZGF0ZS5nZXRIb3VycygpLCAyKSxcclxuICAgIEg6ICgpID0+IHRoaXMuZGF0ZS5nZXRIb3VycygpLnRvU3RyaW5nKCksXHJcbiAgICAvL1xyXG4gICAgaGg6ICgpID0+IHRoaXMucGFkKCh0aGlzLmRhdGUuZ2V0SG91cnMoKSAlIDEyIHx8IDEyKSwgMiksXHJcbiAgICBoOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgJSAxMiB8fCAxMikudG9TdHJpbmcoKSxcclxuICAgIC8vXHJcbiAgICBBOiAoKSA9PiAodGhpcy5kYXRlLmdldEhvdXJzKCkgPCAxMikgPyAnYW0nIDogJ3BtJyxcclxuICAgIGE6ICgpID0+ICh0aGlzLmRhdGUuZ2V0SG91cnMoKSA8IDEyKSA/ICdhbScgOiAncG0nLFxyXG4gIH07XHJcblxyXG4gIGZvcm1hdChcclxuICAgIGZvcm1hdDogc3RyaW5nID0gQVhDb25maWcuZ2V0KCdkYXRlVGltZS5zaG9ydERhdGVGb3JtYXQnKVxyXG4gICk6IHN0cmluZyB7XHJcbiAgICBjb25zdCByZSA9IG5ldyBSZWdFeHAoXy5vcmRlckJ5KE9iamVjdC5rZXlzKHRoaXMuX2Zvcm1hdEtleXMpLCBjID0+IGMubGVuZ3RoLCBbJ2Rlc2MnXSkuam9pbihcInxcIiksIFwiZ2lcIik7XHJcbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UocmUsIChtYXRjaGVkKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtYXRLZXlzW21hdGNoZWRdKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcGFkKG4sIHdpZHRoLCB6ID0gJzAnKSB7XHJcbiAgICBuID0gbiArICcnO1xyXG4gICAgcmV0dXJuIG4ubGVuZ3RoID49IHdpZHRoID8gbiA6IG5ldyBBcnJheSh3aWR0aCAtIG4ubGVuZ3RoICsgMSkuam9pbih6KSArIG47XHJcbiAgfVxyXG5cclxuICB0b1N0cmluZyhmb3JtYXQ6IHN0cmluZyA9IEFYQ29uZmlnLmdldCgnZGF0ZVRpbWUuc2hvcnREYXRlRm9ybWF0JykpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0KGZvcm1hdCk7XHJcbiAgfVxyXG5cclxuICBlcXVhbCh2YWx1ZTogRGF0ZSB8IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpIHtcclxuICAgIHJldHVybiB0aGlzLmNvbXBhcmUodmFsdWUsIHVuaXQpID09IDA7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlKHZhbHVlOiBEYXRlIHwgQVhEYXRlVGltZSwgdW5pdDogVGltZVVuaXQgPSAnZGF5Jykge1xyXG4gICAgY29uc3QgdmFsID0gQVhEYXRlVGltZS5jb252ZXJ0KHZhbHVlLCB0aGlzLmNhbGVuZGFyLm5hbWUoKSk7XHJcbiAgICBjb25zdCBmdW5jID0gKHYxOiBudW1iZXIsIHYyOiBudW1iZXIpID0+IHtcclxuICAgICAgaWYgKHYxID09IHYyKSB7XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgIH0gZWxzZSBpZiAodjEgPiB2Mikge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IHAgPSAwO1xyXG4gICAgc3dpdGNoICh1bml0KSB7XHJcbiAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgIHJldHVybiBmdW5jKHRoaXMueWVhciwgdmFsLnllYXIpO1xyXG4gICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLndlZWtPZlllYXIsIHZhbC53ZWVrT2ZZZWFyKSA6IHA7XHJcbiAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1vbnRoT2ZZZWFyLCB2YWwubW9udGhPZlllYXIpIDogcDtcclxuICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ3llYXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLmRheU9mWWVhciwgdmFsLmRheU9mWWVhcikgOiBwO1xyXG4gICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2RheScpO1xyXG4gICAgICAgIHJldHVybiBwID09IDAgPyBmdW5jKHRoaXMuaG91ciwgdmFsLmhvdXIpIDogcDtcclxuICAgICAgY2FzZSAnbWludXRlJzpcclxuICAgICAgICBwID0gdGhpcy5jb21wYXJlKHZhbCwgJ2hvdXInKTtcclxuICAgICAgICByZXR1cm4gcCA9PSAwID8gZnVuYyh0aGlzLm1pbnV0ZSwgdmFsLm1pbnV0ZSkgOiBwO1xyXG4gICAgICBjYXNlICdzZWNvbmQnOlxyXG4gICAgICAgIHAgPSB0aGlzLmNvbXBhcmUodmFsLCAnbWludXRlJyk7XHJcbiAgICAgICAgcmV0dXJuIHAgPT0gMCA/IGZ1bmModGhpcy5zZWNvbmQsIHZhbC5zZWNvbmQpIDogcDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZnVuYyh0aGlzLmRhdGUuZ2V0VGltZSgpLCB2YWwuZGF0ZS5nZXRUaW1lKCkpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNvbnZlcnQoY2FsZW5kYXI6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIEFYRGF0ZVRpbWUuY29udmVydCh0aGlzLCBjYWxlbmRhcik7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhDYWxlbmRhck1vbnRoIHtcclxuICBwcml2YXRlIF9yYW5nZTogQVhEYXRlVGltZVJhbmdlO1xyXG4gIHB1YmxpYyBnZXQgcmFuZ2UoKTogQVhEYXRlVGltZVJhbmdlIHtcclxuICAgIHJldHVybiB0aGlzLl9yYW5nZTtcclxuICB9XHJcbiAgcHVibGljIHNldCByYW5nZSh2OiBBWERhdGVUaW1lUmFuZ2UpIHtcclxuICAgIHRoaXMuX3JhbmdlID0gdjtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGRhdGU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuaW5kZXggPSBkYXRlLmRhdGUuZ2V0TW9udGgoKTtcclxuICAgIHRoaXMubmFtZSA9IGRhdGUuZm9ybWF0KCdNTU1NJyk7XHJcbiAgICB0aGlzLnJhbmdlID0gbmV3IEFYRGF0ZVRpbWVSYW5nZShcclxuICAgICAgbmV3IEFYRGF0ZVRpbWUoZGF0ZS5zdGFydE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpLFxyXG4gICAgICBuZXcgQVhEYXRlVGltZShkYXRlLmVuZE9mKCdtb250aCcpLmRhdGUsIGRhdGUuY2FsZW5kYXIpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleDogbnVtYmVyO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYVGltZVNwYW5Ub3RhbCB7XHJcbiAgbWlsaXNlY29uZHM6IG51bWJlcjtcclxuICBzZWNvbmRzOiBudW1iZXI7XHJcbiAgbWludXRlczogbnVtYmVyO1xyXG4gIGhvdXJzOiBudW1iZXI7XHJcbiAgZGF5czogbnVtYmVyO1xyXG4gIHdlZWtzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBWFRpbWVTcGFuIHtcclxuICBtaWxpc2Vjb25kczogbnVtYmVyO1xyXG4gIHNlY29uZHM6IG51bWJlcjtcclxuICBtaW51dGVzOiBudW1iZXI7XHJcbiAgaG91cnM6IG51bWJlcjtcclxuICBkYXlzOiBudW1iZXI7XHJcbiAgbW9udGhzOiBudW1iZXI7XHJcbiAgeWVhcnM6IG51bWJlcjtcclxuICB0b3RhbDogQVhUaW1lU3BhblRvdGFsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQVhEYXRlVGltZVJhbmdlIHtcclxuICBwcml2YXRlIF9zdGFydFRpbWU6IEFYRGF0ZVRpbWU7XHJcbiAgcHJpdmF0ZSBfZW5kVGltZTogQVhEYXRlVGltZTtcclxuXHJcbiAgcHVibGljIGdldCBzdGFydFRpbWUoKTogQVhEYXRlVGltZSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBlbmRUaW1lKCk6IEFYRGF0ZVRpbWUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihzdGFydFRpbWU6IEFYRGF0ZVRpbWUsIGVuZFRpbWU6IEFYRGF0ZVRpbWUpIHtcclxuICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTtcclxuICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xyXG4gIH1cclxuXHJcbiAgZHVyYXRpb24oKTogQVhUaW1lU3BhbiB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYVGltZVNwYW4gPSB7XHJcbiAgICAgIG1pbGlzZWNvbmRzOiAwLFxyXG4gICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICBtaW51dGVzOiAwLFxyXG4gICAgICBob3VyczogMCxcclxuICAgICAgZGF5czogMCxcclxuICAgICAgbW9udGhzOiAwLFxyXG4gICAgICB5ZWFyczogMCxcclxuICAgICAgdG90YWw6IHtcclxuICAgICAgICBtaWxpc2Vjb25kczogMCxcclxuICAgICAgICBzZWNvbmRzOiAwLFxyXG4gICAgICAgIG1pbnV0ZXM6IDAsXHJcbiAgICAgICAgaG91cnM6IDAsXHJcbiAgICAgICAgZGF5czogMCxcclxuICAgICAgICB3ZWVrczogMCxcclxuICAgICAgICBtb250aHM6IDAsXHJcbiAgICAgICAgeWVhcnM6IDAsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uZV9zZWNvbmQgPSAxMDAwO1xyXG4gICAgY29uc3Qgb25lX21pbiA9IG9uZV9zZWNvbmQgKiA2MDtcclxuICAgIGNvbnN0IG9uZV9ob3VyID0gb25lX21pbiAqIDYwO1xyXG4gICAgY29uc3Qgb25lX2RheSA9IG9uZV9ob3VyICogMjQ7XHJcbiAgICBjb25zdCBvbmVfd2VlayA9IG9uZV9kYXkgKiA3O1xyXG4gICAgY29uc3Qgb25lX3llYXIgPSAzNjUuMjUgKiBvbmVfZGF5O1xyXG4gICAgY29uc3Qgb25lX21vbnRoID0gb25lX3llYXIgLyAxMjtcclxuICAgIGNvbnN0IHN0YXJ0VGltZSA9IHRoaXMuX3N0YXJ0VGltZS5kYXRlLmdldFRpbWUoKTtcclxuICAgIGNvbnN0IGVuZFRpbWUgPSB0aGlzLl9lbmRUaW1lLmRhdGUuZ2V0VGltZSgpO1xyXG4gICAgY29uc3QgZGlmZiA9IE1hdGguYWJzKGVuZFRpbWUgLSBzdGFydFRpbWUpO1xyXG4gICAgLy9cclxuICAgIHJlc3VsdC50b3RhbC5taWxpc2Vjb25kcyA9IGRpZmY7XHJcbiAgICByZXN1bHQudG90YWwuc2Vjb25kcyA9IE51bWJlcigoZGlmZiAvIG9uZV9zZWNvbmQpLnRvRml4ZWQoMikpO1xyXG4gICAgcmVzdWx0LnRvdGFsLm1pbnV0ZXMgPSBOdW1iZXIoKGRpZmYgLyBvbmVfbWluKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC5ob3VycyA9IE51bWJlcigoZGlmZiAvIG9uZV9ob3VyKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC5kYXlzID0gTnVtYmVyKChkaWZmIC8gb25lX2RheSkudG9GaXhlZCgyKSk7XHJcbiAgICByZXN1bHQudG90YWwud2Vla3MgPSBOdW1iZXIoKGRpZmYgLyBvbmVfd2VlaykudG9GaXhlZCgyKSk7XHJcbiAgICAvL1xyXG4gICAgLy8gbGV0IG1vbnRocyA9ICh0aGlzLmVuZFRpbWUueWVhciAtIHRoaXMuc3RhcnRUaW1lLnllYXIpICogMTI7XHJcbiAgICAvLyBtb250aHMgKz0gdGhpcy5lbmRUaW1lLm1vbnRoT2ZZZWFyIC0gdGhpcy5zdGFydFRpbWUubW9udGhPZlllYXIgKyAxO1xyXG4gICAgLy8gaWYgKHRoaXMuZW5kVGltZS5kYXlPZlllYXIgPCB0aGlzLnN0YXJ0VGltZS5kYXlPZlllYXIpIHtcclxuICAgIC8vICAgICBtb250aHMtLTtcclxuICAgIC8vIH1cclxuICAgIC8vIHJlc3VsdC50b3RhbC5tb250aHMgPSBNYXRoLmFicyhtb250aHMpO1xyXG4gICAgLy8gVE9ETzogcmV2aWV3XHJcbiAgICByZXN1bHQudG90YWwubW9udGhzID0gTnVtYmVyKChkaWZmIC8gb25lX21vbnRoKS50b0ZpeGVkKDIpKTtcclxuICAgIHJlc3VsdC50b3RhbC55ZWFycyA9IE51bWJlcigoZGlmZiAvIG9uZV95ZWFyKS50b0ZpeGVkKDIpKTtcclxuICAgIC8vXHJcbiAgICByZXN1bHQubWlsaXNlY29uZHMgPSByZXN1bHQudG90YWwubWlsaXNlY29uZHMgJSAxMDAwO1xyXG4gICAgcmVzdWx0LnNlY29uZHMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5zZWNvbmRzICUgNjApLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0Lm1pbnV0ZXMgPSBOdW1iZXIoKHJlc3VsdC50b3RhbC5taW51dGVzICUgNjApLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0LmhvdXJzID0gTnVtYmVyKChyZXN1bHQudG90YWwuaG91cnMgJSAyNCkudG9GaXhlZCgwKSk7XHJcbiAgICAvLyBUT0RPOiByZXZpZXdcclxuICAgIHJlc3VsdC5kYXlzID0gTnVtYmVyKChyZXN1bHQudG90YWwuZGF5cyAlIDMwLjQpLnRvRml4ZWQoMCkpO1xyXG4gICAgcmVzdWx0Lm1vbnRocyA9IE51bWJlcigocmVzdWx0LnRvdGFsLm1vbnRocyAlIDEyKS50b0ZpeGVkKDApKTtcclxuICAgIHJlc3VsdC55ZWFycyA9IE51bWJlcihyZXN1bHQudG90YWwueWVhcnMudG9GaXhlZCgwKSk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgZW51bXVyYXRlKHVuaXQ6IFRpbWVVbml0ID0gJ2RheScsIGFtb3VudDogbnVtYmVyID0gMSk6IEFYRGF0ZVRpbWVbXSB7XHJcbiAgICBjb25zdCByZXN1bHQ6IEFYRGF0ZVRpbWVbXSA9IFtdO1xyXG4gICAgbGV0IGl0ZW0gPSB0aGlzLl9zdGFydFRpbWUuY2xvbmUoKTtcclxuICAgIHdoaWxlIChpdGVtLmNvbXBhcmUodGhpcy5fZW5kVGltZSwgdW5pdCkgPCAxKSB7XHJcbiAgICAgIGlmICghcmVzdWx0LnNvbWUoYyA9PiBjLmVxdWFsKGl0ZW0sIHVuaXQpKSkge1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0gPSBpdGVtLmFkZCh1bml0LCBhbW91bnQpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgaW5jbHVkZXModmFsdWU6IEFYRGF0ZVRpbWUsIHVuaXQ6IFRpbWVVbml0ID0gJ2RheScpOiBib29sZWFuIHtcclxuICAgIC8vIFRPRE86ID8/XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIGdldFZpZXdDb21wYWlyZSh2aWV3KSB7XHJcbiAgLy8gICAgIHN3aXRjaCAodmlldykge1xyXG4gIC8vICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1lNRCc7XHJcbiAgLy8gICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgLy8gICAgICAgICAgICAgcmV0dXJuICdZTSc7XHJcbiAgLy8gICAgICAgICBjYXNlICd5ZWFyJzpcclxuICAvLyAgICAgICAgICAgICByZXR1cm4gJ1knO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gfVxyXG59XHJcbiJdfQ==
@@ -281,11 +281,12 @@ class AXDateTimeRange {
281
281
  return result;
282
282
  }
283
283
  enumurate(unit = 'day', amount = 1) {
284
- // TODO: setptemper savingtime issue
285
284
  const result = [];
286
285
  let item = this._startTime.clone();
287
286
  while (item.compare(this._endTime, unit) < 1) {
288
- result.push(item);
287
+ if (!result.some(c => c.equal(item, unit))) {
288
+ result.push(item);
289
+ }
289
290
  item = item.add(unit, amount);
290
291
  }
291
292
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-dateTime.mjs","sources":["../../../../projects/acorex/core/dateTime/src/datetime.class.ts","../../../../projects/acorex/core/dateTime/src/datetime.pipe.ts","../../../../projects/acorex/core/dateTime/src/georgian.calendar.ts","../../../../projects/acorex/core/dateTime/src/jalali.calendar.ts","../../../../projects/acorex/core/dateTime/src/datetime.module.ts","../../../../projects/acorex/core/dateTime/acorex-core-dateTime.ts"],"sourcesContent":["import * as _ from 'lodash';\r\nimport { AXConfig } from '@acorex/core/config';\r\n\r\nexport type TimeUnit =\r\n | 'ms'\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXDateValue {\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours?: number,\r\n minutes?: number,\r\n seconds?: number,\r\n ms?: number\r\n calendar: string;\r\n}\r\n\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayOfMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayOfWeek(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n weekOfYear(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n create(value: AXDateValue): AXDateTime;\r\n}\r\n\r\n\r\n\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: Date | AXDateTime | string,\r\n calendar: string = AXConfig.get('dateTime.calendar')\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date!;\r\n }\r\n\r\n static from(value: AXDateValue = {\r\n calendar: AXConfig.get('dateTime.calendar'),\r\n year: 1,\r\n month: 1,\r\n date: 1,\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n }): AXDateTime {\r\n // let date: AXDateTime = new AXDateTime(new Date(), value.calendar);\r\n // date.set('year', value.year);\r\n // date.set('month', value.month);\r\n // date.set('day', value.date);\r\n // date.set('hour', value.hours);\r\n // date.set('minute', value.minutes);\r\n // date.set('second', value.seconds);\r\n // date.set('ms', value.ms);\r\n\r\n return AXDateTime.resolveCalendar(value.calendar).create(value);\r\n }\r\n\r\n\r\n static resolveCalendar(calendar: string | AXCalendar): AXCalendar {\r\n return typeof calendar == 'string'\r\n ? AXConfig.get(`dateTime.calendars.${calendar}`)\r\n : calendar;\r\n }\r\n\r\n\r\n private _date: Date;\r\n\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get(`dateTime.calendar`)\r\n ) {\r\n this._calendar = AXDateTime.resolveCalendar(calendar);\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n //TODO: parse jalali\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar);\r\n }\r\n\r\n get dayOfMonth(): number {\r\n return this._calendar.dayOfMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayOfWeek(): number {\r\n return this._calendar.dayOfWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get weekOfYear(): number {\r\n return this._calendar.weekOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: Date | AXDateTime,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n private _formatKeys = {\r\n ss: () => this.pad(this.date.getSeconds(), 2),\r\n s: () => this.date.getSeconds().toString(),\r\n //\r\n dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\r\n d: () => this.calendar.dayOfMonth(this.date).toString(),\r\n //\r\n mm: () => this.pad(this.date.getMinutes(), 2),\r\n m: () => this.date.getMinutes().toString(),\r\n //\r\n MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],\r\n MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],\r\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\r\n //\r\n DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],\r\n DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],\r\n //\r\n yyyy: () => this.calendar.year(this.date).toString(),\r\n YYYY: () => this.calendar.year(this.date).toString(),\r\n yy: () => this.calendar.year(this.date).toString().substring(2),\r\n YY: () => this.calendar.year(this.date).toString().substring(2),\r\n //\r\n HH: () => this.pad(this.date.getHours(), 2),\r\n H: () => this.date.getHours().toString(),\r\n //\r\n hh: () => this.pad((this.date.getHours() % 12 || 12), 2),\r\n h: () => (this.date.getHours() % 12 || 12).toString(),\r\n //\r\n A: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n a: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n };\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat')\r\n ): string {\r\n const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), c => c.length, ['desc']).join(\"|\"), \"gi\");\r\n return format.replace(re, (matched) => {\r\n return this._formatKeys[matched]();\r\n });\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(format: string = AXConfig.get('dateTime.shortDateFormat')): string {\r\n return this.format(format);\r\n }\r\n\r\n equal(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n return this.compare(value, unit) == 0;\r\n }\r\n\r\n compare(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n const val = AXDateTime.convert(value, this.calendar.name());\r\n const func = (v1: number, v2: number) => {\r\n if (v1 == v2) {\r\n return 0;\r\n } else if (v1 > v2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n let p = 0;\r\n switch (unit) {\r\n case 'year':\r\n return func(this.year, val.year);\r\n case 'week':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\r\n case 'month':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\r\n case 'day':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\r\n case 'hour':\r\n p = this.compare(val, 'day');\r\n return p == 0 ? func(this.hour, val.hour) : p;\r\n case 'minute':\r\n p = this.compare(val, 'hour');\r\n return p == 0 ? func(this.minute, val.minute) : p;\r\n case 'second':\r\n p = this.compare(val, 'minute');\r\n return p == 0 ? func(this.second, val.second) : p;\r\n default:\r\n return func(this.date.getTime(), val.date.getTime());\r\n }\r\n\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n private _startTime: AXDateTime;\r\n private _endTime: AXDateTime;\r\n\r\n public get startTime(): AXDateTime {\r\n return this._startTime;\r\n }\r\n\r\n public get endTime(): AXDateTime {\r\n return this._endTime;\r\n }\r\n\r\n constructor(startTime: AXDateTime, endTime: AXDateTime) {\r\n this._startTime = startTime;\r\n this._endTime = endTime;\r\n }\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this._startTime.date.getTime();\r\n const endTime = this._endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day', amount: number = 1): AXDateTime[] {\r\n // TODO: setptemper savingtime issue\r\n const result: AXDateTime[] = [];\r\n let item = this._startTime.clone();\r\n while (item.compare(this._endTime, unit) < 1) {\r\n result.push(item);\r\n item = item.add(unit, amount)\r\n }\r\n return result;\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.format(AXConfig.get('dateTime.shortDateFormat'));\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n let result = 0;\r\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (this.isLeap(date)) {\r\n m[1] = 29;\r\n }\r\n for (let i = 0; i < date.getMonth(); i++) {\r\n result = result + m[i];\r\n }\r\n result += date.getDate();\r\n return result;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = yv.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n clone.setDate(value);\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n clone.setMonth(Math.max(0, value - 1));\r\n break;\r\n case \"year\":\r\n clone.setFullYear(value);\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const index = 0;\r\n const start = index >= 0 ? index : 0;\r\n const day = clone.getDay();\r\n const diff = clone.getDate() - day + (start > day ? start - 7 : start);\r\n clone.setDate(diff);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n\r\n isLeap(date: Date) {\r\n let leapYear = new Date(date.getFullYear(), 1, 29);\r\n return leapYear.getDate() == 29;\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class JalaliCalendar implements AXCalendar {\r\n\r\n monthNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n monthShortNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n dayNames = (\"شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه\").split(\"_\");\r\n\r\n dayShortNames = \"ش_ی_د_س_چ_پ_ج\".split(\"_\");\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n const a = this.toGregorian(value.year, value.month, value.date);\r\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'jalali'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return this.toJalali(date).day;\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const j = this.toJalali(date);\r\n return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n //TODO : apply jalali\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return this.toJalali(date).year;\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return this.toJalali(date).month;\r\n }\r\n\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n {\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const nm = (jm + amount);\r\n const ny = (nm % 12) ? Math.floor(nm / 12) : 0;\r\n jy += ny;\r\n jm = nm - (ny * 12);\r\n const vv = this.toGregorian(jy, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n {\r\n // const v = new Date(value);\r\n // v.setFullYear(v.getFullYear() + amount);\r\n // value = v.valueOf();\r\n // break\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const vv = this.toGregorian(jy + amount, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n const jDate = this.toJalali(clone);\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\r\n clone.setDate(gDate.getDate());\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\r\n clone.setMonth(gDate2.getMonth());\r\n break;\r\n case \"year\":\r\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\r\n clone.setFullYear(gDate3.getFullYear());\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\r\n case \"month\":\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const gDate = this.toGregorian(jy, jm, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n case \"year\":\r\n {\r\n const jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 1, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n {\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n }\r\n case 'month':\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const jd = this.monthLength(jy, jm);\r\n const gDate = this.toGregorian(jy, jm, jd);\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n case \"year\":\r\n let jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n }\r\n\r\n\r\n\r\n toJalali(date: Date): { year: number, month: number, day: number } {\r\n const gy = date.getFullYear();\r\n const gm = date.getMonth() + 1;\r\n const gd = date.getDate();\r\n const r = this.d2j(this.g2d(gy, gm, gd))\r\n return {\r\n year: r.jy,\r\n month: r.jm,\r\n day: r.jd,\r\n }\r\n }\r\n\r\n /*\r\n Converts a Jalaali date to Gregorian.\r\n */\r\n toGregorian(jy, jm, jd) {\r\n const g = this.d2g(this.j2d(jy, jm, jd))\r\n return new Date(g.gy, g.gm - 1, g.gd);\r\n }\r\n\r\n /*\r\n Checks whether a Jalaali date is valid or not.\r\n */\r\n isValid(jy, jm, jd) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= this.monthLength(jy, jm)\r\n }\r\n\r\n /*\r\n Is this a leap year or not?\r\n */\r\n isLeapYear(jy) {\r\n return this.jalCal(jy).leap === 0\r\n }\r\n\r\n /*\r\n Number of days in a given month in a Jalaali year.\r\n */\r\n monthLength(jy, jm) {\r\n if (jm <= 6) return 31\r\n if (jm <= 11) return 30\r\n if (this.isLeapYear(jy)) return 30\r\n return 29\r\n }\r\n\r\n\r\n private jalCal(jy) {\r\n // Jalaali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210\r\n , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\r\n ]\r\n , bl = breaks.length\r\n , gy = jy + 621\r\n , leapJ = -14\r\n , jp = breaks[0]\r\n , jm\r\n , jump\r\n , leap\r\n , leapG\r\n , march\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n // Find the limiting years for the Jalaali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4)\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalaali year in the Persian calendar.\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4)\r\n if (this.mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n march = 20 + leapJ - leapG\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + this.div(jump + 4, 33) * 33\r\n leap = this.mod(this.mod(n + 1, 33) - 1, 4)\r\n if (leap === -1) {\r\n leap = 4\r\n }\r\n\r\n return {\r\n leap: leap\r\n , gy: gy\r\n , march: march\r\n }\r\n }\r\n\r\n /*\r\n Converts a date of the Jalaali calendar to the Julian Day number.\r\n @param jy Jalaali year (1 to 3100)\r\n @param jm Jalaali month (1 to 12)\r\n @param jd Jalaali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\n private j2d(jy, jm, jd) {\r\n let r = this.jalCal(jy)\r\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1\r\n }\r\n\r\n /*\r\n Converts the Julian Day number to a date in the Jalaali calendar.\r\n @param jdn Julian Day number\r\n @return\r\n jy: Jalaali year (1 to 3100)\r\n jm: Jalaali month (1 to 12)\r\n jd: Jalaali day (1 to 29/31)\r\n */\r\n private d2j(jdn) {\r\n let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).\r\n , jy = gy - 621\r\n , r = this.jalCal(jy)\r\n , jdn1f = this.g2d(gy, 3, r.march)\r\n , jd\r\n , jm\r\n , k\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1f\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + this.div(k, 31)\r\n jd = this.mod(k, 31) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n } else {\r\n // The remaining months.\r\n k -= 186\r\n }\r\n } else {\r\n // Previous Jalaali year.\r\n jy -= 1\r\n k += 179\r\n if (r.leap === 1)\r\n k += 1\r\n }\r\n jm = 7 + this.div(k, 30)\r\n jd = this.mod(k, 30) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n }\r\n\r\n\r\n private g2d(gy, gm, gd) {\r\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)\r\n + this.div(153 * this.mod(gm + 9, 12) + 2, 5)\r\n + gd - 34840408\r\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752\r\n return d\r\n }\r\n\r\n\r\n private d2g(jdn) {\r\n let j\r\n , i\r\n , gd\r\n , gm\r\n , gy\r\n j = 4 * jdn + 139361631\r\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\r\n i = this.div(this.mod(j, 1461), 4) * 5 + 308\r\n gd = this.div(this.mod(i, 153), 5) + 1\r\n gm = this.mod(this.div(i, 153), 12) + 1\r\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6)\r\n return {\r\n gy: gy\r\n , gm: gm\r\n , gd: gd\r\n }\r\n }\r\n\r\n /*\r\n Utility helper functions.\r\n */\r\n private div(a, b) {\r\n return ~~(a / b)\r\n }\r\n\r\n private mod(a, b) {\r\n return a - ~~(a / b) * b\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\nimport { GeorgianCalendar } from './georgian.calendar';\r\nimport { JalaliCalendar } from './jalali.calendar';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule {\r\n\r\n constructor() {\r\n AXConfig.set({\r\n dateTime: {\r\n calendars: {\r\n jalali: new JalaliCalendar(),\r\n gregorian: new GeorgianCalendar()\r\n },\r\n calendar:'gregorian',\r\n shortDateFormat:'DDDD, d MMM yyyy'\r\n }\r\n });\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AA8DA;MACa,UAAU,CAAA;AA2DrB,IAAA,WAAA,CACE,KAAA,GAAuB,IAAI,IAAI,EAAE,EACjC,QAAgC,GAAA,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;QAkF3D,IAAA,CAAA,WAAW,GAAG;AACpB,YAAA,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7C,YAAA,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;;YAE1C,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1D,YAAA,CAAC,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;;AAEvD,YAAA,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7C,YAAA,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;;YAE1C,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9E,GAAG,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClF,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;YAE3D,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1E,GAAG,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;AAE9E,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;AACpD,YAAA,IAAI,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YACpD,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YAC/D,EAAE,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;AAE/D,YAAA,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3C,YAAA,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;;YAExC,EAAE,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACxD,YAAA,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE;;YAErD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI;YAClD,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,IAAI;SACnD,CAAC;QA9GA,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAa,CAAC;AAC5B,SAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;AArED,IAAA,OAAO,OAAO,CACZ,KAAiC,EACjC,QAAmB,GAAA,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAA;AAEpD,QAAA,IAAI,IAAgB,CAAC;QACrB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,EAAE;YACxD,IAAI,GAAG,IAAI,UAAU,CAAC,KAAe,EAAE,QAAQ,CAAC,CAAC;AAClD,SAAA;aAAM,IAAI,KAAK,YAAY,IAAI,EAAE;YAChC,IAAI,GAAG,IAAI,UAAU,CAAC,KAAa,EAAE,QAAQ,CAAC,CAAC;AAChD,SAAA;aAAM,IAAI,KAAK,YAAY,UAAU,EAAE;YACtC,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAK,CAAC;KACd;AAED,IAAA,OAAO,IAAI,CAAC,KAAqB,GAAA;AAC/B,QAAA,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC;AAC3C,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,OAAO,EAAE,CAAC;AACV,QAAA,EAAE,EAAE,CAAC;AACN,KAAA,EAAA;;;;;;;;;AAUC,QAAA,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACjE;IAGD,OAAO,eAAe,CAAC,QAA6B,EAAA;QAClD,OAAO,OAAO,QAAQ,IAAI,QAAQ;cAC9B,QAAQ,CAAC,GAAG,CAAC,CAAsB,mBAAA,EAAA,QAAQ,EAAE,CAAC;cAC9C,QAAQ,CAAC;KACd;AAKD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAGD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAiBD,KAAK,GAAA;QACH,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KACjD;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC9B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9C;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC;KAClC;IAED,GAAG,CAAC,IAAc,EAAE,MAAc,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;KACpD;AAED,IAAA,GAAG,CAAC,IAAA,GAAiB,KAAK,EAAE,KAAa,EAAA;AACvC,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;KACnD;AAED,IAAA,QAAQ,CACN,GAAsB,EACtB,IAAA,GAAiB,KAAK,EAAA;QAEtB,MAAM,KAAK,GAAG,IAAI,eAAe,CAC/B,IAAI,EACJ,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAC9C,CAAC;AACF,QAAA,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KACzB;IAED,OAAO,CAAC,OAAiB,KAAK,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAChD;IAED,KAAK,CAAC,OAAiB,KAAK,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC9C;IAkCD,MAAM,CACJ,MAAiB,GAAA,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAA;AAEzD,QAAA,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACzG,OAAO,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,KAAI;AACpC,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,EAAA;AAC3B,QAAA,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AACX,QAAA,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;KAC5E;IAED,QAAQ,CAAC,MAAiB,GAAA,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAA;AAChE,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC5B;AAED,IAAA,KAAK,CAAC,KAAwB,EAAE,IAAA,GAAiB,KAAK,EAAA;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvC;AAED,IAAA,OAAO,CAAC,KAAwB,EAAE,IAAA,GAAiB,KAAK,EAAA;AACtD,QAAA,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5D,QAAA,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAU,KAAI;YACtC,IAAI,EAAE,IAAI,EAAE,EAAE;AACZ,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;iBAAM,IAAI,EAAE,GAAG,EAAE,EAAE;AAClB,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;gBACL,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;AACH,SAAC,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AACnC,YAAA,KAAK,MAAM;gBACT,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC5D,YAAA,KAAK,OAAO;gBACV,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC9D,YAAA,KAAK,KAAK;gBACR,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC1D,YAAA,KAAK,MAAM;gBACT,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,YAAA,KAAK,QAAQ;gBACX,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpD,YAAA,KAAK,QAAQ;gBACX,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACpD,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACxD,SAAA;KAEF;AAED,IAAA,OAAO,CAAC,QAAgB,EAAA;QACtB,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC3C;AACF,CAAA;MAEY,eAAe,CAAA;AAS1B,IAAA,WAAA,CAAY,IAAgB,EAAA;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAC9B,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACzD,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CACxD,CAAC;KACH;AAdD,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAW,KAAK,CAAC,CAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACjB;AAaF,CAAA;MAwBY,eAAe,CAAA;IAY1B,WAAY,CAAA,SAAqB,EAAE,OAAmB,EAAA;AACpD,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;AAXD,IAAA,IAAW,SAAS,GAAA;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAW,OAAO,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAOD,QAAQ,GAAA;AACN,QAAA,MAAM,MAAM,GAAe;AACzB,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE;AACL,gBAAA,WAAW,EAAE,CAAC;AACd,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,IAAI,EAAE,CAAC;AACP,gBAAA,KAAK,EAAE,CAAC;AACR,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC;AACxB,QAAA,MAAM,OAAO,GAAG,UAAU,GAAG,EAAE,CAAC;AAChC,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,EAAE,CAAC;AAC9B,QAAA,MAAM,OAAO,GAAG,QAAQ,GAAG,EAAE,CAAC;AAC9B,QAAA,MAAM,QAAQ,GAAG,OAAO,GAAG,CAAC,CAAC;AAC7B,QAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAClC,QAAA,MAAM,SAAS,GAAG,QAAQ,GAAG,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;;AAE3C,QAAA,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAChC,QAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3D,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,QAAA,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;;;;;;;;AAS1D,QAAA,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;QAE1D,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QACrD,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;;QAE5D,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,QAAA,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,SAAS,CAAC,IAAA,GAAiB,KAAK,EAAE,SAAiB,CAAC,EAAA;;QAElD,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AAC5C,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AAC9B,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;AAED,IAAA,QAAQ,CAAC,KAAiB,EAAE,IAAA,GAAiB,KAAK,EAAA;;AAEhD,QAAA,OAAO,IAAI,CAAC;KACb;AAYF;;MC9bY,cAAc,CAAA;AACvB,IAAA,WAAA,GAAA,GAAiB;AAEjB,IAAA,SAAS,CAAC,KAAU,EAAE,MAAe,EAAE,QAAiB,EAAA;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,EAAE,CAAC;AACb,SAAA;QACD,MAAM,IAAI,GAAe,KAAK,YAAY,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC3G,IAAI,CAAC,MAAM,EAAE;YACT,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAChE,SAAA;AACI,aAAA;AACD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAA;KACJ;;2GAdQ,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,IAAI;mBAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;;;MCFX,gBAAgB,CAAA;AAA7B,IAAA,WAAA,GAAA;QAEI,IAAA,CAAA,UAAU,GAAG;YACT,SAAS,EAAE,UAAU,EAAE,OAAO;AAC9B,YAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;YAC9B,QAAQ,EAAE,WAAW,EAAE,SAAS;AAChC,YAAA,UAAU,EAAE,UAAU;SACzB,CAAC;QAEF,IAAA,CAAA,eAAe,GAAG;YACd,KAAK,EAAE,KAAK,EAAE,KAAK;AACnB,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YAC1B,KAAK,EAAE,KAAK,EAAE,KAAK;AACnB,YAAA,KAAK,EAAE,KAAK;SACf,CAAC;QAEF,IAAA,CAAA,QAAQ,GAAG;AACP,YAAA,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW;YAC1C,UAAU,EAAE,QAAQ,EAAE,UAAU;SACnC,CAAC;QAEF,IAAA,CAAA,aAAa,GAAG;AACZ,YAAA,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;YAC1B,KAAK,EAAE,KAAK,EAAE,KAAK;SACtB,CAAC;KAkLL;AA/KG,IAAA,MAAM,CAAC,KAAkB,EAAA;QACrB,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAClK;IAED,IAAI,GAAA;AACA,QAAA,OAAO,WAAW,CAAA;KACrB;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;KACzB;AAED,IAAA,SAAS,CAAC,IAAU,EAAA;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACnB,YAAA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACb,SAAA;AACD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;AACtC,YAAA,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AACD,QAAA,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AACzB,QAAA,OAAO,MAAM,CAAC;KACjB;AAED,IAAA,SAAS,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;AACjB,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAChH;AAED,IAAA,IAAI,CAAC,IAAU,EAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,IAAU,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAC9B;AAED,IAAA,GAAG,CAAC,IAAU,EAAE,IAAc,EAAE,MAAc,EAAA;AAC1C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC;gBACvB,MAAK;AACT,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC;gBACxB,MAAK;AACT,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC;gBAC1B,MAAK;AACT,YAAA,KAAK,OAAO;AACR,gBAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,gBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzB,gBAAA,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,GAAG,EAAE,EAAE;AACR,oBAAA,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;oBAChD,EAAE,IAAI,EAAE,CAAC;AACZ,iBAAA;;AAEG,oBAAA,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;AACjD,gBAAA,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACf,gBAAA,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;AAClB,gBAAA,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAK;AACT,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;gBAC/B,MAAK;AACT,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC3B,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,CAAC;AAC1C,gBAAA,KAAK,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAK;AACT,YAAA,KAAK,KAAK,CAAC;AACX,YAAA;AACI,gBAAA,KAAK,IAAI,QAAQ,GAAG,MAAM,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,GAAG,CAAC,IAAU,EAAE,IAAc,EAAE,KAAa,EAAA;QACzC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACrF,MAAM;AACV,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACrF,MAAM;AACV,YAAA,KAAK,MAAM;gBACP,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACvF,MAAM;YACV,QAAQ;AACR,YAAA,KAAK,KAAK;AACN,gBAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACrB,MAAM;AACV,YAAA,KAAK,MAAM;gBACP,MAAM;AACV,YAAA,KAAK,OAAO;AACR,gBAAA,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;gBACvC,MAAM;AACV,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACzB,MAAM;AACb,SAAA;QACD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7C;IAED,OAAO,CAAC,IAAU,EAAE,IAAc,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5E,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,QAAQ;AACR,YAAA,KAAK,KAAK;gBACN,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;gBACP,MAAM,KAAK,GAAG,CAAC,CAAC;AAChB,gBAAA,MAAM,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;AACrC,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;AACvE,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,YAAA,KAAK,OAAO;AACR,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAChB,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7D,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClB,gBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACjB,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChE,SAAA;KACJ;IAED,KAAK,CAAC,IAAU,EAAE,IAAc,EAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9E,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9D,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,QAAQ;AACR,YAAA,KAAK,KAAK;gBACN,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChC,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;gBACP,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACjE,YAAA,KAAK,OAAO;AACR,gBAAA,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1G,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnB,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAChE,SAAA;KACJ;AAED,IAAA,MAAM,CAAC,IAAU,EAAA;AACb,QAAA,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnD,QAAA,OAAO,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;KACnC;AACJ;;MC1MY,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;QAEI,IAAU,CAAA,UAAA,GAAG,CAAC,oEAAoE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE/F,IAAe,CAAA,eAAA,GAAG,CAAC,oEAAoE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpG,IAAQ,CAAA,QAAA,GAAG,CAAC,mDAAmD,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAE5E,IAAA,CAAA,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAqZ9C;AAlZG,IAAA,MAAM,CAAC,KAAkB,EAAA;AACrB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACrK;IAED,IAAI,GAAA;AACA,QAAA,OAAO,QAAQ,CAAA;KAClB;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;KAClC;AAED,IAAA,SAAS,CAAC,IAAU,EAAA;QAChB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;KAC1F;AAED,IAAA,SAAS,CAAC,IAAU,EAAA;AAChB,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACrD;AAED,IAAA,UAAU,CAAC,IAAU,EAAA;;AAEjB,QAAA,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;KAChH;AAED,IAAA,IAAI,CAAC,IAAU,EAAA;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;KACnC;AAED,IAAA,WAAW,CAAC,IAAU,EAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;KACpC;AAGD,IAAA,GAAG,CAAC,IAAU,EAAE,IAAc,EAAE,MAAc,EAAA;AAC1C,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC3B,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,IAAI,IAAI,GAAG,MAAM,CAAC;gBACvB,MAAK;AACT,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC;gBACxB,MAAK;AACT,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC;gBAC1B,MAAK;AACT,YAAA,KAAK,OAAO;AACR,gBAAA;AACI,oBAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,oBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,CAAC;oBACzB,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;oBAC/C,EAAE,IAAI,EAAE,CAAC;oBACT,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACpB,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAChC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,oBAAA,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAK;AACR,iBAAA;AACL,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,MAAM,CAAC;gBAC/B,MAAK;AACT,YAAA,KAAK,MAAM;AACP,gBAAA;;;;;AAKI,oBAAA,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,oBAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACjD,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAChC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAC1B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACxB,oBAAA,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAK;AACR,iBAAA;AACL,YAAA,KAAK,KAAK,CAAC;AACX,YAAA;AACI,gBAAA,KAAK,IAAI,QAAQ,GAAG,MAAM,CAAC;AAClC,SAAA;AACD,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KACvD;AAED,IAAA,GAAG,CAAC,IAAU,EAAE,IAAc,EAAE,KAAa,EAAA;QACzC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACnC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACrF,MAAM;AACV,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACrF,MAAM;AACV,YAAA,KAAK,MAAM;gBACP,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;gBACvF,MAAM;YACV,QAAQ;AACR,YAAA,KAAK,KAAK;AACN,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC/D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC/B,MAAM;AACV,YAAA,KAAK,MAAM;gBACP,MAAM;AACV,YAAA,KAAK,OAAO;AACR,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9D,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClC,MAAM;AACV,YAAA,KAAK,MAAM;AACP,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/D,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxC,MAAM;AACb,SAAA;QACD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;KAC7C;IAED,OAAO,CAAC,IAAU,EAAE,IAAc,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5E,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1C,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,QAAQ;AACR,YAAA,KAAK,KAAK;gBACN,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACpG,YAAA,KAAK,OAAO;AACR,gBAAA;oBACI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAClC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1C,oBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,iBAAA;AACL,YAAA,KAAK,MAAM;AACP,gBAAA;oBACI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACzC,oBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,iBAAA;AACR,SAAA;KACJ;IAED,KAAK,CAAC,IAAU,EAAE,IAAc,EAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACvC,QAAA,QAAQ,IAAI;AACR,YAAA,KAAK,QAAQ;gBACT,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9E,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,QAAQ;AACT,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9D,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC9C,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9C,QAAQ;AACR,YAAA,KAAK,KAAK;gBACN,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAChC,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,YAAA,KAAK,MAAM;AACP,gBAAA;oBACI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChE,iBAAA;AACL,YAAA,KAAK,OAAO;AACR,gBAAA;oBACI,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAClC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpC,oBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3C,oBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1D,iBAAA;AACL,YAAA,KAAK,MAAM;gBACP,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzB,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACjE,gBAAA,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,SAAA;KACJ;AAID,IAAA,QAAQ,CAAC,IAAU,EAAA;AACf,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC/B,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;AAC1B,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,OAAO;YACH,IAAI,EAAE,CAAC,CAAC,EAAE;YACV,KAAK,EAAE,CAAC,CAAC,EAAE;YACX,GAAG,EAAE,CAAC,CAAC,EAAE;SACZ,CAAA;KACJ;AAED;;AAEE;AACF,IAAA,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA;AAClB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;AACxC,QAAA,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACzC;AAED;;AAEE;AACF,IAAA,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA;AACd,QAAA,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI;AAC1B,YAAA,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;AACnB,YAAA,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;KAChD;AAED;;AAEE;AACF,IAAA,UAAU,CAAC,EAAE,EAAA;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;KACpC;AAED;;AAEE;IACF,WAAW,CAAC,EAAE,EAAE,EAAE,EAAA;QACd,IAAI,EAAE,IAAI,CAAC;AAAE,YAAA,OAAO,EAAE,CAAA;QACtB,IAAI,EAAE,IAAI,EAAE;AAAE,YAAA,OAAO,EAAE,CAAA;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAAE,YAAA,OAAO,EAAE,CAAA;AAClC,QAAA,OAAO,EAAE,CAAA;KACZ;AAGO,IAAA,MAAM,CAAC,EAAE,EAAA;;QAEb,IAAI,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AAC7D,YAAA,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;AACzD,SAAA,EACK,EAAE,GAAG,MAAM,CAAC,MAAM,EAClB,EAAE,GAAG,EAAE,GAAG,GAAG,EACb,KAAK,GAAG,CAAC,EAAE,EACX,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,EACd,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,CAAC,EACD,CAAC,CAAA;QAEP,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAA;;QAGjD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;AACd,YAAA,IAAI,GAAG,EAAE,GAAG,EAAE,CAAA;YACd,IAAI,EAAE,GAAG,EAAE;gBACP,MAAK;AACT,YAAA,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YACxE,EAAE,GAAG,EAAE,CAAA;AACV,SAAA;AACD,QAAA,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;;;AAIX,QAAA,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACtE,QAAA,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;YAC1C,KAAK,IAAI,CAAC,CAAA;;AAGd,QAAA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;;AAGxE,QAAA,KAAK,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK,CAAA;;AAG1B,QAAA,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC;AACZ,YAAA,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAA;QAC9C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AAC3C,QAAA,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;YACb,IAAI,GAAG,CAAC,CAAA;AACX,SAAA;QAED,OAAO;AACH,YAAA,IAAI,EAAE,IAAI;AACR,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,KAAK,EAAE,KAAK;SACjB,CAAA;KACJ;AAED;;;;;;AAME;AACM,IAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA;QAClB,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACvB,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC1F;AAED;;;;;;;AAOE;AACM,IAAA,GAAG,CAAC,GAAG,EAAA;QACX,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACnB,UAAA,EAAE,GAAG,EAAE,GAAG,GAAG,EACb,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAChC,EAAE,EACF,EAAE,EACF,CAAC,CAAA;;AAGP,QAAA,CAAC,GAAG,GAAG,GAAG,KAAK,CAAA;QACf,IAAI,CAAC,IAAI,CAAC,EAAE;YACR,IAAI,CAAC,IAAI,GAAG,EAAE;;gBAEV,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACxB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;gBACxB,OAAO;AACH,oBAAA,EAAE,EAAE,EAAE;AACJ,oBAAA,EAAE,EAAE,EAAE;AACN,oBAAA,EAAE,EAAE,EAAE;iBACX,CAAA;AACJ,aAAA;AAAM,iBAAA;;gBAEH,CAAC,IAAI,GAAG,CAAA;AACX,aAAA;AACJ,SAAA;AAAM,aAAA;;YAEH,EAAE,IAAI,CAAC,CAAA;YACP,CAAC,IAAI,GAAG,CAAA;AACR,YAAA,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAA;AACb,SAAA;QACD,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACxB,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QACxB,OAAO;AACH,YAAA,EAAE,EAAE,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;SACX,CAAA;KACJ;AAGO,IAAA,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAA;QAClB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,CAAC,CAAC;AACzD,cAAA,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;cAC3C,EAAE,GAAG,QAAQ,CAAA;AACnB,QAAA,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAA;AAC/E,QAAA,OAAO,CAAC,CAAA;KACX;AAGO,IAAA,GAAG,CAAC,GAAG,EAAA;QACX,IAAI,CAAC,EACC,CAAC,EACD,EAAE,EACF,EAAE,EACF,EAAE,CAAA;AACR,QAAA,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAA;AACvB,QAAA,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;QACzE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;AAC5C,QAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;AACtC,QAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAA;QACvC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;QACrD,OAAO;AACH,YAAA,EAAE,EAAE,EAAE;AACJ,YAAA,EAAE,EAAE,EAAE;AACN,YAAA,EAAE,EAAE,EAAE;SACX,CAAA;KACJ;AAED;;AAEE;IACM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAA;AACZ,QAAA,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;KACnB;IAEO,GAAG,CAAC,CAAC,EAAE,CAAC,EAAA;QACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;KAC3B;AAEJ;;MClZY,gBAAgB,CAAA;AAEzB,IAAA,WAAA,GAAA;QACI,QAAQ,CAAC,GAAG,CAAC;AACT,YAAA,QAAQ,EAAE;AACN,gBAAA,SAAS,EAAE;oBACP,MAAM,EAAE,IAAI,cAAc,EAAE;oBAC5B,SAAS,EAAE,IAAI,gBAAgB,EAAE;AACpC,iBAAA;AACD,gBAAA,QAAQ,EAAC,WAAW;AACpB,gBAAA,eAAe,EAAC,kBAAkB;AACrC,aAAA;AACJ,SAAA,CAAC,CAAC;KAEN;;6GAdQ,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;8GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAHV,cAAc,CAAA,EAAA,OAAA,EAAA,CADnB,cAAc,CAAA,EAAA,CAAA,CAAA;8GAIf,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,YAAY,EAAE,CAAC,cAAc,CAAC;AAC9B,oBAAA,SAAS,EAAE,EAAE;iBAChB,CAAA;;;ACZD;;AAEG;;;;"}
1
+ {"version":3,"file":"acorex-core-dateTime.mjs","sources":["../../../../projects/acorex/core/dateTime/src/datetime.class.ts","../../../../projects/acorex/core/dateTime/src/datetime.pipe.ts","../../../../projects/acorex/core/dateTime/src/georgian.calendar.ts","../../../../projects/acorex/core/dateTime/src/jalali.calendar.ts","../../../../projects/acorex/core/dateTime/src/datetime.module.ts","../../../../projects/acorex/core/dateTime/acorex-core-dateTime.ts"],"sourcesContent":["import * as _ from 'lodash';\r\nimport { AXConfig } from '@acorex/core/config';\r\n\r\nexport type TimeUnit =\r\n | 'ms'\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXDateValue {\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours?: number,\r\n minutes?: number,\r\n seconds?: number,\r\n ms?: number\r\n calendar: string;\r\n}\r\n\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayOfMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayOfWeek(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n weekOfYear(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n create(value: AXDateValue): AXDateTime;\r\n}\r\n\r\n\r\n\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: Date | AXDateTime | string,\r\n calendar: string = AXConfig.get('dateTime.calendar')\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date!;\r\n }\r\n\r\n static from(value: AXDateValue = {\r\n calendar: AXConfig.get('dateTime.calendar'),\r\n year: 1,\r\n month: 1,\r\n date: 1,\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n }): AXDateTime {\r\n // let date: AXDateTime = new AXDateTime(new Date(), value.calendar);\r\n // date.set('year', value.year);\r\n // date.set('month', value.month);\r\n // date.set('day', value.date);\r\n // date.set('hour', value.hours);\r\n // date.set('minute', value.minutes);\r\n // date.set('second', value.seconds);\r\n // date.set('ms', value.ms);\r\n\r\n return AXDateTime.resolveCalendar(value.calendar).create(value);\r\n }\r\n\r\n\r\n static resolveCalendar(calendar: string | AXCalendar): AXCalendar {\r\n return typeof calendar == 'string'\r\n ? AXConfig.get(`dateTime.calendars.${calendar}`)\r\n : calendar;\r\n }\r\n\r\n\r\n private _date: Date;\r\n\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get(`dateTime.calendar`)\r\n ) {\r\n this._calendar = AXDateTime.resolveCalendar(calendar);\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n //TODO: parse jalali\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar);\r\n }\r\n\r\n get dayOfMonth(): number {\r\n return this._calendar.dayOfMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayOfWeek(): number {\r\n return this._calendar.dayOfWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get weekOfYear(): number {\r\n return this._calendar.weekOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: Date | AXDateTime,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n private _formatKeys = {\r\n ss: () => this.pad(this.date.getSeconds(), 2),\r\n s: () => this.date.getSeconds().toString(),\r\n //\r\n dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\r\n d: () => this.calendar.dayOfMonth(this.date).toString(),\r\n //\r\n mm: () => this.pad(this.date.getMinutes(), 2),\r\n m: () => this.date.getMinutes().toString(),\r\n //\r\n MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],\r\n MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],\r\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\r\n //\r\n DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],\r\n DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],\r\n //\r\n yyyy: () => this.calendar.year(this.date).toString(),\r\n YYYY: () => this.calendar.year(this.date).toString(),\r\n yy: () => this.calendar.year(this.date).toString().substring(2),\r\n YY: () => this.calendar.year(this.date).toString().substring(2),\r\n //\r\n HH: () => this.pad(this.date.getHours(), 2),\r\n H: () => this.date.getHours().toString(),\r\n //\r\n hh: () => this.pad((this.date.getHours() % 12 || 12), 2),\r\n h: () => (this.date.getHours() % 12 || 12).toString(),\r\n //\r\n A: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n a: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n };\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat')\r\n ): string {\r\n const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), c => c.length, ['desc']).join(\"|\"), \"gi\");\r\n return format.replace(re, (matched) => {\r\n return this._formatKeys[matched]();\r\n });\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(format: string = AXConfig.get('dateTime.shortDateFormat')): string {\r\n return this.format(format);\r\n }\r\n\r\n equal(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n return this.compare(value, unit) == 0;\r\n }\r\n\r\n compare(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n const val = AXDateTime.convert(value, this.calendar.name());\r\n const func = (v1: number, v2: number) => {\r\n if (v1 == v2) {\r\n return 0;\r\n } else if (v1 > v2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n let p = 0;\r\n switch (unit) {\r\n case 'year':\r\n return func(this.year, val.year);\r\n case 'week':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\r\n case 'month':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\r\n case 'day':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\r\n case 'hour':\r\n p = this.compare(val, 'day');\r\n return p == 0 ? func(this.hour, val.hour) : p;\r\n case 'minute':\r\n p = this.compare(val, 'hour');\r\n return p == 0 ? func(this.minute, val.minute) : p;\r\n case 'second':\r\n p = this.compare(val, 'minute');\r\n return p == 0 ? func(this.second, val.second) : p;\r\n default:\r\n return func(this.date.getTime(), val.date.getTime());\r\n }\r\n\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n private _startTime: AXDateTime;\r\n private _endTime: AXDateTime;\r\n\r\n public get startTime(): AXDateTime {\r\n return this._startTime;\r\n }\r\n\r\n public get endTime(): AXDateTime {\r\n return this._endTime;\r\n }\r\n\r\n constructor(startTime: AXDateTime, endTime: AXDateTime) {\r\n this._startTime = startTime;\r\n this._endTime = endTime;\r\n }\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this._startTime.date.getTime();\r\n const endTime = this._endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day', amount: number = 1): AXDateTime[] {\r\n const result: AXDateTime[] = [];\r\n let item = this._startTime.clone();\r\n while (item.compare(this._endTime, unit) < 1) {\r\n if (!result.some(c => c.equal(item, unit))) {\r\n result.push(item);\r\n }\r\n item = item.add(unit, amount)\r\n }\r\n return result;\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.format(AXConfig.get('dateTime.shortDateFormat'));\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n let result = 0;\r\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (this.isLeap(date)) {\r\n m[1] = 29;\r\n }\r\n for (let i = 0; i < date.getMonth(); i++) {\r\n result = result + m[i];\r\n }\r\n result += date.getDate();\r\n return result;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = yv.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n clone.setDate(value);\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n clone.setMonth(Math.max(0, value - 1));\r\n break;\r\n case \"year\":\r\n clone.setFullYear(value);\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const index = 0;\r\n const start = index >= 0 ? index : 0;\r\n const day = clone.getDay();\r\n const diff = clone.getDate() - day + (start > day ? start - 7 : start);\r\n clone.setDate(diff);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n\r\n isLeap(date: Date) {\r\n let leapYear = new Date(date.getFullYear(), 1, 29);\r\n return leapYear.getDate() == 29;\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class JalaliCalendar implements AXCalendar {\r\n\r\n monthNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n monthShortNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n dayNames = (\"شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه\").split(\"_\");\r\n\r\n dayShortNames = \"ش_ی_د_س_چ_پ_ج\".split(\"_\");\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n const a = this.toGregorian(value.year, value.month, value.date);\r\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'jalali'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return this.toJalali(date).day;\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const j = this.toJalali(date);\r\n return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n //TODO : apply jalali\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return this.toJalali(date).year;\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return this.toJalali(date).month;\r\n }\r\n\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n {\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const nm = (jm + amount);\r\n const ny = (nm % 12) ? Math.floor(nm / 12) : 0;\r\n jy += ny;\r\n jm = nm - (ny * 12);\r\n const vv = this.toGregorian(jy, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n {\r\n // const v = new Date(value);\r\n // v.setFullYear(v.getFullYear() + amount);\r\n // value = v.valueOf();\r\n // break\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const vv = this.toGregorian(jy + amount, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n const jDate = this.toJalali(clone);\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\r\n clone.setDate(gDate.getDate());\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\r\n clone.setMonth(gDate2.getMonth());\r\n break;\r\n case \"year\":\r\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\r\n clone.setFullYear(gDate3.getFullYear());\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\r\n case \"month\":\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const gDate = this.toGregorian(jy, jm, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n case \"year\":\r\n {\r\n const jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 1, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n {\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n }\r\n case 'month':\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const jd = this.monthLength(jy, jm);\r\n const gDate = this.toGregorian(jy, jm, jd);\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n case \"year\":\r\n let jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n }\r\n\r\n\r\n\r\n toJalali(date: Date): { year: number, month: number, day: number } {\r\n const gy = date.getFullYear();\r\n const gm = date.getMonth() + 1;\r\n const gd = date.getDate();\r\n const r = this.d2j(this.g2d(gy, gm, gd))\r\n return {\r\n year: r.jy,\r\n month: r.jm,\r\n day: r.jd,\r\n }\r\n }\r\n\r\n /*\r\n Converts a Jalaali date to Gregorian.\r\n */\r\n toGregorian(jy, jm, jd) {\r\n const g = this.d2g(this.j2d(jy, jm, jd))\r\n return new Date(g.gy, g.gm - 1, g.gd);\r\n }\r\n\r\n /*\r\n Checks whether a Jalaali date is valid or not.\r\n */\r\n isValid(jy, jm, jd) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= this.monthLength(jy, jm)\r\n }\r\n\r\n /*\r\n Is this a leap year or not?\r\n */\r\n isLeapYear(jy) {\r\n return this.jalCal(jy).leap === 0\r\n }\r\n\r\n /*\r\n Number of days in a given month in a Jalaali year.\r\n */\r\n monthLength(jy, jm) {\r\n if (jm <= 6) return 31\r\n if (jm <= 11) return 30\r\n if (this.isLeapYear(jy)) return 30\r\n return 29\r\n }\r\n\r\n\r\n private jalCal(jy) {\r\n // Jalaali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210\r\n , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\r\n ]\r\n , bl = breaks.length\r\n , gy = jy + 621\r\n , leapJ = -14\r\n , jp = breaks[0]\r\n , jm\r\n , jump\r\n , leap\r\n , leapG\r\n , march\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n // Find the limiting years for the Jalaali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4)\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalaali year in the Persian calendar.\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4)\r\n if (this.mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n march = 20 + leapJ - leapG\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + this.div(jump + 4, 33) * 33\r\n leap = this.mod(this.mod(n + 1, 33) - 1, 4)\r\n if (leap === -1) {\r\n leap = 4\r\n }\r\n\r\n return {\r\n leap: leap\r\n , gy: gy\r\n , march: march\r\n }\r\n }\r\n\r\n /*\r\n Converts a date of the Jalaali calendar to the Julian Day number.\r\n @param jy Jalaali year (1 to 3100)\r\n @param jm Jalaali month (1 to 12)\r\n @param jd Jalaali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\n private j2d(jy, jm, jd) {\r\n let r = this.jalCal(jy)\r\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1\r\n }\r\n\r\n /*\r\n Converts the Julian Day number to a date in the Jalaali calendar.\r\n @param jdn Julian Day number\r\n @return\r\n jy: Jalaali year (1 to 3100)\r\n jm: Jalaali month (1 to 12)\r\n jd: Jalaali day (1 to 29/31)\r\n */\r\n private d2j(jdn) {\r\n let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).\r\n , jy = gy - 621\r\n , r = this.jalCal(jy)\r\n , jdn1f = this.g2d(gy, 3, r.march)\r\n , jd\r\n , jm\r\n , k\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1f\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + this.div(k, 31)\r\n jd = this.mod(k, 31) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n } else {\r\n // The remaining months.\r\n k -= 186\r\n }\r\n } else {\r\n // Previous Jalaali year.\r\n jy -= 1\r\n k += 179\r\n if (r.leap === 1)\r\n k += 1\r\n }\r\n jm = 7 + this.div(k, 30)\r\n jd = this.mod(k, 30) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n }\r\n\r\n\r\n private g2d(gy, gm, gd) {\r\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)\r\n + this.div(153 * this.mod(gm + 9, 12) + 2, 5)\r\n + gd - 34840408\r\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752\r\n return d\r\n }\r\n\r\n\r\n private d2g(jdn) {\r\n let j\r\n , i\r\n , gd\r\n , gm\r\n , gy\r\n j = 4 * jdn + 139361631\r\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\r\n i = this.div(this.mod(j, 1461), 4) * 5 + 308\r\n gd = this.div(this.mod(i, 153), 5) + 1\r\n gm = this.mod(this.div(i, 153), 12) + 1\r\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6)\r\n return {\r\n gy: gy\r\n , gm: gm\r\n , gd: gd\r\n }\r\n }\r\n\r\n /*\r\n Utility helper functions.\r\n */\r\n private div(a, b) {\r\n return ~~(a / b)\r\n }\r\n\r\n private mod(a, b) {\r\n return a - ~~(a / b) * b\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\nimport { GeorgianCalendar } from './georgian.calendar';\r\nimport { JalaliCalendar } from './jalali.calendar';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule {\r\n\r\n constructor() {\r\n AXConfig.set({\r\n dateTime: {\r\n calendars: {\r\n jalali: new JalaliCalendar(),\r\n gregorian: new GeorgianCalendar()\r\n },\r\n calendar:'gregorian',\r\n shortDateFormat:'DDDD, d MMM yyyy'\r\n }\r\n });\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -281,11 +281,12 @@ class AXDateTimeRange {
281
281
  return result;
282
282
  }
283
283
  enumurate(unit = 'day', amount = 1) {
284
- // TODO: setptemper savingtime issue
285
284
  const result = [];
286
285
  let item = this._startTime.clone();
287
286
  while (item.compare(this._endTime, unit) < 1) {
288
- result.push(item);
287
+ if (!result.some(c => c.equal(item, unit))) {
288
+ result.push(item);
289
+ }
289
290
  item = item.add(unit, amount);
290
291
  }
291
292
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-core-dateTime.mjs","sources":["../../../../projects/acorex/core/dateTime/src/datetime.class.ts","../../../../projects/acorex/core/dateTime/src/datetime.pipe.ts","../../../../projects/acorex/core/dateTime/src/georgian.calendar.ts","../../../../projects/acorex/core/dateTime/src/jalali.calendar.ts","../../../../projects/acorex/core/dateTime/src/datetime.module.ts","../../../../projects/acorex/core/dateTime/acorex-core-dateTime.ts"],"sourcesContent":["import * as _ from 'lodash';\r\nimport { AXConfig } from '@acorex/core/config';\r\n\r\nexport type TimeUnit =\r\n | 'ms'\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXDateValue {\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours?: number,\r\n minutes?: number,\r\n seconds?: number,\r\n ms?: number\r\n calendar: string;\r\n}\r\n\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayOfMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayOfWeek(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n weekOfYear(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n create(value: AXDateValue): AXDateTime;\r\n}\r\n\r\n\r\n\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: Date | AXDateTime | string,\r\n calendar: string = AXConfig.get('dateTime.calendar')\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date!;\r\n }\r\n\r\n static from(value: AXDateValue = {\r\n calendar: AXConfig.get('dateTime.calendar'),\r\n year: 1,\r\n month: 1,\r\n date: 1,\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n }): AXDateTime {\r\n // let date: AXDateTime = new AXDateTime(new Date(), value.calendar);\r\n // date.set('year', value.year);\r\n // date.set('month', value.month);\r\n // date.set('day', value.date);\r\n // date.set('hour', value.hours);\r\n // date.set('minute', value.minutes);\r\n // date.set('second', value.seconds);\r\n // date.set('ms', value.ms);\r\n\r\n return AXDateTime.resolveCalendar(value.calendar).create(value);\r\n }\r\n\r\n\r\n static resolveCalendar(calendar: string | AXCalendar): AXCalendar {\r\n return typeof calendar == 'string'\r\n ? AXConfig.get(`dateTime.calendars.${calendar}`)\r\n : calendar;\r\n }\r\n\r\n\r\n private _date: Date;\r\n\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get(`dateTime.calendar`)\r\n ) {\r\n this._calendar = AXDateTime.resolveCalendar(calendar);\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n //TODO: parse jalali\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar);\r\n }\r\n\r\n get dayOfMonth(): number {\r\n return this._calendar.dayOfMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayOfWeek(): number {\r\n return this._calendar.dayOfWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get weekOfYear(): number {\r\n return this._calendar.weekOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: Date | AXDateTime,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n private _formatKeys = {\r\n ss: () => this.pad(this.date.getSeconds(), 2),\r\n s: () => this.date.getSeconds().toString(),\r\n //\r\n dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\r\n d: () => this.calendar.dayOfMonth(this.date).toString(),\r\n //\r\n mm: () => this.pad(this.date.getMinutes(), 2),\r\n m: () => this.date.getMinutes().toString(),\r\n //\r\n MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],\r\n MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],\r\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\r\n //\r\n DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],\r\n DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],\r\n //\r\n yyyy: () => this.calendar.year(this.date).toString(),\r\n YYYY: () => this.calendar.year(this.date).toString(),\r\n yy: () => this.calendar.year(this.date).toString().substring(2),\r\n YY: () => this.calendar.year(this.date).toString().substring(2),\r\n //\r\n HH: () => this.pad(this.date.getHours(), 2),\r\n H: () => this.date.getHours().toString(),\r\n //\r\n hh: () => this.pad((this.date.getHours() % 12 || 12), 2),\r\n h: () => (this.date.getHours() % 12 || 12).toString(),\r\n //\r\n A: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n a: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n };\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat')\r\n ): string {\r\n const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), c => c.length, ['desc']).join(\"|\"), \"gi\");\r\n return format.replace(re, (matched) => {\r\n return this._formatKeys[matched]();\r\n });\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(format: string = AXConfig.get('dateTime.shortDateFormat')): string {\r\n return this.format(format);\r\n }\r\n\r\n equal(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n return this.compare(value, unit) == 0;\r\n }\r\n\r\n compare(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n const val = AXDateTime.convert(value, this.calendar.name());\r\n const func = (v1: number, v2: number) => {\r\n if (v1 == v2) {\r\n return 0;\r\n } else if (v1 > v2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n let p = 0;\r\n switch (unit) {\r\n case 'year':\r\n return func(this.year, val.year);\r\n case 'week':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\r\n case 'month':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\r\n case 'day':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\r\n case 'hour':\r\n p = this.compare(val, 'day');\r\n return p == 0 ? func(this.hour, val.hour) : p;\r\n case 'minute':\r\n p = this.compare(val, 'hour');\r\n return p == 0 ? func(this.minute, val.minute) : p;\r\n case 'second':\r\n p = this.compare(val, 'minute');\r\n return p == 0 ? func(this.second, val.second) : p;\r\n default:\r\n return func(this.date.getTime(), val.date.getTime());\r\n }\r\n\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n private _startTime: AXDateTime;\r\n private _endTime: AXDateTime;\r\n\r\n public get startTime(): AXDateTime {\r\n return this._startTime;\r\n }\r\n\r\n public get endTime(): AXDateTime {\r\n return this._endTime;\r\n }\r\n\r\n constructor(startTime: AXDateTime, endTime: AXDateTime) {\r\n this._startTime = startTime;\r\n this._endTime = endTime;\r\n }\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this._startTime.date.getTime();\r\n const endTime = this._endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day', amount: number = 1): AXDateTime[] {\r\n // TODO: setptemper savingtime issue\r\n const result: AXDateTime[] = [];\r\n let item = this._startTime.clone();\r\n while (item.compare(this._endTime, unit) < 1) {\r\n result.push(item);\r\n item = item.add(unit, amount)\r\n }\r\n return result;\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.format(AXConfig.get('dateTime.shortDateFormat'));\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n let result = 0;\r\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (this.isLeap(date)) {\r\n m[1] = 29;\r\n }\r\n for (let i = 0; i < date.getMonth(); i++) {\r\n result = result + m[i];\r\n }\r\n result += date.getDate();\r\n return result;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = yv.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n clone.setDate(value);\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n clone.setMonth(Math.max(0, value - 1));\r\n break;\r\n case \"year\":\r\n clone.setFullYear(value);\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const index = 0;\r\n const start = index >= 0 ? index : 0;\r\n const day = clone.getDay();\r\n const diff = clone.getDate() - day + (start > day ? start - 7 : start);\r\n clone.setDate(diff);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n\r\n isLeap(date: Date) {\r\n let leapYear = new Date(date.getFullYear(), 1, 29);\r\n return leapYear.getDate() == 29;\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class JalaliCalendar implements AXCalendar {\r\n\r\n monthNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n monthShortNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n dayNames = (\"شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه\").split(\"_\");\r\n\r\n dayShortNames = \"ش_ی_د_س_چ_پ_ج\".split(\"_\");\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n const a = this.toGregorian(value.year, value.month, value.date);\r\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'jalali'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return this.toJalali(date).day;\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const j = this.toJalali(date);\r\n return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n //TODO : apply jalali\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return this.toJalali(date).year;\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return this.toJalali(date).month;\r\n }\r\n\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n {\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const nm = (jm + amount);\r\n const ny = (nm % 12) ? Math.floor(nm / 12) : 0;\r\n jy += ny;\r\n jm = nm - (ny * 12);\r\n const vv = this.toGregorian(jy, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n {\r\n // const v = new Date(value);\r\n // v.setFullYear(v.getFullYear() + amount);\r\n // value = v.valueOf();\r\n // break\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const vv = this.toGregorian(jy + amount, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n const jDate = this.toJalali(clone);\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\r\n clone.setDate(gDate.getDate());\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\r\n clone.setMonth(gDate2.getMonth());\r\n break;\r\n case \"year\":\r\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\r\n clone.setFullYear(gDate3.getFullYear());\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\r\n case \"month\":\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const gDate = this.toGregorian(jy, jm, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n case \"year\":\r\n {\r\n const jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 1, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n {\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n }\r\n case 'month':\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const jd = this.monthLength(jy, jm);\r\n const gDate = this.toGregorian(jy, jm, jd);\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n case \"year\":\r\n let jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n }\r\n\r\n\r\n\r\n toJalali(date: Date): { year: number, month: number, day: number } {\r\n const gy = date.getFullYear();\r\n const gm = date.getMonth() + 1;\r\n const gd = date.getDate();\r\n const r = this.d2j(this.g2d(gy, gm, gd))\r\n return {\r\n year: r.jy,\r\n month: r.jm,\r\n day: r.jd,\r\n }\r\n }\r\n\r\n /*\r\n Converts a Jalaali date to Gregorian.\r\n */\r\n toGregorian(jy, jm, jd) {\r\n const g = this.d2g(this.j2d(jy, jm, jd))\r\n return new Date(g.gy, g.gm - 1, g.gd);\r\n }\r\n\r\n /*\r\n Checks whether a Jalaali date is valid or not.\r\n */\r\n isValid(jy, jm, jd) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= this.monthLength(jy, jm)\r\n }\r\n\r\n /*\r\n Is this a leap year or not?\r\n */\r\n isLeapYear(jy) {\r\n return this.jalCal(jy).leap === 0\r\n }\r\n\r\n /*\r\n Number of days in a given month in a Jalaali year.\r\n */\r\n monthLength(jy, jm) {\r\n if (jm <= 6) return 31\r\n if (jm <= 11) return 30\r\n if (this.isLeapYear(jy)) return 30\r\n return 29\r\n }\r\n\r\n\r\n private jalCal(jy) {\r\n // Jalaali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210\r\n , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\r\n ]\r\n , bl = breaks.length\r\n , gy = jy + 621\r\n , leapJ = -14\r\n , jp = breaks[0]\r\n , jm\r\n , jump\r\n , leap\r\n , leapG\r\n , march\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n // Find the limiting years for the Jalaali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4)\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalaali year in the Persian calendar.\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4)\r\n if (this.mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n march = 20 + leapJ - leapG\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + this.div(jump + 4, 33) * 33\r\n leap = this.mod(this.mod(n + 1, 33) - 1, 4)\r\n if (leap === -1) {\r\n leap = 4\r\n }\r\n\r\n return {\r\n leap: leap\r\n , gy: gy\r\n , march: march\r\n }\r\n }\r\n\r\n /*\r\n Converts a date of the Jalaali calendar to the Julian Day number.\r\n @param jy Jalaali year (1 to 3100)\r\n @param jm Jalaali month (1 to 12)\r\n @param jd Jalaali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\n private j2d(jy, jm, jd) {\r\n let r = this.jalCal(jy)\r\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1\r\n }\r\n\r\n /*\r\n Converts the Julian Day number to a date in the Jalaali calendar.\r\n @param jdn Julian Day number\r\n @return\r\n jy: Jalaali year (1 to 3100)\r\n jm: Jalaali month (1 to 12)\r\n jd: Jalaali day (1 to 29/31)\r\n */\r\n private d2j(jdn) {\r\n let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).\r\n , jy = gy - 621\r\n , r = this.jalCal(jy)\r\n , jdn1f = this.g2d(gy, 3, r.march)\r\n , jd\r\n , jm\r\n , k\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1f\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + this.div(k, 31)\r\n jd = this.mod(k, 31) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n } else {\r\n // The remaining months.\r\n k -= 186\r\n }\r\n } else {\r\n // Previous Jalaali year.\r\n jy -= 1\r\n k += 179\r\n if (r.leap === 1)\r\n k += 1\r\n }\r\n jm = 7 + this.div(k, 30)\r\n jd = this.mod(k, 30) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n }\r\n\r\n\r\n private g2d(gy, gm, gd) {\r\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)\r\n + this.div(153 * this.mod(gm + 9, 12) + 2, 5)\r\n + gd - 34840408\r\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752\r\n return d\r\n }\r\n\r\n\r\n private d2g(jdn) {\r\n let j\r\n , i\r\n , gd\r\n , gm\r\n , gy\r\n j = 4 * jdn + 139361631\r\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\r\n i = this.div(this.mod(j, 1461), 4) * 5 + 308\r\n gd = this.div(this.mod(i, 153), 5) + 1\r\n gm = this.mod(this.div(i, 153), 12) + 1\r\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6)\r\n return {\r\n gy: gy\r\n , gm: gm\r\n , gd: gd\r\n }\r\n }\r\n\r\n /*\r\n Utility helper functions.\r\n */\r\n private div(a, b) {\r\n return ~~(a / b)\r\n }\r\n\r\n private mod(a, b) {\r\n return a - ~~(a / b) * b\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\nimport { GeorgianCalendar } from './georgian.calendar';\r\nimport { JalaliCalendar } from './jalali.calendar';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule {\r\n\r\n constructor() {\r\n AXConfig.set({\r\n dateTime: {\r\n calendars: {\r\n jalali: new JalaliCalendar(),\r\n gregorian: new GeorgianCalendar()\r\n },\r\n calendar:'gregorian',\r\n shortDateFormat:'DDDD, d MMM yyyy'\r\n }\r\n });\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-core-dateTime.mjs","sources":["../../../../projects/acorex/core/dateTime/src/datetime.class.ts","../../../../projects/acorex/core/dateTime/src/datetime.pipe.ts","../../../../projects/acorex/core/dateTime/src/georgian.calendar.ts","../../../../projects/acorex/core/dateTime/src/jalali.calendar.ts","../../../../projects/acorex/core/dateTime/src/datetime.module.ts","../../../../projects/acorex/core/dateTime/acorex-core-dateTime.ts"],"sourcesContent":["import * as _ from 'lodash';\r\nimport { AXConfig } from '@acorex/core/config';\r\n\r\nexport type TimeUnit =\r\n | 'ms'\r\n | 'second'\r\n | 'minute'\r\n | 'hour'\r\n | 'day'\r\n | 'month'\r\n | 'year'\r\n | 'week';\r\n\r\nexport interface AXDateValue {\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours?: number,\r\n minutes?: number,\r\n seconds?: number,\r\n ms?: number\r\n calendar: string;\r\n}\r\n\r\n\r\nexport interface AXCalendar {\r\n monthNames: string[];\r\n\r\n monthShortNames: string[];\r\n\r\n dayNames: string[];\r\n\r\n dayShortNames: string[];\r\n\r\n name(): string;\r\n\r\n dayOfMonth(date: Date): number;\r\n\r\n dayOfYear(date: Date): number;\r\n\r\n dayOfWeek(date: Date): number;\r\n\r\n monthOfYear(date: Date): number;\r\n\r\n weekOfYear(date: Date): number;\r\n\r\n year(date: Date): number;\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime;\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime;\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime;\r\n\r\n create(value: AXDateValue): AXDateTime;\r\n}\r\n\r\n\r\n\r\n\r\n// @dynamic\r\nexport class AXDateTime {\r\n static convert(\r\n value: Date | AXDateTime | string,\r\n calendar: string = AXConfig.get('dateTime.calendar')\r\n ): AXDateTime {\r\n let date: AXDateTime;\r\n if (typeof value === 'string' || value instanceof String) {\r\n date = new AXDateTime(value as string, calendar);\r\n } else if (value instanceof Date) {\r\n date = new AXDateTime(value as Date, calendar);\r\n } else if (value instanceof AXDateTime) {\r\n date = new AXDateTime(value.date, calendar);\r\n }\r\n return date!;\r\n }\r\n\r\n static from(value: AXDateValue = {\r\n calendar: AXConfig.get('dateTime.calendar'),\r\n year: 1,\r\n month: 1,\r\n date: 1,\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0,\r\n ms: 0\r\n }): AXDateTime {\r\n // let date: AXDateTime = new AXDateTime(new Date(), value.calendar);\r\n // date.set('year', value.year);\r\n // date.set('month', value.month);\r\n // date.set('day', value.date);\r\n // date.set('hour', value.hours);\r\n // date.set('minute', value.minutes);\r\n // date.set('second', value.seconds);\r\n // date.set('ms', value.ms);\r\n\r\n return AXDateTime.resolveCalendar(value.calendar).create(value);\r\n }\r\n\r\n\r\n static resolveCalendar(calendar: string | AXCalendar): AXCalendar {\r\n return typeof calendar == 'string'\r\n ? AXConfig.get(`dateTime.calendars.${calendar}`)\r\n : calendar;\r\n }\r\n\r\n\r\n private _date: Date;\r\n\r\n get date(): Date {\r\n return this._date;\r\n }\r\n\r\n private _calendar: AXCalendar;\r\n get calendar(): AXCalendar {\r\n return this._calendar;\r\n }\r\n\r\n\r\n\r\n constructor(\r\n value: Date | string = new Date(),\r\n calendar: string | AXCalendar = AXConfig.get(`dateTime.calendar`)\r\n ) {\r\n this._calendar = AXDateTime.resolveCalendar(calendar);\r\n if (value instanceof Date) {\r\n this._date = value as Date;\r\n } else {\r\n //TODO: parse jalali\r\n this._date = new Date(value);\r\n }\r\n }\r\n\r\n clone(): AXDateTime {\r\n return new AXDateTime(this.date, this.calendar);\r\n }\r\n\r\n get dayOfMonth(): number {\r\n return this._calendar.dayOfMonth(this.date);\r\n }\r\n\r\n get dayOfYear(): number {\r\n return this._calendar.dayOfYear(this.date);\r\n }\r\n\r\n get dayOfWeek(): number {\r\n return this._calendar.dayOfWeek(this.date);\r\n }\r\n\r\n get hour(): number {\r\n return this._date.getHours();\r\n }\r\n\r\n get minute(): number {\r\n return this._date.getMinutes();\r\n }\r\n\r\n get second(): number {\r\n return this._date.getSeconds();\r\n }\r\n\r\n get year(): number {\r\n return this._calendar.year(this.date);\r\n }\r\n\r\n get monthOfYear(): number {\r\n return this._calendar.monthOfYear(this.date);\r\n }\r\n\r\n get weekOfYear(): number {\r\n return this._calendar.weekOfYear(this.date);\r\n }\r\n\r\n get month(): AXCalendarMonth {\r\n return new AXCalendarMonth(this);\r\n }\r\n\r\n add(unit: TimeUnit, amount: number): AXDateTime {\r\n return this._calendar.add(this.date, unit, amount);\r\n }\r\n\r\n set(unit: TimeUnit = 'day', value: number): AXDateTime {\r\n return this._calendar.set(this.date, unit, value);\r\n }\r\n\r\n duration(\r\n end: Date | AXDateTime,\r\n unit: TimeUnit = 'day'\r\n ): AXTimeSpan {\r\n const range = new AXDateTimeRange(\r\n this,\r\n AXDateTime.convert(end, this.calendar.name())\r\n );\r\n return range.duration();\r\n }\r\n\r\n startOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.startOf(this.date, unit);\r\n }\r\n\r\n endOf(unit: TimeUnit = 'day'): AXDateTime {\r\n return this._calendar.endOf(this.date, unit);\r\n }\r\n\r\n private _formatKeys = {\r\n ss: () => this.pad(this.date.getSeconds(), 2),\r\n s: () => this.date.getSeconds().toString(),\r\n //\r\n dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),\r\n d: () => this.calendar.dayOfMonth(this.date).toString(),\r\n //\r\n mm: () => this.pad(this.date.getMinutes(), 2),\r\n m: () => this.date.getMinutes().toString(),\r\n //\r\n MMMM: () => this.calendar.monthNames[this.calendar.monthOfYear(this.date) - 1],\r\n MMM: () => this.calendar.monthShortNames[this.calendar.monthOfYear(this.date) - 1],\r\n MM: () => this.pad(this.calendar.monthOfYear(this.date), 2),\r\n //\r\n DDDD: () => this.calendar.dayNames[this.calendar.dayOfWeek(this.date) - 1],\r\n DDD: () => this.calendar.dayShortNames[this.calendar.dayOfWeek(this.date) - 1],\r\n //\r\n yyyy: () => this.calendar.year(this.date).toString(),\r\n YYYY: () => this.calendar.year(this.date).toString(),\r\n yy: () => this.calendar.year(this.date).toString().substring(2),\r\n YY: () => this.calendar.year(this.date).toString().substring(2),\r\n //\r\n HH: () => this.pad(this.date.getHours(), 2),\r\n H: () => this.date.getHours().toString(),\r\n //\r\n hh: () => this.pad((this.date.getHours() % 12 || 12), 2),\r\n h: () => (this.date.getHours() % 12 || 12).toString(),\r\n //\r\n A: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n a: () => (this.date.getHours() < 12) ? 'am' : 'pm',\r\n };\r\n\r\n format(\r\n format: string = AXConfig.get('dateTime.shortDateFormat')\r\n ): string {\r\n const re = new RegExp(_.orderBy(Object.keys(this._formatKeys), c => c.length, ['desc']).join(\"|\"), \"gi\");\r\n return format.replace(re, (matched) => {\r\n return this._formatKeys[matched]();\r\n });\r\n }\r\n\r\n private pad(n, width, z = '0') {\r\n n = n + '';\r\n return n.length >= width ? n : new Array(width - n.length + 1).join(z) + n;\r\n }\r\n\r\n toString(format: string = AXConfig.get('dateTime.shortDateFormat')): string {\r\n return this.format(format);\r\n }\r\n\r\n equal(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n return this.compare(value, unit) == 0;\r\n }\r\n\r\n compare(value: Date | AXDateTime, unit: TimeUnit = 'day') {\r\n const val = AXDateTime.convert(value, this.calendar.name());\r\n const func = (v1: number, v2: number) => {\r\n if (v1 == v2) {\r\n return 0;\r\n } else if (v1 > v2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n let p = 0;\r\n switch (unit) {\r\n case 'year':\r\n return func(this.year, val.year);\r\n case 'week':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.weekOfYear, val.weekOfYear) : p;\r\n case 'month':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.monthOfYear, val.monthOfYear) : p;\r\n case 'day':\r\n p = this.compare(val, 'year');\r\n return p == 0 ? func(this.dayOfYear, val.dayOfYear) : p;\r\n case 'hour':\r\n p = this.compare(val, 'day');\r\n return p == 0 ? func(this.hour, val.hour) : p;\r\n case 'minute':\r\n p = this.compare(val, 'hour');\r\n return p == 0 ? func(this.minute, val.minute) : p;\r\n case 'second':\r\n p = this.compare(val, 'minute');\r\n return p == 0 ? func(this.second, val.second) : p;\r\n default:\r\n return func(this.date.getTime(), val.date.getTime());\r\n }\r\n\r\n }\r\n\r\n convert(calendar: string) {\r\n return AXDateTime.convert(this, calendar);\r\n }\r\n}\r\n\r\nexport class AXCalendarMonth {\r\n private _range: AXDateTimeRange;\r\n public get range(): AXDateTimeRange {\r\n return this._range;\r\n }\r\n public set range(v: AXDateTimeRange) {\r\n this._range = v;\r\n }\r\n\r\n constructor(date: AXDateTime) {\r\n this.index = date.date.getMonth();\r\n this.name = date.format('MMMM');\r\n this.range = new AXDateTimeRange(\r\n new AXDateTime(date.startOf('month').date, date.calendar),\r\n new AXDateTime(date.endOf('month').date, date.calendar)\r\n );\r\n }\r\n\r\n private readonly index: number;\r\n private readonly name: string;\r\n}\r\n\r\nexport interface AXTimeSpanTotal {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n weeks: number;\r\n months: number;\r\n years: number;\r\n}\r\n\r\nexport interface AXTimeSpan {\r\n miliseconds: number;\r\n seconds: number;\r\n minutes: number;\r\n hours: number;\r\n days: number;\r\n months: number;\r\n years: number;\r\n total: AXTimeSpanTotal;\r\n}\r\n\r\nexport class AXDateTimeRange {\r\n private _startTime: AXDateTime;\r\n private _endTime: AXDateTime;\r\n\r\n public get startTime(): AXDateTime {\r\n return this._startTime;\r\n }\r\n\r\n public get endTime(): AXDateTime {\r\n return this._endTime;\r\n }\r\n\r\n constructor(startTime: AXDateTime, endTime: AXDateTime) {\r\n this._startTime = startTime;\r\n this._endTime = endTime;\r\n }\r\n\r\n duration(): AXTimeSpan {\r\n const result: AXTimeSpan = {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n months: 0,\r\n years: 0,\r\n total: {\r\n miliseconds: 0,\r\n seconds: 0,\r\n minutes: 0,\r\n hours: 0,\r\n days: 0,\r\n weeks: 0,\r\n months: 0,\r\n years: 0,\r\n },\r\n };\r\n\r\n const one_second = 1000;\r\n const one_min = one_second * 60;\r\n const one_hour = one_min * 60;\r\n const one_day = one_hour * 24;\r\n const one_week = one_day * 7;\r\n const one_year = 365.25 * one_day;\r\n const one_month = one_year / 12;\r\n const startTime = this._startTime.date.getTime();\r\n const endTime = this._endTime.date.getTime();\r\n const diff = Math.abs(endTime - startTime);\r\n //\r\n result.total.miliseconds = diff;\r\n result.total.seconds = Number((diff / one_second).toFixed(2));\r\n result.total.minutes = Number((diff / one_min).toFixed(2));\r\n result.total.hours = Number((diff / one_hour).toFixed(2));\r\n result.total.days = Number((diff / one_day).toFixed(2));\r\n result.total.weeks = Number((diff / one_week).toFixed(2));\r\n //\r\n // let months = (this.endTime.year - this.startTime.year) * 12;\r\n // months += this.endTime.monthOfYear - this.startTime.monthOfYear + 1;\r\n // if (this.endTime.dayOfYear < this.startTime.dayOfYear) {\r\n // months--;\r\n // }\r\n // result.total.months = Math.abs(months);\r\n // TODO: review\r\n result.total.months = Number((diff / one_month).toFixed(2));\r\n result.total.years = Number((diff / one_year).toFixed(2));\r\n //\r\n result.miliseconds = result.total.miliseconds % 1000;\r\n result.seconds = Number((result.total.seconds % 60).toFixed(0));\r\n result.minutes = Number((result.total.minutes % 60).toFixed(0));\r\n result.hours = Number((result.total.hours % 24).toFixed(0));\r\n // TODO: review\r\n result.days = Number((result.total.days % 30.4).toFixed(0));\r\n result.months = Number((result.total.months % 12).toFixed(0));\r\n result.years = Number(result.total.years.toFixed(0));\r\n return result;\r\n }\r\n\r\n enumurate(unit: TimeUnit = 'day', amount: number = 1): AXDateTime[] {\r\n const result: AXDateTime[] = [];\r\n let item = this._startTime.clone();\r\n while (item.compare(this._endTime, unit) < 1) {\r\n if (!result.some(c => c.equal(item, unit))) {\r\n result.push(item);\r\n }\r\n item = item.add(unit, amount)\r\n }\r\n return result;\r\n }\r\n\r\n includes(value: AXDateTime, unit: TimeUnit = 'day'): boolean {\r\n // TODO: ??\r\n return true;\r\n }\r\n\r\n // getViewCompaire(view) {\r\n // switch (view) {\r\n // case 'day':\r\n // return 'YMD';\r\n // case 'month':\r\n // return 'YM';\r\n // case 'year':\r\n // return 'Y';\r\n // }\r\n // }\r\n}\r\n","import { PipeTransform, Pipe } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTime } from './datetime.class';\r\n\r\n@Pipe({ name: 'axDate' })\r\nexport class AXDateTimePipe implements PipeTransform {\r\n constructor() { }\r\n\r\n transform(value: any, format?: string, calendar?: string): string {\r\n if (value == null) {\r\n return '';\r\n }\r\n const date: AXDateTime = value instanceof AXDateTime ? value.clone() : AXDateTime.convert(value, calendar);\r\n if (!format) {\r\n return date.format(AXConfig.get('dateTime.shortDateFormat'));\r\n }\r\n else {\r\n return date.format(format);\r\n }\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class GeorgianCalendar implements AXCalendar {\r\n\r\n monthNames = [\r\n \"January\", \"February\", \"March\",\r\n \"April\", \"May\", \"June\", \"July\",\r\n \"August\", \"September\", \"October\",\r\n \"November\", \"December\"\r\n ];\r\n\r\n monthShortNames = [\r\n \"Jan\", \"Feb\", \"Mar\",\r\n \"Apr\", \"May\", \"Jun\", \"Jul\",\r\n \"Aug\", \"Sep\", \"Oct\",\r\n \"Nov\", \"Dec\"\r\n ];\r\n\r\n dayNames = [\r\n \"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\",\r\n \"Thursday\", \"Friday\", \"Saturday\"\r\n ];\r\n\r\n dayShortNames = [\r\n \"Sun\", \"Mon\", \"Tue\", \"Wed\",\r\n \"Thu\", \"Fri\", \"Sat\"\r\n ];\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n return new AXDateTime(new Date(value.year, value.month - 1, value.date, value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'gregorian'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return date.getDate();\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n let result = 0;\r\n let m = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (this.isLeap(date)) {\r\n m[1] = 29;\r\n }\r\n for (let i = 0; i < date.getMonth(); i++) {\r\n result = result + m[i];\r\n }\r\n result += date.getDate();\r\n return result;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() + 1;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return date.getFullYear();\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return date.getMonth() + 1;\r\n }\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n const v = new Date(value);\r\n var mo = date.getMonth();\r\n var yr = date.getFullYear();\r\n mo = (mo + amount) % 12;\r\n if (0 > mo) {\r\n yr += (date.getMonth() + amount - mo - 12) / 12;\r\n mo += 12;\r\n }\r\n else\r\n yr += ((date.getMonth() + amount - mo) / 12);\r\n v.setMonth(mo);\r\n v.setFullYear(yr);\r\n value = v.valueOf();\r\n break\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n const yv = new Date(value);\r\n yv.setFullYear(yv.getFullYear() + amount);\r\n value = yv.valueOf();\r\n break\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n clone.setDate(value);\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n clone.setMonth(Math.max(0, value - 1));\r\n break;\r\n case \"year\":\r\n clone.setFullYear(value);\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n const index = 0;\r\n const start = index >= 0 ? index : 0;\r\n const day = clone.getDay();\r\n const diff = clone.getDate() - day + (start > day ? start - 7 : start);\r\n clone.setDate(diff);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"month\":\r\n clone.setDate(1)\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n case \"year\":\r\n clone.setMonth(0);\r\n clone.setDate(1);\r\n return new AXDateTime(clone, this.name()).startOf('day');\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n case 'month':\r\n return new AXDateTime(new Date(date.getFullYear(), date.getMonth() + 1, 0), this.name()).endOf('day');\r\n case \"year\":\r\n clone.setMonth(11);\r\n return new AXDateTime(clone, this.name()).endOf('month');\r\n }\r\n }\r\n\r\n isLeap(date: Date) {\r\n let leapYear = new Date(date.getFullYear(), 1, 29);\r\n return leapYear.getDate() == 29;\r\n }\r\n}","import { AXCalendar, AXDateTime, AXDateValue, TimeUnit } from \"./datetime.class\";\r\n\r\nexport class JalaliCalendar implements AXCalendar {\r\n\r\n monthNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n monthShortNames = (\"فروردین_اردیبهشت_خرداد_تیر_مرداد_شهریور_مهر_آبان_آذر_دی_بهمن_اسفند\").split(\"_\");\r\n\r\n dayNames = (\"شنبه_یکشنبه_دوشنبه_سه شنبه_چهارشنبه_پنج شنبه_جمعه\").split(\"_\");\r\n\r\n dayShortNames = \"ش_ی_د_س_چ_پ_ج\".split(\"_\");\r\n\r\n\r\n create(value: AXDateValue): AXDateTime {\r\n const a = this.toGregorian(value.year, value.month, value.date);\r\n return new AXDateTime(new Date(a.getFullYear(), a.getMonth(), a.getDate(), value.hours || 0, value.minutes || 0, value.seconds || 0, value.ms || 0), this.name());\r\n }\r\n\r\n name(): string {\r\n return 'jalali'\r\n }\r\n\r\n dayOfMonth(date: Date): number {\r\n return this.toJalali(date).day;\r\n }\r\n\r\n dayOfYear(date: Date): number {\r\n const j = this.toJalali(date);\r\n return (j.month <= 6 ? ((j.month - 1) * 31) : ((6 * 31) + (j.month - 7) * 30)) + j.day;\r\n }\r\n\r\n dayOfWeek(date: Date): number {\r\n return date.getDay() == 6 ? 1 : date.getDay() + 2;\r\n }\r\n\r\n weekOfYear(date: Date): number {\r\n //TODO : apply jalali\r\n const firstDay = new AXDateTime(date).startOf('year');\r\n return Math.ceil((((date.getTime() - firstDay.date.getTime()) / 86400000) + firstDay.date.getDay() + 1) / 7);\r\n }\r\n\r\n year(date: Date): number {\r\n return this.toJalali(date).year;\r\n }\r\n\r\n monthOfYear(date: Date): number {\r\n return this.toJalali(date).month;\r\n }\r\n\r\n\r\n add(date: Date, unit: TimeUnit, amount: number): AXDateTime {\r\n let value = date.valueOf();\r\n switch (unit) {\r\n case 'second':\r\n value += 1000 * amount;\r\n break\r\n case 'minute':\r\n value += 60000 * amount;\r\n break\r\n case 'hour':\r\n value += 3600000 * amount;\r\n break\r\n case 'month':\r\n {\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const nm = (jm + amount);\r\n const ny = (nm % 12) ? Math.floor(nm / 12) : 0;\r\n jy += ny;\r\n jm = nm - (ny * 12);\r\n const vv = this.toGregorian(jy, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'week':\r\n value += 7 * 86400000 * amount;\r\n break\r\n case 'year':\r\n {\r\n // const v = new Date(value);\r\n // v.setFullYear(v.getFullYear() + amount);\r\n // value = v.valueOf();\r\n // break\r\n const v = new Date(value);\r\n let jd = this.dayOfMonth(date);\r\n let jm = this.monthOfYear(date);\r\n let jy = this.year(date);\r\n const vv = this.toGregorian(jy + amount, jm, jd);\r\n v.setFullYear(vv.getFullYear());\r\n v.setMonth(vv.getMonth());\r\n v.setDate(vv.getDate());\r\n value = v.valueOf();\r\n break\r\n }\r\n case 'day':\r\n default:\r\n value += 86400000 * amount;\r\n }\r\n return new AXDateTime(new Date(value), this.name());\r\n }\r\n\r\n set(date: Date, unit: TimeUnit, value: number): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n const jDate = this.toJalali(clone);\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), value, clone.getMilliseconds());\r\n break;\r\n case 'minute':\r\n clone.setHours(clone.getHours(), value, clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n case 'hour':\r\n clone.setHours(value, clone.getMinutes(), clone.getSeconds(), clone.getMilliseconds());\r\n break;\r\n default:\r\n case 'day':\r\n const gDate = this.toGregorian(jDate.year, jDate.month, value);\r\n clone.setDate(gDate.getDate());\r\n break;\r\n case \"week\":\r\n break;\r\n case \"month\":\r\n const gDate2 = this.toGregorian(jDate.year, value, jDate.day);\r\n clone.setMonth(gDate2.getMonth());\r\n break;\r\n case \"year\":\r\n const gDate3 = this.toGregorian(value, jDate.month, jDate.day);\r\n clone.setFullYear(gDate3.getFullYear());\r\n break;\r\n }\r\n return new AXDateTime(clone, this.name());\r\n }\r\n\r\n startOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(0, 0, 0, 0);\r\n return new AXDateTime(clone, this.name());\r\n case \"week\":\r\n return new AXDateTime(clone, this.name()).add('day', -this.dayOfWeek(clone) + 1).startOf('day');\r\n case \"month\":\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const gDate = this.toGregorian(jy, jm, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n case \"year\":\r\n {\r\n const jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 1, 1);\r\n return new AXDateTime(gDate, this.name()).startOf('day');\r\n }\r\n }\r\n }\r\n\r\n endOf(date: Date, unit: TimeUnit): AXDateTime {\r\n const clone = new Date(date.valueOf());\r\n switch (unit) {\r\n case 'second':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), clone.getSeconds(), 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'minute':\r\n clone.setHours(clone.getHours(), clone.getMinutes(), 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'hour':\r\n clone.setHours(clone.getHours(), 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n default:\r\n case 'day':\r\n clone.setHours(23, 59, 59, 999);\r\n return new AXDateTime(clone, this.name());\r\n case 'week':\r\n {\r\n return this.startOf(date, 'week').add('day', 6).endOf('day');\r\n }\r\n case 'month':\r\n {\r\n const jy = this.year(date);\r\n const jm = this.monthOfYear(date);\r\n const jd = this.monthLength(jy, jm);\r\n const gDate = this.toGregorian(jy, jm, jd);\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n case \"year\":\r\n let jy = this.year(date);\r\n const gDate = this.toGregorian(jy, 12, this.monthLength(jy, 12));\r\n return new AXDateTime(gDate, this.name()).endOf('day');\r\n }\r\n }\r\n\r\n\r\n\r\n toJalali(date: Date): { year: number, month: number, day: number } {\r\n const gy = date.getFullYear();\r\n const gm = date.getMonth() + 1;\r\n const gd = date.getDate();\r\n const r = this.d2j(this.g2d(gy, gm, gd))\r\n return {\r\n year: r.jy,\r\n month: r.jm,\r\n day: r.jd,\r\n }\r\n }\r\n\r\n /*\r\n Converts a Jalaali date to Gregorian.\r\n */\r\n toGregorian(jy, jm, jd) {\r\n const g = this.d2g(this.j2d(jy, jm, jd))\r\n return new Date(g.gy, g.gm - 1, g.gd);\r\n }\r\n\r\n /*\r\n Checks whether a Jalaali date is valid or not.\r\n */\r\n isValid(jy, jm, jd) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= this.monthLength(jy, jm)\r\n }\r\n\r\n /*\r\n Is this a leap year or not?\r\n */\r\n isLeapYear(jy) {\r\n return this.jalCal(jy).leap === 0\r\n }\r\n\r\n /*\r\n Number of days in a given month in a Jalaali year.\r\n */\r\n monthLength(jy, jm) {\r\n if (jm <= 6) return 31\r\n if (jm <= 11) return 30\r\n if (this.isLeapYear(jy)) return 30\r\n return 29\r\n }\r\n\r\n\r\n private jalCal(jy) {\r\n // Jalaali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210\r\n , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\r\n ]\r\n , bl = breaks.length\r\n , gy = jy + 621\r\n , leapJ = -14\r\n , jp = breaks[0]\r\n , jm\r\n , jump\r\n , leap\r\n , leapG\r\n , march\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n // Find the limiting years for the Jalaali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4)\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalaali year in the Persian calendar.\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4)\r\n if (this.mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n leapG = this.div(gy, 4) - this.div((this.div(gy, 100) + 1) * 3, 4) - 150\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n march = 20 + leapJ - leapG\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + this.div(jump + 4, 33) * 33\r\n leap = this.mod(this.mod(n + 1, 33) - 1, 4)\r\n if (leap === -1) {\r\n leap = 4\r\n }\r\n\r\n return {\r\n leap: leap\r\n , gy: gy\r\n , march: march\r\n }\r\n }\r\n\r\n /*\r\n Converts a date of the Jalaali calendar to the Julian Day number.\r\n @param jy Jalaali year (1 to 3100)\r\n @param jm Jalaali month (1 to 12)\r\n @param jd Jalaali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\n private j2d(jy, jm, jd) {\r\n let r = this.jalCal(jy)\r\n return this.g2d(r.gy, 3, r.march) + (jm - 1) * 31 - this.div(jm, 7) * (jm - 7) + jd - 1\r\n }\r\n\r\n /*\r\n Converts the Julian Day number to a date in the Jalaali calendar.\r\n @param jdn Julian Day number\r\n @return\r\n jy: Jalaali year (1 to 3100)\r\n jm: Jalaali month (1 to 12)\r\n jd: Jalaali day (1 to 29/31)\r\n */\r\n private d2j(jdn) {\r\n let gy = this.d2g(jdn).gy // Calculate Gregorian year (gy).\r\n , jy = gy - 621\r\n , r = this.jalCal(jy)\r\n , jdn1f = this.g2d(gy, 3, r.march)\r\n , jd\r\n , jm\r\n , k\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1f\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + this.div(k, 31)\r\n jd = this.mod(k, 31) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n } else {\r\n // The remaining months.\r\n k -= 186\r\n }\r\n } else {\r\n // Previous Jalaali year.\r\n jy -= 1\r\n k += 179\r\n if (r.leap === 1)\r\n k += 1\r\n }\r\n jm = 7 + this.div(k, 30)\r\n jd = this.mod(k, 30) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n }\r\n\r\n\r\n private g2d(gy, gm, gd) {\r\n let d = this.div((gy + this.div(gm - 8, 6) + 100100) * 1461, 4)\r\n + this.div(153 * this.mod(gm + 9, 12) + 2, 5)\r\n + gd - 34840408\r\n d = d - this.div(this.div(gy + 100100 + this.div(gm - 8, 6), 100) * 3, 4) + 752\r\n return d\r\n }\r\n\r\n\r\n private d2g(jdn) {\r\n let j\r\n , i\r\n , gd\r\n , gm\r\n , gy\r\n j = 4 * jdn + 139361631\r\n j = j + this.div(this.div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\r\n i = this.div(this.mod(j, 1461), 4) * 5 + 308\r\n gd = this.div(this.mod(i, 153), 5) + 1\r\n gm = this.mod(this.div(i, 153), 12) + 1\r\n gy = this.div(j, 1461) - 100100 + this.div(8 - gm, 6)\r\n return {\r\n gy: gy\r\n , gm: gm\r\n , gd: gd\r\n }\r\n }\r\n\r\n /*\r\n Utility helper functions.\r\n */\r\n private div(a, b) {\r\n return ~~(a / b)\r\n }\r\n\r\n private mod(a, b) {\r\n return a - ~~(a / b) * b\r\n }\r\n\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXConfig } from '@acorex/core/config';\r\nimport { AXDateTimePipe } from './datetime.pipe';\r\nimport { GeorgianCalendar } from './georgian.calendar';\r\nimport { JalaliCalendar } from './jalali.calendar';\r\n\r\n\r\n@NgModule({\r\n imports: [],\r\n exports: [AXDateTimePipe],\r\n declarations: [AXDateTimePipe],\r\n providers: [],\r\n})\r\nexport class AXDateTimeModule {\r\n\r\n constructor() {\r\n AXConfig.set({\r\n dateTime: {\r\n calendars: {\r\n jalali: new JalaliCalendar(),\r\n gregorian: new GeorgianCalendar()\r\n },\r\n calendar:'gregorian',\r\n shortDateFormat:'DDDD, d MMM yyyy'\r\n }\r\n });\r\n\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acorex/core",
3
- "version": "6.0.2",
3
+ "version": "6.0.5",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },