diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js
index f14ba6a..e34d7ad 100644
--- a/3CX_TAPI.user.js
+++ b/3CX_TAPI.user.js
@@ -1,16 +1,16 @@
 // ==UserScript==
 // @name          3CX TAPI
 // @namespace     http://cp-solutions.at
-// @version       9.1.1
+// @version       9.2.0
 // @author        Daniel Triendl <d.triendl@cp-solutions.at>
 // @copyright     Copyright 2021 CP Solutions GmbH
 // @source        https://source.cp-austria.at/git/CPATRD/3cx_tapi.git
 // @downloadURL   https://source.cp-austria.at/git/CPATRD/3cx_tapi/raw/branch/master/3CX_TAPI.user.js
-// @match         https://192.168.0.154:5001/webclient*
-// @match         https://cpsolution.my3cx.at:5001/webclient*
+// @match         https://192.168.0.154:5001/*
+// @match         https://cpsolution.my3cx.at:5001/*
 // @require       https://cdn.jsdelivr.net/gh/CoeJoder/waitForKeyElements.js@v1.2/waitForKeyElements.js
-// @require       https://cdn.jsdelivr.net/npm/axios@^1.4.0/dist/axios.min.js
-// @require       https://cdn.jsdelivr.net/npm/axios-userscript-adapter@^0.2.0-alpha.2/dist/axiosGmxhrAdapter.min.js
+// @require       https://cdn.jsdelivr.net/npm/axios@undefined/dist/axios.min.js
+// @require       https://cdn.jsdelivr.net/npm/axios-userscript-adapter@undefined/dist/axiosGmxhrAdapter.min.js
 // @grant         GM.xmlHttpRequest
 // @grant         GM.notification
 // @grant         GM.getValue
@@ -483,7 +483,7 @@ module.exports = function (i) {
 
 "use strict";
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   Z: () => (__WEBPACK_DEFAULT_EXPORT__)
+/* harmony export */   A: () => (__WEBPACK_DEFAULT_EXPORT__)
 /* harmony export */ });
 /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js");
 /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
@@ -548,7 +548,7 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.tapi-search-autocomplete {
 
 "use strict";
 /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */   Z: () => (__WEBPACK_DEFAULT_EXPORT__)
+/* harmony export */   A: () => (__WEBPACK_DEFAULT_EXPORT__)
 /* harmony export */ });
 /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./node_modules/css-loader/dist/runtime/noSourceMaps.js");
 /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
