@acorex/core 7.20.0 → 7.21.0

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.
Files changed (54) hide show
  1. package/esm2022/config/lib/configs.service.mjs +3 -3
  2. package/esm2022/dateTime/lib/calendar.service.mjs +3 -3
  3. package/esm2022/dateTime/lib/datetime.class.mjs +2 -2
  4. package/esm2022/dateTime/lib/datetime.module.mjs +4 -4
  5. package/esm2022/dateTime/lib/datetime.pipe.mjs +3 -3
  6. package/esm2022/dateTime/lib/formatters/datetime-formatter.mjs +3 -3
  7. package/esm2022/dateTime/lib/formatters/timeleft-formatter.mjs +3 -3
  8. package/esm2022/dateTime/lib/georgian.calendar.mjs +37 -24
  9. package/esm2022/dateTime/lib/jalali.calendar.mjs +34 -15
  10. package/esm2022/events/lib/event.service.mjs +3 -3
  11. package/esm2022/file/lib/file-size-formatter.mjs +3 -3
  12. package/esm2022/file/lib/file.module.mjs +4 -4
  13. package/esm2022/file/lib/file.service.mjs +3 -3
  14. package/esm2022/format/lib/format.module.mjs +4 -4
  15. package/esm2022/format/lib/format.pipe.mjs +3 -3
  16. package/esm2022/format/lib/format.service.mjs +6 -6
  17. package/esm2022/format/lib/formatters/number-formatter.mjs +3 -3
  18. package/esm2022/image/lib/image.service.mjs +3 -3
  19. package/esm2022/pipes/lib/safe/safe.pipe.mjs +3 -3
  20. package/esm2022/platform/lib/platform.service.mjs +3 -3
  21. package/esm2022/storage/cookie-storage.service.mjs +3 -3
  22. package/esm2022/storage/local-storage.service.mjs +3 -3
  23. package/esm2022/storage/session-storage.service.mjs +3 -3
  24. package/esm2022/translation/lib/translation.module.mjs +4 -4
  25. package/esm2022/translation/lib/translation.service.mjs +3 -3
  26. package/esm2022/translation/lib/translator.directive.mjs +3 -3
  27. package/esm2022/translation/lib/translator.pipe.mjs +3 -3
  28. package/esm2022/utils/lib/auto-unsubscribe.mjs +3 -3
  29. package/esm2022/validation/lib/rules/between-rule.mjs +3 -3
  30. package/esm2022/validation/lib/rules/callback-rule.mjs +3 -3
  31. package/esm2022/validation/lib/rules/equal-rule.mjs +3 -3
  32. package/esm2022/validation/lib/rules/greater-than.mjs +3 -3
  33. package/esm2022/validation/lib/rules/length-rule.mjs +3 -3
  34. package/esm2022/validation/lib/rules/less-than-rule.mjs +3 -3
  35. package/esm2022/validation/lib/rules/maxlength-rule.mjs +3 -3
  36. package/esm2022/validation/lib/rules/minlength-rule.mjs +3 -3
  37. package/esm2022/validation/lib/rules/regex-rule.mjs +3 -3
  38. package/esm2022/validation/lib/rules/required-rule.mjs +3 -3
  39. package/esm2022/validation/lib/validation.module.mjs +4 -4
  40. package/esm2022/validation/lib/validation.service.mjs +6 -6
  41. package/fesm2022/acorex-core-config.mjs +3 -3
  42. package/fesm2022/acorex-core-dateTime.mjs +86 -54
  43. package/fesm2022/acorex-core-dateTime.mjs.map +1 -1
  44. package/fesm2022/acorex-core-events.mjs +3 -3
  45. package/fesm2022/acorex-core-file.mjs +10 -10
  46. package/fesm2022/acorex-core-format.mjs +16 -16
  47. package/fesm2022/acorex-core-image.mjs +3 -3
  48. package/fesm2022/acorex-core-pipes.mjs +3 -3
  49. package/fesm2022/acorex-core-platform.mjs +3 -3
  50. package/fesm2022/acorex-core-storage.mjs +9 -9
  51. package/fesm2022/acorex-core-translation.mjs +13 -13
  52. package/fesm2022/acorex-core-utils.mjs +3 -3
  53. package/fesm2022/acorex-core-validation.mjs +40 -40
  54. package/package.json +1 -1
@@ -54,29 +54,48 @@ export class JalaliCalendar extends AXCalendar {
54
54
  value += 3600000 * amount;
55
55
  break;
56
56
  case 'month': {
57
- const v = new Date(value);
57
+ // const v = new Date(value);
58
+ // let jd = this.dayOfMonth(date);
59
+ // let jm = this.monthOfYear(date);
60
+ // let jy = this.year(date);
61
+ // const nm = jm + amount;
62
+ // const ny = nm % 12 ? Math.floor(nm / 12) : 0;
63
+ // jy += ny;
64
+ // jm = nm - ny * 12;
65
+ // const vv = this.toGregorian(jy, jm, jd);
66
+ // v.setFullYear(vv.getFullYear());
67
+ // v.setMonth(vv.getMonth());
68
+ // v.setDate(vv.getDate());
69
+ // value = v.valueOf();
70
+ // break;
58
71
  let jd = this.dayOfMonth(date);
59
72
  let jm = this.monthOfYear(date);
60
73
  let jy = this.year(date);
61
- const nm = jm + amount;
62
- const ny = nm % 12 ? Math.floor(nm / 12) : 0;
63
- jy += ny;
64
- jm = nm - ny * 12;
65
- const vv = this.toGregorian(jy, jm, jd);
66
- v.setFullYear(vv.getFullYear());
67
- v.setMonth(vv.getMonth());
68
- v.setDate(vv.getDate());
69
- value = v.valueOf();
74
+ let newMonth = jm + amount;
75
+ let yearsToAdd = Math.floor(newMonth / 12);
76
+ newMonth = newMonth % 12;
77
+ if (newMonth <= 0) {
78
+ newMonth += 12;
79
+ yearsToAdd--;
80
+ }
81
+ jy += yearsToAdd;
82
+ // Temporary set to first of the month to prevent rollover
83
+ const tempDate = this.toGregorian(jy, newMonth, 1);
84
+ const gregorianDate = new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());
85
+ // Adjust the day to either the original day or the last day of the new month, whichever is smaller
86
+ const lastDayOfNewMonth = this.jalaaliMonthLength(jy, newMonth); // Implement this method to find the last day in a Jalali month
87
+ jd = Math.min(jd, lastDayOfNewMonth);
88
+ const finalDate = this.toGregorian(jy, newMonth, jd);
89
+ gregorianDate.setFullYear(finalDate.getFullYear());
90
+ gregorianDate.setMonth(finalDate.getMonth());
91
+ gregorianDate.setDate(finalDate.getDate());
92
+ value = gregorianDate.valueOf();
70
93
  break;
71
94
  }
72
95
  case 'week':
73
96
  value += 7 * 86400000 * amount;
74
97
  break;
