@ajf/calendars 12.1.6 → 12.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -579,7 +579,7 @@
579
579
  this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
580
580
  }
581
581
  else if (typeof val === 'object' && val instanceof Date) {
582
- var result = EthiopianDate.gregorianToEthiopian(val.getFullYear(), val.getMonth() + 1, val.getDate());
582
+ var result = EthiopianDate.gregorianToEthiopian(val);
583
583
  _c = __read([
584
584
  result.getFullYear(),
585
585
  result.getMonth(),
@@ -649,7 +649,7 @@
649
649
  * @param val - A numeric year value if the second and third parameters are
650
650
  * provided, it should be a date string if not
651
651
  * @param month A zero-based numeric value for the month
652
- * (0 for January, 11 for December)
652
+ * (0 for መስከረም, 12 for ጳጉሜን)
653
653
  * @param day A numeric value equal for the day of the month.
654
654
  *
655
655
  * @api public
@@ -678,6 +678,16 @@
678
678
  var gc = toGC(ec);
679
679
  return new Date(gc[0], gc[1] - 1, gc[2]);
680
680
  };
681
+ /**
682
+ *
683
+ * @param val - A numeric year value if the second and third parameters are
684
+ * provided, it should be a date string if not
685
+ * @param month A zero-based numeric value for the month
686
+ * (0 for January, 11 for December)
687
+ * @param day A numeric value equal for the day of the month.
688
+ *
689
+ * @api public
690
+ */
681
691
  EthiopianDate.gregorianToEthiopian = function (val, month, day) {
682
692
  var gc;
683
693
  if (val != null && month == null && day == null && typeof val !== 'number') {
@@ -891,7 +901,7 @@
891
901
  var ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
892
902
  var curYear = ecDate.getFullYear();
893
903
  var firstYear = curYear - (curYear % 10) + 1;
894
- var curDate = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);
904
+ var curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
895
905
  var rows = [];
896
906
  for (var i = 0; i < 4; i++) {
897
907
  var row = [];
@@ -941,7 +951,7 @@
941
951
  try {
942
952
  var ed = EthiopianDate.gregorianToEthiopian(value);
943
953
  var date = ("0" + ed.getDate()).slice(-2);
944
- var month = ("0" + ed.getMonth()).slice(-2);
954
+ var month = ("0" + (ed.getMonth() + 1)).slice(-2);
945
955
  return date + "/" + month + "/" + ed.getFullYear();
946
956
  }
947
957
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"calendars-ethiopian.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/calendars/ethiopian/converter.ts","../../../../../src/calendars/ethiopian/utils.ts","../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../src/calendars/ethiopian/public-api.ts","../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(\n val.getFullYear(),\n val.getMonth() + 1,\n val.getDate(),\n );\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth()}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getISODay","startOfISOWeek","endOfISOWeek","addWeeks","subWeeks","setISODay","startOfWeek","addDays","addYears","AjfCalendarService","Injectable","Pipe","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"calendars-ethiopian.umd.js","sources":["../../../../../external/npm/node_modules/tslib/tslib.es6.js","../../../../../src/calendars/ethiopian/converter.ts","../../../../../src/calendars/ethiopian/utils.ts","../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../src/calendars/ethiopian/public-api.ts","../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(val);\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n /**\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth() + 1}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getISODay","startOfISOWeek","endOfISOWeek","addWeeks","subWeeks","setISODay","startOfWeek","addDays","addYears","AjfCalendarService","Injectable","Pipe","NgModule"],"mappings":"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"}
@@ -26,7 +26,7 @@
26
26
  *
27
27
  */
28
28
  /** Current version of Ajf. */
29
- var VERSION = new core.Version('12.1.6');
29
+ var VERSION = new core.Version('12.1.7');
30
30
 
31
31
  /**
32
32
  * @license
@@ -1 +1 @@
1
- {"version":3,"file":"calendars.umd.js","sources":["../../../../../src/calendars/version.ts","../../../../../src/calendars/public-api.ts","../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.6');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":["Version"],"mappings":";;;;;;CAAA;;;;;;;;;;;;;;;;;;;;;CAwBA;KACa,OAAO,GAAG,IAAIA,YAAO,CAAC,mBAAmB;;CCzBtD;;;;;;;;;;;;;;;;;;;;;;CCAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"calendars.umd.js","sources":["../../../../../src/calendars/version.ts","../../../../../src/calendars/public-api.ts","../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.7');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":["Version"],"mappings":";;;;;;CAAA;;;;;;;;;;;;;;;;;;;;;CAwBA;KACa,OAAO,GAAG,IAAIA,YAAO,CAAC,mBAAmB;;CCzBtD;;;;;;;;;;;;;;;;;;;;;;CCAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -187,7 +187,7 @@ export class AjfEthiopianCalendarService extends AjfCalendarService {
187
187
  const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
188
188
  let curYear = ecDate.getFullYear();
189
189
  let firstYear = curYear - (curYear % 10) + 1;
190
- let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);
190
+ let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
191
191
  let rows = [];
192
192
  for (let i = 0; i < 4; i++) {
193
193
  let row = [];
@@ -207,4 +207,4 @@ AjfEthiopianCalendarService.ɵprov = i0.ɵɵdefineInjectable({ factory: function
207
207
  AjfEthiopianCalendarService.decorators = [
208
208
  { type: Injectable, args: [{ providedIn: 'root' },] }
209
209
  ];
210
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUExS0YsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2FsZW5kYXJFbnRyeSxcbiAgQWpmQ2FsZW5kYXJQYXJhbXMsXG4gIEFqZkNhbGVuZGFyU2VydmljZSxcbiAgQWpmQ2FsZW5kYXJWaWV3LFxuICBBamZDYWxlbmRhclZpZXdNb2RlLFxufSBmcm9tICdAYWpmL2NvcmUvY2FsZW5kYXInO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZERheXMsXG4gIGFkZFdlZWtzLFxuICBhZGRZZWFycyxcbiAgZW5kT2ZJU09XZWVrLFxuICBnZXRJU09EYXksXG4gIHNldElTT0RheSxcbiAgc3RhcnRPZklTT1dlZWssXG4gIHN0YXJ0T2ZXZWVrLFxuICBzdWJXZWVrcyxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5mdW5jdGlvbiBnZXRNb250aERheXMobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDwgMTIpIHtcbiAgICByZXR1cm4gMzA7XG4gIH1cbiAgcmV0dXJuIHllYXIgJSA0ID09PSAzID8gNiA6IDU7XG59XG5cbmZ1bmN0aW9uIGdldE1vbnRoQm91bmRzKGRhdGU6IEV0aGlvcGlhbkRhdGUpOiB7c3RhcnQ6IEV0aGlvcGlhbkRhdGU7IGVuZDogRXRoaW9waWFuRGF0ZX0ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gIGNvbnN0IGVuZERheSA9IGdldE1vbnRoRGF5cyhtb250aCwgeWVhcik7XG4gIGNvbnN0IGVuZCA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCBlbmREYXkpO1xuICByZXR1cm4ge3N0YXJ0LCBlbmR9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2UgZXh0ZW5kcyBBamZDYWxlbmRhclNlcnZpY2Uge1xuICBvdmVycmlkZSBidWlsZFZpZXcocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyVmlldyB7XG4gICAgY29uc3Qge3ZpZXdNb2RlfSA9IHBhcmFtcztcbiAgICBjb25zdCB2aWV3RGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4ocGFyYW1zLnZpZXdEYXRlKTtcbiAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7XG4gICAgICBjYXNlICdkZWNhZGUnOlxuICAgICAgICBsZXQgY3VyWWVhcjogbnVtYmVyID0gdmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgbGV0IGZpcnN0WWVhciA9IGN1clllYXIgLSAoY3VyWWVhciAlIDEwKSArIDE7XG4gICAgICAgIGxldCBsYXN0WWVhciA9IGZpcnN0WWVhciArIDExO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7Zmlyc3RZZWFyfSAtICR7bGFzdFllYXJ9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCB2aWV3ID0gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRTaG9ydE1vbnRoTmFtZSgpfSAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IHRoaXMuX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zKSxcbiAgICAgICAgICByb3dzOiB2aWV3LnJvd3MsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5idWlsZFZpZXcocGFyYW1zKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudHJ5TGFiZWwoZW50cnk6IEFqZkNhbGVuZGFyRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZW50cnkuZGF0ZSk7XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdkYXknKSB7XG4gICAgICByZXR1cm4gYCR7ZWNEYXRlLmdldERhdGUoKX1gO1xuICAgIH1cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRNb250aE5hbWUoKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZWNEYXRlLmdldEZ1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIG92ZXJyaWRlIG1vbnRoQm91bmRzKGRhdGU6IERhdGUsIGlzb01vZGU6IGJvb2xlYW4pOiB7c3RhcnQ6IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgIGlmICghaXNvTW9kZSkge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihkYXRlKTtcbiAgICAgIGNvbnN0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihzdGFydCksXG4gICAgICAgIGVuZDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihlbmQpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzb0RheSA9IGdldElTT0RheShkYXRlKTtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBsZXQge3N0YXJ0LCBlbmR9ID0gZ2V0TW9udGhCb3VuZHMoZWNEYXRlKTtcbiAgICAgIGlmIChlY0RhdGUuZ2V0TW9udGgoKSA9PT0gMTIpIHtcbiAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHN0YXJ0T2ZJU09XZWVrKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgICBlbmQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlID0gaXNvRGF5IDwgNCA/IGVuZE9mSVNPV2VlayhkYXRlKSA6IHN0YXJ0T2ZJU09XZWVrKGRhdGUpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtEYXkgPSBzdGFydC5nZXREYXkoKTtcbiAgICAgICAgY29uc3QgZW5kV2Vla0RheSA9IGVuZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKHN0YXJ0V2Vla0RheSA9PSAwIHx8IHN0YXJ0V2Vla0RheSA+IDQpIHtcbiAgICAgICAgICBzdGFydCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oYWRkV2Vla3Moc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFdlZWtEYXkgPiAwICYmIGVuZFdlZWtEYXkgPCA0KSB7XG4gICAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdWJXZWVrcyhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpLFxuICAgICAgICBlbmQ6IGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmV4dFZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMTIpIHtcbiAgICAgICAgbW9udGggPSAwO1xuICAgICAgICB5ZWFyICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCArPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLm5leHRWaWV3KHZpZXdEYXRlLCB2aWV3TW9kZSk7XG4gIH1cblxuICBvdmVycmlkZSBwcmV2aW91c1ZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMCkge1xuICAgICAgICBtb250aCA9IDEyO1xuICAgICAgICB5ZWFyIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCAtPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnByZXZpb3VzVmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNNb250aEhlYWRlclJvdyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHtpc29Nb2RlLCB2aWV3RGF0ZX0gPSBwYXJhbXM7XG4gICAgbGV0IGN1ckRhdGU6IERhdGU7XG4gICAgaWYgKGlzb01vZGUpIHtcbiAgICAgIGN1ckRhdGUgPSBzZXRJU09EYXkoc3RhcnRPZldlZWsodmlld0RhdGUpLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyRGF0ZSA9IHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKTtcbiAgICB9XG4gICAgbGV0IHdlZWtEYXlOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihjdXJEYXRlKTtcbiAgICAgIHdlZWtEYXlOYW1lcy5wdXNoKGVjRGF0ZS5nZXREYXlPZldlZWsoKSk7XG4gICAgICBjdXJEYXRlID0gYWRkRGF5cyhjdXJEYXRlLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHdlZWtEYXlOYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogQWpmQ2FsZW5kYXJFbnRyeVtdW10ge1xuICAgIGNvbnN0IHt2aWV3RGF0ZSwgc2VsZWN0aW9ufSA9IHBhcmFtcztcbiAgICBjb25zdCB5ZWFyID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSkuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgY3VyRGF0ZTogRXRoaW9waWFuRGF0ZTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDQ7IGkrKykge1xuICAgICAgbGV0IHJvdzogQWpmQ2FsZW5kYXJFbnRyeVtdID0gW107XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgICBjb25zdCBjdXJNb250aCA9IGkgKiAzICsgajtcbiAgICAgICAgaWYgKGN1ck1vbnRoIDwgMTMpIHtcbiAgICAgICAgICBjdXJEYXRlID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgY3VyTW9udGgsIDEpO1xuICAgICAgICAgIGxldCBkYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihjdXJEYXRlKTtcbiAgICAgICAgICBsZXQgbmV3RW50cnk6IEFqZkNhbGVuZGFyRW50cnkgPSB7dHlwZTogJ21vbnRoJywgZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgICAgbmV3RW50cnkuc2VsZWN0ZWQgPSB0aGlzLmlzRW50cnlTZWxlY3RlZChuZXdFbnRyeSwgc2VsZWN0aW9uKTtcbiAgICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNEZWNhZGVDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgbGV0IGN1clllYXI6IG51bWJlciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihmaXJzdFllYXIsIDEsIDEpO1xuXG4gICAgbGV0IHJvd3M6IEFqZkNhbGVuZGFyRW50cnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShjdXJEYXRlKTtcbiAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICd5ZWFyJywgZGF0ZTogZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgIHJvdy5wdXNoKG5ld0VudHJ5KTtcbiAgICAgICAgY3VyRGF0ZSA9IGFkZFllYXJzKGN1ckRhdGUsIDEpO1xuICAgICAgfVxuICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cbiJdfQ==
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2NhbGVuZGFyLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUdMLGtCQUFrQixHQUduQixNQUFNLG9CQUFvQixDQUFDO0FBQzVCLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLE9BQU8sRUFDUCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFlBQVksRUFDWixTQUFTLEVBQ1QsU0FBUyxFQUNULGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxHQUNULE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0MsU0FBUyxZQUFZLENBQUMsS0FBYSxFQUFFLElBQVk7SUFDL0MsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUFFO1FBQ2QsT0FBTyxFQUFFLENBQUM7S0FDWDtJQUNELE9BQU8sSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxJQUFtQjtJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6QyxNQUFNLEdBQUcsR0FBRyxJQUFJLGFBQWEsQ0FB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QzdDLElBQUksT0FBTyxHQUFTLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXhFLElBQUksSUFBSSxHQUF5QixFQUFFLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1lBQ2pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQzFCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM3QixJQUFJLFFBQVEsR0FBcUIsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUM5RSxRQUFRLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUM5RCxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQzthQUNoQztZQUNELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDaEI7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7Ozs7WUExS0YsVUFBVSxTQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtcbiAgQWpmQ2FsZW5kYXJFbnRyeSxcbiAgQWpmQ2FsZW5kYXJQYXJhbXMsXG4gIEFqZkNhbGVuZGFyU2VydmljZSxcbiAgQWpmQ2FsZW5kYXJWaWV3LFxuICBBamZDYWxlbmRhclZpZXdNb2RlLFxufSBmcm9tICdAYWpmL2NvcmUvY2FsZW5kYXInO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGFkZERheXMsXG4gIGFkZFdlZWtzLFxuICBhZGRZZWFycyxcbiAgZW5kT2ZJU09XZWVrLFxuICBnZXRJU09EYXksXG4gIHNldElTT0RheSxcbiAgc3RhcnRPZklTT1dlZWssXG4gIHN0YXJ0T2ZXZWVrLFxuICBzdWJXZWVrcyxcbn0gZnJvbSAnZGF0ZS1mbnMnO1xuXG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5mdW5jdGlvbiBnZXRNb250aERheXMobW9udGg6IG51bWJlciwgeWVhcjogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKG1vbnRoIDwgMTIpIHtcbiAgICByZXR1cm4gMzA7XG4gIH1cbiAgcmV0dXJuIHllYXIgJSA0ID09PSAzID8gNiA6IDU7XG59XG5cbmZ1bmN0aW9uIGdldE1vbnRoQm91bmRzKGRhdGU6IEV0aGlvcGlhbkRhdGUpOiB7c3RhcnQ6IEV0aGlvcGlhbkRhdGU7IGVuZDogRXRoaW9waWFuRGF0ZX0ge1xuICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRhdGUuZ2V0TW9udGgoKTtcbiAgY29uc3Qgc3RhcnQgPSBuZXcgRXRoaW9waWFuRGF0ZSh5ZWFyLCBtb250aCwgMSk7XG4gIGNvbnN0IGVuZERheSA9IGdldE1vbnRoRGF5cyhtb250aCwgeWVhcik7XG4gIGNvbnN0IGVuZCA9IG5ldyBFdGhpb3BpYW5EYXRlKHllYXIsIG1vbnRoLCBlbmREYXkpO1xuICByZXR1cm4ge3N0YXJ0LCBlbmR9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5DYWxlbmRhclNlcnZpY2UgZXh0ZW5kcyBBamZDYWxlbmRhclNlcnZpY2Uge1xuICBvdmVycmlkZSBidWlsZFZpZXcocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyVmlldyB7XG4gICAgY29uc3Qge3ZpZXdNb2RlfSA9IHBhcmFtcztcbiAgICBjb25zdCB2aWV3RGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4ocGFyYW1zLnZpZXdEYXRlKTtcbiAgICBzd2l0Y2ggKHZpZXdNb2RlKSB7XG4gICAgICBjYXNlICdkZWNhZGUnOlxuICAgICAgICBsZXQgY3VyWWVhcjogbnVtYmVyID0gdmlld0RhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgbGV0IGZpcnN0WWVhciA9IGN1clllYXIgLSAoY3VyWWVhciAlIDEwKSArIDE7XG4gICAgICAgIGxldCBsYXN0WWVhciA9IGZpcnN0WWVhciArIDExO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhlYWRlcjogYCR7Zmlyc3RZZWFyfSAtICR7bGFzdFllYXJ9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjRGVjYWRlQ2FsZW5kYXJSb3dzKHBhcmFtcyksXG4gICAgICAgIH07XG4gICAgICBjYXNlICd5ZWFyJzpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoZWFkZXI6IGAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IFtdLFxuICAgICAgICAgIHJvd3M6IHRoaXMuX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXMpLFxuICAgICAgICB9O1xuICAgICAgY2FzZSAnbW9udGgnOlxuICAgICAgICBjb25zdCB2aWV3ID0gc3VwZXIuYnVpbGRWaWV3KHBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGVhZGVyOiBgJHt2aWV3RGF0ZS5nZXRTaG9ydE1vbnRoTmFtZSgpfSAke3ZpZXdEYXRlLmdldEZ1bGxZZWFyKCl9YCxcbiAgICAgICAgICBoZWFkZXJSb3c6IHRoaXMuX2VjTW9udGhIZWFkZXJSb3cocGFyYW1zKSxcbiAgICAgICAgICByb3dzOiB2aWV3LnJvd3MsXG4gICAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5idWlsZFZpZXcocGFyYW1zKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGVudHJ5TGFiZWwoZW50cnk6IEFqZkNhbGVuZGFyRW50cnkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZW50cnkuZGF0ZSk7XG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdkYXknKSB7XG4gICAgICByZXR1cm4gYCR7ZWNEYXRlLmdldERhdGUoKX1gO1xuICAgIH1cbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ21vbnRoJykge1xuICAgICAgcmV0dXJuIGAke2VjRGF0ZS5nZXRNb250aE5hbWUoKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7ZWNEYXRlLmdldEZ1bGxZZWFyKCl9YDtcbiAgfVxuXG4gIG92ZXJyaWRlIG1vbnRoQm91bmRzKGRhdGU6IERhdGUsIGlzb01vZGU6IGJvb2xlYW4pOiB7c3RhcnQ6IERhdGU7IGVuZDogRGF0ZX0ge1xuICAgIGlmICghaXNvTW9kZSkge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihkYXRlKTtcbiAgICAgIGNvbnN0IHtzdGFydCwgZW5kfSA9IGdldE1vbnRoQm91bmRzKGVjRGF0ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGFydDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihzdGFydCksXG4gICAgICAgIGVuZDogRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihlbmQpLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGlzb0RheSA9IGdldElTT0RheShkYXRlKTtcbiAgICAgIGNvbnN0IGVjRGF0ZSA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oZGF0ZSk7XG4gICAgICBsZXQge3N0YXJ0LCBlbmR9ID0gZ2V0TW9udGhCb3VuZHMoZWNEYXRlKTtcbiAgICAgIGlmIChlY0RhdGUuZ2V0TW9udGgoKSA9PT0gMTIpIHtcbiAgICAgICAgc3RhcnQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHN0YXJ0T2ZJU09XZWVrKHN0YXJ0LmdldEdyZWdvcmlhbkRhdGUoKSkpO1xuICAgICAgICBlbmQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlID0gaXNvRGF5IDwgNCA/IGVuZE9mSVNPV2VlayhkYXRlKSA6IHN0YXJ0T2ZJU09XZWVrKGRhdGUpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtEYXkgPSBzdGFydC5nZXREYXkoKTtcbiAgICAgICAgY29uc3QgZW5kV2Vla0RheSA9IGVuZC5nZXREYXkoKTtcbiAgICAgICAgaWYgKHN0YXJ0V2Vla0RheSA9PSAwIHx8IHN0YXJ0V2Vla0RheSA+IDQpIHtcbiAgICAgICAgICBzdGFydCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4oYWRkV2Vla3Moc3RhcnQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuZFdlZWtEYXkgPiAwICYmIGVuZFdlZWtEYXkgPCA0KSB7XG4gICAgICAgICAgZW5kID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihzdWJXZWVrcyhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpLCAxKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXJ0OiBzdGFydE9mSVNPV2VlayhzdGFydC5nZXRHcmVnb3JpYW5EYXRlKCkpLFxuICAgICAgICBlbmQ6IGVuZE9mSVNPV2VlayhlbmQuZ2V0R3JlZ29yaWFuRGF0ZSgpKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmV4dFZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMTIpIHtcbiAgICAgICAgbW9udGggPSAwO1xuICAgICAgICB5ZWFyICs9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCArPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLm5leHRWaWV3KHZpZXdEYXRlLCB2aWV3TW9kZSk7XG4gIH1cblxuICBvdmVycmlkZSBwcmV2aW91c1ZpZXcodmlld0RhdGU6IERhdGUsIHZpZXdNb2RlOiBBamZDYWxlbmRhclZpZXdNb2RlKTogRGF0ZSB7XG4gICAgaWYgKHZpZXdNb2RlID09PSAnbW9udGgnKSB7XG4gICAgICBjb25zdCBlY0RhdGUgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKHZpZXdEYXRlKTtcbiAgICAgIGxldCB5ZWFyID0gZWNEYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICBsZXQgbW9udGggPSBlY0RhdGUuZ2V0TW9udGgoKTtcbiAgICAgIGlmIChtb250aCA9PT0gMCkge1xuICAgICAgICBtb250aCA9IDEyO1xuICAgICAgICB5ZWFyIC09IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb250aCAtPSAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4obmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgbW9udGgsIDEpKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnByZXZpb3VzVmlldyh2aWV3RGF0ZSwgdmlld01vZGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNNb250aEhlYWRlclJvdyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHtpc29Nb2RlLCB2aWV3RGF0ZX0gPSBwYXJhbXM7XG4gICAgbGV0IGN1ckRhdGU6IERhdGU7XG4gICAgaWYgKGlzb01vZGUpIHtcbiAgICAgIGN1ckRhdGUgPSBzZXRJU09EYXkoc3RhcnRPZldlZWsodmlld0RhdGUpLCAxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY3VyRGF0ZSA9IHN0YXJ0T2ZXZWVrKHZpZXdEYXRlKTtcbiAgICB9XG4gICAgbGV0IHdlZWtEYXlOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDc7IGkrKykge1xuICAgICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbihjdXJEYXRlKTtcbiAgICAgIHdlZWtEYXlOYW1lcy5wdXNoKGVjRGF0ZS5nZXREYXlPZldlZWsoKSk7XG4gICAgICBjdXJEYXRlID0gYWRkRGF5cyhjdXJEYXRlLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIHdlZWtEYXlOYW1lcztcbiAgfVxuXG4gIHByaXZhdGUgX2VjWWVhckNhbGVuZGFyUm93cyhwYXJhbXM6IEFqZkNhbGVuZGFyUGFyYW1zKTogQWpmQ2FsZW5kYXJFbnRyeVtdW10ge1xuICAgIGNvbnN0IHt2aWV3RGF0ZSwgc2VsZWN0aW9ufSA9IHBhcmFtcztcbiAgICBjb25zdCB5ZWFyID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSkuZ2V0RnVsbFllYXIoKTtcbiAgICBsZXQgY3VyRGF0ZTogRXRoaW9waWFuRGF0ZTtcblxuICAgIGxldCByb3dzOiBBamZDYWxlbmRhckVudHJ5W11bXSA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDQ7IGkrKykge1xuICAgICAgbGV0IHJvdzogQWpmQ2FsZW5kYXJFbnRyeVtdID0gW107XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7IGorKykge1xuICAgICAgICBjb25zdCBjdXJNb250aCA9IGkgKiAzICsgajtcbiAgICAgICAgaWYgKGN1ck1vbnRoIDwgMTMpIHtcbiAgICAgICAgICBjdXJEYXRlID0gbmV3IEV0aGlvcGlhbkRhdGUoeWVhciwgY3VyTW9udGgsIDEpO1xuICAgICAgICAgIGxldCBkYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihjdXJEYXRlKTtcbiAgICAgICAgICBsZXQgbmV3RW50cnk6IEFqZkNhbGVuZGFyRW50cnkgPSB7dHlwZTogJ21vbnRoJywgZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgICAgbmV3RW50cnkuc2VsZWN0ZWQgPSB0aGlzLmlzRW50cnlTZWxlY3RlZChuZXdFbnRyeSwgc2VsZWN0aW9uKTtcbiAgICAgICAgICByb3cucHVzaChuZXdFbnRyeSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBfZWNEZWNhZGVDYWxlbmRhclJvd3MocGFyYW1zOiBBamZDYWxlbmRhclBhcmFtcyk6IEFqZkNhbGVuZGFyRW50cnlbXVtdIHtcbiAgICBjb25zdCB7dmlld0RhdGUsIHNlbGVjdGlvbn0gPSBwYXJhbXM7XG4gICAgY29uc3QgZWNEYXRlID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2aWV3RGF0ZSk7XG4gICAgbGV0IGN1clllYXI6IG51bWJlciA9IGVjRGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIGxldCBmaXJzdFllYXIgPSBjdXJZZWFyIC0gKGN1clllYXIgJSAxMCkgKyAxO1xuICAgIGxldCBjdXJEYXRlOiBEYXRlID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbihmaXJzdFllYXIsIDAsIDEpO1xuXG4gICAgbGV0IHJvd3M6IEFqZkNhbGVuZGFyRW50cnlbXVtdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICAgIGxldCByb3c6IEFqZkNhbGVuZGFyRW50cnlbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCAzOyBqKyspIHtcbiAgICAgICAgbGV0IGRhdGUgPSBuZXcgRGF0ZShjdXJEYXRlKTtcbiAgICAgICAgbGV0IG5ld0VudHJ5OiBBamZDYWxlbmRhckVudHJ5ID0ge3R5cGU6ICd5ZWFyJywgZGF0ZTogZGF0ZSwgc2VsZWN0ZWQ6ICdub25lJ307XG4gICAgICAgIG5ld0VudHJ5LnNlbGVjdGVkID0gdGhpcy5pc0VudHJ5U2VsZWN0ZWQobmV3RW50cnksIHNlbGVjdGlvbik7XG4gICAgICAgIHJvdy5wdXNoKG5ld0VudHJ5KTtcbiAgICAgICAgY3VyRGF0ZSA9IGFkZFllYXJzKGN1ckRhdGUsIDEpO1xuICAgICAgfVxuICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cbn1cbiJdfQ==
@@ -26,7 +26,7 @@ export class AjfEthiopianDatePipe {
26
26
  try {
27
27
  const ed = EthiopianDate.gregorianToEthiopian(value);
28
28
  const date = `0${ed.getDate()}`.slice(-2);
29
- const month = `0${ed.getMonth()}`.slice(-2);
29
+ const month = `0${ed.getMonth() + 1}`.slice(-2);
30
30
  return `${date}/${month}/${ed.getFullYear()}`;
31
31
  }
32
32
  catch (e) {
@@ -38,4 +38,4 @@ AjfEthiopianDatePipe.decorators = [
38
38
  { type: Injectable },
39
39
  { type: Pipe, args: [{ name: 'ajfEthiopianDate' },] }
40
40
  ];
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUtcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2V0aGlvcGlhbi1kYXRlLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLElBQUk7WUFDRixNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVDLE9BQU8sR0FBRyxJQUFJLElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1NBQy9DO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQzs7O1lBWkYsVUFBVTtZQUNWLElBQUksU0FBQyxFQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBQaXBlLCBQaXBlVHJhbnNmb3JtfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RXRoaW9waWFuRGF0ZX0gZnJvbSAnLi9ldGhpb3BpYW4tZGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbkBQaXBlKHtuYW1lOiAnYWpmRXRoaW9waWFuRGF0ZSd9KVxuZXhwb3J0IGNsYXNzIEFqZkV0aGlvcGlhbkRhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogYW55KTogc3RyaW5nIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGVkID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2YWx1ZSk7XG4gICAgICBjb25zdCBkYXRlID0gYDAke2VkLmdldERhdGUoKX1gLnNsaWNlKC0yKTtcbiAgICAgIGNvbnN0IG1vbnRoID0gYDAke2VkLmdldE1vbnRoKCl9YC5zbGljZSgtMik7XG4gICAgICByZXR1cm4gYCR7ZGF0ZX0vJHttb250aH0vJHtlZC5nZXRGdWxsWWVhcigpfWA7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUtcGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvZXRoaW9waWFuL2V0aGlvcGlhbi1kYXRlLXBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUkvQyxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFNBQVMsQ0FBQyxLQUFVO1FBQ2xCLElBQUk7WUFDRixNQUFNLEVBQUUsR0FBRyxhQUFhLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckQsTUFBTSxJQUFJLEdBQUcsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxNQUFNLEtBQUssR0FBRyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoRCxPQUFPLEdBQUcsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztTQUMvQztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7OztZQVpGLFVBQVU7WUFDVixJQUFJLFNBQUMsRUFBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZSwgUGlwZSwgUGlwZVRyYW5zZm9ybX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0V0aGlvcGlhbkRhdGV9IGZyb20gJy4vZXRoaW9waWFuLWRhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5AUGlwZSh7bmFtZTogJ2FqZkV0aGlvcGlhbkRhdGUnfSlcbmV4cG9ydCBjbGFzcyBBamZFdGhpb3BpYW5EYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0odmFsdWU6IGFueSk6IHN0cmluZyB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBlZCA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4odmFsdWUpO1xuICAgICAgY29uc3QgZGF0ZSA9IGAwJHtlZC5nZXREYXRlKCl9YC5zbGljZSgtMik7XG4gICAgICBjb25zdCBtb250aCA9IGAwJHtlZC5nZXRNb250aCgpICsgMX1gLnNsaWNlKC0yKTtcbiAgICAgIHJldHVybiBgJHtkYXRlfS8ke21vbnRofS8ke2VkLmdldEZ1bGxZZWFyKCl9YDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -48,7 +48,7 @@ export class EthiopianDate {
48
48
  this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
49
49
  }
50
50
  else if (typeof val === 'object' && val instanceof Date) {
51
- const result = EthiopianDate.gregorianToEthiopian(val.getFullYear(), val.getMonth() + 1, val.getDate());
51
+ const result = EthiopianDate.gregorianToEthiopian(val);
52
52
  [this._year, this._month, this._date] = [
53
53
  result.getFullYear(),
54
54
  result.getMonth(),
@@ -118,7 +118,7 @@ export class EthiopianDate {
118
118
  * @param val - A numeric year value if the second and third parameters are
119
119
  * provided, it should be a date string if not
120
120
  * @param month A zero-based numeric value for the month
121
- * (0 for January, 11 for December)
121
+ * (0 for መስከረም, 12 for ጳጉሜን)
122
122
  * @param day A numeric value equal for the day of the month.
123
123
  *
124
124
  * @api public
@@ -147,6 +147,16 @@ export class EthiopianDate {
147
147
  const gc = toGC(ec);
148
148
  return new Date(gc[0], gc[1] - 1, gc[2]);
149
149
  }
150
+ /**
151
+ *
152
+ * @param val - A numeric year value if the second and third parameters are
153
+ * provided, it should be a date string if not
154
+ * @param month A zero-based numeric value for the month
155
+ * (0 for January, 11 for December)
156
+ * @param day A numeric value equal for the day of the month.
157
+ *
158
+ * @api public
159
+ */
150
160
  static gregorianToEthiopian(val, month, day) {
151
161
  let gc;
152
162
  if (val != null && month == null && day == null && typeof val !== 'number') {
@@ -191,4 +201,4 @@ export class EthiopianDate {
191
201
  throw new Error(`ParsingError: Can't parse ${dateString}`);
192
202
  }
193
203
  }
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2FsZW5kYXJzL2V0aGlvcGlhbi9ldGhpb3BpYW4tZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sYUFBYTtJQU14Qjs7Ozs7T0FLRztJQUNILFlBQVksR0FBNEIsRUFBRSxLQUFjLEVBQUUsR0FBWTtRQUNwRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQy9DLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BGO2FBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDakYsSUFBSSxPQUFPLEdB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QUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQWtCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN6QixPQUFPLElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pGO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgKEMpIEdudWNvb3Agc29jLiBjb29wLlxuICpcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXNcbiAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLFxuICogb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBBZmZlcm9cbiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqIElmIG5vdCwgc2VlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8uXG4gKlxuICovXG5cbmltcG9ydCB7dG9FQywgdG9HQ30gZnJvbSAnLi9jb252ZXJ0ZXInO1xuaW1wb3J0IHtNT05USFNfTkFNRVMsIFNIT1JUX01PTlRIU19OQU1FUywgV0VFS19OQU1FU30gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBFdGhpb3BpYW5EYXRlIHtcbiAgcHJpdmF0ZSBfeWVhcjogbnVtYmVyO1xuICBwcml2YXRlIF9tb250aDogbnVtYmVyO1xuICBwcml2YXRlIF9kYXRlOiBudW1iZXI7XG4gIHByaXZhdGUgX2djOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsIC0gQSBudW1lcmljIHllYXIgdmFsdWUgaWYgdGhlIHNlY29uZCBhbmQgdGhpcmQgcGFyYW1ldGVycyBhciBwcm92aWRlZCxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoICgwIGZvciDhiJjhiLXhiqjhiKjhiJ0sIDEyIGZvciDhjLPhjInhiJzhipUpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHZhbD86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsIG1vbnRoPzogbnVtYmVyLCBkYXk/OiBudW1iZXIpIHtcbiAgICBpZiAodmFsID09IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCkge1xuICAgICAgY29uc3QgYWh1biA9IEV0aGlvcGlhbkRhdGUuZ3JlZ29yaWFuVG9FdGhpb3BpYW4obmV3IERhdGUoKSk7XG4gICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW2FodW4uZ2V0RnVsbFllYXIoKSwgYWh1bi5nZXRNb250aCgpLCBhaHVuLmdldERhdGUoKV07XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IEV0aGlvcGlhbkRhdGUucGFyc2UodmFsKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgICB9XG4gICAgICAgIFt0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZV0gPSBbXG4gICAgICAgICAgcmVzdWx0LmdldEZ1bGxZZWFyKCksXG4gICAgICAgICAgcmVzdWx0LmdldE1vbnRoKCksXG4gICAgICAgICAgcmVzdWx0LmdldERhdGUoKSxcbiAgICAgICAgXTtcbiAgICAgICAgdGhpcy5fZ2MgPSBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKHRoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKFxuICAgICAgICAgIHZhbC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHZhbC5nZXRNb250aCgpICsgMSxcbiAgICAgICAgICB2YWwuZ2V0RGF0ZSgpLFxuICAgICAgICApO1xuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl95ZWFyID0gdmFsO1xuICAgICAgdGhpcy5fbW9udGggPSBtb250aDtcbiAgICAgIHRoaXMuX2RhdGUgPSBkYXk7XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIGdldERheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldERheU9mV2VlaygpIHtcbiAgICBjb25zdCB3ZWVrRGF5ID0gdGhpcy5nZXRHQ1dlZWtEYXkoKTtcbiAgICByZXR1cm4gV0VFS19OQU1FU1t3ZWVrRGF5XTtcbiAgfVxuXG4gIGdldEZ1bGxZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3llYXI7XG4gIH1cblxuICBnZXRHcmVnb3JpYW5EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9nYztcbiAgfVxuXG4gIGdldEdDV2Vla0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldE1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aCA+PSAwICYmIHRoaXMuX21vbnRoIDwgTU9OVEhTX05BTUVTLmxlbmd0aCA/IE1PTlRIU19OQU1FU1t0aGlzLl9tb250aF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0U2hvcnRNb250aE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoID49IDAgJiYgdGhpcy5fbW9udGggPCBTSE9SVF9NT05USFNfTkFNRVMubGVuZ3RoXG4gICAgICA/IFNIT1JUX01PTlRIU19OQU1FU1t0aGlzLl9tb250aF1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldEhvdXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaW51dGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3llYXJ9LSR7dGhpcy5fbW9udGggKyAxfS0ke3RoaXMuX2RhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEV0aGlvcGlhbiBkYXRlIHRvIEdyZWdvcmlhbiBhbmQgcmV0dXJucyBEYXRlIGluc3RhbmNlIHJlcHJlc2VudGluZyBHcmVnb3JpYW4gRGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICgwIGZvciBKYW51YXJ5LCAxMSBmb3IgRGVjZW1iZXIpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICpcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG4gIHN0YXRpYyBldGhpb3BpYW5Ub0dyZWdvcmlhbihcbiAgICB2YWw/OiBFdGhpb3BpYW5EYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vbnRoPzogbnVtYmVyLFxuICAgIGRheT86IG51bWJlcixcbiAgKTogRGF0ZSB7XG4gICAgbGV0IGVjOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBldERhdGUgPSBuZXcgRXRoaW9waWFuRGF0ZSh2YWwpO1xuICAgICAgICBlYyA9IFtldERhdGUuZ2V0RnVsbFllYXIoKSwgZXREYXRlLmdldE1vbnRoKCkgKyAxLCBldERhdGUuZ2V0RGF0ZSgpXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRXRoaW9waWFuRGF0ZSkge1xuICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSBbdmFsLmdldEZ1bGxZZWFyKCksIHZhbC5nZXRNb250aCgpICsgMSwgdmFsLmdldERhdGUoKV07XG4gICAgICAgIGVjID0gW3ksIG0sIGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggIT0gbnVsbCAmJiBkYXkgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgZWMgPSBbdmFsLCBtb250aCArIDEsIGRheV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZ2MgPSB0b0dDKGVjKTtcbiAgICByZXR1cm4gbmV3IERhdGUoZ2NbMF0sIGdjWzFdIC0gMSwgZ2NbMl0pO1xuICB9XG5cbiAgc3RhdGljIGdyZWdvcmlhblRvRXRoaW9waWFuKFxuICAgIHZhbD86IERhdGUgfCBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9udGg/OiBudW1iZXIsXG4gICAgZGF5PzogbnVtYmVyLFxuICApOiBFdGhpb3BpYW5EYXRlIHtcbiAgICBsZXQgZ2M6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyXTtcbiAgICBpZiAodmFsICE9IG51bGwgJiYgbW9udGggPT0gbnVsbCAmJiBkYXkgPT0gbnVsbCAmJiB0eXBlb2YgdmFsICE9PSAnbnVtYmVyJykge1xuICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNvbnN0IGdjRGF0ZSA9IG5ldyBEYXRlKHZhbCk7XG4gICAgICAgIGdjID0gW2djRGF0ZS5nZXRGdWxsWWVhcigpLCBnY0RhdGUuZ2V0TW9udGgoKSArIDEsIGdjRGF0ZS5nZXREYXRlKCldO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyAmJiB2YWwgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgIGNvbnN0IFt5LCBtLCBkXSA9IFt2YWwuZ2V0RnVsbFllYXIoKSwgdmFsLmdldE1vbnRoKCkgKyAxLCB2YWwuZ2V0RGF0ZSgpXTtcbiAgICAgICAgZ2MgPSBbeSwgbSwgZF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICBnYyA9IFt2YWwsIG1vbnRoICsgMSwgZGF5XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBlYyA9IHRvRUMoZ2MpO1xuICAgIHJldHVybiBuZXcgRXRoaW9waWFuRGF0ZShlY1swXSwgZWNbMV0gLSAxLCBlY1syXSk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgRXRoaW9waWFuIGRhdGUgZnJvbSBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIGRhdGVTdHJpbmcgYSBkYXRlIHN0cmluZyB0byBwYXJzZVxuICAgKiBAcGFyYW0gcGF0dGVybiBhIHBhcnNpbmcgcGF0dGVyblxuICAgKlxuICAgKiBAcmV0dXJucyBFdGhpb3BpYW5EYXRlXG4gICAqL1xuICBzdGF0aWMgcGFyc2UoZGF0ZVN0cmluZzogc3RyaW5nKTogRXRoaW9waWFuRGF0ZSB8IG51bGwge1xuICAgIGlmICghZGF0ZVN0cmluZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGRhdGVTdHJpbmcuc3BsaXQoJy0nKTtcbiAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PT0gMykge1xuICAgICAgY29uc3QgW3ksIG0sIGRdID0gcmVzdWx0O1xuICAgICAgcmV0dXJuIG5ldyBFdGhpb3BpYW5EYXRlKHBhcnNlSW50KHksIDEwKSwgcGFyc2VJbnQobSwgMTApIC0gMSwgcGFyc2VJbnQoZCwgMTApKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBQYXJzaW5nRXJyb3I6IENhbid0IHBhcnNlICR7ZGF0ZVN0cmluZ31gKTtcbiAgfVxufVxuIl19
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRoaW9waWFuLWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2FsZW5kYXJzL2V0aGlvcGlhbi9ldGhpb3BpYW4tZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUN2QyxPQUFPLEVBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUVyRSxNQUFNLE9BQU8sYUFBYTtJQU14Qjs7Ozs7T0FLRztJQUNILFlBQVksR0FBNEIsRUFBRSxLQUFjLEVBQUUsR0FBWTtRQUNwRSxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQy9DLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUQsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3BGO2FBQU0sSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUU7WUFDakYsSUFBSSxPQUFPLEdB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Q0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2QixNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDekIsT0FBTyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNqRjtRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IChDKSBHbnVjb29wIHNvYy4gY29vcC5cbiAqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKS5cbiAqXG4gKiBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzXG4gKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSxcbiAqIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKiBJZiBub3QsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvLlxuICpcbiAqL1xuXG5pbXBvcnQge3RvRUMsIHRvR0N9IGZyb20gJy4vY29udmVydGVyJztcbmltcG9ydCB7TU9OVEhTX05BTUVTLCBTSE9SVF9NT05USFNfTkFNRVMsIFdFRUtfTkFNRVN9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgRXRoaW9waWFuRGF0ZSB7XG4gIHByaXZhdGUgX3llYXI6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbW9udGg6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGF0ZTogbnVtYmVyO1xuICBwcml2YXRlIF9nYzogRGF0ZTtcblxuICAvKipcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXIgcHJvdmlkZWQsXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0IHNob3VsZCBiZSBhIGRhdGUgc3RyaW5nIGlmIG5vdFxuICAgKiBAcGFyYW0gbW9udGggQSB6ZXJvLWJhc2VkIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBtb250aCAoMCBmb3Ig4YiY4Yi14Yqo4Yio4YidLCAxMiBmb3Ig4Yyz4YyJ4Yic4YqVKVxuICAgKiBAcGFyYW0gZGF5IEEgbnVtZXJpYyB2YWx1ZSBlcXVhbCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGguXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih2YWw/OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyLCBtb250aD86IG51bWJlciwgZGF5PzogbnVtYmVyKSB7XG4gICAgaWYgKHZhbCA9PSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFodW4gPSBFdGhpb3BpYW5EYXRlLmdyZWdvcmlhblRvRXRoaW9waWFuKG5ldyBEYXRlKCkpO1xuICAgICAgW3RoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlXSA9IFthaHVuLmdldEZ1bGxZZWFyKCksIGFodW4uZ2V0TW9udGgoKSwgYWh1bi5nZXREYXRlKCldO1xuICAgICAgdGhpcy5fZ2MgPSBFdGhpb3BpYW5EYXRlLmV0aGlvcGlhblRvR3JlZ29yaWFuKHRoaXMuX3llYXIsIHRoaXMuX21vbnRoLCB0aGlzLl9kYXRlKTtcbiAgICB9IGVsc2UgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBFdGhpb3BpYW5EYXRlLnBhcnNlKHZhbCk7XG4gICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gRXRoaW9waWFuRGF0ZS5ncmVnb3JpYW5Ub0V0aGlvcGlhbih2YWwpO1xuICAgICAgICBbdGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGVdID0gW1xuICAgICAgICAgIHJlc3VsdC5nZXRGdWxsWWVhcigpLFxuICAgICAgICAgIHJlc3VsdC5nZXRNb250aCgpLFxuICAgICAgICAgIHJlc3VsdC5nZXREYXRlKCksXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuX2djID0gRXRoaW9waWFuRGF0ZS5ldGhpb3BpYW5Ub0dyZWdvcmlhbih0aGlzLl95ZWFyLCB0aGlzLl9tb250aCwgdGhpcy5fZGF0ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCAhPSBudWxsICYmIGRheSAhPSBudWxsICYmIHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl95ZWFyID0gdmFsO1xuICAgICAgdGhpcy5fbW9udGggPSBtb250aDtcbiAgICAgIHRoaXMuX2RhdGUgPSBkYXk7XG4gICAgICB0aGlzLl9nYyA9IEV0aGlvcGlhbkRhdGUuZXRoaW9waWFuVG9HcmVnb3JpYW4odGhpcy5feWVhciwgdGhpcy5fbW9udGgsIHRoaXMuX2RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdldERhdGUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZTtcbiAgfVxuXG4gIGdldERheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldERheU9mV2VlaygpIHtcbiAgICBjb25zdCB3ZWVrRGF5ID0gdGhpcy5nZXRHQ1dlZWtEYXkoKTtcbiAgICByZXR1cm4gV0VFS19OQU1FU1t3ZWVrRGF5XTtcbiAgfVxuXG4gIGdldEZ1bGxZZWFyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3llYXI7XG4gIH1cblxuICBnZXRHcmVnb3JpYW5EYXRlKCk6IERhdGUge1xuICAgIHJldHVybiB0aGlzLl9nYztcbiAgfVxuXG4gIGdldEdDV2Vla0RheSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9nYy5nZXREYXkoKTtcbiAgfVxuXG4gIGdldE1vbnRoKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoO1xuICB9XG5cbiAgZ2V0TW9udGhOYW1lKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9tb250aCA+PSAwICYmIHRoaXMuX21vbnRoIDwgTU9OVEhTX05BTUVTLmxlbmd0aCA/IE1PTlRIU19OQU1FU1t0aGlzLl9tb250aF0gOiBudWxsO1xuICB9XG5cbiAgZ2V0U2hvcnRNb250aE5hbWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX21vbnRoID49IDAgJiYgdGhpcy5fbW9udGggPCBTSE9SVF9NT05USFNfTkFNRVMubGVuZ3RoXG4gICAgICA/IFNIT1JUX01PTlRIU19OQU1FU1t0aGlzLl9tb250aF1cbiAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGdldEhvdXJzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaW51dGVzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRTZWNvbmRzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICBnZXRNaWxsaXNlY29uZHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuX3llYXJ9LSR7dGhpcy5fbW9udGggKyAxfS0ke3RoaXMuX2RhdGV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhIEV0aGlvcGlhbiBkYXRlIHRvIEdyZWdvcmlhbiBhbmQgcmV0dXJucyBEYXRlIGluc3RhbmNlIHJlcHJlc2VudGluZyBHcmVnb3JpYW4gRGF0ZS5cbiAgICpcbiAgICogQHBhcmFtIHZhbCAtIEEgbnVtZXJpYyB5ZWFyIHZhbHVlIGlmIHRoZSBzZWNvbmQgYW5kIHRoaXJkIHBhcmFtZXRlcnMgYXJlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlZCwgaXQgc2hvdWxkIGJlIGEgZGF0ZSBzdHJpbmcgaWYgbm90XG4gICAqIEBwYXJhbSBtb250aCBBIHplcm8tYmFzZWQgbnVtZXJpYyB2YWx1ZSBmb3IgdGhlIG1vbnRoXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICgwIGZvciDhiJjhiLXhiqjhiKjhiJ0sIDEyIGZvciDhjLPhjInhiJzhipUpXG4gICAqIEBwYXJhbSBkYXkgQSBudW1lcmljIHZhbHVlIGVxdWFsIGZvciB0aGUgZGF5IG9mIHRoZSBtb250aC5cbiAgICpcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG4gIHN0YXRpYyBldGhpb3BpYW5Ub0dyZWdvcmlhbihcbiAgICB2YWw/OiBFdGhpb3BpYW5EYXRlIHwgc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vbnRoPzogbnVtYmVyLFxuICAgIGRheT86IG51bWJlcixcbiAgKTogRGF0ZSB7XG4gICAgbGV0IGVjOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG4gICAgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoID09IG51bGwgJiYgZGF5ID09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicpIHtcbiAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgICAgICBjb25zdCBldERhdGUgPSBuZXcgRXRoaW9waWFuRGF0ZSh2YWwpO1xuICAgICAgICBlYyA9IFtldERhdGUuZ2V0RnVsbFllYXIoKSwgZXREYXRlLmdldE1vbnRoKCkgKyAxLCBldERhdGUuZ2V0RGF0ZSgpXTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgJiYgdmFsIGluc3RhbmNlb2YgRXRoaW9waWFuRGF0ZSkge1xuICAgICAgICBjb25zdCBbeSwgbSwgZF0gPSBbdmFsLmdldEZ1bGxZZWFyKCksIHZhbC5nZXRNb250aCgpICsgMSwgdmFsLmdldERhdGUoKV07XG4gICAgICAgIGVjID0gW3ksIG0sIGRdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIEFyZ3VtZW50IEV4Y2VwdGlvbicpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodmFsICE9IG51bGwgJiYgbW9udGggIT0gbnVsbCAmJiBkYXkgIT0gbnVsbCAmJiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgZWMgPSBbdmFsLCBtb250aCArIDEsIGRheV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICB9XG4gICAgY29uc3QgZ2MgPSB0b0dDKGVjKTtcbiAgICByZXR1cm4gbmV3IERhdGUoZ2NbMF0sIGdjWzFdIC0gMSwgZ2NbMl0pO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB2YWwgLSBBIG51bWVyaWMgeWVhciB2YWx1ZSBpZiB0aGUgc2Vjb25kIGFuZCB0aGlyZCBwYXJhbWV0ZXJzIGFyZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQsIGl0IHNob3VsZCBiZSBhIGRhdGUgc3RyaW5nIGlmIG5vdFxuICAgKiBAcGFyYW0gbW9udGggQSB6ZXJvLWJhc2VkIG51bWVyaWMgdmFsdWUgZm9yIHRoZSBtb250aFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAoMCBmb3IgSmFudWFyeSwgMTEgZm9yIERlY2VtYmVyKVxuICAgKiBAcGFyYW0gZGF5IEEgbnVtZXJpYyB2YWx1ZSBlcXVhbCBmb3IgdGhlIGRheSBvZiB0aGUgbW9udGguXG4gICAqXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuICBzdGF0aWMgZ3JlZ29yaWFuVG9FdGhpb3BpYW4oXG4gICAgdmFsPzogRGF0ZSB8IHN0cmluZyB8IG51bWJlcixcbiAgICBtb250aD86IG51bWJlcixcbiAgICBkYXk/OiBudW1iZXIsXG4gICk6IEV0aGlvcGlhbkRhdGUge1xuICAgIGxldCBnYzogW251bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuICAgIGlmICh2YWwgIT0gbnVsbCAmJiBtb250aCA9PSBudWxsICYmIGRheSA9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInKSB7XG4gICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY29uc3QgZ2NEYXRlID0gbmV3IERhdGUodmFsKTtcbiAgICAgICAgZ2MgPSBbZ2NEYXRlLmdldEZ1bGxZZWFyKCksIGdjRGF0ZS5nZXRNb250aCgpICsgMSwgZ2NEYXRlLmdldERhdGUoKV07XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnICYmIHZhbCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgY29uc3QgW3ksIG0sIGRdID0gW3ZhbC5nZXRGdWxsWWVhcigpLCB2YWwuZ2V0TW9udGgoKSArIDEsIHZhbC5nZXREYXRlKCldO1xuICAgICAgICBnYyA9IFt5LCBtLCBkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBBcmd1bWVudCBFeGNlcHRpb24nKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHZhbCAhPSBudWxsICYmIG1vbnRoICE9IG51bGwgJiYgZGF5ICE9IG51bGwgJiYgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGdjID0gW3ZhbCwgbW9udGggKyAxLCBkYXldO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgQXJndW1lbnQgRXhjZXB0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGVjID0gdG9FQyhnYyk7XG4gICAgcmV0dXJuIG5ldyBFdGhpb3BpYW5EYXRlKGVjWzBdLCBlY1sxXSAtIDEsIGVjWzJdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBFdGhpb3BpYW4gZGF0ZSBmcm9tIHN0cmluZ1xuICAgKlxuICAgKiBAcGFyYW0gZGF0ZVN0cmluZyBhIGRhdGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSBwYXR0ZXJuIGEgcGFyc2luZyBwYXR0ZXJuXG4gICAqXG4gICAqIEByZXR1cm5zIEV0aGlvcGlhbkRhdGVcbiAgICovXG4gIHN0YXRpYyBwYXJzZShkYXRlU3RyaW5nOiBzdHJpbmcpOiBFdGhpb3BpYW5EYXRlIHwgbnVsbCB7XG4gICAgaWYgKCFkYXRlU3RyaW5nKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gZGF0ZVN0cmluZy5zcGxpdCgnLScpO1xuICAgIGlmIChyZXN1bHQubGVuZ3RoID09PSAzKSB7XG4gICAgICBjb25zdCBbeSwgbSwgZF0gPSByZXN1bHQ7XG4gICAgICByZXR1cm4gbmV3IEV0aGlvcGlhbkRhdGUocGFyc2VJbnQoeSwgMTApLCBwYXJzZUludChtLCAxMCkgLSAxLCBwYXJzZUludChkLCAxMCkpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFBhcnNpbmdFcnJvcjogQ2FuJ3QgcGFyc2UgJHtkYXRlU3RyaW5nfWApO1xuICB9XG59XG4iXX0=
@@ -21,5 +21,5 @@
21
21
  */
22
22
  import { Version } from '@angular/core';
23
23
  /** Current version of Ajf. */
24
- export const VERSION = new Version('12.1.6');
24
+ export const VERSION = new Version('12.1.7');
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jYWxlbmRhcnMvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFFSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRDLDhCQUE4QjtBQUM5QixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCAoQykgR251Y29vcCBzb2MuIGNvb3AuXG4gKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikuXG4gKlxuICogQWR2YW5jZWQgSlNPTiBmb3JtcyAoYWpmKSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhc1xuICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsXG4gKiBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIEFkdmFuY2VkIEpTT04gZm9ybXMgKGFqZikgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEFmZmVyb1xuICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCBBZHZhbmNlZCBKU09OIGZvcm1zIChhamYpLlxuICogSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuaW1wb3J0IHtWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEN1cnJlbnQgdmVyc2lvbiBvZiBBamYuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcwLjAuMC1QTEFDRUhPTERFUicpO1xuIl19
@@ -51,12 +51,22 @@ export declare class EthiopianDate {
51
51
  * @param val - A numeric year value if the second and third parameters are
52
52
  * provided, it should be a date string if not
53
53
  * @param month A zero-based numeric value for the month
54
- * (0 for January, 11 for December)
54
+ * (0 for መስከረም, 12 for ጳጉሜን)
55
55
  * @param day A numeric value equal for the day of the month.
56
56
  *
57
57
  * @api public
58
58
  */
59
59
  static ethiopianToGregorian(val?: EthiopianDate | string | number, month?: number, day?: number): Date;
60
+ /**
61
+ *
62
+ * @param val - A numeric year value if the second and third parameters are
63
+ * provided, it should be a date string if not
64
+ * @param month A zero-based numeric value for the month
65
+ * (0 for January, 11 for December)
66
+ * @param day A numeric value equal for the day of the month.
67
+ *
68
+ * @api public
69
+ */
60
70
  static gregorianToEthiopian(val?: Date | string | number, month?: number, day?: number): EthiopianDate;
61
71
  /**
62
72
  * Parse Ethiopian date from string
@@ -22,7 +22,7 @@ import { Version } from '@angular/core';
22
22
  *
23
23
  */
24
24
  /** Current version of Ajf. */
25
- const VERSION = new Version('12.1.6');
25
+ const VERSION = new Version('12.1.7');
26
26
 
27
27
  /**
28
28
  * @license
@@ -1 +1 @@
1
- {"version":3,"file":"calendars.js","sources":["../../../../../../src/calendars/version.ts","../../../../../../src/calendars/public-api.ts","../../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.6');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;AAwBA;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACzBtD;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"calendars.js","sources":["../../../../../../src/calendars/version.ts","../../../../../../src/calendars/public-api.ts","../../../../../../src/calendars/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Version} from '@angular/core';\n\n/** Current version of Ajf. */\nexport const VERSION = new Version('12.1.7');\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './version';\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAAA;;;;;;;;;;;;;;;;;;;;;AAwBA;MACa,OAAO,GAAG,IAAI,OAAO,CAAC,mBAAmB;;ACzBtD;;;;;;;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -258,7 +258,7 @@ class EthiopianDate {
258
258
  this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);
259
259
  }
260
260
  else if (typeof val === 'object' && val instanceof Date) {
261
- const result = EthiopianDate.gregorianToEthiopian(val.getFullYear(), val.getMonth() + 1, val.getDate());
261
+ const result = EthiopianDate.gregorianToEthiopian(val);
262
262
  [this._year, this._month, this._date] = [
263
263
  result.getFullYear(),
264
264
  result.getMonth(),
@@ -328,7 +328,7 @@ class EthiopianDate {
328
328
  * @param val - A numeric year value if the second and third parameters are
329
329
  * provided, it should be a date string if not
330
330
  * @param month A zero-based numeric value for the month
331
- * (0 for January, 11 for December)
331
+ * (0 for መስከረም, 12 for ጳጉሜን)
332
332
  * @param day A numeric value equal for the day of the month.
333
333
  *
334
334
  * @api public
@@ -357,6 +357,16 @@ class EthiopianDate {
357
357
  const gc = toGC(ec);
358
358
  return new Date(gc[0], gc[1] - 1, gc[2]);
359
359
  }
360
+ /**
361
+ *
362
+ * @param val - A numeric year value if the second and third parameters are
363
+ * provided, it should be a date string if not
364
+ * @param month A zero-based numeric value for the month
365
+ * (0 for January, 11 for December)
366
+ * @param day A numeric value equal for the day of the month.
367
+ *
368
+ * @api public
369
+ */
360
370
  static gregorianToEthiopian(val, month, day) {
361
371
  let gc;
362
372
  if (val != null && month == null && day == null && typeof val !== 'number') {
@@ -586,7 +596,7 @@ class AjfEthiopianCalendarService extends AjfCalendarService {
586
596
  const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);
587
597
  let curYear = ecDate.getFullYear();
588
598
  let firstYear = curYear - (curYear % 10) + 1;
589
- let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);
599
+ let curDate = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);
590
600
  let rows = [];
591
601
  for (let i = 0; i < 4; i++) {
592
602
  let row = [];
@@ -633,7 +643,7 @@ class AjfEthiopianDatePipe {
633
643
  try {
634
644
  const ed = EthiopianDate.gregorianToEthiopian(value);
635
645
  const date = `0${ed.getDate()}`.slice(-2);
636
- const month = `0${ed.getMonth()}`.slice(-2);
646
+ const month = `0${ed.getMonth() + 1}`.slice(-2);
637
647
  return `${date}/${month}/${ed.getFullYear()}`;
638
648
  }
639
649
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"ethiopian.js","sources":["../../../../../../src/calendars/ethiopian/converter.ts","../../../../../../src/calendars/ethiopian/utils.ts","../../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../../src/calendars/ethiopian/public-api.ts","../../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(\n val.getFullYear(),\n val.getMonth() + 1,\n val.getDate(),\n );\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 1, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth()}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ethiopian.js","sources":["../../../../../../src/calendars/ethiopian/converter.ts","../../../../../../src/calendars/ethiopian/utils.ts","../../../../../../src/calendars/ethiopian/ethiopian-date.ts","../../../../../../src/calendars/ethiopian/calendar-service.ts","../../../../../../src/calendars/ethiopian/ethiopian-date-pipe.ts","../../../../../../src/calendars/ethiopian/calendar-module.ts","../../../../../../src/calendars/ethiopian/public-api.ts","../../../../../../src/calendars/ethiopian/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nconst JD_EPOCH_OFFSET_AMETE_ALEM = -285019; // ዓ/ዓ\nconst JD_EPOCH_OFFSET_AMETE_MIHRET = 1723856; // ዓ/ም\nconst JD_EPOCH_OFFSET_GREGORIAN = 1721426;\nconst JD_EPOCH_OFFSET_UNSET = -1;\n\nlet JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n\nconst GREGORIAN_NUMBER_OF_MONTHS = 12;\nconst monthDays = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction quotient(i: number, j: number): number {\n return Math.floor(i / j);\n}\n\nfunction isGregorianLeap(year: number): boolean {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nfunction setEra(era: number): void {\n if (era === JD_EPOCH_OFFSET_AMETE_ALEM || era === JD_EPOCH_OFFSET_AMETE_MIHRET) {\n JDN_OFFSET = era;\n } else {\n throw new Error(`Unknown Era: ${era}`);\n }\n}\n\nfunction isEraSet(): boolean {\n return JD_EPOCH_OFFSET_UNSET !== JDN_OFFSET;\n}\n\nfunction unsetEra(): void {\n JDN_OFFSET = JD_EPOCH_OFFSET_UNSET;\n}\n\nfunction guessEraFromJDN(jdn: number) {\n return jdn >= JD_EPOCH_OFFSET_AMETE_MIHRET + 365\n ? JD_EPOCH_OFFSET_AMETE_MIHRET\n : JD_EPOCH_OFFSET_AMETE_ALEM;\n}\n\nfunction ethiopicToJDN(day: number, month: number, year: number) {\n const ERA = isEraSet() ? JDN_OFFSET : JD_EPOCH_OFFSET_AMETE_MIHRET;\n const jdn = ERA + 365 + 365 * (year - 1) + quotient(year, 4) + 30 * month + day - 31;\n\n return jdn;\n}\n\nfunction jdnToEthiopic(jdn: number): [number, number, number] {\n const ERA = isEraSet() ? JDN_OFFSET : guessEraFromJDN(jdn);\n const r = (jdn - ERA) % 1461;\n const n = (r % 365) + 365 * quotient(r, 1460);\n const year = 4 * quotient(jdn - ERA, 1461) + quotient(r, 365) - quotient(r, 1460);\n const month = quotient(n, 30) + 1;\n const day = (n % 30) + 1;\n\n return [year, month, day];\n}\n\nfunction gregorianToJDN(day: number, month: number, year: number): number {\n const s =\n quotient(year, 4) -\n quotient(year - 1, 4) -\n quotient(year, 100) +\n quotient(year - 1, 100) +\n quotient(year, 400) -\n quotient(year - 1, 400);\n\n const t = quotient(14 - month, 12);\n\n const n =\n 31 * t * (month - 1) +\n (1 - t) * (59 + s + 30 * (month - 3) + quotient(3 * month - 7, 5)) +\n day -\n 1;\n\n const j =\n JD_EPOCH_OFFSET_GREGORIAN +\n 365 * (year - 1) +\n quotient(year - 1, 4) -\n quotient(year - 1, 100) +\n quotient(year - 1, 400) +\n n;\n\n return j;\n}\n\nfunction jdnToGregorian(jdn: number): [number, number, number] {\n const r2000 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 730485;\n const r400 = (jdn - JD_EPOCH_OFFSET_GREGORIAN) % 146097;\n const r100 = r400 % 36524;\n const r4 = r100 % 1461;\n let n = (r4 % 365) + 365 * quotient(r4, 1460);\n const s = quotient(r4, 1095);\n const aprime =\n 400 * quotient(jdn - JD_EPOCH_OFFSET_GREGORIAN, 146097) +\n 100 * quotient(r400, 36524) +\n 4 * quotient(r100, 1461) +\n quotient(r4, 365) -\n quotient(r4, 1460) -\n quotient(r2000, 730484);\n const year = aprime + 1;\n const t = quotient(364 + s - n, 306);\n let month = t * (quotient(n, 31) + 1) + (1 - t) * (quotient(5 * (n - s) + 13, 153) + 1);\n n += 1 - quotient(r2000, 730484);\n let day = n;\n\n if (r100 === 0 && n === 0 && r400 !== 0) {\n month = 12;\n day = 31;\n } else {\n monthDays[2] = isGregorianLeap(year) ? 29 : 28;\n for (let i = 1; i <= GREGORIAN_NUMBER_OF_MONTHS; i += 1) {\n if (n <= monthDays[i]) {\n day = n;\n break;\n }\n n -= monthDays[i];\n }\n }\n return [year, month, day];\n}\n\nfunction gregorianToEthiopic(day: number, month: number, year: number): [number, number, number] {\n const jdn = gregorianToJDN(day, month, year);\n return jdnToEthiopic(jdn);\n}\n\nfunction ethioipicToGreg(day: number, month: number, year: number): [number, number, number] {\n const jdn = ethiopicToJDN(day, month, year);\n return jdnToGregorian(jdn);\n}\n\nfunction ethioipicToGregorian(\n day: number,\n month: number,\n year: number,\n era: number,\n): [number, number, number] {\n setEra(era);\n const result = ethioipicToGreg(day, month, year);\n unsetEra();\n return result;\n}\n\n/** API * */\n\n/** ethiopian to gregorian */\nexport function toGC(\n dateArray: [number, number, number] | [number, number, number, number],\n): [number, number, number] {\n const [y, m, d] = dateArray;\n let era = dateArray.length === 4 ? dateArray[3] : JD_EPOCH_OFFSET_AMETE_MIHRET;\n if (d < 0 || d > 30 || m < 0 || m > 13) {\n throw new Error('Invalid Ethiopian Date');\n }\n return ethioipicToGregorian(d, m, y, era);\n}\n\n/** gregorian to ethiopian */\nexport function toEC(dateArray: [number, number, number]): [number, number, number] {\n const [y, m, d] = dateArray;\n if (d < 0 || d > 31 || m < 0 || m > 12) {\n throw new Error('Invalid Gregorian Date');\n }\n return gregorianToEthiopic(d, m, y);\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport const WEEK_NAMES = ['እሑድ', 'ሰኞ', 'ማክሰኞ', 'ረቡዕ', 'ሓሙስ', 'ዓርብ', 'ቅዳሜ'];\n\nexport const MONTHS_NAMES = [\n 'መስከረም',\n 'ጥቅምት',\n 'ኅዳር',\n 'ታኅሣሥ',\n 'ጥር',\n 'የካቲት',\n 'መጋቢት',\n 'ሚያዝያ',\n 'ግንቦት',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜን',\n];\n\nexport const SHORT_MONTHS_NAMES = [\n 'መስከ',\n 'ጥቅም',\n 'ኅዳር',\n 'ታኅሣ',\n 'ጥር',\n 'የካቲ',\n 'መጋቢ',\n 'ሚያዝ',\n 'ግንቦ',\n 'ሰኔ',\n 'ሐምሌ',\n 'ነሐሴ',\n 'ጳጉሜ',\n];\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {toEC, toGC} from './converter';\nimport {MONTHS_NAMES, SHORT_MONTHS_NAMES, WEEK_NAMES} from './utils';\n\nexport class EthiopianDate {\n private _year: number;\n private _month: number;\n private _date: number;\n private _gc: Date;\n\n /**\n * @param val - A numeric year value if the second and third parameters ar provided,\n * It should be a date string if not\n * @param month A zero-based numeric value for the month (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n */\n constructor(val?: Date | string | number, month?: number, day?: number) {\n if (val == null && month == null && day == null) {\n const ahun = EthiopianDate.gregorianToEthiopian(new Date());\n [this._year, this._month, this._date] = [ahun.getFullYear(), ahun.getMonth(), ahun.getDate()];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const result = EthiopianDate.parse(val);\n if (result == null) {\n throw new Error('Invalid Argument Exception');\n }\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else if (typeof val === 'object' && val instanceof Date) {\n const result = EthiopianDate.gregorianToEthiopian(val);\n [this._year, this._month, this._date] = [\n result.getFullYear(),\n result.getMonth(),\n result.getDate(),\n ];\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n this._year = val;\n this._month = month;\n this._date = day;\n this._gc = EthiopianDate.ethiopianToGregorian(this._year, this._month, this._date);\n }\n }\n\n getDate(): number {\n return this._date;\n }\n\n getDay(): number {\n return this._gc.getDay();\n }\n\n getDayOfWeek() {\n const weekDay = this.getGCWeekDay();\n return WEEK_NAMES[weekDay];\n }\n\n getFullYear(): number {\n return this._year;\n }\n\n getGregorianDate(): Date {\n return this._gc;\n }\n\n getGCWeekDay(): number {\n return this._gc.getDay();\n }\n\n getMonth(): number {\n return this._month;\n }\n\n getMonthName(): string | null {\n return this._month >= 0 && this._month < MONTHS_NAMES.length ? MONTHS_NAMES[this._month] : null;\n }\n\n getShortMonthName(): string | null {\n return this._month >= 0 && this._month < SHORT_MONTHS_NAMES.length\n ? SHORT_MONTHS_NAMES[this._month]\n : null;\n }\n\n getHours(): number {\n return 0;\n }\n\n getMinutes(): number {\n return 0;\n }\n\n getSeconds(): number {\n return 0;\n }\n\n getMilliseconds(): number {\n return 0;\n }\n\n toString(): string {\n return `${this._year}-${this._month + 1}-${this._date}`;\n }\n\n /**\n * Converts a Ethiopian date to Gregorian and returns Date instance representing Gregorian Date.\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for መስከረም, 12 for ጳጉሜን)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static ethiopianToGregorian(\n val?: EthiopianDate | string | number,\n month?: number,\n day?: number,\n ): Date {\n let ec: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const etDate = new EthiopianDate(val);\n ec = [etDate.getFullYear(), etDate.getMonth() + 1, etDate.getDate()];\n } else if (typeof val === 'object' && val instanceof EthiopianDate) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n ec = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n ec = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const gc = toGC(ec);\n return new Date(gc[0], gc[1] - 1, gc[2]);\n }\n\n /**\n *\n * @param val - A numeric year value if the second and third parameters are\n * provided, it should be a date string if not\n * @param month A zero-based numeric value for the month\n * (0 for January, 11 for December)\n * @param day A numeric value equal for the day of the month.\n *\n * @api public\n */\n static gregorianToEthiopian(\n val?: Date | string | number,\n month?: number,\n day?: number,\n ): EthiopianDate {\n let gc: [number, number, number];\n if (val != null && month == null && day == null && typeof val !== 'number') {\n if (typeof val === 'string') {\n const gcDate = new Date(val);\n gc = [gcDate.getFullYear(), gcDate.getMonth() + 1, gcDate.getDate()];\n } else if (typeof val === 'object' && val instanceof Date) {\n const [y, m, d] = [val.getFullYear(), val.getMonth() + 1, val.getDate()];\n gc = [y, m, d];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n } else if (val != null && month != null && day != null && typeof val === 'number') {\n gc = [val, month + 1, day];\n } else {\n throw new Error('Invalid Argument Exception');\n }\n const ec = toEC(gc);\n return new EthiopianDate(ec[0], ec[1] - 1, ec[2]);\n }\n\n /**\n * Parse Ethiopian date from string\n *\n * @param dateString a date string to parse\n * @param pattern a parsing pattern\n *\n * @returns EthiopianDate\n */\n static parse(dateString: string): EthiopianDate | null {\n if (!dateString) {\n return null;\n }\n const result = dateString.split('-');\n if (result.length === 3) {\n const [y, m, d] = result;\n return new EthiopianDate(parseInt(y, 10), parseInt(m, 10) - 1, parseInt(d, 10));\n }\n throw new Error(`ParsingError: Can't parse ${dateString}`);\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {\n AjfCalendarEntry,\n AjfCalendarParams,\n AjfCalendarService,\n AjfCalendarView,\n AjfCalendarViewMode,\n} from '@ajf/core/calendar';\nimport {Injectable} from '@angular/core';\nimport {\n addDays,\n addWeeks,\n addYears,\n endOfISOWeek,\n getISODay,\n setISODay,\n startOfISOWeek,\n startOfWeek,\n subWeeks,\n} from 'date-fns';\n\nimport {EthiopianDate} from './ethiopian-date';\n\nfunction getMonthDays(month: number, year: number): number {\n if (month < 12) {\n return 30;\n }\n return year % 4 === 3 ? 6 : 5;\n}\n\nfunction getMonthBounds(date: EthiopianDate): {start: EthiopianDate; end: EthiopianDate} {\n const year = date.getFullYear();\n const month = date.getMonth();\n const start = new EthiopianDate(year, month, 1);\n const endDay = getMonthDays(month, year);\n const end = new EthiopianDate(year, month, endDay);\n return {start, end};\n}\n\n@Injectable({providedIn: 'root'})\nexport class AjfEthiopianCalendarService extends AjfCalendarService {\n override buildView(params: AjfCalendarParams): AjfCalendarView {\n const {viewMode} = params;\n const viewDate = EthiopianDate.gregorianToEthiopian(params.viewDate);\n switch (viewMode) {\n case 'decade':\n let curYear: number = viewDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let lastYear = firstYear + 11;\n return {\n header: `${firstYear} - ${lastYear}`,\n headerRow: [],\n rows: this._ecDecadeCalendarRows(params),\n };\n case 'year':\n return {\n header: `${viewDate.getFullYear()}`,\n headerRow: [],\n rows: this._ecYearCalendarRows(params),\n };\n case 'month':\n const view = super.buildView(params);\n return {\n header: `${viewDate.getShortMonthName()} ${viewDate.getFullYear()}`,\n headerRow: this._ecMonthHeaderRow(params),\n rows: view.rows,\n };\n }\n return super.buildView(params);\n }\n\n override entryLabel(entry: AjfCalendarEntry): string {\n const ecDate = EthiopianDate.gregorianToEthiopian(entry.date);\n if (entry.type === 'day') {\n return `${ecDate.getDate()}`;\n }\n if (entry.type === 'month') {\n return `${ecDate.getMonthName()}`;\n }\n return `${ecDate.getFullYear()}`;\n }\n\n override monthBounds(date: Date, isoMode: boolean): {start: Date; end: Date} {\n if (!isoMode) {\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n const {start, end} = getMonthBounds(ecDate);\n return {\n start: EthiopianDate.ethiopianToGregorian(start),\n end: EthiopianDate.ethiopianToGregorian(end),\n };\n } else {\n let isoDay = getISODay(date);\n const ecDate = EthiopianDate.gregorianToEthiopian(date);\n let {start, end} = getMonthBounds(ecDate);\n if (ecDate.getMonth() === 12) {\n start = EthiopianDate.gregorianToEthiopian(startOfISOWeek(start.getGregorianDate()));\n end = EthiopianDate.gregorianToEthiopian(endOfISOWeek(end.getGregorianDate()));\n } else {\n date = isoDay < 4 ? endOfISOWeek(date) : startOfISOWeek(date);\n const startWeekDay = start.getDay();\n const endWeekDay = end.getDay();\n if (startWeekDay == 0 || startWeekDay > 4) {\n start = EthiopianDate.gregorianToEthiopian(addWeeks(start.getGregorianDate(), 1));\n }\n if (endWeekDay > 0 && endWeekDay < 4) {\n end = EthiopianDate.gregorianToEthiopian(subWeeks(end.getGregorianDate(), 1));\n }\n }\n return {\n start: startOfISOWeek(start.getGregorianDate()),\n end: endOfISOWeek(end.getGregorianDate()),\n };\n }\n }\n\n override nextView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 12) {\n month = 0;\n year += 1;\n } else {\n month += 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.nextView(viewDate, viewMode);\n }\n\n override previousView(viewDate: Date, viewMode: AjfCalendarViewMode): Date {\n if (viewMode === 'month') {\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let year = ecDate.getFullYear();\n let month = ecDate.getMonth();\n if (month === 0) {\n month = 12;\n year -= 1;\n } else {\n month -= 1;\n }\n return EthiopianDate.ethiopianToGregorian(new EthiopianDate(year, month, 1));\n }\n return super.previousView(viewDate, viewMode);\n }\n\n private _ecMonthHeaderRow(params: AjfCalendarParams): string[] {\n const {isoMode, viewDate} = params;\n let curDate: Date;\n if (isoMode) {\n curDate = setISODay(startOfWeek(viewDate), 1);\n } else {\n curDate = startOfWeek(viewDate);\n }\n let weekDayNames: string[] = [];\n for (let i = 0; i < 7; i++) {\n const ecDate = EthiopianDate.gregorianToEthiopian(curDate);\n weekDayNames.push(ecDate.getDayOfWeek());\n curDate = addDays(curDate, 1);\n }\n return weekDayNames;\n }\n\n private _ecYearCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const year = EthiopianDate.gregorianToEthiopian(viewDate).getFullYear();\n let curDate: EthiopianDate;\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i <= 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n const curMonth = i * 3 + j;\n if (curMonth < 13) {\n curDate = new EthiopianDate(year, curMonth, 1);\n let date = EthiopianDate.ethiopianToGregorian(curDate);\n let newEntry: AjfCalendarEntry = {type: 'month', date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n }\n }\n rows.push(row);\n }\n\n return rows;\n }\n\n private _ecDecadeCalendarRows(params: AjfCalendarParams): AjfCalendarEntry[][] {\n const {viewDate, selection} = params;\n const ecDate = EthiopianDate.gregorianToEthiopian(viewDate);\n let curYear: number = ecDate.getFullYear();\n let firstYear = curYear - (curYear % 10) + 1;\n let curDate: Date = EthiopianDate.ethiopianToGregorian(firstYear, 0, 1);\n\n let rows: AjfCalendarEntry[][] = [];\n for (let i = 0; i < 4; i++) {\n let row: AjfCalendarEntry[] = [];\n for (let j = 0; j < 3; j++) {\n let date = new Date(curDate);\n let newEntry: AjfCalendarEntry = {type: 'year', date: date, selected: 'none'};\n newEntry.selected = this.isEntrySelected(newEntry, selection);\n row.push(newEntry);\n curDate = addYears(curDate, 1);\n }\n rows.push(row);\n }\n\n return rows;\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {EthiopianDate} from './ethiopian-date';\n\n@Injectable()\n@Pipe({name: 'ajfEthiopianDate'})\nexport class AjfEthiopianDatePipe implements PipeTransform {\n transform(value: any): string | null {\n try {\n const ed = EthiopianDate.gregorianToEthiopian(value);\n const date = `0${ed.getDate()}`.slice(-2);\n const month = `0${ed.getMonth() + 1}`.slice(-2);\n return `${date}/${month}/${ed.getFullYear()}`;\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nimport {AjfCalendarService} from '@ajf/core/calendar';\nimport {NgModule} from '@angular/core';\n\nimport {AjfEthiopianCalendarService} from './calendar-service';\nimport {AjfEthiopianDatePipe} from './ethiopian-date-pipe';\n\n@NgModule({\n declarations: [AjfEthiopianDatePipe],\n exports: [AjfEthiopianDatePipe],\n providers: [{provide: AjfCalendarService, useClass: AjfEthiopianCalendarService}],\n})\nexport class AjfEthiopianCalendarModule {}\n","/**\n * @license\n * Copyright (C) Gnucoop soc. coop.\n *\n * This file is part of the Advanced JSON forms (ajf).\n *\n * Advanced JSON forms (ajf) is free software: you can redistribute it and/or\n * modify it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the License,\n * or (at your option) any later version.\n *\n * Advanced JSON forms (ajf) is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero\n * General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with Advanced JSON forms (ajf).\n * If not, see http://www.gnu.org/licenses/.\n *\n */\n\nexport * from './calendar-module';\nexport * from './calendar-service';\nexport * from './ethiopian-date';\nexport * from './ethiopian-date-pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ajf/calendars",
3
- "version": "12.1.6",
3
+ "version": "12.1.7",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "homepage": "https://github.com/gnucoop/ajf#readme",
15
15
  "peerDependencies": {
16
- "@ajf/core": "12.1.6",
16
+ "@ajf/core": "12.1.7",
17
17
  "rxjs": "^6.5.3"
18
18
  },
19
19
  "sideEffects": false,