@@ -907,304 +907,42 @@ var __webpack_exports__ = {};
 (() => {
 "use strict";
 
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/pattern.js
-function repeatedTimeunitPattern(prefix, singleTimeunitPattern) {
-  const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\((?!\?)/g, "(?:");
-  return `${prefix}${singleTimeunitPatternNoCapture}\\s{0,5}(?:,?\\s{0,5}${singleTimeunitPatternNoCapture}){0,10}`;
-}
-function extractTerms(dictionary) {
-  let keys;
-  if (dictionary instanceof Array) {
-    keys = [...dictionary];
-  } else if (dictionary instanceof Map) {
-    keys = Array.from(dictionary.keys());
-  } else {
-    keys = Object.keys(dictionary);
-  }
-  return keys;
-}
-function matchAnyPattern(dictionary) {
-  const joinedTerms = extractTerms(dictionary).sort((a, b) => b.length - a.length).join("|").replace(/\./g, "\\.");
-  return `(?:${joinedTerms})`;
-}
-// EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js
-var dayjs_min = __webpack_require__("./node_modules/dayjs/dayjs.min.js");
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/calculation/years.js
-
-function findMostLikelyADYear(yearNumber) {
-  if (yearNumber < 100) {
-    if (yearNumber > 50) {
-      yearNumber = yearNumber + 1900;
-    } else {
-      yearNumber = yearNumber + 2000;
-    }
-  }
-  return yearNumber;
-}
-function findYearClosestToRef(refDate, day, month) {
-  const refMoment = dayjs_min(refDate);
-  let dateMoment = refMoment;
-  dateMoment = dateMoment.month(month - 1);
-  dateMoment = dateMoment.date(day);
-  dateMoment = dateMoment.year(refMoment.year());
-  const nextYear = dateMoment.add(1, "y");
-  const lastYear = dateMoment.add(-1, "y");
-  if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
-    dateMoment = nextYear;
-  } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
-    dateMoment = lastYear;
-  }
-  return dateMoment.year();
-}
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/constants.js
-
-
-const WEEKDAY_DICTIONARY = {
-  sunday: 0,
-  sun: 0,
-  "sun.": 0,
-  monday: 1,
-  mon: 1,
-  "mon.": 1,
-  tuesday: 2,
-  tue: 2,
-  "tue.": 2,
-  wednesday: 3,
-  wed: 3,
-  "wed.": 3,
-  thursday: 4,
-  thurs: 4,
-  "thurs.": 4,
-  thur: 4,
-  "thur.": 4,
-  thu: 4,
-  "thu.": 4,
-  friday: 5,
-  fri: 5,
-  "fri.": 5,
-  saturday: 6,
-  sat: 6,
-  "sat.": 6
-};
-const FULL_MONTH_NAME_DICTIONARY = {
-  january: 1,
-  february: 2,
-  march: 3,
-  april: 4,
-  may: 5,
-  june: 6,
-  july: 7,
-  august: 8,
-  september: 9,
-  october: 10,
-  november: 11,
-  december: 12
-};
-const MONTH_DICTIONARY = {
-  ...FULL_MONTH_NAME_DICTIONARY,
-  jan: 1,
-  "jan.": 1,
-  feb: 2,
-  "feb.": 2,
-  mar: 3,
-  "mar.": 3,
-  apr: 4,
-  "apr.": 4,
-  jun: 6,
-  "jun.": 6,
-  jul: 7,
-  "jul.": 7,
-  aug: 8,
-  "aug.": 8,
-  sep: 9,
-  "sep.": 9,
-  sept: 9,
-  "sept.": 9,
-  oct: 10,
-  "oct.": 10,
-  nov: 11,
-  "nov.": 11,
-  dec: 12,
-  "dec.": 12
-};
-const INTEGER_WORD_DICTIONARY = {
-  one: 1,
-  two: 2,
-  three: 3,
-  four: 4,
-  five: 5,
-  six: 6,
-  seven: 7,
-  eight: 8,
-  nine: 9,
-  ten: 10,
-  eleven: 11,
-  twelve: 12
-};
-const ORDINAL_WORD_DICTIONARY = {
-  first: 1,
-  second: 2,
-  third: 3,
-  fourth: 4,
-  fifth: 5,
-  sixth: 6,
-  seventh: 7,
-  eighth: 8,
-  ninth: 9,
-  tenth: 10,
-  eleventh: 11,
-  twelfth: 12,
-  thirteenth: 13,
-  fourteenth: 14,
-  fifteenth: 15,
-  sixteenth: 16,
-  seventeenth: 17,
-  eighteenth: 18,
-  nineteenth: 19,
-  twentieth: 20,
-  "twenty first": 21,
-  "twenty-first": 21,
-  "twenty second": 22,
-  "twenty-second": 22,
-  "twenty third": 23,
-  "twenty-third": 23,
-  "twenty fourth": 24,
-  "twenty-fourth": 24,
-  "twenty fifth": 25,
-  "twenty-fifth": 25,
-  "twenty sixth": 26,
-  "twenty-sixth": 26,
-  "twenty seventh": 27,
-  "twenty-seventh": 27,
-  "twenty eighth": 28,
-  "twenty-eighth": 28,
-  "twenty ninth": 29,
-  "twenty-ninth": 29,
-  "thirtieth": 30,
-  "thirty first": 31,
-  "thirty-first": 31
-};
-const TIME_UNIT_DICTIONARY_NO_ABBR = {
-  second: "second",
-  seconds: "second",
-  minute: "minute",
-  minutes: "minute",
-  hour: "hour",
-  hours: "hour",
-  day: "d",
-  days: "d",
-  week: "week",
-  weeks: "week",
-  month: "month",
-  months: "month",
-  quarter: "quarter",
-  quarters: "quarter",
-  year: "year",
-  years: "year"
-};
-const TIME_UNIT_DICTIONARY = {
-  s: "second",
-  sec: "second",
-  second: "second",
-  seconds: "second",
-  m: "minute",
-  min: "minute",
-  mins: "minute",
-  minute: "minute",
-  minutes: "minute",
-  h: "hour",
-  hr: "hour",
-  hrs: "hour",
-  hour: "hour",
-  hours: "hour",
-  d: "d",
-  day: "d",
-  days: "d",
-  w: "w",
-  week: "week",
-  weeks: "week",
-  mo: "month",
-  mon: "month",
-  mos: "month",
-  month: "month",
-  months: "month",
-  qtr: "quarter",
-  quarter: "quarter",
-  quarters: "quarter",
-  y: "year",
-  yr: "year",
-  year: "year",
-  years: "year",
-  ...TIME_UNIT_DICTIONARY_NO_ABBR
-};
-const NUMBER_PATTERN = `(?:${matchAnyPattern(INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;
-function parseNumberPattern(match) {
-  const num = match.toLowerCase();
-  if (INTEGER_WORD_DICTIONARY[num] !== undefined) {
-    return INTEGER_WORD_DICTIONARY[num];
-  } else if (num === "a" || num === "an" || num == "the") {
-    return 1;
-  } else if (num.match(/few/)) {
-    return 3;
-  } else if (num.match(/half/)) {
-    return 0.5;
-  } else if (num.match(/couple/)) {
-    return 2;
-  } else if (num.match(/several/)) {
-    return 7;
-  }
-  return parseFloat(num);
-}
-const ORDINAL_NUMBER_PATTERN = `(?:${matchAnyPattern(ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;
-function parseOrdinalNumberPattern(match) {
-  let num = match.toLowerCase();
-  if (ORDINAL_WORD_DICTIONARY[num] !== undefined) {
-    return ORDINAL_WORD_DICTIONARY[num];
-  }
-  num = num.replace(/(?:st|nd|rd|th)$/i, "");
-  return parseInt(num);
-}
-const YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])`;
-function parseYear(match) {
-  if (/BE/i.test(match)) {
-    match = match.replace(/BE/i, "");
-    return parseInt(match) - 543;
-  }
-  if (/BCE?/i.test(match)) {
-    match = match.replace(/BCE?/i, "");
-    return -parseInt(match);
-  }
-  if (/(AD|CE)/i.test(match)) {
-    match = match.replace(/(AD|CE)/i, "");
-    return parseInt(match);
-  }
-  const rawYearNumber = parseInt(match);
-  return findMostLikelyADYear(rawYearNumber);
-}
-const SINGLE_TIME_UNIT_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY)})`;
-const SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, "i");
-const SINGLE_TIME_UNIT_NO_ABBR_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY_NO_ABBR)})`;
-const TIME_UNITS_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN);
-const TIME_UNITS_NO_ABBR_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_NO_ABBR_PATTERN);
-function parseTimeUnits(timeunitText) {
-  const fragments = {};
-  let remainingText = timeunitText;
-  let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
-  while (match) {
-    collectDateTimeFragment(fragments, match);
-    remainingText = remainingText.substring(match[0].length).trim();
-    match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
-  }
-  return fragments;
-}
-function collectDateTimeFragment(fragments, match) {
-  const num = parseNumberPattern(match[1]);
-  const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()];
-  fragments[unit] = num;
-}
 // EXTERNAL MODULE: ./node_modules/dayjs/plugin/quarterOfYear.js
 var quarterOfYear = __webpack_require__("./node_modules/dayjs/plugin/quarterOfYear.js");
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/dayjs.js
+// EXTERNAL MODULE: ./node_modules/dayjs/dayjs.min.js
+var dayjs_min = __webpack_require__("./node_modules/dayjs/dayjs.min.js");
+;// ./node_modules/chrono-node/dist/esm/types.js
+var types_Meridiem;
+(function (Meridiem) {
+  Meridiem[Meridiem["AM"] = 0] = "AM";
+  Meridiem[Meridiem["PM"] = 1] = "PM";
+})(types_Meridiem || (types_Meridiem = {}));
+var Weekday;
+(function (Weekday) {
+  Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY";
+  Weekday[Weekday["MONDAY"] = 1] = "MONDAY";
+  Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY";
+  Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY";
+  Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY";
+  Weekday[Weekday["FRIDAY"] = 5] = "FRIDAY";
+  Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY";
+})(Weekday || (Weekday = {}));
+var Month;
+(function (Month) {
+  Month[Month["JANUARY"] = 1] = "JANUARY";
+  Month[Month["FEBRUARY"] = 2] = "FEBRUARY";
+  Month[Month["MARCH"] = 3] = "MARCH";
+  Month[Month["APRIL"] = 4] = "APRIL";
+  Month[Month["MAY"] = 5] = "MAY";
+  Month[Month["JUNE"] = 6] = "JUNE";
+  Month[Month["JULY"] = 7] = "JULY";
+  Month[Month["AUGUST"] = 8] = "AUGUST";
+  Month[Month["SEPTEMBER"] = 9] = "SEPTEMBER";
+  Month[Month["OCTOBER"] = 10] = "OCTOBER";
+  Month[Month["NOVEMBER"] = 11] = "NOVEMBER";
+  Month[Month["DECEMBER"] = 12] = "DECEMBER";
+})(Month || (Month = {}));
+;// ./node_modules/chrono-node/dist/esm/utils/dayjs.js
 
 function assignTheNextDay(component, targetDayJs) {
   targetDayJs = targetDayJs.add(1, "day");
@@ -1227,9 +965,9 @@ function assignSimilarTime(component, targetDayJs) {
   component.assign("second", targetDayJs.second());
   component.assign("millisecond", targetDayJs.millisecond());
   if (component.get("hour") < 12) {
-    component.assign("meridiem", esm_Meridiem.AM);
+    component.assign("meridiem", types_Meridiem.AM);
   } else {
-    component.assign("meridiem", esm_Meridiem.PM);
+    component.assign("meridiem", types_Meridiem.PM);
   }
 }
 function implySimilarDate(component, targetDayJs) {
@@ -1243,7 +981,7 @@ function implySimilarTime(component, targetDayJs) {
   component.imply("second", targetDayJs.second());
   component.imply("millisecond", targetDayJs.millisecond());
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/timezone.js
+;// ./node_modules/chrono-node/dist/esm/timezone.js
 
 
 const TIMEZONE_ABBR_MAP = {
@@ -1507,7 +1245,7 @@ function toTimezoneOffset(timezoneInput, date, timezoneOverrides = {}) {
   }
   return matchedTimezone.timezoneOffsetNonDst;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/results.js
+;// ./node_modules/chrono-node/dist/esm/results.js
 
 
 
@@ -1537,6 +1275,7 @@ class ReferenceWithTimezone {
 }
 class results_ParsingComponents {
   constructor(reference, knownComponents) {
+    this._tags = new Set();
     this.reference = reference;
     this.knownValues = {};
     this.impliedValues = {};
@@ -1601,7 +1340,7 @@ class results_ParsingComponents {
     return !this.isCertain("hour") && !this.isCertain("minute") && !this.isCertain("second");
   }
   isOnlyTime() {
-    return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month");
+    return !this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month") && !this.isCertain("year");
   }
   isOnlyWeekdayComponent() {
     return this.isCertain("weekday") && !this.isCertain("day") && !this.isCertain("month");
@@ -1619,7 +1358,11 @@ class results_ParsingComponents {
     return true;
   }
   toString() {
-    return `[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`;
+    return `[ParsingComponents {
+            tags: ${JSON.stringify(Array.from(this._tags).sort())}, 
+            knownValues: ${JSON.stringify(this.knownValues)}, 
+            impliedValues: ${JSON.stringify(this.impliedValues)}}, 
+            reference: ${JSON.stringify(this.reference)}]`;
   }
   dayjs() {
     return dayjs_min(this.date());
@@ -1629,6 +1372,19 @@ class results_ParsingComponents {
     const timezoneAdjustment = this.reference.getSystemTimezoneAdjustmentMinute(date, this.get("timezoneOffset"));
     return new Date(date.getTime() + timezoneAdjustment * 60000);
   }
+  addTag(tag) {
+    this._tags.add(tag);
+    return this;
+  }
+  addTags(tags) {
+    for (const tag of tags) {
+      this._tags.add(tag);
+    }
+    return this;
+  }
+  tags() {
+    return new Set(this._tags);
+  }
   dateWithoutTimezoneAdjustment() {
     const date = new Date(this.get("year"), this.get("month") - 1, this.get("day"), this.get("hour"), this.get("minute"), this.get("second"), this.get("millisecond"));
     date.setFullYear(this.get("year"));
@@ -1655,10 +1411,12 @@ class results_ParsingComponents {
         components.assign("day", date.date());
         components.assign("month", date.month() + 1);
         components.assign("year", date.year());
+      } else if (fragments["week"]) {
+        components.assign("day", date.date());
+        components.assign("month", date.month() + 1);
+        components.assign("year", date.year());
+        components.imply("weekday", date.day());
       } else {
-        if (fragments["week"]) {
-          components.imply("weekday", date.day());
-        }
         components.imply("day", date.date());
         if (fragments["month"]) {
           components.assign("month", date.month() + 1);
@@ -1694,26 +1452,340 @@ class ParsingResult {
   date() {
     return this.start.date();
   }
+  tags() {
+    const combinedTags = new Set(this.start.tags());
+    if (this.end) {
+      for (const tag of this.end.tags()) {
+        combinedTags.add(tag);
+      }
+    }
+    return combinedTags;
+  }
   toString() {
-    return `[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`;
+    const tags = Array.from(this.tags()).sort();
+    return `[ParsingResult {index: ${this.index}, text: '${this.text}', tags: ${JSON.stringify(tags)} ...}]`;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/AbstractParserWithWordBoundary.js
+;// ./node_modules/chrono-node/dist/esm/utils/pattern.js
+function repeatedTimeunitPattern(prefix, singleTimeunitPattern, connectorPattern = "\\s{0,5},?\\s{0,5}") {
+  const singleTimeunitPatternNoCapture = singleTimeunitPattern.replace(/\((?!\?)/g, "(?:");
+  return `${prefix}${singleTimeunitPatternNoCapture}(?:${connectorPattern}${singleTimeunitPatternNoCapture}){0,10}`;
+}
+function extractTerms(dictionary) {
+  let keys;
+  if (dictionary instanceof Array) {
+    keys = [...dictionary];
+  } else if (dictionary instanceof Map) {
+    keys = Array.from(dictionary.keys());
+  } else {
+    keys = Object.keys(dictionary);
+  }
+  return keys;
+}
+function matchAnyPattern(dictionary) {
+  const joinedTerms = extractTerms(dictionary).sort((a, b) => b.length - a.length).join("|").replace(/\./g, "\\.");
+  return `(?:${joinedTerms})`;
+}
+;// ./node_modules/chrono-node/dist/esm/calculation/years.js
+
+function findMostLikelyADYear(yearNumber) {
+  if (yearNumber < 100) {
+    if (yearNumber > 50) {
+      yearNumber = yearNumber + 1900;
+    } else {
+      yearNumber = yearNumber + 2000;
+    }
+  }
+  return yearNumber;
+}
+function findYearClosestToRef(refDate, day, month) {
+  const refMoment = dayjs_min(refDate);
+  let dateMoment = refMoment;
+  dateMoment = dateMoment.month(month - 1);
+  dateMoment = dateMoment.date(day);
+  dateMoment = dateMoment.year(refMoment.year());
+  const nextYear = dateMoment.add(1, "y");
+  const lastYear = dateMoment.add(-1, "y");
+  if (Math.abs(nextYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
+    dateMoment = nextYear;
+  } else if (Math.abs(lastYear.diff(refMoment)) < Math.abs(dateMoment.diff(refMoment))) {
+    dateMoment = lastYear;
+  }
+  return dateMoment.year();
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/constants.js
+
+
+const WEEKDAY_DICTIONARY = {
+  sunday: 0,
+  sun: 0,
+  "sun.": 0,
+  monday: 1,
+  mon: 1,
+  "mon.": 1,
+  tuesday: 2,
+  tue: 2,
+  "tue.": 2,
+  wednesday: 3,
+  wed: 3,
+  "wed.": 3,
+  thursday: 4,
+  thurs: 4,
+  "thurs.": 4,
+  thur: 4,
+  "thur.": 4,
+  thu: 4,
+  "thu.": 4,
+  friday: 5,
+  fri: 5,
+  "fri.": 5,
+  saturday: 6,
+  sat: 6,
+  "sat.": 6
+};
+const FULL_MONTH_NAME_DICTIONARY = {
+  january: 1,
+  february: 2,
+  march: 3,
+  april: 4,
+  may: 5,
+  june: 6,
+  july: 7,
+  august: 8,
+  september: 9,
+  october: 10,
+  november: 11,
+  december: 12
+};
+const MONTH_DICTIONARY = {
+  ...FULL_MONTH_NAME_DICTIONARY,
+  jan: 1,
+  "jan.": 1,
+  feb: 2,
+  "feb.": 2,
+  mar: 3,
+  "mar.": 3,
+  apr: 4,
+  "apr.": 4,
+  jun: 6,
+  "jun.": 6,
+  jul: 7,
+  "jul.": 7,
+  aug: 8,
+  "aug.": 8,
+  sep: 9,
+  "sep.": 9,
+  sept: 9,
+  "sept.": 9,
+  oct: 10,
+  "oct.": 10,
+  nov: 11,
+  "nov.": 11,
+  dec: 12,
+  "dec.": 12
+};
+const INTEGER_WORD_DICTIONARY = {
+  one: 1,
+  two: 2,
+  three: 3,
+  four: 4,
+  five: 5,
+  six: 6,
+  seven: 7,
+  eight: 8,
+  nine: 9,
+  ten: 10,
+  eleven: 11,
+  twelve: 12
+};
+const ORDINAL_WORD_DICTIONARY = {
+  first: 1,
+  second: 2,
+  third: 3,
+  fourth: 4,
+  fifth: 5,
+  sixth: 6,
+  seventh: 7,
+  eighth: 8,
+  ninth: 9,
+  tenth: 10,
+  eleventh: 11,
+  twelfth: 12,
+  thirteenth: 13,
+  fourteenth: 14,
+  fifteenth: 15,
+  sixteenth: 16,
+  seventeenth: 17,
+  eighteenth: 18,
+  nineteenth: 19,
+  twentieth: 20,
+  "twenty first": 21,
+  "twenty-first": 21,
+  "twenty second": 22,
+  "twenty-second": 22,
+  "twenty third": 23,
+  "twenty-third": 23,
+  "twenty fourth": 24,
+  "twenty-fourth": 24,
+  "twenty fifth": 25,
+  "twenty-fifth": 25,
+  "twenty sixth": 26,
+  "twenty-sixth": 26,
+  "twenty seventh": 27,
+  "twenty-seventh": 27,
+  "twenty eighth": 28,
+  "twenty-eighth": 28,
+  "twenty ninth": 29,
+  "twenty-ninth": 29,
+  "thirtieth": 30,
+  "thirty first": 31,
+  "thirty-first": 31
+};
+const TIME_UNIT_DICTIONARY_NO_ABBR = {
+  second: "second",
+  seconds: "second",
+  minute: "minute",
+  minutes: "minute",
+  hour: "hour",
+  hours: "hour",
+  day: "d",
+  days: "d",
+  week: "week",
+  weeks: "week",
+  month: "month",
+  months: "month",
+  quarter: "quarter",
+  quarters: "quarter",
+  year: "year",
+  years: "year"
+};
+const TIME_UNIT_DICTIONARY = {
+  s: "second",
+  sec: "second",
+  second: "second",
+  seconds: "second",
+  m: "minute",
+  min: "minute",
+  mins: "minute",
+  minute: "minute",
+  minutes: "minute",
+  h: "hour",
+  hr: "hour",
+  hrs: "hour",
+  hour: "hour",
+  hours: "hour",
+  d: "d",
+  day: "d",
+  days: "d",
+  w: "w",
+  week: "week",
+  weeks: "week",
+  mo: "month",
+  mon: "month",
+  mos: "month",
+  month: "month",
+  months: "month",
+  qtr: "quarter",
+  quarter: "quarter",
+  quarters: "quarter",
+  y: "year",
+  yr: "year",
+  year: "year",
+  years: "year",
+  ...TIME_UNIT_DICTIONARY_NO_ABBR
+};
+const NUMBER_PATTERN = `(?:${matchAnyPattern(INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|the|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;
+function parseNumberPattern(match) {
+  const num = match.toLowerCase();
+  if (INTEGER_WORD_DICTIONARY[num] !== undefined) {
+    return INTEGER_WORD_DICTIONARY[num];
+  } else if (num === "a" || num === "an" || num == "the") {
+    return 1;
+  } else if (num.match(/few/)) {
+    return 3;
+  } else if (num.match(/half/)) {
+    return 0.5;
+  } else if (num.match(/couple/)) {
+    return 2;
+  } else if (num.match(/several/)) {
+    return 7;
+  }
+  return parseFloat(num);
+}
+const ORDINAL_NUMBER_PATTERN = `(?:${matchAnyPattern(ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;
+function parseOrdinalNumberPattern(match) {
+  let num = match.toLowerCase();
+  if (ORDINAL_WORD_DICTIONARY[num] !== undefined) {
+    return ORDINAL_WORD_DICTIONARY[num];
+  }
+  num = num.replace(/(?:st|nd|rd|th)$/i, "");
+  return parseInt(num);
+}
+const YEAR_PATTERN = `(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9]|2[0-5])`;
+function parseYear(match) {
+  if (/BE/i.test(match)) {
+    match = match.replace(/BE/i, "");
+    return parseInt(match) - 543;
+  }
+  if (/BCE?/i.test(match)) {
+    match = match.replace(/BCE?/i, "");
+    return -parseInt(match);
+  }
+  if (/(AD|CE)/i.test(match)) {
+    match = match.replace(/(AD|CE)/i, "");
+    return parseInt(match);
+  }
+  const rawYearNumber = parseInt(match);
+  return findMostLikelyADYear(rawYearNumber);
+}
+const SINGLE_TIME_UNIT_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY)})`;
+const SINGLE_TIME_UNIT_REGEX = new RegExp(SINGLE_TIME_UNIT_PATTERN, "i");
+const SINGLE_TIME_UNIT_NO_ABBR_PATTERN = `(${NUMBER_PATTERN})\\s{0,3}(${matchAnyPattern(TIME_UNIT_DICTIONARY_NO_ABBR)})`;
+const TIME_UNIT_CONNECTOR_PATTERN = `\\s{0,5},?(?:\\s*and)?\\s{0,5}`;
+const TIME_UNITS_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_PATTERN, TIME_UNIT_CONNECTOR_PATTERN);
+const TIME_UNITS_NO_ABBR_PATTERN = repeatedTimeunitPattern(`(?:(?:about|around)\\s{0,3})?`, SINGLE_TIME_UNIT_NO_ABBR_PATTERN, TIME_UNIT_CONNECTOR_PATTERN);
+function parseTimeUnits(timeunitText) {
+  const fragments = {};
+  let remainingText = timeunitText;
+  let match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
+  while (match) {
+    collectDateTimeFragment(fragments, match);
+    remainingText = remainingText.substring(match[0].length).trim();
+    match = SINGLE_TIME_UNIT_REGEX.exec(remainingText);
+  }
+  if (Object.keys(fragments).length == 0) {
+    return null;
+  }
+  return fragments;
+}
+function collectDateTimeFragment(fragments, match) {
+  if (match[0].match(/^[a-zA-Z]+$/)) {
+    return;
+  }
+  const num = parseNumberPattern(match[1]);
+  const unit = TIME_UNIT_DICTIONARY[match[2].toLowerCase()];
+  fragments[unit] = num;
+}
+;// ./node_modules/chrono-node/dist/esm/common/parsers/AbstractParserWithWordBoundary.js
 class AbstractParserWithWordBoundaryChecking {
   constructor() {
     this.cachedInnerPattern = null;
     this.cachedPattern = null;
   }
+  innerPatternHasChange(context, currentInnerPattern) {
+    return this.innerPattern(context) !== currentInnerPattern;
+  }
   patternLeftBoundary() {
     return `(\\W|^)`;
   }
   pattern(context) {
-    const innerPattern = this.innerPattern(context);
-    if (innerPattern == this.cachedInnerPattern) {
-      return this.cachedPattern;
+    if (this.cachedInnerPattern) {
+      if (!this.innerPatternHasChange(context, this.cachedInnerPattern)) {
+        return this.cachedPattern;
+      }
     }
-    this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${innerPattern.source}`, innerPattern.flags);
-    this.cachedInnerPattern = innerPattern;
+    this.cachedInnerPattern = this.innerPattern(context);
+    this.cachedPattern = new RegExp(`${this.patternLeftBoundary()}${this.cachedInnerPattern.source}`, this.cachedInnerPattern.flags);
     return this.cachedPattern;
   }
   extract(context, match) {
@@ -1726,11 +1798,11 @@ class AbstractParserWithWordBoundaryChecking {
     return this.innerExtract(context, match);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitWithinFormatParser.js
 
 
 
-const PATTERN_WITHOUT_PREFIX = new RegExp(`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
+const PATTERN_WITH_OPTIONAL_PREFIX = new RegExp(`(?:(?:within|in|for)\\s*)?` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
 const PATTERN_WITH_PREFIX = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
 const PATTERN_WITH_PREFIX_STRICT = new RegExp(`(?:within|in|for)\\s*` + `(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i");
 class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryChecking {
@@ -1742,21 +1814,27 @@ class ENTimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin
     if (this.strictMode) {
       return PATTERN_WITH_PREFIX_STRICT;
     }
-    return context.option.forwardDate ? PATTERN_WITHOUT_PREFIX : PATTERN_WITH_PREFIX;
+    return context.option.forwardDate ? PATTERN_WITH_OPTIONAL_PREFIX : PATTERN_WITH_PREFIX;
   }
   innerExtract(context, match) {
+    if (match[0].match(/^for\s*the\s*\w+/)) {
+      return null;
+    }
     const timeUnits = parseTimeUnits(match[1]);
+    if (!timeUnits) {
+      return null;
+    }
     return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameLittleEndianParser.js
 
 
 
 
 
 
-const PATTERN = new RegExp(`(?:on\\s{0,3})?` + `(${ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\s{0,3}(?:to|\\-|\\–|until|through|till)?\\s{0,3}` + `(${ORDINAL_NUMBER_PATTERN})` + ")?" + `(?:-|/|\\s{0,3}(?:of)?\\s{0,3})` + `(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:" + `(?:-|/|,?\\s{0,3})` + `(${YEAR_PATTERN}(?![^\\s]\\d))` + ")?" + "(?=\\W|$)", "i");
+const PATTERN = new RegExp(`(?:on\\s{0,3})?` + `(${ORDINAL_NUMBER_PATTERN})` + `(?:` + `\\s{0,3}(?:to|\\-|\\–|until|through|till)?\\s{0,3}` + `(${ORDINAL_NUMBER_PATTERN})` + ")?" + `(?:-|/|\\s{0,3}(?:of)?\\s{0,3})` + `(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:" + `(?:-|/|,?\\s{0,3})` + `(${YEAR_PATTERN}(?!\\w))` + ")?" + "(?=\\W|$)", "i");
 const DATE_GROUP = 1;
 const DATE_TO_GROUP = 2;
 const MONTH_NAME_GROUP = 3;
@@ -1790,19 +1868,23 @@ class ENMonthNameLittleEndianParser extends AbstractParserWithWordBoundaryChecki
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameMiddleEndianParser.js
 
 
 
 
 
 
-const ENMonthNameMiddleEndianParser_PATTERN = new RegExp(`(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:-|/|\\s*,?\\s*)" + `(${ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*` + "(?:" + "(?:to|\\-)\\s*" + `(${ORDINAL_NUMBER_PATTERN})\\s*` + ")?" + "(?:" + "(?:-|/|\\s*,?\\s*)" + `(${YEAR_PATTERN})` + ")?" + "(?=\\W|$)(?!\\:\\d)", "i");
+const ENMonthNameMiddleEndianParser_PATTERN = new RegExp(`(${matchAnyPattern(MONTH_DICTIONARY)})` + "(?:-|/|\\s*,?\\s*)" + `(${ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*` + "(?:" + "(?:to|\\-)\\s*" + `(${ORDINAL_NUMBER_PATTERN})\\s*` + ")?" + "(?:" + `(?:-|/|\\s*,\\s*|\\s+)` + `(${YEAR_PATTERN})` + ")?" + "(?=\\W|$)(?!\\:\\d)", "i");
 const ENMonthNameMiddleEndianParser_MONTH_NAME_GROUP = 1;
 const ENMonthNameMiddleEndianParser_DATE_GROUP = 2;
 const ENMonthNameMiddleEndianParser_DATE_TO_GROUP = 3;
 const ENMonthNameMiddleEndianParser_YEAR_GROUP = 4;
 class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecking {
+  constructor(shouldSkipYearLikeDate) {
+    super();
+    this.shouldSkipYearLikeDate = shouldSkipYearLikeDate;
+  }
   innerPattern() {
     return ENMonthNameMiddleEndianParser_PATTERN;
   }
@@ -1812,10 +1894,15 @@ class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecki
     if (day > 31) {
       return null;
     }
+    if (this.shouldSkipYearLikeDate) {
+      if (!match[ENMonthNameMiddleEndianParser_DATE_TO_GROUP] && !match[ENMonthNameMiddleEndianParser_YEAR_GROUP] && match[ENMonthNameMiddleEndianParser_DATE_GROUP].match(/^2[0-5]$/)) {
+        return null;
+      }
+    }
     const components = context.createParsingComponents({
       day: day,
       month: month
-    });
+    }).addTag("parser/ENMonthNameMiddleEndianParser");
     if (match[ENMonthNameMiddleEndianParser_YEAR_GROUP]) {
       const year = parseYear(match[ENMonthNameMiddleEndianParser_YEAR_GROUP]);
       components.assign("year", year);
@@ -1834,7 +1921,7 @@ class ENMonthNameMiddleEndianParser extends AbstractParserWithWordBoundaryChecki
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENMonthNameParser.js
 
 
 
@@ -1855,6 +1942,7 @@ class ENMonthNameParser extends AbstractParserWithWordBoundaryChecking {
     }
     const result = context.createParsingResult(match.index + (match[PREFIX_GROUP] || "").length, match.index + match[0].length);
     result.start.imply("day", 1);
+    result.start.addTag("parser/ENMonthNameParser");
     const month = MONTH_DICTIONARY[monthName];
     result.start.assign("month", month);
     if (match[ENMonthNameParser_YEAR_GROUP]) {
@@ -1867,26 +1955,38 @@ class ENMonthNameParser extends AbstractParserWithWordBoundaryChecking {
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualYearMonthDayParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENYearMonthDayParser.js
 
 
 
-const ENCasualYearMonthDayParser_PATTERN = new RegExp(`([0-9]{4})[\\.\\/\\s]` + `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]` + `([0-9]{1,2})` + "(?=\\W|$)", "i");
+const ENYearMonthDayParser_PATTERN = new RegExp(`([0-9]{4})[-\\.\\/\\s]` + `(?:(${matchAnyPattern(MONTH_DICTIONARY)})|([0-9]{1,2}))[-\\.\\/\\s]` + `([0-9]{1,2})` + "(?=\\W|$)", "i");
 const YEAR_NUMBER_GROUP = 1;
-const ENCasualYearMonthDayParser_MONTH_NAME_GROUP = 2;
+const ENYearMonthDayParser_MONTH_NAME_GROUP = 2;
 const MONTH_NUMBER_GROUP = 3;
 const DATE_NUMBER_GROUP = 4;
-class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundaryChecking {
+class ENYearMonthDayParser extends AbstractParserWithWordBoundaryChecking {
+  constructor(strictMonthDateOrder) {
+    super();
+    this.strictMonthDateOrder = strictMonthDateOrder;
+  }
   innerPattern() {
-    return ENCasualYearMonthDayParser_PATTERN;
+    return ENYearMonthDayParser_PATTERN;
   }
   innerExtract(context, match) {
-    const month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : MONTH_DICTIONARY[match[ENCasualYearMonthDayParser_MONTH_NAME_GROUP].toLowerCase()];
+    const year = parseInt(match[YEAR_NUMBER_GROUP]);
+    let day = parseInt(match[DATE_NUMBER_GROUP]);
+    let month = match[MONTH_NUMBER_GROUP] ? parseInt(match[MONTH_NUMBER_GROUP]) : MONTH_DICTIONARY[match[ENYearMonthDayParser_MONTH_NAME_GROUP].toLowerCase()];
     if (month < 1 || month > 12) {
+      if (this.strictMonthDateOrder) {
+        return null;
+      }
+      if (day >= 1 && day <= 12) {
+        [month, day] = [day, month];
+      }
+    }
+    if (day < 1 || day > 31) {
       return null;
     }
-    const year = parseInt(match[YEAR_NUMBER_GROUP]);
-    const day = parseInt(match[DATE_NUMBER_GROUP]);
     return {
       day: day,
       month: month,
@@ -1894,7 +1994,7 @@ class ENCasualYearMonthDayParser extends AbstractParserWithWordBoundaryChecking
     };
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENSlashMonthFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENSlashMonthFormatParser.js
 
 const ENSlashMonthFormatParser_PATTERN = new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})" + "", "i");
 const MONTH_GROUP = 1;
@@ -1909,7 +2009,7 @@ class ENSlashMonthFormatParser extends AbstractParserWithWordBoundaryChecking {
     return context.createParsingComponents().imply("day", 1).assign("month", month).assign("year", year);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/AbstractTimeExpressionParser.js
+;// ./node_modules/chrono-node/dist/esm/common/parsers/AbstractTimeExpressionParser.js
 
 function primaryTimePattern(leftBoundary, primaryPrefix, primarySuffix, flags) {
   return new RegExp(`${leftBoundary}` + `${primaryPrefix}` + `(\\d{1,4})` + `(?:` + `(?:\\.|:|:)` + `(\\d{1,2})` + `(?:` + `(?::|:)` + `(\\d{2})` + `(?:\\.(\\d{1,6}))?` + `)?` + `)?` + `(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?` + `${primarySuffix}`, flags);
@@ -1939,10 +2039,10 @@ class AbstractTimeExpressionParser {
     return `(^|\\s|T|\\b)`;
   }
   primarySuffix() {
-    return `(?=\\W|$)`;
+    return `(?!/)(?=\\W|$)`;
   }
   followingSuffix() {
-    return `(?=\\W|$)`;
+    return `(?!/)(?=\\W|$)`;
   }
   pattern(context) {
     return this.getPrimaryTimePatternThroughCache();
@@ -1950,6 +2050,10 @@ class AbstractTimeExpressionParser {
   extract(context, match) {
     const startComponents = this.extractPrimaryTimeComponents(context, match);
     if (!startComponents) {
+      if (match[0].match(/^\d{4}/)) {
+        match.index += 4;
+        return null;
+      }
       match.index += match[0].length;
       return null;
     }
@@ -1960,8 +2064,13 @@ class AbstractTimeExpressionParser {
     const remainingText = context.text.substring(match.index);
     const followingPattern = this.getFollowingTimePatternThroughCache();
     const followingMatch = followingPattern.exec(remainingText);
-    if (text.match(/^\d{3,4}/) && followingMatch && followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)) {
-      return null;
+    if (text.match(/^\d{3,4}/) && followingMatch) {
+      if (followingMatch[0].match(/^\s*([+-])\s*\d{2,4}$/)) {
+        return null;
+      }
+      if (followingMatch[0].match(/^\s*([+-])\s*\d{2}\W\d{2}/)) {
+        return null;
+      }
     }
     if (!followingMatch || followingMatch[0].match(/^\s*([+-])\s*\d{3,4}$/)) {
       return this.checkAndReturnWithoutFollowingPattern(result);
@@ -1997,19 +2106,19 @@ class AbstractTimeExpressionParser {
       return null;
     }
     if (hour > 12) {
-      meridiem = esm_Meridiem.PM;
+      meridiem = types_Meridiem.PM;
     }
     if (match[AM_PM_HOUR_GROUP] != null) {
       if (hour > 12) return null;
       const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();
       if (ampm == "a") {
-        meridiem = esm_Meridiem.AM;
+        meridiem = types_Meridiem.AM;
         if (hour == 12) {
           hour = 0;
         }
       }
       if (ampm == "p") {
-        meridiem = esm_Meridiem.PM;
+        meridiem = types_Meridiem.PM;
         if (hour != 12) {
           hour += 12;
         }
@@ -2021,9 +2130,9 @@ class AbstractTimeExpressionParser {
       components.assign("meridiem", meridiem);
     } else {
       if (hour < 12) {
-        components.imply("meridiem", esm_Meridiem.AM);
+        components.imply("meridiem", types_Meridiem.AM);
       } else {
-        components.imply("meridiem", esm_Meridiem.PM);
+        components.imply("meridiem", types_Meridiem.PM);
       }
     }
     if (match[MILLI_SECOND_GROUP] != null) {
@@ -2063,7 +2172,7 @@ class AbstractTimeExpressionParser {
       return null;
     }
     if (hour >= 12) {
-      meridiem = esm_Meridiem.PM;
+      meridiem = types_Meridiem.PM;
     }
     if (match[AM_PM_HOUR_GROUP] != null) {
       if (hour > 12) {
@@ -2071,7 +2180,7 @@ class AbstractTimeExpressionParser {
       }
       const ampm = match[AM_PM_HOUR_GROUP][0].toLowerCase();
       if (ampm == "a") {
-        meridiem = esm_Meridiem.AM;
+        meridiem = types_Meridiem.AM;
         if (hour == 12) {
           hour = 0;
           if (!components.isCertain("day")) {
@@ -2080,17 +2189,17 @@ class AbstractTimeExpressionParser {
         }
       }
       if (ampm == "p") {
-        meridiem = esm_Meridiem.PM;
+        meridiem = types_Meridiem.PM;
         if (hour != 12) hour += 12;
       }
       if (!result.start.isCertain("meridiem")) {
-        if (meridiem == esm_Meridiem.AM) {
-          result.start.imply("meridiem", esm_Meridiem.AM);
+        if (meridiem == types_Meridiem.AM) {
+          result.start.imply("meridiem", types_Meridiem.AM);
           if (result.start.get("hour") == 12) {
             result.start.assign("hour", 0);
           }
         } else {
-          result.start.imply("meridiem", esm_Meridiem.PM);
+          result.start.imply("meridiem", types_Meridiem.PM);
           if (result.start.get("hour") != 12) {
             result.start.assign("hour", result.start.get("hour") + 12);
           }
@@ -2105,15 +2214,15 @@ class AbstractTimeExpressionParser {
       const startAtPM = result.start.isCertain("meridiem") && result.start.get("hour") > 12;
       if (startAtPM) {
         if (result.start.get("hour") - 12 > hour) {
-          components.imply("meridiem", esm_Meridiem.AM);
+          components.imply("meridiem", types_Meridiem.AM);
         } else if (hour <= 12) {
           components.assign("hour", hour + 12);
-          components.assign("meridiem", esm_Meridiem.PM);
+          components.assign("meridiem", types_Meridiem.PM);
         }
       } else if (hour > 12) {
-        components.imply("meridiem", esm_Meridiem.PM);
+        components.imply("meridiem", types_Meridiem.PM);
       } else if (hour <= 12) {
-        components.imply("meridiem", esm_Meridiem.AM);
+        components.imply("meridiem", types_Meridiem.AM);
       }
     }
     if (components.date().getTime() < result.start.date().getTime()) {
@@ -2192,7 +2301,7 @@ class AbstractTimeExpressionParser {
     return this.cachedFollowingTimePatten;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeExpressionParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeExpressionParser.js
 
 
 class ENTimeExpressionParser extends AbstractTimeExpressionParser {
@@ -2210,35 +2319,36 @@ class ENTimeExpressionParser extends AbstractTimeExpressionParser {
   }
   extractPrimaryTimeComponents(context, match) {
     const components = super.extractPrimaryTimeComponents(context, match);
-    if (components) {
-      if (match[0].endsWith("night")) {
-        const hour = components.get("hour");
-        if (hour >= 6 && hour < 12) {
-          components.assign("hour", components.get("hour") + 12);
-          components.assign("meridiem", esm_Meridiem.PM);
-        } else if (hour < 6) {
-          components.assign("meridiem", esm_Meridiem.AM);
-        }
-      }
-      if (match[0].endsWith("afternoon")) {
-        components.assign("meridiem", esm_Meridiem.PM);
-        const hour = components.get("hour");
-        if (hour >= 0 && hour <= 6) {
-          components.assign("hour", components.get("hour") + 12);
-        }
-      }
-      if (match[0].endsWith("morning")) {
-        components.assign("meridiem", esm_Meridiem.AM);
-        const hour = components.get("hour");
-        if (hour < 12) {
-          components.assign("hour", components.get("hour"));
-        }
+    if (!components) {
+      return components;
+    }
+    if (match[0].endsWith("night")) {
+      const hour = components.get("hour");
+      if (hour >= 6 && hour < 12) {
+        components.assign("hour", components.get("hour") + 12);
+        components.assign("meridiem", types_Meridiem.PM);
+      } else if (hour < 6) {
+        components.assign("meridiem", types_Meridiem.AM);
       }
     }
-    return components;
+    if (match[0].endsWith("afternoon")) {
+      components.assign("meridiem", types_Meridiem.PM);
+      const hour = components.get("hour");
+      if (hour >= 0 && hour <= 6) {
+        components.assign("hour", components.get("hour") + 12);
+      }
+    }
+    if (match[0].endsWith("morning")) {
+      components.assign("meridiem", types_Meridiem.AM);
+      const hour = components.get("hour");
+      if (hour < 12) {
+        components.assign("hour", components.get("hour"));
+      }
+    }
+    return components.addTag("parser/ENTimeExpressionParser");
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/utils/timeunits.js
+;// ./node_modules/chrono-node/dist/esm/utils/timeunits.js
 function reverseTimeUnits(timeUnits) {
   const reversed = {};
   for (const key in timeUnits) {
@@ -2264,7 +2374,7 @@ function addImpliedTimeUnits(components, timeUnits) {
   }
   return output;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitAgoFormatParser.js
 
 
 
@@ -2281,16 +2391,19 @@ class ENTimeUnitAgoFormatParser extends AbstractParserWithWordBoundaryChecking {
   }
   innerExtract(context, match) {
     const timeUnits = parseTimeUnits(match[1]);
+    if (!timeUnits) {
+      return null;
+    }
     const outputTimeUnits = reverseTimeUnits(timeUnits);
     return results_ParsingComponents.createRelativeFromReference(context.reference, outputTimeUnits);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitLaterFormatParser.js
 
 
 
 const ENTimeUnitLaterFormatParser_PATTERN = new RegExp(`(${TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)` + "(?=(?:\\W|$))", "i");
-const ENTimeUnitLaterFormatParser_STRICT_PATTERN = new RegExp("" + "(" + TIME_UNITS_NO_ABBR_PATTERN + ")" + "(later|from now)" + "(?=(?:\\W|$))", "i");
+const ENTimeUnitLaterFormatParser_STRICT_PATTERN = new RegExp(`(${TIME_UNITS_NO_ABBR_PATTERN})\\s{0,5}(later|after|from now)(?=\\W|$)`, "i");
 const GROUP_NUM_TIMEUNITS = 1;
 class ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundaryChecking {
   constructor(strictMode) {
@@ -2301,11 +2414,14 @@ class ENTimeUnitLaterFormatParser extends AbstractParserWithWordBoundaryChecking
     return this.strictMode ? ENTimeUnitLaterFormatParser_STRICT_PATTERN : ENTimeUnitLaterFormatParser_PATTERN;
   }
   innerExtract(context, match) {
-    const fragments = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);
-    return results_ParsingComponents.createRelativeFromReference(context.reference, fragments);
+    const timeUnits = parseTimeUnits(match[GROUP_NUM_TIMEUNITS]);
+    if (!timeUnits) {
+      return null;
+    }
+    return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/abstractRefiners.js
+;// ./node_modules/chrono-node/dist/esm/common/abstractRefiners.js
 class Filter {
   refine(context, results) {
     return results.filter(r => this.isValid(context, r));
@@ -2341,7 +2457,7 @@ class MergingRefiner {
     return mergedResults;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateRangeRefiner.js
 
 class AbstractMergeDateRangeRefiner extends MergingRefiner {
   shouldMergeResults(textBetween, currentResult, nextResult) {
@@ -2395,14 +2511,14 @@ class AbstractMergeDateRangeRefiner extends MergingRefiner {
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateRangeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateRangeRefiner.js
 
 class ENMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
   patternBetween() {
     return /^\s*(to|-|–|until|through|till)\s*$/i;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/calculation/mergingCalculation.js
+;// ./node_modules/chrono-node/dist/esm/calculation/mergingCalculation.js
 
 
 function mergeDateTimeResult(dateResult, timeResult) {
@@ -2456,16 +2572,18 @@ function mergeDateTimeComponent(dateComponent, timeComponent) {
   } else if (timeComponent.get("meridiem") != null && dateTimeComponent.get("meridiem") == null) {
     dateTimeComponent.imply("meridiem", timeComponent.get("meridiem"));
   }
-  if (dateTimeComponent.get("meridiem") == esm_Meridiem.PM && dateTimeComponent.get("hour") < 12) {
+  if (dateTimeComponent.get("meridiem") == types_Meridiem.PM && dateTimeComponent.get("hour") < 12) {
     if (timeComponent.isCertain("hour")) {
       dateTimeComponent.assign("hour", dateTimeComponent.get("hour") + 12);
     } else {
       dateTimeComponent.imply("hour", dateTimeComponent.get("hour") + 12);
     }
   }
+  dateTimeComponent.addTags(dateComponent.tags());
+  dateTimeComponent.addTags(timeComponent.tags());
   return dateTimeComponent;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateTimeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/AbstractMergeDateTimeRefiner.js
 
 
 class AbstractMergeDateTimeRefiner extends MergingRefiner {
@@ -2479,14 +2597,14 @@ class AbstractMergeDateTimeRefiner extends MergingRefiner {
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeDateTimeRefiner.js
 
 class ENMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
   patternBetween() {
-    return new RegExp("^\\s*(T|at|after|before|on|of|,|-)?\\s*$");
+    return new RegExp("^\\s*(T|at|after|before|on|of|,|-|\\.|∙|:)?\\s*$");
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneAbbrRefiner.js
 
 const TIMEZONE_NAME_PATTERN = new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)", "i");
 class ExtractTimezoneAbbrRefiner {
@@ -2539,7 +2657,7 @@ class ExtractTimezoneAbbrRefiner {
     return results;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/ExtractTimezoneOffsetRefiner.js
 const TIMEZONE_OFFSET_PATTERN = new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?", "i");
 const TIMEZONE_OFFSET_SIGN_GROUP = 1;
 const TIMEZONE_OFFSET_HOUR_OFFSET_GROUP = 2;
@@ -2576,7 +2694,7 @@ class ExtractTimezoneOffsetRefiner {
     return results;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/OverlapRemovalRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/OverlapRemovalRefiner.js
 class OverlapRemovalRefiner {
   refine(context, results) {
     if (results.length < 2) {
@@ -2586,14 +2704,24 @@ class OverlapRemovalRefiner {
     let prevResult = results[0];
     for (let i = 1; i < results.length; i++) {
       const result = results[i];
-      if (result.index < prevResult.index + prevResult.text.length) {
-        if (result.text.length > prevResult.text.length) {
-          prevResult = result;
-        }
-      } else {
+      if (result.index >= prevResult.index + prevResult.text.length) {
         filteredResults.push(prevResult);
         prevResult = result;
+        continue;
       }
+      let kept = null;
+      let removed = null;
+      if (result.text.length > prevResult.text.length) {
+        kept = result;
+        removed = prevResult;
+      } else {
+        kept = prevResult;
+        removed = result;
+      }
+      context.debug(() => {
+        console.log(`${this.constructor.name} remove ${removed} by ${kept}`);
+      });
+      prevResult = kept;
     }
     if (prevResult != null) {
       filteredResults.push(prevResult);
@@ -2601,7 +2729,7 @@ class OverlapRemovalRefiner {
     return filteredResults;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/ForwardDateRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/ForwardDateRefiner.js
 
 
 class ForwardDateRefiner {
@@ -2609,7 +2737,7 @@ class ForwardDateRefiner {
     if (!context.option.forwardDate) {
       return results;
     }
-    results.forEach(function (result) {
+    results.forEach(result => {
       let refMoment = dayjs_min(context.refDate);
       if (result.start.isOnlyTime() && refMoment.isAfter(result.start.dayjs())) {
         refMoment = refMoment.add(1, "day");
@@ -2621,6 +2749,9 @@ class ForwardDateRefiner {
             implySimilarDate(result.end, refMoment);
           }
         }
+        context.debug(() => {
+          console.log(`${this.constructor.name} adjusted ${result} time result (${result.start})`);
+        });
       }
       if (result.start.isOnlyWeekdayComponent() && refMoment.isAfter(result.start.dayjs())) {
         if (refMoment.day() >= result.start.get("weekday")) {
@@ -2632,7 +2763,7 @@ class ForwardDateRefiner {
         result.start.imply("month", refMoment.month() + 1);
         result.start.imply("year", refMoment.year());
         context.debug(() => {
-          console.log(`Forward weekly adjusted for ${result} (${result.start})`);
+          console.log(`${this.constructor.name} adjusted ${result} weekday (${result.start})`);
         });
         if (result.end && result.end.isOnlyWeekdayComponent()) {
           if (refMoment.day() > result.end.get("weekday")) {
@@ -2644,7 +2775,7 @@ class ForwardDateRefiner {
           result.end.imply("month", refMoment.month() + 1);
           result.end.imply("year", refMoment.year());
           context.debug(() => {
-            console.log(`Forward weekly adjusted for ${result} (${result.end})`);
+            console.log(`${this.constructor.name} adjusted ${result} weekday (${result.end})`);
           });
         }
       }
@@ -2652,12 +2783,12 @@ class ForwardDateRefiner {
         for (let i = 0; i < 3 && refMoment.isAfter(result.start.dayjs()); i++) {
           result.start.imply("year", result.start.get("year") + 1);
           context.debug(() => {
-            console.log(`Forward yearly adjusted for ${result} (${result.start})`);
+            console.log(`${this.constructor.name} adjusted ${result} year (${result.start})`);
           });
           if (result.end && !result.end.isCertain("year")) {
             result.end.imply("year", result.end.get("year") + 1);
             context.debug(() => {
-              console.log(`Forward yearly adjusted for ${result} (${result.end})`);
+              console.log(`${this.constructor.name} adjusted ${result} month (${result.start})`);
             });
           }
         }
@@ -2666,7 +2797,7 @@ class ForwardDateRefiner {
     return results;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/UnlikelyFormatFilter.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/UnlikelyFormatFilter.js
 
 class UnlikelyFormatFilter extends Filter {
   constructor(strictMode) {
@@ -2713,9 +2844,9 @@ class UnlikelyFormatFilter extends Filter {
     return true;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/ISOFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/common/parsers/ISOFormatParser.js
 
-const ISOFormatParser_PATTERN = new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})" + "(?:T" + "([0-9]{1,2}):([0-9]{1,2})" + "(?:" + ":([0-9]{1,2})(?:\\.(\\d{1,4}))?" + ")?" + "(?:" + "Z|([+-]\\d{2}):?(\\d{2})?" + ")?" + ")?" + "(?=\\W|$)", "i");
+const ISOFormatParser_PATTERN = new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})" + "(?:T" + "([0-9]{1,2}):([0-9]{1,2})" + "(?:" + ":([0-9]{1,2})(?:\\.(\\d{1,4}))?" + ")?" + "(" + "Z|([+-]\\d{2}):?(\\d{2})?" + ")?" + ")?" + "(?=\\W|$)", "i");
 const ISOFormatParser_YEAR_NUMBER_GROUP = 1;
 const ISOFormatParser_MONTH_NUMBER_GROUP = 2;
 const ISOFormatParser_DATE_NUMBER_GROUP = 3;
@@ -2723,47 +2854,50 @@ const HOUR_NUMBER_GROUP = 4;
 const MINUTE_NUMBER_GROUP = 5;
 const SECOND_NUMBER_GROUP = 6;
 const MILLISECOND_NUMBER_GROUP = 7;
-const TZD_HOUR_OFFSET_GROUP = 8;
-const TZD_MINUTE_OFFSET_GROUP = 9;
+const TZD_GROUP = 8;
+const TZD_HOUR_OFFSET_GROUP = 9;
+const TZD_MINUTE_OFFSET_GROUP = 10;
 class ISOFormatParser extends AbstractParserWithWordBoundaryChecking {
   innerPattern() {
     return ISOFormatParser_PATTERN;
   }
   innerExtract(context, match) {
-    const components = {};
-    components["year"] = parseInt(match[ISOFormatParser_YEAR_NUMBER_GROUP]);
-    components["month"] = parseInt(match[ISOFormatParser_MONTH_NUMBER_GROUP]);
-    components["day"] = parseInt(match[ISOFormatParser_DATE_NUMBER_GROUP]);
+    const components = context.createParsingComponents({
+      "year": parseInt(match[ISOFormatParser_YEAR_NUMBER_GROUP]),
+      "month": parseInt(match[ISOFormatParser_MONTH_NUMBER_GROUP]),
+      "day": parseInt(match[ISOFormatParser_DATE_NUMBER_GROUP])
+    });
     if (match[HOUR_NUMBER_GROUP] != null) {
-      components["hour"] = parseInt(match[HOUR_NUMBER_GROUP]);
-      components["minute"] = parseInt(match[MINUTE_NUMBER_GROUP]);
+      components.assign("hour", parseInt(match[HOUR_NUMBER_GROUP]));
+      components.assign("minute", parseInt(match[MINUTE_NUMBER_GROUP]));
       if (match[SECOND_NUMBER_GROUP] != null) {
-        components["second"] = parseInt(match[SECOND_NUMBER_GROUP]);
+        components.assign("second", parseInt(match[SECOND_NUMBER_GROUP]));
       }
       if (match[MILLISECOND_NUMBER_GROUP] != null) {
-        components["millisecond"] = parseInt(match[MILLISECOND_NUMBER_GROUP]);
+        components.assign("millisecond", parseInt(match[MILLISECOND_NUMBER_GROUP]));
       }
-      if (match[TZD_HOUR_OFFSET_GROUP] == null) {
-        components["timezoneOffset"] = 0;
-      } else {
-        const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);
-        let minuteOffset = 0;
-        if (match[TZD_MINUTE_OFFSET_GROUP] != null) {
-          minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);
+      if (match[TZD_GROUP] != null) {
+        let offset = 0;
+        if (match[TZD_HOUR_OFFSET_GROUP]) {
+          const hourOffset = parseInt(match[TZD_HOUR_OFFSET_GROUP]);
+          let minuteOffset = 0;
+          if (match[TZD_MINUTE_OFFSET_GROUP] != null) {
+            minuteOffset = parseInt(match[TZD_MINUTE_OFFSET_GROUP]);
+          }
+          offset = hourOffset * 60;
+          if (offset < 0) {
+            offset -= minuteOffset;
+          } else {
+            offset += minuteOffset;
+          }
         }
-        let offset = hourOffset * 60;
-        if (offset < 0) {
-          offset -= minuteOffset;
-        } else {
-          offset += minuteOffset;
-        }
-        components["timezoneOffset"] = offset;
+        components.assign("timezoneOffset", offset);
       }
     }
-    return components;
+    return components.addTag("parser/ISOFormatParser");
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js
+;// ./node_modules/chrono-node/dist/esm/common/refiners/MergeWeekdayComponentRefiner.js
 
 class MergeWeekdayComponentRefiner extends MergingRefiner {
   mergeResults(textBetween, currentResult, nextResult) {
@@ -2781,7 +2915,7 @@ class MergeWeekdayComponentRefiner extends MergingRefiner {
     return weekdayThenNormalDate && textBetween.match(/^,?\s*$/) != null;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/configurations.js
+;// ./node_modules/chrono-node/dist/esm/configurations.js
 
 
 
@@ -2800,7 +2934,7 @@ function includeCommonConfiguration(configuration, strictMode = false) {
   configuration.refiners.push(new UnlikelyFormatFilter(strictMode));
   return configuration;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/casualReferences.js
+;// ./node_modules/chrono-node/dist/esm/common/casualReferences.js
 
 
 
@@ -2813,6 +2947,7 @@ function now(reference) {
   if (reference.timezoneOffset !== null) {
     component.assign("timezoneOffset", targetDate.utcOffset());
   }
+  component.addTag("casualReference/now");
   return component;
 }
 function today(reference) {
@@ -2820,16 +2955,17 @@ function today(reference) {
   const component = new results_ParsingComponents(reference, {});
   dayjs_assignSimilarDate(component, targetDate);
   implySimilarTime(component, targetDate);
+  component.addTag("casualReference/today");
   return component;
 }
 function yesterday(reference) {
-  return theDayBefore(reference, 1);
+  return theDayBefore(reference, 1).addTag("casualReference/yesterday");
 }
 function theDayBefore(reference, numDay) {
   return theDayAfter(reference, -numDay);
 }
 function tomorrow(reference) {
-  return theDayAfter(reference, 1);
+  return theDayAfter(reference, 1).addTag("casualReference/tomorrow");
 }
 function theDayAfter(reference, nDays) {
   let targetDate = dayjs_min(reference.instant);
@@ -2842,9 +2978,10 @@ function theDayAfter(reference, nDays) {
 function tonight(reference, implyHour = 22) {
   const targetDate = dayjs_min(reference.instant);
   const component = new results_ParsingComponents(reference, {});
-  component.imply("hour", implyHour);
-  component.imply("meridiem", esm_Meridiem.PM);
   dayjs_assignSimilarDate(component, targetDate);
+  component.imply("hour", implyHour);
+  component.imply("meridiem", types_Meridiem.PM);
+  component.addTag("casualReference/tonight");
   return component;
 }
 function lastNight(reference, implyHour = 0) {
@@ -2859,8 +2996,9 @@ function lastNight(reference, implyHour = 0) {
 }
 function evening(reference, implyHour = 20) {
   const component = new results_ParsingComponents(reference, {});
-  component.imply("meridiem", esm_Meridiem.PM);
+  component.imply("meridiem", types_Meridiem.PM);
   component.imply("hour", implyHour);
+  component.addTag("casualReference/evening");
   return component;
 }
 function yesterdayEvening(reference, implyHour = 20) {
@@ -2870,6 +3008,8 @@ function yesterdayEvening(reference, implyHour = 20) {
   assignSimilarDate(component, targetDate);
   component.imply("hour", implyHour);
   component.imply("meridiem", Meridiem.PM);
+  component.addTag("casualReference/yesterday");
+  component.addTag("casualReference/evening");
   return component;
 }
 function midnight(reference) {
@@ -2882,36 +3022,40 @@ function midnight(reference) {
   component.imply("minute", 0);
   component.imply("second", 0);
   component.imply("millisecond", 0);
+  component.addTag("casualReference/midnight");
   return component;
 }
 function morning(reference, implyHour = 6) {
   const component = new results_ParsingComponents(reference, {});
-  component.imply("meridiem", esm_Meridiem.AM);
+  component.imply("meridiem", types_Meridiem.AM);
   component.imply("hour", implyHour);
   component.imply("minute", 0);
   component.imply("second", 0);
   component.imply("millisecond", 0);
+  component.addTag("casualReference/morning");
   return component;
 }
 function afternoon(reference, implyHour = 15) {
   const component = new results_ParsingComponents(reference, {});
-  component.imply("meridiem", esm_Meridiem.PM);
+  component.imply("meridiem", types_Meridiem.PM);
   component.imply("hour", implyHour);
   component.imply("minute", 0);
   component.imply("second", 0);
   component.imply("millisecond", 0);
+  component.addTag("casualReference/afternoon");
   return component;
 }
 function noon(reference) {
   const component = new results_ParsingComponents(reference, {});
-  component.imply("meridiem", esm_Meridiem.AM);
+  component.imply("meridiem", types_Meridiem.AM);
   component.imply("hour", 12);
   component.imply("minute", 0);
   component.imply("second", 0);
   component.imply("millisecond", 0);
+  component.addTag("casualReference/noon");
   return component;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualDateParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualDateParser.js
 
 
 
@@ -2924,20 +3068,25 @@ class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking {
   innerExtract(context, match) {
     let targetDate = dayjs_min(context.refDate);
     const lowerText = match[0].toLowerCase();
-    const component = context.createParsingComponents();
+    let component = context.createParsingComponents();
     switch (lowerText) {
       case "now":
-        return now(context.reference);
+        component = now(context.reference);
+        break;
       case "today":
-        return today(context.reference);
+        component = today(context.reference);
+        break;
       case "yesterday":
-        return yesterday(context.reference);
+        component = yesterday(context.reference);
+        break;
       case "tomorrow":
       case "tmr":
       case "tmrw":
-        return tomorrow(context.reference);
+        component = tomorrow(context.reference);
+        break;
       case "tonight":
-        return tonight(context.reference);
+        component = tonight(context.reference);
+        break;
       default:
         if (lowerText.match(/last\s*night/)) {
           if (targetDate.hour() > 6) {
@@ -2948,10 +3097,11 @@ class ENCasualDateParser extends AbstractParserWithWordBoundaryChecking {
         }
         break;
     }
+    component.addTag("parser/ENCasualDateParser");
     return component;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualTimeParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENCasualTimeParser.js
 
 
 const ENCasualTimeParser_PATTERN = /(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|midday|noon)(?=\W|$)/i;
@@ -2960,24 +3110,33 @@ class ENCasualTimeParser extends AbstractParserWithWordBoundaryChecking {
     return ENCasualTimeParser_PATTERN;
   }
   innerExtract(context, match) {
+    let component = null;
     switch (match[1].toLowerCase()) {
       case "afternoon":
-        return afternoon(context.reference);
+        component = afternoon(context.reference);
+        break;
       case "evening":
       case "night":
-        return evening(context.reference);
+        component = evening(context.reference);
+        break;
       case "midnight":
-        return midnight(context.reference);
+        component = midnight(context.reference);
+        break;
       case "morning":
-        return morning(context.reference);
+        component = morning(context.reference);
+        break;
       case "noon":
       case "midday":
-        return noon(context.reference);
+        component = noon(context.reference);
+        break;
     }
-    return null;
+    if (component) {
+      component.addTag("parser/ENCasualTimeParser");
+    }
+    return component;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/calculation/weekdays.js
+;// ./node_modules/chrono-node/dist/esm/common/calculation/weekdays.js
 
 
 
@@ -3036,7 +3195,7 @@ function getBackwardDaysToWeekday(refDate, weekday) {
   }
   return backwardCount;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENWeekdayParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENWeekdayParser.js
 
 
 
@@ -3068,7 +3227,7 @@ class ENWeekdayParser extends AbstractParserWithWordBoundaryChecking {
     return createParsingComponentsAtWeekday(context.reference, weekday, modifier);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENRelativeDateFormatParser.js
 
 
 
@@ -3117,12 +3276,246 @@ class ENRelativeDateFormatParser extends AbstractParserWithWordBoundaryChecking
     return components;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/chrono.js
+;// ./node_modules/chrono-node/dist/esm/common/parsers/SlashDateFormatParser.js
+
+const SlashDateFormatParser_PATTERN = new RegExp("([^\\d]|^)" + "([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})" + "(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?" + "(\\W|$)", "i");
+const OPENING_GROUP = 1;
+const ENDING_GROUP = 5;
+const FIRST_NUMBERS_GROUP = 2;
+const SECOND_NUMBERS_GROUP = 3;
+const SlashDateFormatParser_YEAR_GROUP = 4;
+class SlashDateFormatParser {
+  constructor(littleEndian) {
+    this.groupNumberMonth = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP;
+    this.groupNumberDay = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP;
+  }
+  pattern() {
+    return SlashDateFormatParser_PATTERN;
+  }
+  extract(context, match) {
+    const index = match.index + match[OPENING_GROUP].length;
+    const indexEnd = match.index + match[0].length - match[ENDING_GROUP].length;
+    if (index > 0) {
+      const textBefore = context.text.substring(0, index);
+      if (textBefore.match("\\d/?$")) {
+        return;
+      }
+    }
+    if (indexEnd < context.text.length) {
+      const textAfter = context.text.substring(indexEnd);
+      if (textAfter.match("^/?\\d")) {
+        return;
+      }
+    }
+    const text = context.text.substring(index, indexEnd);
+    if (text.match(/^\d\.\d$/) || text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)) {
+      return;
+    }
+    if (!match[SlashDateFormatParser_YEAR_GROUP] && text.indexOf("/") < 0) {
+      return;
+    }
+    const result = context.createParsingResult(index, text);
+    let month = parseInt(match[this.groupNumberMonth]);
+    let day = parseInt(match[this.groupNumberDay]);
+    if (month < 1 || month > 12) {
+      if (month > 12) {
+        if (day >= 1 && day <= 12 && month <= 31) {
+          [day, month] = [month, day];
+        } else {
+          return null;
+        }
+      }
+    }
+    if (day < 1 || day > 31) {
+      return null;
+    }
+    result.start.assign("day", day);
+    result.start.assign("month", month);
+    if (match[SlashDateFormatParser_YEAR_GROUP]) {
+      const rawYearNumber = parseInt(match[SlashDateFormatParser_YEAR_GROUP]);
+      const year = findMostLikelyADYear(rawYearNumber);
+      result.start.assign("year", year);
+    } else {
+      const year = findYearClosestToRef(context.refDate, day, month);
+      result.start.imply("year", year);
+    }
+    return result;
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js
+
+
+
+
+const ENTimeUnitCasualRelativeFormatParser_PATTERN = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
+const PATTERN_NO_ABBR = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i");
+class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
+  constructor(allowAbbreviations = true) {
+    super();
+    this.allowAbbreviations = allowAbbreviations;
+  }
+  innerPattern() {
+    return this.allowAbbreviations ? ENTimeUnitCasualRelativeFormatParser_PATTERN : PATTERN_NO_ABBR;
+  }
+  innerExtract(context, match) {
+    const prefix = match[1].toLowerCase();
+    let timeUnits = parseTimeUnits(match[2]);
+    if (!timeUnits) {
+      return null;
+    }
+    switch (prefix) {
+      case "last":
+      case "past":
+      case "-":
+        timeUnits = reverseTimeUnits(timeUnits);
+        break;
+    }
+    return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeAfterDateRefiner.js
+
+
+
+
+function IsPositiveFollowingReference(result) {
+  return result.text.match(/^[+-]/i) != null;
+}
+function IsNegativeFollowingReference(result) {
+  return result.text.match(/^-/i) != null;
+}
+class ENMergeRelativeAfterDateRefiner extends MergingRefiner {
+  shouldMergeResults(textBetween, currentResult, nextResult) {
+    if (!textBetween.match(/^\s*$/i)) {
+      return false;
+    }
+    return IsPositiveFollowingReference(nextResult) || IsNegativeFollowingReference(nextResult);
+  }
+  mergeResults(textBetween, currentResult, nextResult, context) {
+    let timeUnits = parseTimeUnits(nextResult.text);
+    if (IsNegativeFollowingReference(nextResult)) {
+      timeUnits = reverseTimeUnits(timeUnits);
+    }
+    const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(currentResult.start.date()), timeUnits);
+    return new ParsingResult(currentResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components);
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeFollowByDateRefiner.js
+
+
+
+
+function hasImpliedEarlierReferenceDate(result) {
+  return result.text.match(/\s+(before|from)$/i) != null;
+}
+function hasImpliedLaterReferenceDate(result) {
+  return result.text.match(/\s+(after|since)$/i) != null;
+}
+class ENMergeRelativeFollowByDateRefiner extends MergingRefiner {
+  patternBetween() {
+    return /^\s*$/i;
+  }
+  shouldMergeResults(textBetween, currentResult, nextResult) {
+    if (!textBetween.match(this.patternBetween())) {
+      return false;
+    }
+    if (!hasImpliedEarlierReferenceDate(currentResult) && !hasImpliedLaterReferenceDate(currentResult)) {
+      return false;
+    }
+    return !!nextResult.start.get("day") && !!nextResult.start.get("month") && !!nextResult.start.get("year");
+  }
+  mergeResults(textBetween, currentResult, nextResult) {
+    let timeUnits = parseTimeUnits(currentResult.text);
+    if (hasImpliedEarlierReferenceDate(currentResult)) {
+      timeUnits = reverseTimeUnits(timeUnits);
+    }
+    const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(nextResult.start.date()), timeUnits);
+    return new ParsingResult(nextResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components);
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENExtractYearSuffixRefiner.js
+
+const YEAR_SUFFIX_PATTERN = new RegExp(`^\\s*(${YEAR_PATTERN})`, "i");
+const ENExtractYearSuffixRefiner_YEAR_GROUP = 1;
+class ENExtractYearSuffixRefiner {
+  refine(context, results) {
+    results.forEach(function (result) {
+      if (!result.start.isDateWithUnknownYear()) {
+        return;
+      }
+      const suffix = context.text.substring(result.index + result.text.length);
+      const match = YEAR_SUFFIX_PATTERN.exec(suffix);
+      if (!match) {
+        return;
+      }
+      context.debug(() => {
+        console.log(`Extracting year: '${match[0]}' into : ${result}`);
+      });
+      const year = parseYear(match[ENExtractYearSuffixRefiner_YEAR_GROUP]);
+      if (result.end != null) {
+        result.end.assign("year", year);
+      }
+      result.start.assign("year", year);
+      result.text += match[0];
+    });
+    return results;
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/locales/en/configuration.js
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+class ENDefaultConfiguration {
+  createCasualConfiguration(littleEndian = false) {
+    const option = this.createConfiguration(false, littleEndian);
+    option.parsers.push(new ENCasualDateParser());
+    option.parsers.push(new ENCasualTimeParser());
+    option.parsers.push(new ENMonthNameParser());
+    option.parsers.push(new ENRelativeDateFormatParser());
+    option.parsers.push(new ENTimeUnitCasualRelativeFormatParser());
+    return option;
+  }
+  createConfiguration(strictMode = true, littleEndian = false) {
+    const options = includeCommonConfiguration({
+      parsers: [new SlashDateFormatParser(littleEndian), new ENTimeUnitWithinFormatParser(strictMode), new ENMonthNameLittleEndianParser(), new ENMonthNameMiddleEndianParser(littleEndian), new ENWeekdayParser(), new ENSlashMonthFormatParser(), new ENTimeExpressionParser(strictMode), new ENTimeUnitAgoFormatParser(strictMode), new ENTimeUnitLaterFormatParser(strictMode)],
+      refiners: [new ENMergeDateTimeRefiner()]
+    }, strictMode);
+    options.parsers.unshift(new ENYearMonthDayParser(strictMode));
+    options.refiners.unshift(new ENMergeRelativeFollowByDateRefiner());
+    options.refiners.unshift(new ENMergeRelativeAfterDateRefiner());
+    options.refiners.unshift(new OverlapRemovalRefiner());
+    options.refiners.push(new ENMergeDateTimeRefiner());
+    options.refiners.push(new ENExtractYearSuffixRefiner());
+    options.refiners.push(new ENMergeDateRangeRefiner());
+    return options;
+  }
+}
+;// ./node_modules/chrono-node/dist/esm/chrono.js
 
 
 class Chrono {
   constructor(configuration) {
-    configuration = configuration || createCasualConfiguration();
+    this.defaultConfig = new ENDefaultConfiguration();
+    configuration = configuration || this.defaultConfig.createCasualConfiguration();
     this.parsers = [...configuration.parsers];
     this.refiners = [...configuration.refiners];
   }
@@ -3175,9 +3568,11 @@ class Chrono {
       } else {
         parsedResult = context.createParsingResult(match.index, match[0], result);
       }
-      context.debug(() => console.log(`${parser.constructor.name} extracted result ${parsedResult}`));
+      const parsedIndex = parsedResult.index;
+      const parsedText = parsedResult.text;
+      context.debug(() => console.log(`${parser.constructor.name} extracted (at index=${parsedIndex}) '${parsedText}'`));
       results.push(parsedResult);
-      remainingText = originalText.substring(index + parsedResult.text.length);
+      remainingText = originalText.substring(parsedIndex + parsedText.length);
       match = pattern.exec(remainingText);
     }
     return results;
@@ -3213,205 +3608,31 @@ class ParsingContext {
     }
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/common/parsers/SlashDateFormatParser.js
-
-const SlashDateFormatParser_PATTERN = new RegExp("([^\\d]|^)" + "([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})" + "(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?" + "(\\W|$)", "i");
-const OPENING_GROUP = 1;
-const ENDING_GROUP = 5;
-const FIRST_NUMBERS_GROUP = 2;
-const SECOND_NUMBERS_GROUP = 3;
-const SlashDateFormatParser_YEAR_GROUP = 4;
-class SlashDateFormatParser {
-  constructor(littleEndian) {
-    this.groupNumberMonth = littleEndian ? SECOND_NUMBERS_GROUP : FIRST_NUMBERS_GROUP;
-    this.groupNumberDay = littleEndian ? FIRST_NUMBERS_GROUP : SECOND_NUMBERS_GROUP;
-  }
-  pattern() {
-    return SlashDateFormatParser_PATTERN;
-  }
-  extract(context, match) {
-    if (match[OPENING_GROUP].length == 0 && match.index > 0 && match.index < context.text.length) {
-      const previousChar = context.text[match.index - 1];
-      if (previousChar >= "0" && previousChar <= "9") {
-        return;
-      }
-    }
-    const index = match.index + match[OPENING_GROUP].length;
-    const text = match[0].substr(match[OPENING_GROUP].length, match[0].length - match[OPENING_GROUP].length - match[ENDING_GROUP].length);
-    if (text.match(/^\d\.\d$/) || text.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)) {
-      return;
-    }
-    if (!match[SlashDateFormatParser_YEAR_GROUP] && match[0].indexOf("/") < 0) {
-      return;
-    }
-    const result = context.createParsingResult(index, text);
-    let month = parseInt(match[this.groupNumberMonth]);
-    let day = parseInt(match[this.groupNumberDay]);
-    if (month < 1 || month > 12) {
-      if (month > 12) {
-        if (day >= 1 && day <= 12 && month <= 31) {
-          [day, month] = [month, day];
-        } else {
-          return null;
-        }
-      }
-    }
-    if (day < 1 || day > 31) {
-      return null;
-    }
-    result.start.assign("day", day);
-    result.start.assign("month", month);
-    if (match[SlashDateFormatParser_YEAR_GROUP]) {
-      const rawYearNumber = parseInt(match[SlashDateFormatParser_YEAR_GROUP]);
-      const year = findMostLikelyADYear(rawYearNumber);
-      result.start.assign("year", year);
-    } else {
-      const year = findYearClosestToRef(context.refDate, day, month);
-      result.start.imply("year", year);
-    }
-    return result;
-  }
-}
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/parsers/ENTimeUnitCasualRelativeFormatParser.js
-
-
-
-
-const ENTimeUnitCasualRelativeFormatParser_PATTERN = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_PATTERN})(?=\\W|$)`, "i");
-const PATTERN_NO_ABBR = new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${TIME_UNITS_NO_ABBR_PATTERN})(?=\\W|$)`, "i");
-class ENTimeUnitCasualRelativeFormatParser extends AbstractParserWithWordBoundaryChecking {
-  constructor(allowAbbreviations = true) {
-    super();
-    this.allowAbbreviations = allowAbbreviations;
-  }
-  innerPattern() {
-    return this.allowAbbreviations ? ENTimeUnitCasualRelativeFormatParser_PATTERN : PATTERN_NO_ABBR;
-  }
-  innerExtract(context, match) {
-    const prefix = match[1].toLowerCase();
-    let timeUnits = parseTimeUnits(match[2]);
-    switch (prefix) {
-      case "last":
-      case "past":
-      case "-":
-        timeUnits = reverseTimeUnits(timeUnits);
-        break;
-    }
-    return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
-  }
-}
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/refiners/ENMergeRelativeDateRefiner.js
-
-
-
-
-function hasImpliedEarlierReferenceDate(result) {
-  return result.text.match(/\s+(before|from)$/i) != null;
-}
-function hasImpliedLaterReferenceDate(result) {
-  return result.text.match(/\s+(after|since)$/i) != null;
-}
-class ENMergeRelativeDateRefiner extends MergingRefiner {
-  patternBetween() {
-    return /^\s*$/i;
-  }
-  shouldMergeResults(textBetween, currentResult, nextResult) {
-    if (!textBetween.match(this.patternBetween())) {
-      return false;
-    }
-    if (!hasImpliedEarlierReferenceDate(currentResult) && !hasImpliedLaterReferenceDate(currentResult)) {
-      return false;
-    }
-    return !!nextResult.start.get("day") && !!nextResult.start.get("month") && !!nextResult.start.get("year");
-  }
-  mergeResults(textBetween, currentResult, nextResult) {
-    let timeUnits = parseTimeUnits(currentResult.text);
-    if (hasImpliedEarlierReferenceDate(currentResult)) {
-      timeUnits = reverseTimeUnits(timeUnits);
-    }
-    const components = results_ParsingComponents.createRelativeFromReference(new ReferenceWithTimezone(nextResult.start.date()), timeUnits);
-    return new ParsingResult(nextResult.reference, currentResult.index, `${currentResult.text}${textBetween}${nextResult.text}`, components);
-  }
-}
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/en/index.js
+;// ./node_modules/chrono-node/dist/esm/locales/en/index.js
 
 
 
 
 
 
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-const casual = new Chrono(createCasualConfiguration(false));
-const strict = new Chrono(createConfiguration(true, false));
-const GB = new Chrono(createConfiguration(false, true));
+const configuration = new ENDefaultConfiguration();
+const casual = new Chrono(configuration.createCasualConfiguration(false));
+const strict = new Chrono(configuration.createConfiguration(true, false));
+const GB = new Chrono(configuration.createCasualConfiguration(true));
 function parse(text, ref, option) {
   return casual.parse(text, ref, option);
 }
 function parseDate(text, ref, option) {
   return casual.parseDate(text, ref, option);
 }
-function createCasualConfiguration(littleEndian = false) {
-  const option = createConfiguration(false, littleEndian);
-  option.parsers.unshift(new ENCasualDateParser());
-  option.parsers.unshift(new ENCasualTimeParser());
-  option.parsers.unshift(new ENMonthNameParser());
-  option.parsers.unshift(new ENRelativeDateFormatParser());
-  option.parsers.unshift(new ENTimeUnitCasualRelativeFormatParser());
-  return option;
-}
-function createConfiguration(strictMode = true, littleEndian = false) {
-  return includeCommonConfiguration({
-    parsers: [new SlashDateFormatParser(littleEndian), new ENTimeUnitWithinFormatParser(strictMode), new ENMonthNameLittleEndianParser(), new ENMonthNameMiddleEndianParser(), new ENWeekdayParser(), new ENCasualYearMonthDayParser(), new ENSlashMonthFormatParser(), new ENTimeExpressionParser(strictMode), new ENTimeUnitAgoFormatParser(strictMode), new ENTimeUnitLaterFormatParser(strictMode)],
-    refiners: [new ENMergeRelativeDateRefiner(), new ENMergeDateTimeRefiner(), new ENMergeDateRangeRefiner()]
-  }, strictMode);
-}
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/index.js
+;// ./node_modules/chrono-node/dist/esm/index.js
+
+
+
+
 
 
 
-var esm_Meridiem;
-(function (Meridiem) {
-  Meridiem[Meridiem["AM"] = 0] = "AM";
-  Meridiem[Meridiem["PM"] = 1] = "PM";
-})(esm_Meridiem || (esm_Meridiem = {}));
-var Weekday;
-(function (Weekday) {
-  Weekday[Weekday["SUNDAY"] = 0] = "SUNDAY";
-  Weekday[Weekday["MONDAY"] = 1] = "MONDAY";
-  Weekday[Weekday["TUESDAY"] = 2] = "TUESDAY";
-  Weekday[Weekday["WEDNESDAY"] = 3] = "WEDNESDAY";
-  Weekday[Weekday["THURSDAY"] = 4] = "THURSDAY";
-  Weekday[Weekday["FRIDAY"] = 5] = "FRIDAY";
-  Weekday[Weekday["SATURDAY"] = 6] = "SATURDAY";
-})(Weekday || (Weekday = {}));
-var Month;
-(function (Month) {
-  Month[Month["JANUARY"] = 1] = "JANUARY";
-  Month[Month["FEBRUARY"] = 2] = "FEBRUARY";
-  Month[Month["MARCH"] = 3] = "MARCH";
-  Month[Month["APRIL"] = 4] = "APRIL";
-  Month[Month["MAY"] = 5] = "MAY";
-  Month[Month["JUNE"] = 6] = "JUNE";
-  Month[Month["JULY"] = 7] = "JULY";
-  Month[Month["AUGUST"] = 8] = "AUGUST";
-  Month[Month["SEPTEMBER"] = 9] = "SEPTEMBER";
-  Month[Month["OCTOBER"] = 10] = "OCTOBER";
-  Month[Month["NOVEMBER"] = 11] = "NOVEMBER";
-  Month[Month["DECEMBER"] = 12] = "DECEMBER";
-})(Month || (Month = {}));
 
 
 
@@ -3429,7 +3650,7 @@ function esm_parse(text, ref, option) {
 function esm_parseDate(text, ref, option) {
   return esm_casual.parseDate(text, ref, option);
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeExpressionParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeExpressionParser.js
 
 class DETimeExpressionParser extends AbstractTimeExpressionParser {
   primaryPrefix() {
@@ -3445,7 +3666,7 @@ class DETimeExpressionParser extends AbstractTimeExpressionParser {
     return super.extractPrimaryTimeComponents(context, match);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/constants.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/constants.js
 
 
 const constants_WEEKDAY_DICTIONARY = {
@@ -3611,7 +3832,7 @@ function constants_collectDateTimeFragment(fragments, match) {
   const unit = constants_TIME_UNIT_DICTIONARY[match[2].toLowerCase()];
   fragments[unit] = num;
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEWeekdayParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEWeekdayParser.js
 
 
 
@@ -3643,7 +3864,7 @@ class DEWeekdayParser extends AbstractParserWithWordBoundaryChecking {
     return createParsingComponentsAtWeekday(context.reference, offset, modifier);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DESpecificTimeExpressionParser.js
 
 const FIRST_REG_PATTERN = new RegExp("(^|\\s|T)" + "(?:(?:um|von)\\s*)?" + "(\\d{1,2})(?:h|:)?" + "(?:(\\d{1,2})(?:m|:)?)?" + "(?:(\\d{1,2})(?:s)?)?" + "(?:\\s*Uhr)?" + "(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?" + "(?=\\W|$)", "i");
 const SECOND_REG_PATTERN = new RegExp("^\\s*(\\-|\\–|\\~|\\〜|bis(?:\\s+um)?|\\?)\\s*" + "(\\d{1,2})(?:h|:)?" + "(?:(\\d{1,2})(?:m|:)?)?" + "(?:(\\d{1,2})(?:s)?)?" + "(?:\\s*Uhr)?" + "(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?" + "(?=\\W|$)", "i");
@@ -3688,31 +3909,31 @@ class DESpecificTimeExpressionParser {
       return null;
     }
     if (hour >= 12) {
-      meridiem = esm_Meridiem.PM;
+      meridiem = types_Meridiem.PM;
     }
     if (match[DESpecificTimeExpressionParser_AM_PM_HOUR_GROUP] != null) {
       if (hour > 12) return null;
       const ampm = match[DESpecificTimeExpressionParser_AM_PM_HOUR_GROUP].toLowerCase();
       if (ampm.match(/morgen|vormittag/)) {
-        meridiem = esm_Meridiem.AM;
+        meridiem = types_Meridiem.AM;
         if (hour == 12) {
           hour = 0;
         }
       }
       if (ampm.match(/nachmittag|abend/)) {
-        meridiem = esm_Meridiem.PM;
+        meridiem = types_Meridiem.PM;
         if (hour != 12) {
           hour += 12;
         }
       }
       if (ampm.match(/nacht/)) {
         if (hour == 12) {
-          meridiem = esm_Meridiem.AM;
+          meridiem = types_Meridiem.AM;
           hour = 0;
         } else if (hour < 6) {
-          meridiem = esm_Meridiem.AM;
+          meridiem = types_Meridiem.AM;
         } else {
-          meridiem = esm_Meridiem.PM;
+          meridiem = types_Meridiem.PM;
           hour += 12;
         }
       }
@@ -3723,9 +3944,9 @@ class DESpecificTimeExpressionParser {
       extractingComponents.assign("meridiem", meridiem);
     } else {
       if (hour < 12) {
-        extractingComponents.imply("meridiem", esm_Meridiem.AM);
+        extractingComponents.imply("meridiem", types_Meridiem.AM);
       } else {
-        extractingComponents.imply("meridiem", esm_Meridiem.PM);
+        extractingComponents.imply("meridiem", types_Meridiem.PM);
       }
     }
     if (match[DESpecificTimeExpressionParser_SECOND_GROUP] != null) {
@@ -3736,21 +3957,21 @@ class DESpecificTimeExpressionParser {
     return extractingComponents;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateRangeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateRangeRefiner.js
 
 class DEMergeDateRangeRefiner extends AbstractMergeDateRangeRefiner {
   patternBetween() {
     return /^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateTimeRefiner.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/refiners/DEMergeDateTimeRefiner.js
 
 class DEMergeDateTimeRefiner extends AbstractMergeDateTimeRefiner {
   patternBetween() {
     return new RegExp("^\\s*(T|um|am|,|-)?\\s*$");
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualTimeParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualTimeParser.js
 
 
 
@@ -3773,38 +3994,38 @@ class DECasualTimeParser extends AbstractParserWithWordBoundaryChecking {
         component.imply("hour", 6);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.AM);
+        component.imply("meridiem", types_Meridiem.AM);
         break;
       case "vormittag":
         component.imply("hour", 9);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.AM);
+        component.imply("meridiem", types_Meridiem.AM);
         break;
       case "mittag":
       case "mittags":
         component.imply("hour", 12);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.AM);
+        component.imply("meridiem", types_Meridiem.AM);
         break;
       case "nachmittag":
         component.imply("hour", 15);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.PM);
+        component.imply("meridiem", types_Meridiem.PM);
         break;
       case "abend":
         component.imply("hour", 18);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.PM);
+        component.imply("meridiem", types_Meridiem.PM);
         break;
       case "nacht":
         component.imply("hour", 22);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.PM);
+        component.imply("meridiem", types_Meridiem.PM);
         break;
       case "mitternacht":
         if (component.get("hour") > 1) {
@@ -3815,13 +4036,13 @@ class DECasualTimeParser extends AbstractParserWithWordBoundaryChecking {
         component.imply("hour", 0);
         component.imply("minute", 0);
         component.imply("second", 0);
-        component.imply("meridiem", esm_Meridiem.AM);
+        component.imply("meridiem", types_Meridiem.AM);
         break;
     }
     return component;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualDateParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DECasualDateParser.js
 
 
 
@@ -3880,7 +4101,7 @@ class DECasualDateParser extends AbstractParserWithWordBoundaryChecking {
     return component;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DEMonthNameLittleEndianParser.js
 
 
 
@@ -3920,7 +4141,7 @@ class DEMonthNameLittleEndianParser extends AbstractParserWithWordBoundaryChecki
     return result;
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitRelativeFormatParser.js
 
 
 
@@ -3949,7 +4170,7 @@ class DETimeUnitAgoFormatParser extends AbstractParserWithWordBoundaryChecking {
     return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/parsers/DETimeUnitWithinFormatParser.js
 
 
 
@@ -3962,7 +4183,7 @@ class DETimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin
     return results_ParsingComponents.createRelativeFromReference(context.reference, timeUnits);
   }
 }
-;// CONCATENATED MODULE: ./node_modules/chrono-node/dist/esm/locales/de/index.js
+;// ./node_modules/chrono-node/dist/esm/locales/de/index.js
 
 
 
@@ -3977,51 +4198,32 @@ class DETimeUnitWithinFormatParser extends AbstractParserWithWordBoundaryCheckin
 
 
 
-const de_casual = new Chrono(de_createCasualConfiguration());
-const de_strict = new Chrono(de_createConfiguration(true));
+
+
+
+
+const de_casual = new Chrono(createCasualConfiguration());
+const de_strict = new Chrono(createConfiguration(true));
 function de_parse(text, ref, option) {
   return de_casual.parse(text, ref, option);
 }
 function de_parseDate(text, ref, option) {
   return de_casual.parseDate(text, ref, option);
 }
-function de_createCasualConfiguration(littleEndian = true) {
-  const option = de_createConfiguration(false, littleEndian);
+function createCasualConfiguration(littleEndian = true) {
+  const option = createConfiguration(false, littleEndian);
   option.parsers.unshift(new DECasualTimeParser());
   option.parsers.unshift(new DECasualDateParser());
   option.parsers.unshift(new DETimeUnitAgoFormatParser());
   return option;
 }
-function de_createConfiguration(strictMode = true, littleEndian = true) {
+function createConfiguration(strictMode = true, littleEndian = true) {
   return includeCommonConfiguration({
     parsers: [new ISOFormatParser(), new SlashDateFormatParser(littleEndian), new DETimeExpressionParser(), new DESpecificTimeExpressionParser(), new DEMonthNameLittleEndianParser(), new DEWeekdayParser(), new DETimeUnitWithinFormatParser()],
     refiners: [new DEMergeDateRangeRefiner(), new DEMergeDateTimeRefiner()]
   }, strictMode);
 }
-;// CONCATENATED MODULE: external "axios"
-const external_axios_namespaceObject = axios;
-var external_axios_default = /*#__PURE__*/__webpack_require__.n(external_axios_namespaceObject);
-;// CONCATENATED MODULE: external "axiosGmxhrAdapter"
-const external_axiosGmxhrAdapter_namespaceObject = axiosGmxhrAdapter;
-var external_axiosGmxhrAdapter_default = /*#__PURE__*/__webpack_require__.n(external_axiosGmxhrAdapter_namespaceObject);
-;// CONCATENATED MODULE: ./src/utils.ts
-/**
- * @typedef {Object} AxiosResponse
- * @property {Object} data
- * @property {Object} headers
- * @property {Object} config
- * @property {Object} request
- * @property {number} code
- * @property {string} statusText
- */
-/**
- * @typedef {Object} AxiosError
- * @property {AxiosResponse} response
- */
-
-
-(external_axios_default()).defaults.adapter = (external_axiosGmxhrAdapter_default());
-
+;// ./src/utils.ts
 function extractNumber(s) {
     var match = /(\+?[0-9]{4,})/.exec(s);
     if (!match) {
@@ -4049,22 +4251,169 @@ function fireChangeEvents(element) {
     console.debug('change event dispatched for element: ' + element.id);
 }
 
-;// CONCATENATED MODULE: ./src/call-history.ts
-var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
+;// ./node_modules/@trim21/gm-fetch/dist/index.mjs
+function parseRawHeaders(h) {
+    const s = h.trim();
+    if (!s) {
+        return new Headers();
+    }
+    const array = s.split("\r\n").map((value) => {
+        let s = value.split(":");
+        return [s[0].trim(), s[1].trim()];
     });
-};
+    return new Headers(array);
+}
+function parseGMResponse(req, res) {
+    return new ResImpl(res.response, {
+        statusCode: res.status,
+        statusText: res.statusText,
+        headers: parseRawHeaders(res.responseHeaders),
+        finalUrl: res.finalUrl,
+        redirected: res.finalUrl === req.url,
+    });
+}
+class ResImpl {
+    constructor(body, init) {
+        this.rawBody = body;
+        this.init = init;
+        this.body = toReadableStream(body);
+        const { headers, statusCode, statusText, finalUrl, redirected } = init;
+        this.headers = headers;
+        this.status = statusCode;
+        this.statusText = statusText;
+        this.url = finalUrl;
+        this.type = "basic";
+        this.redirected = redirected;
+        this._bodyUsed = false;
+    }
+    get bodyUsed() {
+        return this._bodyUsed;
+    }
+    get ok() {
+        return this.status < 300;
+    }
+    arrayBuffer() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'arrayBuffer' on 'Response': body stream already read");
+        }
+        this._bodyUsed = true;
+        return this.rawBody.arrayBuffer();
+    }
+    blob() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'blob' on 'Response': body stream already read");
+        }
+        this._bodyUsed = true;
+        // `slice` will use empty string as default value, so need to pass all arguments.
+        return Promise.resolve(this.rawBody.slice(0, this.rawBody.size, this.rawBody.type));
+    }
+    clone() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'clone' on 'Response': body stream already read");
+        }
+        return new ResImpl(this.rawBody, this.init);
+    }
+    formData() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'formData' on 'Response': body stream already read");
+        }
+        this._bodyUsed = true;
+        return this.rawBody.text().then(decode);
+    }
+    async json() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'json' on 'Response': body stream already read");
+        }
+        this._bodyUsed = true;
+        return JSON.parse(await this.rawBody.text());
+    }
+    text() {
+        if (this.bodyUsed) {
+            throw new TypeError("Failed to execute 'text' on 'Response': body stream already read");
+        }
+        this._bodyUsed = true;
+        return this.rawBody.text();
+    }
+}
+function decode(body) {
+    const form = new FormData();
+    body
+        .trim()
+        .split("&")
+        .forEach(function (bytes) {
+        if (bytes) {
+            const split = bytes.split("=");
+            const name = split.shift()?.replace(/\+/g, " ");
+            const value = split.join("=").replace(/\+/g, " ");
+            form.append(decodeURIComponent(name), decodeURIComponent(value));
+        }
+    });
+    return form;
+}
+function toReadableStream(value) {
+    return new ReadableStream({
+        start(controller) {
+            controller.enqueue(value);
+            controller.close();
+        },
+    });
+}
+
+async function GM_fetch(input, init) {
+    const request = new Request(input, init);
+    let data;
+    if (init?.body) {
+        data = await request.text();
+    }
+    return await XHR(request, init, data);
+}
+function XHR(request, init, data) {
+    return new Promise((resolve, reject) => {
+        if (request.signal && request.signal.aborted) {
+            return reject(new DOMException("Aborted", "AbortError"));
+        }
+        GM.xmlHttpRequest({
+            url: request.url,
+            method: gmXHRMethod(request.method.toUpperCase()),
+            headers: Object.fromEntries(new Headers(init?.headers).entries()),
+            data: data,
+            responseType: "blob",
+            onload(res) {
+                resolve(parseGMResponse(request, res));
+            },
+            onabort() {
+                reject(new DOMException("Aborted", "AbortError"));
+            },
+            ontimeout() {
+                reject(new TypeError("Network request failed, timeout"));
+            },
+            onerror(err) {
+                reject(new TypeError("Failed to fetch: " + err.finalUrl));
+            },
+        });
+    });
+}
+const httpMethods = ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD", "TRACE", "OPTIONS", "CONNECT"];
+// a ts type helper to narrow type
+function includes(array, element) {
+    return array.includes(element);
+}
+function gmXHRMethod(method) {
+    if (includes(httpMethods, method)) {
+        return method;
+    }
+    throw new Error(`unsupported http method ${method}`);
+}
+
+
+//# sourceMappingURL=index.mjs.map
+
+;// ./src/call-history.ts
+
 
 
 class CallHistory {
-    constructor() {
-        this.callerIds = {};
-    }
+    callerIds = {};
     updateCallHistoryEntry(call, callerId) {
         var span = call.querySelector(':scope > span');
         this.showTimeManager(call, call.querySelector('.date').textContent, callerId);
@@ -4126,67 +4475,55 @@ class CallHistory {
         a.classList.add('btn-plain');
         toolbar.insertBefore(a, toolbar.firstChild);
     }
-    showCallHistory(element) {
-        return __awaiter(this, void 0, void 0, function* () {
-            var span = element.querySelector(':scope > span');
-            var number = extractNumber(span.textContent);
-            if (!number) {
-                this.updateCallHistoryEntry(element, undefined);
-                return;
+    async showCallHistory(element) {
+        var span = element.querySelector(':scope > span');
+        var number = extractNumber(span.textContent);
+        if (!number) {
+            this.updateCallHistoryEntry(element, undefined);
+            return;
+        }
+        if (this.callerIds[number] !== undefined) {
+            this.updateCallHistoryEntry(element, this.callerIds[number]);
+        }
+        else {
+            var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number));
+            var callerId = { tD_NAME: '' };
+            if (response.status === 200) {
+                callerId = await response.json();
             }
-            if (this.callerIds[number] !== undefined) {
-                this.updateCallHistoryEntry(element, this.callerIds[number]);
-            }
-            else {
-                var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number));
-                var callerId = { tD_NAME: '' };
-                if (response.status === 200) {
-                    callerId = response.data;
-                }
-                console.log('TAPI call histroy callerid response', number, response, callerId);
-                this.callerIds[number] = callerId;
-                this.updateCallHistoryEntry(element, callerId);
-            }
-        });
+            console.log('TAPI call histroy callerid response', number, response, callerId);
+            this.callerIds[number] = callerId;
+            this.updateCallHistoryEntry(element, callerId);
+        }
     }
 }
 
-;// CONCATENATED MODULE: ./src/call-notification.ts
-var call_notification_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
+;// ./src/call-notification.ts
+
 
 class CallNotification {
-    showCallNotification(element) {
-        return call_notification_awaiter(this, void 0, void 0, function* () {
-            var number = element.querySelector('.callNumber').textContent;
-            console.log('TAPI call notification', number);
-            number = extractNumber(number);
-            if (!number) {
-                console.log('TAPI callerid no number found');
-                return;
+    async showCallNotification(element) {
+        var number = element.querySelector('.callNumber').textContent;
+        console.log('TAPI call notification', number);
+        number = extractNumber(number);
+        if (!number) {
+            console.log('TAPI callerid no number found');
+            return;
+        }
+        console.log('TAPI searching callerid for', number);
+        var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number));
+        console.log('TAPI callerid response', response);
+        var notification = {
+            text: number
+        };
+        if (response.status === 200) {
+            var callerId = await response.json();
+            if (callerId) {
+                notification.text = callerId.tD_NAME + '\r\n' + number + ' (' + callerId.tD_MEDIUM + ')';
             }
-            console.log('TAPI searching callerid for', number);
-            var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number));
-            console.log('TAPI callerid response', response);
-            var notification = {
-                text: number
-            };
-            if (response.status === 200) {
-                var callerId = response.data;
-                if (callerId) {
-                    notification.text = callerId.tD_NAME + '\r\n' + number + ' (' + callerId.tD_MEDIUM + ')';
-                }
-            }
-            // eslint-disable-next-line no-undef
-            GM.notification(notification);
-        });
+        }
+        // eslint-disable-next-line no-undef
+        GM.notification(notification.text, 'TAPI Anruf');
     }
 }
 
@@ -4210,7 +4547,7 @@ var styleTagTransform = __webpack_require__("./node_modules/style-loader/dist/ru
 var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform);
 // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./src/search.css
 var search = __webpack_require__("./node_modules/css-loader/dist/cjs.js!./src/search.css");
-;// CONCATENATED MODULE: ./src/search.css
+;// ./src/search.css
 
       
       
@@ -4226,26 +4563,21 @@ var options = {};
 
 options.styleTagTransform = (styleTagTransform_default());
 options.setAttributes = (setAttributesWithoutAttributes_default());
-
-      options.insert = insertBySelector_default().bind(null, "head");
-    
+options.insert = insertBySelector_default().bind(null, "head");
 options.domAPI = (styleDomAPI_default());
 options.insertStyleElement = (insertStyleElement_default());
 
-var update = injectStylesIntoStyleTag_default()(search/* default */.Z, options);
+var update = injectStylesIntoStyleTag_default()(search/* default */.A, options);
 
 
 
 
-       /* harmony default export */ const src_search = (search/* default */.Z && search/* default */.Z.locals ? search/* default */.Z.locals : undefined);
+       /* harmony default export */ const src_search = (search/* default */.A && search/* default */.A.locals ? search/* default */.A.locals : undefined);
 
-;// CONCATENATED MODULE: ./src/debounce.js
+;// ./src/debounce.js
 function debounce(func, wait) {
   let timeout;
-  return function executedFunction() {
-    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
-      args[_key] = arguments[_key];
-    }
+  return function executedFunction(...args) {
     const later = () => {
       clearTimeout(timeout);
       func(...args);
@@ -4254,56 +4586,13 @@ function debounce(func, wait) {
     timeout = setTimeout(later, wait);
   };
 }
-;// CONCATENATED MODULE: ./src/search.ts
-var search_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
+;// ./src/search.ts
+
 
 
 
 class Search {
-    constructor() {
-        this.currentSearchText = '';
-        this.doSearch = debounce(() => search_awaiter(this, void 0, void 0, function* () {
-            var search = document.getElementById('tapiSearchInput');
-            var searchText = search.value.trim();
-            if (searchText === '') {
-                this.removeSearchResults();
-                return;
-            }
-            else if (searchText === this.currentSearchText) {
-                return;
-            }
-            console.log('Searching TAPI');
-            var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText));
-            console.log('TAPI Search response', response);
-            var contacts = response.data;
-            console.log('TAPI Contacts', contacts);
-            this.removeSearchResults();
-            this.currentSearchText = searchText;
-            var results = document.createElement('div');
-            results.setAttribute('id', 'tapi-search-autocomplete-list');
-            results.setAttribute('class', 'tapi-search-autocomplete-items');
-            document.getElementById('tapiSearchBox').appendChild(results);
-            contacts.forEach(contact => {
-                var item = document.createElement('div');
-                item.setAttribute('class', 'tapi-search-autocomplete-item');
-                var p = document.createElement('p');
-                p.innerHTML = contact.tD_NAME + '<br>' + contact.tD_MEDIUM + ': ' + contact.tD_NUMBER_TAPI;
-                item.appendChild(p);
-                item.onclick = () => { this.dial(contact.tD_NUMBER_TAPI); };
-                item.onmouseover = () => { this.selectResult(item); };
-                item.dataset.tapiNumber = contact.tD_NUMBER_TAPI;
-                results.appendChild(item);
-            });
-        }), 200);
-    }
+    currentSearchText = '';
     createSearchWindow(element) {
         console.log('Create TAPI Search');
         var form = document.createElement('form');
@@ -4385,6 +4674,39 @@ class Search {
             this.doSearch();
         }
     }
+    doSearch = debounce(async () => {
+        var search = document.getElementById('tapiSearchInput');
+        var searchText = search.value.trim();
+        if (searchText === '') {
+            this.removeSearchResults();
+            return;
+        }
+        else if (searchText === this.currentSearchText) {
+            return;
+        }
+        console.log('Searching TAPI');
+        var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/search?query=' + encodeURIComponent(searchText));
+        console.log('TAPI Search response', response);
+        var contacts = await response.json();
+        console.log('TAPI Contacts', contacts);
+        this.removeSearchResults();
+        this.currentSearchText = searchText;
+        var results = document.createElement('div');
+        results.setAttribute('id', 'tapi-search-autocomplete-list');
+        results.setAttribute('class', 'tapi-search-autocomplete-items');
+        document.getElementById('tapiSearchBox').appendChild(results);
+        contacts.forEach(contact => {
+            var item = document.createElement('div');
+            item.setAttribute('class', 'tapi-search-autocomplete-item');
+            var p = document.createElement('p');
+            p.innerHTML = contact.tD_NAME + '<br>' + contact.tD_MEDIUM + ': ' + contact.tD_NUMBER_TAPI;
+            item.appendChild(p);
+            item.onclick = () => { this.dial(contact.tD_NUMBER_TAPI); };
+            item.onmouseover = () => { this.selectResult(item); };
+            item.dataset.tapiNumber = contact.tD_NUMBER_TAPI;
+            results.appendChild(item);
+        });
+    }, 200);
     selectResult(item) {
         console.log('Select item', item);
         var items = document.getElementsByClassName('tapi-search-autocomplete-active');
@@ -4408,7 +4730,7 @@ class Search {
 
 // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./src/status.css
 var cjs_js_src_status = __webpack_require__("./node_modules/css-loader/dist/cjs.js!./src/status.css");
-;// CONCATENATED MODULE: ./src/status.css
+;// ./src/status.css
 
       
       
@@ -4424,73 +4746,60 @@ var status_options = {};
 
 status_options.styleTagTransform = (styleTagTransform_default());
 status_options.setAttributes = (setAttributesWithoutAttributes_default());
-
-      status_options.insert = insertBySelector_default().bind(null, "head");
-    
+status_options.insert = insertBySelector_default().bind(null, "head");
 status_options.domAPI = (styleDomAPI_default());
 status_options.insertStyleElement = (insertStyleElement_default());
 
-var status_update = injectStylesIntoStyleTag_default()(cjs_js_src_status/* default */.Z, status_options);
+var status_update = injectStylesIntoStyleTag_default()(cjs_js_src_status/* default */.A, status_options);
 
 
 
 
-       /* harmony default export */ const src_status = (cjs_js_src_status/* default */.Z && cjs_js_src_status/* default */.Z.locals ? cjs_js_src_status/* default */.Z.locals : undefined);
+       /* harmony default export */ const src_status = (cjs_js_src_status/* default */.A && cjs_js_src_status/* default */.A.locals ? cjs_js_src_status/* default */.A.locals : undefined);
 
-;// CONCATENATED MODULE: ./src/status.ts
-var status_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
-    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
+;// ./src/status.ts
 
 
 class Status {
-    constructor() {
-        this._enabled = false;
-        this._statusOn = 'menuAvailable';
-        this._statusOff = 'menuAway';
-        this._currentStatus = undefined;
+    _user;
+    _enabled = false;
+    _statusOn = 'menuAvailable';
+    _statusOff = 'menuAway';
+    _currentStatus = undefined;
+    async showStatus(element) {
+        this._user = await GM.getValue('tapi-zc-user', '');
+        this._enabled = await GM.getValue('tapi-zc-enabled', false);
+        this._statusOn = await GM.getValue('tapi-zc-on', 'menuAvailable');
+        this._statusOff = await GM.getValue('tapi-zc-off', 'menuAvailable');
+        console.log('tapi-zc-user', this._user, 'tapi-zc-enabled', this._enabled, 'tapi-zc-on', this._statusOn, 'tapi-zc-off', this._statusOff);
+        this.checkStatus();
+        waitForKeyElements("wc-account-menu > div > ul", (element) => { this.addZcStatusPopup(element); }, true);
     }
-    showStatus(element) {
-        return status_awaiter(this, void 0, void 0, function* () {
-            this._user = yield GM.getValue('tapi-zc-user', '');
-            this._enabled = yield GM.getValue('tapi-zc-enabled', false);
-            this._statusOn = yield GM.getValue('tapi-zc-on', 'menuAvailable');
-            this._statusOff = yield GM.getValue('tapi-zc-off', 'menuAvailable');
-            console.log('tapi-zc-user', this._user, 'tapi-zc-enabled', this._enabled, 'tapi-zc-on', this._statusOn, 'tapi-zc-off', this._statusOff);
-            this.checkStatus();
-            waitForKeyElements("wc-account-menu > div > ul", (element) => { this.addZcStatusPopup(element); }, true);
-        });
-    }
-    checkStatus() {
-        return status_awaiter(this, void 0, void 0, function* () {
-            if (this._enabled) {
-                try {
-                    var response = yield external_axios_default().get('http://cpatapi.cpsrvweb2016.cp-austria.at/availability/' + encodeURIComponent(this._user));
-                    if (response.status == 200) {
-                        var status = response.data;
-                        if (this._currentStatus !== status.loggedIn) {
-                            this._currentStatus = status.loggedIn;
-                            console.log('New status, loggedIn', this._currentStatus);
-                            document.getElementsByTagName("wcavatar")[0].click();
-                            setTimeout(() => {
-                                var statusId = this._currentStatus ? this._statusOn : this._statusOff;
-                                document.getElementById(statusId).click();
-                            }, 1000);
-                        }
+    async checkStatus() {
+        if (this._enabled) {
+            try {
+                var response = await GM_fetch('http://cpatapi.cpsrvweb2016.cp-austria.at/availability/' + encodeURIComponent(this._user));
+                if (response.status == 200) {
+                    var status = await response.json();
+                    if (this._currentStatus !== status.loggedIn) {
+                        this._currentStatus = status.loggedIn;
+                        console.log('New status, loggedIn', this._currentStatus);
+                        var accMenu = document.getElementsByTagName("wc-account-menu")[0];
+                        var avatar = accMenu.getElementsByTagName("app-avatar")[0];
+                        avatar.click();
+                        setTimeout(() => {
+                            var statusId = this._currentStatus ? this._statusOn : this._statusOff;
+                            console.log('Clicking status', statusId);
+                            document.getElementById(statusId).click();
+                        }, 1000);
                     }
                 }
-                catch (error) {
-                    console.log(error);
-                }
-                setTimeout(() => this.checkStatus(), 30000);
             }
-        });
+            catch (error) {
+                console.log(error);
+            }
+            setTimeout(() => this.checkStatus(), 30000);
+        }
     }
     addZcStatusPopup(element) {
         var divider = document.createElement('li');
@@ -4511,7 +4820,7 @@ class Status {
         var html = '<div role="document" class="modal-dialog">' +
             '  <div class="modal-content">' +
             '    <div class="modal-header">' +
-            '      <h4 class="modal-title float-left">ZeitConsens Status</h4><button id="zc-btnClose" type="button" aria-label="Close" class="close float-right"><span aria-hidden="true">×</span></button>' +
+            '      <h4 class="modal-title">ZeitConsens Status</h4><button id="zc-btnClose" type="button" aria-label="Close" class="btn-close"  data-qa="modal-cross"></button>' +
             '    </div>' +
             '    <div class="modal-body">' +
             '      <div class="form-group">' +
@@ -4537,13 +4846,13 @@ class Status {
             '        <label class="i-checks" for="tapi-zc-enabled">' +
             '          <input type="checkbox" id="tapi-zc-enabled">' +
             '          <i></i><span>Enabled</span>' +
-            '      </label>';
-        '      </div>';
-        '    </div>' +
-            '    <div class="modal-footer">' +
-            '      <button id="zc-btnOk" type="button" class="btn btn-primary">OK </button>' +
-            '      <button id="zc-btnCancel" type="button" class="btn btn-light">Cancel </button>' +
+            '      </label>' +
+            '      </div>' +
             '    </div>' +
+            //'    <div class="modal-footer">' +
+            //'      <button id="zc-btnOk" type="button" class="btn btn-primary" data-qa="modal-ok">OK </button>' +
+            //'      <button id="zc-btnCancel" type="button" class="btn btn-border" data-qa="modal-close">Cancel </button>' +
+            //'    </div>' +
             '  </div>' +
             '</div>';
         var modal = document.createElement('modal-container');
@@ -4551,7 +4860,7 @@ class Status {
         modal.classList.add('modal');
         modal.classList.add('fade');
         modal.innerHTML = html;
-        var body = document.getElementsByTagName('body')[0].appendChild(modal);
+        document.getElementsByTagName('body')[0].appendChild(modal);
         var btnClose = document.getElementById('zc-btnClose');
         btnClose.onclick = () => {
             document.getElementById('zc-modal').classList.toggle('show');
@@ -4592,7 +4901,7 @@ class Status {
     }
 }
 
-;// CONCATENATED MODULE: ./src/index.js
+;// ./src/index.js
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
 
 
diff --git a/package.json b/package.json
index 182d80b..838e2f2 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
 {
   "name": "3cx-tapi",
   "description": "3CX CP Tapi and Projectmanager integration",
-  "version": "9.1.1",
+  "version": "9.2.0",
   "author": {
     "name": "Daniel Triendl",
     "email": "d.triendl@cp-solutions.at"