75
98
  case 'year': {
76
- // const v = new Date(value);
77
- // v.setFullYear(v.getFullYear() + amount);
78
- // value = v.valueOf();
79
- // break
80
99
  const v = new Date(value);
81
100
  let jd = this.dayOfMonth(date);
82
101
  let jm = this.monthOfYear(date);
@@ -401,4 +420,4 @@ export class JalaliCalendar extends AXCalendar {
401
420
  return a - ~~(a / b) * b;
402
421
  }
403
422
  }
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFsYWxpLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvamFsYWxpLmNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLFVBQVUsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRyxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFDNUM7O09BRUc7SUFDSCxZQUFZLE1BQXdCO1FBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUdoQjs7UUFFQTtRQUNRLFdBQU0sR0FBRztZQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNyRyxJQUFJO1NBQ0wsQ0FBQztJQVJGLENBQUM7SUFVRCxNQUFNLENBQUMsS0FBa0I7UUFDdkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxVQUFVLENBQ25CLElBQUksSUFBSSxDQUNOLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFDZixDQUFDLENBQUMsUUFBUSxFQUFFLEVBQ1osQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUNYLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUNoQixLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFDbEIsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQ2xCLEtBQUssQ0FB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QUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVLEVBQ1YsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsS0FBYSxDQUFDO1FBRWQsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLElBQUksQ0FDYixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsRUFDbkMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsRUFDL0IsQ0FBQyxJQUFJLENBQUMsRUFDTixDQUFDLElBQUksQ0FBQyxFQUNOLENBQUMsSUFBSSxDQUFDLEVBQ04sRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOztNQUVFO0lBRU0sR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEphbGFsaUNhbGVuZGFyIGV4dGVuZHMgQVhDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuICB9XG5cbiAgLypcbiAgSmFsYWFsaSB5ZWFycyBzdGFydGluZyB0aGUgMzMteWVhciBydWxlLlxuKi9cbiAgcHJpdmF0ZSBicmVha3MgPSBbXG4gICAgLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsXG4gICAgMzE3OCxcbiAgXTtcblxuICBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgYSA9IHRoaXMudG9HcmVnb3JpYW4odmFsdWUueWVhciwgdmFsdWUubW9udGgsIHZhbHVlLmRhdGUpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShcbiAgICAgIG5ldyBEYXRlKFxuICAgICAgICBhLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGEuZ2V0TW9udGgoKSxcbiAgICAgICAgYS5nZXREYXRlKCksXG4gICAgICAgIHZhbHVlLmhvdXJzIHx8IDAsXG4gICAgICAgIHZhbHVlLm1pbnV0ZXMgfHwgMCxcbiAgICAgICAgdmFsdWUuc2Vjb25kcyB8fCAwLFxuICAgICAgICB2YWx1ZS5tcyB8fCAwLFxuICAgICAgKSxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2phbGFsaSc7XG4gIH1cblxuICBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS5kYXk7XG4gIH1cblxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgaiA9IHRoaXMudG9KYWxhYWxpKGRhdGUpO1xuICAgIHJldHVybiAoai5tb250aCA8PSA2ID8gKGoubW9udGggLSAxKSAqIDMxIDogNiAqIDMxICsgKGoubW9udGggLSA3KSAqIDMwKSArIGouZGF5O1xuICB9XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpID09IDYgPyAxIDogZGF0ZS5nZXREYXkoKSArIDI7XG4gIH1cblxuICB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIC8vVE9ETyA6IGFwcGx5IGphbGFsaVxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcykuc3RhcnRPZigneWVhcicpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoXG4gICAgICAoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3LFxuICAgICk7XG4gIH1cblxuICB5ZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS55ZWFyO1xuICB9XG5cbiAgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9KYWxhYWxpKGRhdGUpLm1vbnRoO1xuICB9XG5cbiAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgbGV0IGpkID0gdGhpcy5kYXlPZk1vbnRoKGRhdGUpO1xuICAgICAgICBsZXQgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICBsZXQgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IG5tID0gam0gKyBhbW91bnQ7XG4gICAgICAgIGNvbnN0IG55ID0gbm0gJSAxMiA/IE1hdGguZmxvb3Iobm0gLyAxMikgOiAwO1xuICAgICAgICBqeSArPSBueTtcbiAgICAgICAgam0gPSBubSAtIG55ICogMTI7XG4gICAgICAgIGNvbnN0IHZ2ID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcbiAgICAgICAgdi5zZXRGdWxsWWVhcih2di5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgdi5zZXRNb250aCh2di5nZXRNb250aCgpKTtcbiAgICAgICAgdi5zZXREYXRlKHZ2LmdldERhdGUoKSk7XG4gICAgICAgIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICAvLyBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICAvLyB2LnNldEZ1bGxZZWFyKHYuZ2V0RnVsbFllYXIoKSArIGFtb3VudCk7XG4gICAgICAgIC8vIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIC8vIGJyZWFrXG4gICAgICAgIGNvbnN0IHYgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgIGxldCBqZCA9IHRoaXMuZGF5T2ZNb250aChkYXRlKTtcbiAgICAgICAgbGV0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgbGV0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCB2diA9IHRoaXMudG9HcmVnb3JpYW4oankgKyBhbW91bnQsIGptLCBqZCk7XG4gICAgICAgIHYuc2V0RnVsbFllYXIodnYuZ2V0RnVsbFllYXIoKSk7XG4gICAgICAgIHYuc2V0TW9udGgodnYuZ2V0TW9udGgoKSk7XG4gICAgICAgIHYuc2V0RGF0ZSh2di5nZXREYXRlKCkpO1xuICAgICAgICB2YWx1ZSA9IHYudmFsdWVPZigpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB2YWx1ZSArPSA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKG5ldyBEYXRlKHZhbHVlKSwgdGhpcyk7XG4gIH1cblxuICBzZXQoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQsIHZhbHVlOiBudW1iZXIpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBjb25zdCBqRGF0ZSA9IHRoaXMudG9KYWxhYWxpKGNsb25lKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgdmFsdWUsIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCB2YWx1ZSwgY2xvbmUuZ2V0U2Vjb25kcygpLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKHZhbHVlLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqRGF0ZS55ZWFyLCBqRGF0ZS5tb250aCwgdmFsdWUpO1xuICAgICAgICBjbG9uZS5zZXREYXRlKGdEYXRlLmdldERhdGUoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGdEYXRlMiA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgdmFsdWUsIGpEYXRlLmRheSk7XG4gICAgICAgIGNsb25lLnNldE1vbnRoKGdEYXRlMi5nZXRNb250aCgpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBnRGF0ZTMgPSB0aGlzLnRvR3JlZ29yaWFuKHZhbHVlLCBqRGF0ZS5tb250aCwgakRhdGUuZGF5KTtcbiAgICAgICAgY2xvbmUuc2V0RnVsbFllYXIoZ0RhdGUzLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgfVxuXG4gIHN0YXJ0T2YoZGF0ZTogRGF0ZSwgdW5pdDogVGltZVVuaXQpOiBBWERhdGVUaW1lIHtcbiAgICBjb25zdCBjbG9uZSA9IG5ldyBEYXRlKGRhdGUudmFsdWVPZigpKTtcbiAgICBzd2l0Y2ggKHVuaXQpIHtcbiAgICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgY2xvbmUuZ2V0U2Vjb25kcygpLCAwKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAnZGF5JzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKS5hZGQoJ2RheScsIC10aGlzLmRheU9mV2VlayhjbG9uZSkgKyAxKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3Qgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEsIDEpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLnN0YXJ0T2YoJ2RheScpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVuZE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGNhc2UgJ21pbnV0ZSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIGNsb25lLmdldE1pbnV0ZXMoKSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICd3ZWVrJzoge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFydE9mKGRhdGUsICd3ZWVrJykuYWRkKCdkYXknLCA2KS5lbmRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgamQgPSB0aGlzLmphbGFhbGlNb250aExlbmd0aChqeSwgam0pO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIGptLCBqZCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcykuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGdEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgMTIsIHRoaXMuamFsYWFsaU1vbnRoTGVuZ3RoKGp5LCAxMikpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZSh2YWx1ZTogc3RyaW5nKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgW3ksIE0sIGQsIGgsIG0sIHMsIG1zXSA9IHZhbHVlLnNwbGl0KC9bXmEtekEtWjAtOV0rL2dpKTtcbiAgICBjb25zdCBkYXRlID0gdGhpcy50b0dyZWdvcmlhbihOdW1iZXIoeSkgPz8gMCwgTnVtYmVyKE0pID8/IDEsIE51bWJlcihkKSA/PyAxKTtcbiAgICBpZiAoaCAhPSBudWxsKSBkYXRlLnNldEhvdXJzKE51bWJlcihoKSk7XG4gICAgaWYgKG0gIT0gbnVsbCkgZGF0ZS5zZXRNaW51dGVzKE51bWJlcihtKSk7XG4gICAgaWYgKHMgIT0gbnVsbCkgZGF0ZS5zZXRTZWNvbmRzKE51bWJlcihzKSk7XG4gICAgaWYgKG1zICE9IG51bGwpIGRhdGUuc2V0TWlsbGlzZWNvbmRzKE51bWJlcihkKSk7XG4gICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGRhdGUsIHRoaXMpO1xuICB9XG5cbiAgLypcbiAgQ29udmVydHMgYSBHcmVnb3JpYW4gZGF0ZSB0byBKYWxhYWxpLlxuKi9cbiAgdG9KYWxhYWxpKGRhdGU6IERhdGUpOiB7IHllYXI6IG51bWJlcjsgbW9udGg6IG51bWJlcjsgZGF5OiBudW1iZXIgfSB7XG4gICAgY29uc3QgZ2QgPSBkYXRlLmdldERhdGUoKTtcbiAgICBjb25zdCBnbSA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XG4gICAgY29uc3QgZ3kgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgY29uc3QgciA9IHRoaXMuZDJqKHRoaXMuZzJkKGd5LCBnbSwgZ2QpKTtcbiAgICByZXR1cm4ge1xuICAgICAgeWVhcjogci5qeSxcbiAgICAgIG1vbnRoOiByLmptLFxuICAgICAgZGF5OiByLmpkLFxuICAgIH07XG4gIH1cblxuICAvKlxuICAgIENvbnZlcnRzIGEgSmFsYWFsaSBkYXRlIHRvIEdyZWdvcmlhbi5cbiAgKi9cbiAgdG9HcmVnb3JpYW4oanksIGptLCBqZCk6IERhdGUge1xuICAgIGNvbnN0IGcgPSB0aGlzLmQyZyh0aGlzLmoyZChqeSwgam0sIGpkKSk7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGcuZ3ksIGcuZ20gLSAxLCBnLmdkKTtcbiAgfVxuXG4gIC8qXG4gICAgQ2hlY2tzIHdoZXRoZXIgYSBKYWxhYWxpIGRhdGUgaXMgdmFsaWQgb3Igbm90LlxuICAqL1xuICBpc1ZhbGlkSmFsYWFsaURhdGUoanksIGptLCBqZCkge1xuICAgIHJldHVybiBqeSA+PSAtNjEgJiYgankgPD0gMzE3NyAmJiBqbSA+PSAxICYmIGptIDw9IDEyICYmIGpkID49IDEgJiYgamQgPD0gdGhpcy5qYWxhYWxpTW9udGhMZW5ndGgoanksIGptKTtcbiAgfVxuXG4gIC8qXG4gICAgSXMgdGhpcyBhIGxlYXAgeWVhciBvciBub3Q/XG4gICovXG4gIGlzTGVhcEphbGFhbGlZZWFyKGp5KSB7XG4gICAgcmV0dXJuIHRoaXMuamFsQ2FsTGVhcChqeSkgPT09IDA7XG4gIH1cblxuICAvKlxuICAgIE51bWJlciBvZiBkYXlzIGluIGEgZ2l2ZW4gbW9udGggaW4gYSBKYWxhYWxpIHllYXIuXG4gICovXG4gIGphbGFhbGlNb250aExlbmd0aChqeSwgam0pIHtcbiAgICBpZiAoam0gPD0gNikgcmV0dXJuIDMxO1xuICAgIGlmIChqbSA8PSAxMSkgcmV0dXJuIDMwO1xuICAgIGlmICh0aGlzLmlzTGVhcEphbGFhbGlZZWFyKGp5KSkgcmV0dXJuIDMwO1xuICAgIHJldHVybiAyOTtcbiAgfVxuXG4gIC8qXG4gICAgICBUaGlzIGRldGVybWluZXMgaWYgdGhlIEphbGFhbGkgKFBlcnNpYW4pIHllYXIgaXNcbiAgICAgIGxlYXAgKDM2Ni1kYXkgbG9uZykgb3IgaXMgdGhlIGNvbW1vbiB5ZWFyICgzNjUgZGF5cylcbiAgXG4gICAgICBAcGFyYW0gankgSmFsYWFsaSBjYWxlbmRhciB5ZWFyICgtNjEgdG8gMzE3NylcbiAgICAgIEByZXR1cm5zIG51bWJlciBvZiB5ZWFycyBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIgKDAgdG8gNClcbiAgICovXG4gIHByaXZhdGUgamFsQ2FsTGVhcChqeTogbnVtYmVyKSB7XG4gICAgbGV0IGJsID0gdGhpcy5icmVha3MubGVuZ3RoLFxuICAgICAganAgPSB0aGlzLmJyZWFrc1swXSxcbiAgICAgIGptLFxuICAgICAganVtcCxcbiAgICAgIGxlYXAsXG4gICAgICBuLFxuICAgICAgaTtcblxuICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IHRoaXMuYnJlYWtzW2JsIC0gMV0pIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKYWxhYWxpIHllYXIgJyArIGp5KTtcblxuICAgIGZvciAoaSA9IDE7IGkgPCBibDsgaSArPSAxKSB7XG4gICAgICBqbSA9IHRoaXMuYnJlYWtzW2ldO1xuICAgICAganVtcCA9IGptIC0ganA7XG4gICAgICBpZiAoankgPCBqbSkgYnJlYWs7XG4gICAgICBqcCA9IGptO1xuICAgIH1cbiAgICBuID0gankgLSBqcDtcblxuICAgIGlmIChqdW1wIC0gbiA8IDYpIG4gPSBuIC0ganVtcCArIHRoaXMuZGl2KGp1bXAgKyA0LCAzMykgKiAzMztcbiAgICBsZWFwID0gdGhpcy5tb2QodGhpcy5tb2QobiArIDEsIDMzKSAtIDEsIDQpO1xuICAgIGlmIChsZWFwID09PSAtMSkge1xuICAgICAgbGVhcCA9IDQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxlYXA7XG4gIH1cblxuICBwcml2YXRlIGphbENhbChqeTogbnVtYmVyLCB3aXRob3V0TGVhcDogYm9vbGVhbikge1xuICAgIGxldCBibCA9IHRoaXMuYnJlYWtzLmxlbmd0aCxcbiAgICAgIGd5ID0gankgKyA2MjEsXG4gICAgICBsZWFwSiA9IC0xNCxcbiAgICAgIGpwID0gdGhpcy5icmVha3NbMF0sXG4gICAgICBqbSxcbiAgICAgIGp1bXAsXG4gICAgICBsZWFwLFxuICAgICAgbGVhcEcsXG4gICAgICBtYXJjaCxcbiAgICAgIG4sXG4gICAgICBpO1xuXG4gICAgaWYgKGp5IDwganAgfHwgankgPj0gdGhpcy5icmVha3NbYmwgLSAxXSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEphbGFhbGkgeWVhciAnICsgankpO1xuXG4gICAgLy8gRmluZCB0aGUgbGltaXRpbmcgeWVhcnMgZm9yIHRoZSBKYWxhYWxpIHllYXIgankuXG4gICAgZm9yIChpID0gMTsgaSA8IGJsOyBpICs9IDEpIHtcbiAgICAgIGptID0gdGhpcy5icmVha3NbaV07XG4gICAgICBqdW1wID0gam0gLSBqcDtcbiAgICAgIGlmIChqeSA8IGptKSBicmVhaztcbiAgICAgIGxlYXBKID0gbGVhcEogKyB0aGlzLmRpdihqdW1wLCAzMykgKiA4ICsgdGhpcy5kaXYodGhpcy5tb2QoanVtcCwgMzMpLCA0KTtcbiAgICAgIGpwID0gam07XG4gICAgfVxuICAgIG4gPSBqeSAtIGpwO1xuXG4gICAgLy8gRmluZCB0aGUgbnVtYmVyIG9mIGxlYXAgeWVhcnMgZnJvbSBBRCA2MjEgdG8gdGhlIGJlZ2lubmluZ1xuICAgIC8vIG9mIHRoZSBjdXJyZW50IEphbGFhbGkgeWVhciBpbiB0aGUgUGVyc2lhbiBjYWxlbmRhci5cbiAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYobiwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKG4sIDMzKSArIDMsIDQpO1xuICAgIGlmICh0aGlzLm1vZChqdW1wLCAzMykgPT09IDQgJiYganVtcCAtIG4gPT09IDQpIGxlYXBKICs9IDE7XG5cbiAgICAvLyBBbmQgdGhlIHNhbWUgaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAodW50aWwgdGhlIHllYXIgZ3kpLlxuICAgIGxlYXBHID0gdGhpcy5kaXYoZ3ksIDQpIC0gdGhpcy5kaXYoKHRoaXMuZGl2KGd5LCAxMDApICsgMSkgKiAzLCA0KSAtIDE1MDtcblxuICAgIC8vIERldGVybWluZSB0aGUgR3JlZ29yaWFuIGRhdGUgb2YgRmFydmFyZGluIHRoZSAxc3QuXG4gICAgbWFyY2ggPSAyMCArIGxlYXBKIC0gbGVhcEc7XG5cbiAgICAvLyByZXR1cm4gd2l0aCBneSBhbmQgbWFyY2ggd2hlbiB3ZSBkb24ndCBuZWVkIGxlYXBcbiAgICBpZiAod2l0aG91dExlYXApIHJldHVybiB7IGd5OiBneSwgbWFyY2g6IG1hcmNoIH07XG5cbiAgICAvLyBGaW5kIGhvdyBtYW55IHllYXJzIGhhdmUgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IGxlYXAgeWVhci5cbiAgICBpZiAoanVtcCAtIG4gPCA2KSBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzM7XG4gICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KTtcbiAgICBpZiAobGVhcCA9PT0gLTEpIHtcbiAgICAgIGxlYXAgPSA0O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBsZWFwOiBsZWFwLFxuICAgICAgZ3k6IGd5LFxuICAgICAgbWFyY2g6IG1hcmNoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGoyZChqeSwgam0sIGpkKTogbnVtYmVyIHtcbiAgICBsZXQgciA9IHRoaXMuamFsQ2FsKGp5LCB0cnVlKTtcbiAgICByZXR1cm4gdGhpcy5nMmQoci5neSwgMywgci5tYXJjaCkgKyAoam0gLSAxKSAqIDMxIC0gdGhpcy5kaXYoam0sIDcpICogKGptIC0gNykgKyBqZCAtIDE7XG4gIH1cblxuICBwcml2YXRlIGQyaihqZG46IG51bWJlcikge1xuICAgIGxldCBneSA9IHRoaXMuZDJnKGpkbikuZ3ksIC8vIENhbGN1bGF0ZSBHcmVnb3JpYW4geWVhciAoZ3kpLlxuICAgICAgankgPSBneSAtIDYyMSxcbiAgICAgIHIgPSB0aGlzLmphbENhbChqeSwgZmFsc2UpLFxuICAgICAgamRuMWYgPSB0aGlzLmcyZChneSwgMywgci5tYXJjaCksXG4gICAgICBqZCxcbiAgICAgIGptLFxuICAgICAgaztcblxuICAgIC8vIEZpbmQgbnVtYmVyIG9mIGRheXMgdGhhdCBwYXNzZWQgc2luY2UgMSBGYXJ2YXJkaW4uXG4gICAgayA9IGpkbiAtIGpkbjFmO1xuICAgIGlmIChrID49IDApIHtcbiAgICAgIGlmIChrIDw9IDE4NSkge1xuICAgICAgICAvLyBUaGUgZmlyc3QgNiBtb250aHMuXG4gICAgICAgIGptID0gMSArIHRoaXMuZGl2KGssIDMxKTtcbiAgICAgICAgamQgPSB0aGlzLm1vZChrLCAzMSkgKyAxO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGp5OiBqeSxcbiAgICAgICAgICBqbTogam0sXG4gICAgICAgICAgamQ6IGpkLFxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBtb250aHMuXG4gICAgICAgIGsgLT0gMTg2O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBQcmV2aW91cyBKYWxhYWxpIHllYXIuXG4gICAgICBqeSAtPSAxO1xuICAgICAgayArPSAxNzk7XG4gICAgICBpZiAoci5sZWFwID09PSAxKSBrICs9IDE7XG4gICAgfVxuICAgIGptID0gNyArIHRoaXMuZGl2KGssIDMwKTtcbiAgICBqZCA9IHRoaXMubW9kKGssIDMwKSArIDE7XG4gICAgcmV0dXJuIHtcbiAgICAgIGp5OiBqeSxcbiAgICAgIGptOiBqbSxcbiAgICAgIGpkOiBqZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnMmQoZ3k6IG51bWJlciwgZ206IG51bWJlciwgZ2Q6IG51bWJlcik6IG51bWJlciB7XG4gICAgbGV0IGQgPVxuICAgICAgdGhpcy5kaXYoKGd5ICsgdGhpcy5kaXYoZ20gLSA4LCA2KSArIDEwMDEwMCkgKiAxNDYxLCA0KSArXG4gICAgICB0aGlzLmRpdigxNTMgKiB0aGlzLm1vZChnbSArIDksIDEyKSArIDIsIDUpICtcbiAgICAgIGdkIC1cbiAgICAgIDM0ODQwNDA4O1xuICAgIGQgPSBkIC0gdGhpcy5kaXYodGhpcy5kaXYoZ3kgKyAxMDAxMDAgKyB0aGlzLmRpdihnbSAtIDgsIDYpLCAxMDApICogMywgNCkgKyA3NTI7XG4gICAgcmV0dXJuIGQ7XG4gIH1cblxuICBwcml2YXRlIGQyZyhqZG46IG51bWJlcikge1xuICAgIGxldCBqLCBpLCBnZCwgZ20sIGd5O1xuICAgIGogPSA0ICogamRuICsgMTM5MzYxNjMxO1xuICAgIGogPSBqICsgdGhpcy5kaXYodGhpcy5kaXYoNCAqIGpkbiArIDE4MzE4NzcyMCwgMTQ2MDk3KSAqIDMsIDQpICogNCAtIDM5MDg7XG4gICAgaSA9IHRoaXMuZGl2KHRoaXMubW9kKGosIDE0NjEpLCA0KSAqIDUgKyAzMDg7XG4gICAgZ2QgPSB0aGlzLmRpdih0aGlzLm1vZChpLCAxNTMpLCA1KSArIDE7XG4gICAgZ20gPSB0aGlzLm1vZCh0aGlzLmRpdihpLCAxNTMpLCAxMikgKyAxO1xuICAgIGd5ID0gdGhpcy5kaXYoaiwgMTQ2MSkgLSAxMDAxMDAgKyB0aGlzLmRpdig4IC0gZ20sIDYpO1xuICAgIHJldHVybiB7XG4gICAgICBneTogZ3ksXG4gICAgICBnbTogZ20sXG4gICAgICBnZDogZ2QsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgamFsYWFsaVdlZWsoank6IG51bWJlciwgam06IG51bWJlciwgamQ6IG51bWJlcik6IHsgc2F0dXJkYXk6IGFueTsgZnJpZGF5OiBhbnkgfSB7XG4gICAgbGV0IGRheU9mV2VlayA9IHRoaXMuamFsYWFsaVRvRGF0ZU9iamVjdChqeSwgam0sIGpkLCAwLCAwLCAwLCAwKS5nZXREYXkoKTtcblxuICAgIGxldCBzdGFydERheURpZmZlcmVuY2UgPSBkYXlPZldlZWsgPT0gNiA/IDAgOiAtKGRheU9mV2VlayArIDEpO1xuICAgIGxldCBlbmREYXlEaWZmZXJlbmNlID0gNiArIHN0YXJ0RGF5RGlmZmVyZW5jZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzYXR1cmRheTogdGhpcy5kMmoodGhpcy5qMmQoanksIGptLCBqZCArIHN0YXJ0RGF5RGlmZmVyZW5jZSkpLFxuICAgICAgZnJpZGF5OiB0aGlzLmQyaih0aGlzLmoyZChqeSwgam0sIGpkICsgZW5kRGF5RGlmZmVyZW5jZSkpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGphbGFhbGlUb0RhdGVPYmplY3QoXG4gICAgank6IG51bWJlcixcbiAgICBqbTogbnVtYmVyLFxuICAgIGpkOiBudW1iZXIsXG4gICAgaDogbnVtYmVyID0gMCxcbiAgICBtOiBudW1iZXIgPSAwLFxuICAgIHM6IG51bWJlciA9IDAsXG4gICAgbXM6IG51bWJlciA9IDAsXG4gICkge1xuICAgIGxldCBncmVnb3JpYW5DYWxlbmRlckRhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuXG4gICAgcmV0dXJuIG5ldyBEYXRlKFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0TW9udGgoKSAtIDEsXG4gICAgICBncmVnb3JpYW5DYWxlbmRlckRhdGUuZ2V0RGF0ZSgpLFxuICAgICAgaCB8fCAwLFxuICAgICAgbSB8fCAwLFxuICAgICAgcyB8fCAwLFxuICAgICAgbXMgfHwgMCxcbiAgICApO1xuICB9XG5cbiAgLypcbiAgICBVdGlsaXR5IGhlbHBlciBmdW5jdGlvbnMuXG4gICovXG5cbiAgcHJpdmF0ZSBkaXYoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gfn4oYSAvIGIpO1xuICB9XG5cbiAgcHJpdmF0ZSBtb2QoYTogbnVtYmVyLCBiOiBudW1iZXIpIHtcbiAgICByZXR1cm4gYSAtIH5+KGEgLyBiKSAqIGI7XG4gIH1cbn1cbiJdfQ==
423
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamFsYWxpLmNhbGVuZGFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL2RhdGVUaW1lL3NyYy9saWIvamFsYWxpLmNhbGVuZGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQW9CLFVBQVUsRUFBeUIsTUFBTSxrQkFBa0IsQ0FBQztBQUVuRyxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFDNUM7O09BRUc7SUFDSCxZQUFZLE1BQXdCO1FBQ2xDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUdoQjs7UUFFQTtRQUNRLFdBQU0sR0FBRztZQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUNyRyxJQUFJO1NBQ0wsQ0FBQztJQVJGLENBQUM7SUFVRCxNQUFNLENBQUMsS0FBa0I7UUFDdkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxVQUFVLENBQ25CLElBQUksSUFBSSxDQUNOLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFDZixDQUFDLENBQUMsUUFBUSxFQUFFLEVBQ1osQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUNYLEtBQUssQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUNoQixLQUFLLENBQUMsT0FBTyxJQUFJLENBQUMsRUFDbEIsS0FBSyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQ2xCLEtBQUssQ0FB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RyxDQUFDLEVBQUUsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDaEYsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRU8sR0FBRyxDQUFDLEdBQVc7UUFDckIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3JCLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUN4QixDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUMxRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzdDLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEQsT0FBTztZQUNMLEVBQUUsRUFBRSxFQUFFO1lBQ04sRUFBRSxFQUFFLEVBQUU7WUFDTixFQUFFLEVBQUUsRUFBRTtTQUNQLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVyxDQUFDLEVBQVUsRUFBRSxFQUFVLEVBQUUsRUFBVTtRQUNwRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFMUUsSUFBSSxrQkFBa0IsR0FBRyxTQUFTLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFFOUMsT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsa0JBQWtCLENBQUMsQ0FBQztZQUM3RCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLGdCQUFnQixDQUFDLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsRUFBVSxFQUNWLEVBQVUsRUFDVixFQUFVLEVBQ1YsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsSUFBWSxDQUFDLEVBQ2IsS0FBYSxDQUFDO1FBRWQsSUFBSSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFekQsT0FBTyxJQUFJLElBQUksQ0FDYixxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsRUFDbkMscUJBQXFCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxFQUNwQyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsRUFDL0IsQ0FBQyxJQUFJLENBQUMsRUFDTixDQUFDLElBQUksQ0FBQyxFQUNOLENBQUMsSUFBSSxDQUFDLEVBQ04sRUFBRSxJQUFJLENBQUMsQ0FDUixDQUFDO0lBQ0osQ0FBQztJQUVEOztNQUVFO0lBRU0sR0FBRyxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVM7UUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMzQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENhbGVuZGFyLCBBWENhbGVuZGFyQ29uZmlnLCBBWERhdGVUaW1lLCBBWERhdGVWYWx1ZSwgVGltZVVuaXQgfSBmcm9tICcuL2RhdGV0aW1lLmNsYXNzJztcblxuZXhwb3J0IGNsYXNzIEphbGFsaUNhbGVuZGFyIGV4dGVuZHMgQVhDYWxlbmRhciB7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEFYQ2FsZW5kYXJDb25maWcpIHtcbiAgICBzdXBlcihjb25maWcpO1xuICB9XG5cbiAgLypcbiAgSmFsYWFsaSB5ZWFycyBzdGFydGluZyB0aGUgMzMteWVhciBydWxlLlxuKi9cbiAgcHJpdmF0ZSBicmVha3MgPSBbXG4gICAgLTYxLCA5LCAzOCwgMTk5LCA0MjYsIDY4NiwgNzU2LCA4MTgsIDExMTEsIDExODEsIDEyMTAsIDE2MzUsIDIwNjAsIDIwOTcsIDIxOTIsIDIyNjIsIDIzMjQsIDIzOTQsIDI0NTYsXG4gICAgMzE3OCxcbiAgXTtcblxuICBjcmVhdGUodmFsdWU6IEFYRGF0ZVZhbHVlKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgYSA9IHRoaXMudG9HcmVnb3JpYW4odmFsdWUueWVhciwgdmFsdWUubW9udGgsIHZhbHVlLmRhdGUpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShcbiAgICAgIG5ldyBEYXRlKFxuICAgICAgICBhLmdldEZ1bGxZZWFyKCksXG4gICAgICAgIGEuZ2V0TW9udGgoKSxcbiAgICAgICAgYS5nZXREYXRlKCksXG4gICAgICAgIHZhbHVlLmhvdXJzIHx8IDAsXG4gICAgICAgIHZhbHVlLm1pbnV0ZXMgfHwgMCxcbiAgICAgICAgdmFsdWUuc2Vjb25kcyB8fCAwLFxuICAgICAgICB2YWx1ZS5tcyB8fCAwLFxuICAgICAgKSxcbiAgICAgIHRoaXMsXG4gICAgKTtcbiAgfVxuXG4gIG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2phbGFsaSc7XG4gIH1cblxuICBkYXlPZk1vbnRoKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS5kYXk7XG4gIH1cblxuICBkYXlPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgY29uc3QgaiA9IHRoaXMudG9KYWxhYWxpKGRhdGUpO1xuICAgIHJldHVybiAoai5tb250aCA8PSA2ID8gKGoubW9udGggLSAxKSAqIDMxIDogNiAqIDMxICsgKGoubW9udGggLSA3KSAqIDMwKSArIGouZGF5O1xuICB9XG5cbiAgZGF5T2ZXZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiBkYXRlLmdldERheSgpID09IDYgPyAxIDogZGF0ZS5nZXREYXkoKSArIDI7XG4gIH1cblxuICB3ZWVrT2ZZZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIC8vVE9ETyA6IGFwcGx5IGphbGFsaVxuICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IEFYRGF0ZVRpbWUoZGF0ZSwgdGhpcykuc3RhcnRPZigneWVhcicpO1xuICAgIHJldHVybiBNYXRoLmNlaWwoXG4gICAgICAoKGRhdGUuZ2V0VGltZSgpIC0gZmlyc3REYXkuZGF0ZS5nZXRUaW1lKCkpIC8gODY0MDAwMDAgKyBmaXJzdERheS5kYXRlLmdldERheSgpICsgMSkgLyA3LFxuICAgICk7XG4gIH1cblxuICB5ZWFyKGRhdGU6IERhdGUpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRvSmFsYWFsaShkYXRlKS55ZWFyO1xuICB9XG5cbiAgbW9udGhPZlllYXIoZGF0ZTogRGF0ZSk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudG9KYWxhYWxpKGRhdGUpLm1vbnRoO1xuICB9XG5cbiAgYWRkKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCBhbW91bnQ6IG51bWJlcik6IEFYRGF0ZVRpbWUge1xuICAgIGxldCB2YWx1ZSA9IGRhdGUudmFsdWVPZigpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgdmFsdWUgKz0gMTAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICB2YWx1ZSArPSA2MDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdob3VyJzpcbiAgICAgICAgdmFsdWUgKz0gMzYwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgLy8gY29uc3QgdiA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgLy8gbGV0IGpkID0gdGhpcy5kYXlPZk1vbnRoKGRhdGUpO1xuICAgICAgICAvLyBsZXQgam0gPSB0aGlzLm1vbnRoT2ZZZWFyKGRhdGUpO1xuICAgICAgICAvLyBsZXQgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIC8vIGNvbnN0IG5tID0gam0gKyBhbW91bnQ7XG4gICAgICAgIC8vIGNvbnN0IG55ID0gbm0gJSAxMiA/IE1hdGguZmxvb3Iobm0gLyAxMikgOiAwO1xuICAgICAgICAvLyBqeSArPSBueTtcbiAgICAgICAgLy8gam0gPSBubSAtIG55ICogMTI7XG4gICAgICAgIC8vIGNvbnN0IHZ2ID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcbiAgICAgICAgLy8gdi5zZXRGdWxsWWVhcih2di5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgLy8gdi5zZXRNb250aCh2di5nZXRNb250aCgpKTtcbiAgICAgICAgLy8gdi5zZXREYXRlKHZ2LmdldERhdGUoKSk7XG4gICAgICAgIC8vIHZhbHVlID0gdi52YWx1ZU9mKCk7XG4gICAgICAgIC8vIGJyZWFrO1xuICAgICAgICBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcblxuICAgICAgICBsZXQgbmV3TW9udGggPSBqbSArIGFtb3VudDtcbiAgICAgICAgbGV0IHllYXJzVG9BZGQgPSBNYXRoLmZsb29yKG5ld01vbnRoIC8gMTIpO1xuICAgICAgICBuZXdNb250aCA9IG5ld01vbnRoICUgMTI7XG4gICAgICAgIGlmIChuZXdNb250aCA8PSAwKSB7XG4gICAgICAgICAgbmV3TW9udGggKz0gMTI7XG4gICAgICAgICAgeWVhcnNUb0FkZC0tO1xuICAgICAgICB9XG5cbiAgICAgICAgankgKz0geWVhcnNUb0FkZDtcblxuICAgICAgICAvLyBUZW1wb3Jhcnkgc2V0IHRvIGZpcnN0IG9mIHRoZSBtb250aCB0byBwcmV2ZW50IHJvbGxvdmVyXG4gICAgICAgIGNvbnN0IHRlbXBEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgbmV3TW9udGgsIDEpO1xuICAgICAgICBjb25zdCBncmVnb3JpYW5EYXRlID0gbmV3IERhdGUodGVtcERhdGUuZ2V0RnVsbFllYXIoKSwgdGVtcERhdGUuZ2V0TW9udGgoKSwgdGVtcERhdGUuZ2V0RGF0ZSgpKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlIGRheSB0byBlaXRoZXIgdGhlIG9yaWdpbmFsIGRheSBvciB0aGUgbGFzdCBkYXkgb2YgdGhlIG5ldyBtb250aCwgd2hpY2hldmVyIGlzIHNtYWxsZXJcbiAgICAgICAgY29uc3QgbGFzdERheU9mTmV3TW9udGggPSB0aGlzLmphbGFhbGlNb250aExlbmd0aChqeSwgbmV3TW9udGgpOyAvLyBJbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gZmluZCB0aGUgbGFzdCBkYXkgaW4gYSBKYWxhbGkgbW9udGhcbiAgICAgICAgamQgPSBNYXRoLm1pbihqZCwgbGFzdERheU9mTmV3TW9udGgpO1xuXG4gICAgICAgIGNvbnN0IGZpbmFsRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIG5ld01vbnRoLCBqZCk7XG4gICAgICAgIGdyZWdvcmlhbkRhdGUuc2V0RnVsbFllYXIoZmluYWxEYXRlLmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICBncmVnb3JpYW5EYXRlLnNldE1vbnRoKGZpbmFsRGF0ZS5nZXRNb250aCgpKTtcbiAgICAgICAgZ3JlZ29yaWFuRGF0ZS5zZXREYXRlKGZpbmFsRGF0ZS5nZXREYXRlKCkpO1xuXG4gICAgICAgIHZhbHVlID0gZ3JlZ29yaWFuRGF0ZS52YWx1ZU9mKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHZhbHVlICs9IDcgKiA4NjQwMDAwMCAqIGFtb3VudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCB2ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgICBsZXQgamQgPSB0aGlzLmRheU9mTW9udGgoZGF0ZSk7XG4gICAgICAgIGxldCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGxldCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgdnYgPSB0aGlzLnRvR3JlZ29yaWFuKGp5ICsgYW1vdW50LCBqbSwgamQpO1xuICAgICAgICB2LnNldEZ1bGxZZWFyKHZ2LmdldEZ1bGxZZWFyKCkpO1xuICAgICAgICB2LnNldE1vbnRoKHZ2LmdldE1vbnRoKCkpO1xuICAgICAgICB2LnNldERhdGUodnYuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdmFsdWUgPSB2LnZhbHVlT2YoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdmFsdWUgKz0gODY0MDAwMDAgKiBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShuZXcgRGF0ZSh2YWx1ZSksIHRoaXMpO1xuICB9XG5cbiAgc2V0KGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0LCB2YWx1ZTogbnVtYmVyKTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgY29uc3QgakRhdGUgPSB0aGlzLnRvSmFsYWFsaShjbG9uZSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIHZhbHVlLCBjbG9uZS5nZXRNaWxsaXNlY29uZHMoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgdmFsdWUsIGNsb25lLmdldFNlY29uZHMoKSwgY2xvbmUuZ2V0TWlsbGlzZWNvbmRzKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2hvdXInOlxuICAgICAgICBjbG9uZS5zZXRIb3Vycyh2YWx1ZSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIGNsb25lLmdldE1pbGxpc2Vjb25kcygpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSAnZGF5Jzoge1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oakRhdGUueWVhciwgakRhdGUubW9udGgsIHZhbHVlKTtcbiAgICAgICAgY2xvbmUuc2V0RGF0ZShnRGF0ZS5nZXREYXRlKCkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ21vbnRoJzoge1xuICAgICAgICBjb25zdCBnRGF0ZTIgPSB0aGlzLnRvR3JlZ29yaWFuKGpEYXRlLnllYXIsIHZhbHVlLCBqRGF0ZS5kYXkpO1xuICAgICAgICBjbG9uZS5zZXRNb250aChnRGF0ZTIuZ2V0TW9udGgoKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAneWVhcic6IHtcbiAgICAgICAgY29uc3QgZ0RhdGUzID0gdGhpcy50b0dyZWdvcmlhbih2YWx1ZSwgakRhdGUubW9udGgsIGpEYXRlLmRheSk7XG4gICAgICAgIGNsb25lLnNldEZ1bGxZZWFyKGdEYXRlMy5nZXRGdWxsWWVhcigpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gIH1cblxuICBzdGFydE9mKGRhdGU6IERhdGUsIHVuaXQ6IFRpbWVVbml0KTogQVhEYXRlVGltZSB7XG4gICAgY29uc3QgY2xvbmUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSk7XG4gICAgc3dpdGNoICh1bml0KSB7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIGNsb25lLmdldFNlY29uZHMoKSwgMCk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIGNhc2UgJ2RheSc6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnd2Vlayc6XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcykuYWRkKCdkYXknLCAtdGhpcy5kYXlPZldlZWsoY2xvbmUpICsgMSkuc3RhcnRPZignZGF5Jyk7XG4gICAgICBjYXNlICdtb250aCc6IHtcbiAgICAgICAgY29uc3QgankgPSB0aGlzLnllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGptID0gdGhpcy5tb250aE9mWWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgMSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShnRGF0ZSwgdGhpcykuc3RhcnRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgICBjYXNlICd5ZWFyJzoge1xuICAgICAgICBjb25zdCBqeSA9IHRoaXMueWVhcihkYXRlKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCAxLCAxKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5zdGFydE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBlbmRPZihkYXRlOiBEYXRlLCB1bml0OiBUaW1lVW5pdCk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IGNsb25lID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkpO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnc2Vjb25kJzpcbiAgICAgICAgY2xvbmUuc2V0SG91cnMoY2xvbmUuZ2V0SG91cnMoKSwgY2xvbmUuZ2V0TWludXRlcygpLCBjbG9uZS5nZXRTZWNvbmRzKCksIDk5OSk7XG4gICAgICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShjbG9uZSwgdGhpcyk7XG4gICAgICBjYXNlICdtaW51dGUnOlxuICAgICAgICBjbG9uZS5zZXRIb3VycyhjbG9uZS5nZXRIb3VycygpLCBjbG9uZS5nZXRNaW51dGVzKCksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnaG91cic6XG4gICAgICAgIGNsb25lLnNldEhvdXJzKGNsb25lLmdldEhvdXJzKCksIDU5LCA1OSwgOTk5KTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGNsb25lLCB0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICBjYXNlICdkYXknOlxuICAgICAgICBjbG9uZS5zZXRIb3VycygyMywgNTksIDU5LCA5OTkpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoY2xvbmUsIHRoaXMpO1xuICAgICAgY2FzZSAnd2Vlayc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRPZihkYXRlLCAnd2VlaycpLmFkZCgnZGF5JywgNikuZW5kT2YoJ2RheScpO1xuICAgICAgfVxuICAgICAgY2FzZSAnbW9udGgnOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBqbSA9IHRoaXMubW9udGhPZlllYXIoZGF0ZSk7XG4gICAgICAgIGNvbnN0IGpkID0gdGhpcy5qYWxhYWxpTW9udGhMZW5ndGgoanksIGptKTtcbiAgICAgICAgY29uc3QgZ0RhdGUgPSB0aGlzLnRvR3JlZ29yaWFuKGp5LCBqbSwgamQpO1xuICAgICAgICByZXR1cm4gbmV3IEFYRGF0ZVRpbWUoZ0RhdGUsIHRoaXMpLmVuZE9mKCdkYXknKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3llYXInOiB7XG4gICAgICAgIGNvbnN0IGp5ID0gdGhpcy55ZWFyKGRhdGUpO1xuICAgICAgICBjb25zdCBnRGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oanksIDEyLCB0aGlzLmphbGFhbGlNb250aExlbmd0aChqeSwgMTIpKTtcbiAgICAgICAgcmV0dXJuIG5ldyBBWERhdGVUaW1lKGdEYXRlLCB0aGlzKS5lbmRPZignZGF5Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcGFyc2UodmFsdWU6IHN0cmluZyk6IEFYRGF0ZVRpbWUge1xuICAgIGNvbnN0IFt5LCBNLCBkLCBoLCBtLCBzLCBtc10gPSB2YWx1ZS5zcGxpdCgvW15hLXpBLVowLTldKy9naSk7XG4gICAgY29uc3QgZGF0ZSA9IHRoaXMudG9HcmVnb3JpYW4oTnVtYmVyKHkpID8/IDAsIE51bWJlcihNKSA/PyAxLCBOdW1iZXIoZCkgPz8gMSk7XG4gICAgaWYgKGggIT0gbnVsbCkgZGF0ZS5zZXRIb3VycyhOdW1iZXIoaCkpO1xuICAgIGlmIChtICE9IG51bGwpIGRhdGUuc2V0TWludXRlcyhOdW1iZXIobSkpO1xuICAgIGlmIChzICE9IG51bGwpIGRhdGUuc2V0U2Vjb25kcyhOdW1iZXIocykpO1xuICAgIGlmIChtcyAhPSBudWxsKSBkYXRlLnNldE1pbGxpc2Vjb25kcyhOdW1iZXIoZCkpO1xuICAgIHJldHVybiBuZXcgQVhEYXRlVGltZShkYXRlLCB0aGlzKTtcbiAgfVxuXG4gIC8qXG4gIENvbnZlcnRzIGEgR3JlZ29yaWFuIGRhdGUgdG8gSmFsYWFsaS5cbiovXG4gIHRvSmFsYWFsaShkYXRlOiBEYXRlKTogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXI7IGRheTogbnVtYmVyIH0ge1xuICAgIGNvbnN0IGdkID0gZGF0ZS5nZXREYXRlKCk7XG4gICAgY29uc3QgZ20gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xuICAgIGNvbnN0IGd5ID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGNvbnN0IHIgPSB0aGlzLmQyaih0aGlzLmcyZChneSwgZ20sIGdkKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHllYXI6IHIuanksXG4gICAgICBtb250aDogci5qbSxcbiAgICAgIGRheTogci5qZCxcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICBDb252ZXJ0cyBhIEphbGFhbGkgZGF0ZSB0byBHcmVnb3JpYW4uXG4gICovXG4gIHRvR3JlZ29yaWFuKGp5LCBqbSwgamQpOiBEYXRlIHtcbiAgICBjb25zdCBnID0gdGhpcy5kMmcodGhpcy5qMmQoanksIGptLCBqZCkpO1xuICAgIHJldHVybiBuZXcgRGF0ZShnLmd5LCBnLmdtIC0gMSwgZy5nZCk7XG4gIH1cblxuICAvKlxuICAgIENoZWNrcyB3aGV0aGVyIGEgSmFsYWFsaSBkYXRlIGlzIHZhbGlkIG9yIG5vdC5cbiAgKi9cbiAgaXNWYWxpZEphbGFhbGlEYXRlKGp5LCBqbSwgamQpIHtcbiAgICByZXR1cm4gankgPj0gLTYxICYmIGp5IDw9IDMxNzcgJiYgam0gPj0gMSAmJiBqbSA8PSAxMiAmJiBqZCA+PSAxICYmIGpkIDw9IHRoaXMuamFsYWFsaU1vbnRoTGVuZ3RoKGp5LCBqbSk7XG4gIH1cblxuICAvKlxuICAgIElzIHRoaXMgYSBsZWFwIHllYXIgb3Igbm90P1xuICAqL1xuICBpc0xlYXBKYWxhYWxpWWVhcihqeSkge1xuICAgIHJldHVybiB0aGlzLmphbENhbExlYXAoankpID09PSAwO1xuICB9XG5cbiAgLypcbiAgICBOdW1iZXIgb2YgZGF5cyBpbiBhIGdpdmVuIG1vbnRoIGluIGEgSmFsYWFsaSB5ZWFyLlxuICAqL1xuICBqYWxhYWxpTW9udGhMZW5ndGgoanksIGptKSB7XG4gICAgaWYgKGptIDw9IDYpIHJldHVybiAzMTtcbiAgICBpZiAoam0gPD0gMTEpIHJldHVybiAzMDtcbiAgICBpZiAodGhpcy5pc0xlYXBKYWxhYWxpWWVhcihqeSkpIHJldHVybiAzMDtcbiAgICByZXR1cm4gMjk7XG4gIH1cblxuICAvKlxuICAgICAgVGhpcyBkZXRlcm1pbmVzIGlmIHRoZSBKYWxhYWxpIChQZXJzaWFuKSB5ZWFyIGlzXG4gICAgICBsZWFwICgzNjYtZGF5IGxvbmcpIG9yIGlzIHRoZSBjb21tb24geWVhciAoMzY1IGRheXMpXG4gIFxuICAgICAgQHBhcmFtIGp5IEphbGFhbGkgY2FsZW5kYXIgeWVhciAoLTYxIHRvIDMxNzcpXG4gICAgICBAcmV0dXJucyBudW1iZXIgb2YgeWVhcnMgc2luY2UgdGhlIGxhc3QgbGVhcCB5ZWFyICgwIHRvIDQpXG4gICAqL1xuICBwcml2YXRlIGphbENhbExlYXAoank6IG51bWJlcikge1xuICAgIGxldCBibCA9IHRoaXMuYnJlYWtzLmxlbmd0aCxcbiAgICAgIGpwID0gdGhpcy5icmVha3NbMF0sXG4gICAgICBqbSxcbiAgICAgIGp1bXAsXG4gICAgICBsZWFwLFxuICAgICAgbixcbiAgICAgIGk7XG5cbiAgICBpZiAoankgPCBqcCB8fCBqeSA+PSB0aGlzLmJyZWFrc1tibCAtIDFdKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgSmFsYWFsaSB5ZWFyICcgKyBqeSk7XG5cbiAgICBmb3IgKGkgPSAxOyBpIDwgYmw7IGkgKz0gMSkge1xuICAgICAgam0gPSB0aGlzLmJyZWFrc1tpXTtcbiAgICAgIGp1bXAgPSBqbSAtIGpwO1xuICAgICAgaWYgKGp5IDwgam0pIGJyZWFrO1xuICAgICAganAgPSBqbTtcbiAgICB9XG4gICAgbiA9IGp5IC0ganA7XG5cbiAgICBpZiAoanVtcCAtIG4gPCA2KSBuID0gbiAtIGp1bXAgKyB0aGlzLmRpdihqdW1wICsgNCwgMzMpICogMzM7XG4gICAgbGVhcCA9IHRoaXMubW9kKHRoaXMubW9kKG4gKyAxLCAzMykgLSAxLCA0KTtcbiAgICBpZiAobGVhcCA9PT0gLTEpIHtcbiAgICAgIGxlYXAgPSA0O1xuICAgIH1cblxuICAgIHJldHVybiBsZWFwO1xuICB9XG5cbiAgcHJpdmF0ZSBqYWxDYWwoank6IG51bWJlciwgd2l0aG91dExlYXA6IGJvb2xlYW4pIHtcbiAgICBsZXQgYmwgPSB0aGlzLmJyZWFrcy5sZW5ndGgsXG4gICAgICBneSA9IGp5ICsgNjIxLFxuICAgICAgbGVhcEogPSAtMTQsXG4gICAgICBqcCA9IHRoaXMuYnJlYWtzWzBdLFxuICAgICAgam0sXG4gICAgICBqdW1wLFxuICAgICAgbGVhcCxcbiAgICAgIGxlYXBHLFxuICAgICAgbWFyY2gsXG4gICAgICBuLFxuICAgICAgaTtcblxuICAgIGlmIChqeSA8IGpwIHx8IGp5ID49IHRoaXMuYnJlYWtzW2JsIC0gMV0pIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKYWxhYWxpIHllYXIgJyArIGp5KTtcblxuICAgIC8vIEZpbmQgdGhlIGxpbWl0aW5nIHllYXJzIGZvciB0aGUgSmFsYWFsaSB5ZWFyIGp5LlxuICAgIGZvciAoaSA9IDE7IGkgPCBibDsgaSArPSAxKSB7XG4gICAgICBqbSA9IHRoaXMuYnJlYWtzW2ldO1xuICAgICAganVtcCA9IGptIC0ganA7XG4gICAgICBpZiAoankgPCBqbSkgYnJlYWs7XG4gICAgICBsZWFwSiA9IGxlYXBKICsgdGhpcy5kaXYoanVtcCwgMzMpICogOCArIHRoaXMuZGl2KHRoaXMubW9kKGp1bXAsIDMzKSwgNCk7XG4gICAgICBqcCA9IGptO1xuICAgIH1cbiAgICBuID0gankgLSBqcDtcblxuICAgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBsZWFwIHllYXJzIGZyb20gQUQgNjIxIHRvIHRoZSBiZWdpbm5pbmdcbiAgICAvLyBvZiB0aGUgY3VycmVudCBKYWxhYWxpIHllYXIgaW4gdGhlIFBlcnNpYW4gY2FsZW5kYXIuXG4gICAgbGVhcEogPSBsZWFwSiArIHRoaXMuZGl2KG4sIDMzKSAqIDggKyB0aGlzLmRpdih0aGlzLm1vZChuLCAzMykgKyAzLCA0KTtcbiAgICBpZiAodGhpcy5tb2QoanVtcCwgMzMpID09PSA0ICYmIGp1bXAgLSBuID09PSA0KSBsZWFwSiArPSAxO1xuXG4gICAgLy8gQW5kIHRoZSBzYW1lIGluIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgKHVudGlsIHRoZSB5ZWFyIGd5KS5cbiAgICBsZWFwRyA9IHRoaXMuZGl2KGd5LCA0KSAtIHRoaXMuZGl2KCh0aGlzLmRpdihneSwgMTAwKSArIDEpICogMywgNCkgLSAxNTA7XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIEdyZWdvcmlhbiBkYXRlIG9mIEZhcnZhcmRpbiB0aGUgMXN0LlxuICAgIG1hcmNoID0gMjAgKyBsZWFwSiAtIGxlYXBHO1xuXG4gICAgLy8gcmV0dXJuIHdpdGggZ3kgYW5kIG1hcmNoIHdoZW4gd2UgZG9uJ3QgbmVlZCBsZWFwXG4gICAgaWYgKHdpdGhvdXRMZWFwKSByZXR1cm4geyBneTogZ3ksIG1hcmNoOiBtYXJjaCB9O1xuXG4gICAgLy8gRmluZCBob3cgbWFueSB5ZWFycyBoYXZlIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCBsZWFwIHllYXIuXG4gICAgaWYgKGp1bXAgLSBuIDwgNikgbiA9IG4gLSBqdW1wICsgdGhpcy5kaXYoanVtcCArIDQsIDMzKSAqIDMzO1xuICAgIGxlYXAgPSB0aGlzLm1vZCh0aGlzLm1vZChuICsgMSwgMzMpIC0gMSwgNCk7XG4gICAgaWYgKGxlYXAgPT09IC0xKSB7XG4gICAgICBsZWFwID0gNDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgbGVhcDogbGVhcCxcbiAgICAgIGd5OiBneSxcbiAgICAgIG1hcmNoOiBtYXJjaCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBqMmQoanksIGptLCBqZCk6IG51bWJlciB7XG4gICAgbGV0IHIgPSB0aGlzLmphbENhbChqeSwgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuZzJkKHIuZ3ksIDMsIHIubWFyY2gpICsgKGptIC0gMSkgKiAzMSAtIHRoaXMuZGl2KGptLCA3KSAqIChqbSAtIDcpICsgamQgLSAxO1xuICB9XG5cbiAgcHJpdmF0ZSBkMmooamRuOiBudW1iZXIpIHtcbiAgICBsZXQgZ3kgPSB0aGlzLmQyZyhqZG4pLmd5LCAvLyBDYWxjdWxhdGUgR3JlZ29yaWFuIHllYXIgKGd5KS5cbiAgICAgIGp5ID0gZ3kgLSA2MjEsXG4gICAgICByID0gdGhpcy5qYWxDYWwoanksIGZhbHNlKSxcbiAgICAgIGpkbjFmID0gdGhpcy5nMmQoZ3ksIDMsIHIubWFyY2gpLFxuICAgICAgamQsXG4gICAgICBqbSxcbiAgICAgIGs7XG5cbiAgICAvLyBGaW5kIG51bWJlciBvZiBkYXlzIHRoYXQgcGFzc2VkIHNpbmNlIDEgRmFydmFyZGluLlxuICAgIGsgPSBqZG4gLSBqZG4xZjtcbiAgICBpZiAoayA+PSAwKSB7XG4gICAgICBpZiAoayA8PSAxODUpIHtcbiAgICAgICAgLy8gVGhlIGZpcnN0IDYgbW9udGhzLlxuICAgICAgICBqbSA9IDEgKyB0aGlzLmRpdihrLCAzMSk7XG4gICAgICAgIGpkID0gdGhpcy5tb2QoaywgMzEpICsgMTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBqeToganksXG4gICAgICAgICAgam06IGptLFxuICAgICAgICAgIGpkOiBqZCxcbiAgICAgICAgfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRoZSByZW1haW5pbmcgbW9udGhzLlxuICAgICAgICBrIC09IDE4NjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUHJldmlvdXMgSmFsYWFsaSB5ZWFyLlxuICAgICAgankgLT0gMTtcbiAgICAgIGsgKz0gMTc5O1xuICAgICAgaWYgKHIubGVhcCA9PT0gMSkgayArPSAxO1xuICAgIH1cbiAgICBqbSA9IDcgKyB0aGlzLmRpdihrLCAzMCk7XG4gICAgamQgPSB0aGlzLm1vZChrLCAzMCkgKyAxO1xuICAgIHJldHVybiB7XG4gICAgICBqeToganksXG4gICAgICBqbTogam0sXG4gICAgICBqZDogamQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZzJkKGd5OiBudW1iZXIsIGdtOiBudW1iZXIsIGdkOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCBkID1cbiAgICAgIHRoaXMuZGl2KChneSArIHRoaXMuZGl2KGdtIC0gOCwgNikgKyAxMDAxMDApICogMTQ2MSwgNCkgK1xuICAgICAgdGhpcy5kaXYoMTUzICogdGhpcy5tb2QoZ20gKyA5LCAxMikgKyAyLCA1KSArXG4gICAgICBnZCAtXG4gICAgICAzNDg0MDQwODtcbiAgICBkID0gZCAtIHRoaXMuZGl2KHRoaXMuZGl2KGd5ICsgMTAwMTAwICsgdGhpcy5kaXYoZ20gLSA4LCA2KSwgMTAwKSAqIDMsIDQpICsgNzUyO1xuICAgIHJldHVybiBkO1xuICB9XG5cbiAgcHJpdmF0ZSBkMmcoamRuOiBudW1iZXIpIHtcbiAgICBsZXQgaiwgaSwgZ2QsIGdtLCBneTtcbiAgICBqID0gNCAqIGpkbiArIDEzOTM2MTYzMTtcbiAgICBqID0gaiArIHRoaXMuZGl2KHRoaXMuZGl2KDQgKiBqZG4gKyAxODMxODc3MjAsIDE0NjA5NykgKiAzLCA0KSAqIDQgLSAzOTA4O1xuICAgIGkgPSB0aGlzLmRpdih0aGlzLm1vZChqLCAxNDYxKSwgNCkgKiA1ICsgMzA4O1xuICAgIGdkID0gdGhpcy5kaXYodGhpcy5tb2QoaSwgMTUzKSwgNSkgKyAxO1xuICAgIGdtID0gdGhpcy5tb2QodGhpcy5kaXYoaSwgMTUzKSwgMTIpICsgMTtcbiAgICBneSA9IHRoaXMuZGl2KGosIDE0NjEpIC0gMTAwMTAwICsgdGhpcy5kaXYoOCAtIGdtLCA2KTtcbiAgICByZXR1cm4ge1xuICAgICAgZ3k6IGd5LFxuICAgICAgZ206IGdtLFxuICAgICAgZ2Q6IGdkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGphbGFhbGlXZWVrKGp5OiBudW1iZXIsIGptOiBudW1iZXIsIGpkOiBudW1iZXIpOiB7IHNhdHVyZGF5OiBhbnk7IGZyaWRheTogYW55IH0ge1xuICAgIGxldCBkYXlPZldlZWsgPSB0aGlzLmphbGFhbGlUb0RhdGVPYmplY3QoanksIGptLCBqZCwgMCwgMCwgMCwgMCkuZ2V0RGF5KCk7XG5cbiAgICBsZXQgc3RhcnREYXlEaWZmZXJlbmNlID0gZGF5T2ZXZWVrID09IDYgPyAwIDogLShkYXlPZldlZWsgKyAxKTtcbiAgICBsZXQgZW5kRGF5RGlmZmVyZW5jZSA9IDYgKyBzdGFydERheURpZmZlcmVuY2U7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc2F0dXJkYXk6IHRoaXMuZDJqKHRoaXMuajJkKGp5LCBqbSwgamQgKyBzdGFydERheURpZmZlcmVuY2UpKSxcbiAgICAgIGZyaWRheTogdGhpcy5kMmoodGhpcy5qMmQoanksIGptLCBqZCArIGVuZERheURpZmZlcmVuY2UpKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBqYWxhYWxpVG9EYXRlT2JqZWN0KFxuICAgIGp5OiBudW1iZXIsXG4gICAgam06IG51bWJlcixcbiAgICBqZDogbnVtYmVyLFxuICAgIGg6IG51bWJlciA9IDAsXG4gICAgbTogbnVtYmVyID0gMCxcbiAgICBzOiBudW1iZXIgPSAwLFxuICAgIG1zOiBudW1iZXIgPSAwLFxuICApIHtcbiAgICBsZXQgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlID0gdGhpcy50b0dyZWdvcmlhbihqeSwgam0sIGpkKTtcblxuICAgIHJldHVybiBuZXcgRGF0ZShcbiAgICAgIGdyZWdvcmlhbkNhbGVuZGVyRGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldE1vbnRoKCkgLSAxLFxuICAgICAgZ3JlZ29yaWFuQ2FsZW5kZXJEYXRlLmdldERhdGUoKSxcbiAgICAgIGggfHwgMCxcbiAgICAgIG0gfHwgMCxcbiAgICAgIHMgfHwgMCxcbiAgICAgIG1zIHx8IDAsXG4gICAgKTtcbiAgfVxuXG4gIC8qXG4gICAgVXRpbGl0eSBoZWxwZXIgZnVuY3Rpb25zLlxuICAqL1xuXG4gIHByaXZhdGUgZGl2KGE6IG51bWJlciwgYjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIH5+KGEgLyBiKTtcbiAgfVxuXG4gIHByaXZhdGUgbW9kKGE6IG51bWJlciwgYjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGEgLSB+fihhIC8gYikgKiBiO1xuICB9XG59XG4iXX0=
@@ -33,10 +33,10 @@ export class AXEventService {
33
33
  d.events = [];
34
34
  }
35
35
  }
36
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXEventService, providedIn: 'root' }); }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXEventService, providedIn: 'root' }); }
38
38
  }
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXEventService, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXEventService, decorators: [{
40
40
  type: Injectable,
41
41
  args: [{ providedIn: 'root' }]
42
42
  }] });
@@ -15,10 +15,10 @@ export class AXFileSizeFormatter {
15
15
  const i = Math.floor(Math.log(size) / Math.log(k));
16
16
  return parseFloat((size / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
17
17
  }
18
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileSizeFormatter }); }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileSizeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
19
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileSizeFormatter }); }
20
20
  }
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileSizeFormatter, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileSizeFormatter, decorators: [{
22
22
  type: Injectable
23
23
  }] });
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1zaXplLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9maWxlL3NyYy9saWIvZmlsZS1zaXplLWZvcm1hdHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQWEzQyxNQUFNLE9BQU8sbUJBQW1CO0lBRTlCLElBQUksSUFBSTtRQUNOLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNsQixNQUFNLElBQUksR0FBVyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsSUFBSSxJQUFJLEtBQUssQ0FBQztZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2pDLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUV6QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDZixNQUFNLEtBQUssR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQzs4R0FqQlUsbUJBQW1CO2tIQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEZvcm1hdE9wdGlvbnMsIEFYRm9ybWF0dGVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL2Zvcm1hdCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhGaWxlU2l6ZUZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBmb3JtYXQ6IHN0cmluZztcbn1cblxuZGVjbGFyZSBtb2R1bGUgJ0BhY29yZXgvY29yZS9mb3JtYXQnIHtcbiAgaW50ZXJmYWNlIEFYRm9ybWF0T3B0aW9uc01hcCB7XG4gICAgJ2ZpbGVzaXplJzogQVhGaWxlU2l6ZUZvcm1hdHRlck9wdGlvbnM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYRmlsZVNpemVGb3JtYXR0ZXIgaW1wbGVtZW50cyBBWEZvcm1hdHRlciB7XG5cbiAgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2ZpbGVzaXplJztcbiAgfVxuXG4gIGZvcm1hdCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzaXplOiBudW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuXG4gICAgaWYgKHNpemUgPT09IDApIHJldHVybiAnMCBCeXRlcyc7XG4gICAgaWYgKE51bWJlci5pc05hTihzaXplKSkgcmV0dXJuICdVbmtub3duJztcblxuICAgIGNvbnN0IGsgPSAxMDI0O1xuICAgIGNvbnN0IHNpemVzID0gWydCeXRlcycsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIGNvbnN0IGkgPSBNYXRoLmZsb29yKE1hdGgubG9nKHNpemUpIC8gTWF0aC5sb2coaykpO1xuXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKHNpemUgLyBNYXRoLnBvdyhrLCBpKSkudG9GaXhlZCgyKSkgKyAnICcgKyBzaXplc1tpXTtcbiAgfVxufVxuIl19
@@ -4,11 +4,11 @@ import { AXFileSizeFormatter } from './file-size-formatter';
4
4
  import * as i0 from "@angular/core";
5
5
  import * as i1 from "@acorex/core/format";
6
6
  export class AXFileModule {
7
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: AXFileModule, imports: [i1.AXFormatModule] }); }
9
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileModule, providers: [AXFileSizeFormatter], imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] })] }); }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
8
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: AXFileModule, imports: [i1.AXFormatModule] }); }
9
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileModule, providers: [AXFileSizeFormatter], imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] })] }); }
10
10
  }
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileModule, decorators: [{
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  imports: [AXFormatModule.forChild({ formatters: [AXFileSizeFormatter] })],
@@ -91,10 +91,10 @@ export class AXFileService {
91
91
  input.click();
92
92
  });
93
93
  }
94
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
95
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileService, providedIn: 'root' }); }
94
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileService, deps: [{ token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
95
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileService, providedIn: 'root' }); }
96
96
  }
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFileService, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFileService, decorators: [{
98
98
  type: Injectable,
99
99
  args: [{
100
100
  providedIn: 'root'
@@ -49,11 +49,11 @@ export class AXFormatModule {
49
49
  f();
50
50
  });
51
51
  }
52
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatModule, deps: [{ token: 'AXFormatModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
53
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: AXFormatModule, declarations: [AXFormatPipe], exports: [AXFormatPipe] }); }
54
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatModule }); }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatModule, deps: [{ token: 'AXFormatModuleFactory' }], target: i0.ɵɵFactoryTarget.NgModule }); }
53
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: AXFormatModule, declarations: [AXFormatPipe], exports: [AXFormatPipe] }); }
54
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatModule }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatModule, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatModule, decorators: [{
57
57
  type: NgModule,
58
58
  args: [{
59
59
  imports: [],
@@ -20,10 +20,10 @@ export class AXFormatPipe {
20
20
  return of(formattedValue);
21
21
  }));
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: AXFormatPipe, name: "format" }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: AXFormatPipe, name: "format" }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatPipe, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatPipe, decorators: [{
27
27
  type: Pipe,
28
28
  args: [{
29
29
  name: 'format',
@@ -18,10 +18,10 @@ export class AXFormatterRegistryService {
18
18
  get formatters() {
19
19
  return this.plugins;
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatterRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
22
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatterRegistryService, providedIn: 'root' }); }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatterRegistryService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
22
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatterRegistryService, providedIn: 'root' }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatterRegistryService, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatterRegistryService, decorators: [{
25
25
  type: Injectable,
26
26
  args: [{
27
27
  providedIn: 'root'
@@ -59,10 +59,10 @@ export class AXFormatService {
59
59
  return new AXFormatFluent(this, value);
60
60
  }
61
61
  }
62
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatService, deps: [{ token: AXFormatterRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
63
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatService, providedIn: 'root' }); }
62
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatService, deps: [{ token: AXFormatterRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
63
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatService, providedIn: 'root' }); }
64
64
  }
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXFormatService, decorators: [{
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXFormatService, decorators: [{
66
66
  type: Injectable,
67
67
  args: [{ providedIn: 'root' }]
68
68
  }], ctorParameters: () => [{ type: AXFormatterRegistryService }] });
@@ -66,10 +66,10 @@ export class AXNumberFormatter {
66
66
  this.separatorsCache[locale] = { thousandSeparator, decimalSeparator };
67
67
  return this.separatorsCache[locale];
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXNumberFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
70
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXNumberFormatter }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXNumberFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
70
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXNumberFormatter }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXNumberFormatter, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXNumberFormatter, decorators: [{
73
73
  type: Injectable
74
74
  }] });
75
75
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZvcm1hdHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9mb3JtYXQvc3JjL2xpYi9mb3JtYXR0ZXJzL251bWJlci1mb3JtYXR0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBa0IxRCxNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBR1Usb0JBQWUsR0FBRyxFQUFFLENBQUM7S0F1RTlCO0lBckVDLElBQUksSUFBSTtRQUNOLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYSxFQUFFLE9BQWlDO1FBQ3JELE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUYsMENBQTBDO1FBQzFDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUU7WUFDN0MsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixhQUFhLEVBQUUsQ0FBQztZQUNoQixNQUFNLEVBQUUsU0FBUyxDQUFDLFFBQVE7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV0Qyx5Q0FBeUM7UUFDekMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN2RCxJQUFJLGdCQUFnQixDQUFDLGFBQWEsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUN6RixXQUFXLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDMUU7UUFFRCw4Q0FBOEM7UUFDOUMsSUFBSSxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRTtZQUN0QyxXQUFXLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ2hHO1FBRUQseUNBQXlDO1FBQ3pDLElBQUksY0FBYyxHQUFHLElBQUksR0FBRyxXQUFXLENBQUM7UUFDeEMsSUFBSSxnQkFBZ0IsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1lBQ2hELHVDQUF1QztZQUN2QyxNQUFNLFdBQVcsR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RixjQUFjLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDO1NBQ25FO2FBQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUM1Qiw4REFBOEQ7WUFDOUQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakUsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDMUIsY0FBYyxJQUFJLGdCQUFnQixDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQzthQUNuRTtTQUNGO1FBRUQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUMsUUFBUTtRQUNyRCx5QkFBeUI7UUFDekIsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDMUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFFMUIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7WUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDekIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNoQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO2dCQUNsQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQy9CO1NBQ0Y7UUFFRCxtQkFBbUI7UUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLENBQUM7UUFDdkUsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBeEVVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhGb3JtYXR0ZXIgfSBmcm9tICcuLi9mb3JtYXQuY29uZmlnJztcbmltcG9ydCB7IEFYRm9ybWF0T3B0aW9ucyB9IGZyb20gJy4uL2Zvcm1hdC50eXBlcyc7XG5pbXBvcnQgeyBpc0ludGVnZXIsIGRlZmF1bHRzLCBwYWRTdGFydCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBBWE51bWJlckZvcm1hdHRlck9wdGlvbnMgZXh0ZW5kcyBBWEZvcm1hdE9wdGlvbnMge1xuICBkZWNpbWFsUGxhY2VzPzogbnVtYmVyO1xuICB0aG91c2FuZFNlcGFyYXRvcj86IHN0cmluZztcbiAgZGVjaW1hbFNlcGFyYXRvcj86IHN0cmluZztcbiAgemVyb1BhZExlbmd0aD86IG51bWJlcjsgLy8gTmV3IG9wdGlvbiBmb3IgemVybyBwYWRkaW5nLFxuICBsb2NhbGU/OiBzdHJpbmdcbn1cblxuZGVjbGFyZSBtb2R1bGUgJy4uL2Zvcm1hdC50eXBlcycge1xuICBpbnRlcmZhY2UgQVhGb3JtYXRPcHRpb25zTWFwIHtcbiAgICAnbnVtYmVyJzogQVhOdW1iZXJGb3JtYXR0ZXJPcHRpb25zO1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWE51bWJlckZvcm1hdHRlciBpbXBsZW1lbnRzIEFYRm9ybWF0dGVyIHtcblxuICBwcml2YXRlIHNlcGFyYXRvcnNDYWNoZSA9IHt9O1xuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdudW1iZXInO1xuICB9XG5cbiAgZm9ybWF0KHZhbHVlOiBudW1iZXIsIG9wdGlvbnM6IEFYTnVtYmVyRm9ybWF0dGVyT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgY29uc3QgeyB0aG91c2FuZFNlcGFyYXRvciwgZGVjaW1hbFNlcGFyYXRvciB9ID0gdGhpcy5nZXRMb2NhbGVTZXBhcmF0b3JzKG9wdGlvbnM/LmxvY2FsZSk7XG4gICAgLy8gTWVyZ2UgdXNlciBvcHRpb25zIHdpdGggZGVmYXVsdCBvcHRpb25zXG4gICAgY29uc3QgZWZmZWN0aXZlT3B0aW9ucyA9IGRlZmF1bHRzKHt9LCBvcHRpb25zLCB7XG4gICAgICB0aG91c2FuZFNlcGFyYXRvcixcbiAgICAgIGRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICB6ZXJvUGFkTGVuZ3RoOiAwLFxuICAgICAgbG9jYWxlOiBuYXZpZ2F0b3IubGFuZ3VhZ2VcbiAgICB9KTtcblxuICAgIGNvbnN0IHNpZ24gPSB2YWx1ZSA8IDAgPyAnLScgOiAnJztcbiAgICBjb25zdCBhYnNvbHV0ZVZhbHVlID0gTWF0aC5hYnModmFsdWUpO1xuXG4gICAgLy8gSGFuZGxpbmcgemVybyBwYWRkaW5nIGZvciBpbnRlZ2VyIHBhcnRcbiAgICBsZXQgaW50ZWdlclBhcnQgPSBNYXRoLmZsb29yKGFic29sdXRlVmFsdWUpLnRvU3RyaW5nKCk7XG4gICAgaWYgKGVmZmVjdGl2ZU9wdGlvbnMuemVyb1BhZExlbmd0aCAmJiBlZmZlY3RpdmVPcHRpb25zLnplcm9QYWRMZW5ndGggPiBpbnRlZ2VyUGFydC5sZW5ndGgpIHtcbiAgICAgIGludGVnZXJQYXJ0ID0gcGFkU3RhcnQoaW50ZWdlclBhcnQsIGVmZmVjdGl2ZU9wdGlvbnMuemVyb1BhZExlbmd0aCwgJzAnKTtcbiAgICB9XG5cbiAgICAvLyBBcHBseWluZyB0aG91c2FuZCBzZXBhcmF0b3IgdG8gaW50ZWdlciBwYXJ0XG4gICAgaWYgKGVmZmVjdGl2ZU9wdGlvbnMudGhvdXNhbmRTZXBhcmF0b3IpIHtcbiAgICAgIGludGVnZXJQYXJ0ID0gaW50ZWdlclBhcnQucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgZWZmZWN0aXZlT3B0aW9ucy50aG91c2FuZFNlcGFyYXRvcik7XG4gICAgfVxuXG4gICAgLy8gQ29uc3RydWN0aW5nIHRoZSBmaW5hbCBmb3JtYXR0ZWQgdmFsdWVcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBzaWduICsgaW50ZWdlclBhcnQ7XG4gICAgaWYgKGVmZmVjdGl2ZU9wdGlvbnMuZGVjaW1hbFBsYWNlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBMaW1pdGluZyBkZWNpbWFsIHBsYWNlcyBpZiBzcGVjaWZpZWRcbiAgICAgIGNvbnN0IGRlY2ltYWxQYXJ0ID0gYWJzb2x1dGVWYWx1ZS50b0ZpeGVkKGVmZmVjdGl2ZU9wdGlvbnMuZGVjaW1hbFBsYWNlcykuc3BsaXQoJy4nKVsxXTtcbiAgICAgIGZvcm1hdHRlZFZhbHVlICs9IGVmZmVjdGl2ZU9wdGlvbnMuZGVjaW1hbFNlcGFyYXRvciArIGRlY2ltYWxQYXJ0O1xuICAgIH0gZWxzZSBpZiAoIWlzSW50ZWdlcih2YWx1ZSkpIHtcbiAgICAgIC8vIFNob3dpbmcgZnVsbCBkZWNpbWFsIHBhcnQgaWYgZGVjaW1hbFBsYWNlcyBpcyBub3Qgc3BlY2lmaWVkXG4gICAgICBjb25zdCBkZWNpbWFsUGFydCA9IGFic29sdXRlVmFsdWUudG9TdHJpbmcoKS5zcGxpdCgnLicpWzFdIHx8ICcnO1xuICAgICAgaWYgKGRlY2ltYWxQYXJ0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUgKz0gZWZmZWN0aXZlT3B0aW9ucy5kZWNpbWFsU2VwYXJhdG9yICsgZGVjaW1hbFBhcnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvcm1hdHRlZFZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbGVTZXBhcmF0b3JzKGxvY2FsZSA9IG5hdmlnYXRvci5sYW5ndWFnZSk6IHsgdGhvdXNhbmRTZXBhcmF0b3I6IHN0cmluZywgZGVjaW1hbFNlcGFyYXRvcjogc3RyaW5nIH0ge1xuICAgIC8vIFVzZSBjYWNoZSBpZiBhdmFpbGFibGVcbiAgICBpZiAodGhpcy5zZXBhcmF0b3JzQ2FjaGVbbG9jYWxlXSkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VwYXJhdG9yc0NhY2hlW2xvY2FsZV07XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coJ2dldExvY2FsZVNlcGFyYXRvcnMnLCBsb2NhbGUpXG4gICAgY29uc3QgbnVtYmVyRm9ybWF0ID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSk7XG4gICAgY29uc3QgcGFydHMgPSBudW1iZXJGb3JtYXQuZm9ybWF0VG9QYXJ0cygxMjM0NTY3Ljg5KTtcbiAgICBsZXQgdGhvdXNhbmRTZXBhcmF0b3IgPSAnJztcbiAgICBsZXQgZGVjaW1hbFNlcGFyYXRvciA9ICcnO1xuXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XG4gICAgICBpZiAocGFydC50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgIHRob3VzYW5kU2VwYXJhdG9yID0gcGFydC52YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAocGFydC50eXBlID09PSAnZGVjaW1hbCcpIHtcbiAgICAgICAgZGVjaW1hbFNlcGFyYXRvciA9IHBhcnQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ2FjaGUgdGhlIHJlc3VsdFxuICAgIHRoaXMuc2VwYXJhdG9yc0NhY2hlW2xvY2FsZV0gPSB7IHRob3VzYW5kU2VwYXJhdG9yLCBkZWNpbWFsU2VwYXJhdG9yIH07XG4gICAgcmV0dXJuIHRoaXMuc2VwYXJhdG9yc0NhY2hlW2xvY2FsZV07XG4gIH1cbn1cbiJdfQ==
@@ -34,10 +34,10 @@ export class AXImageService {
34
34
  canvas.getContext('2d').drawImage(image, 0, 0, width, height);
35
35
  return new Promise((resolve) => canvas.toBlob(resolve, options.type, options.quality));
36
36
  }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXImageService }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
38
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXImageService }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXImageService, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXImageService, decorators: [{
41
41
  type: Injectable
42
42
  }] });
43
43
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9pbWFnZS9zcmMvbGliL2ltYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxPQUFPLGNBQWM7SUFDekIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUtaO1FBQ0MsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVwRSxJQUFJLEtBQXVCLENBQUM7UUFDNUIsSUFBSSxPQUFPLENBQUMsTUFBTSxZQUFZLElBQUksRUFBRTtZQUNsQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDNUMsTUFBTSxJQUFJLE9BQU8sQ0FBUSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDcEQsS0FBSyxHQUFHLENBQUMsQ0FBQztTQUNYO2FBQU07WUFDTCxLQUFLLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQztTQUN4QjtRQUVELG1CQUFtQjtRQUNuQixNQUFNLE1BQU0sR0FBUSxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDeEIsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMxQixJQUFJLEtBQUssR0FBRyxNQUFNLEVBQUU7WUFDbEIsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRTtnQkFDM0IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNsQyxLQUFLLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQzthQUN6QjtTQUNGO2FBQU07WUFDTCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUM1QixLQUFLLElBQUksT0FBTyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ2xDLE1BQU0sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO2FBQzFCO1NBQ0Y7UUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixNQUFNLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDOUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDOzhHQXRDVSxjQUFjO2tIQUFkLGNBQWM7OzJGQUFkLGNBQWM7a0JBRDFCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWEltYWdlU2VydmljZSB7XG4gIGFzeW5jIHJlc2l6ZShvcHRpb25zOiB7XG4gICAgbWF4U2l6ZTogbnVtYmVyO1xuICAgIHNvdXJjZTogSFRNTEltYWdlRWxlbWVudCB8IEZpbGU7XG4gICAgdHlwZT86ICdpbWFnZS9wbmcnIHwgJ2ltYWdlL2pwZWcnIHwgJ2ltYWdlL3dlYnAnO1xuICAgIHF1YWxpdHk/OiBudW1iZXI7XG4gIH0pOiBQcm9taXNlPEJsb2I+IHtcbiAgICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IHR5cGU6ICdpbWFnZS9wbmcnLCBxdWFsaXR5OiAxIH0sIG9wdGlvbnMpO1xuXG4gICAgbGV0IGltYWdlOiBIVE1MSW1hZ2VFbGVtZW50O1xuICAgIGlmIChvcHRpb25zLnNvdXJjZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgIGNvbnN0IGEgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGEuc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChvcHRpb25zLnNvdXJjZSk7XG4gICAgICBhd2FpdCBuZXcgUHJvbWlzZTxFdmVudD4oKHJlcykgPT4gKGEub25sb2FkID0gcmVzKSk7XG4gICAgICBpbWFnZSA9IGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGltYWdlID0gb3B0aW9ucy5zb3VyY2U7XG4gICAgfVxuXG4gICAgLy8gUmVzaXplIHRoZSBpbWFnZVxuICAgIGNvbnN0IGNhbnZhczogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgbGV0IHdpZHRoID0gaW1hZ2Uud2lkdGg7XG4gICAgbGV0IGhlaWdodCA9IGltYWdlLmhlaWdodDtcbiAgICBpZiAod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgIGlmICh3aWR0aCA+IG9wdGlvbnMubWF4U2l6ZSkge1xuICAgICAgICBoZWlnaHQgKj0gb3B0aW9ucy5tYXhTaXplIC8gd2lkdGg7XG4gICAgICAgIHdpZHRoID0gb3B0aW9ucy5tYXhTaXplO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoaGVpZ2h0ID4gb3B0aW9ucy5tYXhTaXplKSB7XG4gICAgICAgIHdpZHRoICo9IG9wdGlvbnMubWF4U2l6ZSAvIGhlaWdodDtcbiAgICAgICAgaGVpZ2h0ID0gb3B0aW9ucy5tYXhTaXplO1xuICAgICAgfVxuICAgIH1cbiAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICBjYW52YXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpLmRyYXdJbWFnZShpbWFnZSwgMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBjYW52YXMudG9CbG9iKHJlc29sdmUsIG9wdGlvbnMudHlwZSwgb3B0aW9ucy5xdWFsaXR5KSk7XG4gIH1cbn1cbiJdfQ==
@@ -24,10 +24,10 @@ export class AXSafePipe {
24
24
  throw new Error(`Invalid safe type specified: ${type}`);
25
25
  }
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXSafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
28
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: AXSafePipe, isStandalone: true, name: "safe" }); }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXSafePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe }); }
28
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: AXSafePipe, isStandalone: true, name: "safe" }); }
29
29
  }
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXSafePipe, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXSafePipe, decorators: [{
31
31
  type: Pipe,
32
32
  args: [{
33
33
  name: 'safe',
@@ -208,10 +208,10 @@ export class AXPlatform {
208
208
  // init functions
209
209
  this._setFullHeightRatio();
210
210
  }
211
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
212
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }
211
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXPlatform, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
212
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXPlatform, providedIn: 'root' }); }
213
213
  }
214
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXPlatform, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXPlatform, decorators: [{
215
215
  type: Injectable,
216
216
  args: [{
217
217
  providedIn: 'root',
@@ -180,10 +180,10 @@ export class AXCookieStorageService {
180
180
  }
181
181
  }
182
182
  }
183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXCookieStorageService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
184
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXCookieStorageService }); }
183
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXCookieStorageService, deps: [{ token: DOCUMENT }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
184
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXCookieStorageService }); }
185
185
  }
186
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXCookieStorageService, decorators: [{
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXCookieStorageService, decorators: [{
187
187
  type: Injectable
188
188
  }], ctorParameters: () => [{ type: Document, decorators: [{
189
189
  type: Inject,
@@ -13,10 +13,10 @@ export class AXLocalStorageService {
13
13
  removeItem(key) {
14
14
  return localStorage.removeItem(key);
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXLocalStorageService }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXLocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXLocalStorageService }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXLocalStorageService, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXLocalStorageService, decorators: [{
20
20
  type: Injectable
21
21
  }] });
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3N0b3JhZ2Uvc3JjL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLEdBQUcsQ0FBYyxHQUFXO1FBQzFCLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxHQUFHLENBQWMsR0FBVyxFQUFFLEtBQVE7UUFDcEMsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUs7UUFDSCxPQUFPLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBZlUscUJBQXFCO2tIQUFyQixxQkFBcUI7OzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFN0b3JhZ2UgfSBmcm9tICcuL3N0b3JhZ2UuaW50ZXJmYWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYTG9jYWxTdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIEFYU3RvcmFnZSB7XG4gIGdldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpIHx8ICcnKTtcbiAgfVxuXG4gIHNldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcsIHZhbHVlOiBUKTogdm9pZCB7XG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHJldHVybiBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxufVxuIl19
@@ -13,10 +13,10 @@ export class AXSessionStorageService {
13
13
  removeItem(key) {
14
14
  return sessionStorage.removeItem(key);
15
15
  }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXSessionStorageService }); }
16
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXSessionStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
17
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXSessionStorageService }); }
18
18
  }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXSessionStorageService, decorators: [{
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXSessionStorageService, decorators: [{
20
20
  type: Injectable
21
21
  }] });
22
22
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3RvcmFnZS9zcmMvc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFJM0MsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxHQUFHLENBQWMsR0FBVztRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsR0FBRyxDQUFjLEdBQVcsRUFBRSxLQUFRO1FBQ3BDLE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE9BQU8sY0FBYyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQWZVLHVCQUF1QjtrSEFBdkIsdUJBQXVCOzsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhTdG9yYWdlIH0gZnJvbSAnLi9zdG9yYWdlLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBWFNlc3Npb25TdG9yYWdlU2VydmljZSBpbXBsZW1lbnRzIEFYU3RvcmFnZSB7XG4gIGdldDxUID0gdW5rbm93bj4oa2V5OiBzdHJpbmcpOiBUIHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSkgfHwgJycpO1xuICB9XG5cbiAgc2V0PFQgPSB1bmtub3duPihrZXk6IHN0cmluZywgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gIH1cblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICB9XG59XG4iXX0=
@@ -10,9 +10,9 @@ function initializeApp(translatorService, config) {
10
10
  };
11
11
  }
12
12
  export class AXTranslationModule {
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
15
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationModule, providers: [
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationModule, declarations: [AXTranslatorPipe, AXTranslatorDirective], exports: [AXTranslatorPipe, AXTranslatorDirective] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationModule, providers: [
16
16
  {
17
17
  provide: APP_INITIALIZER,
18
18
  useFactory: initializeApp,
@@ -21,7 +21,7 @@ export class AXTranslationModule {
21
21
  }
22
22
  ] }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationModule, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationModule, decorators: [{
25
25
  type: NgModule,
26
26
  args: [{
27
27
  imports: [],
@@ -155,10 +155,10 @@ export class AXTranslationService {
155
155
  // Perform parameter replacement
156
156
  return this.getTranslation((translation || key), lang, scope, options?.params);
157
157
  }
158
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
158
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
159
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationService, providedIn: 'root' }); }
160
160
  }
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslationService, decorators: [{
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslationService, decorators: [{
162
162
  type: Injectable,
163
163
  args: [{ providedIn: 'root' }]
164
164
  }], ctorParameters: () => [] });
@@ -16,10 +16,10 @@ export class AXTranslatorDirective {
16
16
  },
17
17
  });
18
18
  }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslatorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Directive }); }
20
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.0", type: AXTranslatorDirective, selector: "[translate]", ngImport: i0 }); }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslatorDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: i1.AXTranslationService }], target: i0.ɵɵFactoryTarget.Directive }); }
20
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.1", type: AXTranslatorDirective, selector: "[translate]", ngImport: i0 }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: AXTranslatorDirective, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: AXTranslatorDirective, decorators: [{
23
23
  type: Directive,
24
24
  args: [{
25
25
  selector: '[translate]',